소스 검색

chore: generate

opencode-agent[bot] 3 달 전
부모
커밋
dc7d665e94
4개의 변경된 파일114개의 추가작업 그리고 24개의 파일을 삭제
  1. 56 17
      packages/opencode/src/tool/repo_overview.ts
  2. 5 1
      packages/opencode/src/util/repository.ts
  3. 0 6
      packages/sdk/js/src/v2/gen/types.gen.ts
  4. 53 0
      packages/sdk/openapi.json

+ 56 - 17
packages/opencode/src/tool/repo_overview.ts

@@ -17,7 +17,7 @@ export const Parameters = Schema.Struct({
   }),
   depth: Schema.optional(Schema.Number).annotate({
     description: "Maximum structure depth to include. Defaults to 3.",
-  })
+  }),
 })
 
 type Metadata = {
@@ -33,7 +33,17 @@ type Metadata = {
   truncated: boolean
 }
 
-const IGNORED_DIRS = new Set([".git", "node_modules", "__pycache__", ".venv", "dist", "build", ".next", "target", "vendor"])
+const IGNORED_DIRS = new Set([
+  ".git",
+  "node_modules",
+  "__pycache__",
+  ".venv",
+  "dist",
+  "build",
+  ".next",
+  "target",
+  "vendor",
+])
 const STRUCTURE_LIMIT = 200
 const DEPENDENCY_FILES = [
   "package.json",
@@ -73,7 +83,19 @@ function ecosystems(files: Set<string>) {
 }
 
 function commonEntrypoints(files: Set<string>) {
-  return ["index.ts", "index.tsx", "index.js", "index.mjs", "main.ts", "main.js", "src/index.ts", "src/index.tsx", "src/index.js", "src/main.ts", "src/main.js"].filter((file) => files.has(file))
+  return [
+    "index.ts",
+    "index.tsx",
+    "index.js",
+    "index.mjs",
+    "main.ts",
+    "main.js",
+    "src/index.ts",
+    "src/index.tsx",
+    "src/index.js",
+    "src/main.ts",
+    "src/main.js",
+  ].filter((file) => files.has(file))
 }
 
 export const RepoOverviewTool = Tool.define<typeof Parameters, Metadata, AppFileSystem.Service | Git.Service>(
@@ -82,7 +104,9 @@ export const RepoOverviewTool = Tool.define<typeof Parameters, Metadata, AppFile
     const fs = yield* AppFileSystem.Service
     const git = yield* Git.Service
 
-    const resolveTarget = Effect.fn("RepoOverviewTool.resolveTarget")(function* (params: Schema.Schema.Type<typeof Parameters>) {
+    const resolveTarget = Effect.fn("RepoOverviewTool.resolveTarget")(function* (
+      params: Schema.Schema.Type<typeof Parameters>,
+    ) {
       if (params.path) {
         const full = path.isAbsolute(params.path) ? params.path : path.resolve(Instance.directory, params.path)
         return { path: full, repository: params.repository }
@@ -104,7 +128,10 @@ export const RepoOverviewTool = Tool.define<typeof Parameters, Metadata, AppFile
       let truncated = false
       const lines: string[] = []
 
-      const visit: (dir: string, level: number) => Effect.Effect<void> = Effect.fnUntraced(function* (dir: string, level: number) {
+      const visit: (dir: string, level: number) => Effect.Effect<void> = Effect.fnUntraced(function* (
+        dir: string,
+        level: number,
+      ) {
         if (level >= depth || lines.length >= STRUCTURE_LIMIT) {
           truncated = truncated || lines.length >= STRUCTURE_LIMIT
           return
@@ -150,7 +177,8 @@ export const RepoOverviewTool = Tool.define<typeof Parameters, Metadata, AppFile
       execute: (params: Schema.Schema.Type<typeof Parameters>, ctx: Tool.Context<Metadata>) =>
         Effect.gen(function* () {
           const target = yield* resolveTarget(params)
-          const depth = !params.depth || !Number.isInteger(params.depth) || params.depth < 1 || params.depth > 6 ? 3 : params.depth
+          const depth =
+            !params.depth || !Number.isInteger(params.depth) || params.depth < 1 || params.depth > 6 ? 3 : params.depth
 
           yield* assertExternalDirectoryEffect(ctx, target.path, { kind: "directory" })
           yield* ctx.ask({
@@ -166,7 +194,8 @@ export const RepoOverviewTool = Tool.define<typeof Parameters, Metadata, AppFile
 
           const info = yield* fs.stat(target.path).pipe(Effect.catch(() => Effect.succeed(undefined)))
           if (!info) {
-            if (target.repository) throw new Error(`Repository is not cloned: ${target.repository}. Use repo_clone first.`)
+            if (target.repository)
+              throw new Error(`Repository is not cloned: ${target.repository}. Use repo_clone first.`)
             throw new Error(`Directory not found: ${target.path}`)
           }
           if (info.type !== "Directory") throw new Error(`Path is not a directory: ${target.path}`)
@@ -175,7 +204,9 @@ export const RepoOverviewTool = Tool.define<typeof Parameters, Metadata, AppFile
           const topLevel = new Set(entries.map((entry) => entry.name))
           const dependencyFiles = DEPENDENCY_FILES.filter((file) => topLevel.has(file))
           const packageJson = topLevel.has("package.json")
-            ? (yield* fs.readJson(path.join(target.path, "package.json")).pipe(Effect.orElseSucceed(() => ({})))) as Record<string, unknown>
+            ? ((yield* fs
+                .readJson(path.join(target.path, "package.json"))
+                .pipe(Effect.orElseSucceed(() => ({})))) as Record<string, unknown>)
             : {}
 
           const entrypoints = [
@@ -187,16 +218,20 @@ export const RepoOverviewTool = Tool.define<typeof Parameters, Metadata, AppFile
               ? Object.keys(packageJson.bin as Record<string, unknown>).map((name) => `bin: ${name}`)
               : []),
             ...(packageJson.exports && typeof packageJson.exports === "object" && !Array.isArray(packageJson.exports)
-              ? Object.keys(packageJson.exports as Record<string, unknown>).slice(0, 10).map((name) => `exports: ${name}`)
+              ? Object.keys(packageJson.exports as Record<string, unknown>)
+                  .slice(0, 10)
+                  .map((name) => `exports: ${name}`)
               : []),
           ]
 
-          const common = commonEntrypoints(new Set([
-            ...topLevel,
-            ...entries
-              .filter((entry) => entry.name === "src")
-              .flatMap(() => ["src/index.ts", "src/index.tsx", "src/index.js", "src/main.ts", "src/main.js"]),
-          ]))
+          const common = commonEntrypoints(
+            new Set([
+              ...topLevel,
+              ...entries
+                .filter((entry) => entry.name === "src")
+                .flatMap(() => ["src/index.ts", "src/index.tsx", "src/index.js", "src/main.ts", "src/main.js"]),
+            ]),
+          )
           const structureResult = yield* structure(target.path, depth)
           const branch = yield* git.branch(target.path)
           const head = yield* git.run(["rev-parse", "HEAD"], { cwd: target.path })
@@ -225,8 +260,12 @@ export const RepoOverviewTool = Tool.define<typeof Parameters, Metadata, AppFile
               ...(headText ? [`HEAD: ${headText}`] : []),
               ...(metadata.ecosystems.length ? [`Ecosystems: ${metadata.ecosystems.join(", ")}`] : []),
               ...(metadata.package_manager ? [`Package manager: ${metadata.package_manager}`] : []),
-              ...(metadata.dependency_files.length ? [`Dependency files: ${metadata.dependency_files.join(", ")}`] : []),
-              ...(metadata.entrypoints.length ? ["Likely entrypoints:", ...metadata.entrypoints.map((entry) => `- ${entry}`)] : []),
+              ...(metadata.dependency_files.length
+                ? [`Dependency files: ${metadata.dependency_files.join(", ")}`]
+                : []),
+              ...(metadata.entrypoints.length
+                ? ["Likely entrypoints:", ...metadata.entrypoints.map((entry) => `- ${entry}`)]
+                : []),
               "Top-level structure:",
               ...structureResult.lines,
               ...(structureResult.truncated ? ["(Structure truncated)"] : []),

+ 5 - 1
packages/opencode/src/util/repository.ts

@@ -14,7 +14,11 @@ export type Reference = {
 }
 
 function normalize(input: string) {
-  return input.trim().replace(/^git\+/, "").replace(/#.*$/, "").replace(/\/+$/, "")
+  return input
+    .trim()
+    .replace(/^git\+/, "")
+    .replace(/#.*$/, "")
+    .replace(/\/+$/, "")
 }
 
 function trimGitSuffix(input: string) {

+ 0 - 6
packages/sdk/js/src/v2/gen/types.gen.ts

@@ -908,9 +908,6 @@ export type ReferenceConfigEntry =
        * Git repository URL, host/path reference, or GitHub owner/repo shorthand
        */
       repository: string
-      /**
-       * Branch or ref Scout should clone and inspect
-       */
       branch?: string
     }
   | {
@@ -920,9 +917,6 @@ export type ReferenceConfigEntry =
       path: string
     }
 
-/**
- * Named git or local directory references that can be @ mentioned as Scout-backed subagents
- */
 export type ReferenceConfig = {
   [key: string]: ReferenceConfigEntry
 }

+ 53 - 0
packages/sdk/openapi.json

@@ -11311,6 +11311,44 @@
         "additionalProperties": false,
         "description": "Server configuration for opencode serve and web commands"
       },
+      "ReferenceConfigEntry": {
+        "anyOf": [
+          {
+            "type": "string"
+          },
+          {
+            "type": "object",
+            "properties": {
+              "repository": {
+                "type": "string",
+                "description": "Git repository URL, host/path reference, or GitHub owner/repo shorthand"
+              },
+              "branch": {
+                "type": "string"
+              }
+            },
+            "required": ["repository"],
+            "additionalProperties": false
+          },
+          {
+            "type": "object",
+            "properties": {
+              "path": {
+                "type": "string",
+                "description": "Absolute path, ~/ path, or workspace-relative path to a local reference directory"
+              }
+            },
+            "required": ["path"],
+            "additionalProperties": false
+          }
+        ]
+      },
+      "ReferenceConfig": {
+        "type": "object",
+        "additionalProperties": {
+          "$ref": "#/components/schemas/ReferenceConfigEntry"
+        }
+      },
       "PermissionActionConfig": {
         "type": "string",
         "enum": ["ask", "allow", "deny"]
@@ -11375,6 +11413,15 @@
               "websearch": {
                 "$ref": "#/components/schemas/PermissionActionConfig"
               },
+              "codesearch": {
+                "$ref": "#/components/schemas/PermissionActionConfig"
+              },
+              "repo_clone": {
+                "$ref": "#/components/schemas/PermissionRuleConfig"
+              },
+              "repo_overview": {
+                "$ref": "#/components/schemas/PermissionRuleConfig"
+              },
               "lsp": {
                 "$ref": "#/components/schemas/PermissionRuleConfig"
               },
@@ -11851,6 +11898,9 @@
             },
             "additionalProperties": false
           },
+          "reference": {
+            "$ref": "#/components/schemas/ReferenceConfig"
+          },
           "watcher": {
             "type": "object",
             "properties": {
@@ -11961,6 +12011,9 @@
               "explore": {
                 "$ref": "#/components/schemas/AgentConfig"
               },
+              "scout": {
+                "$ref": "#/components/schemas/AgentConfig"
+              },
               "title": {
                 "$ref": "#/components/schemas/AgentConfig"
               },