← All tasks

ccx-migration-289

Sonnet + Sourcegraph MCP vs Fable baseline. Each column is that arm's median-reward trial.

Sonnet 4.6 + MCP
0.681
mean reward, n=3
Fable 5
0.574
mean reward, n=3
Sonnet 4.6 + MCP
Sourcegraph, no local source
0.661 rewardmean 0.681 (n=3)34 turns34 tools$0.74
Instruction sent
# IMPORTANT: Source Code Access

**Local source files are not present.** Your workspace does not contain source code. You **MUST** use Sourcegraph MCP tools to discover, read, and understand code before making any changes.

**Target Repositories (version-pinned mirrors):**

- `github.com/sg-evals/bazel--8.0.0` — use `repo:^github.com/sg-evals/bazel--8.0.0$` filter

Scope ALL keyword_search/nls_search queries to these repos.
Use the repo name as the `repo` parameter for read_file/go_to_definition/find_references.


## Required Workflow

1. **Search first** — Use MCP tools to find relevant files and understand existing patterns
2. **Read remotely** — Use `sg_read_file` to read full file contents from Sourcegraph
3. **Edit locally** — Use Edit, Write, and Bash to create or modify files in your working directory
4. **Verify locally** — Run tests with Bash to check your changes
5. **Produce answer.json** — After completing your edits, also write `/workspace/answer.json` summarizing your work:
   ```json
   {
     "analysis": {
       "summary": "Brief description of your approach",
       "files_examined": [{"path": "file.ext", "description": "..."}],
       "reasoning": "Detailed explanation or analysis"
     },
     "changes": [
       {"file": "path.ext", "description": "...", "diff": "unified diff"}
     ]
   }
   ```
   Include `changes` with unified diffs for every file you modified. For analysis-only tasks, omit `changes` and focus on `analysis`.

## Tool Selection

| Goal | Tool |
|------|------|
| Exact symbol/string | `sg_keyword_search` |
| Concepts/semantic search | `sg_nls_search` |
| Trace usage/callers | `sg_find_references` |
| See implementation | `sg_go_to_definition` |
| Read full file | `sg_read_file` |
| Browse structure | `sg_list_files` |
| Find repos | `sg_list_repos` |
| Search commits | `sg_commit_search` |
| Track changes | `sg_diff_search` |
| Compare versions | `sg_compare_revisions` |

**Decision logic:**
1. Know the exact symbol? → `sg_keyword_search`
2. Know the concept, not the name? → `sg_nls_search`
3. Need definition of a symbol? → `sg_go_to_definition`
4. Need all callers/references? → `sg_find_references`
5. Need full file content? → `sg_read_file`

## Scoping (Always Do This)

```
repo:^github.com/ORG/REPO$           # Exact repo (preferred)
repo:github.com/ORG/                 # All repos in org
file:.*\.ts$                         # TypeScript only
file:src/api/                        # Specific directory
```

Start narrow. Expand only if results are empty.

## Efficiency Rules

- Chain searches logically: search → read → references → definition
- Don't re-search for the same pattern; use results from prior calls
- Prefer `sg_keyword_search` over `sg_nls_search` when you have exact terms
- Read 2-3 related files before synthesising, rather than one at a time
- Don't read 20+ remote files without writing code — once you understand the pattern, start implementing

## If Stuck

If MCP search returns no results:
1. Broaden the search query (synonyms, partial identifiers)
2. Try `sg_nls_search` for semantic matching
3. Use `sg_list_files` to browse the directory structure
4. Use `sg_list_repos` to verify the repository name

---

**Sourcegraph Repositories:** `github.com/sg-evals/bazel--8.0.0`

# IMPORTANT: Source Code Access

**Local source files are not present.** Your workspace does not contain source code. You **MUST** use Sourcegraph MCP tools to discover, read, and understand code before making any changes.

**Target Repositories (version-pinned mirrors):**

- `github.com/sg-evals/bazel--8.0.0` — use `repo:^github.com/sg-evals/bazel--8.0.0$` filter

Scope ALL keyword_search/nls_search queries to these repos.
Use the repo name as the `repo` parameter for read_file/go_to_definition/find_references.


## Required Workflow

1. **Search first** — Use MCP tools to find relevant files and understand existing patterns
2. **Read remotely** — Use `sg_read_file` to read full file contents from Sourcegraph
3. **Edit locally** — Use Edit, Write, and Bash to create or modify files in your working directory
4. **Verify locally** — Run tests with Bash to check your changes

## Tool Selection

| Goal | Tool |
|------|------|
| Exact symbol/string | `sg_keyword_search` |
| Concepts/semantic search | `sg_nls_search` |
| Trace usage/callers | `sg_find_references` |
| See implementation | `sg_go_to_definition` |
| Read full file | `sg_read_file` |
| Browse structure | `sg_list_files` |
| Find repos | `sg_list_repos` |
| Search commits | `sg_commit_search` |
| Track changes | `sg_diff_search` |
| Compare versions | `sg_compare_revisions` |

**Decision logic:**
1. Know the exact symbol? → `sg_keyword_search`
2. Know the concept, not the name? → `sg_nls_search`
3. Need definition of a symbol? → `sg_go_to_definition`
4. Need all callers/references? → `sg_find_references`
5. Need full file content? → `sg_read_file`

## Scoping (Always Do This)

```
repo:^github.com/ORG/REPO$           # Exact repo (preferred)
repo:github.com/ORG/                 # All repos in org
file:.*\.ts$                         # TypeScript only
file:src/api/                        # Specific directory
```

Start narrow. Expand only if results are empty.

## Efficiency Rules

- Chain searches logically: search → read → references → definition
- Don't re-search for the same pattern; use results from prior calls
- Prefer `sg_keyword_search` over `sg_nls_search` when you have exact terms
- Read 2-3 related files before synthesising, rather than one at a time
- Don't read 20+ remote files without writing code — once you understand the pattern, start implementing

## If Stuck

If MCP search returns no results:
1. Broaden the search query (synonyms, partial identifiers)
2. Try `sg_nls_search` for semantic matching
3. Use `sg_list_files` to browse the directory structure
4. Use `sg_list_repos` to verify the repository name

---

**Sourcegraph Repositories:** `github.com/sg-evals/bazel--8.0.0`

# Bazel Starlark Evaluation and BUILD File Migration Inventory

## Your Task

Find all Java source files in bazelbuild/bazel under src/main/java/com/google/devtools/build/lib/packages/ and src/main/java/net/starlark/ that implement Starlark evaluation for BUILD files. Identify: the StarlarkThread class and its environment setup, the PackageFactory that invokes Starlark evaluation, the BzlLoadFunction for .bzl file loading, the rule() and macro() builtin function implementations, and the Package.Builder that accumulates targets. Report each file path and key class.

## Context

You are working on a codebase task involving repos from the migration domain.

## Available Resources

The local `/workspace/` directory contains: sg-evals/bazel--8.0.0.

## Output Format

Create a file at `/workspace/answer.json` with your findings in the following structure:

```json
{
  "files": [
    {"repo": "org/repo-name", "path": "relative/path/to/file.go"}
  ],
  "symbols": [
    {"repo": "org/repo-name", "path": "relative/path/to/file.go", "symbol": "SymbolName"}
  ],
  "chain": [
    {"repo": "org/repo-name", "path": "relative/path/to/file.go", "symbol": "FunctionName"}
  ],
  "text": "Narrative explanation of your findings, citing repos and file paths."
}
```

Include only the fields relevant to this task. Your answer is evaluated against a closed-world oracle — completeness matters.

## Evaluation

Your answer will be scored on:
- **File recall and precision**: Did you find all relevant files?

## COVERAGE REQUIREMENTS — Do Not Write answer.json Too Early

Before writing `answer.json`, you **must** verify coverage across all major
subsystems named in the task.

**Minimum workflow:**
1. **Enumerate** — Search for all relevant directories and files across the codebase.
2. **Read** — Read representative implementation files for each subsystem.
3. **Extract** — Extract the key symbols required by the task (not just file paths).
4. **Gap check** — List any providers, services, or middleware layers mentioned in
   the task that are NOT yet backed by a concrete file read. If any gaps exist,
   search for them before proceeding.
5. **Only then** write `answer.json`.

Do not stop after finding a plausible initial set of paths. The task rewards
**broad, complete coverage** of required files and symbols.

## PRE-TEST SANITY CHECK

Before running tests, perform this check:
1. List every file you have modified or created.
2. For each file, state in one sentence why it is necessary for the task.
3. If any file is unrelated to the stated task, **do not write it** (or revert
   if already written).

Use MCP for discovery and confirmation. Use local repo state only for narrow
patching logic. Do not use `sg_read_file` output as a template to copy wholesale
into the workspace.
Conversation (137)
#TypeToolText
1system-
2system-
3system-
4system-
5system-
6assistant-
I'll start by searching for the relevant files using Sourcegraph MCP tools. Let me first load the tools and then run parallel searches for all the key classes mentioned in the task.
7assistantToolSearch
8userToolSearch
{"matches": ["mcp__sourcegraph__sg_keyword_search", "mcp__sourcegraph__sg_read_file", "mcp__sourcegraph__sg_list_files", "mcp__sourcegraph__sg_nls_search"], "query": "select:mcp__sourcegraph__sg_keyword_search,mcp__sourcegraph__sg_read_file,mcp__sourcegraph__sg_list_files,mcp__sourcegraph__sg_nls_search", "total_deferred_tools": 33}
9system-
10system-
11system-
12system-
13assistant-
Now let me run parallel searches for all the key classes mentioned in the task.
14assistantmcp__sourcegraph__sg_keyword_search
15assistantmcp__sourcegraph__sg_keyword_search
16usermcp__sourcegraph__sg_keyword_search
{"text":"# github.com/sg-evals/bazel--8.0.0 – src/main/java/net/starlark/java/eval/StarlarkThread.java\n46:  */\n47: public final class StarlarkThread {\n48: \n49: \n431: \n432:   private StarlarkThread(\n433:       Mutability mu,\n434: \n28: /**\n29:  * An StarlarkThread represents a Starlark thread.\n30:  *\n31: \n\n# github.com/sg-evals/bazel--8.0.0 – src/main/java/com/google/devtools/build/lib/analysis/RuleContext.java\n185:    */\n186:   private final StarlarkThread starlarkThread;\n187: \n188: \n977: \n978:   private StarlarkThread createStarlarkThread(Mutability mutability) {\n979:     AnalysisEnvironment env = getAnalysisEnvironment();\n980:     StarlarkThread thread =\n981:         StarlarkThread.create(\n982:             mutability, env.getStarlarkSemantics(), getLabel().toString(), getSymbolGenerator());\n983: \n987: \n988:   public StarlarkThread getStarlarkThread() {\n989:     return starlarkThread;\n990:   }\n991: \n\n# github.com/sg-evals/bazel--8.0.0 – src/main/java/com/google/devtools/build/lib/profiler/memory/AllocationTracker.java\n51: \n52:   // A mapping from Java thread to StarlarkThread.\n53:   // Used to effect a hidden StarlarkThread parameter to sampleAllocation.\n54:   // TODO(adonovan): opt: merge the three different ThreadLocals in use here.\n55:   private final ThreadLocal<StarlarkThread> starlarkThread = new ThreadLocal<>();\n56: \n57: \n43: import net.starlark.java.eval.StarlarkCallable;\n44: import net.starlark.java.eval.StarlarkThread;\n45: import net.starlark.java.syntax.Location;\n46: \n57:   @Override\n58:   public void onPushFirst(StarlarkThread thread) {\n59:     starlarkThread.set(thread);\n60:   }\n61: \n\n# github.com/sg-evals/bazel--8.0.0 – src/main/java/com/google/devtools/build/lib/cmdline/StarlarkThreadContext.java\n34:  */\...
17usermcp__sourcegraph__sg_keyword_search
{"text":"# github.com/sg-evals/bazel--8.0.0 – src/main/java/com/google/devtools/build/lib/packages/PackageFactory.java\n79:  */\n80: public final class PackageFactory {\n81:   private static final GoogleLogger logger = GoogleLogger.forEnclosingClass();\n82: \n143:   // so WorkspaceFactory can add an extra top-level builtin.\n144:   public PackageFactory(\n145:       RuleClassProvider ruleClassProvider,\n146: \n76:  *\n77:  * <p>A PackageFactory is a heavy-weight object; create them sparingly. Typically only one is needed\n78:  * per client application.\n79: \n\n# github.com/sg-evals/bazel--8.0.0 – src/main/java/com/google/devtools/build/lib/runtime/BlazeRuntime.java\n167: \n168:   private final PackageFactory packageFactory;\n169:   private final ConfiguredRuleClassProvider ruleClassProvider;\n170: \n546:   /** Returns the package factory. */\n547:   public PackageFactory getPackageFactory() {\n548:     return packageFactory;\n549:   }\n550: \n58: import com.google.devtools.build.lib.packages.Package.Builder.PackageSettings;\n59: import com.google.devtools.build.lib.packages.PackageFactory;\n60: import com.google.devtools.build.lib.packages.PackageLoadingListener;\n61: \n\n# github.com/sg-evals/bazel--8.0.0 – src/main/java/com/google/devtools/build/lib/skyframe/PackageFunction.java\n105: \n106:   protected final PackageFactory packageFactory;\n107:   protected final CachingPackageLocator packageLocator;\n108: \n1304:   public static final class Builder {\n1305:     @Nullable private PackageFactory packageFactory;\n1306:     @Nullable private CachingPackageLocator pkgLocator;\n1307: \n1319:     @CanIgnoreReturnValue\n1320:     public Builder setPackageFactory(PackageFactory packageFactory) {\n1321:       this.packageFactory = packageFactory;\n1322:       return this;\n13...
18assistantmcp__sourcegraph__sg_keyword_search
19usermcp__sourcegraph__sg_keyword_search
{"text":"# github.com/sg-evals/bazel--8.0.0 – src/main/java/com/google/devtools/build/lib/skyframe/BzlLoadFunction.java\n107:  */\n108: public class BzlLoadFunction implements SkyFunction {\n109: \n110: \n128: \n129:   private BzlLoadFunction(\n130:       RuleClassProvider ruleClassProvider,\n131: \n1693: \n1694:   private static final class BzlLoadFunctionException extends SkyFunctionException {\n1695:     private BzlLoadFunctionException(BzlLoadFailedException cause) {\n1696:       super(cause, cause.getTransience());\n1697: \n\n# github.com/sg-evals/bazel--8.0.0 – src/main/java/com/google/devtools/build/lib/skyframe/SkyframeExecutor.java\n885: \n886:   protected SkyFunction newBzlLoadFunction(RuleClassProvider ruleClassProvider) {\n887:     return BzlLoadFunction.create(\n888:         ruleClassProvider, directories, getDigestFunction().getHashFunction(), bzlCompileCache);\n889: \n881:   @Nullable\n882:   protected BzlLoadFunction getBzlLoadFunctionForInliningPackageAndWorkspaceNodes() {\n883:     return null;\n884: \n369:   // Cache of parsed bzl files, for use when we're inlining BzlCompileFunction in\n370:   // BzlLoadFunction. See the comments in BzlLoadFunction for motivations and details.\n371:   private final Cache<BzlCompileValue.Key, BzlCompileValue> bzlCompileCache =\n372: \n\n# github.com/sg-evals/bazel--8.0.0 – src/main/java/com/google/devtools/build/lib/skyframe/PackageFunction.java\n112:   // Not final only for testing.\n113:   @Nullable private BzlLoadFunction bzlLoadFunctionForInlining;\n114: \n115: \n1308:     private AtomicInteger numPackagesSuccessfullyLoaded = new AtomicInteger(0);\n1309:     @Nullable private BzlLoadFunction bzlLoadFunctionForInlining;\n1310:     @Nullable private PackageProgressReceiver packageProgress;\n1311: \n196: \n197:   pub...
20assistantmcp__sourcegraph__sg_keyword_search
21usermcp__sourcegraph__sg_keyword_search
{"text":"# github.com/sg-evals/bazel--8.0.0 – src/main/java/com/google/devtools/build/lib/packages/WorkspaceGlobals.java\n108:     // Add to the package definition for later.\n109:     Package.Builder builder =\n110:         Package.Builder.fromOrFailAllowWorkspaceOnly(thread, \"register_execution_platforms()\");\n111:     List<String> patterns = Sequence.cast(platformLabels, String.class, \"platform_labels\");\n112: \n118:     // Add to the package definition for later.\n119:     Package.Builder builder =\n120:         Package.Builder.fromOrFailAllowWorkspaceOnly(thread, \"register_toolchains()\");\n121:     List<String> patterns = Sequence.cast(toolchainLabels, String.class, \"toolchain_labels\");\n122: \n156:     try {\n157:       Package.Builder builder = Package.Builder.fromOrFailAllowWorkspaceOnly(thread, \"bind()\");\n158:       RuleClass ruleClass = ruleClassMap.get(\"bind\");\n159: \n\n# github.com/sg-evals/bazel--8.0.0 – src/main/java/com/google/devtools/build/lib/packages/PackageCallable.java\n51:       throws EvalException {\n52:     Package.Builder pkgBuilder = Package.Builder.fromOrFailAllowBuildOnly(thread, \"package()\");\n53:     if (pkgBuilder.isPackageFunctionUsed()) {\n54: \n76:   protected void processParam(\n77:       String name, Object rawValue, Package.Builder pkgBuilder, PackageArgs.Builder pkgArgsBuilder)\n78:       throws EvalException {\n79: \n\n# github.com/sg-evals/bazel--8.0.0 – src/main/java/com/google/devtools/build/lib/packages/BuildGlobals.java\n117:       throws EvalException {\n118:     Package.Builder pkgBuilder = Package.Builder.fromOrFailAllowBuildOnly(thread, \"licenses()\");\n119:     try {\n120: \n76:       throws EvalException {\n77:     Package.Builder pkgBuilder =\n78:         Package.Builder.fromOrFailAllowBuildOnly(thread...
22system-
23system-
24system-
25system-
26system-
27assistant-
Good results. Now let me search for the `rule()` and `macro()` builtin implementations, and explore the packages directory more thoroughly.
28assistantmcp__sourcegraph__sg_keyword_search
29usermcp__sourcegraph__sg_keyword_search
{"text":"No results.\n\nNo results found."}
30assistantmcp__sourcegraph__sg_keyword_search
31usermcp__sourcegraph__sg_keyword_search
{"text":"No results.\n\nNo results found."}
32assistantmcp__sourcegraph__sg_list_files
33usermcp__sourcegraph__sg_list_files
{"text":"src/main/java/com/google/devtools/build/lib/packages/metrics/\nsrc/main/java/com/google/devtools/build/lib/packages/producers/\nsrc/main/java/com/google/devtools/build/lib/packages/semantics/\nsrc/main/java/com/google/devtools/build/lib/packages/AbstractAttributeMapper.java\nsrc/main/java/com/google/devtools/build/lib/packages/AdvertisedProviderSet.java\nsrc/main/java/com/google/devtools/build/lib/packages/AggregatingAttributeMapper.java\nsrc/main/java/com/google/devtools/build/lib/packages/AllowlistChecker.java\nsrc/main/java/com/google/devtools/build/lib/packages/Aspect.java\nsrc/main/java/com/google/devtools/build/lib/packages/AspectClass.java\nsrc/main/java/com/google/devtools/build/lib/packages/AspectDefinition.java\nsrc/main/java/com/google/devtools/build/lib/packages/AspectDescriptor.java\nsrc/main/java/com/google/devtools/build/lib/packages/AspectParameters.java\nsrc/main/java/com/google/devtools/build/lib/packages/AspectsList.java\nsrc/main/java/com/google/devtools/build/lib/packages/Attribute.java\nsrc/main/java/com/google/devtools/build/lib/packages/AttributeFormatter.java\nsrc/main/java/com/google/devtools/build/lib/packages/AttributeMap.java\nsrc/main/java/com/google/devtools/build/lib/packages/AttributeTransitionData.java\nsrc/main/java/com/google/devtools/build/lib/packages/AttributeValueSource.java\nsrc/main/java/com/google/devtools/build/lib/packages/AutoloadSymbols.java\nsrc/main/java/com/google/devtools/build/lib/packages/BUILD\nsrc/main/java/com/google/devtools/build/lib/packages/BazelStarlarkEnvironment.java\nsrc/main/java/com/google/devtools/build/lib/packages/BuildFileContainsErrorsException.java\nsrc/main/java/com/google/devtools/build/lib/packages/BuildFileName.java\nsrc/main/java/com/google/devtools/build/lib/packages/BuildFileNotFound...
34assistantmcp__sourcegraph__sg_list_files
35usermcp__sourcegraph__sg_list_files
{"text":"src/main/java/net/starlark/java/eval/BUILD\nsrc/main/java/net/starlark/java/eval/BuiltinFunction.java\nsrc/main/java/net/starlark/java/eval/CallUtils.java\nsrc/main/java/net/starlark/java/eval/CpuProfiler.java\nsrc/main/java/net/starlark/java/eval/Debug.java\nsrc/main/java/net/starlark/java/eval/Dict.java\nsrc/main/java/net/starlark/java/eval/Eval.java\nsrc/main/java/net/starlark/java/eval/EvalException.java\nsrc/main/java/net/starlark/java/eval/EvalUtils.java\nsrc/main/java/net/starlark/java/eval/FlagGuardedValue.java\nsrc/main/java/net/starlark/java/eval/FormatParser.java\nsrc/main/java/net/starlark/java/eval/GuardedValue.java\nsrc/main/java/net/starlark/java/eval/HasBinary.java\nsrc/main/java/net/starlark/java/eval/ImmutableSingletonStarlarkList.java\nsrc/main/java/net/starlark/java/eval/ImmutableStarlarkList.java\nsrc/main/java/net/starlark/java/eval/JNI.java\nsrc/main/java/net/starlark/java/eval/LazyImmutableStarlarkList.java\nsrc/main/java/net/starlark/java/eval/MethodDescriptor.java\nsrc/main/java/net/starlark/java/eval/MethodLibrary.java\nsrc/main/java/net/starlark/java/eval/Module.java\nsrc/main/java/net/starlark/java/eval/Mutability.java\nsrc/main/java/net/starlark/java/eval/MutableStarlarkList.java\nsrc/main/java/net/starlark/java/eval/NoneType.java\nsrc/main/java/net/starlark/java/eval/ParamDescriptor.java\nsrc/main/java/net/starlark/java/eval/Printer.java\nsrc/main/java/net/starlark/java/eval/RangeList.java\nsrc/main/java/net/starlark/java/eval/RegularImmutableStarlarkList.java\nsrc/main/java/net/starlark/java/eval/RegularTuple.java\nsrc/main/java/net/starlark/java/eval/Sequence.java\nsrc/main/java/net/starlark/java/eval/SingletonTuple.java\nsrc/main/java/net/starlark/java/eval/Starlark.java\nsrc/main/java/net/starlark/java/eval/StarlarkCallable.ja...
36system-
37system-
38system-
39system-
40system-
41assistant-
Now let me search for the `rule()` and `macro()` builtin implementations specifically:
42assistantmcp__sourcegraph__sg_keyword_search
43usermcp__sourcegraph__sg_keyword_search
{"text":"No results.\n\nNo results found."}
44assistantmcp__sourcegraph__sg_keyword_search
45usermcp__sourcegraph__sg_keyword_search
{"text":"No results.\n\nNo results found."}
46assistantmcp__sourcegraph__sg_keyword_search
47usermcp__sourcegraph__sg_keyword_search
{"text":"# github.com/sg-evals/bazel--8.0.0 – src/main/java/com/google/devtools/build/lib/packages/RuleClassProvider.java\n62:    */\n63:   BazelStarlarkEnvironment getBazelStarlarkEnvironment();\n64: \n65: \n59:   /**\n60:    * Returns the {@link BazelStarlarkEnvironment}, which is the final determiner of the BUILD and\n61:    * .bzl environment (with and without builtins injection).\n62: \n\n# github.com/sg-evals/bazel--8.0.0 – src/main/java/com/google/devtools/build/lib/packages/BazelStarlarkEnvironment.java\n119:    */\n120:   public BazelStarlarkEnvironment(\n121:       StarlarkGlobals starlarkGlobals,\n122: \n58:  */\n59: public final class BazelStarlarkEnvironment {\n60: \n61: \n103:   /**\n104:    * Constructs a new {@code BazelStarlarkEnvironment} that will have complete knowledge of the\n105:    * proper Starlark symbols available in each context, with and without injection.\n106: \n\n# github.com/sg-evals/bazel--8.0.0 – src/main/java/com/google/devtools/build/lib/packages/StarlarkGlobals.java\n25:  * starting point for defining the minimum Starlark environments that Bazel supports for BUILD\n26:  * files, .bzl files, etc. See {@link BazelStarlarkEnvironment} for the final determination of the\n27:  * environment after accounting for registered symbols and builtins injection.\n28: \n\n# github.com/sg-evals/bazel--8.0.0 – src/main/java/com/google/devtools/build/lib/packages/WorkspaceFactory.java\n85:     this.starlarkSemantics = starlarkSemantics;\n86:     this.starlarkGlobals = ruleClassProvider.getBazelStarlarkEnvironment().getStarlarkGlobals();\n87:     this.workspaceFunctions =\n88: \n303:   // TODO(b/280446865): Ideally the WORKSPACE environment would be determined by a method in\n304:   // BazelStarlarkEnvironment. The method would accept the values of `_...
48system-
49system-
50system-
51system-
52assistant-
Let me now read the key files to understand the full picture:
53assistantmcp__sourcegraph__sg_read_file
54usermcp__sourcegraph__sg_read_file
{"text":"URL: https://demo.sourcegraph.com/github.com/sg-evals/bazel--8.0.0@12f256c9dffb17d03d47b3f06bf34f67c976e4aa/-/blob/src/main/java/com/google/devtools/build/lib/packages/RuleFunction.java\n1: // Copyright 2017 The Bazel Authors. All rights reserved.\n2: //\n3: // Licensed under the Apache License, Version 2.0 (the \"License\");\n4: // you may not use this file except in compliance with the License.\n5: // You may obtain a copy of the License at\n6: //\n7: //    http://www.apache.org/licenses/LICENSE-2.0\n8: //\n9: // Unless required by applicable law or agreed to in writing, software\n10: // distributed under the License is distributed on an \"AS IS\" BASIS,\n11: // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n12: // See the License for the specific language governing permissions and\n13: // limitations under the License.\n14: \n15: package com.google.devtools.build.lib.packages;\n16: \n17: import com.google.devtools.build.lib.starlarkbuildapi.RuleFunctionApi;\n18: \n19: /** Interface for a native or Starlark rule function. */\n20: // Ideally, this interface should be merged with RuleFunctionApi, but that would cause a circular\n21: // dependency between packages and starlarkbuildapi.\n22: public interface RuleFunction extends RuleFunctionApi {\n23:   RuleClass getRuleClass();\n24: }\n25: "}
55assistantmcp__sourcegraph__sg_keyword_search
56usermcp__sourcegraph__sg_keyword_search
{"text":"# github.com/sg-evals/bazel--8.0.0 – src/main/java/com/google/devtools/build/lib/packages/StarlarkNativeModule.java\n430:   @Override\n431:   public Object existingRule(String name, StarlarkThread thread) throws EvalException {\n432:     if (thread.getThreadLocal(ExistingRulesShouldBeNoOp.class) != null) {\n433: \n153:     @Override\n154:     @StarlarkMethod(\n155:         name = \"get\",\n156: \n168: \n169:     @StarlarkMethod(\n170:         name = \"keys\",\n171: \n\n# github.com/sg-evals/bazel--8.0.0 – src/main/java/com/google/devtools/build/lib/packages/SelectorList.java\n43:  * <pre>\n44:  *   rule(\n45:  *       name = 'myrule',\n46: \n236: \n237:     @StarlarkMethod(\n238:         name = \"select\",\n239: \n29: import net.starlark.java.annot.StarlarkBuiltin;\n30: import net.starlark.java.annot.StarlarkMethod;\n31: import net.starlark.java.eval.Dict;\n32: \n\n# github.com/sg-evals/bazel--8.0.0 – src/main/java/com/google/devtools/build/lib/packages/semantics/BuildLanguageOptions.java\n57:  *       entry to {@link BuildLanguageOptions}, then specify the identifier in {@link\n58:  *       net.starlark.java.annot.StarlarkMethod#enableOnlyWithFlag} or {@link\n59:  *       net.starlark.java.annot.StarlarkMethod#disableWithFlag}.\n60:  * </ul>\n61: \n781:               + \" attr.dormant_label(), attr.dormant_label_list() and\"\n782:               + \" rule(for_dependency_resolution=) are allowed.\")\n783:   public boolean experimentalDormantDeps;\n784: \n54:  *       to update this when flipping a flag's default value.\n55:  *   <li>Boolean semantic flags can toggle StarlarkMethod-annotated Java methods (or their\n56:  *       parameters) on or off, making them selectively invisible to Starlark. To do this, add a new\n57: \n"}
57assistantmcp__sourcegraph__sg_keyword_search
58usermcp__sourcegraph__sg_keyword_search
{"text":"# github.com/sg-evals/bazel--8.0.0 – src/main/java/com/google/devtools/build/lib/packages/StarlarkNativeModule.java\n153:     @Override\n154:     @StarlarkMethod(\n155:         name = \"get\",\n156: \n168: \n169:     @StarlarkMethod(\n170:         name = \"keys\",\n171: \n183: \n184:     @StarlarkMethod(\n185:         name = \"values\",\n186: \n\n# github.com/sg-evals/bazel--8.0.0 – src/main/java/com/google/devtools/build/lib/packages/semantics/BuildLanguageOptions.java\n57:  *       entry to {@link BuildLanguageOptions}, then specify the identifier in {@link\n58:  *       net.starlark.java.annot.StarlarkMethod#enableOnlyWithFlag} or {@link\n59:  *       net.starlark.java.annot.StarlarkMethod#disableWithFlag}.\n60:  * </ul>\n61: \n54:  *       to update this when flipping a flag's default value.\n55:  *   <li>Boolean semantic flags can toggle StarlarkMethod-annotated Java methods (or their\n56:  *       parameters) on or off, making them selectively invisible to Starlark. To do this, add a new\n57: \n243:       effectTags = OptionEffectTag.BUILD_FILE_SEMANTICS,\n244:       help = \"If set to true, enables the `macro()` construct for defining symbolic macros.\")\n245:   public boolean experimentalEnableFirstClassMacros;\n246: \n"}
59system-
60system-
61system-
62assistant-
Let me find where `rule()` and `macro()` builtins are implemented:
63assistantmcp__sourcegraph__sg_keyword_search
64usermcp__sourcegraph__sg_keyword_search
{"text":"# github.com/sg-evals/bazel--8.0.0 – src/main/java/com/google/devtools/build/lib/starlarkbuildapi/StarlarkRuleContextApi.java\n269: \n270:   @StarlarkMethod(\n271:       name = \"genfiles_dir\",\n272: \n141: \n142:   @StarlarkMethod(\n143:       name = \"actions\",\n144: \n147: \n148:   @StarlarkMethod(\n149:       name = \"super\",\n150: \n\n# github.com/sg-evals/bazel--8.0.0 – src/main/java/com/google/devtools/build/lib/starlarkbuildapi/StarlarkRuleFunctionsApi.java\n65: \n66:   @StarlarkMethod(\n67:       name = \"provider\",\n68: \n200: \n201:   @StarlarkMethod(\n202:       name = \"macro\",\n203: \n427: \n428:   @StarlarkMethod(\n429:       name = \"rule\",\n430:       doc =\n431: \n"}
65assistantmcp__sourcegraph__sg_keyword_search
66usermcp__sourcegraph__sg_keyword_search
{"text":"# github.com/sg-evals/bazel--8.0.0 – src/main/java/com/google/devtools/build/lib/starlarkbuildapi/StarlarkRuleFunctionsApi.java\n65: \n66:   @StarlarkMethod(\n67:       name = \"provider\",\n68: \n200: \n201:   @StarlarkMethod(\n202:       name = \"macro\",\n203:       doc =\n204: \n427: \n428:   @StarlarkMethod(\n429:       name = \"rule\",\n430: \n"}
67system-
68system-
69assistant-
The `rule()` and `macro()` builtins are declared in `StarlarkRuleFunctionsApi.java`. Let me find the concrete implementation:
70assistantmcp__sourcegraph__sg_keyword_search
71usermcp__sourcegraph__sg_keyword_search
{"text":"# github.com/sg-evals/bazel--8.0.0 – src/main/java/com/google/devtools/build/lib/analysis/starlark/StarlarkRuleClassFunctions.java\n145: /** A helper class to provide an easier API for Starlark rule definitions. */\n146: public class StarlarkRuleClassFunctions implements StarlarkRuleFunctionsApi {\n147: \n148: \n"}
72assistantmcp__sourcegraph__sg_keyword_search
73usermcp__sourcegraph__sg_keyword_search
{"text":"# github.com/sg-evals/bazel--8.0.0 – src/main/java/com/google/devtools/build/lib/packages/BzlInitThreadContext.java\n33:  */\n34: public final class BzlInitThreadContext extends StarlarkThreadContext\n35:     implements RuleDefinitionEnvironment {\n36: \n"}
74system-
75system-
76system-
77system-
78assistant-
Now let me read key sections of the most important files to verify their content and key class names:
79assistantmcp__sourcegraph__sg_read_file
80usermcp__sourcegraph__sg_read_file
{"text":"URL: https://demo.sourcegraph.com/github.com/sg-evals/bazel--8.0.0@12f256c9dffb17d03d47b3f06bf34f67c976e4aa/-/blob/src/main/java/net/starlark/java/eval/StarlarkThread.java%3FL1-80\n1: // Copyright 2014 The Bazel Authors. All rights reserved.\n2: //\n3: // Licensed under the Apache License, Version 2.0 (the \"License\");\n4: // you may not use this file except in compliance with the License.\n5: // You may obtain a copy of the License at\n6: //\n7: //    http://www.apache.org/licenses/LICENSE-2.0\n8: //\n9: // Unless required by applicable law or agreed to in writing, software\n10: // distributed under the License is distributed on an \"AS IS\" BASIS,\n11: // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n12: // See the License for the specific language governing permissions and\n13: // limitations under the License.\n14: \n15: package net.starlark.java.eval;\n16: \n17: import com.google.common.base.Preconditions;\n18: import com.google.common.collect.ImmutableList;\n19: import com.google.common.collect.ImmutableMap;\n20: import java.util.ArrayList;\n21: import java.util.HashMap;\n22: import java.util.Map;\n23: import java.util.concurrent.atomic.AtomicInteger;\n24: import javax.annotation.Nullable;\n25: import javax.annotation.concurrent.Immutable;\n26: import net.starlark.java.syntax.Location;\n27: \n28: /**\n29:  * An StarlarkThread represents a Starlark thread.\n30:  *\n31:  * <p>It holds the stack of active Starlark and built-in function calls. In addition, it may hold\n32:  * per-thread application state (see {@link #setThreadLocal}) that passes through Starlark functions\n33:  * but does not directly affect them, such as information about the BUILD file being loaded.\n34:  *\n35:  * <p>StarlarkThreads are not thread-safe: they sh...
81assistantmcp__sourcegraph__sg_read_file
82usermcp__sourcegraph__sg_read_file
{"text":"URL: https://demo.sourcegraph.com/github.com/sg-evals/bazel--8.0.0@12f256c9dffb17d03d47b3f06bf34f67c976e4aa/-/blob/src/main/java/com/google/devtools/build/lib/packages/PackageFactory.java%3FL1-100\n1: // Copyright 2014 The Bazel Authors. All rights reserved.\n2: //\n3: // Licensed under the Apache License, Version 2.0 (the \"License\");\n4: // you may not use this file except in compliance with the License.\n5: // You may obtain a copy of the License at\n6: //\n7: //    http://www.apache.org/licenses/LICENSE-2.0\n8: //\n9: // Unless required by applicable law or agreed to in writing, software\n10: // distributed under the License is distributed on an \"AS IS\" BASIS,\n11: // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n12: // See the License for the specific language governing permissions and\n13: // limitations under the License.\n14: \n15: package com.google.devtools.build.lib.packages;\n16: \n17: import com.google.common.annotations.VisibleForTesting;\n18: import com.google.common.base.Preconditions;\n19: import com.google.common.collect.ImmutableList;\n20: import com.google.common.collect.ImmutableMap;\n21: import com.google.common.flogger.GoogleLogger;\n22: import com.google.devtools.build.lib.actions.ThreadStateReceiver;\n23: import com.google.devtools.build.lib.analysis.RuleDefinitionEnvironment;\n24: import com.google.devtools.build.lib.cmdline.IgnoredSubdirectories;\n25: import com.google.devtools.build.lib.cmdline.PackageIdentifier;\n26: import com.google.devtools.build.lib.cmdline.RepositoryMapping;\n27: import com.google.devtools.build.lib.concurrent.NamedForkJoinPool;\n28: import com.google.devtools.build.lib.events.Event;\n29: import com.google.devtools.build.lib.events.ExtendedEventHandler;\n30: import com.google.devt...
83assistantmcp__sourcegraph__sg_read_file
84usermcp__sourcegraph__sg_read_file
{"text":"URL: https://demo.sourcegraph.com/github.com/sg-evals/bazel--8.0.0@12f256c9dffb17d03d47b3f06bf34f67c976e4aa/-/blob/src/main/java/com/google/devtools/build/lib/skyframe/BzlLoadFunction.java%3FL1-120\n1: // Copyright 2014 The Bazel Authors. All rights reserved.\n2: //\n3: // Licensed under the Apache License, Version 2.0 (the \"License\");\n4: // you may not use this file except in compliance with the License.\n5: // You may obtain a copy of the License at\n6: //\n7: //    http://www.apache.org/licenses/LICENSE-2.0\n8: //\n9: // Unless required by applicable law or agreed to in writing, software\n10: // distributed under the License is distributed on an \"AS IS\" BASIS,\n11: // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n12: // See the License for the specific language governing permissions and\n13: // limitations under the License.\n14: package com.google.devtools.build.lib.skyframe;\n15: \n16: import com.github.benmanes.caffeine.cache.Cache;\n17: import com.github.benmanes.caffeine.cache.Caffeine;\n18: import com.google.common.annotations.VisibleForTesting;\n19: import com.google.common.base.Preconditions;\n20: import com.google.common.base.Predicates;\n21: import com.google.common.collect.ImmutableList;\n22: import com.google.common.collect.ImmutableMap;\n23: import com.google.common.collect.Lists;\n24: import com.google.common.collect.Maps;\n25: import com.google.common.flogger.GoogleLogger;\n26: import com.google.common.hash.HashFunction;\n27: import com.google.devtools.build.lib.analysis.BlazeDirectories;\n28: import com.google.devtools.build.lib.cmdline.BazelModuleContext;\n29: import com.google.devtools.build.lib.cmdline.Label;\n30: import com.google.devtools.build.lib.cmdline.Label.PackageContext;\n31: import com.google.devt...
85assistantmcp__sourcegraph__sg_read_file
86usermcp__sourcegraph__sg_read_file
{"text":"URL: https://demo.sourcegraph.com/github.com/sg-evals/bazel--8.0.0@12f256c9dffb17d03d47b3f06bf34f67c976e4aa/-/blob/src/main/java/com/google/devtools/build/lib/analysis/starlark/StarlarkRuleClassFunctions.java%3FL1-100\n1: // Copyright 2014 The Bazel Authors. All rights reserved.\n2: //\n3: // Licensed under the Apache License, Version 2.0 (the \"License\");\n4: // you may not use this file except in compliance with the License.\n5: // You may obtain a copy of the License at\n6: //\n7: //    http://www.apache.org/licenses/LICENSE-2.0\n8: //\n9: // Unless required by applicable law or agreed to in writing, software\n10: // distributed under the License is distributed on an \"AS IS\" BASIS,\n11: // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n12: // See the License for the specific language governing permissions and\n13: // limitations under the License.\n14: \n15: package com.google.devtools.build.lib.analysis.starlark;\n16: \n17: import static com.google.common.base.Preconditions.checkArgument;\n18: import static com.google.common.base.Preconditions.checkState;\n19: import static com.google.common.collect.ImmutableList.toImmutableList;\n20: import static com.google.devtools.build.lib.analysis.BaseRuleClasses.RUN_UNDER_EXEC_CONFIG;\n21: import static com.google.devtools.build.lib.analysis.BaseRuleClasses.RUN_UNDER_TARGET_CONFIG;\n22: import static com.google.devtools.build.lib.analysis.BaseRuleClasses.TIMEOUT_DEFAULT;\n23: import static com.google.devtools.build.lib.analysis.BaseRuleClasses.getTestRuntimeLabelList;\n24: import static com.google.devtools.build.lib.analysis.test.ExecutionInfo.DEFAULT_TEST_RUNNER_EXEC_GROUP;\n25: import static com.google.devtools.build.lib.packages.Attribute.attr;\n26: import static com.google.devtools.b...
87system-
88system-
89system-
90system-
91assistant-
Let me read more of the key implementation files to identify inner classes and key methods:
92assistantmcp__sourcegraph__sg_read_file
93usermcp__sourcegraph__sg_read_file
{"text":"URL: https://demo.sourcegraph.com/github.com/sg-evals/bazel--8.0.0@12f256c9dffb17d03d47b3f06bf34f67c976e4aa/-/blob/src/main/java/com/google/devtools/build/lib/analysis/starlark/StarlarkRuleClassFunctions.java%3FL140-250\n140: import net.starlark.java.eval.SymbolGenerator.Symbol;\n141: import net.starlark.java.eval.Tuple;\n142: import net.starlark.java.syntax.Identifier;\n143: import net.starlark.java.syntax.Location;\n144: \n145: /** A helper class to provide an easier API for Starlark rule definitions. */\n146: public class StarlarkRuleClassFunctions implements StarlarkRuleFunctionsApi {\n147: \n148:   // A cache for base rule classes (especially tests).\n149:   private static final LoadingCache<String, Label> labelCache =\n150:       Caffeine.newBuilder().build(Label::parseCanonical);\n151: \n152:   // TODO(bazel-team): Remove the code duplication (BaseRuleClasses and this class).\n153:   /** Parent rule class for non-executable non-test Starlark rules. */\n154:   public static final RuleClass baseRule =\n155:       BaseRuleClasses.commonCoreAndStarlarkAttributes(\n156:               new RuleClass.Builder(\"$base_rule\", RuleClassType.ABSTRACT, true)\n157:                   .add(attr(\"expect_failure\", STRING)))\n158:           // TODO(skylark-team): Allow Starlark rules to extend native rules and remove duplication.\n159:           .add(\n160:               attr(\"toolchains\", LABEL_LIST)\n161:                   .allowedFileTypes(FileTypeSet.NO_FILE)\n162:                   .mandatoryProviders(ImmutableList.of(TemplateVariableInfo.PROVIDER.id()))\n163:                   .dontCheckConstraints())\n164:           .add(attr(RuleClass.EXEC_PROPERTIES_ATTR, Types.STRING_DICT).value(ImmutableMap.of()))\n165:           .add(\n166:               attr(RuleClass.EXEC...
94assistantmcp__sourcegraph__sg_read_file
95usermcp__sourcegraph__sg_read_file
{"text":"URL: https://demo.sourcegraph.com/github.com/sg-evals/bazel--8.0.0@12f256c9dffb17d03d47b3f06bf34f67c976e4aa/-/blob/src/main/java/com/google/devtools/build/lib/packages/Package.java%3FL1050-1120\n1050:         .setLoads(ImmutableList.of());\n1051:   }\n1052: \n1053:   // ==== Non-trivial nested classes ====\n1054: \n1055:   /**\n1056:    * A builder for {@link Package} objects. Only intended to be used by {@link PackageFactory} and\n1057:    * {@link com.google.devtools.build.lib.skyframe.PackageFunction}.\n1058:    */\n1059:   public static class Builder extends TargetDefinitionContext {\n1060: \n1061:     /**\n1062:      * A bundle of options affecting package construction, that is not specific to any particular\n1063:      * package.\n1064:      */\n1065:     public interface PackageSettings {\n1066:       /**\n1067:        * Returns whether or not extra detail should be added to {@link NoSuchTargetException}s\n1068:        * thrown from {@link #getTarget}. Useful for toning down verbosity in situations where it can\n1069:        * be less helpful.\n1070:        */\n1071:       // TODO(bazel-team): Arguably, this could be replaced by a boolean param to getTarget(), or\n1072:       // some separate action taken by the caller. But there's a lot of call sites that would need\n1073:       // updating.\n1074:       default boolean succinctTargetNotFoundErrors() {\n1075:         return false;\n1076:       }\n1077: \n1078:       /**\n1079:        * Determines whether to precompute a list of transitively loaded starlark files while\n1080:        * building packages.\n1081:        *\n1082:        * <p>Typically, direct loads are stored as a {@code ImmutableList<Module>}. This is\n1083:        * sufficient to reconstruct the full load graph by recursively traversing {@...
96assistantmcp__sourcegraph__sg_read_file
97usermcp__sourcegraph__sg_read_file
{"text":"URL: https://demo.sourcegraph.com/github.com/sg-evals/bazel--8.0.0@12f256c9dffb17d03d47b3f06bf34f67c976e4aa/-/blob/src/main/java/com/google/devtools/build/lib/packages/BazelStarlarkEnvironment.java%3FL1-80\n1: // Copyright 2020 The Bazel Authors. All rights reserved.\n2: //\n3: // Licensed under the Apache License, Version 2.0 (the \"License\");\n4: // you may not use this file except in compliance with the License.\n5: // You may obtain a copy of the License at\n6: //\n7: //    http://www.apache.org/licenses/LICENSE-2.0\n8: //\n9: // Unless required by applicable law or agreed to in writing, software\n10: // distributed under the License is distributed on an \"AS IS\" BASIS,\n11: // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n12: // See the License for the specific language governing permissions and\n13: // limitations under the License.\n14: \n15: package com.google.devtools.build.lib.packages;\n16: \n17: import com.google.common.base.Preconditions;\n18: import com.google.common.collect.ImmutableMap;\n19: import com.google.common.collect.Sets;\n20: import java.util.HashMap;\n21: import java.util.List;\n22: import java.util.Map;\n23: import java.util.Set;\n24: import javax.annotation.Nullable;\n25: import net.starlark.java.eval.GuardedValue;\n26: import net.starlark.java.eval.Starlark;\n27: \n28: // TODO(adonovan): move skyframe.PackageFunction into lib.packages so we needn't expose this and\n29: // the other env-building functions.\n30: /**\n31:  * This class encapsulates knowledge of how to set up the Starlark environment for BUILD, WORKSPACE,\n32:  * and bzl file evaluation, including the top-level predeclared symbols, the {@code native} module,\n33:  * and the special environment for {@code @_builtins} bzl evaluation.\n34:  *\...
98system-
99system-
100system-
101system-
102system-
103system-
104system-
105system-
106assistant-
Let me verify a few more important files that were identified:
107assistantmcp__sourcegraph__sg_read_file
108usermcp__sourcegraph__sg_read_file
{"text":"URL: https://demo.sourcegraph.com/github.com/sg-evals/bazel--8.0.0@12f256c9dffb17d03d47b3f06bf34f67c976e4aa/-/blob/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/StarlarkRuleFunctionsApi.java%3FL1-80\n1: // Copyright 2018 The Bazel Authors. All rights reserved.\n2: //\n3: // Licensed under the Apache License, Version 2.0 (the \"License\");\n4: // you may not use this file except in compliance with the License.\n5: // You may obtain a copy of the License at\n6: //\n7: //    http://www.apache.org/licenses/LICENSE-2.0\n8: //\n9: // Unless required by applicable law or agreed to in writing, software\n10: // distributed under the License is distributed on an \"AS IS\" BASIS,\n11: // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n12: // See the License for the specific language governing permissions and\n13: // limitations under the License.\n14: \n15: package com.google.devtools.build.lib.starlarkbuildapi;\n16: \n17: import com.google.devtools.build.docgen.annot.GlobalMethods;\n18: import com.google.devtools.build.docgen.annot.GlobalMethods.Environment;\n19: import com.google.devtools.build.docgen.annot.StarlarkConstructor;\n20: import com.google.devtools.build.lib.cmdline.Label;\n21: import com.google.devtools.build.lib.packages.semantics.BuildLanguageOptions;\n22: import com.google.devtools.build.lib.starlarkbuildapi.config.StarlarkConfigApi.BuildSettingApi;\n23: import net.starlark.java.annot.Param;\n24: import net.starlark.java.annot.ParamType;\n25: import net.starlark.java.annot.StarlarkMethod;\n26: import net.starlark.java.eval.Dict;\n27: import net.starlark.java.eval.EvalException;\n28: import net.starlark.java.eval.NoneType;\n29: import net.starlark.java.eval.Sequence;\n30: import net.starlark.java.eval.StarlarkCallab...
109assistantmcp__sourcegraph__sg_read_file
110usermcp__sourcegraph__sg_read_file
{"text":"URL: https://demo.sourcegraph.com/github.com/sg-evals/bazel--8.0.0@12f256c9dffb17d03d47b3f06bf34f67c976e4aa/-/blob/src/main/java/com/google/devtools/build/lib/packages/MacroClass.java%3FL1-80\n1: // Copyright 2024 The Bazel Authors. All rights reserved.\n2: //\n3: // Licensed under the Apache License, Version 2.0 (the \"License\");\n4: // you may not use this file except in compliance with the License.\n5: // You may obtain a copy of the License at\n6: //\n7: //    http://www.apache.org/licenses/LICENSE-2.0\n8: //\n9: // Unless required by applicable law or agreed to in writing, software\n10: // distributed under the License is distributed on an \"AS IS\" BASIS,\n11: // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n12: // See the License for the specific language governing permissions and\n13: // limitations under the License.\n14: \n15: package com.google.devtools.build.lib.packages;\n16: \n17: import static com.google.common.collect.ImmutableList.toImmutableList;\n18: import static com.google.devtools.build.lib.packages.BuildType.NODEP_LABEL_LIST;\n19: \n20: import com.google.common.base.Preconditions;\n21: import com.google.common.collect.ImmutableList;\n22: import com.google.common.collect.ImmutableMap;\n23: import com.google.common.collect.ImmutableSet;\n24: import com.google.common.collect.Lists;\n25: import com.google.devtools.build.lib.cmdline.Label;\n26: import com.google.devtools.build.lib.cmdline.PackageIdentifier;\n27: import com.google.devtools.build.lib.events.Event;\n28: import com.google.devtools.build.lib.packages.TargetRecorder.MacroFrame;\n29: import com.google.devtools.build.lib.packages.TargetRecorder.NameConflictException;\n30: import com.google.devtools.build.lib.server.FailureDetails.PackageLoading.Code;\n31: ...
111assistantmcp__sourcegraph__sg_read_file
112usermcp__sourcegraph__sg_read_file
{"text":"URL: https://demo.sourcegraph.com/github.com/sg-evals/bazel--8.0.0@12f256c9dffb17d03d47b3f06bf34f67c976e4aa/-/blob/src/main/java/com/google/devtools/build/lib/packages/BzlInitThreadContext.java%3FL1-60\n1: // Copyright 2022 The Bazel Authors. All rights reserved.\n2: //\n3: // Licensed under the Apache License, Version 2.0 (the \"License\");\n4: // you may not use this file except in compliance with the License.\n5: // You may obtain a copy of the License at\n6: //\n7: //    http://www.apache.org/licenses/LICENSE-2.0\n8: //\n9: // Unless required by applicable law or agreed to in writing, software\n10: // distributed under the License is distributed on an \"AS IS\" BASIS,\n11: // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n12: // See the License for the specific language governing permissions and\n13: // limitations under the License.\n14: \n15: package com.google.devtools.build.lib.packages;\n16: \n17: import com.google.common.collect.ImmutableMap;\n18: import com.google.devtools.build.lib.analysis.RuleDefinitionEnvironment;\n19: import com.google.devtools.build.lib.cmdline.Label;\n20: import com.google.devtools.build.lib.cmdline.RepositoryMapping;\n21: import com.google.devtools.build.lib.cmdline.RepositoryName;\n22: import com.google.devtools.build.lib.cmdline.StarlarkThreadContext;\n23: import com.google.errorprone.annotations.CanIgnoreReturnValue;\n24: import java.util.Optional;\n25: import javax.annotation.Nullable;\n26: import net.starlark.java.eval.EvalException;\n27: import net.starlark.java.eval.Starlark;\n28: import net.starlark.java.eval.StarlarkThread;\n29: \n30: /**\n31:  * Bazel application data for the Starlark thread that evaluates the top-level code in a .bzl (or\n32:  * .scl) module (i.e. when evaluating that mod...
113system-
114system-
115system-
116system-
117assistant-
Let me also look at the `net/starlark` directory structure and check a few more files:
118assistantmcp__sourcegraph__sg_list_files
119usermcp__sourcegraph__sg_list_files
{"text":"src/main/java/net/starlark/java/annot/\nsrc/main/java/net/starlark/java/cmd/\nsrc/main/java/net/starlark/java/eval/\nsrc/main/java/net/starlark/java/lib/\nsrc/main/java/net/starlark/java/spelling/\nsrc/main/java/net/starlark/java/syntax/\nsrc/main/java/net/starlark/java/BUILD\n"}
120assistantmcp__sourcegraph__sg_read_file
121usermcp__sourcegraph__sg_read_file
{"text":"URL: https://demo.sourcegraph.com/github.com/sg-evals/bazel--8.0.0@12f256c9dffb17d03d47b3f06bf34f67c976e4aa/-/blob/src/main/java/com/google/devtools/build/lib/packages/StarlarkGlobals.java%3FL1-80\n1: // Copyright 2023 The Bazel Authors. All rights reserved.\n2: //\n3: // Licensed under the Apache License, Version 2.0 (the \"License\");\n4: // you may not use this file except in compliance with the License.\n5: // You may obtain a copy of the License at\n6: //\n7: //    http://www.apache.org/licenses/LICENSE-2.0\n8: //\n9: // Unless required by applicable law or agreed to in writing, software\n10: // distributed under the License is distributed on an \"AS IS\" BASIS,\n11: // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n12: // See the License for the specific language governing permissions and\n13: // limitations under the License.\n14: \n15: package com.google.devtools.build.lib.packages;\n16: \n17: import com.google.common.collect.ImmutableMap;\n18: \n19: /**\n20:  * A library of the fixed Starlark environment for various contexts.\n21:  *\n22:  * <p>This is the source of truth for what symbols are available in what Starlark contexts (BUILD,\n23:  * .bzl, etc.), before considering how symbols may be added by registering them on the rule class\n24:  * provider, or how symbols may be substituted by builtins injection. In other words, this is the\n25:  * starting point for defining the minimum Starlark environments that Bazel supports for BUILD\n26:  * files, .bzl files, etc. See {@link BazelStarlarkEnvironment} for the final determination of the\n27:  * environment after accounting for registered symbols and builtins injection.\n28:  *\n29:  * <p>This is split between an interface in the lib/packages/ directory and an implementation ...
122system-
123system-
124system-
125assistant-
Let me find the StarlarkGlobals implementation:
126assistantmcp__sourcegraph__sg_keyword_search
127usermcp__sourcegraph__sg_keyword_search
{"text":"# github.com/sg-evals/bazel--8.0.0 – src/main/java/com/google/devtools/build/lib/analysis/starlark/StarlarkGlobalsImpl.java\n41:  */\n42: public final class StarlarkGlobalsImpl implements StarlarkGlobals {\n43: \n44: \n"}
128assistantmcp__sourcegraph__sg_keyword_search
129usermcp__sourcegraph__sg_keyword_search
{"text":"No results.\n\nNo results found."}
130system-
131system-
132system-
133system-
134assistant-
Now I have a comprehensive picture. Let me write the `answer.json` file with all findings:
135assistantWrite
136userWrite
File created successfully at: /workspace/answer.json (file state is current in your context — no need to Read it back)
137assistant-
The `answer.json` file has been written. Here's a summary of what was found:

## Key Files for Starlark BUILD Evaluation in Bazel 8.0.0

### StarlarkThread (environment setup)
- **`src/main/java/net/starlark/java/eval/StarlarkThread.java`** — `StarlarkThread` class: the execution thread holding the call stack, mutability, thread-locals. Callers attach context objects like `Package.Builder` via `setThreadLocal`.

### PackageFactory (invokes Starlark evaluation)
- **`src/main/java/com/google/devtools/build/lib/packages/PackageFactory.java`** — `PackageFactory` class: constructs `Package` instances from BUILD file ASTs via `executeBuildFile()`.

### BzlLoadFunction (.bzl file loading)
- **`src/main/java/com/google/devtools/build/lib/skyframe/BzlLoadFunction.java`** — `BzlLoadFunction` class: Skyframe function loading .bzl/.scl modules, setting up `StarlarkThread` with `BzlInitThreadContext`.

### rule() and macro() builtins
- **`src/main/java/com/google/devtools/build/lib/starlarkbuildapi/StarlarkRuleFunctionsApi.java`** — API interface declaring `rule()` and `macro()` `@StarlarkMethod`s.
- **`src/main/java/com/google/devtools/build/lib/analysis/starlark/StarlarkRuleClassFunctions.java`** — `StarlarkRuleClassFunctions` implements `StarlarkRuleFunctionsApi`; contains `rule()` and `macro()` implementations.
- **`src/main/java/com/google/devtools/build/lib/packages/MacroClass.java`** — `MacroClass`: the macro schema + implementation (analogous to `RuleClass`).
- **`src/main/java/com/google/devtools/build/lib/packages/RuleFunction.java`** / **`RuleClass.java`** / **`RuleFactory.java`** — rule callable interface, rule schema, and rule instantiation.

### Package.Builder (accumulates targets)
- **`src/main/java/com/google/devtools/build/lib/packages/Package.java`** — inner class...
Tool calls (34)
1. ToolSearch

Input

{
  "query": "select:mcp__sourcegraph__sg_keyword_search,mcp__sourcegraph__sg_read_file,mcp__sourcegraph__sg_list_files,mcp__sourcegraph__sg_nls_search",
  "max_results": 4
}

Output

{'matches': ['mcp__sourcegraph__sg_keyword_search', 'mcp__sourcegraph__sg_read_file', 'mcp__sourcegraph__sg_list_files', 'mcp__sourcegraph__sg_nls_search'], 'query': 'select:mcp__sourcegraph__sg_keyword_search,mcp__sourcegraph__sg_read_file,mcp__sourcegraph__sg_list_files,mcp__sourcegraph__sg_nls_search', 'total_deferred_tools': 33}
2. mcp__sourcegraph__sg_keyword_search

Input

{
  "query": "repo:^github.com/sg-evals/bazel--8.0.0$ StarlarkThread file:src/main/java"
}

Output

{'content': '{"text":"# github.com/sg-evals/bazel--8.0.0 – src/main/java/net/starlark/java/eval/StarlarkThread.java\\n46:  */\\n47: public final class StarlarkThread {\\n48: \\n49: \\n431: \\n432:   private StarlarkThread(\\n433:       Mutability mu,\\n434: \\n28: /**\\n29:  * An StarlarkThread represents a Starlark thread.\\n30:  *\\n31: \\n\\n# github.com/sg-evals/bazel--8.0.0 – src/main/java/com/google/devtools/build/lib/analysis/RuleContext.java\\n185:    */\\n186:   private final StarlarkThread starlarkThread;\\n187: \\n188: \\n977: \\n978:   private StarlarkThread createStarlarkThread(Mutability mutability) {\\n979:     AnalysisEnvironment env = getAnalysisEnvironment();\\n980:     StarlarkThread thread =\\n981:         StarlarkThread.create(\\n982:             mutability, env.getStarlarkSemantics(), getLabel().toString(), getSymbolGenerator());\\n983: \\n987: \\n988:   public StarlarkThread getStarlarkThread() {\\n989:     return starlarkThread;\\n990:   }\\n991: \\n\\n# github.com/sg-evals/bazel--8.0.0 – src/main/java/com/google/devtools/build/lib/profiler/memory/AllocationTracker.java\\n51: \\n52:   // A mapping from Java thread to StarlarkThread.\\n53:   // Used to effect a hidden StarlarkThread parameter to sampleAllocation.\\n54:   // TODO(adonovan): opt: merge the three different ThreadLocals in use here.\\n55:   private final ThreadLocal<StarlarkThread> starlarkThread = new ThreadLocal<>();\\n56: \\n57: \\n43: import net.starlark.java.eval.StarlarkCallable;\\n44: import net.starlark.java.eval.StarlarkThread;\\n45: import net.starlark.java.syntax.Location;\\n46: \\n57:   @Override\\n58:   public void onPushFirst(StarlarkThread thread) {\\n59:     starlarkThread.set(thread);\\n60:   }\\n61: \\n\\n# github.com/sg-evals/bazel--8.0.0 – src/main/java/com/google/devtools/build/lib/cmdline/StarlarkThreadContext.java\\n34:  */\\n35: public abstract class StarlarkThreadContext {\\n36:   // TODO: decide the extent to which we should enforce that such a context object is available\\n37: \\n60:    */\\n61:   protected StarlarkThreadContext(\\n62:       @Nullable InterruptibleSupplier<RepositoryMapping> mainRepoMappingSupplier) {\\n63: \\n18: import javax.annotation.Nullable;\\n19: import net.starlark.java.eval.StarlarkThread;\\n20: \\n21: \\n\\n# github.com/sg-evals/bazel--8.0.0 – src/main/java/net/starlark/java/eval/CpuProfiler.java\\n122:   @Nullable\\n123:   static StarlarkThread setStarlarkThread(StarlarkThread thread) {\\n124:     if (thread == null) {\\n125: \\n59: // Reading from the other end of the pipe is a Java thread, the router.\\n60: // Its job is to map each OS tid to a StarlarkThread, if the\\n61: // thread is currently executing Starlark code, and increment\\n62: // a volatile counter in that StarlarkThread. If the thread is\\n63: // not executing Starlark code, the router discards the event.\\n64: \\n64: // When a Starlark thread enters or leaves a function during profiling,\\n65: // it updates the StarlarkThread-to-OS-thread mapping consulted by the\\n66: // router.\\n67: \\n\\n# github.com/sg-evals/bazel--8.0.0 – src/main/java/net/starlark/java/annot/StarlarkMethod.java\\n180:    */\\n181:   boolean useStarlarkThread() default false;\\n182: \\n183: \\n50:  *             {@code extraKeywords};\\n51:  *         <li>a {@code StarlarkThread}, if {@code useStarlarkThread};\\n52:  *         <li>a {@code StarlarkSemantics}, if {@code useStarlarkSemantics}.\\n53: \\n174:   /**\\n175:    * If true, the StarlarkThread will be passed as an argument of the annotated function. (Thus, the\\n176:    * annotated method signature must contain StarlarkThread as a parameter. See the interface-level\\n177:    * javadoc for details.)\\n178: \\n\\n# github.com/sg-evals/bazel--8.0.0 – src/main/java/net/starlark/java/eval/MethodDescriptor.java\\n256: \\n257:   /** @see StarlarkMethod#useStarlarkThread() */\\n258:   boolean isUseStarlarkThread() {\\n259:     return useStarlarkThread;\\n260:   }\\n261: \\n48:   private final boolea...
3. mcp__sourcegraph__sg_keyword_search

Input

{
  "query": "repo:^github.com/sg-evals/bazel--8.0.0$ PackageFactory file:src/main/java"
}

Output

{'content': '{"text":"# github.com/sg-evals/bazel--8.0.0 – src/main/java/com/google/devtools/build/lib/packages/PackageFactory.java\\n79:  */\\n80: public final class PackageFactory {\\n81:   private static final GoogleLogger logger = GoogleLogger.forEnclosingClass();\\n82: \\n143:   // so WorkspaceFactory can add an extra top-level builtin.\\n144:   public PackageFactory(\\n145:       RuleClassProvider ruleClassProvider,\\n146: \\n76:  *\\n77:  * <p>A PackageFactory is a heavy-weight object; create them sparingly. Typically only one is needed\\n78:  * per client application.\\n79: \\n\\n# github.com/sg-evals/bazel--8.0.0 – src/main/java/com/google/devtools/build/lib/runtime/BlazeRuntime.java\\n167: \\n168:   private final PackageFactory packageFactory;\\n169:   private final ConfiguredRuleClassProvider ruleClassProvider;\\n170: \\n546:   /** Returns the package factory. */\\n547:   public PackageFactory getPackageFactory() {\\n548:     return packageFactory;\\n549:   }\\n550: \\n58: import com.google.devtools.build.lib.packages.Package.Builder.PackageSettings;\\n59: import com.google.devtools.build.lib.packages.PackageFactory;\\n60: import com.google.devtools.build.lib.packages.PackageLoadingListener;\\n61: \\n\\n# github.com/sg-evals/bazel--8.0.0 – src/main/java/com/google/devtools/build/lib/skyframe/PackageFunction.java\\n105: \\n106:   protected final PackageFactory packageFactory;\\n107:   protected final CachingPackageLocator packageLocator;\\n108: \\n1304:   public static final class Builder {\\n1305:     @Nullable private PackageFactory packageFactory;\\n1306:     @Nullable private CachingPackageLocator pkgLocator;\\n1307: \\n1319:     @CanIgnoreReturnValue\\n1320:     public Builder setPackageFactory(PackageFactory packageFactory) {\\n1321:       this.packageFactory = packageFactory;\\n1322:       return this;\\n1323: \\n\\n# github.com/sg-evals/bazel--8.0.0 – src/main/java/com/google/devtools/build/lib/skyframe/WorkspaceFileFunction.java\\n80: \\n81:   private final PackageFactory packageFactory;\\n82:   private final BlazeDirectories directories;\\n83: \\n38: import com.google.devtools.build.lib.packages.Package;\\n39: import com.google.devtools.build.lib.packages.PackageFactory;\\n40: import com.google.devtools.build.lib.packages.RuleClassProvider;\\n41: \\n88:       RuleClassProvider ruleClassProvider,\\n89:       PackageFactory packageFactory,\\n90:       BlazeDirectories directories,\\n91: \\n\\n# github.com/sg-evals/bazel--8.0.0 – src/main/java/com/google/devtools/build/lib/skyframe/packages/PackageFactoryBuilderWithSkyframeForTesting.java\\n27:  */\\n28: public abstract class PackageFactoryBuilderWithSkyframeForTesting\\n29:     extends PackageFactory.BuilderForTesting {\\n30:   protected ImmutableMap<SkyFunctionName, SkyFunction> extraSkyFunctions = ImmutableMap.of();\\n31: \\n17: import com.google.common.collect.ImmutableMap;\\n18: import com.google.devtools.build.lib.packages.PackageFactory;\\n19: import com.google.devtools.build.lib.skyframe.PrecomputedValue;\\n20: \\n24: /**\\n25:  * A {@link PackageFactory.BuilderForTesting} that also allows specification of some skyframe\\n26:  * details.\\n27: \\n\\n# github.com/sg-evals/bazel--8.0.0 – src/main/java/com/google/devtools/build/lib/packages/Type.java\\n133: \\n134:   // TODO(bazel-team): Check external calls (e.g. in PackageFactory), verify they always want\\n135:   // this over selectableConvert.\\n136: \\n\\n# github.com/sg-evals/bazel--8.0.0 – src/main/java/com/google/devtools/build/lib/packages/Package.java\\n1055:   /**\\n1056:    * A builder for {@link Package} objects. Only intended to be used by {@link PackageFactory} and\\n1057:    * {@link com.google.devtools.build.lib.skyframe.PackageFunction}.\\n1058: \\n\\n# github.com/sg-evals/bazel--8.0.0 – src/main/java/com/google/devtools/build/lib/packages/GlobCache.java\\n252:    *\\n253:    * <p>Called by PackageFactory via Package.\\n254:    */\\n255: \\n\\n# github.com/sg-evals/bazel--8.0.0 – src/mai...
4. mcp__sourcegraph__sg_keyword_search

Input

{
  "query": "repo:^github.com/sg-evals/bazel--8.0.0$ BzlLoadFunction file:src/main/java"
}

Output

{'content': '{"text":"# github.com/sg-evals/bazel--8.0.0 – src/main/java/com/google/devtools/build/lib/skyframe/BzlLoadFunction.java\\n107:  */\\n108: public class BzlLoadFunction implements SkyFunction {\\n109: \\n110: \\n128: \\n129:   private BzlLoadFunction(\\n130:       RuleClassProvider ruleClassProvider,\\n131: \\n1693: \\n1694:   private static final class BzlLoadFunctionException extends SkyFunctionException {\\n1695:     private BzlLoadFunctionException(BzlLoadFailedException cause) {\\n1696:       super(cause, cause.getTransience());\\n1697: \\n\\n# github.com/sg-evals/bazel--8.0.0 – src/main/java/com/google/devtools/build/lib/skyframe/SkyframeExecutor.java\\n885: \\n886:   protected SkyFunction newBzlLoadFunction(RuleClassProvider ruleClassProvider) {\\n887:     return BzlLoadFunction.create(\\n888:         ruleClassProvider, directories, getDigestFunction().getHashFunction(), bzlCompileCache);\\n889: \\n881:   @Nullable\\n882:   protected BzlLoadFunction getBzlLoadFunctionForInliningPackageAndWorkspaceNodes() {\\n883:     return null;\\n884: \\n369:   // Cache of parsed bzl files, for use when we\'re inlining BzlCompileFunction in\\n370:   // BzlLoadFunction. See the comments in BzlLoadFunction for motivations and details.\\n371:   private final Cache<BzlCompileValue.Key, BzlCompileValue> bzlCompileCache =\\n372: \\n\\n# github.com/sg-evals/bazel--8.0.0 – src/main/java/com/google/devtools/build/lib/skyframe/PackageFunction.java\\n112:   // Not final only for testing.\\n113:   @Nullable private BzlLoadFunction bzlLoadFunctionForInlining;\\n114: \\n115: \\n1308:     private AtomicInteger numPackagesSuccessfullyLoaded = new AtomicInteger(0);\\n1309:     @Nullable private BzlLoadFunction bzlLoadFunctionForInlining;\\n1310:     @Nullable private PackageProgressReceiver packageProgress;\\n1311: \\n196: \\n197:   public void setBzlLoadFunctionForInliningForTesting(BzlLoadFunction bzlLoadFunctionForInlining) {\\n198:     this.bzlLoadFunctionForInlining = bzlLoadFunctionForInlining;\\n199:   }\\n200: \\n\\n# github.com/sg-evals/bazel--8.0.0 – src/main/java/com/google/devtools/build/lib/skyframe/WorkspaceFileFunction.java\\n83:   private final RuleClassProvider ruleClassProvider;\\n84:   private final BzlLoadFunction bzlLoadFunctionForInlining;\\n85:   private static final PackageIdentifier rootPackage = PackageIdentifier.createInMainRepo(\\"\\");\\n86: \\n90:       BlazeDirectories directories,\\n91:       BzlLoadFunction bzlLoadFunctionForInlining) {\\n92:     this.packageFactory = packageFactory;\\n93: \\n94:     this.ruleClassProvider = ruleClassProvider;\\n95:     this.bzlLoadFunctionForInlining = bzlLoadFunctionForInlining;\\n96:   }\\n97: \\n\\n# github.com/sg-evals/bazel--8.0.0 – src/main/java/net/starlark/java/eval/Eval.java\\n86: \\n87:       // Hack for BzlLoadFunction\'s \\"export\\" semantics.\\n88:       // We enable it only for statements outside any function (isToplevelFunction)\\n89: \\n\\n# github.com/sg-evals/bazel--8.0.0 – src/main/java/net/starlark/java/eval/StarlarkThread.java\\n450:    * <p>This is a short-term hack to allow us to consolidate all StarlarkFile execution in one place\\n451:    * even while BzlLoadFunction implements the old \\"export\\" behavior, in which rules, aspects and\\n452:    * providers are \\"exported\\" as soon as they are assigned, not at the end of file execution.\\n453: \\n\\n# github.com/sg-evals/bazel--8.0.0 – src/main/java/com/google/devtools/build/lib/skyframe/BUILD\\n33:         \\"BuildTopLevelAspectsDetailsFunction.java\\",\\n34:         \\"BzlLoadFunction.java\\",\\n35:         \\"BzlmodRepoRuleFunction.java\\",\\n36: \\n\\n# github.com/sg-evals/bazel--8.0.0 – src/main/java/com/google/devtools/build/lib/skyframe/BzlLoadValue.java\\n139:     // The alternative is to use a separate key type just for .scl, but that complicates repo logic;\\n140:     // see BzlLoadFunction#getRepositoryMapping.\\n141:     final boolean isSclDialect() {\\n142: \\n332:    * <p>This kind ...
5. mcp__sourcegraph__sg_keyword_search

Input

{
  "query": "repo:^github.com/sg-evals/bazel--8.0.0$ \"Package.Builder\" file:src/main/java"
}

Output

{'content': '{"text":"# github.com/sg-evals/bazel--8.0.0 – src/main/java/com/google/devtools/build/lib/packages/WorkspaceGlobals.java\\n108:     // Add to the package definition for later.\\n109:     Package.Builder builder =\\n110:         Package.Builder.fromOrFailAllowWorkspaceOnly(thread, \\"register_execution_platforms()\\");\\n111:     List<String> patterns = Sequence.cast(platformLabels, String.class, \\"platform_labels\\");\\n112: \\n118:     // Add to the package definition for later.\\n119:     Package.Builder builder =\\n120:         Package.Builder.fromOrFailAllowWorkspaceOnly(thread, \\"register_toolchains()\\");\\n121:     List<String> patterns = Sequence.cast(toolchainLabels, String.class, \\"toolchain_labels\\");\\n122: \\n156:     try {\\n157:       Package.Builder builder = Package.Builder.fromOrFailAllowWorkspaceOnly(thread, \\"bind()\\");\\n158:       RuleClass ruleClass = ruleClassMap.get(\\"bind\\");\\n159: \\n\\n# github.com/sg-evals/bazel--8.0.0 – src/main/java/com/google/devtools/build/lib/packages/PackageCallable.java\\n51:       throws EvalException {\\n52:     Package.Builder pkgBuilder = Package.Builder.fromOrFailAllowBuildOnly(thread, \\"package()\\");\\n53:     if (pkgBuilder.isPackageFunctionUsed()) {\\n54: \\n76:   protected void processParam(\\n77:       String name, Object rawValue, Package.Builder pkgBuilder, PackageArgs.Builder pkgArgsBuilder)\\n78:       throws EvalException {\\n79: \\n\\n# github.com/sg-evals/bazel--8.0.0 – src/main/java/com/google/devtools/build/lib/packages/BuildGlobals.java\\n117:       throws EvalException {\\n118:     Package.Builder pkgBuilder = Package.Builder.fromOrFailAllowBuildOnly(thread, \\"licenses()\\");\\n119:     try {\\n120: \\n76:       throws EvalException {\\n77:     Package.Builder pkgBuilder =\\n78:         Package.Builder.fromOrFailAllowBuildOnly(thread, \\"environment_group()\\");\\n79:     List<Label> environments =\\n80: \\n\\n# github.com/sg-evals/bazel--8.0.0 – src/main/java/com/google/devtools/build/lib/packages/WorkspaceFactoryHelper.java\\n131:   static void addBindRule(\\n132:       Package.Builder pkg,\\n133:       RuleClass bindRuleClass,\\n134: \\n45:   public static Rule createAndAddRepositoryRule(\\n46:       Package.Builder pkgBuilder,\\n47:       RuleClass ruleClass,\\n48: \\n100:   public static void addRepoMappings(\\n101:       Package.Builder builder, Map<String, Object> kwargs, String externalRepoName)\\n102:       throws EvalException, LabelSyntaxException {\\n103: \\n\\n# github.com/sg-evals/bazel--8.0.0 – src/main/java/com/google/devtools/build/lib/skyframe/PackageFunctionWithoutGlobDeps.java\\n65:   private static final class LoadedPackageWithoutDeps extends LoadedPackage {\\n66:     LoadedPackageWithoutDeps(Package.Builder builder, long loadTimeNanos) {\\n67:       super(builder, loadTimeNanos);\\n68: \\n91:   protected LoadedPackage newLoadedPackage(\\n92:       Package.Builder packageBuilder, @Nullable Globber globber, long loadTimeNanos) {\\n93:     return new LoadedPackageWithoutDeps(packageBuilder, loadTimeNanos);\\n94: \\n\\n# github.com/sg-evals/bazel--8.0.0 – src/main/java/com/google/devtools/build/lib/packages/RuleFactory.java\\n54:   public static Rule createRule(\\n55:       Package.Builder pkgBuilder,\\n56:       RuleClass ruleClass,\\n57: \\n133:   public static Rule createAndAddRule(\\n134:       Package.Builder pkgBuilder,\\n135:       RuleClass ruleClass,\\n136: \\n234:   private static String getGeneratorName(\\n235:       Package.Builder pkgBuilder,\\n236:       BuildLangTypedAttributeValuesMap args,\\n237: \\n\\n# github.com/sg-evals/bazel--8.0.0 – src/main/java/com/google/devtools/build/lib/packages/WorkspaceFactory.java\\n70:   public WorkspaceFactory(\\n71:       Package.Builder builder,\\n72:       RuleClassProvider ruleClassProvider,\\n73: \\n246:         try {\\n247:           Package.Builder builder =\\n248:               Package.Builder.fromOrFailAllowWorkspaceOnly(thread, \\"repository rules\\");...
6. mcp__sourcegraph__sg_keyword_search

Input

{
  "query": "repo:^github.com/sg-evals/bazel--8.0.0$ \"class StarlarkRuleFunction\" file:src/main/java/com/google/devtools/build/lib/packages"
}

Output

{'content': '{"text":"No results.\\n\\nNo results found."}', 'structuredContent': {'text': 'No results.\n\nNo results found.'}}
7. mcp__sourcegraph__sg_keyword_search

Input

{
  "query": "repo:^github.com/sg-evals/bazel--8.0.0$ \"class MacroFunction\" OR \"def rule\" OR \"macro builtin\" file:src/main/java/com/google/devtools/build/lib/packages"
}

Output

{'content': '{"text":"No results.\\n\\nNo results found."}', 'structuredContent': {'text': 'No results.\n\nNo results found.'}}
8. mcp__sourcegraph__sg_list_files

Input

{
  "repo": "github.com/sg-evals/bazel--8.0.0",
  "path": "src/main/java/com/google/devtools/build/lib/packages"
}

Output

{'content': '{"text":"src/main/java/com/google/devtools/build/lib/packages/metrics/\\nsrc/main/java/com/google/devtools/build/lib/packages/producers/\\nsrc/main/java/com/google/devtools/build/lib/packages/semantics/\\nsrc/main/java/com/google/devtools/build/lib/packages/AbstractAttributeMapper.java\\nsrc/main/java/com/google/devtools/build/lib/packages/AdvertisedProviderSet.java\\nsrc/main/java/com/google/devtools/build/lib/packages/AggregatingAttributeMapper.java\\nsrc/main/java/com/google/devtools/build/lib/packages/AllowlistChecker.java\\nsrc/main/java/com/google/devtools/build/lib/packages/Aspect.java\\nsrc/main/java/com/google/devtools/build/lib/packages/AspectClass.java\\nsrc/main/java/com/google/devtools/build/lib/packages/AspectDefinition.java\\nsrc/main/java/com/google/devtools/build/lib/packages/AspectDescriptor.java\\nsrc/main/java/com/google/devtools/build/lib/packages/AspectParameters.java\\nsrc/main/java/com/google/devtools/build/lib/packages/AspectsList.java\\nsrc/main/java/com/google/devtools/build/lib/packages/Attribute.java\\nsrc/main/java/com/google/devtools/build/lib/packages/AttributeFormatter.java\\nsrc/main/java/com/google/devtools/build/lib/packages/AttributeMap.java\\nsrc/main/java/com/google/devtools/build/lib/packages/AttributeTransitionData.java\\nsrc/main/java/com/google/devtools/build/lib/packages/AttributeValueSource.java\\nsrc/main/java/com/google/devtools/build/lib/packages/AutoloadSymbols.java\\nsrc/main/java/com/google/devtools/build/lib/packages/BUILD\\nsrc/main/java/com/google/devtools/build/lib/packages/BazelStarlarkEnvironment.java\\nsrc/main/java/com/google/devtools/build/lib/packages/BuildFileContainsErrorsException.java\\nsrc/main/java/com/google/devtools/build/lib/packages/BuildFileName.java\\nsrc/main/java/com/google/devtools/build/lib/packages/BuildFileNotFoundException.java\\nsrc/main/java/com/google/devtools/build/lib/packages/BuildGlobals.java\\nsrc/main/java/com/google/devtools/build/lib/packages/BuildSetting.java\\nsrc/main/java/com/google/devtools/build/lib/packages/BuildType.java\\nsrc/main/java/com/google/devtools/build/lib/packages/BuilderFactoryForTesting.java\\nsrc/main/java/com/google/devtools/build/lib/packages/BuiltinProvider.java\\nsrc/main/java/com/google/devtools/build/lib/packages/BuiltinRestriction.java\\nsrc/main/java/com/google/devtools/build/lib/packages/BuiltinsInternalModule.java\\nsrc/main/java/com/google/devtools/build/lib/packages/BzlInitThreadContext.java\\nsrc/main/java/com/google/devtools/build/lib/packages/BzlVisibility.java\\nsrc/main/java/com/google/devtools/build/lib/packages/CachingPackageLocator.java\\nsrc/main/java/com/google/devtools/build/lib/packages/CallStack.java\\nsrc/main/java/com/google/devtools/build/lib/packages/ConfigurationFragmentPolicy.java\\nsrc/main/java/com/google/devtools/build/lib/packages/ConfiguredAttributeMapper.java\\nsrc/main/java/com/google/devtools/build/lib/packages/DefaultSetting.java\\nsrc/main/java/com/google/devtools/build/lib/packages/DelegatingAttributeMapper.java\\nsrc/main/java/com/google/devtools/build/lib/packages/DependencyFilter.java\\nsrc/main/java/com/google/devtools/build/lib/packages/DotBazelFileSyntaxChecker.java\\nsrc/main/java/com/google/devtools/build/lib/packages/EnumFilterConverter.java\\nsrc/main/java/com/google/devtools/build/lib/packages/EnvironmentGroup.java\\nsrc/main/java/com/google/devtools/build/lib/packages/EnvironmentLabels.java\\nsrc/main/java/com/google/devtools/build/lib/packages/ErrorDeterminingRepositoryException.java\\nsrc/main/java/com/google/devtools/build/lib/packages/ExecGroup.java\\nsrc/main/java/com/google/devtools/build/lib/packages/FileTarget.java\\nsrc/main/java/com/google/devtools/build/lib/packages/FunctionSplitTransitionAllowlist.java\\nsrc/main/java/com/google/devtools/build/lib/packages/GlobCache.java\\nsrc/main/java/com/google/devtools/build/lib/packages/Globber.java\\nsrc/main/java/com/google/devtools/build/lib/packages/GlobberUtils.java\\nsrc/main/java/com/google/de...
9. mcp__sourcegraph__sg_list_files

Input

{
  "repo": "github.com/sg-evals/bazel--8.0.0",
  "path": "src/main/java/net/starlark/java/eval"
}

Output

{'content': '{"text":"src/main/java/net/starlark/java/eval/BUILD\\nsrc/main/java/net/starlark/java/eval/BuiltinFunction.java\\nsrc/main/java/net/starlark/java/eval/CallUtils.java\\nsrc/main/java/net/starlark/java/eval/CpuProfiler.java\\nsrc/main/java/net/starlark/java/eval/Debug.java\\nsrc/main/java/net/starlark/java/eval/Dict.java\\nsrc/main/java/net/starlark/java/eval/Eval.java\\nsrc/main/java/net/starlark/java/eval/EvalException.java\\nsrc/main/java/net/starlark/java/eval/EvalUtils.java\\nsrc/main/java/net/starlark/java/eval/FlagGuardedValue.java\\nsrc/main/java/net/starlark/java/eval/FormatParser.java\\nsrc/main/java/net/starlark/java/eval/GuardedValue.java\\nsrc/main/java/net/starlark/java/eval/HasBinary.java\\nsrc/main/java/net/starlark/java/eval/ImmutableSingletonStarlarkList.java\\nsrc/main/java/net/starlark/java/eval/ImmutableStarlarkList.java\\nsrc/main/java/net/starlark/java/eval/JNI.java\\nsrc/main/java/net/starlark/java/eval/LazyImmutableStarlarkList.java\\nsrc/main/java/net/starlark/java/eval/MethodDescriptor.java\\nsrc/main/java/net/starlark/java/eval/MethodLibrary.java\\nsrc/main/java/net/starlark/java/eval/Module.java\\nsrc/main/java/net/starlark/java/eval/Mutability.java\\nsrc/main/java/net/starlark/java/eval/MutableStarlarkList.java\\nsrc/main/java/net/starlark/java/eval/NoneType.java\\nsrc/main/java/net/starlark/java/eval/ParamDescriptor.java\\nsrc/main/java/net/starlark/java/eval/Printer.java\\nsrc/main/java/net/starlark/java/eval/RangeList.java\\nsrc/main/java/net/starlark/java/eval/RegularImmutableStarlarkList.java\\nsrc/main/java/net/starlark/java/eval/RegularTuple.java\\nsrc/main/java/net/starlark/java/eval/Sequence.java\\nsrc/main/java/net/starlark/java/eval/SingletonTuple.java\\nsrc/main/java/net/starlark/java/eval/Starlark.java\\nsrc/main/java/net/starlark/java/eval/StarlarkCallable.java\\nsrc/main/java/net/starlark/java/eval/StarlarkFloat.java\\nsrc/main/java/net/starlark/java/eval/StarlarkFunction.java\\nsrc/main/java/net/starlark/java/eval/StarlarkIndexable.java\\nsrc/main/java/net/starlark/java/eval/StarlarkInt.java\\nsrc/main/java/net/starlark/java/eval/StarlarkIterable.java\\nsrc/main/java/net/starlark/java/eval/StarlarkList.java\\nsrc/main/java/net/starlark/java/eval/StarlarkSemantics.java\\nsrc/main/java/net/starlark/java/eval/StarlarkThread.java\\nsrc/main/java/net/starlark/java/eval/StarlarkValue.java\\nsrc/main/java/net/starlark/java/eval/StringModule.java\\nsrc/main/java/net/starlark/java/eval/Structure.java\\nsrc/main/java/net/starlark/java/eval/SymbolGenerator.java\\nsrc/main/java/net/starlark/java/eval/Tuple.java\\nsrc/main/java/net/starlark/java/eval/cpu_profiler_posix.cc\\nsrc/main/java/net/starlark/java/eval/cpu_profiler_unimpl.cc\\n"}', 'structuredContent': {'text': 'src/main/java/net/starlark/java/eval/BUILD\nsrc/main/java/net/starlark/java/eval/BuiltinFunction.java\nsrc/main/java/net/starlark/java/eval/CallUtils.java\nsrc/main/java/net/starlark/java/eval/CpuProfiler.java\nsrc/main/java/net/starlark/java/eval/Debug.java\nsrc/main/java/net/starlark/java/eval/Dict.java\nsrc/main/java/net/starlark/java/eval/Eval.java\nsrc/main/java/net/starlark/java/eval/EvalException.java\nsrc/main/java/net/starlark/java/eval/EvalUtils.java\nsrc/main/java/net/starlark/java/eval/FlagGuardedValue.java\nsrc/main/java/net/starlark/java/eval/FormatParser.java\nsrc/main/java/net/starlark/java/eval/GuardedValue.java\nsrc/main/java/net/starlark/java/eval/HasBinary.java\nsrc/main/java/net/starlark/java/eval/ImmutableSingletonStarlarkList.java\nsrc/main/java/net/starlark/java/eval/ImmutableStarlarkList.java\nsrc/main/java/net/starlark/java/eval/JNI.java\nsrc/main/java/net/starlark/java/eval/LazyImmutableStarlarkList.java\nsrc/main/java/net/starlark/java/eval/MethodDescriptor.java\nsrc/main/java/net/starlark/java/eval/MethodLibrary.java\nsrc/main/java/net/starlark/java/eval/Module.java\nsrc/main/java/net/starlark/java/eval/Mutability.java\nsrc/main/java/net/starlark/java/eval/MutableStarlarkList.java\nsrc/mai...
10. mcp__sourcegraph__sg_keyword_search

Input

{
  "query": "repo:^github.com/sg-evals/bazel--8.0.0$ \"class RuleFunction\" file:src/main/java/com/google/devtools/build/lib/packages"
}

Output

{'content': '{"text":"No results.\\n\\nNo results found."}', 'structuredContent': {'text': 'No results.\n\nNo results found.'}}
11. mcp__sourcegraph__sg_keyword_search

Input

{
  "query": "repo:^github.com/sg-evals/bazel--8.0.0$ \"macro(\" file:src/main/java/com/google/devtools/build/lib/packages/StarlarkGlobals.java"
}

Output

{'content': '{"text":"No results.\\n\\nNo results found."}', 'structuredContent': {'text': 'No results.\n\nNo results found.'}}
12. mcp__sourcegraph__sg_keyword_search

Input

{
  "query": "repo:^github.com/sg-evals/bazel--8.0.0$ \"BazelStarlarkEnvironment\" file:src/main/java/com/google/devtools/build/lib/packages"
}

Output

{'content': '{"text":"# github.com/sg-evals/bazel--8.0.0 – src/main/java/com/google/devtools/build/lib/packages/RuleClassProvider.java\\n62:    */\\n63:   BazelStarlarkEnvironment getBazelStarlarkEnvironment();\\n64: \\n65: \\n59:   /**\\n60:    * Returns the {@link BazelStarlarkEnvironment}, which is the final determiner of the BUILD and\\n61:    * .bzl environment (with and without builtins injection).\\n62: \\n\\n# github.com/sg-evals/bazel--8.0.0 – src/main/java/com/google/devtools/build/lib/packages/BazelStarlarkEnvironment.java\\n119:    */\\n120:   public BazelStarlarkEnvironment(\\n121:       StarlarkGlobals starlarkGlobals,\\n122: \\n58:  */\\n59: public final class BazelStarlarkEnvironment {\\n60: \\n61: \\n103:   /**\\n104:    * Constructs a new {@code BazelStarlarkEnvironment} that will have complete knowledge of the\\n105:    * proper Starlark symbols available in each context, with and without injection.\\n106: \\n\\n# github.com/sg-evals/bazel--8.0.0 – src/main/java/com/google/devtools/build/lib/packages/StarlarkGlobals.java\\n25:  * starting point for defining the minimum Starlark environments that Bazel supports for BUILD\\n26:  * files, .bzl files, etc. See {@link BazelStarlarkEnvironment} for the final determination of the\\n27:  * environment after accounting for registered symbols and builtins injection.\\n28: \\n\\n# github.com/sg-evals/bazel--8.0.0 – src/main/java/com/google/devtools/build/lib/packages/WorkspaceFactory.java\\n85:     this.starlarkSemantics = starlarkSemantics;\\n86:     this.starlarkGlobals = ruleClassProvider.getBazelStarlarkEnvironment().getStarlarkGlobals();\\n87:     this.workspaceFunctions =\\n88: \\n303:   // TODO(b/280446865): Ideally the WORKSPACE environment would be determined by a method in\\n304:   // BazelStarlarkEnvironment. The method would accept the values of `__embedded_dir__`, etc., as\\n305:   // arguments, and defer to StarlarkGlobals to get the fixed environment (COMMON, select(), etc.).\\n306: \\n\\n# github.com/sg-evals/bazel--8.0.0 – src/main/java/com/google/devtools/build/lib/packages/AutoloadSymbols.java\\n175:     ImmutableMap<String, Object> originalBuildBzlEnv =\\n176:         ruleClassProvider.getBazelStarlarkEnvironment().getUninjectedBuildBzlEnv();\\n177: \\n178: \\n110:       ImmutableMap<String, Object> originalBuildBzlEnv =\\n111:           ruleClassProvider.getBazelStarlarkEnvironment().getUninjectedBuildBzlEnv();\\n112:       this.uninjectedBuildBzlEnvWithAutoloads = originalBuildBzlEnv;\\n113: \\n86: \\n87:   // The environment formed by taking BazelStarlarkEnvironment\'s bzl environment and adding/removing\\n88:   // autoloaded symbols. The values of any added symbols are set to None (i.e. not actually loaded).\\n89: \\n"}', 'structuredContent': {'text': "# github.com/sg-evals/bazel--8.0.0 – src/main/java/com/google/devtools/build/lib/packages/RuleClassProvider.java\n62:    */\n63:   BazelStarlarkEnvironment getBazelStarlarkEnvironment();\n64: \n65: \n59:   /**\n60:    * Returns the {@link BazelStarlarkEnvironment}, which is the final determiner of the BUILD and\n61:    * .bzl environment (with and without builtins injection).\n62: \n\n# github.com/sg-evals/bazel--8.0.0 – src/main/java/com/google/devtools/build/lib/packages/BazelStarlarkEnvironment.java\n119:    */\n120:   public BazelStarlarkEnvironment(\n121:       StarlarkGlobals starlarkGlobals,\n122: \n58:  */\n59: public final class BazelStarlarkEnvironment {\n60: \n61: \n103:   /**\n104:    * Constructs a new {@code BazelStarlarkEnvironment} that will have complete knowledge of the\n105:    * proper Starlark symbols available in each context, with and without injection.\n106: \n\n# github.com/sg-evals/bazel--8.0.0 – src/main/java/com/google/devtools/build/lib/packages/StarlarkGlobals.java\n25:  * starting point for defining the minimum Starlark environments that Bazel supports for BUILD\n26:  * files, .bzl files, etc. See {@link BazelStarlarkEnvironment} for the final determination of the\n2...
13. mcp__sourcegraph__sg_read_file

Input

{
  "repo": "github.com/sg-evals/bazel--8.0.0",
  "path": "src/main/java/com/google/devtools/build/lib/packages/RuleFunction.java"
}

Output

{'content': '{"text":"URL: https://demo.sourcegraph.com/github.com/sg-evals/bazel--8.0.0@12f256c9dffb17d03d47b3f06bf34f67c976e4aa/-/blob/src/main/java/com/google/devtools/build/lib/packages/RuleFunction.java\\n1: // Copyright 2017 The Bazel Authors. All rights reserved.\\n2: //\\n3: // Licensed under the Apache License, Version 2.0 (the \\"License\\");\\n4: // you may not use this file except in compliance with the License.\\n5: // You may obtain a copy of the License at\\n6: //\\n7: //    http://www.apache.org/licenses/LICENSE-2.0\\n8: //\\n9: // Unless required by applicable law or agreed to in writing, software\\n10: // distributed under the License is distributed on an \\"AS IS\\" BASIS,\\n11: // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n12: // See the License for the specific language governing permissions and\\n13: // limitations under the License.\\n14: \\n15: package com.google.devtools.build.lib.packages;\\n16: \\n17: import com.google.devtools.build.lib.starlarkbuildapi.RuleFunctionApi;\\n18: \\n19: /** Interface for a native or Starlark rule function. */\\n20: // Ideally, this interface should be merged with RuleFunctionApi, but that would cause a circular\\n21: // dependency between packages and starlarkbuildapi.\\n22: public interface RuleFunction extends RuleFunctionApi {\\n23:   RuleClass getRuleClass();\\n24: }\\n25: "}', 'structuredContent': {'text': 'URL: https://demo.sourcegraph.com/github.com/sg-evals/bazel--8.0.0@12f256c9dffb17d03d47b3f06bf34f67c976e4aa/-/blob/src/main/java/com/google/devtools/build/lib/packages/RuleFunction.java\n1: // Copyright 2017 The Bazel Authors. All rights reserved.\n2: //\n3: // Licensed under the Apache License, Version 2.0 (the "License");\n4: // you may not use this file except in compliance with the License.\n5: // You may obtain a copy of the License at\n6: //\n7: //    http://www.apache.org/licenses/LICENSE-2.0\n8: //\n9: // Unless required by applicable law or agreed to in writing, software\n10: // distributed under the License is distributed on an "AS IS" BASIS,\n11: // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n12: // See the License for the specific language governing permissions and\n13: // limitations under the License.\n14: \n15: package com.google.devtools.build.lib.packages;\n16: \n17: import com.google.devtools.build.lib.starlarkbuildapi.RuleFunctionApi;\n18: \n19: /** Interface for a native or Starlark rule function. */\n20: // Ideally, this interface should be merged with RuleFunctionApi, but that would cause a circular\n21: // dependency between packages and starlarkbuildapi.\n22: public interface RuleFunction extends RuleFunctionApi {\n23:   RuleClass getRuleClass();\n24: }\n25: '}}
14. mcp__sourcegraph__sg_keyword_search

Input

{
  "query": "repo:^github.com/sg-evals/bazel--8.0.0$ \"rule(\" StarlarkMethod file:src/main/java/com/google/devtools/build/lib/packages"
}

Output

{'content': '{"text":"# github.com/sg-evals/bazel--8.0.0 – src/main/java/com/google/devtools/build/lib/packages/StarlarkNativeModule.java\\n430:   @Override\\n431:   public Object existingRule(String name, StarlarkThread thread) throws EvalException {\\n432:     if (thread.getThreadLocal(ExistingRulesShouldBeNoOp.class) != null) {\\n433: \\n153:     @Override\\n154:     @StarlarkMethod(\\n155:         name = \\"get\\",\\n156: \\n168: \\n169:     @StarlarkMethod(\\n170:         name = \\"keys\\",\\n171: \\n\\n# github.com/sg-evals/bazel--8.0.0 – src/main/java/com/google/devtools/build/lib/packages/SelectorList.java\\n43:  * <pre>\\n44:  *   rule(\\n45:  *       name = \'myrule\',\\n46: \\n236: \\n237:     @StarlarkMethod(\\n238:         name = \\"select\\",\\n239: \\n29: import net.starlark.java.annot.StarlarkBuiltin;\\n30: import net.starlark.java.annot.StarlarkMethod;\\n31: import net.starlark.java.eval.Dict;\\n32: \\n\\n# github.com/sg-evals/bazel--8.0.0 – src/main/java/com/google/devtools/build/lib/packages/semantics/BuildLanguageOptions.java\\n57:  *       entry to {@link BuildLanguageOptions}, then specify the identifier in {@link\\n58:  *       net.starlark.java.annot.StarlarkMethod#enableOnlyWithFlag} or {@link\\n59:  *       net.starlark.java.annot.StarlarkMethod#disableWithFlag}.\\n60:  * </ul>\\n61: \\n781:               + \\" attr.dormant_label(), attr.dormant_label_list() and\\"\\n782:               + \\" rule(for_dependency_resolution=) are allowed.\\")\\n783:   public boolean experimentalDormantDeps;\\n784: \\n54:  *       to update this when flipping a flag\'s default value.\\n55:  *   <li>Boolean semantic flags can toggle StarlarkMethod-annotated Java methods (or their\\n56:  *       parameters) on or off, making them selectively invisible to Starlark. To do this, add a new\\n57: \\n"}', 'structuredContent': {'text': '# github.com/sg-evals/bazel--8.0.0 – src/main/java/com/google/devtools/build/lib/packages/StarlarkNativeModule.java\n430:   @Override\n431:   public Object existingRule(String name, StarlarkThread thread) throws EvalException {\n432:     if (thread.getThreadLocal(ExistingRulesShouldBeNoOp.class) != null) {\n433: \n153:     @Override\n154:     @StarlarkMethod(\n155:         name = "get",\n156: \n168: \n169:     @StarlarkMethod(\n170:         name = "keys",\n171: \n\n# github.com/sg-evals/bazel--8.0.0 – src/main/java/com/google/devtools/build/lib/packages/SelectorList.java\n43:  * <pre>\n44:  *   rule(\n45:  *       name = \'myrule\',\n46: \n236: \n237:     @StarlarkMethod(\n238:         name = "select",\n239: \n29: import net.starlark.java.annot.StarlarkBuiltin;\n30: import net.starlark.java.annot.StarlarkMethod;\n31: import net.starlark.java.eval.Dict;\n32: \n\n# github.com/sg-evals/bazel--8.0.0 – src/main/java/com/google/devtools/build/lib/packages/semantics/BuildLanguageOptions.java\n57:  *       entry to {@link BuildLanguageOptions}, then specify the identifier in {@link\n58:  *       net.starlark.java.annot.StarlarkMethod#enableOnlyWithFlag} or {@link\n59:  *       net.starlark.java.annot.StarlarkMethod#disableWithFlag}.\n60:  * </ul>\n61: \n781:               + " attr.dormant_label(), attr.dormant_label_list() and"\n782:               + " rule(for_dependency_resolution=) are allowed.")\n783:   public boolean experimentalDormantDeps;\n784: \n54:  *       to update this when flipping a flag\'s default value.\n55:  *   <li>Boolean semantic flags can toggle StarlarkMethod-annotated Java methods (or their\n56:  *       parameters) on or off, making them selectively invisible to Starlark. To do this, add a new\n57: \n'}}
15. mcp__sourcegraph__sg_keyword_search

Input

{
  "query": "repo:^github.com/sg-evals/bazel--8.0.0$ \"macro(\" StarlarkMethod file:src/main/java/com/google/devtools/build/lib/packages"
}

Output

{'content': '{"text":"# github.com/sg-evals/bazel--8.0.0 – src/main/java/com/google/devtools/build/lib/packages/StarlarkNativeModule.java\\n153:     @Override\\n154:     @StarlarkMethod(\\n155:         name = \\"get\\",\\n156: \\n168: \\n169:     @StarlarkMethod(\\n170:         name = \\"keys\\",\\n171: \\n183: \\n184:     @StarlarkMethod(\\n185:         name = \\"values\\",\\n186: \\n\\n# github.com/sg-evals/bazel--8.0.0 – src/main/java/com/google/devtools/build/lib/packages/semantics/BuildLanguageOptions.java\\n57:  *       entry to {@link BuildLanguageOptions}, then specify the identifier in {@link\\n58:  *       net.starlark.java.annot.StarlarkMethod#enableOnlyWithFlag} or {@link\\n59:  *       net.starlark.java.annot.StarlarkMethod#disableWithFlag}.\\n60:  * </ul>\\n61: \\n54:  *       to update this when flipping a flag\'s default value.\\n55:  *   <li>Boolean semantic flags can toggle StarlarkMethod-annotated Java methods (or their\\n56:  *       parameters) on or off, making them selectively invisible to Starlark. To do this, add a new\\n57: \\n243:       effectTags = OptionEffectTag.BUILD_FILE_SEMANTICS,\\n244:       help = \\"If set to true, enables the `macro()` construct for defining symbolic macros.\\")\\n245:   public boolean experimentalEnableFirstClassMacros;\\n246: \\n"}', 'structuredContent': {'text': '# github.com/sg-evals/bazel--8.0.0 – src/main/java/com/google/devtools/build/lib/packages/StarlarkNativeModule.java\n153:     @Override\n154:     @StarlarkMethod(\n155:         name = "get",\n156: \n168: \n169:     @StarlarkMethod(\n170:         name = "keys",\n171: \n183: \n184:     @StarlarkMethod(\n185:         name = "values",\n186: \n\n# github.com/sg-evals/bazel--8.0.0 – src/main/java/com/google/devtools/build/lib/packages/semantics/BuildLanguageOptions.java\n57:  *       entry to {@link BuildLanguageOptions}, then specify the identifier in {@link\n58:  *       net.starlark.java.annot.StarlarkMethod#enableOnlyWithFlag} or {@link\n59:  *       net.starlark.java.annot.StarlarkMethod#disableWithFlag}.\n60:  * </ul>\n61: \n54:  *       to update this when flipping a flag\'s default value.\n55:  *   <li>Boolean semantic flags can toggle StarlarkMethod-annotated Java methods (or their\n56:  *       parameters) on or off, making them selectively invisible to Starlark. To do this, add a new\n57: \n243:       effectTags = OptionEffectTag.BUILD_FILE_SEMANTICS,\n244:       help = "If set to true, enables the `macro()` construct for defining symbolic macros.")\n245:   public boolean experimentalEnableFirstClassMacros;\n246: \n'}}
16. mcp__sourcegraph__sg_keyword_search

Input

{
  "query": "repo:^github.com/sg-evals/bazel--8.0.0$ \"name = \\\"rule\\\"\" StarlarkMethod file:src/main/java"
}

Output

{'content': '{"text":"# github.com/sg-evals/bazel--8.0.0 – src/main/java/com/google/devtools/build/lib/starlarkbuildapi/StarlarkRuleContextApi.java\\n269: \\n270:   @StarlarkMethod(\\n271:       name = \\"genfiles_dir\\",\\n272: \\n141: \\n142:   @StarlarkMethod(\\n143:       name = \\"actions\\",\\n144: \\n147: \\n148:   @StarlarkMethod(\\n149:       name = \\"super\\",\\n150: \\n\\n# github.com/sg-evals/bazel--8.0.0 – src/main/java/com/google/devtools/build/lib/starlarkbuildapi/StarlarkRuleFunctionsApi.java\\n65: \\n66:   @StarlarkMethod(\\n67:       name = \\"provider\\",\\n68: \\n200: \\n201:   @StarlarkMethod(\\n202:       name = \\"macro\\",\\n203: \\n427: \\n428:   @StarlarkMethod(\\n429:       name = \\"rule\\",\\n430:       doc =\\n431: \\n"}', 'structuredContent': {'text': '# github.com/sg-evals/bazel--8.0.0 – src/main/java/com/google/devtools/build/lib/starlarkbuildapi/StarlarkRuleContextApi.java\n269: \n270:   @StarlarkMethod(\n271:       name = "genfiles_dir",\n272: \n141: \n142:   @StarlarkMethod(\n143:       name = "actions",\n144: \n147: \n148:   @StarlarkMethod(\n149:       name = "super",\n150: \n\n# github.com/sg-evals/bazel--8.0.0 – src/main/java/com/google/devtools/build/lib/starlarkbuildapi/StarlarkRuleFunctionsApi.java\n65: \n66:   @StarlarkMethod(\n67:       name = "provider",\n68: \n200: \n201:   @StarlarkMethod(\n202:       name = "macro",\n203: \n427: \n428:   @StarlarkMethod(\n429:       name = "rule",\n430:       doc =\n431: \n'}}
17. mcp__sourcegraph__sg_keyword_search

Input

{
  "query": "repo:^github.com/sg-evals/bazel--8.0.0$ \"name = \\\"macro\\\"\" StarlarkMethod file:src/main/java"
}

Output

{'content': '{"text":"# github.com/sg-evals/bazel--8.0.0 – src/main/java/com/google/devtools/build/lib/starlarkbuildapi/StarlarkRuleFunctionsApi.java\\n65: \\n66:   @StarlarkMethod(\\n67:       name = \\"provider\\",\\n68: \\n200: \\n201:   @StarlarkMethod(\\n202:       name = \\"macro\\",\\n203:       doc =\\n204: \\n427: \\n428:   @StarlarkMethod(\\n429:       name = \\"rule\\",\\n430: \\n"}', 'structuredContent': {'text': '# github.com/sg-evals/bazel--8.0.0 – src/main/java/com/google/devtools/build/lib/starlarkbuildapi/StarlarkRuleFunctionsApi.java\n65: \n66:   @StarlarkMethod(\n67:       name = "provider",\n68: \n200: \n201:   @StarlarkMethod(\n202:       name = "macro",\n203:       doc =\n204: \n427: \n428:   @StarlarkMethod(\n429:       name = "rule",\n430: \n'}}
18. mcp__sourcegraph__sg_keyword_search

Input

{
  "query": "repo:^github.com/sg-evals/bazel--8.0.0$ \"implements StarlarkRuleFunctionsApi\" file:src/main/java"
}

Output

{'content': '{"text":"# github.com/sg-evals/bazel--8.0.0 – src/main/java/com/google/devtools/build/lib/analysis/starlark/StarlarkRuleClassFunctions.java\\n145: /** A helper class to provide an easier API for Starlark rule definitions. */\\n146: public class StarlarkRuleClassFunctions implements StarlarkRuleFunctionsApi {\\n147: \\n148: \\n"}', 'structuredContent': {'text': '# github.com/sg-evals/bazel--8.0.0 – src/main/java/com/google/devtools/build/lib/analysis/starlark/StarlarkRuleClassFunctions.java\n145: /** A helper class to provide an easier API for Starlark rule definitions. */\n146: public class StarlarkRuleClassFunctions implements StarlarkRuleFunctionsApi {\n147: \n148: \n'}}
19. mcp__sourcegraph__sg_keyword_search

Input

{
  "query": "repo:^github.com/sg-evals/bazel--8.0.0$ \"class BzlInitThreadContext\" file:src/main/java/com/google/devtools/build/lib/packages"
}

Output

{'content': '{"text":"# github.com/sg-evals/bazel--8.0.0 – src/main/java/com/google/devtools/build/lib/packages/BzlInitThreadContext.java\\n33:  */\\n34: public final class BzlInitThreadContext extends StarlarkThreadContext\\n35:     implements RuleDefinitionEnvironment {\\n36: \\n"}', 'structuredContent': {'text': '# github.com/sg-evals/bazel--8.0.0 – src/main/java/com/google/devtools/build/lib/packages/BzlInitThreadContext.java\n33:  */\n34: public final class BzlInitThreadContext extends StarlarkThreadContext\n35:     implements RuleDefinitionEnvironment {\n36: \n'}}
20. mcp__sourcegraph__sg_read_file

Input

{
  "repo": "github.com/sg-evals/bazel--8.0.0",
  "path": "src/main/java/net/starlark/java/eval/StarlarkThread.java",
  "startLine": 1,
  "endLine": 80
}

Output

{'content': '{"text":"URL: https://demo.sourcegraph.com/github.com/sg-evals/bazel--8.0.0@12f256c9dffb17d03d47b3f06bf34f67c976e4aa/-/blob/src/main/java/net/starlark/java/eval/StarlarkThread.java%3FL1-80\\n1: // Copyright 2014 The Bazel Authors. All rights reserved.\\n2: //\\n3: // Licensed under the Apache License, Version 2.0 (the \\"License\\");\\n4: // you may not use this file except in compliance with the License.\\n5: // You may obtain a copy of the License at\\n6: //\\n7: //    http://www.apache.org/licenses/LICENSE-2.0\\n8: //\\n9: // Unless required by applicable law or agreed to in writing, software\\n10: // distributed under the License is distributed on an \\"AS IS\\" BASIS,\\n11: // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n12: // See the License for the specific language governing permissions and\\n13: // limitations under the License.\\n14: \\n15: package net.starlark.java.eval;\\n16: \\n17: import com.google.common.base.Preconditions;\\n18: import com.google.common.collect.ImmutableList;\\n19: import com.google.common.collect.ImmutableMap;\\n20: import java.util.ArrayList;\\n21: import java.util.HashMap;\\n22: import java.util.Map;\\n23: import java.util.concurrent.atomic.AtomicInteger;\\n24: import javax.annotation.Nullable;\\n25: import javax.annotation.concurrent.Immutable;\\n26: import net.starlark.java.syntax.Location;\\n27: \\n28: /**\\n29:  * An StarlarkThread represents a Starlark thread.\\n30:  *\\n31:  * <p>It holds the stack of active Starlark and built-in function calls. In addition, it may hold\\n32:  * per-thread application state (see {@link #setThreadLocal}) that passes through Starlark functions\\n33:  * but does not directly affect them, such as information about the BUILD file being loaded.\\n34:  *\\n35:  * <p>StarlarkThreads are not thread-safe: they should be confined to a single Java thread.\\n36:  *\\n37:  * <p>Every StarlarkThread has an associated {@link Mutability}, which should be created for that\\n38:  * thread, and closed once the thread\'s work is done. (A try-with-resources statement is handy for\\n39:  * this purpose.) Starlark values created by the thread are associated with the thread\'s Mutability,\\n40:  * so that when the Mutability is closed at the end of the computation, all the values created by\\n41:  * the thread become frozen. This pattern ensures that all Starlark values are frozen before they\\n42:  * are published to another thread, and thus that concurrently executing Starlark threads are free\\n43:  * from data races. Once a thread\'s mutability is frozen, the thread is unlikely to be useful for\\n44:  * further computation because it can no longer create mutable values. (This is occasionally\\n45:  * valuable in tests.)\\n46:  */\\n47: public final class StarlarkThread {\\n48: \\n49:   /** The mutability of values created by this thread. */\\n50:   private final Mutability mutability;\\n51: \\n52:   // profiler state\\n53:   //\\n54:   // The profiler field (and savedThread) are set when we first observe during a\\n55:   // push (function call entry) that the profiler is active. They are unset\\n56:   // not in the corresponding pop, but when the last frame is popped, because\\n57:   // the profiler session might start in the middle of a call and/or run beyond\\n58:   // the lifetime of this thread.\\n59:   final AtomicInteger cpuTicks = new AtomicInteger();\\n60:   @Nullable private CpuProfiler profiler;\\n61:   private StarlarkThread savedThread; // saved StarlarkThread, when profiling reentrant evaluation\\n62: \\n63:   private final Map<Class<?>, Object> threadLocals = new HashMap<>();\\n64: \\n65:   private final SymbolGenerator<?> symbolGenerator;\\n66: \\n67:   private boolean interruptible = true;\\n68: \\n69:   long steps; // count of logical computation steps executed so far\\n70:   long stepLimit = Long.MAX_VALUE; // limit on logical computation steps\\n71: \\n72:   /**\\n73:    * Returns the number of Starlark computa...
21. mcp__sourcegraph__sg_read_file

Input

{
  "repo": "github.com/sg-evals/bazel--8.0.0",
  "path": "src/main/java/com/google/devtools/build/lib/packages/PackageFactory.java",
  "startLine": 1,
  "endLine": 100
}

Output

{'content': '{"text":"URL: https://demo.sourcegraph.com/github.com/sg-evals/bazel--8.0.0@12f256c9dffb17d03d47b3f06bf34f67c976e4aa/-/blob/src/main/java/com/google/devtools/build/lib/packages/PackageFactory.java%3FL1-100\\n1: // Copyright 2014 The Bazel Authors. All rights reserved.\\n2: //\\n3: // Licensed under the Apache License, Version 2.0 (the \\"License\\");\\n4: // you may not use this file except in compliance with the License.\\n5: // You may obtain a copy of the License at\\n6: //\\n7: //    http://www.apache.org/licenses/LICENSE-2.0\\n8: //\\n9: // Unless required by applicable law or agreed to in writing, software\\n10: // distributed under the License is distributed on an \\"AS IS\\" BASIS,\\n11: // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n12: // See the License for the specific language governing permissions and\\n13: // limitations under the License.\\n14: \\n15: package com.google.devtools.build.lib.packages;\\n16: \\n17: import com.google.common.annotations.VisibleForTesting;\\n18: import com.google.common.base.Preconditions;\\n19: import com.google.common.collect.ImmutableList;\\n20: import com.google.common.collect.ImmutableMap;\\n21: import com.google.common.flogger.GoogleLogger;\\n22: import com.google.devtools.build.lib.actions.ThreadStateReceiver;\\n23: import com.google.devtools.build.lib.analysis.RuleDefinitionEnvironment;\\n24: import com.google.devtools.build.lib.cmdline.IgnoredSubdirectories;\\n25: import com.google.devtools.build.lib.cmdline.PackageIdentifier;\\n26: import com.google.devtools.build.lib.cmdline.RepositoryMapping;\\n27: import com.google.devtools.build.lib.concurrent.NamedForkJoinPool;\\n28: import com.google.devtools.build.lib.events.Event;\\n29: import com.google.devtools.build.lib.events.ExtendedEventHandler;\\n30: import com.google.devtools.build.lib.packages.Globber.BadGlobException;\\n31: import com.google.devtools.build.lib.packages.Package.Builder.PackageSettings;\\n32: import com.google.devtools.build.lib.packages.Package.ConfigSettingVisibilityPolicy;\\n33: import com.google.devtools.build.lib.packages.PackageValidator.InvalidPackageException;\\n34: import com.google.devtools.build.lib.packages.WorkspaceFileValue.WorkspaceFileKey;\\n35: import com.google.devtools.build.lib.packages.semantics.BuildLanguageOptions;\\n36: import com.google.devtools.build.lib.profiler.Profiler;\\n37: import com.google.devtools.build.lib.profiler.ProfilerTask;\\n38: import com.google.devtools.build.lib.server.FailureDetails.FailureDetail;\\n39: import com.google.devtools.build.lib.server.FailureDetails.PackageLoading;\\n40: import com.google.devtools.build.lib.server.FailureDetails.PackageLoading.Code;\\n41: import com.google.devtools.build.lib.util.DetailedExitCode;\\n42: import com.google.devtools.build.lib.vfs.FileSystem;\\n43: import com.google.devtools.build.lib.vfs.Path;\\n44: import com.google.devtools.build.lib.vfs.RootedPath;\\n45: import com.google.devtools.build.lib.vfs.SyscallCache;\\n46: import com.google.errorprone.annotations.CanIgnoreReturnValue;\\n47: import java.util.Collection;\\n48: import java.util.Map;\\n49: import java.util.Optional;\\n50: import java.util.concurrent.ForkJoinPool;\\n51: import java.util.concurrent.Semaphore;\\n52: import javax.annotation.Nullable;\\n53: import net.starlark.java.eval.EvalException;\\n54: import net.starlark.java.eval.Module;\\n55: import net.starlark.java.eval.Mutability;\\n56: import net.starlark.java.eval.Starlark;\\n57: import net.starlark.java.eval.StarlarkCallable;\\n58: import net.starlark.java.eval.StarlarkFunction;\\n59: import net.starlark.java.eval.StarlarkSemantics;\\n60: import net.starlark.java.eval.StarlarkThread;\\n61: import net.starlark.java.syntax.Argument;\\n62: import net.starlark.java.syntax.CallExpression;\\n63: import net.starlark.java.syntax.Expression;\\n64: import net.starlark.java.syntax.Identifier;\\n65: import net.starlark.java.syntax.IntLiteral;\\n66: import net.starlark.java.sy...
22. mcp__sourcegraph__sg_read_file

Input

{
  "repo": "github.com/sg-evals/bazel--8.0.0",
  "path": "src/main/java/com/google/devtools/build/lib/skyframe/BzlLoadFunction.java",
  "startLine": 1,
  "endLine": 120
}

Output

{'content': '{"text":"URL: https://demo.sourcegraph.com/github.com/sg-evals/bazel--8.0.0@12f256c9dffb17d03d47b3f06bf34f67c976e4aa/-/blob/src/main/java/com/google/devtools/build/lib/skyframe/BzlLoadFunction.java%3FL1-120\\n1: // Copyright 2014 The Bazel Authors. All rights reserved.\\n2: //\\n3: // Licensed under the Apache License, Version 2.0 (the \\"License\\");\\n4: // you may not use this file except in compliance with the License.\\n5: // You may obtain a copy of the License at\\n6: //\\n7: //    http://www.apache.org/licenses/LICENSE-2.0\\n8: //\\n9: // Unless required by applicable law or agreed to in writing, software\\n10: // distributed under the License is distributed on an \\"AS IS\\" BASIS,\\n11: // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n12: // See the License for the specific language governing permissions and\\n13: // limitations under the License.\\n14: package com.google.devtools.build.lib.skyframe;\\n15: \\n16: import com.github.benmanes.caffeine.cache.Cache;\\n17: import com.github.benmanes.caffeine.cache.Caffeine;\\n18: import com.google.common.annotations.VisibleForTesting;\\n19: import com.google.common.base.Preconditions;\\n20: import com.google.common.base.Predicates;\\n21: import com.google.common.collect.ImmutableList;\\n22: import com.google.common.collect.ImmutableMap;\\n23: import com.google.common.collect.Lists;\\n24: import com.google.common.collect.Maps;\\n25: import com.google.common.flogger.GoogleLogger;\\n26: import com.google.common.hash.HashFunction;\\n27: import com.google.devtools.build.lib.analysis.BlazeDirectories;\\n28: import com.google.devtools.build.lib.cmdline.BazelModuleContext;\\n29: import com.google.devtools.build.lib.cmdline.Label;\\n30: import com.google.devtools.build.lib.cmdline.Label.PackageContext;\\n31: import com.google.devtools.build.lib.cmdline.LabelConstants;\\n32: import com.google.devtools.build.lib.cmdline.LabelSyntaxException;\\n33: import com.google.devtools.build.lib.cmdline.PackageIdentifier;\\n34: import com.google.devtools.build.lib.cmdline.RepositoryMapping;\\n35: import com.google.devtools.build.lib.cmdline.RepositoryName;\\n36: import com.google.devtools.build.lib.concurrent.BlazeInterners;\\n37: import com.google.devtools.build.lib.events.Event;\\n38: import com.google.devtools.build.lib.events.EventHandler;\\n39: import com.google.devtools.build.lib.events.EventKind;\\n40: import com.google.devtools.build.lib.events.ExtendedEventHandler;\\n41: import com.google.devtools.build.lib.io.InconsistentFilesystemException;\\n42: import com.google.devtools.build.lib.packages.AutoloadSymbols;\\n43: import com.google.devtools.build.lib.packages.BazelStarlarkEnvironment;\\n44: import com.google.devtools.build.lib.packages.BuildFileNotFoundException;\\n45: import com.google.devtools.build.lib.packages.BzlInitThreadContext;\\n46: import com.google.devtools.build.lib.packages.BzlVisibility;\\n47: import com.google.devtools.build.lib.packages.RuleClassProvider;\\n48: import com.google.devtools.build.lib.packages.StarlarkExportable;\\n49: import com.google.devtools.build.lib.packages.WorkspaceFileValue;\\n50: import com.google.devtools.build.lib.packages.semantics.BuildLanguageOptions;\\n51: import com.google.devtools.build.lib.server.FailureDetails.StarlarkLoading.Code;\\n52: import com.google.devtools.build.lib.skyframe.StarlarkBuiltinsFunction.BuiltinsFailedException;\\n53: import com.google.devtools.build.lib.util.DetailedExitCode;\\n54: import com.google.devtools.build.lib.util.Fingerprint;\\n55: import com.google.devtools.build.lib.util.Pair;\\n56: import com.google.devtools.build.lib.vfs.PathFragment;\\n57: import com.google.devtools.build.lib.vfs.Root;\\n58: import com.google.devtools.build.skyframe.RecordingSkyFunctionEnvironment;\\n59: import com.google.devtools.build.skyframe.SkyFunction;\\n60: import com.google.devtools.build.skyframe.SkyFunctionException;\\n61: import com.google.devtools.build.skyframe.SkyFunctionExceptio...
23. mcp__sourcegraph__sg_read_file

Input

{
  "repo": "github.com/sg-evals/bazel--8.0.0",
  "path": "src/main/java/com/google/devtools/build/lib/analysis/starlark/StarlarkRuleClassFunctions.java",
  "startLine": 1,
  "endLine": 100
}

Output

{'content': '{"text":"URL: https://demo.sourcegraph.com/github.com/sg-evals/bazel--8.0.0@12f256c9dffb17d03d47b3f06bf34f67c976e4aa/-/blob/src/main/java/com/google/devtools/build/lib/analysis/starlark/StarlarkRuleClassFunctions.java%3FL1-100\\n1: // Copyright 2014 The Bazel Authors. All rights reserved.\\n2: //\\n3: // Licensed under the Apache License, Version 2.0 (the \\"License\\");\\n4: // you may not use this file except in compliance with the License.\\n5: // You may obtain a copy of the License at\\n6: //\\n7: //    http://www.apache.org/licenses/LICENSE-2.0\\n8: //\\n9: // Unless required by applicable law or agreed to in writing, software\\n10: // distributed under the License is distributed on an \\"AS IS\\" BASIS,\\n11: // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n12: // See the License for the specific language governing permissions and\\n13: // limitations under the License.\\n14: \\n15: package com.google.devtools.build.lib.analysis.starlark;\\n16: \\n17: import static com.google.common.base.Preconditions.checkArgument;\\n18: import static com.google.common.base.Preconditions.checkState;\\n19: import static com.google.common.collect.ImmutableList.toImmutableList;\\n20: import static com.google.devtools.build.lib.analysis.BaseRuleClasses.RUN_UNDER_EXEC_CONFIG;\\n21: import static com.google.devtools.build.lib.analysis.BaseRuleClasses.RUN_UNDER_TARGET_CONFIG;\\n22: import static com.google.devtools.build.lib.analysis.BaseRuleClasses.TIMEOUT_DEFAULT;\\n23: import static com.google.devtools.build.lib.analysis.BaseRuleClasses.getTestRuntimeLabelList;\\n24: import static com.google.devtools.build.lib.analysis.test.ExecutionInfo.DEFAULT_TEST_RUNNER_EXEC_GROUP;\\n25: import static com.google.devtools.build.lib.packages.Attribute.attr;\\n26: import static com.google.devtools.build.lib.packages.BuildType.LABEL;\\n27: import static com.google.devtools.build.lib.packages.BuildType.LABEL_LIST;\\n28: import static com.google.devtools.build.lib.packages.BuildType.LICENSE;\\n29: import static com.google.devtools.build.lib.packages.BuiltinRestriction.allowlistEntry;\\n30: import static com.google.devtools.build.lib.packages.Type.BOOLEAN;\\n31: import static com.google.devtools.build.lib.packages.Type.INTEGER;\\n32: import static com.google.devtools.build.lib.packages.Type.STRING;\\n33: import static com.google.devtools.build.lib.packages.Types.STRING_LIST;\\n34: import static java.util.Objects.requireNonNull;\\n35: \\n36: import com.github.benmanes.caffeine.cache.Caffeine;\\n37: import com.github.benmanes.caffeine.cache.LoadingCache;\\n38: import com.google.common.collect.ImmutableList;\\n39: import com.google.common.collect.ImmutableMap;\\n40: import com.google.common.collect.ImmutableSet;\\n41: import com.google.common.collect.Maps;\\n42: import com.google.devtools.build.lib.analysis.Allowlist;\\n43: import com.google.devtools.build.lib.analysis.BaseRuleClasses;\\n44: import com.google.devtools.build.lib.analysis.DormantDependency;\\n45: import com.google.devtools.build.lib.analysis.PackageSpecificationProvider;\\n46: import com.google.devtools.build.lib.analysis.RuleDefinitionEnvironment;\\n47: import com.google.devtools.build.lib.analysis.TemplateVariableInfo;\\n48: import com.google.devtools.build.lib.analysis.config.ExecutionTransitionFactory;\\n49: import com.google.devtools.build.lib.analysis.config.StarlarkDefinedConfigTransition;\\n50: import com.google.devtools.build.lib.analysis.config.ToolchainTypeRequirement;\\n51: import com.google.devtools.build.lib.analysis.config.transitions.ComposingTransitionFactory;\\n52: import com.google.devtools.build.lib.analysis.config.transitions.NoTransition;\\n53: import com.google.devtools.build.lib.analysis.config.transitions.StarlarkExposedRuleTransitionFactory;\\n54: import com.google.devtools.build.lib.analysis.config.transitions.TransitionFactory;\\n55: import com.google.devtools.build.lib.analysis.config.transitions.TransitionFactory.TransitionTyp...
24. mcp__sourcegraph__sg_read_file

Input

{
  "repo": "github.com/sg-evals/bazel--8.0.0",
  "path": "src/main/java/com/google/devtools/build/lib/analysis/starlark/StarlarkRuleClassFunctions.java",
  "startLine": 140,
  "endLine": 250
}

Output

{'content': '{"text":"URL: https://demo.sourcegraph.com/github.com/sg-evals/bazel--8.0.0@12f256c9dffb17d03d47b3f06bf34f67c976e4aa/-/blob/src/main/java/com/google/devtools/build/lib/analysis/starlark/StarlarkRuleClassFunctions.java%3FL140-250\\n140: import net.starlark.java.eval.SymbolGenerator.Symbol;\\n141: import net.starlark.java.eval.Tuple;\\n142: import net.starlark.java.syntax.Identifier;\\n143: import net.starlark.java.syntax.Location;\\n144: \\n145: /** A helper class to provide an easier API for Starlark rule definitions. */\\n146: public class StarlarkRuleClassFunctions implements StarlarkRuleFunctionsApi {\\n147: \\n148:   // A cache for base rule classes (especially tests).\\n149:   private static final LoadingCache<String, Label> labelCache =\\n150:       Caffeine.newBuilder().build(Label::parseCanonical);\\n151: \\n152:   // TODO(bazel-team): Remove the code duplication (BaseRuleClasses and this class).\\n153:   /** Parent rule class for non-executable non-test Starlark rules. */\\n154:   public static final RuleClass baseRule =\\n155:       BaseRuleClasses.commonCoreAndStarlarkAttributes(\\n156:               new RuleClass.Builder(\\"$base_rule\\", RuleClassType.ABSTRACT, true)\\n157:                   .add(attr(\\"expect_failure\\", STRING)))\\n158:           // TODO(skylark-team): Allow Starlark rules to extend native rules and remove duplication.\\n159:           .add(\\n160:               attr(\\"toolchains\\", LABEL_LIST)\\n161:                   .allowedFileTypes(FileTypeSet.NO_FILE)\\n162:                   .mandatoryProviders(ImmutableList.of(TemplateVariableInfo.PROVIDER.id()))\\n163:                   .dontCheckConstraints())\\n164:           .add(attr(RuleClass.EXEC_PROPERTIES_ATTR, Types.STRING_DICT).value(ImmutableMap.of()))\\n165:           .add(\\n166:               attr(RuleClass.EXEC_COMPATIBLE_WITH_ATTR, BuildType.LABEL_LIST)\\n167:                   .allowedFileTypes()\\n168:                   .nonconfigurable(\\"Used in toolchain resolution\\")\\n169:                   .tool(\\n170:                       \\"exec_compatible_with exists for constraint checking, not to create an\\"\\n171:                           + \\" actual dependency\\")\\n172:                   .value(ImmutableList.of()))\\n173:           .add(\\n174:               attr(RuleClass.TARGET_COMPATIBLE_WITH_ATTR, LABEL_LIST)\\n175:                   .mandatoryProviders(ConstraintValueInfo.PROVIDER.id())\\n176:                   // This should be configurable to allow for complex types of restrictions.\\n177:                   .tool(\\n178:                       \\"target_compatible_with exists for constraint checking, not to create an\\"\\n179:                           + \\" actual dependency\\")\\n180:                   .allowedFileTypes(FileTypeSet.NO_FILE))\\n181:           .build();\\n182: \\n183:   public static final RuleClass dependencyResolutionBaseRule =\\n184:       new RuleClass.Builder(\\n185:               \\"$dependency_resolution_base_rule\\", RuleClassType.ABSTRACT, true, baseRule)\\n186:           .setDependencyResolutionRule()\\n187:           .removeAttribute(\\":action_listener\\")\\n188:           .removeAttribute(\\"aspect_hints\\")\\n189:           .removeAttribute(\\"toolchains\\")\\n190:           .removeAttribute(\\"exec_compatible_with\\")\\n191:           .removeAttribute(\\"target_compatible_with\\")\\n192:           .removeAttribute(\\"compatible_with\\")\\n193:           .removeAttribute(\\"restricted_to\\")\\n194:           .removeAttribute(\\"$config_dependencies\\")\\n195:           .removeAttribute(\\"package_metadata\\")\\n196:           .build();\\n197: \\n198:   /** Parent rule class for executable non-test Starlark rules. */\\n199:   private static final RuleClass binaryBaseRule =\\n200:       new RuleClass.Builder(\\"$binary_base_rule\\", RuleClassType.ABSTRACT, true, baseRule)\\n201:           .add(attr(\\"args\\", STRING_LIST))\\n202:           .add(attr(\\"output_licenses\\", LICENSE))...
25. mcp__sourcegraph__sg_read_file

Input

{
  "repo": "github.com/sg-evals/bazel--8.0.0",
  "path": "src/main/java/com/google/devtools/build/lib/packages/Package.java",
  "startLine": 1050,
  "endLine": 1120
}

Output

{'content': '{"text":"URL: https://demo.sourcegraph.com/github.com/sg-evals/bazel--8.0.0@12f256c9dffb17d03d47b3f06bf34f67c976e4aa/-/blob/src/main/java/com/google/devtools/build/lib/packages/Package.java%3FL1050-1120\\n1050:         .setLoads(ImmutableList.of());\\n1051:   }\\n1052: \\n1053:   // ==== Non-trivial nested classes ====\\n1054: \\n1055:   /**\\n1056:    * A builder for {@link Package} objects. Only intended to be used by {@link PackageFactory} and\\n1057:    * {@link com.google.devtools.build.lib.skyframe.PackageFunction}.\\n1058:    */\\n1059:   public static class Builder extends TargetDefinitionContext {\\n1060: \\n1061:     /**\\n1062:      * A bundle of options affecting package construction, that is not specific to any particular\\n1063:      * package.\\n1064:      */\\n1065:     public interface PackageSettings {\\n1066:       /**\\n1067:        * Returns whether or not extra detail should be added to {@link NoSuchTargetException}s\\n1068:        * thrown from {@link #getTarget}. Useful for toning down verbosity in situations where it can\\n1069:        * be less helpful.\\n1070:        */\\n1071:       // TODO(bazel-team): Arguably, this could be replaced by a boolean param to getTarget(), or\\n1072:       // some separate action taken by the caller. But there\'s a lot of call sites that would need\\n1073:       // updating.\\n1074:       default boolean succinctTargetNotFoundErrors() {\\n1075:         return false;\\n1076:       }\\n1077: \\n1078:       /**\\n1079:        * Determines whether to precompute a list of transitively loaded starlark files while\\n1080:        * building packages.\\n1081:        *\\n1082:        * <p>Typically, direct loads are stored as a {@code ImmutableList<Module>}. This is\\n1083:        * sufficient to reconstruct the full load graph by recursively traversing {@link\\n1084:        * BazelModuleContext#loads}. If the package is going to be serialized, however, it may make\\n1085:        * more sense to precompute a flat list containing the labels of all transitively loaded bzl\\n1086:        * files since {@link Module} is costly to serialize.\\n1087:        *\\n1088:        * <p>If this returns {@code true}, transitive loads are stored as an {@code\\n1089:        * ImmutableList<Label>} and direct loads are not stored.\\n1090:        */\\n1091:       default boolean precomputeTransitiveLoads() {\\n1092:         return false;\\n1093:       }\\n1094: \\n1095:       PackageSettings DEFAULTS = new PackageSettings() {};\\n1096:     }\\n1097: \\n1098:     private final boolean precomputeTransitiveLoads;\\n1099:     private final boolean noImplicitFileExport;\\n1100: \\n1101:     // The map from each repository to that repository\'s remappings map.\\n1102:     // This is only used in the //external package, it is an empty map for all other packages.\\n1103:     private final HashMap<RepositoryName, HashMap<String, RepositoryName>>\\n1104:         externalPackageRepositoryMappings = new HashMap<>();\\n1105: \\n1106:     /** Estimates the package overhead of this package. */\\n1107:     private final PackageOverheadEstimator packageOverheadEstimator;\\n1108: \\n1109:     // A package\'s FailureDetail field derives from the events on its Builder\'s event handler.\\n1110:     // During package deserialization, those events are unavailable, because those events aren\'t\\n1111:     // serialized [*]. Its FailureDetail value is serialized, however. During deserialization, that\\n1112:     // value is assigned here, so that it can be assigned to the deserialized package.\\n1113:     //\\n1114:     // Likewise, during workspace part assembly, errors from parent parts should propagate to their\\n1115:     // children.\\n1116:     //\\n1117:     // [*] Not in the context of the package, anyway. Skyframe values containing a package may\\n1118:     // serialize events emitted during its construction/evaluation.\\n1119:     @Nullable private FailureDetail failureDetailOverride = null;\\n1120:...
26. mcp__sourcegraph__sg_read_file

Input

{
  "repo": "github.com/sg-evals/bazel--8.0.0",
  "path": "src/main/java/com/google/devtools/build/lib/packages/BazelStarlarkEnvironment.java",
  "startLine": 1,
  "endLine": 80
}

Output

{'content': '{"text":"URL: https://demo.sourcegraph.com/github.com/sg-evals/bazel--8.0.0@12f256c9dffb17d03d47b3f06bf34f67c976e4aa/-/blob/src/main/java/com/google/devtools/build/lib/packages/BazelStarlarkEnvironment.java%3FL1-80\\n1: // Copyright 2020 The Bazel Authors. All rights reserved.\\n2: //\\n3: // Licensed under the Apache License, Version 2.0 (the \\"License\\");\\n4: // you may not use this file except in compliance with the License.\\n5: // You may obtain a copy of the License at\\n6: //\\n7: //    http://www.apache.org/licenses/LICENSE-2.0\\n8: //\\n9: // Unless required by applicable law or agreed to in writing, software\\n10: // distributed under the License is distributed on an \\"AS IS\\" BASIS,\\n11: // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n12: // See the License for the specific language governing permissions and\\n13: // limitations under the License.\\n14: \\n15: package com.google.devtools.build.lib.packages;\\n16: \\n17: import com.google.common.base.Preconditions;\\n18: import com.google.common.collect.ImmutableMap;\\n19: import com.google.common.collect.Sets;\\n20: import java.util.HashMap;\\n21: import java.util.List;\\n22: import java.util.Map;\\n23: import java.util.Set;\\n24: import javax.annotation.Nullable;\\n25: import net.starlark.java.eval.GuardedValue;\\n26: import net.starlark.java.eval.Starlark;\\n27: \\n28: // TODO(adonovan): move skyframe.PackageFunction into lib.packages so we needn\'t expose this and\\n29: // the other env-building functions.\\n30: /**\\n31:  * This class encapsulates knowledge of how to set up the Starlark environment for BUILD, WORKSPACE,\\n32:  * and bzl file evaluation, including the top-level predeclared symbols, the {@code native} module,\\n33:  * and the special environment for {@code @_builtins} bzl evaluation.\\n34:  *\\n35:  * <p>The set of available symbols is determined by\\n36:  *\\n37:  * <ol>\\n38:  *   <li>Gathering a fixed set of top-level symbols that are present in all versions of Bazel. This\\n39:  *       is handled by {@link StarlarkGlobals}.\\n40:  *   <li>Gathering additional toplevels and rules registered on the {@link\\n41:  *       ConfiguredRuleClassProvider}.\\n42:  *   <li>Applying builtins injection (see {@link StarlarkBuiltinsFunction}), if applicable.\\n43:  * </ol>\\n44:  *\\n45:  * <p>The end result of (1) and (2) is constant for any given Bazel binary and is cached by an\\n46:  * instance of this class upon construction. The final environment, which takes into account\\n47:  * builtins injection, is obtained by calling methods on this class during Skyframe evaluation; the\\n48:  * result is cached in {@link StarlarkBuiltinsValue}.\\n49:  *\\n50:  * <p>There are a few exceptions where this class is not the final word on the environment:\\n51:  *\\n52:  * <ul>\\n53:  *   <li>The WORKSPACE file\'s environment is setup with the help of {@link\\n54:  *       WorkspaceFactory#getDefaultEnvironment}.\\n55:  *   <li>If a prelude file is in use, its bindings are added to the ones this class specifies for\\n56:  *       BUILD files. This happens in {@link PackageFunction}.\\n57:  * </ul>\\n58:  */\\n59: public final class BazelStarlarkEnvironment {\\n60: \\n61:   // TODO(#11954): Eventually the BUILD and WORKSPACE bzl dialects should converge. Right now they\\n62:   // only differ on the \\"native\\" object.\\n63: \\n64:   // All of the environments stored in these fields exclude the symbols in {@link\\n65:   // Starlark#UNIVERSE}, which the interpreter adds automatically.\\n66: \\n67:   // Constructor param, used in this class but also re-exported to clients.\\n68:   private final StarlarkGlobals starlarkGlobals;\\n69: \\n70:   // The following fields correspond to the constructor params of the same name. These include only\\n71:   // the params that are needed by injection. See the constructor for javadoc.\\n72:   private final ImmutableMap<String, ?> ruleFunctions;\\n73:   private final ImmutableMap<String...
27. mcp__sourcegraph__sg_read_file

Input

{
  "repo": "github.com/sg-evals/bazel--8.0.0",
  "path": "src/main/java/com/google/devtools/build/lib/starlarkbuildapi/StarlarkRuleFunctionsApi.java",
  "startLine": 1,
  "endLine": 80
}

Output

{'content': '{"text":"URL: https://demo.sourcegraph.com/github.com/sg-evals/bazel--8.0.0@12f256c9dffb17d03d47b3f06bf34f67c976e4aa/-/blob/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/StarlarkRuleFunctionsApi.java%3FL1-80\\n1: // Copyright 2018 The Bazel Authors. All rights reserved.\\n2: //\\n3: // Licensed under the Apache License, Version 2.0 (the \\"License\\");\\n4: // you may not use this file except in compliance with the License.\\n5: // You may obtain a copy of the License at\\n6: //\\n7: //    http://www.apache.org/licenses/LICENSE-2.0\\n8: //\\n9: // Unless required by applicable law or agreed to in writing, software\\n10: // distributed under the License is distributed on an \\"AS IS\\" BASIS,\\n11: // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n12: // See the License for the specific language governing permissions and\\n13: // limitations under the License.\\n14: \\n15: package com.google.devtools.build.lib.starlarkbuildapi;\\n16: \\n17: import com.google.devtools.build.docgen.annot.GlobalMethods;\\n18: import com.google.devtools.build.docgen.annot.GlobalMethods.Environment;\\n19: import com.google.devtools.build.docgen.annot.StarlarkConstructor;\\n20: import com.google.devtools.build.lib.cmdline.Label;\\n21: import com.google.devtools.build.lib.packages.semantics.BuildLanguageOptions;\\n22: import com.google.devtools.build.lib.starlarkbuildapi.config.StarlarkConfigApi.BuildSettingApi;\\n23: import net.starlark.java.annot.Param;\\n24: import net.starlark.java.annot.ParamType;\\n25: import net.starlark.java.annot.StarlarkMethod;\\n26: import net.starlark.java.eval.Dict;\\n27: import net.starlark.java.eval.EvalException;\\n28: import net.starlark.java.eval.NoneType;\\n29: import net.starlark.java.eval.Sequence;\\n30: import net.starlark.java.eval.StarlarkCallable;\\n31: import net.starlark.java.eval.StarlarkFunction;\\n32: import net.starlark.java.eval.StarlarkThread;\\n33: \\n34: /**\\n35:  * Interface for a global Starlark library containing rule-related helper and registration\\n36:  * functions.\\n37:  */\\n38: @GlobalMethods(environment = Environment.BZL)\\n39: public interface StarlarkRuleFunctionsApi {\\n40: \\n41:   String EXEC_COMPATIBLE_WITH_PARAM = \\"exec_compatible_with\\";\\n42:   String TOOLCHAINS_PARAM = \\"toolchains\\";\\n43: \\n44:   String PROVIDES_DOC =\\n45:       \\"A list of providers that the implementation function must return.\\" //\\n46:           + \\"<p>It is an error if the implementation function omits any of the types of providers\\"\\n47:           + \\" listed here from its return value. However, the implementation function may return\\"\\n48:           + \\" additional providers not listed here.\\" //\\n49:           + \\"<p>Each element of the list is an <code>*Info</code> object returned by <a\\"\\n50:           + \\" href=\'../globals/bzl.html#provider\'><code>provider()</code></a>, except that a legacy\\"\\n51:           + \\" provider is represented by its string name instead.When a target of the rule is used\\"\\n52:           + \\" as a dependency for a target that declares a required provider, it is not necessary\\"\\n53:           + \\" to specify that provider here. It is enough that the implementation function returns\\"\\n54:           + \\" it. However, it is considered best practice to specify it, even though this is not\\"\\n55:           + \\" required. The <a\\"\\n56:           + \\" href=\'../globals/bzl.html#aspect.required_providers\'><code>required_providers</code></a>\\"\\n57:           + \\" field of an <a href=\'../globals/bzl.html#aspect\'>aspect</a> does, however, require\\"\\n58:           + \\" that providers are specified here.\\";\\n59: \\n60:   String DEPENDENCY_RESOLUTION_RULE_DOC =\\n61:       \\"If set, the rule can be a dependency through attributes also marked as available in\\"\\n62:           + \\" materializers. Every attribute of rules with this flag set must be marked as \\"\\n63:           + \\"...
28. mcp__sourcegraph__sg_read_file

Input

{
  "repo": "github.com/sg-evals/bazel--8.0.0",
  "path": "src/main/java/com/google/devtools/build/lib/packages/MacroClass.java",
  "startLine": 1,
  "endLine": 80
}

Output

{'content': '{"text":"URL: https://demo.sourcegraph.com/github.com/sg-evals/bazel--8.0.0@12f256c9dffb17d03d47b3f06bf34f67c976e4aa/-/blob/src/main/java/com/google/devtools/build/lib/packages/MacroClass.java%3FL1-80\\n1: // Copyright 2024 The Bazel Authors. All rights reserved.\\n2: //\\n3: // Licensed under the Apache License, Version 2.0 (the \\"License\\");\\n4: // you may not use this file except in compliance with the License.\\n5: // You may obtain a copy of the License at\\n6: //\\n7: //    http://www.apache.org/licenses/LICENSE-2.0\\n8: //\\n9: // Unless required by applicable law or agreed to in writing, software\\n10: // distributed under the License is distributed on an \\"AS IS\\" BASIS,\\n11: // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n12: // See the License for the specific language governing permissions and\\n13: // limitations under the License.\\n14: \\n15: package com.google.devtools.build.lib.packages;\\n16: \\n17: import static com.google.common.collect.ImmutableList.toImmutableList;\\n18: import static com.google.devtools.build.lib.packages.BuildType.NODEP_LABEL_LIST;\\n19: \\n20: import com.google.common.base.Preconditions;\\n21: import com.google.common.collect.ImmutableList;\\n22: import com.google.common.collect.ImmutableMap;\\n23: import com.google.common.collect.ImmutableSet;\\n24: import com.google.common.collect.Lists;\\n25: import com.google.devtools.build.lib.cmdline.Label;\\n26: import com.google.devtools.build.lib.cmdline.PackageIdentifier;\\n27: import com.google.devtools.build.lib.events.Event;\\n28: import com.google.devtools.build.lib.packages.TargetRecorder.MacroFrame;\\n29: import com.google.devtools.build.lib.packages.TargetRecorder.NameConflictException;\\n30: import com.google.devtools.build.lib.server.FailureDetails.PackageLoading.Code;\\n31: import com.google.errorprone.annotations.CanIgnoreReturnValue;\\n32: import java.util.ArrayList;\\n33: import java.util.LinkedHashMap;\\n34: import java.util.List;\\n35: import java.util.Map;\\n36: import javax.annotation.Nullable;\\n37: import net.starlark.java.eval.EvalException;\\n38: import net.starlark.java.eval.Mutability;\\n39: import net.starlark.java.eval.Starlark;\\n40: import net.starlark.java.eval.StarlarkFunction;\\n41: import net.starlark.java.eval.StarlarkSemantics;\\n42: import net.starlark.java.eval.StarlarkThread;\\n43: import net.starlark.java.eval.SymbolGenerator;\\n44: import net.starlark.java.spelling.SpellChecker;\\n45: \\n46: /**\\n47:  * Represents a symbolic macro, defined in a .bzl file, that may be instantiated during Package\\n48:  * evaluation.\\n49:  *\\n50:  * <p>This is analogous to {@link RuleClass}. In essence, a {@code MacroClass} consists of the\\n51:  * macro\'s schema and its implementation function.\\n52:  */\\n53: public final class MacroClass {\\n54: \\n55:   /**\\n56:    * Names that users may not pass as keys of the {@code attrs} dict when calling {@code macro()}.\\n57:    *\\n58:    * <p>Of these, {@code name} is special cased as an actual attribute, and the rest do not exist.\\n59:    */\\n60:   // Keep in sync with `macro()`\'s `attrs` user documentation in StarlarkRuleFunctionsApi.\\n61:   // But we should avoid adding new entries here, since it\'s a backwards-incompatible change.\\n62:   public static final ImmutableSet<String> RESERVED_MACRO_ATTR_NAMES =\\n63:       ImmutableSet.of(\\"name\\", \\"visibility\\");\\n64: \\n65:   /**\\n66:    * \\"visibility\\" attribute present on all symbolic macros.\\n67:    *\\n68:    * <p>This is similar to the visibility attribute for rules, but lacks the exec transitions.\\n69:    */\\n70:   public static final Attribute VISIBILITY_ATTRIBUTE =\\n71:       Attribute.attr(\\"visibility\\", NODEP_LABEL_LIST)\\n72:           .orderIndependent()\\n73:           .nonconfigurable(\\"special attribute integrated more deeply into Bazel\'s core logic\\")\\n74:           .build();\\n75: \\n76:   private final String name;\\n77:   private f...
29. mcp__sourcegraph__sg_read_file

Input

{
  "repo": "github.com/sg-evals/bazel--8.0.0",
  "path": "src/main/java/com/google/devtools/build/lib/packages/BzlInitThreadContext.java",
  "startLine": 1,
  "endLine": 60
}

Output

{'content': '{"text":"URL: https://demo.sourcegraph.com/github.com/sg-evals/bazel--8.0.0@12f256c9dffb17d03d47b3f06bf34f67c976e4aa/-/blob/src/main/java/com/google/devtools/build/lib/packages/BzlInitThreadContext.java%3FL1-60\\n1: // Copyright 2022 The Bazel Authors. All rights reserved.\\n2: //\\n3: // Licensed under the Apache License, Version 2.0 (the \\"License\\");\\n4: // you may not use this file except in compliance with the License.\\n5: // You may obtain a copy of the License at\\n6: //\\n7: //    http://www.apache.org/licenses/LICENSE-2.0\\n8: //\\n9: // Unless required by applicable law or agreed to in writing, software\\n10: // distributed under the License is distributed on an \\"AS IS\\" BASIS,\\n11: // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n12: // See the License for the specific language governing permissions and\\n13: // limitations under the License.\\n14: \\n15: package com.google.devtools.build.lib.packages;\\n16: \\n17: import com.google.common.collect.ImmutableMap;\\n18: import com.google.devtools.build.lib.analysis.RuleDefinitionEnvironment;\\n19: import com.google.devtools.build.lib.cmdline.Label;\\n20: import com.google.devtools.build.lib.cmdline.RepositoryMapping;\\n21: import com.google.devtools.build.lib.cmdline.RepositoryName;\\n22: import com.google.devtools.build.lib.cmdline.StarlarkThreadContext;\\n23: import com.google.errorprone.annotations.CanIgnoreReturnValue;\\n24: import java.util.Optional;\\n25: import javax.annotation.Nullable;\\n26: import net.starlark.java.eval.EvalException;\\n27: import net.starlark.java.eval.Starlark;\\n28: import net.starlark.java.eval.StarlarkThread;\\n29: \\n30: /**\\n31:  * Bazel application data for the Starlark thread that evaluates the top-level code in a .bzl (or\\n32:  * .scl) module (i.e. when evaluating that module\'s global symbols).\\n33:  */\\n34: public final class BzlInitThreadContext extends StarlarkThreadContext\\n35:     implements RuleDefinitionEnvironment {\\n36: \\n37:   private final Label bzlFile;\\n38: \\n39:   /* Digest of the .bzl file being initialized along with all its transitive loads. */\\n40:   private final byte[] transitiveDigest;\\n41: \\n42:   // For storing the result of calling `visibility()`.\\n43:   @Nullable private BzlVisibility bzlVisibility;\\n44: \\n45:   private final RepositoryName toolsRepository;\\n46: \\n47:   // TODO(b/192694287): Remove once we migrate all tests from the allowlist\\n48:   private final Optional<Label> networkAllowlistForTests;\\n49: \\n50:   // Used for `configuration_field`.\\n51:   private final ImmutableMap<String, Class<?>> fragmentNameToClass;\\n52: \\n53:   /**\\n54:    * Constructs a new context for initializing a .bzl file.\\n55:    *\\n56:    * @param bzlFile the name of the .bzl being initialized\\n57:    * @param transitiveDigest the hash of that file and its transitive load()s\\n58:    * @param toolsRepository the name of the tools repository, such as \\"@bazel_tools\\"\\n59:    * @param networkAllowlistForTests an allowlist for rule classes created by this thread\\n60:    * @param fragmentNameToClass a map from configuration fragment name to configuration fragment\\n61: "}', 'structuredContent': {'text': 'URL: https://demo.sourcegraph.com/github.com/sg-evals/bazel--8.0.0@12f256c9dffb17d03d47b3f06bf34f67c976e4aa/-/blob/src/main/java/com/google/devtools/build/lib/packages/BzlInitThreadContext.java%3FL1-60\n1: // Copyright 2022 The Bazel Authors. All rights reserved.\n2: //\n3: // Licensed under the Apache License, Version 2.0 (the "License");\n4: // you may not use this file except in compliance with the License.\n5: // You may obtain a copy of the License at\n6: //\n7: //    http://www.apache.org/licenses/LICENSE-2.0\n8: //\n9: // Unless required by applicable law or agreed to in writing, software\n10: // distributed under the License is distributed on an "AS IS" BASIS,\n11: // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n...
30. mcp__sourcegraph__sg_list_files

Input

{
  "repo": "github.com/sg-evals/bazel--8.0.0",
  "path": "src/main/java/net/starlark/java"
}

Output

{'content': '{"text":"src/main/java/net/starlark/java/annot/\\nsrc/main/java/net/starlark/java/cmd/\\nsrc/main/java/net/starlark/java/eval/\\nsrc/main/java/net/starlark/java/lib/\\nsrc/main/java/net/starlark/java/spelling/\\nsrc/main/java/net/starlark/java/syntax/\\nsrc/main/java/net/starlark/java/BUILD\\n"}', 'structuredContent': {'text': 'src/main/java/net/starlark/java/annot/\nsrc/main/java/net/starlark/java/cmd/\nsrc/main/java/net/starlark/java/eval/\nsrc/main/java/net/starlark/java/lib/\nsrc/main/java/net/starlark/java/spelling/\nsrc/main/java/net/starlark/java/syntax/\nsrc/main/java/net/starlark/java/BUILD\n'}}
31. mcp__sourcegraph__sg_read_file

Input

{
  "repo": "github.com/sg-evals/bazel--8.0.0",
  "path": "src/main/java/com/google/devtools/build/lib/packages/StarlarkGlobals.java",
  "startLine": 1,
  "endLine": 80
}

Output

{'content': '{"text":"URL: https://demo.sourcegraph.com/github.com/sg-evals/bazel--8.0.0@12f256c9dffb17d03d47b3f06bf34f67c976e4aa/-/blob/src/main/java/com/google/devtools/build/lib/packages/StarlarkGlobals.java%3FL1-80\\n1: // Copyright 2023 The Bazel Authors. All rights reserved.\\n2: //\\n3: // Licensed under the Apache License, Version 2.0 (the \\"License\\");\\n4: // you may not use this file except in compliance with the License.\\n5: // You may obtain a copy of the License at\\n6: //\\n7: //    http://www.apache.org/licenses/LICENSE-2.0\\n8: //\\n9: // Unless required by applicable law or agreed to in writing, software\\n10: // distributed under the License is distributed on an \\"AS IS\\" BASIS,\\n11: // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n12: // See the License for the specific language governing permissions and\\n13: // limitations under the License.\\n14: \\n15: package com.google.devtools.build.lib.packages;\\n16: \\n17: import com.google.common.collect.ImmutableMap;\\n18: \\n19: /**\\n20:  * A library of the fixed Starlark environment for various contexts.\\n21:  *\\n22:  * <p>This is the source of truth for what symbols are available in what Starlark contexts (BUILD,\\n23:  * .bzl, etc.), before considering how symbols may be added by registering them on the rule class\\n24:  * provider, or how symbols may be substituted by builtins injection. In other words, this is the\\n25:  * starting point for defining the minimum Starlark environments that Bazel supports for BUILD\\n26:  * files, .bzl files, etc. See {@link BazelStarlarkEnvironment} for the final determination of the\\n27:  * environment after accounting for registered symbols and builtins injection.\\n28:  *\\n29:  * <p>This is split between an interface in the lib/packages/ directory and an implementation in the\\n30:  * lib/analysis/starlark/ directory, in order to avoid new dependency edges from lib/packages/ to\\n31:  * lib/analysis/.\\n32:  */\\n33: public interface StarlarkGlobals {\\n34: \\n35:   /**\\n36:    * Returns a simple environment containing a few general utility modules, {@code depset}, and\\n37:    * {@code select()}.\\n38:    *\\n39:    * <p>In general, if you need a Bazel-y Starlark environment and don\'t know what to choose, prefer\\n40:    * to use this one for uniformity with as many other contexts as possible.\\n41:    */\\n42:   ImmutableMap<String, Object> getUtilToplevels();\\n43: \\n44:   /**\\n45:    * Similar to {@link #getUtilToplevels} but without {@code select()} and with {@code struct}. Used\\n46:    * for cquery.\\n47:    */\\n48:   // TODO(bazel-team): Consider whether we should replace usage of this with getUtilTopLevels(), at\\n49:   // the cost of the cquery dialect changing slightly, for the sake of uniformity and fewer\\n50:   // kinds of environments.\\n51:   ImmutableMap<String, Object> getUtilToplevelsForCquery();\\n52: \\n53:   /**\\n54:    * Returns the fixed top-levels for BUILD files that also happen to be fields of {@code native}.\\n55:    * This does not include any native rules.\\n56:    */\\n57:   ImmutableMap<String, Object> getFixedBuildFileToplevelsSharedWithNative();\\n58: \\n59:   /** Returns the fixed top-levels for BUILD files that are *not* also fields of {@code native}. */\\n60:   ImmutableMap<String, Object> getFixedBuildFileToplevelsNotInNative();\\n61: \\n62:   /** Returns the fixed top-levels for .bzl files, excluding the {@code native} object. */\\n63:   ImmutableMap<String, Object> getFixedBzlToplevels();\\n64: \\n65:   /** Returns the top-levels for .scl files. */\\n66:   ImmutableMap<String, Object> getSclToplevels();\\n67: \\n68:   /** Returns the top-levels for MODULE.bazel files and their imports. */\\n69:   ImmutableMap<String, Object> getModuleToplevels();\\n70: \\n71:   /** Returns the top-levels for REPO.bazel files. */\\n72:   ImmutableMap<String, Object> getRepoToplevels();\\n73: \\n74:   /** Returns the top-levels for VENDOR.bazel files. */\...
32. mcp__sourcegraph__sg_keyword_search

Input

{
  "query": "repo:^github.com/sg-evals/bazel--8.0.0$ \"implements StarlarkGlobals\" file:src/main/java"
}

Output

{'content': '{"text":"# github.com/sg-evals/bazel--8.0.0 – src/main/java/com/google/devtools/build/lib/analysis/starlark/StarlarkGlobalsImpl.java\\n41:  */\\n42: public final class StarlarkGlobalsImpl implements StarlarkGlobals {\\n43: \\n44: \\n"}', 'structuredContent': {'text': '# github.com/sg-evals/bazel--8.0.0 – src/main/java/com/google/devtools/build/lib/analysis/starlark/StarlarkGlobalsImpl.java\n41:  */\n42: public final class StarlarkGlobalsImpl implements StarlarkGlobals {\n43: \n44: \n'}}
33. mcp__sourcegraph__sg_keyword_search

Input

{
  "query": "repo:^github.com/sg-evals/bazel--8.0.0$ \"class PackageThreadContext\" OR \"PackageBuildThreadContext\" file:src/main/java/com/google/devtools/build/lib/packages"
}

Output

{'content': '{"text":"No results.\\n\\nNo results found."}', 'structuredContent': {'text': 'No results.\n\nNo results found.'}}
34. Write

Input

{
  "file_path": "/workspace/answer.json",
  "content": "{\n  \"files\": [\n    {\"repo\": \"sg-evals/bazel--8.0.0\", \"path\": \"src/main/java/net/starlark/java/eval/StarlarkThread.java\"},\n    {\"repo\": \"sg-evals/bazel--8.0.0\", \"path\": \"src/main/java/com/google/devtools/build/lib/packages/PackageFactory.java\"},\n    {\"repo\": \"sg-evals/bazel--8.0.0\", \"path\": \"src/main/java/com/google/devtools/build/lib/skyframe/BzlLoadFunction.java\"},\n    {\"repo\": \"sg-evals/bazel--8.0.0\", \"path\": \"src/main/java/com/google/devtools/build/lib/analysis/starlark/StarlarkRuleClassFunctions.java\"},\n    {\"repo\": \"sg-evals/bazel--8.0.0\", \"path\": \"src/main/java/com/google/devtools/build/lib/packages/Package.java\"},\n    {\"repo\": \"sg-evals/bazel--8.0.0\", \"path\": \"src/main/java/com/google/devtools/build/lib/packages/MacroClass.java\"},\n    {\"repo\": \"sg-evals/bazel--8.0.0\", \"path\": \"src/main/java/com/google/devtools/build/lib/packages/RuleFunction.java\"},\n    {\"repo\": \"sg-evals/bazel--8.0.0\", \"path\": \"src/main/java/com/google/devtools/build/lib/packages/RuleClass.java\"},\n    {\"repo\": \"sg-evals/bazel--8.0.0\", \"path\": \"src/main/java/com/google/devtools/build/lib/packages/RuleFactory.java\"},\n    {\"repo\": \"sg-evals/bazel--8.0.0\", \"path\": \"src/main/java/com/google/devtools/build/lib/packages/BazelStarlarkEnvironment.java\"},\n    {\"repo\": \"sg-evals/bazel--8.0.0\", \"path\": \"src/main/java/com/google/devtools/build/lib/packages/StarlarkGlobals.java\"},\n    {\"repo\": \"sg-evals/bazel--8.0.0\", \"path\": \"src/main/java/com/google/devtools/build/lib/analysis/starlark/StarlarkGlobalsImpl.java\"},\n    {\"repo\": \"sg-evals/bazel--8.0.0\", \"path\": \"src/main/java/com/google/devtools/build/lib/packages/BzlInitThreadContext.java\"},\n    {\"repo\": \"sg-evals/bazel--8.0.0\", \"path\": \"src/main/java/com/google/devtools/build/lib/starlarkbuildapi/StarlarkRuleFunctionsApi.java\"},\n    {\"repo\": \"sg-evals/bazel--8.0.0\", \"path\": \"src/main/java/com/google/devtools/build/lib/packages/StarlarkNativeModule.java\"},\n    {\"repo\": \"sg-evals/bazel--8.0.0\", \"path\": \"src/main/java/com/google/devtools/build/lib/packages/MacroInstance.java\"},\n    {\"repo\": \"sg-evals/bazel--8.0.0\", \"path\": \"src/main/java/com/google/devtools/build/lib/packages/BuildGlobals.java\"},\n    {\"repo\": \"sg-evals/bazel--8.0.0\", \"path\": \"src/main/java/com/google/devtools/build/lib/cmdline/StarlarkThreadContext.java\"},\n    {\"repo\": \"sg-evals/bazel--8.0.0\", \"path\": \"src/main/java/net/starlark/java/eval/Starlark.java\"},\n    {\"repo\": \"sg-evals/bazel--8.0.0\", \"path\": \"src/main/java/net/starlark/java/eval/Module.java\"},\n    {\"repo\": \"sg-evals/bazel--8.0.0\", \"path\": \"src/main/java/net/starlark/java/eval/Eval.java\"},\n    {\"repo\": \"sg-evals/bazel--8.0.0\", \"path\": \"src/main/java/com/google/devtools/build/lib/packages/TargetDefinitionContext.java\"},\n    {\"repo\": \"sg-evals/bazel--8.0.0\", \"path\": \"src/main/java/com/google/devtools/build/lib/packages/WorkspaceFactory.java\"},\n    {\"repo\": \"sg-evals/bazel--8.0.0\", \"path\": \"src/main/java/com/google/devtools/build/lib/skyframe/StarlarkBuiltinsFunction.java\"},\n    {\"repo\": \"sg-evals/bazel--8.0.0\", \"path\": \"src/main/java/com/google/devtools/build/lib/packages/AutoloadSymbols.java\"}\n  ],\n  \"symbols\": [\n    {\"repo\": \"sg-evals/bazel--8.0.0\", \"path\": \"src/main/java/net/starlark/java/eval/StarlarkThread.java\", \"symbol\": \"StarlarkThread\"},\n    {\"repo\": \"sg-evals/bazel--8.0.0\", \"path\": \"src/main/java/com/google/devtools/build/lib/packages/PackageFactory.java\", \"symbol\": \"PackageFactory\"},\n    {\"repo\": \"sg-evals/bazel--8.0.0\", \"path\": \"src/main/java/com/google/devtools/build/lib/skyframe/BzlLoadFunction.java\", \"symbol\": \"BzlLoadFunction\"},\n    {\"repo\": \"sg-evals/bazel--8.0.0\", \"path\": \"src/main/java/com/google/devtools/build/lib/analysis/starlark/StarlarkRuleCl
...

Output

{'type': 'create', 'filePath': '/workspace/answer.json', 'content': '{\n  "files": [\n    {"repo": "sg-evals/bazel--8.0.0", "path": "src/main/java/net/starlark/java/eval/StarlarkThread.java"},\n    {"repo": "sg-evals/bazel--8.0.0", "path": "src/main/java/com/google/devtools/build/lib/packages/PackageFactory.java"},\n    {"repo": "sg-evals/bazel--8.0.0", "path": "src/main/java/com/google/devtools/build/lib/skyframe/BzlLoadFunction.java"},\n    {"repo": "sg-evals/bazel--8.0.0", "path": "src/main/java/com/google/devtools/build/lib/analysis/starlark/StarlarkRuleClassFunctions.java"},\n    {"repo": "sg-evals/bazel--8.0.0", "path": "src/main/java/com/google/devtools/build/lib/packages/Package.java"},\n    {"repo": "sg-evals/bazel--8.0.0", "path": "src/main/java/com/google/devtools/build/lib/packages/MacroClass.java"},\n    {"repo": "sg-evals/bazel--8.0.0", "path": "src/main/java/com/google/devtools/build/lib/packages/RuleFunction.java"},\n    {"repo": "sg-evals/bazel--8.0.0", "path": "src/main/java/com/google/devtools/build/lib/packages/RuleClass.java"},\n    {"repo": "sg-evals/bazel--8.0.0", "path": "src/main/java/com/google/devtools/build/lib/packages/RuleFactory.java"},\n    {"repo": "sg-evals/bazel--8.0.0", "path": "src/main/java/com/google/devtools/build/lib/packages/BazelStarlarkEnvironment.java"},\n    {"repo": "sg-evals/bazel--8.0.0", "path": "src/main/java/com/google/devtools/build/lib/packages/StarlarkGlobals.java"},\n    {"repo": "sg-evals/bazel--8.0.0", "path": "src/main/java/com/google/devtools/build/lib/analysis/starlark/StarlarkGlobalsImpl.java"},\n    {"repo": "sg-evals/bazel--8.0.0", "path": "src/main/java/com/google/devtools/build/lib/packages/BzlInitThreadContext.java"},\n    {"repo": "sg-evals/bazel--8.0.0", "path": "src/main/java/com/google/devtools/build/lib/starlarkbuildapi/StarlarkRuleFunctionsApi.java"},\n    {"repo": "sg-evals/bazel--8.0.0", "path": "src/main/java/com/google/devtools/build/lib/packages/StarlarkNativeModule.java"},\n    {"repo": "sg-evals/bazel--8.0.0", "path": "src/main/java/com/google/devtools/build/lib/packages/MacroInstance.java"},\n    {"repo": "sg-evals/bazel--8.0.0", "path": "src/main/java/com/google/devtools/build/lib/packages/BuildGlobals.java"},\n    {"repo": "sg-evals/bazel--8.0.0", "path": "src/main/java/com/google/devtools/build/lib/cmdline/StarlarkThreadContext.java"},\n    {"repo": "sg-evals/bazel--8.0.0", "path": "src/main/java/net/starlark/java/eval/Starlark.java"},\n    {"repo": "sg-evals/bazel--8.0.0", "path": "src/main/java/net/starlark/java/eval/Module.java"},\n    {"repo": "sg-evals/bazel--8.0.0", "path": "src/main/java/net/starlark/java/eval/Eval.java"},\n    {"repo": "sg-evals/bazel--8.0.0", "path": "src/main/java/com/google/devtools/build/lib/packages/TargetDefinitionContext.java"},\n    {"repo": "sg-evals/bazel--8.0.0", "path": "src/main/java/com/google/devtools/build/lib/packages/WorkspaceFactory.java"},\n    {"repo": "sg-evals/bazel--8.0.0", "path": "src/main/java/com/google/devtools/build/lib/skyframe/StarlarkBuiltinsFunction.java"},\n    {"repo": "sg-evals/bazel--8.0.0", "path": "src/main/java/com/google/devtools/build/lib/packages/AutoloadSymbols.java"}\n  ],\n  "symbols": [\n    {"repo": "sg-evals/bazel--8.0.0", "path": "src/main/java/net/starlark/java/eval/StarlarkThread.java", "symbol": "StarlarkThread"},\n    {"repo": "sg-evals/bazel--8.0.0", "path": "src/main/java/com/google/devtools/build/lib/packages/PackageFactory.java", "symbol": "PackageFactory"},\n    {"repo": "sg-evals/bazel--8.0.0", "path": "src/main/java/com/google/devtools/build/lib/skyframe/BzlLoadFunction.java", "symbol": "BzlLoadFunction"},\n    {"repo": "sg-evals/bazel--8.0.0", "path": "src/main/java/com/google/devtools/build/lib/analysis/starlark/StarlarkRuleClassFunctions.java", "symbol": "StarlarkRuleClassFunctions"},\n    {"repo": "sg-evals/bazel--8.0.0", "path": "src/main/java/com/google/devtools/build/lib/packages/Package.java", "symbol": "Package.Builder"},\n    {"repo": "sg-evals/baze...
Bash (0)

No bash commands.

Fable 5
baseline checkout, no MCP
0.594 rewardmean 0.574 (n=3)8 turns8 tools$1.12
Instruction sent
# Bazel Starlark Evaluation and BUILD File Migration Inventory

## Your Task

Find all Java source files in bazelbuild/bazel under src/main/java/com/google/devtools/build/lib/packages/ and src/main/java/net/starlark/ that implement Starlark evaluation for BUILD files. Identify: the StarlarkThread class and its environment setup, the PackageFactory that invokes Starlark evaluation, the BzlLoadFunction for .bzl file loading, the rule() and macro() builtin function implementations, and the Package.Builder that accumulates targets. Report each file path and key class.

## Context

You are working on a codebase task involving repos from the migration domain.

## Available Resources

## Output Format

Use the published task contract:

- `TASK_WORKDIR=/workspace`
- `TASK_REPO_ROOT=/workspace`
- `TASK_OUTPUT=/workspace/answer.json`

Create a file at `TASK_OUTPUT` (`/workspace/answer.json`) with your findings in the following structure:

```json
{
  "files": [
    {"repo": "org/repo-name", "path": "relative/path/to/file.go"}
  ],
  "symbols": [
    {"repo": "org/repo-name", "path": "relative/path/to/file.go", "symbol": "SymbolName"}
  ],
  "chain": [
    {"repo": "org/repo-name", "path": "relative/path/to/file.go", "symbol": "FunctionName"}
  ],
  "text": "Narrative explanation of your findings, citing repos and file paths."
}
```

Include only the fields relevant to this task. Your answer is evaluated against a closed-world oracle — completeness matters.

## Evaluation

Your answer will be scored on:
- **File recall and precision**: Did you find all relevant files?
Conversation (21)
#TypeToolText
1system-
2assistant-
I'll start by checking what's in the workspace, then locate the relevant Bazel source directories.
3assistantBash
4userBash
bazel--8.0.0
5assistantBash
6userBash
BUILD
BuiltinFunction.java
CallUtils.java
CpuProfiler.java
Debug.java
Dict.java
Eval.java
EvalException.java
EvalUtils.java
FlagGuardedValue.java
FormatParser.java
GuardedValue.java
HasBinary.java
ImmutableSingletonStarlarkList.java
ImmutableStarlarkList.java
JNI.java
LazyImmutableStarlarkList.java
MethodDescriptor.java
MethodLibrary.java
Module.java
Mutability.java
MutableStarlarkList.java
NoneType.java
ParamDescriptor.java
Printer.java
RangeList.java
RegularImmutableStarlarkList.java
RegularTuple.java
Sequence.java
SingletonTuple.java
Starlark.java
StarlarkCallable.java
StarlarkFloat.java
StarlarkFunction.java
StarlarkIndexable.java
StarlarkInt.java
StarlarkIterable.java
StarlarkList.java
StarlarkSemantics.java
StarlarkThread.java
StarlarkValue.java
StringModule.java
Structure.java
SymbolGenerator.java
Tuple.java
cpu_profiler_posix.cc
cpu_profiler_unimpl.cc
---
AbstractAttributeMapper.java
AdvertisedProviderSet.java
AggregatingAttributeMapper.java
AllowlistChecker.java
Aspect.java
AspectClass.java
AspectDefinition.java
AspectDescriptor.java
AspectParameters.java
AspectsList.java
Attribute.java
AttributeFormatter.java
AttributeMap.java
AttributeTransitionData.java
AttributeValueSource.java
AutoloadSymbols.java
BUILD
BazelStarlarkEnvironment.java
BuildFileContainsErrorsException.java
BuildFileName.java
BuildFileNotFoundException.java
BuildGlobals.java
BuildSetting.java
BuildType.java
BuilderFactoryForTesting.java
BuiltinProvider.java
BuiltinRestriction.java
BuiltinsInternalModule.java
BzlInitThreadContext.java
BzlVisibility.java
CachingPackageLocator.java
CallStack.java
ConfigurationFragmentPolicy.java
ConfiguredAttributeMapper.java
DefaultSetting.java
DelegatingAttributeMapper.java
DependencyFilter.java
DotBazelFileSyntaxChecker.java
EnumFilterConverter.java
Environmen...
7assistantBash
8userBash
StarlarkAspect.java
StarlarkAspectClass.java
StarlarkCallbackHelper.java
StarlarkDefinedAspect.java
StarlarkExportable.java
StarlarkGlobals.java
StarlarkInfo.java
StarlarkInfoNoSchema.java
StarlarkInfoWithMessage.java
StarlarkInfoWithSchema.java
StarlarkNativeAspect.java
StarlarkNativeModule.java
StarlarkProvider.java
StarlarkProviderIdentifier.java
StarlarkProviderWrapper.java
StructImpl.java
StructProvider.java
Target.java
TargetData.java
TargetDefinitionContext.java
TargetRecorder.java
TargetSuggester.java
TargetUtils.java
TestSize.java
TestSuiteImplicitTestsAccumulator.java
TestTargetUtils.java
TestTimeout.java
TriState.java
Type.java
Types.java
VendorFileGlobals.java
VendorThreadContext.java
VisibilityLicenseSpecifiedInputFile.java
WorkspaceFactory.java
WorkspaceFactoryHelper.java
WorkspaceFileValue.java
WorkspaceGlobals.java
metrics
producers
semantics
---
BUILD
annot
cmd
eval
lib
spelling
syntax
9assistant-
The directory structure is clear. Now let me locate the specific classes: BzlLoadFunction and the rule()/macro() builtin implementations.
10assistantBash
11userBash
src/main/java/com/google/devtools/build/lib/skyframe/BzlLoadFunction.java
src/main/java/com/google/devtools/build/lib/starlarkbuildapi/StarlarkRuleFunctionsApi.java
src/main/java/com/google/devtools/build/lib/analysis/starlark/StarlarkRuleClassFunctions.java
---
src/main/java/com/google/devtools/build/lib/packages/MacroClass.java
src/main/java/com/google/devtools/build/lib/packages/TargetRecorder.java
src/main/java/com/google/devtools/build/lib/packages/RuleFactory.java
12assistantBash
13userBash
src/main/java/com/google/devtools/build/lib/starlarkbuildapi/StarlarkRuleFunctionsApi.java:202:      name = "macro",
src/main/java/com/google/devtools/build/lib/starlarkbuildapi/StarlarkRuleFunctionsApi.java:429:      name = "rule",
---
1059:  public static class Builder extends TargetDefinitionContext {
---
47:public final class StarlarkThread {
---
80:public final class PackageFactory {
---
108:public class BzlLoadFunction implements SkyFunction {
1694:  private static final class BzlLoadFunctionException extends SkyFunctionException {
14assistantBash
15userBash
146:public class StarlarkRuleClassFunctions implements StarlarkRuleFunctionsApi {
362:  public MacroFunctionApi macro(
493:  public StarlarkRuleFunction rule(
1392:  public static final class MacroFunction implements StarlarkExportable, MacroFunctionApi {
2105:      return StarlarkRuleFunction.class;
---
59:public final class BazelStarlarkEnvironment {
52:public final class Module implements Resolver.Module {
286:   * {@link #executeBuildFile} after this caller has fully loaded the package.
344:  public void executeBuildFile(
377:      executeBuildFileImpl(
390:  private void executeBuildFileImpl(
416:        Starlark.execFileProgram(buildFileProgram, module, thread);
69:public abstract class TargetDefinitionContext extends StarlarkThreadContext {
16assistantBash
17userBash
33:public interface StarlarkGlobals {
36:public class BuildGlobals {
31: * This class encapsulates knowledge of how to set up the Starlark environment for BUILD, WORKSPACE,
56: *       BUILD files. This happens in {@link PackageFunction}.
61:  // TODO(#11954): Eventually the BUILD and WORKSPACE bzl dialects should converge. Right now they
81:  /** The {@code native} module fields for a BUILD-loaded bzl module, before builtins injection. */
84:   * The top-level predeclared symbols (including {@code native}) for a BUILD-loaded bzl module,
88:  /** The top-level predeclared symbols for BUILD files, before builtins injection and prelude. */
89:  private final ImmutableMap<String, Object> uninjectedBuildEnv;
110:   *     provider) top-level symbols for BUILD files, prior to builtins injection. These symbols are
56:final class Eval {
1047:    return execFileProgram(prog, module, thread);
1070:  public static Object execFileProgram(Program prog, Module module, StarlarkThread thread)
1074:    // A given Module may be passed to execFileProgram multiple times in sequence,
18assistant-
I have all the information needed. Writing the answer file now.
19assistantWrite
20userWrite
File created successfully at: /workspace/answer.json (file state is current in your context — no need to Read it back)
21assistant-
I located and verified all five requested components in the bazelbuild/bazel source tree (at `/workspace/bazel--8.0.0`) and wrote the inventory to `/workspace/answer.json`. Summary of findings:

**1. StarlarkThread and environment setup**
- `net/starlark/java/eval/StarlarkThread.java` — `StarlarkThread` (line 47), the interpreter thread holding the call stack, semantics, and mutability.
- `net/starlark/java/eval/Module.java` — `Module`, the per-file environment of predeclared bindings and globals.
- `lib/packages/BazelStarlarkEnvironment.java` — `BazelStarlarkEnvironment`, which "encapsulates knowledge of how to set up the Starlark environment for BUILD, WORKSPACE, and bzl files" (its own doc comment), including builtins injection; supported by `StarlarkGlobals.java` and `BuildGlobals.java`.
- `net/starlark/java/eval/Starlark.java` (`execFileProgram`) and `Eval.java` (the tree-walking interpreter) perform the actual evaluation.

**2. PackageFactory** — `lib/packages/PackageFactory.java`, whose `executeBuildFile`/`executeBuildFileImpl` (lines 344/390) create the thread and call `Starlark.execFileProgram` on the compiled BUILD program (line 416).

**3. BzlLoadFunction** — `lib/skyframe/BzlLoadFunction.java` (`class BzlLoadFunction implements SkyFunction`, line 108). This sits outside the two named directories but is the canonical .bzl loader, so I included it.

**4. rule() and macro() builtins** — `lib/analysis/starlark/StarlarkRuleClassFunctions.java`: `macro(...)` at line 362, `rule(...)` at line 493, returning the nested `MacroFunction` and `StarlarkRuleFunction` callables. The `@StarlarkMethod(name = "rule")` / `name = "macro"` declarations are on the interface `lib/starlarkbuildapi/StarlarkRuleFunctionsApi.java` (lines 429/202). `lib/packages/MacroClass.java` holds t...
Tool calls (8)
1. Bash

Input

{
  "command": "ls /workspace/ && ls /workspace/src/main/java/com/google/devtools/build/lib/packages/ 2>/dev/null | head -50",
  "description": "List workspace and packages directory"
}

Output

{'stdout': 'bazel--8.0.0', 'stderr': '', 'interrupted': False, 'isImage': False, 'noOutputExpected': False}
2. Bash

Input

{
  "command": "ls /workspace/bazel--8.0.0/src/main/java/net/starlark/java/eval/ | head -60; echo ---; ls /workspace/bazel--8.0.0/src/main/java/com/google/devtools/build/lib/packages/ | head -100",
  "description": "List starlark eval and packages directories"
}

Output

{'stdout': 'BUILD\nBuiltinFunction.java\nCallUtils.java\nCpuProfiler.java\nDebug.java\nDict.java\nEval.java\nEvalException.java\nEvalUtils.java\nFlagGuardedValue.java\nFormatParser.java\nGuardedValue.java\nHasBinary.java\nImmutableSingletonStarlarkList.java\nImmutableStarlarkList.java\nJNI.java\nLazyImmutableStarlarkList.java\nMethodDescriptor.java\nMethodLibrary.java\nModule.java\nMutability.java\nMutableStarlarkList.java\nNoneType.java\nParamDescriptor.java\nPrinter.java\nRangeList.java\nRegularImmutableStarlarkList.java\nRegularTuple.java\nSequence.java\nSingletonTuple.java\nStarlark.java\nStarlarkCallable.java\nStarlarkFloat.java\nStarlarkFunction.java\nStarlarkIndexable.java\nStarlarkInt.java\nStarlarkIterable.java\nStarlarkList.java\nStarlarkSemantics.java\nStarlarkThread.java\nStarlarkValue.java\nStringModule.java\nStructure.java\nSymbolGenerator.java\nTuple.java\ncpu_profiler_posix.cc\ncpu_profiler_unimpl.cc\n---\nAbstractAttributeMapper.java\nAdvertisedProviderSet.java\nAggregatingAttributeMapper.java\nAllowlistChecker.java\nAspect.java\nAspectClass.java\nAspectDefinition.java\nAspectDescriptor.java\nAspectParameters.java\nAspectsList.java\nAttribute.java\nAttributeFormatter.java\nAttributeMap.java\nAttributeTransitionData.java\nAttributeValueSource.java\nAutoloadSymbols.java\nBUILD\nBazelStarlarkEnvironment.java\nBuildFileContainsErrorsException.java\nBuildFileName.java\nBuildFileNotFoundException.java\nBuildGlobals.java\nBuildSetting.java\nBuildType.java\nBuilderFactoryForTesting.java\nBuiltinProvider.java\nBuiltinRestriction.java\nBuiltinsInternalModule.java\nBzlInitThreadContext.java\nBzlVisibility.java\nCachingPackageLocator.java\nCallStack.java\nConfigurationFragmentPolicy.java\nConfiguredAttributeMapper.java\nDefaultSetting.java\nDelegatingAttributeMapper.java\nDependencyFilter.java\nDotBazelFileSyntaxChecker.java\nEnumFilterConverter.java\nEnvironmentGroup.java\nEnvironmentLabels.java\nErrorDeterminingRepositoryException.java\nExecGroup.java\nFileTarget.java\nFunctionSplitTransitionAllowlist.java\nGlobCache.java\nGlobber.java\nGlobberUtils.java\nImplicitOutputsFunction.java\nInfo.java\nInputFile.java\nInvalidPackageNameException.java\nLabelConverter.java\nLabelPrinter.java\nLabelVisitationUtils.java\nLicense.java\nMacroClass.java\nMacroInstance.java\nMaterializingDefault.java\nNativeAspectClass.java\nNativeInfo.java\nNoSuchPackageException.java\nNoSuchTargetException.java\nNoSuchThingException.java\nNonSkyframeGlobber.java\nNonconfigurableAttributeMapper.java\nNonconfiguredAttributeMapper.java\nOutputFile.java\nPackage.java\nPackageArgs.java\nPackageCallable.java\nPackageCodecDependencies.java\nPackageFactory.java\nPackageGroup.java\nPackageGroupsRuleVisibility.java\nPackageLoadingListener.java\nPackageOverheadEstimator.java\nPackageSerializerInterface.java\nPackageSpecification.java\nPackageValidator.java\nPredicateWithMessage.java\nPrivateVisibilityInputFile.java\nProto.java\nProtoUtils.java\nProvider.java\nRawAttributeMapper.java\nRelativePackageNameResolver.java\nRepoFileGlobals.java\nRepoThreadContext.java\nRepositoryFetchException.java\nRequiredProviders.java\nRule.java\nRuleClass.java\nRuleClassData.java\nRuleClassId.java\nRuleClassProvider.java\nRuleClassUtils.java\nRuleCodec.java\nRuleDataCodec.java\nRuleFactory.java', 'stderr': '', 'interrupted': False, 'isImage': False, 'noOutputExpected': False}
3. Bash

Input

{
  "command": "ls /workspace/bazel--8.0.0/src/main/java/com/google/devtools/build/lib/packages/ | tail -40; echo ---; ls /workspace/bazel--8.0.0/src/main/java/net/starlark/java/",
  "description": "List rest of packages dir and net/starlark/java"
}

Output

{'stdout': 'StarlarkAspect.java\nStarlarkAspectClass.java\nStarlarkCallbackHelper.java\nStarlarkDefinedAspect.java\nStarlarkExportable.java\nStarlarkGlobals.java\nStarlarkInfo.java\nStarlarkInfoNoSchema.java\nStarlarkInfoWithMessage.java\nStarlarkInfoWithSchema.java\nStarlarkNativeAspect.java\nStarlarkNativeModule.java\nStarlarkProvider.java\nStarlarkProviderIdentifier.java\nStarlarkProviderWrapper.java\nStructImpl.java\nStructProvider.java\nTarget.java\nTargetData.java\nTargetDefinitionContext.java\nTargetRecorder.java\nTargetSuggester.java\nTargetUtils.java\nTestSize.java\nTestSuiteImplicitTestsAccumulator.java\nTestTargetUtils.java\nTestTimeout.java\nTriState.java\nType.java\nTypes.java\nVendorFileGlobals.java\nVendorThreadContext.java\nVisibilityLicenseSpecifiedInputFile.java\nWorkspaceFactory.java\nWorkspaceFactoryHelper.java\nWorkspaceFileValue.java\nWorkspaceGlobals.java\nmetrics\nproducers\nsemantics\n---\nBUILD\nannot\ncmd\neval\nlib\nspelling\nsyntax', 'stderr': '', 'interrupted': False, 'isImage': False, 'noOutputExpected': False}
4. Bash

Input

{
  "command": "cd /workspace/bazel--8.0.0 && find src/main/java -name \"BzlLoadFunction.java\" -o -name \"StarlarkRuleClassFunctions.java\" -o -name \"StarlarkRuleFunctions*.java\" 2>/dev/null; echo ---; grep -rln '\"macro\"' src/main/java/com/google/devtools/build/lib/analysis/starlark/ src/main/java/com/google/devtools/build/lib/packages/ 2>/dev/null | head",
  "description": "Find BzlLoadFunction and rule()/macro() builtins"
}

Output

{'stdout': 'src/main/java/com/google/devtools/build/lib/skyframe/BzlLoadFunction.java\nsrc/main/java/com/google/devtools/build/lib/starlarkbuildapi/StarlarkRuleFunctionsApi.java\nsrc/main/java/com/google/devtools/build/lib/analysis/starlark/StarlarkRuleClassFunctions.java\n---\nsrc/main/java/com/google/devtools/build/lib/packages/MacroClass.java\nsrc/main/java/com/google/devtools/build/lib/packages/TargetRecorder.java\nsrc/main/java/com/google/devtools/build/lib/packages/RuleFactory.java', 'stderr': '', 'interrupted': False, 'isImage': False, 'noOutputExpected': False}
5. Bash

Input

{
  "command": "grep -n 'name = \"rule\"\\|name = \"macro\"' src/main/java/com/google/devtools/build/lib/analysis/starlark/StarlarkRuleClassFunctions.java src/main/java/com/google/devtools/build/lib/starlarkbuildapi/StarlarkRuleFunctionsApi.java | head; echo ---; grep -n \"class Builder\" src/main/java/com/google/devtools/build/lib/packages/Package.java | head -5; echo ---; grep -n \"public final class StarlarkThread\\|public class StarlarkThread\" src/main/java/net/starlark/java/eval/StarlarkThread.java; echo ---; grep -n \"class PackageFactory\" src/main/java/com/google/devtools/build/lib/packages/PackageFactory.java | head -3; echo ---; grep -n \"class BzlLoadFunction\" src/main/java/com/google/devtools/build/lib/skyframe/BzlLoadFunction.java | head -3",
  "description": "Verify key classes and builtin definitions"
}

Output

{'stdout': 'src/main/java/com/google/devtools/build/lib/starlarkbuildapi/StarlarkRuleFunctionsApi.java:202:      name = "macro",\nsrc/main/java/com/google/devtools/build/lib/starlarkbuildapi/StarlarkRuleFunctionsApi.java:429:      name = "rule",\n---\n1059:  public static class Builder extends TargetDefinitionContext {\n---\n47:public final class StarlarkThread {\n---\n80:public final class PackageFactory {\n---\n108:public class BzlLoadFunction implements SkyFunction {\n1694:  private static final class BzlLoadFunctionException extends SkyFunctionException {', 'stderr': '', 'interrupted': False, 'isImage': False, 'noOutputExpected': False}
6. Bash

Input

{
  "command": "grep -n \"public StarlarkRuleFunction rule\\|public Object rule\\|public.*macro(\\|StarlarkRuleFunction\\b.*class\\|class MacroFunction\\|implements StarlarkRuleFunctionsApi\" src/main/java/com/google/devtools/build/lib/analysis/starlark/StarlarkRuleClassFunctions.java | head; echo ---; grep -n \"class BazelStarlarkEnvironment\" src/main/java/com/google/devtools/build/lib/packages/BazelStarlarkEnvironment.java; grep -n \"class Module\" src/main/java/net/starlark/java/eval/Module.java | head -2; grep -n \"execFileProgram\\|executeBuildFile\\|compileBuildFile\" src/main/java/com/google/devtools/build/lib/packages/PackageFactory.java | head; grep -n \"class TargetDefinitionContext\" src/main/java/com/google/devtools/build/lib/packages/TargetDefinitionContext.java | head -2",
  "description": "Verify rule/macro implementations and environment classes"
}

Output

{'stdout': '146:public class StarlarkRuleClassFunctions implements StarlarkRuleFunctionsApi {\n362:  public MacroFunctionApi macro(\n493:  public StarlarkRuleFunction rule(\n1392:  public static final class MacroFunction implements StarlarkExportable, MacroFunctionApi {\n2105:      return StarlarkRuleFunction.class;\n---\n59:public final class BazelStarlarkEnvironment {\n52:public final class Module implements Resolver.Module {\n286:   * {@link #executeBuildFile} after this caller has fully loaded the package.\n344:  public void executeBuildFile(\n377:      executeBuildFileImpl(\n390:  private void executeBuildFileImpl(\n416:        Starlark.execFileProgram(buildFileProgram, module, thread);\n69:public abstract class TargetDefinitionContext extends StarlarkThreadContext {', 'stderr': '', 'interrupted': False, 'isImage': False, 'noOutputExpected': False}
7. Bash

Input

{
  "command": "grep -n \"class StarlarkGlobals\\|interface StarlarkGlobals\" src/main/java/com/google/devtools/build/lib/packages/StarlarkGlobals.java; grep -n \"class BuildGlobals\" src/main/java/com/google/devtools/build/lib/packages/BuildGlobals.java; grep -n \"newBuildModule\\|uninjectedBuildEnv\\|BUILD\" src/main/java/com/google/devtools/build/lib/packages/BazelStarlarkEnvironment.java | head -8; grep -n \"class Eval\" src/main/java/net/starlark/java/eval/Eval.java | head -2; grep -n \"execFileProgram\" src/main/java/net/starlark/java/eval/Starlark.java | head -3",
  "description": "Check environment setup helper classes"
}

Output

{'stdout': '33:public interface StarlarkGlobals {\n36:public class BuildGlobals {\n31: * This class encapsulates knowledge of how to set up the Starlark environment for BUILD, WORKSPACE,\n56: *       BUILD files. This happens in {@link PackageFunction}.\n61:  // TODO(#11954): Eventually the BUILD and WORKSPACE bzl dialects should converge. Right now they\n81:  /** The {@code native} module fields for a BUILD-loaded bzl module, before builtins injection. */\n84:   * The top-level predeclared symbols (including {@code native}) for a BUILD-loaded bzl module,\n88:  /** The top-level predeclared symbols for BUILD files, before builtins injection and prelude. */\n89:  private final ImmutableMap<String, Object> uninjectedBuildEnv;\n110:   *     provider) top-level symbols for BUILD files, prior to builtins injection. These symbols are\n56:final class Eval {\n1047:    return execFileProgram(prog, module, thread);\n1070:  public static Object execFileProgram(Program prog, Module module, StarlarkThread thread)\n1074:    // A given Module may be passed to execFileProgram multiple times in sequence,', 'stderr': '', 'interrupted': False, 'isImage': False, 'noOutputExpected': False}
8. Write

Input

{
  "file_path": "/workspace/answer.json",
  "content": "{\n  \"files\": [\n    {\"repo\": \"bazelbuild/bazel\", \"path\": \"src/main/java/net/starlark/java/eval/StarlarkThread.java\"},\n    {\"repo\": \"bazelbuild/bazel\", \"path\": \"src/main/java/net/starlark/java/eval/Module.java\"},\n    {\"repo\": \"bazelbuild/bazel\", \"path\": \"src/main/java/net/starlark/java/eval/Starlark.java\"},\n    {\"repo\": \"bazelbuild/bazel\", \"path\": \"src/main/java/net/starlark/java/eval/Eval.java\"},\n    {\"repo\": \"bazelbuild/bazel\", \"path\": \"src/main/java/com/google/devtools/build/lib/packages/BazelStarlarkEnvironment.java\"},\n    {\"repo\": \"bazelbuild/bazel\", \"path\": \"src/main/java/com/google/devtools/build/lib/packages/StarlarkGlobals.java\"},\n    {\"repo\": \"bazelbuild/bazel\", \"path\": \"src/main/java/com/google/devtools/build/lib/packages/BuildGlobals.java\"},\n    {\"repo\": \"bazelbuild/bazel\", \"path\": \"src/main/java/com/google/devtools/build/lib/packages/PackageFactory.java\"},\n    {\"repo\": \"bazelbuild/bazel\", \"path\": \"src/main/java/com/google/devtools/build/lib/skyframe/BzlLoadFunction.java\"},\n    {\"repo\": \"bazelbuild/bazel\", \"path\": \"src/main/java/com/google/devtools/build/lib/analysis/starlark/StarlarkRuleClassFunctions.java\"},\n    {\"repo\": \"bazelbuild/bazel\", \"path\": \"src/main/java/com/google/devtools/build/lib/starlarkbuildapi/StarlarkRuleFunctionsApi.java\"},\n    {\"repo\": \"bazelbuild/bazel\", \"path\": \"src/main/java/com/google/devtools/build/lib/packages/MacroClass.java\"},\n    {\"repo\": \"bazelbuild/bazel\", \"path\": \"src/main/java/com/google/devtools/build/lib/packages/Package.java\"},\n    {\"repo\": \"bazelbuild/bazel\", \"path\": \"src/main/java/com/google/devtools/build/lib/packages/TargetDefinitionContext.java\"},\n    {\"repo\": \"bazelbuild/bazel\", \"path\": \"src/main/java/com/google/devtools/build/lib/packages/RuleFactory.java\"}\n  ],\n  \"symbols\": [\n    {\"repo\": \"bazelbuild/bazel\", \"path\": \"src/main/java/net/starlark/java/eval/StarlarkThread.java\", \"symbol\": \"StarlarkThread\"},\n    {\"repo\": \"bazelbuild/bazel\", \"path\": \"src/main/java/net/starlark/java/eval/Module.java\", \"symbol\": \"Module\"},\n    {\"repo\": \"bazelbuild/bazel\", \"path\": \"src/main/java/net/starlark/java/eval/Starlark.java\", \"symbol\": \"Starlark.execFileProgram\"},\n    {\"repo\": \"bazelbuild/bazel\", \"path\": \"src/main/java/net/starlark/java/eval/Eval.java\", \"symbol\": \"Eval\"},\n    {\"repo\": \"bazelbuild/bazel\", \"path\": \"src/main/java/com/google/devtools/build/lib/packages/BazelStarlarkEnvironment.java\", \"symbol\": \"BazelStarlarkEnvironment\"},\n    {\"repo\": \"bazelbuild/bazel\", \"path\": \"src/main/java/com/google/devtools/build/lib/packages/StarlarkGlobals.java\", \"symbol\": \"StarlarkGlobals\"},\n    {\"repo\": \"bazelbuild/bazel\", \"path\": \"src/main/java/com/google/devtools/build/lib/packages/BuildGlobals.java\", \"symbol\": \"BuildGlobals\"},\n    {\"repo\": \"bazelbuild/bazel\", \"path\": \"src/main/java/com/google/devtools/build/lib/packages/PackageFactory.java\", \"symbol\": \"PackageFactory\"},\n    {\"repo\": \"bazelbuild/bazel\", \"path\": \"src/main/java/com/google/devtools/build/lib/skyframe/BzlLoadFunction.java\", \"symbol\": \"BzlLoadFunction\"},\n    {\"repo\": \"bazelbuild/bazel\", \"path\": \"src/main/java/com/google/devtools/build/lib/analysis/starlark/StarlarkRuleClassFunctions.java\", \"symbol\": \"StarlarkRuleClassFunctions\"},\n    {\"repo\": \"bazelbuild/bazel\", \"path\": \"src/main/java/com/google/devtools/build/lib/analysis/starlark/StarlarkRuleClassFunctions.java\", \"symbol\": \"StarlarkRuleClassFunctions.StarlarkRuleFunction\"},\n    {\"repo\": \"bazelbuild/bazel\", \"path\": \"src/main/java/com/google/devtools/build/lib/analysis/starlark/StarlarkRuleClassFunctions.java\", \"symbol\": \"StarlarkRuleClassFunctions.MacroFunction\"},\n    {\"repo\": \"bazelbuild/bazel\", \"path\": \"src/main/java/com/google/
...

Output

{'type': 'create', 'filePath': '/workspace/answer.json', 'content': '{\n  "files": [\n    {"repo": "bazelbuild/bazel", "path": "src/main/java/net/starlark/java/eval/StarlarkThread.java"},\n    {"repo": "bazelbuild/bazel", "path": "src/main/java/net/starlark/java/eval/Module.java"},\n    {"repo": "bazelbuild/bazel", "path": "src/main/java/net/starlark/java/eval/Starlark.java"},\n    {"repo": "bazelbuild/bazel", "path": "src/main/java/net/starlark/java/eval/Eval.java"},\n    {"repo": "bazelbuild/bazel", "path": "src/main/java/com/google/devtools/build/lib/packages/BazelStarlarkEnvironment.java"},\n    {"repo": "bazelbuild/bazel", "path": "src/main/java/com/google/devtools/build/lib/packages/StarlarkGlobals.java"},\n    {"repo": "bazelbuild/bazel", "path": "src/main/java/com/google/devtools/build/lib/packages/BuildGlobals.java"},\n    {"repo": "bazelbuild/bazel", "path": "src/main/java/com/google/devtools/build/lib/packages/PackageFactory.java"},\n    {"repo": "bazelbuild/bazel", "path": "src/main/java/com/google/devtools/build/lib/skyframe/BzlLoadFunction.java"},\n    {"repo": "bazelbuild/bazel", "path": "src/main/java/com/google/devtools/build/lib/analysis/starlark/StarlarkRuleClassFunctions.java"},\n    {"repo": "bazelbuild/bazel", "path": "src/main/java/com/google/devtools/build/lib/starlarkbuildapi/StarlarkRuleFunctionsApi.java"},\n    {"repo": "bazelbuild/bazel", "path": "src/main/java/com/google/devtools/build/lib/packages/MacroClass.java"},\n    {"repo": "bazelbuild/bazel", "path": "src/main/java/com/google/devtools/build/lib/packages/Package.java"},\n    {"repo": "bazelbuild/bazel", "path": "src/main/java/com/google/devtools/build/lib/packages/TargetDefinitionContext.java"},\n    {"repo": "bazelbuild/bazel", "path": "src/main/java/com/google/devtools/build/lib/packages/RuleFactory.java"}\n  ],\n  "symbols": [\n    {"repo": "bazelbuild/bazel", "path": "src/main/java/net/starlark/java/eval/StarlarkThread.java", "symbol": "StarlarkThread"},\n    {"repo": "bazelbuild/bazel", "path": "src/main/java/net/starlark/java/eval/Module.java", "symbol": "Module"},\n    {"repo": "bazelbuild/bazel", "path": "src/main/java/net/starlark/java/eval/Starlark.java", "symbol": "Starlark.execFileProgram"},\n    {"repo": "bazelbuild/bazel", "path": "src/main/java/net/starlark/java/eval/Eval.java", "symbol": "Eval"},\n    {"repo": "bazelbuild/bazel", "path": "src/main/java/com/google/devtools/build/lib/packages/BazelStarlarkEnvironment.java", "symbol": "BazelStarlarkEnvironment"},\n    {"repo": "bazelbuild/bazel", "path": "src/main/java/com/google/devtools/build/lib/packages/StarlarkGlobals.java", "symbol": "StarlarkGlobals"},\n    {"repo": "bazelbuild/bazel", "path": "src/main/java/com/google/devtools/build/lib/packages/BuildGlobals.java", "symbol": "BuildGlobals"},\n    {"repo": "bazelbuild/bazel", "path": "src/main/java/com/google/devtools/build/lib/packages/PackageFactory.java", "symbol": "PackageFactory"},\n    {"repo": "bazelbuild/bazel", "path": "src/main/java/com/google/devtools/build/lib/skyframe/BzlLoadFunction.java", "symbol": "BzlLoadFunction"},\n    {"repo": "bazelbuild/bazel", "path": "src/main/java/com/google/devtools/build/lib/analysis/starlark/StarlarkRuleClassFunctions.java", "symbol": "StarlarkRuleClassFunctions"},\n    {"repo": "bazelbuild/bazel", "path": "src/main/java/com/google/devtools/build/lib/analysis/starlark/StarlarkRuleClassFunctions.java", "symbol": "StarlarkRuleClassFunctions.StarlarkRuleFunction"},\n    {"repo": "bazelbuild/bazel", "path": "src/main/java/com/google/devtools/build/lib/analysis/starlark/StarlarkRuleClassFunctions.java", "symbol": "StarlarkRuleClassFunctions.MacroFunction"},\n    {"repo": "bazelbuild/bazel", "path": "src/main/java/com/google/devtools/build/lib/starlarkbuildapi/StarlarkRuleFunctionsApi.java", "symbol": "StarlarkRuleFunctionsApi"},\n    {"repo": "bazelbuild/bazel", "path": "src/main/java/com/google/devtools/build/lib/packages/MacroClass.java", "symbol": "MacroClass"},\n    {"repo": "ba...
Bash (7)
1. $ ls /workspace/ && ls /workspace/src/main/java/com/google/devtools/build/lib/packages/ 2>/dev/null | head -50
2. $ ls /workspace/bazel--8.0.0/src/main/java/net/starlark/java/eval/ | head -60; echo ---; ls /workspace/bazel--8.0.0/src/main/java/com/google/devtools/build/lib/packages/ | head -100
3. $ ls /workspace/bazel--8.0.0/src/main/java/com/google/devtools/build/lib/packages/ | tail -40; echo ---; ls /workspace/bazel--8.0.0/src/main/java/net/starlark/java/
4. $ cd /workspace/bazel--8.0.0 && find src/main/java -name "BzlLoadFunction.java" -o -name "StarlarkRuleClassFunctions.java" -o -name "StarlarkRuleFunctions*.java" 2>/dev/null; echo ---; grep -rln '"macro"' src/main/java/com/google/devtools/build/lib/analysis/starlark/ src/main/java/com/google/devtools/build/lib/packages/ 2>/dev/null | head
5. $ grep -n 'name = "rule"\|name = "macro"' src/main/java/com/google/devtools/build/lib/analysis/starlark/StarlarkRuleClassFunctions.java src/main/java/com/google/devtools/build/lib/starlarkbuildapi/StarlarkRuleFunctionsApi.java | head; echo ---; grep -n "class Builder" src/main/java/com/google/devtools/build/lib/packages/Package.java | head -5; echo ---; grep -n "public final class StarlarkThread\|public class StarlarkThread" src/main/java/net/starlark/java/eval/StarlarkThread.java; echo ---; grep -n "class PackageFactory" src/main/java/com/google/devtools/build/lib/packages/PackageFactory.java | head -3; echo ---; grep -n "class BzlLoadFunction" src/main/java/com/google/devtools/build/lib/skyframe/BzlLoadFunction.java | head -3
6. $ grep -n "public StarlarkRuleFunction rule\|public Object rule\|public.*macro(\|StarlarkRuleFunction\b.*class\|class MacroFunction\|implements StarlarkRuleFunctionsApi" src/main/java/com/google/devtools/build/lib/analysis/starlark/StarlarkRuleClassFunctions.java | head; echo ---; grep -n "class BazelStarlarkEnvironment" src/main/java/com/google/devtools/build/lib/packages/BazelStarlarkEnvironment.java; grep -n "class Module" src/main/java/net/starlark/java/eval/Module.java | head -2; grep -n "execFileProgram\|executeBuildFile\|compileBuildFile" src/main/java/com/google/devtools/build/lib/packages/PackageFactory.java | head; grep -n "class TargetDefinitionContext" src/main/java/com/google/devtools/build/lib/packages/TargetDefinitionContext.java | head -2
7. $ grep -n "class StarlarkGlobals\|interface StarlarkGlobals" src/main/java/com/google/devtools/build/lib/packages/StarlarkGlobals.java; grep -n "class BuildGlobals" src/main/java/com/google/devtools/build/lib/packages/BuildGlobals.java; grep -n "newBuildModule\|uninjectedBuildEnv\|BUILD" src/main/java/com/google/devtools/build/lib/packages/BazelStarlarkEnvironment.java | head -8; grep -n "class Eval" src/main/java/net/starlark/java/eval/Eval.java | head -2; grep -n "execFileProgram" src/main/java/net/starlark/java/eval/Starlark.java | head -3