Browse Source

tweak: allow read tool to accept offset of 0 (#25431)

Aiden Cline 4 tháng trước cách đây
mục cha
commit
b460db15d7

+ 2 - 6
packages/opencode/src/tool/read.ts

@@ -154,10 +154,6 @@ export const ReadTool = Tool.define(
       params: Schema.Schema.Type<typeof Parameters>,
       params: Schema.Schema.Type<typeof Parameters>,
       ctx: Tool.Context,
       ctx: Tool.Context,
     ) {
     ) {
-      if (params.offset !== undefined && params.offset < 1) {
-        return yield* Effect.fail(new Error("offset must be greater than or equal to 1"))
-      }
-
       const instance = yield* InstanceState.context
       const instance = yield* InstanceState.context
       let filepath = params.filePath
       let filepath = params.filePath
       if (!path.isAbsolute(filepath)) {
       if (!path.isAbsolute(filepath)) {
@@ -192,7 +188,7 @@ export const ReadTool = Tool.define(
       if (stat.type === "Directory") {
       if (stat.type === "Directory") {
         const items = yield* list(filepath)
         const items = yield* list(filepath)
         const limit = params.limit ?? DEFAULT_READ_LIMIT
         const limit = params.limit ?? DEFAULT_READ_LIMIT
-        const offset = params.offset ?? 1
+        const offset = params.offset || 1
         const start = offset - 1
         const start = offset - 1
         const sliced = items.slice(start, start + limit)
         const sliced = items.slice(start, start + limit)
         const truncated = start + sliced.length < items.length
         const truncated = start + sliced.length < items.length
@@ -249,7 +245,7 @@ export const ReadTool = Tool.define(
       }
       }
 
 
       const file = yield* Effect.promise(() =>
       const file = yield* Effect.promise(() =>
-        lines(filepath, { limit: params.limit ?? DEFAULT_READ_LIMIT, offset: params.offset ?? 1 }),
+        lines(filepath, { limit: params.limit ?? DEFAULT_READ_LIMIT, offset: params.offset || 1 }),
       )
       )
       if (file.count < file.offset && !(file.count === 0 && file.offset === 1)) {
       if (file.count < file.offset && !(file.count === 0 && file.offset === 1)) {
         return yield* Effect.fail(
         return yield* Effect.fail(