Просмотр исходного кода

feat(core): add worktree to plugin tool context

adamelmore 3 недель назад
Родитель
Сommit
1f9313847f
2 измененных файлов с 10 добавлено и 1 удалено
  1. 5 1
      packages/opencode/src/tool/registry.ts
  2. 5 0
      packages/plugin/src/tool.ts

+ 5 - 1
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 {

+ 5 - 0
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>