summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--packages/opencode/src/tool/registry.ts6
-rw-r--r--packages/plugin/src/tool.ts5
2 files changed, 10 insertions, 1 deletions
diff --git a/packages/opencode/src/tool/registry.ts b/packages/opencode/src/tool/registry.ts
index 2c862dfd8..7b3a45889 100644
--- a/packages/opencode/src/tool/registry.ts
+++ b/packages/opencode/src/tool/registry.ts
@@ -67,7 +67,11 @@ export namespace ToolRegistry {
parameters: z.object(def.args),
description: def.description,
execute: async (args, ctx) => {
- const pluginCtx = { ...ctx, directory: Instance.directory } as unknown as PluginToolContext
+ const pluginCtx = {
+ ...ctx,
+ directory: Instance.directory,
+ worktree: Instance.worktree,
+ } as unknown as PluginToolContext
const result = await def.execute(args as any, pluginCtx)
const out = await Truncate.output(result, {}, initCtx?.agent)
return {
diff --git a/packages/plugin/src/tool.ts b/packages/plugin/src/tool.ts
index 6b4f7f1d1..23aa512d9 100644
--- a/packages/plugin/src/tool.ts
+++ b/packages/plugin/src/tool.ts
@@ -9,6 +9,11 @@ export type ToolContext = {
* Prefer this over process.cwd() when resolving relative paths.
*/
directory: string
+ /**
+ * Project worktree root for this session.
+ * Useful for generating stable relative paths (e.g. path.relative(worktree, absPath)).
+ */
+ worktree: string
abort: AbortSignal
metadata(input: { title?: string; metadata?: { [key: string]: any } }): void
ask(input: AskInput): Promise<void>