Skip to content

Commit 343e688

Browse files
committed
fix(scout): type repo tool definitions
1 parent 0db04ef commit 343e688

2 files changed

Lines changed: 15 additions & 5 deletions

File tree

packages/opencode/src/tool/repo_clone.ts

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,16 @@ const parameters = z.object({
1515
refresh: z.boolean().optional().describe("When true, fetches the latest remote state into the managed cache"),
1616
})
1717

18+
type Metadata = {
19+
repository: string
20+
host: string
21+
remote: string
22+
localPath: string
23+
status: "cached" | "cloned" | "refreshed"
24+
head?: string
25+
branch?: string
26+
}
27+
1828
function statusForRepository(input: { reuse: boolean; refresh?: boolean }) {
1929
if (!input.reuse) return "cloned" as const
2030
if (input.refresh) return "refreshed" as const
@@ -34,7 +44,7 @@ function resetTarget(input: {
3444
return "HEAD"
3545
}
3646

37-
export const RepoCloneTool = Tool.define(
47+
export const RepoCloneTool = Tool.define<typeof parameters, Metadata, AppFileSystem.Service | Git.Service>(
3848
"repo_clone",
3949
Effect.gen(function* () {
4050
const fs = yield* AppFileSystem.Service
@@ -43,7 +53,7 @@ export const RepoCloneTool = Tool.define(
4353
return {
4454
description: DESCRIPTION,
4555
parameters,
46-
execute: (params: z.infer<typeof parameters>, ctx: Tool.Context) =>
56+
execute: (params: z.infer<typeof parameters>, ctx: Tool.Context<Metadata>) =>
4757
Effect.gen(function* () {
4858
const reference = parseRepositoryReference(params.repository)
4959
if (!reference) throw new Error("Repository must be a git URL, host/path reference, or GitHub owner/repo shorthand")
@@ -137,6 +147,6 @@ export const RepoCloneTool = Tool.define(
137147
(lock) => Effect.promise(() => lock.release()).pipe(Effect.ignore),
138148
)
139149
}).pipe(Effect.orDie),
140-
}
150+
} satisfies Tool.DefWithoutID<typeof parameters, Metadata>
141151
}),
142152
)

packages/opencode/src/tool/repo_overview.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -147,7 +147,7 @@ export const RepoOverviewTool = Tool.define<typeof parameters, Metadata, AppFile
147147
return {
148148
description: DESCRIPTION,
149149
parameters,
150-
execute: (params: z.infer<typeof parameters>, ctx: Tool.Context) =>
150+
execute: (params: z.infer<typeof parameters>, ctx: Tool.Context<Metadata>) =>
151151
Effect.gen(function* () {
152152
const target = yield* resolveTarget(params)
153153
const depth = params.depth ?? 3
@@ -233,6 +233,6 @@ export const RepoOverviewTool = Tool.define<typeof parameters, Metadata, AppFile
233233
].join("\n"),
234234
}
235235
}).pipe(Effect.orDie),
236-
}
236+
} satisfies Tool.DefWithoutID<typeof parameters, Metadata>
237237
}),
238238
)

0 commit comments

Comments
 (0)