Explorar o código

chore: generate

opencode-agent[bot] hai 2 meses
pai
achega
6ae6f0fe8f

+ 1 - 3
packages/core/src/ripgrep.ts

@@ -279,6 +279,4 @@ export const layer = Layer.effect(
   }),
 )
 
-export const defaultLayer = layer.pipe(
-  Layer.provide(Layer.merge(RipgrepBinary.defaultLayer, AppProcess.defaultLayer)),
-)
+export const defaultLayer = layer.pipe(Layer.provide(Layer.merge(RipgrepBinary.defaultLayer, AppProcess.defaultLayer)))

+ 8 - 2
packages/core/src/ripgrep/binary.ts

@@ -61,12 +61,18 @@ export namespace RipgrepBinary {
             "-Command",
             `$global:ProgressPreference = 'SilentlyContinue'; Expand-Archive -LiteralPath '${archive.replaceAll("'", "''")}' -DestinationPath '${dir.replaceAll("'", "''")}' -Force`,
           ])
-          if (result.code !== 0) throw new Error(result.stderr.trim() || result.stdout.trim() || `ripgrep extraction failed with code ${result.code}`)
+          if (result.code !== 0)
+            throw new Error(
+              result.stderr.trim() || result.stdout.trim() || `ripgrep extraction failed with code ${result.code}`,
+            )
         }
 
         if (config.extension === "tar.gz") {
           const result = yield* run("tar", ["-xzf", archive, "-C", dir])
-          if (result.code !== 0) throw new Error(result.stderr.trim() || result.stdout.trim() || `ripgrep extraction failed with code ${result.code}`)
+          if (result.code !== 0)
+            throw new Error(
+              result.stderr.trim() || result.stdout.trim() || `ripgrep extraction failed with code ${result.code}`,
+            )
         }
 
         const extracted = path.join(

+ 19 - 15
packages/core/src/tool/glob.ts

@@ -50,7 +50,9 @@ export const layer = Layer.effectDiscard(
           toModelOutput: ({ output }) => [
             {
               type: "text",
-              text: toModelOutput(output.map((entry) => ({ ...entry, path: path.resolve(location.directory, entry.path) }))),
+              text: toModelOutput(
+                output.map((entry) => ({ ...entry, path: path.resolve(location.directory, entry.path) })),
+              ),
             },
           ],
           execute: (input, context) =>
@@ -69,21 +71,23 @@ export const layer = Layer.effectDiscard(
                 source: { type: "tool", messageID: context.assistantMessageID, callID: context.toolCallID },
               })
               const cwd = path.resolve(location.directory, input.path ?? ".")
-              return yield* ripgrep.glob({
-                cwd,
-                pattern: input.pattern,
-                limit: input.limit ?? Number.MAX_SAFE_INTEGER,
-              }).pipe(
-                Effect.map((result) =>
-                  result.map(
-                    (entry) =>
-                      new FileSystem.Entry({
-                        ...entry,
-                        path: RelativePath.make(path.relative(location.directory, path.resolve(cwd, entry.path))),
-                      }),
+              return yield* ripgrep
+                .glob({
+                  cwd,
+                  pattern: input.pattern,
+                  limit: input.limit ?? Number.MAX_SAFE_INTEGER,
+                })
+                .pipe(
+                  Effect.map((result) =>
+                    result.map(
+                      (entry) =>
+                        new FileSystem.Entry({
+                          ...entry,
+                          path: RelativePath.make(path.relative(location.directory, path.resolve(cwd, entry.path))),
+                        }),
+                    ),
                   ),
-                ),
-              )
+                )
             }).pipe(
               Effect.mapError(() => new ToolFailure({ message: `Unable to find files matching ${input.pattern}` })),
             ),

+ 28 - 25
packages/core/src/tool/grep.ts

@@ -92,34 +92,37 @@ export const layer = Layer.effectDiscard(
               })
               const target = path.resolve(location.directory, input.path ?? ".")
               const info = yield* fs.stat(target).pipe(Effect.catch(() => Effect.succeed(undefined)))
-              return yield* ripgrep.grep({
-                cwd: info?.type === "Directory" ? target : path.dirname(target),
-                pattern: input.pattern,
-                file: info?.type === "File" ? path.basename(target) : undefined,
-                include: input.include,
-                limit: input.limit ?? Number.MAX_SAFE_INTEGER,
-              }).pipe(
-                Effect.map((result) =>
-                  result.map(
-                    (match) =>
-                      new FileSystem.Match({
-                        ...match,
-                        entry: new FileSystem.Entry({
-                          ...match.entry,
-                          path: RelativePath.make(
-                            path.relative(
-                              location.directory,
-                              path.resolve(info?.type === "Directory" ? target : path.dirname(target), match.entry.path),
+              return yield* ripgrep
+                .grep({
+                  cwd: info?.type === "Directory" ? target : path.dirname(target),
+                  pattern: input.pattern,
+                  file: info?.type === "File" ? path.basename(target) : undefined,
+                  include: input.include,
+                  limit: input.limit ?? Number.MAX_SAFE_INTEGER,
+                })
+                .pipe(
+                  Effect.map((result) =>
+                    result.map(
+                      (match) =>
+                        new FileSystem.Match({
+                          ...match,
+                          entry: new FileSystem.Entry({
+                            ...match.entry,
+                            path: RelativePath.make(
+                              path.relative(
+                                location.directory,
+                                path.resolve(
+                                  info?.type === "Directory" ? target : path.dirname(target),
+                                  match.entry.path,
+                                ),
+                              ),
                             ),
-                          ),
+                          }),
                         }),
-                      }),
+                    ),
                   ),
-                ),
-              )
-            }).pipe(
-              Effect.mapError(() => new ToolFailure({ message: `Unable to grep for ${input.pattern}` })),
-            ),
+                )
+            }).pipe(Effect.mapError(() => new ToolFailure({ message: `Unable to grep for ${input.pattern}` }))),
         }),
       })
       .pipe(Effect.orDie)

+ 0 - 1
packages/core/test/filesystem/search.test.ts

@@ -40,5 +40,4 @@ describe("Ripgrep", () => {
       }),
     ),
   )
-
 })

+ 2 - 6
packages/core/test/ripgrep.test.ts

@@ -26,12 +26,8 @@ describe("Ripgrep", () => {
           expect(files.map((item) => item.path)).toContain(RelativePath.make(".git/config"))
 
           const matches = yield* ripgrep.grep({ cwd: tmp.path, pattern: "needle", include: "config", limit: 10 })
-          expect(matches.map((item) => item.entry.path)).toContain(
-            RelativePath.make(".opencode/config"),
-          )
-          expect(matches.map((item) => item.entry.path)).toContain(
-            RelativePath.make(".git/config"),
-          )
+          expect(matches.map((item) => item.entry.path)).toContain(RelativePath.make(".opencode/config"))
+          expect(matches.map((item) => item.entry.path)).toContain(RelativePath.make(".git/config"))
         }),
       (tmp) => Effect.promise(() => tmp[Symbol.asyncDispose]()),
     ),

+ 2 - 10
packages/opencode/src/cli/cmd/debug/file.ts

@@ -22,11 +22,7 @@ const FileSearchCommand = effectCmd({
       description: "Search query",
     }),
   handler: Effect.fn("Cli.debug.file.search")(function* (args) {
-    const results = yield* Effect.orDie(
-      filesystem(
-        FileSystem.Service.use((svc) => svc.find({ query: args.query })),
-      ),
-    )
+    const results = yield* Effect.orDie(filesystem(FileSystem.Service.use((svc) => svc.find({ query: args.query }))))
     process.stdout.write(results.map((item) => item.path).join(EOL) + EOL)
   }),
 })
@@ -65,10 +61,6 @@ export const FileCommand = cmd({
   command: "file",
   describe: "file system debugging utilities",
   builder: (yargs) =>
-    yargs
-      .command(FileReadCommand)
-      .command(FileListCommand)
-      .command(FileSearchCommand)
-      .demandCommand(),
+    yargs.command(FileReadCommand).command(FileListCommand).command(FileSearchCommand).demandCommand(),
   async handler() {},
 })

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

@@ -4129,7 +4129,6 @@ export type FileSystemContent = {
 
 export type FileSystemEntry = {
   path: string
-  uri: string
   type: "file" | "directory"
   mime: string
 }

+ 1 - 4
packages/sdk/openapi.json

@@ -25071,9 +25071,6 @@
           "path": {
             "type": "string"
           },
-          "uri": {
-            "type": "string"
-          },
           "type": {
             "type": "string",
             "enum": ["file", "directory"]
@@ -25082,7 +25079,7 @@
             "type": "string"
           }
         },
-        "required": ["path", "uri", "type", "mime"],
+        "required": ["path", "type", "mime"],
         "additionalProperties": false
       },
       "CommandV2Info": {