@studio-foundation/runner 0.11.0 → 0.12.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (36) hide show
  1. package/README.md +4 -3
  2. package/dist/generated/bundled-assets.d.ts +1 -1
  3. package/dist/generated/bundled-assets.d.ts.map +1 -1
  4. package/dist/generated/bundled-assets.js +1 -7
  5. package/dist/generated/bundled-assets.js.map +1 -1
  6. package/dist/index.d.ts +1 -4
  7. package/dist/index.d.ts.map +1 -1
  8. package/dist/index.js +1 -10
  9. package/dist/index.js.map +1 -1
  10. package/dist/integrations/integration-loader.d.ts +0 -13
  11. package/dist/integrations/integration-loader.d.ts.map +1 -1
  12. package/dist/integrations/integration-loader.js +0 -25
  13. package/dist/integrations/integration-loader.js.map +1 -1
  14. package/dist/integrations/integration-loader.test.js +0 -27
  15. package/dist/integrations/integration-loader.test.js.map +1 -1
  16. package/dist/tools/plugin-loader.d.ts +4 -3
  17. package/dist/tools/plugin-loader.d.ts.map +1 -1
  18. package/dist/tools/plugin-loader.js +4 -12
  19. package/dist/tools/plugin-loader.js.map +1 -1
  20. package/package.json +3 -3
  21. package/dist/tools/builtin/git.d.ts +0 -6
  22. package/dist/tools/builtin/git.d.ts.map +0 -1
  23. package/dist/tools/builtin/git.js +0 -294
  24. package/dist/tools/builtin/git.js.map +0 -1
  25. package/dist/tools/builtin/search.d.ts +0 -6
  26. package/dist/tools/builtin/search.d.ts.map +0 -1
  27. package/dist/tools/builtin/search.js +0 -104
  28. package/dist/tools/builtin/search.js.map +0 -1
  29. package/dist/tools/builtin/web-search.d.ts +0 -7
  30. package/dist/tools/builtin/web-search.d.ts.map +0 -1
  31. package/dist/tools/builtin/web-search.js +0 -94
  32. package/dist/tools/builtin/web-search.js.map +0 -1
  33. package/dist/tools/builtin/web-search.test.d.ts +0 -5
  34. package/dist/tools/builtin/web-search.test.d.ts.map +0 -1
  35. package/dist/tools/builtin/web-search.test.js +0 -90
  36. package/dist/tools/builtin/web-search.test.js.map +0 -1
package/README.md CHANGED
@@ -74,16 +74,17 @@ Use `createDefaultRegistry()` to get all providers wired up. Use `--provider moc
74
74
  | `repo_manager-list_files` | `createRepoManagerTools()` | List files and directories |
75
75
  | `shell-run_command` | `createShellTools()` | Execute shell commands |
76
76
  | `search-search_codebase` | `createSearchTools()` | Search code with ripgrep |
77
- | `patch-apply_patch` | `createPatchTools()` | Apply unified diffs |
77
+ | `web_search-search` | `createWebSearchTools()` | Search the web |
78
+ | `repo_manager-apply_patch` | `createPatchTools()` | Apply unified diffs |
78
79
  | `git-checkout` | `createGitTools()` | Checkout or create branches |
79
80
  | `git-commit` | `createGitTools()` | Create commits |
80
81
  | `git-push` | `createGitTools()` | Push to remote |
81
82
  | `git-pull` | `createGitTools()` | Pull from remote |
82
83
  | `git-status` | `createGitTools()` | Show working tree status |
83
84
  | `git-diff` | `createGitTools()` | Show diffs |
84
- | `studio_run` | `createStudioRunTool()` | Spawn and await a sub-pipeline run |
85
+ | `studio_run-run_pipeline` | `createStudioRunTool()` | Spawn and await a sub-pipeline run |
85
86
 
86
- `studio_run` is only registered when a `RunSpawner` is injected into the engine (via `EngineConfig.spawner`). Agents use it to trigger nested pipelines and receive their output.
87
+ `studio_run-run_pipeline` is only registered when a `RunSpawner` is injected into the engine (via `EngineConfig.spawner`). Agents use it to trigger nested pipelines and receive their output.
87
88
 
88
89
  Tools are registered into a `ToolRegistry` and passed to `runAgent`. The runner injects tool descriptions into the system prompt automatically.
89
90
 
@@ -1,4 +1,4 @@
1
- export declare const PACKAGE_VERSION = "0.11.0";
1
+ export declare const PACKAGE_VERSION = "0.12.0";
2
2
  /** Contents of runner/templates/, keyed by path relative to that directory. */
3
3
  export declare const BUNDLED_ASSETS: Record<string, string>;
4
4
  //# sourceMappingURL=bundled-assets.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"bundled-assets.d.ts","sourceRoot":"","sources":["../../src/generated/bundled-assets.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,eAAe,WAAW,CAAC;AAExC,+EAA+E;AAC/E,eAAO,MAAM,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CASjD,CAAC"}
1
+ {"version":3,"file":"bundled-assets.d.ts","sourceRoot":"","sources":["../../src/generated/bundled-assets.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,eAAe,WAAW,CAAC;AAExC,+EAA+E;AAC/E,eAAO,MAAM,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAGjD,CAAC"}
@@ -2,16 +2,10 @@
2
2
  // Generated by scripts/gen-bundled-assets.mjs — do not edit.
3
3
  Object.defineProperty(exports, "__esModule", { value: true });
4
4
  exports.BUNDLED_ASSETS = exports.PACKAGE_VERSION = void 0;
5
- exports.PACKAGE_VERSION = "0.11.0";
5
+ exports.PACKAGE_VERSION = "0.12.0";
6
6
  /** Contents of runner/templates/, keyed by path relative to that directory. */
7
7
  exports.BUNDLED_ASSETS = {
8
- "integrations/linear.integration.yaml": "name: linear\nversion: 1\ndescription: \"Linear webhook trigger + issue status sync\"\n\nconfig:\n required:\n - LINEAR_API_KEY\n - LINEAR_WEBHOOK_SECRET\n optional:\n autoTrigger: false\n\nwebhook:\n hmac:\n header: linear-signature\n secret_env: LINEAR_WEBHOOK_SECRET\n handler: linear-webhook\n\non_failure:\n handler: linear-failure\n\nevents:\n consumes:\n - linear.issue.in_progress\n emits:\n - pipeline.complete\n - pipeline.failed\n\ntest:\n type: http\n endpoint: https://api.linear.app/graphql\n method: POST\n auth: bearer:${LINEAR_API_KEY}\n body: '{\"query\":\"{ viewer { id name } }\"}'\n expect:\n status: 200\n",
9
- "integrations/slack.integration.yaml": "name: slack\nversion: 1\ndescription: \"Slack notifications for pipeline events\"\n\nconfig:\n required:\n - SLACK_BOT_TOKEN\n optional:\n channel: \"#studio-runs\"\n\nevents:\n emits:\n - pipeline.complete\n - pipeline.failed\n\ntest:\n type: http\n endpoint: https://slack.com/api/auth.test\n method: POST\n auth: bearer:${SLACK_BOT_TOKEN}\n expect:\n status: 200\n",
10
- "integrations/webhook.integration.yaml": "name: webhook\nversion: 1\ndescription: \"Generic HTTP webhook notifications for pipeline events\"\n\nconfig:\n optional:\n url: \"\"\n events: \"pipeline.complete,pipeline.failed\"\n secret: \"\"\n\nevents:\n emits:\n - pipeline.complete\n - pipeline.failed\n - pipeline.start\n - stage.complete\n - stage.failed\n",
11
- "tools/git.tool.yaml": "name: git\ndescription: Git version control operations\nversion: 1\n\ncommands:\n - name: git-status\n description: Show working tree status\n parameters: {}\n execute:\n type: shell\n command: git status --porcelain\n parse_output: text\n\n - name: git-diff\n description: Show changes in the working tree\n parameters:\n staged:\n type: boolean\n required: false\n description: Show staged changes instead of unstaged\n file:\n type: string\n required: false\n description: Restrict diff to this file path\n execute:\n type: shell\n command: |\n git diff {{#if staged}}--cached{{/if}} {{#if file}}{{file}}{{/if}}\n parse_output: text\n\n - name: git-checkout\n description: Checkout an existing branch or create a new one\n parameters:\n branch:\n type: string\n required: true\n description: Branch name to checkout or create\n create:\n type: boolean\n required: false\n description: Create the branch if it does not exist\n execute:\n type: shell\n command: |\n git checkout {{#if create}}-b{{/if}} {{branch}}\n parse_output: text\n\n - name: git-commit\n description: Stage all changes and commit with a message\n parameters:\n message:\n type: string\n required: true\n description: Commit message (use conventional commits format)\n execute:\n type: shell\n command: |\n git add -A && git commit -m \"{{message}}\"\n parse_output: text\n\n - name: git-push\n description: Push the current branch to origin\n parameters:\n set_upstream:\n type: boolean\n required: false\n description: Set upstream tracking reference (-u flag)\n execute:\n type: shell\n command: |\n git push {{#if set_upstream}}-u{{/if}} origin HEAD\n parse_output: text\n\nprompt_snippet: |\n You have access to git tools. Always create a feature branch before making changes.\n Never commit directly to main or master.\n Use conventional commit messages: <type>(<scope>): <description>\n\nconstraints:\n requires_binaries: [git]\n",
12
8
  "tools/repo-manager.tool.yaml": "name: repo_manager\ndescription: Read and write files in the workspace\nversion: 1\n\ncommands:\n - name: repo_manager-read_file\n description: Read a file from the workspace\n parameters:\n path:\n type: string\n required: true\n description: File path relative to the workspace root\n execute:\n type: builtin\n parse_output: json\n\n - name: repo_manager-write_file\n description: Write or create a file in the workspace\n parameters:\n path:\n type: string\n required: true\n description: File path relative to the workspace root\n content:\n type: string\n required: true\n description: Full content to write to the file\n execute:\n type: builtin\n parse_output: json\n\n - name: repo_manager-list_files\n description: List files in the workspace\n parameters:\n path:\n type: string\n required: false\n description: Directory to list (default is workspace root)\n recursive:\n type: boolean\n required: false\n description: Whether to list recursively\n execute:\n type: builtin\n parse_output: json\n\n - name: repo_manager-apply_patch\n description: Apply a unified diff patch to a file\n parameters:\n path:\n type: string\n required: true\n description: File path to patch\n patch:\n type: string\n required: true\n description: Unified diff patch content\n execute:\n type: builtin\n parse_output: json\n\nprompt_snippet: |\n You have access to file management tools. Read files before modifying them.\n Use repo_manager-write_file to create or update files — provide the full file content.\n",
13
- "tools/search.tool.yaml": "name: search\ndescription: Search the codebase by content or file pattern\nversion: 1\n\ncommands:\n - name: search-search_codebase\n description: Search files by content pattern (uses ripgrep)\n parameters:\n pattern:\n type: string\n required: true\n description: Regex or literal pattern to search for\n file_pattern:\n type: string\n required: false\n description: Glob pattern to restrict which files are searched (e.g. \"*.ts\")\n execute:\n type: builtin\n parse_output: json\n\nprompt_snippet: |\n You have access to a codebase search tool. Use it to find relevant code before making changes.\n",
14
9
  "tools/shell.tool.yaml": "name: shell\ndescription: Execute shell commands in the workspace\nversion: 1\n\ncommands:\n - name: shell-run_command\n description: Run a shell command in the workspace directory\n parameters:\n command:\n type: string\n required: true\n description: Shell command to execute\n execute:\n type: builtin\n parse_output: text\n\nprompt_snippet: |\n You have access to a shell tool. Use it to run build, test, or inspection commands.\n Avoid destructive commands. Prefer targeted commands over broad ones.\n",
15
- "tools/web-search.tool.yaml": "name: web-search\ndescription: Search the web using Tavily (requires TAVILY_API_KEY)\nversion: 1\n\ncommands:\n - name: web_search-search\n description: Search the web and return relevant results\n parameters:\n query:\n type: string\n required: true\n description: The search query\n max_results:\n type: number\n required: false\n description: \"Maximum number of results to return (default: 5)\"\n execute:\n type: builtin\n parse_output: json\n\nprompt_snippet: |\n You have access to a web search tool. Use it to find up-to-date information from the web.\n Search in the language most relevant to the query (English for technical docs, French for local content).\n Prefer specific, targeted queries over broad ones for better results.\n",
16
10
  };
17
11
  //# sourceMappingURL=bundled-assets.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"bundled-assets.js","sourceRoot":"","sources":["../../src/generated/bundled-assets.ts"],"names":[],"mappings":";AAAA,6DAA6D;;;AAEhD,QAAA,eAAe,GAAG,QAAQ,CAAC;AAExC,+EAA+E;AAClE,QAAA,cAAc,GAA2B;IACpD,sCAAsC,EAAE,6pBAA6pB;IACrsB,qCAAqC,EAAE,wYAAwY;IAC/a,uCAAuC,EAAE,uVAAuV;IAChY,qBAAqB,EAAE,+qEAA+qE;IACtsE,8BAA8B,EAAE,0uDAA0uD;IAC1wD,wBAAwB,EAAE,qqBAAqqB;IAC/rB,uBAAuB,EAAE,4iBAA4iB;IACrkB,4BAA4B,EAAE,kzBAAkzB;CACj1B,CAAC"}
1
+ {"version":3,"file":"bundled-assets.js","sourceRoot":"","sources":["../../src/generated/bundled-assets.ts"],"names":[],"mappings":";AAAA,6DAA6D;;;AAEhD,QAAA,eAAe,GAAG,QAAQ,CAAC;AAExC,+EAA+E;AAClE,QAAA,cAAc,GAA2B;IACpD,8BAA8B,EAAE,0uDAA0uD;IAC1wD,uBAAuB,EAAE,4iBAA4iB;CACtkB,CAAC"}
package/dist/index.d.ts CHANGED
@@ -22,11 +22,8 @@ export { ToolExecutor } from './tools/tool-executor.js';
22
22
  export type { Tool, ToolResult } from './tools/tool-registry.js';
23
23
  export { createRepoManagerTools } from './tools/builtin/repo-manager.js';
24
24
  export { createShellTools } from './tools/builtin/shell.js';
25
- export { createSearchTools } from './tools/builtin/search.js';
26
25
  export { createPatchTools } from './tools/builtin/patch.js';
27
- export { createGitTools } from './tools/builtin/git.js';
28
26
  export { createStudioRunTool, STUDIO_RUN_PROMPT_SNIPPET } from './tools/builtin/studio-run.js';
29
- export { createWebSearchTools, WEB_SEARCH_PROMPT_SNIPPET } from './tools/builtin/web-search.js';
30
27
  export { loadProjectTools, listAvailableToolTemplates, getBundledToolTemplate, BUILTIN_TOOL_NAMES } from './tools/plugin-loader.js';
31
28
  export type { LoadedPlugin } from './tools/plugin-loader.js';
32
29
  export { AnonymizationMiddleware } from './middleware/anonymization.js';
@@ -35,5 +32,5 @@ export { loadPlugins, MCPClient, StudioOAuthProvider } from './plugins/index.js'
35
32
  export type { PluginManifest, MCPServerDef, SkillContent } from './plugins/index.js';
36
33
  export { loadSkills, loadSkill, validateSkillManifest } from './tools/skills/skill-loader.js';
37
34
  export type { SkillManifest } from './tools/skills/skill-loader.js';
38
- export { getBundledIntegrationTemplate, listAvailableIntegrationTemplates, loadProjectIntegrations, } from './integrations/integration-loader.js';
35
+ export { loadProjectIntegrations } from './integrations/integration-loader.js';
39
36
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,YAAY,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAGlE,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,YAAY,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAGjE,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,YAAY,EACV,SAAS,EACT,YAAY,EACZ,oBAAoB,EACpB,gBAAgB,EAChB,iBAAiB,EAClB,MAAM,qBAAqB,CAAC;AAG7B,YAAY,EAAE,QAAQ,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC5F,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,uBAAuB,EAAE,MAAM,iCAAiC,CAAC;AAC1E,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAChE,OAAO,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAClF,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,YAAY,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAG3D,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AACxD,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AACxD,YAAY,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAGjE,OAAO,EAAE,sBAAsB,EAAE,MAAM,iCAAiC,CAAC;AACzE,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EAAE,mBAAmB,EAAE,yBAAyB,EAAE,MAAM,+BAA+B,CAAC;AAC/F,OAAO,EAAE,oBAAoB,EAAE,yBAAyB,EAAE,MAAM,+BAA+B,CAAC;AAEhG,OAAO,EAAE,gBAAgB,EAAE,0BAA0B,EAAE,sBAAsB,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AACpI,YAAY,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAG7D,OAAO,EAAE,uBAAuB,EAAE,MAAM,+BAA+B,CAAC;AACxE,YAAY,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAGvE,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACjF,YAAY,EAAE,cAAc,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAGrF,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,qBAAqB,EAAE,MAAM,gCAAgC,CAAC;AAC9F,YAAY,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAGpE,OAAO,EACL,6BAA6B,EAC7B,iCAAiC,EACjC,uBAAuB,GACxB,MAAM,sCAAsC,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,YAAY,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAGlE,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,YAAY,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAGjE,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,YAAY,EACV,SAAS,EACT,YAAY,EACZ,oBAAoB,EACpB,gBAAgB,EAChB,iBAAiB,EAClB,MAAM,qBAAqB,CAAC;AAG7B,YAAY,EAAE,QAAQ,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC5F,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,uBAAuB,EAAE,MAAM,iCAAiC,CAAC;AAC1E,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAChE,OAAO,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAClF,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,YAAY,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAG3D,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AACxD,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AACxD,YAAY,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAGjE,OAAO,EAAE,sBAAsB,EAAE,MAAM,iCAAiC,CAAC;AACzE,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,EAAE,mBAAmB,EAAE,yBAAyB,EAAE,MAAM,+BAA+B,CAAC;AAE/F,OAAO,EAAE,gBAAgB,EAAE,0BAA0B,EAAE,sBAAsB,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AACpI,YAAY,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAG7D,OAAO,EAAE,uBAAuB,EAAE,MAAM,+BAA+B,CAAC;AACxE,YAAY,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAGvE,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACjF,YAAY,EAAE,cAAc,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAGrF,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,qBAAqB,EAAE,MAAM,gCAAgC,CAAC;AAC9F,YAAY,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAGpE,OAAO,EAAE,uBAAuB,EAAE,MAAM,sCAAsC,CAAC"}
package/dist/index.js CHANGED
@@ -3,7 +3,7 @@
3
3
  * @studio/runner - Multi-provider LLM agent runner with tool execution
4
4
  */
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.loadProjectIntegrations = exports.listAvailableIntegrationTemplates = exports.getBundledIntegrationTemplate = exports.validateSkillManifest = exports.loadSkill = exports.loadSkills = exports.StudioOAuthProvider = exports.MCPClient = exports.loadPlugins = exports.AnonymizationMiddleware = exports.BUILTIN_TOOL_NAMES = exports.getBundledToolTemplate = exports.listAvailableToolTemplates = exports.loadProjectTools = exports.WEB_SEARCH_PROMPT_SNIPPET = exports.createWebSearchTools = exports.STUDIO_RUN_PROMPT_SNIPPET = exports.createStudioRunTool = exports.createGitTools = exports.createPatchTools = exports.createSearchTools = exports.createShellTools = exports.createRepoManagerTools = exports.ToolExecutor = exports.ToolRegistry = exports.MockProvider = exports.createDefaultRegistry = exports.ProviderRegistry = exports.ClaudeCodeProvider = exports.OllamaProvider = exports.AnthropicProvider = exports.OpenAIResponsesProvider = exports.OpenAIProvider = exports.isAgentLoopProvider = exports.buildPrompt = exports.runScript = exports.runAgent = void 0;
6
+ exports.loadProjectIntegrations = exports.validateSkillManifest = exports.loadSkill = exports.loadSkills = exports.StudioOAuthProvider = exports.MCPClient = exports.loadPlugins = exports.AnonymizationMiddleware = exports.BUILTIN_TOOL_NAMES = exports.getBundledToolTemplate = exports.listAvailableToolTemplates = exports.loadProjectTools = exports.STUDIO_RUN_PROMPT_SNIPPET = exports.createStudioRunTool = exports.createPatchTools = exports.createShellTools = exports.createRepoManagerTools = exports.ToolExecutor = exports.ToolRegistry = exports.MockProvider = exports.createDefaultRegistry = exports.ProviderRegistry = exports.ClaudeCodeProvider = exports.OllamaProvider = exports.AnthropicProvider = exports.OpenAIResponsesProvider = exports.OpenAIProvider = exports.isAgentLoopProvider = exports.buildPrompt = exports.runScript = exports.runAgent = void 0;
7
7
  // Main runner function
8
8
  var runner_js_1 = require("./runner.js");
9
9
  Object.defineProperty(exports, "runAgent", { enumerable: true, get: function () { return runner_js_1.runAgent; } });
@@ -40,18 +40,11 @@ var repo_manager_js_1 = require("./tools/builtin/repo-manager.js");
40
40
  Object.defineProperty(exports, "createRepoManagerTools", { enumerable: true, get: function () { return repo_manager_js_1.createRepoManagerTools; } });
41
41
  var shell_js_1 = require("./tools/builtin/shell.js");
42
42
  Object.defineProperty(exports, "createShellTools", { enumerable: true, get: function () { return shell_js_1.createShellTools; } });
43
- var search_js_1 = require("./tools/builtin/search.js");
44
- Object.defineProperty(exports, "createSearchTools", { enumerable: true, get: function () { return search_js_1.createSearchTools; } });
45
43
  var patch_js_1 = require("./tools/builtin/patch.js");
46
44
  Object.defineProperty(exports, "createPatchTools", { enumerable: true, get: function () { return patch_js_1.createPatchTools; } });
47
- var git_js_1 = require("./tools/builtin/git.js");
48
- Object.defineProperty(exports, "createGitTools", { enumerable: true, get: function () { return git_js_1.createGitTools; } });
49
45
  var studio_run_js_1 = require("./tools/builtin/studio-run.js");
50
46
  Object.defineProperty(exports, "createStudioRunTool", { enumerable: true, get: function () { return studio_run_js_1.createStudioRunTool; } });
51
47
  Object.defineProperty(exports, "STUDIO_RUN_PROMPT_SNIPPET", { enumerable: true, get: function () { return studio_run_js_1.STUDIO_RUN_PROMPT_SNIPPET; } });
52
- var web_search_js_1 = require("./tools/builtin/web-search.js");
53
- Object.defineProperty(exports, "createWebSearchTools", { enumerable: true, get: function () { return web_search_js_1.createWebSearchTools; } });
54
- Object.defineProperty(exports, "WEB_SEARCH_PROMPT_SNIPPET", { enumerable: true, get: function () { return web_search_js_1.WEB_SEARCH_PROMPT_SNIPPET; } });
55
48
  var plugin_loader_js_1 = require("./tools/plugin-loader.js");
56
49
  Object.defineProperty(exports, "loadProjectTools", { enumerable: true, get: function () { return plugin_loader_js_1.loadProjectTools; } });
57
50
  Object.defineProperty(exports, "listAvailableToolTemplates", { enumerable: true, get: function () { return plugin_loader_js_1.listAvailableToolTemplates; } });
@@ -72,7 +65,5 @@ Object.defineProperty(exports, "loadSkill", { enumerable: true, get: function ()
72
65
  Object.defineProperty(exports, "validateSkillManifest", { enumerable: true, get: function () { return skill_loader_js_1.validateSkillManifest; } });
73
66
  // Integration plugin system
74
67
  var integration_loader_js_1 = require("./integrations/integration-loader.js");
75
- Object.defineProperty(exports, "getBundledIntegrationTemplate", { enumerable: true, get: function () { return integration_loader_js_1.getBundledIntegrationTemplate; } });
76
- Object.defineProperty(exports, "listAvailableIntegrationTemplates", { enumerable: true, get: function () { return integration_loader_js_1.listAvailableIntegrationTemplates; } });
77
68
  Object.defineProperty(exports, "loadProjectIntegrations", { enumerable: true, get: function () { return integration_loader_js_1.loadProjectIntegrations; } });
78
69
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AAEH,uBAAuB;AACvB,yCAAuC;AAA9B,qGAAA,QAAQ,OAAA;AAGjB,kBAAkB;AAClB,2DAAiD;AAAxC,+GAAA,SAAS,OAAA;AAGlB,iBAAiB;AACjB,yDAAkD;AAAzC,gHAAA,WAAW,OAAA;AAWpB,uDAA8D;AAArD,kHAAA,mBAAmB,OAAA;AAC5B,mDAAuD;AAA9C,2GAAA,cAAc,OAAA;AACvB,uEAA0E;AAAjE,8HAAA,uBAAuB,OAAA;AAChC,yDAA6D;AAApD,iHAAA,iBAAiB,OAAA;AAC1B,mDAAuD;AAA9C,2GAAA,cAAc,OAAA;AACvB,6DAAgE;AAAvD,oHAAA,kBAAkB,OAAA;AAC3B,uDAAkF;AAAzE,+GAAA,gBAAgB,OAAA;AAAE,oHAAA,qBAAqB,OAAA;AAChD,+CAAmD;AAA1C,uGAAA,YAAY,OAAA;AAGrB,QAAQ;AACR,6DAAwD;AAA/C,gHAAA,YAAY,OAAA;AACrB,6DAAwD;AAA/C,gHAAA,YAAY,OAAA;AAGrB,gBAAgB;AAChB,mEAAyE;AAAhE,yHAAA,sBAAsB,OAAA;AAC/B,qDAA4D;AAAnD,4GAAA,gBAAgB,OAAA;AACzB,uDAA8D;AAArD,8GAAA,iBAAiB,OAAA;AAC1B,qDAA4D;AAAnD,4GAAA,gBAAgB,OAAA;AACzB,iDAAwD;AAA/C,wGAAA,cAAc,OAAA;AACvB,+DAA+F;AAAtF,oHAAA,mBAAmB,OAAA;AAAE,0HAAA,yBAAyB,OAAA;AACvD,+DAAgG;AAAvF,qHAAA,oBAAoB,OAAA;AAAE,0HAAA,yBAAyB,OAAA;AAExD,6DAAoI;AAA3H,oHAAA,gBAAgB,OAAA;AAAE,8HAAA,0BAA0B,OAAA;AAAE,0HAAA,sBAAsB,OAAA;AAAE,sHAAA,kBAAkB,OAAA;AAGjG,2BAA2B;AAC3B,kEAAwE;AAA/D,2HAAA,uBAAuB,OAAA;AAGhC,mDAAmD;AACnD,+CAAiF;AAAxE,uGAAA,WAAW,OAAA;AAAE,qGAAA,SAAS,OAAA;AAAE,+GAAA,mBAAmB,OAAA;AAGpD,eAAe;AACf,kEAA8F;AAArF,6GAAA,UAAU,OAAA;AAAE,4GAAA,SAAS,OAAA;AAAE,wHAAA,qBAAqB,OAAA;AAGrD,4BAA4B;AAC5B,8EAI8C;AAH5C,sIAAA,6BAA6B,OAAA;AAC7B,0IAAA,iCAAiC,OAAA;AACjC,gIAAA,uBAAuB,OAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AAEH,uBAAuB;AACvB,yCAAuC;AAA9B,qGAAA,QAAQ,OAAA;AAGjB,kBAAkB;AAClB,2DAAiD;AAAxC,+GAAA,SAAS,OAAA;AAGlB,iBAAiB;AACjB,yDAAkD;AAAzC,gHAAA,WAAW,OAAA;AAWpB,uDAA8D;AAArD,kHAAA,mBAAmB,OAAA;AAC5B,mDAAuD;AAA9C,2GAAA,cAAc,OAAA;AACvB,uEAA0E;AAAjE,8HAAA,uBAAuB,OAAA;AAChC,yDAA6D;AAApD,iHAAA,iBAAiB,OAAA;AAC1B,mDAAuD;AAA9C,2GAAA,cAAc,OAAA;AACvB,6DAAgE;AAAvD,oHAAA,kBAAkB,OAAA;AAC3B,uDAAkF;AAAzE,+GAAA,gBAAgB,OAAA;AAAE,oHAAA,qBAAqB,OAAA;AAChD,+CAAmD;AAA1C,uGAAA,YAAY,OAAA;AAGrB,QAAQ;AACR,6DAAwD;AAA/C,gHAAA,YAAY,OAAA;AACrB,6DAAwD;AAA/C,gHAAA,YAAY,OAAA;AAGrB,gBAAgB;AAChB,mEAAyE;AAAhE,yHAAA,sBAAsB,OAAA;AAC/B,qDAA4D;AAAnD,4GAAA,gBAAgB,OAAA;AACzB,qDAA4D;AAAnD,4GAAA,gBAAgB,OAAA;AACzB,+DAA+F;AAAtF,oHAAA,mBAAmB,OAAA;AAAE,0HAAA,yBAAyB,OAAA;AAEvD,6DAAoI;AAA3H,oHAAA,gBAAgB,OAAA;AAAE,8HAAA,0BAA0B,OAAA;AAAE,0HAAA,sBAAsB,OAAA;AAAE,sHAAA,kBAAkB,OAAA;AAGjG,2BAA2B;AAC3B,kEAAwE;AAA/D,2HAAA,uBAAuB,OAAA;AAGhC,mDAAmD;AACnD,+CAAiF;AAAxE,uGAAA,WAAW,OAAA;AAAE,qGAAA,SAAS,OAAA;AAAE,+GAAA,mBAAmB,OAAA;AAGpD,eAAe;AACf,kEAA8F;AAArF,6GAAA,UAAU,OAAA;AAAE,4GAAA,SAAS,OAAA;AAAE,wHAAA,qBAAqB,OAAA;AAGrD,4BAA4B;AAC5B,8EAA+E;AAAtE,gIAAA,uBAAuB,OAAA"}
@@ -1,17 +1,4 @@
1
1
  import type { IntegrationPluginDef } from '@studio-foundation/contracts';
2
- /**
3
- * Return the raw YAML content of a bundled integration template by name.
4
- * Returns null if the integration does not exist in the bundled registry.
5
- */
6
- export declare function getBundledIntegrationTemplate(name: string): string | null;
7
- /**
8
- * List all integration plugins available for installation from the bundled registry.
9
- * Returns an array of { name, description } objects.
10
- */
11
- export declare function listAvailableIntegrationTemplates(): {
12
- name: string;
13
- description: string;
14
- }[];
15
2
  /**
16
3
  * Load all `.integration.yaml` files from a project's integrations directory.
17
4
  * Returns an empty array if the directory does not exist.
@@ -1 +1 @@
1
- {"version":3,"file":"integration-loader.d.ts","sourceRoot":"","sources":["../../src/integrations/integration-loader.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AAMzE;;;GAGG;AACH,wBAAgB,6BAA6B,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAIzE;AAED;;;GAGG;AACH,wBAAgB,iCAAiC,IAAI;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,EAAE,CAW3F;AAED;;;GAGG;AACH,wBAAsB,uBAAuB,CAAC,eAAe,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,EAAE,CAAC,CAgBtG"}
1
+ {"version":3,"file":"integration-loader.d.ts","sourceRoot":"","sources":["../../src/integrations/integration-loader.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AAEzE;;;GAGG;AACH,wBAAsB,uBAAuB,CAAC,eAAe,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,EAAE,CAAC,CAgBtG"}
@@ -3,37 +3,12 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.getBundledIntegrationTemplate = getBundledIntegrationTemplate;
7
- exports.listAvailableIntegrationTemplates = listAvailableIntegrationTemplates;
8
6
  exports.loadProjectIntegrations = loadProjectIntegrations;
9
7
  // runner/src/integrations/integration-loader.ts
10
8
  const promises_1 = require("node:fs/promises");
11
9
  const node_fs_1 = require("node:fs");
12
10
  const node_path_1 = require("node:path");
13
11
  const js_yaml_1 = __importDefault(require("js-yaml"));
14
- const bundled_assets_js_1 = require("../generated/bundled-assets.js");
15
- const INTEGRATION_TEMPLATE_PREFIX = 'integrations/';
16
- const INTEGRATION_TEMPLATE_SUFFIX = '.integration.yaml';
17
- /**
18
- * Return the raw YAML content of a bundled integration template by name.
19
- * Returns null if the integration does not exist in the bundled registry.
20
- */
21
- function getBundledIntegrationTemplate(name) {
22
- return (bundled_assets_js_1.BUNDLED_ASSETS[`${INTEGRATION_TEMPLATE_PREFIX}${name}${INTEGRATION_TEMPLATE_SUFFIX}`] ?? null);
23
- }
24
- /**
25
- * List all integration plugins available for installation from the bundled registry.
26
- * Returns an array of { name, description } objects.
27
- */
28
- function listAvailableIntegrationTemplates() {
29
- return Object.keys(bundled_assets_js_1.BUNDLED_ASSETS)
30
- .filter(key => key.startsWith(INTEGRATION_TEMPLATE_PREFIX) && key.endsWith(INTEGRATION_TEMPLATE_SUFFIX))
31
- .sort()
32
- .map(key => ({
33
- name: key.slice(INTEGRATION_TEMPLATE_PREFIX.length, -INTEGRATION_TEMPLATE_SUFFIX.length),
34
- description: js_yaml_1.default.load(bundled_assets_js_1.BUNDLED_ASSETS[key]).description ?? '',
35
- }));
36
- }
37
12
  /**
38
13
  * Load all `.integration.yaml` files from a project's integrations directory.
39
14
  * Returns an empty array if the directory does not exist.
@@ -1 +1 @@
1
- {"version":3,"file":"integration-loader.js","sourceRoot":"","sources":["../../src/integrations/integration-loader.ts"],"names":[],"mappings":";;;;;AAeA,sEAIC;AAMD,8EAWC;AAMD,0DAgBC;AA1DD,gDAAgD;AAChD,+CAAqD;AACrD,qCAAqC;AACrC,yCAAoC;AACpC,sDAA2B;AAE3B,sEAAgE;AAEhE,MAAM,2BAA2B,GAAG,eAAe,CAAC;AACpD,MAAM,2BAA2B,GAAG,mBAAmB,CAAC;AAExD;;;GAGG;AACH,SAAgB,6BAA6B,CAAC,IAAY;IACxD,OAAO,CACL,kCAAc,CAAC,GAAG,2BAA2B,GAAG,IAAI,GAAG,2BAA2B,EAAE,CAAC,IAAI,IAAI,CAC9F,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,SAAgB,iCAAiC;IAC/C,OAAO,MAAM,CAAC,IAAI,CAAC,kCAAc,CAAC;SAC/B,MAAM,CACL,GAAG,CAAC,EAAE,CACJ,GAAG,CAAC,UAAU,CAAC,2BAA2B,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,2BAA2B,CAAC,CAC3F;SACA,IAAI,EAAE;SACN,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACX,IAAI,EAAE,GAAG,CAAC,KAAK,CAAC,2BAA2B,CAAC,MAAM,EAAE,CAAC,2BAA2B,CAAC,MAAM,CAAC;QACxF,WAAW,EAAG,iBAAI,CAAC,IAAI,CAAC,kCAAc,CAAC,GAAG,CAAC,CAA0B,CAAC,WAAW,IAAI,EAAE;KACxF,CAAC,CAAC,CAAC;AACR,CAAC;AAED;;;GAGG;AACI,KAAK,UAAU,uBAAuB,CAAC,eAAuB;IACnE,IAAI,CAAC,IAAA,oBAAU,EAAC,eAAe,CAAC;QAAE,OAAO,EAAE,CAAC;IAE5C,IAAI,KAAe,CAAC;IACpB,IAAI,CAAC;QACH,KAAK,GAAG,CAAC,MAAM,IAAA,kBAAO,EAAC,eAAe,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,mBAAmB,CAAC,CAAC,CAAC;IACxF,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,MAAM,MAAM,GAA2B,EAAE,CAAC;IAC1C,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC;QAChC,MAAM,OAAO,GAAG,MAAM,IAAA,mBAAQ,EAAC,IAAA,mBAAO,EAAC,eAAe,EAAE,IAAI,CAAC,EAAE,OAAO,CAAC,CAAC;QACxE,MAAM,CAAC,IAAI,CAAC,iBAAI,CAAC,IAAI,CAAC,OAAO,CAAyB,CAAC,CAAC;IAC1D,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC"}
1
+ {"version":3,"file":"integration-loader.js","sourceRoot":"","sources":["../../src/integrations/integration-loader.ts"],"names":[],"mappings":";;;;;AAWA,0DAgBC;AA3BD,gDAAgD;AAChD,+CAAqD;AACrD,qCAAqC;AACrC,yCAAoC;AACpC,sDAA2B;AAG3B;;;GAGG;AACI,KAAK,UAAU,uBAAuB,CAAC,eAAuB;IACnE,IAAI,CAAC,IAAA,oBAAU,EAAC,eAAe,CAAC;QAAE,OAAO,EAAE,CAAC;IAE5C,IAAI,KAAe,CAAC;IACpB,IAAI,CAAC;QACH,KAAK,GAAG,CAAC,MAAM,IAAA,kBAAO,EAAC,eAAe,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,mBAAmB,CAAC,CAAC,CAAC;IACxF,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,MAAM,MAAM,GAA2B,EAAE,CAAC;IAC1C,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC;QAChC,MAAM,OAAO,GAAG,MAAM,IAAA,mBAAQ,EAAC,IAAA,mBAAO,EAAC,eAAe,EAAE,IAAI,CAAC,EAAE,OAAO,CAAC,CAAC;QACxE,MAAM,CAAC,IAAI,CAAC,iBAAI,CAAC,IAAI,CAAC,OAAO,CAAyB,CAAC,CAAC;IAC1D,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC"}
@@ -12,33 +12,6 @@ let tmpDir;
12
12
  (0, vitest_1.afterAll)(async () => {
13
13
  await (0, promises_1.rm)(tmpDir, { recursive: true, force: true });
14
14
  });
15
- (0, vitest_1.describe)('getBundledIntegrationTemplate', () => {
16
- (0, vitest_1.it)('returns YAML content for a known bundled integration', async () => {
17
- const content = (0, integration_loader_js_1.getBundledIntegrationTemplate)('linear');
18
- (0, vitest_1.expect)(content).not.toBeNull();
19
- (0, vitest_1.expect)(content).toContain('name: linear');
20
- });
21
- (0, vitest_1.it)('returns null for unknown integration name', async () => {
22
- const content = (0, integration_loader_js_1.getBundledIntegrationTemplate)('doesnotexist');
23
- (0, vitest_1.expect)(content).toBeNull();
24
- });
25
- });
26
- (0, vitest_1.describe)('listAvailableIntegrationTemplates', () => {
27
- (0, vitest_1.it)('returns at least linear, slack, webhook', async () => {
28
- const templates = (0, integration_loader_js_1.listAvailableIntegrationTemplates)();
29
- const names = templates.map(t => t.name);
30
- (0, vitest_1.expect)(names).toContain('linear');
31
- (0, vitest_1.expect)(names).toContain('slack');
32
- (0, vitest_1.expect)(names).toContain('webhook');
33
- });
34
- (0, vitest_1.it)('each entry has name and description', async () => {
35
- const templates = (0, integration_loader_js_1.listAvailableIntegrationTemplates)();
36
- for (const t of templates) {
37
- (0, vitest_1.expect)(typeof t.name).toBe('string');
38
- (0, vitest_1.expect)(typeof t.description).toBe('string');
39
- }
40
- });
41
- });
42
15
  (0, vitest_1.describe)('loadProjectIntegrations', () => {
43
16
  (0, vitest_1.it)('returns empty array when directory does not exist', async () => {
44
17
  const result = await (0, integration_loader_js_1.loadProjectIntegrations)('/nonexistent/path');
@@ -1 +1 @@
1
- {"version":3,"file":"integration-loader.test.js","sourceRoot":"","sources":["../../src/integrations/integration-loader.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"integration-loader.test.js","sourceRoot":"","sources":["../../src/integrations/integration-loader.test.ts"],"names":[],"mappings":";;AAAA,mCAAmE;AACnE,+CAAiE;AACjE,yCAAiC;AACjC,qCAAiC;AACjC,mEAAkE;AAElE,IAAI,MAAc,CAAC;AAEnB,IAAA,kBAAS,EAAC,KAAK,IAAI,EAAE;IACnB,MAAM,GAAG,MAAM,IAAA,kBAAO,EAAC,IAAA,gBAAI,EAAC,IAAA,gBAAM,GAAE,EAAE,iCAAiC,CAAC,CAAC,CAAC;AAC5E,CAAC,CAAC,CAAC;AAEH,IAAA,iBAAQ,EAAC,KAAK,IAAI,EAAE;IAClB,MAAM,IAAA,aAAE,EAAC,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;AACrD,CAAC,CAAC,CAAC;AAEH,IAAA,iBAAQ,EAAC,yBAAyB,EAAE,GAAG,EAAE;IACvC,IAAA,WAAE,EAAC,mDAAmD,EAAE,KAAK,IAAI,EAAE;QACjE,MAAM,MAAM,GAAG,MAAM,IAAA,+CAAuB,EAAC,mBAAmB,CAAC,CAAC;QAClE,IAAA,eAAM,EAAC,MAAM,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IAC7B,CAAC,CAAC,CAAC;IAEH,IAAA,WAAE,EAAC,qCAAqC,EAAE,KAAK,IAAI,EAAE;QACnD,MAAM,MAAM,GAAG,IAAA,gBAAI,EAAC,MAAM,EAAE,cAAc,CAAC,CAAC;QAC5C,MAAM,IAAA,gBAAK,EAAC,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACzC,MAAM,IAAA,oBAAS,EAAC,IAAA,gBAAI,EAAC,MAAM,EAAE,uBAAuB,CAAC,EAAE;;;;;;;;;;;;CAY1D,CAAC,CAAC;QACC,MAAM,MAAM,GAAG,MAAM,IAAA,+CAAuB,EAAC,MAAM,CAAC,CAAC;QACrD,IAAA,eAAM,EAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QAC/B,IAAA,eAAM,EAAC,MAAM,CAAC,CAAC,CAAE,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACrC,IAAA,eAAM,EAAC,MAAM,CAAC,CAAC,CAAE,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,OAAO,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC;IAChE,CAAC,CAAC,CAAC;IAEH,IAAA,WAAE,EAAC,qCAAqC,EAAE,KAAK,IAAI,EAAE;QACnD,MAAM,MAAM,GAAG,IAAA,gBAAI,EAAC,MAAM,EAAE,oBAAoB,CAAC,CAAC;QAClD,MAAM,IAAA,gBAAK,EAAC,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACzC,MAAM,IAAA,oBAAS,EAAC,IAAA,gBAAI,EAAC,MAAM,EAAE,YAAY,CAAC,EAAE,OAAO,CAAC,CAAC;QACrD,MAAM,IAAA,oBAAS,EAAC,IAAA,gBAAI,EAAC,MAAM,EAAE,YAAY,CAAC,EAAE,yBAAyB,CAAC,CAAC;QACvE,MAAM,MAAM,GAAG,MAAM,IAAA,+CAAuB,EAAC,MAAM,CAAC,CAAC;QACrD,IAAA,eAAM,EAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IACjC,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -11,9 +11,10 @@ export interface LoadedPlugin {
11
11
  */
12
12
  export declare function loadProjectTools(toolsDir: string, repoPath: string): Promise<LoadedPlugin[]>;
13
13
  /**
14
- * Names of built-in tool plugins that have bundled installable templates.
15
- * Mirrors runner/templates/tools/*.tool.yaml.
16
- * Note: 'patch' is a TypeScript-only builtin with no installable template and is intentionally excluded.
14
+ * The tool plugins the kernel owns. A tool stays here only if it is primitive,
15
+ * carries no domain choice, and `studio run` cannot work without it — everything
16
+ * else is a marketplace plugin (INV-11). Mirrors runner/templates/tools/*.tool.yaml.
17
+ * `patch` ships inside repo-manager; `studio_run` is wired by the engine.
17
18
  */
18
19
  export declare const BUILTIN_TOOL_NAMES: Set<string>;
19
20
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"plugin-loader.d.ts","sourceRoot":"","sources":["../../src/tools/plugin-loader.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAW/C,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,IAAI,EAAE,CAAC;IACd,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;CAC7B;AAoFD;;;GAGG;AACH,wBAAsB,gBAAgB,CACpC,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,YAAY,EAAE,CAAC,CAyCzB;AAKD;;;;GAIG;AACH,eAAO,MAAM,kBAAkB,aAM7B,CAAC;AAEH;;;GAGG;AACH,wBAAgB,0BAA0B,IAAI;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,EAAE,CAQpF;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAElE"}
1
+ {"version":3,"file":"plugin-loader.d.ts","sourceRoot":"","sources":["../../src/tools/plugin-loader.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAQ/C,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,IAAI,EAAE,CAAC;IACd,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;CAC7B;AAiFD;;;GAGG;AACH,wBAAsB,gBAAgB,CACpC,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,YAAY,EAAE,CAAC,CAyCzB;AAKD;;;;;GAKG;AACH,eAAO,MAAM,kBAAkB,aAG7B,CAAC;AAEH;;;GAGG;AACH,wBAAgB,0BAA0B,IAAI;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,EAAE,CAQpF;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAElE"}
@@ -15,10 +15,7 @@ const js_yaml_1 = __importDefault(require("js-yaml"));
15
15
  const yaml_executor_js_1 = require("./yaml-executor.js");
16
16
  const repo_manager_js_1 = require("./builtin/repo-manager.js");
17
17
  const shell_js_1 = require("./builtin/shell.js");
18
- const search_js_1 = require("./builtin/search.js");
19
18
  const patch_js_1 = require("./builtin/patch.js");
20
- const git_js_1 = require("./builtin/git.js");
21
- const web_search_js_1 = require("./builtin/web-search.js");
22
19
  const errors_js_1 = require("./errors.js");
23
20
  const bundled_assets_js_1 = require("../generated/bundled-assets.js");
24
21
  /** Build a map of tool name → Tool from all builtin factories. */
@@ -27,10 +24,7 @@ function buildBuiltinMap(repoPath) {
27
24
  const add = (tools) => tools.forEach(t => map.set(t.name, t));
28
25
  add((0, repo_manager_js_1.createRepoManagerTools)(repoPath));
29
26
  add((0, shell_js_1.createShellTools)(repoPath));
30
- add((0, search_js_1.createSearchTools)(repoPath));
31
27
  add((0, patch_js_1.createPatchTools)(repoPath));
32
- add((0, git_js_1.createGitTools)(repoPath));
33
- add((0, web_search_js_1.createWebSearchTools)());
34
28
  return map;
35
29
  }
36
30
  /** Convert a ParameterDef map to a JSON Schema object for the LLM. */
@@ -139,16 +133,14 @@ async function loadProjectTools(toolsDir, repoPath) {
139
133
  const TOOL_TEMPLATE_PREFIX = 'tools/';
140
134
  const TOOL_TEMPLATE_SUFFIX = '.tool.yaml';
141
135
  /**
142
- * Names of built-in tool plugins that have bundled installable templates.
143
- * Mirrors runner/templates/tools/*.tool.yaml.
144
- * Note: 'patch' is a TypeScript-only builtin with no installable template and is intentionally excluded.
136
+ * The tool plugins the kernel owns. A tool stays here only if it is primitive,
137
+ * carries no domain choice, and `studio run` cannot work without it — everything
138
+ * else is a marketplace plugin (INV-11). Mirrors runner/templates/tools/*.tool.yaml.
139
+ * `patch` ships inside repo-manager; `studio_run` is wired by the engine.
145
140
  */
146
141
  exports.BUILTIN_TOOL_NAMES = new Set([
147
142
  'repo-manager',
148
143
  'shell',
149
- 'search',
150
- 'git',
151
- 'web-search',
152
144
  ]);
153
145
  /**
154
146
  * List all tool plugins available for installation from the bundled registry.
@@ -1 +1 @@
1
- {"version":3,"file":"plugin-loader.js","sourceRoot":"","sources":["../../src/tools/plugin-loader.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"plugin-loader.js","sourceRoot":"","sources":["../../src/tools/plugin-loader.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@studio-foundation/runner",
3
- "version": "0.11.0",
3
+ "version": "0.12.0",
4
4
  "description": "Multi-provider LLM agent runner with tool plugin execution (Anthropic, OpenAI, mock). Used by Studio.",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -24,8 +24,8 @@
24
24
  "@modelcontextprotocol/sdk": "^1.26.0",
25
25
  "js-yaml": "^4.1.0",
26
26
  "openai": "^4.77.0",
27
- "@studio-foundation/anonymizer": "0.11.0",
28
- "@studio-foundation/contracts": "0.11.0"
27
+ "@studio-foundation/anonymizer": "0.12.0",
28
+ "@studio-foundation/contracts": "0.12.0"
29
29
  },
30
30
  "devDependencies": {
31
31
  "@types/js-yaml": "^4.0.9",
@@ -1,6 +0,0 @@
1
- /**
2
- * Git tools - branch, commit, push, pull, status, diff
3
- */
4
- import type { Tool } from '../tool-registry.js';
5
- export declare function createGitTools(workingDir: string): Tool[];
6
- //# sourceMappingURL=git.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"git.d.ts","sourceRoot":"","sources":["../../../src/tools/builtin/git.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAC;AAmBhD,wBAAgB,cAAc,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,EAAE,CA6RzD"}
@@ -1,294 +0,0 @@
1
- "use strict";
2
- /**
3
- * Git tools - branch, commit, push, pull, status, diff
4
- */
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.createGitTools = createGitTools;
7
- const child_process_1 = require("child_process");
8
- const util_1 = require("util");
9
- const execAsync = (0, util_1.promisify)(child_process_1.exec);
10
- const PROTECTED_BRANCHES = ['main', 'master', 'develop', 'production'];
11
- async function isGitRepo(workingDir) {
12
- try {
13
- await execAsync('git rev-parse --git-dir', { cwd: workingDir });
14
- return true;
15
- }
16
- catch {
17
- return false;
18
- }
19
- }
20
- async function runGit(args, workingDir) {
21
- return execAsync(`git ${args}`, { cwd: workingDir, timeout: 30000 });
22
- }
23
- function createGitTools(workingDir) {
24
- return [
25
- {
26
- name: 'git-checkout',
27
- description: 'Checkout or create a branch',
28
- parameters: {
29
- type: 'object',
30
- properties: {
31
- branch: {
32
- type: 'string',
33
- description: 'Branch name to checkout or create'
34
- },
35
- create: {
36
- type: 'boolean',
37
- description: 'Create the branch if it does not exist (-b flag). Default: false'
38
- }
39
- },
40
- required: ['branch']
41
- },
42
- execute: async ({ branch, create }) => {
43
- const branchName = branch;
44
- const shouldCreate = create ?? false;
45
- if (!(await isGitRepo(workingDir))) {
46
- return { success: false, output: null, error: 'Not a git repository' };
47
- }
48
- if (shouldCreate && PROTECTED_BRANCHES.includes(branchName)) {
49
- return {
50
- success: false,
51
- output: null,
52
- error: `Cannot create protected branch: ${branchName}`
53
- };
54
- }
55
- try {
56
- const flag = shouldCreate ? '-b ' : '';
57
- const { stdout, stderr } = await runGit(`checkout ${flag}${branchName}`, workingDir);
58
- return {
59
- success: true,
60
- output: { branch: branchName, created: shouldCreate, stdout: stdout.trim(), stderr: stderr.trim() }
61
- };
62
- }
63
- catch (error) {
64
- const e = error;
65
- return {
66
- success: false,
67
- output: null,
68
- error: e.stderr?.trim() || e.message || 'git checkout failed'
69
- };
70
- }
71
- }
72
- },
73
- {
74
- name: 'git-commit',
75
- description: 'Stage files and commit changes',
76
- parameters: {
77
- type: 'object',
78
- properties: {
79
- message: {
80
- type: 'string',
81
- description: 'Commit message'
82
- },
83
- files: {
84
- type: 'array',
85
- items: { type: 'string' },
86
- description: 'Files to stage. If empty or omitted, stages all changes (git add -A)'
87
- }
88
- },
89
- required: ['message']
90
- },
91
- execute: async ({ message, files }) => {
92
- const commitMessage = message;
93
- const filesToStage = files;
94
- if (!(await isGitRepo(workingDir))) {
95
- return { success: false, output: null, error: 'Not a git repository' };
96
- }
97
- try {
98
- // Check for merge conflicts
99
- const { stdout: statusOut } = await runGit('status --porcelain', workingDir);
100
- const hasConflicts = statusOut.split('\n').some(line => line.startsWith('UU') || line.startsWith('AA') || line.startsWith('DD'));
101
- if (hasConflicts) {
102
- return { success: false, output: null, error: 'Cannot commit: merge conflicts detected' };
103
- }
104
- // Stage files
105
- if (filesToStage && filesToStage.length > 0) {
106
- await runGit(`add -- ${filesToStage.map(f => `"${f}"`).join(' ')}`, workingDir);
107
- }
108
- else {
109
- await runGit('add -A', workingDir);
110
- }
111
- // Commit
112
- const { stdout } = await runGit(`commit -m ${JSON.stringify(commitMessage)}`, workingDir);
113
- return {
114
- success: true,
115
- output: { message: commitMessage, stdout: stdout.trim() }
116
- };
117
- }
118
- catch (error) {
119
- const e = error;
120
- return {
121
- success: false,
122
- output: null,
123
- error: e.stderr?.trim() || e.stdout?.trim() || e.message || 'git commit failed'
124
- };
125
- }
126
- }
127
- },
128
- {
129
- name: 'git-push',
130
- description: 'Push current branch to remote',
131
- parameters: {
132
- type: 'object',
133
- properties: {
134
- remote: {
135
- type: 'string',
136
- description: 'Remote name. Default: origin'
137
- },
138
- set_upstream: {
139
- type: 'boolean',
140
- description: 'Set upstream tracking (-u flag). Default: true'
141
- }
142
- },
143
- required: []
144
- },
145
- execute: async ({ remote, set_upstream }) => {
146
- const remoteName = remote ?? 'origin';
147
- const setUpstream = set_upstream ?? true;
148
- if (!(await isGitRepo(workingDir))) {
149
- return { success: false, output: null, error: 'Not a git repository' };
150
- }
151
- try {
152
- const { stdout: branchOut } = await runGit('rev-parse --abbrev-ref HEAD', workingDir);
153
- const currentBranch = branchOut.trim();
154
- const upstreamFlag = setUpstream ? `-u ` : '';
155
- const { stdout, stderr } = await runGit(`push ${upstreamFlag}${remoteName} ${currentBranch}`, workingDir);
156
- return {
157
- success: true,
158
- output: { remote: remoteName, branch: currentBranch, stdout: stdout.trim(), stderr: stderr.trim() }
159
- };
160
- }
161
- catch (error) {
162
- const e = error;
163
- return {
164
- success: false,
165
- output: null,
166
- error: e.stderr?.trim() || e.message || 'git push failed'
167
- };
168
- }
169
- }
170
- },
171
- {
172
- name: 'git-pull',
173
- description: 'Pull latest changes from remote',
174
- parameters: {
175
- type: 'object',
176
- properties: {
177
- remote: {
178
- type: 'string',
179
- description: 'Remote name. Default: origin'
180
- },
181
- branch: {
182
- type: 'string',
183
- description: 'Branch to pull. If omitted, pulls current branch'
184
- }
185
- },
186
- required: []
187
- },
188
- execute: async ({ remote, branch }) => {
189
- const remoteName = remote ?? 'origin';
190
- const branchName = branch;
191
- if (!(await isGitRepo(workingDir))) {
192
- return { success: false, output: null, error: 'Not a git repository' };
193
- }
194
- try {
195
- const branchArg = branchName ? ` ${branchName}` : '';
196
- const { stdout, stderr } = await runGit(`pull ${remoteName}${branchArg}`, workingDir);
197
- return {
198
- success: true,
199
- output: { remote: remoteName, branch: branchName ?? 'current', stdout: stdout.trim(), stderr: stderr.trim() }
200
- };
201
- }
202
- catch (error) {
203
- const e = error;
204
- return {
205
- success: false,
206
- output: null,
207
- error: e.stderr?.trim() || e.stdout?.trim() || e.message || 'git pull failed'
208
- };
209
- }
210
- }
211
- },
212
- {
213
- name: 'git-status',
214
- description: 'Show working tree status (modified, added, deleted files)',
215
- parameters: {
216
- type: 'object',
217
- properties: {},
218
- required: []
219
- },
220
- execute: async () => {
221
- if (!(await isGitRepo(workingDir))) {
222
- return { success: false, output: null, error: 'Not a git repository' };
223
- }
224
- try {
225
- const { stdout: porcelain } = await runGit('status --porcelain', workingDir);
226
- const { stdout: branch } = await runGit('rev-parse --abbrev-ref HEAD', workingDir);
227
- const files = porcelain
228
- .split('\n')
229
- .filter(line => line.trim())
230
- .map(line => ({ status: line.slice(0, 2).trim(), file: line.slice(3) }));
231
- return {
232
- success: true,
233
- output: {
234
- branch: branch.trim(),
235
- clean: files.length === 0,
236
- files
237
- }
238
- };
239
- }
240
- catch (error) {
241
- const e = error;
242
- return {
243
- success: false,
244
- output: null,
245
- error: e.stderr?.trim() || e.message || 'git status failed'
246
- };
247
- }
248
- }
249
- },
250
- {
251
- name: 'git-diff',
252
- description: 'Show changes in working tree or staged files',
253
- parameters: {
254
- type: 'object',
255
- properties: {
256
- staged: {
257
- type: 'boolean',
258
- description: 'Show staged changes (--cached). Default: false'
259
- },
260
- file: {
261
- type: 'string',
262
- description: 'Diff a specific file. If omitted, shows all changes'
263
- }
264
- },
265
- required: []
266
- },
267
- execute: async ({ staged, file }) => {
268
- const showStaged = staged ?? false;
269
- const filePath = file;
270
- if (!(await isGitRepo(workingDir))) {
271
- return { success: false, output: null, error: 'Not a git repository' };
272
- }
273
- try {
274
- const stagedFlag = showStaged ? '--cached ' : '';
275
- const fileArg = filePath ? `-- "${filePath}"` : '';
276
- const { stdout } = await runGit(`diff ${stagedFlag}${fileArg}`.trim(), workingDir);
277
- return {
278
- success: true,
279
- output: { diff: stdout, staged: showStaged, file: filePath ?? null }
280
- };
281
- }
282
- catch (error) {
283
- const e = error;
284
- return {
285
- success: false,
286
- output: null,
287
- error: e.stderr?.trim() || e.message || 'git diff failed'
288
- };
289
- }
290
- }
291
- }
292
- ];
293
- }
294
- //# sourceMappingURL=git.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"git.js","sourceRoot":"","sources":["../../../src/tools/builtin/git.ts"],"names":[],"mappings":";AAAA;;GAEG;;AAuBH,wCA6RC;AAlTD,iDAAqC;AACrC,+BAAiC;AAGjC,MAAM,SAAS,GAAG,IAAA,gBAAS,EAAC,oBAAI,CAAC,CAAC;AAElC,MAAM,kBAAkB,GAAG,CAAC,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,YAAY,CAAC,CAAC;AAEvE,KAAK,UAAU,SAAS,CAAC,UAAkB;IACzC,IAAI,CAAC;QACH,MAAM,SAAS,CAAC,yBAAyB,EAAE,EAAE,GAAG,EAAE,UAAU,EAAE,CAAC,CAAC;QAChE,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,KAAK,UAAU,MAAM,CAAC,IAAY,EAAE,UAAkB;IACpD,OAAO,SAAS,CAAC,OAAO,IAAI,EAAE,EAAE,EAAE,GAAG,EAAE,UAAU,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;AACvE,CAAC;AAED,SAAgB,cAAc,CAAC,UAAkB;IAC/C,OAAO;QACL;YACE,IAAI,EAAE,cAAc;YACpB,WAAW,EAAE,6BAA6B;YAC1C,UAAU,EAAE;gBACV,IAAI,EAAE,QAAQ;gBACd,UAAU,EAAE;oBACV,MAAM,EAAE;wBACN,IAAI,EAAE,QAAQ;wBACd,WAAW,EAAE,mCAAmC;qBACjD;oBACD,MAAM,EAAE;wBACN,IAAI,EAAE,SAAS;wBACf,WAAW,EAAE,kEAAkE;qBAChF;iBACF;gBACD,QAAQ,EAAE,CAAC,QAAQ,CAAC;aACrB;YACD,OAAO,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE;gBACpC,MAAM,UAAU,GAAG,MAAgB,CAAC;gBACpC,MAAM,YAAY,GAAG,MAA6B,IAAI,KAAK,CAAC;gBAE5D,IAAI,CAAC,CAAC,MAAM,SAAS,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC;oBACnC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,sBAAsB,EAAE,CAAC;gBACzE,CAAC;gBAED,IAAI,YAAY,IAAI,kBAAkB,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;oBAC5D,OAAO;wBACL,OAAO,EAAE,KAAK;wBACd,MAAM,EAAE,IAAI;wBACZ,KAAK,EAAE,mCAAmC,UAAU,EAAE;qBACvD,CAAC;gBACJ,CAAC;gBAED,IAAI,CAAC;oBACH,MAAM,IAAI,GAAG,YAAY,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;oBACvC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,MAAM,CAAC,YAAY,IAAI,GAAG,UAAU,EAAE,EAAE,UAAU,CAAC,CAAC;oBACrF,OAAO;wBACL,OAAO,EAAE,IAAI;wBACb,MAAM,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,IAAI,EAAE,EAAE;qBACpG,CAAC;gBACJ,CAAC;gBAAC,OAAO,KAAc,EAAE,CAAC;oBACxB,MAAM,CAAC,GAAG,KAA8C,CAAC;oBACzD,OAAO;wBACL,OAAO,EAAE,KAAK;wBACd,MAAM,EAAE,IAAI;wBACZ,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,OAAO,IAAI,qBAAqB;qBAC9D,CAAC;gBACJ,CAAC;YACH,CAAC;SACF;QAED;YACE,IAAI,EAAE,YAAY;YAClB,WAAW,EAAE,gCAAgC;YAC7C,UAAU,EAAE;gBACV,IAAI,EAAE,QAAQ;gBACd,UAAU,EAAE;oBACV,OAAO,EAAE;wBACP,IAAI,EAAE,QAAQ;wBACd,WAAW,EAAE,gBAAgB;qBAC9B;oBACD,KAAK,EAAE;wBACL,IAAI,EAAE,OAAO;wBACb,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;wBACzB,WAAW,EAAE,sEAAsE;qBACpF;iBACF;gBACD,QAAQ,EAAE,CAAC,SAAS,CAAC;aACtB;YACD,OAAO,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE;gBACpC,MAAM,aAAa,GAAG,OAAiB,CAAC;gBACxC,MAAM,YAAY,GAAG,KAA6B,CAAC;gBAEnD,IAAI,CAAC,CAAC,MAAM,SAAS,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC;oBACnC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,sBAAsB,EAAE,CAAC;gBACzE,CAAC;gBAED,IAAI,CAAC;oBACH,4BAA4B;oBAC5B,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,MAAM,CAAC,oBAAoB,EAAE,UAAU,CAAC,CAAC;oBAC7E,MAAM,YAAY,GAAG,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;oBACjI,IAAI,YAAY,EAAE,CAAC;wBACjB,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,yCAAyC,EAAE,CAAC;oBAC5F,CAAC;oBAED,cAAc;oBACd,IAAI,YAAY,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;wBAC5C,MAAM,MAAM,CAAC,UAAU,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,UAAU,CAAC,CAAC;oBAClF,CAAC;yBAAM,CAAC;wBACN,MAAM,MAAM,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;oBACrC,CAAC;oBAED,SAAS;oBACT,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,MAAM,CAAC,aAAa,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,EAAE,EAAE,UAAU,CAAC,CAAC;oBAC1F,OAAO;wBACL,OAAO,EAAE,IAAI;wBACb,MAAM,EAAE,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,CAAC,IAAI,EAAE,EAAE;qBAC1D,CAAC;gBACJ,CAAC;gBAAC,OAAO,KAAc,EAAE,CAAC;oBACxB,MAAM,CAAC,GAAG,KAA+D,CAAC;oBAC1E,OAAO;wBACL,OAAO,EAAE,KAAK;wBACd,MAAM,EAAE,IAAI;wBACZ,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,OAAO,IAAI,mBAAmB;qBAChF,CAAC;gBACJ,CAAC;YACH,CAAC;SACF;QAED;YACE,IAAI,EAAE,UAAU;YAChB,WAAW,EAAE,+BAA+B;YAC5C,UAAU,EAAE;gBACV,IAAI,EAAE,QAAQ;gBACd,UAAU,EAAE;oBACV,MAAM,EAAE;wBACN,IAAI,EAAE,QAAQ;wBACd,WAAW,EAAE,8BAA8B;qBAC5C;oBACD,YAAY,EAAE;wBACZ,IAAI,EAAE,SAAS;wBACf,WAAW,EAAE,gDAAgD;qBAC9D;iBACF;gBACD,QAAQ,EAAE,EAAE;aACb;YACD,OAAO,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,YAAY,EAAE,EAAE,EAAE;gBAC1C,MAAM,UAAU,GAAI,MAA6B,IAAI,QAAQ,CAAC;gBAC9D,MAAM,WAAW,GAAI,YAAoC,IAAI,IAAI,CAAC;gBAElE,IAAI,CAAC,CAAC,MAAM,SAAS,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC;oBACnC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,sBAAsB,EAAE,CAAC;gBACzE,CAAC;gBAED,IAAI,CAAC;oBACH,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,MAAM,CAAC,6BAA6B,EAAE,UAAU,CAAC,CAAC;oBACtF,MAAM,aAAa,GAAG,SAAS,CAAC,IAAI,EAAE,CAAC;oBAEvC,MAAM,YAAY,GAAG,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;oBAC9C,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,MAAM,CAAC,QAAQ,YAAY,GAAG,UAAU,IAAI,aAAa,EAAE,EAAE,UAAU,CAAC,CAAC;oBAC1G,OAAO;wBACL,OAAO,EAAE,IAAI;wBACb,MAAM,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,IAAI,EAAE,EAAE;qBACpG,CAAC;gBACJ,CAAC;gBAAC,OAAO,KAAc,EAAE,CAAC;oBACxB,MAAM,CAAC,GAAG,KAA8C,CAAC;oBACzD,OAAO;wBACL,OAAO,EAAE,KAAK;wBACd,MAAM,EAAE,IAAI;wBACZ,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,OAAO,IAAI,iBAAiB;qBAC1D,CAAC;gBACJ,CAAC;YACH,CAAC;SACF;QAED;YACE,IAAI,EAAE,UAAU;YAChB,WAAW,EAAE,iCAAiC;YAC9C,UAAU,EAAE;gBACV,IAAI,EAAE,QAAQ;gBACd,UAAU,EAAE;oBACV,MAAM,EAAE;wBACN,IAAI,EAAE,QAAQ;wBACd,WAAW,EAAE,8BAA8B;qBAC5C;oBACD,MAAM,EAAE;wBACN,IAAI,EAAE,QAAQ;wBACd,WAAW,EAAE,kDAAkD;qBAChE;iBACF;gBACD,QAAQ,EAAE,EAAE;aACb;YACD,OAAO,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE;gBACpC,MAAM,UAAU,GAAI,MAA6B,IAAI,QAAQ,CAAC;gBAC9D,MAAM,UAAU,GAAG,MAA4B,CAAC;gBAEhD,IAAI,CAAC,CAAC,MAAM,SAAS,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC;oBACnC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,sBAAsB,EAAE,CAAC;gBACzE,CAAC;gBAED,IAAI,CAAC;oBACH,MAAM,SAAS,GAAG,UAAU,CAAC,CAAC,CAAC,IAAI,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;oBACrD,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,MAAM,CAAC,QAAQ,UAAU,GAAG,SAAS,EAAE,EAAE,UAAU,CAAC,CAAC;oBACtF,OAAO;wBACL,OAAO,EAAE,IAAI;wBACb,MAAM,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,UAAU,IAAI,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,IAAI,EAAE,EAAE;qBAC9G,CAAC;gBACJ,CAAC;gBAAC,OAAO,KAAc,EAAE,CAAC;oBACxB,MAAM,CAAC,GAAG,KAA+D,CAAC;oBAC1E,OAAO;wBACL,OAAO,EAAE,KAAK;wBACd,MAAM,EAAE,IAAI;wBACZ,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,OAAO,IAAI,iBAAiB;qBAC9E,CAAC;gBACJ,CAAC;YACH,CAAC;SACF;QAED;YACE,IAAI,EAAE,YAAY;YAClB,WAAW,EAAE,2DAA2D;YACxE,UAAU,EAAE;gBACV,IAAI,EAAE,QAAQ;gBACd,UAAU,EAAE,EAAE;gBACd,QAAQ,EAAE,EAAE;aACb;YACD,OAAO,EAAE,KAAK,IAAI,EAAE;gBAClB,IAAI,CAAC,CAAC,MAAM,SAAS,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC;oBACnC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,sBAAsB,EAAE,CAAC;gBACzE,CAAC;gBAED,IAAI,CAAC;oBACH,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,MAAM,CAAC,oBAAoB,EAAE,UAAU,CAAC,CAAC;oBAC7E,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,MAAM,CAAC,6BAA6B,EAAE,UAAU,CAAC,CAAC;oBAEnF,MAAM,KAAK,GAAG,SAAS;yBACpB,KAAK,CAAC,IAAI,CAAC;yBACX,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;yBAC3B,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;oBAE3E,OAAO;wBACL,OAAO,EAAE,IAAI;wBACb,MAAM,EAAE;4BACN,MAAM,EAAE,MAAM,CAAC,IAAI,EAAE;4BACrB,KAAK,EAAE,KAAK,CAAC,MAAM,KAAK,CAAC;4BACzB,KAAK;yBACN;qBACF,CAAC;gBACJ,CAAC;gBAAC,OAAO,KAAc,EAAE,CAAC;oBACxB,MAAM,CAAC,GAAG,KAA8C,CAAC;oBACzD,OAAO;wBACL,OAAO,EAAE,KAAK;wBACd,MAAM,EAAE,IAAI;wBACZ,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,OAAO,IAAI,mBAAmB;qBAC5D,CAAC;gBACJ,CAAC;YACH,CAAC;SACF;QAED;YACE,IAAI,EAAE,UAAU;YAChB,WAAW,EAAE,8CAA8C;YAC3D,UAAU,EAAE;gBACV,IAAI,EAAE,QAAQ;gBACd,UAAU,EAAE;oBACV,MAAM,EAAE;wBACN,IAAI,EAAE,SAAS;wBACf,WAAW,EAAE,gDAAgD;qBAC9D;oBACD,IAAI,EAAE;wBACJ,IAAI,EAAE,QAAQ;wBACd,WAAW,EAAE,qDAAqD;qBACnE;iBACF;gBACD,QAAQ,EAAE,EAAE;aACb;YACD,OAAO,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE;gBAClC,MAAM,UAAU,GAAI,MAA8B,IAAI,KAAK,CAAC;gBAC5D,MAAM,QAAQ,GAAG,IAA0B,CAAC;gBAE5C,IAAI,CAAC,CAAC,MAAM,SAAS,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC;oBACnC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,sBAAsB,EAAE,CAAC;gBACzE,CAAC;gBAED,IAAI,CAAC;oBACH,MAAM,UAAU,GAAG,UAAU,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC;oBACjD,MAAM,OAAO,GAAG,QAAQ,CAAC,CAAC,CAAC,OAAO,QAAQ,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;oBACnD,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,MAAM,CAAC,QAAQ,UAAU,GAAG,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE,UAAU,CAAC,CAAC;oBACnF,OAAO;wBACL,OAAO,EAAE,IAAI;wBACb,MAAM,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,QAAQ,IAAI,IAAI,EAAE;qBACrE,CAAC;gBACJ,CAAC;gBAAC,OAAO,KAAc,EAAE,CAAC;oBACxB,MAAM,CAAC,GAAG,KAA8C,CAAC;oBACzD,OAAO;wBACL,OAAO,EAAE,KAAK;wBACd,MAAM,EAAE,IAAI;wBACZ,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,OAAO,IAAI,iBAAiB;qBAC1D,CAAC;gBACJ,CAAC;YACH,CAAC;SACF;KACF,CAAC;AACJ,CAAC"}
@@ -1,6 +0,0 @@
1
- /**
2
- * Search tool - codebase search using grep
3
- */
4
- import type { Tool } from '../tool-registry.js';
5
- export declare function createSearchTools(repoPath: string): Tool[];
6
- //# sourceMappingURL=search.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../../../src/tools/builtin/search.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAC;AAIhD,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,EAAE,CAiG1D"}
@@ -1,104 +0,0 @@
1
- "use strict";
2
- /**
3
- * Search tool - codebase search using grep
4
- */
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.createSearchTools = createSearchTools;
7
- const child_process_1 = require("child_process");
8
- const util_1 = require("util");
9
- const execAsync = (0, util_1.promisify)(child_process_1.exec);
10
- function createSearchTools(repoPath) {
11
- return [
12
- {
13
- name: 'search-search_codebase',
14
- description: 'Search for a pattern in the codebase (like grep)',
15
- parameters: {
16
- type: 'object',
17
- properties: {
18
- pattern: {
19
- type: 'string',
20
- description: 'Search pattern (string or regex)'
21
- },
22
- file_pattern: {
23
- type: 'string',
24
- description: 'File glob pattern to filter (e.g., "*.ts", "*.js")',
25
- }
26
- },
27
- required: ['pattern']
28
- },
29
- execute: async ({ pattern, file_pattern }) => {
30
- try {
31
- const pat = pattern;
32
- const filePat = file_pattern;
33
- // Try ripgrep first, fallback to grep
34
- let command;
35
- // Check if ripgrep is available
36
- try {
37
- await execAsync('which rg', { cwd: repoPath });
38
- // Use ripgrep
39
- command = filePat
40
- ? `rg -n --glob "${filePat}" "${pat}" .`
41
- : `rg -n "${pat}" .`;
42
- }
43
- catch {
44
- // Fallback to standard grep
45
- command = filePat
46
- ? `grep -r -n --include="${filePat}" "${pat}" .`
47
- : `grep -r -n "${pat}" .`;
48
- }
49
- const { stdout } = await execAsync(command, {
50
- cwd: repoPath,
51
- maxBuffer: 1024 * 1024 * 10, // 10MB
52
- timeout: 30000
53
- });
54
- // Parse results - format is "file:line:content"
55
- const lines = stdout.trim().split('\n').filter(l => l.length > 0);
56
- const matches = lines.slice(0, 50).map(line => {
57
- const parts = line.split(':');
58
- if (parts.length >= 3) {
59
- const [file, lineNum, ...rest] = parts;
60
- return {
61
- file,
62
- line: parseInt(lineNum, 10),
63
- content: rest.join(':').trim()
64
- };
65
- }
66
- return null;
67
- }).filter(m => m !== null);
68
- return {
69
- success: true,
70
- output: {
71
- pattern,
72
- matches,
73
- count: matches.length,
74
- total_found: lines.length,
75
- truncated: lines.length > 50
76
- }
77
- };
78
- }
79
- catch (error) {
80
- // Exit code 1 typically means no matches found
81
- if (error && typeof error === 'object' && 'code' in error && error.code === 1) {
82
- return {
83
- success: true,
84
- output: {
85
- pattern,
86
- matches: [],
87
- count: 0,
88
- total_found: 0,
89
- truncated: false
90
- }
91
- };
92
- }
93
- const errorMessage = error instanceof Error ? error.message : String(error);
94
- return {
95
- success: false,
96
- output: null,
97
- error: `Search failed: ${errorMessage}`
98
- };
99
- }
100
- }
101
- }
102
- ];
103
- }
104
- //# sourceMappingURL=search.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"search.js","sourceRoot":"","sources":["../../../src/tools/builtin/search.ts"],"names":[],"mappings":"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"}
@@ -1,7 +0,0 @@
1
- /**
2
- * Web search tool - search the web using the Tavily API
3
- */
4
- import type { Tool } from '../tool-registry.js';
5
- export declare const WEB_SEARCH_PROMPT_SNIPPET: string;
6
- export declare function createWebSearchTools(): Tool[];
7
- //# sourceMappingURL=web-search.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"web-search.d.ts","sourceRoot":"","sources":["../../../src/tools/builtin/web-search.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAC;AAIhD,eAAO,MAAM,yBAAyB,QAM9B,CAAC;AAET,wBAAgB,oBAAoB,IAAI,IAAI,EAAE,CAoF7C"}
@@ -1,94 +0,0 @@
1
- "use strict";
2
- /**
3
- * Web search tool - search the web using the Tavily API
4
- */
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.WEB_SEARCH_PROMPT_SNIPPET = void 0;
7
- exports.createWebSearchTools = createWebSearchTools;
8
- const TAVILY_API_URL = 'https://api.tavily.com/search';
9
- exports.WEB_SEARCH_PROMPT_SNIPPET = `
10
- ## web_search tool
11
-
12
- Use \`web_search-search\` to search the web for up-to-date information.
13
- Search in the language most relevant to the query (e.g. English for technical docs, French for local content).
14
- Prefer specific, targeted queries over broad ones for better results.
15
- `.trim();
16
- function createWebSearchTools() {
17
- return [
18
- {
19
- name: 'web_search-search',
20
- description: 'Search the web using Tavily and return relevant results',
21
- parameters: {
22
- type: 'object',
23
- properties: {
24
- query: {
25
- type: 'string',
26
- description: 'The search query'
27
- },
28
- max_results: {
29
- type: 'number',
30
- description: 'Maximum number of results to return (default: 5)'
31
- }
32
- },
33
- required: ['query']
34
- },
35
- execute: async ({ query, max_results }) => {
36
- const apiKey = process.env.TAVILY_API_KEY;
37
- if (!apiKey) {
38
- return {
39
- success: false,
40
- output: null,
41
- error: 'TAVILY_API_KEY environment variable is not set'
42
- };
43
- }
44
- const q = query;
45
- const limit = max_results ?? 5;
46
- try {
47
- const response = await fetch(TAVILY_API_URL, {
48
- method: 'POST',
49
- headers: {
50
- 'Content-Type': 'application/json',
51
- 'Authorization': `Bearer ${apiKey}`
52
- },
53
- body: JSON.stringify({
54
- query: q,
55
- max_results: limit
56
- })
57
- });
58
- if (!response.ok) {
59
- const text = await response.text();
60
- return {
61
- success: false,
62
- output: null,
63
- error: `Tavily API error ${response.status}: ${text}`
64
- };
65
- }
66
- const data = await response.json();
67
- return {
68
- success: true,
69
- output: {
70
- query: q,
71
- results: (data.results ?? []).map(r => ({
72
- title: r.title,
73
- url: r.url,
74
- content: r.content,
75
- score: r.score
76
- })),
77
- answer: data.answer ?? null,
78
- count: (data.results ?? []).length
79
- }
80
- };
81
- }
82
- catch (error) {
83
- const errorMessage = error instanceof Error ? error.message : String(error);
84
- return {
85
- success: false,
86
- output: null,
87
- error: `Web search failed: ${errorMessage}`
88
- };
89
- }
90
- }
91
- }
92
- ];
93
- }
94
- //# sourceMappingURL=web-search.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"web-search.js","sourceRoot":"","sources":["../../../src/tools/builtin/web-search.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AAcH,oDAoFC;AA9FD,MAAM,cAAc,GAAG,+BAA+B,CAAC;AAE1C,QAAA,yBAAyB,GAAG;;;;;;CAMxC,CAAC,IAAI,EAAE,CAAC;AAET,SAAgB,oBAAoB;IAClC,OAAO;QACL;YACE,IAAI,EAAE,mBAAmB;YACzB,WAAW,EAAE,yDAAyD;YACtE,UAAU,EAAE;gBACV,IAAI,EAAE,QAAQ;gBACd,UAAU,EAAE;oBACV,KAAK,EAAE;wBACL,IAAI,EAAE,QAAQ;wBACd,WAAW,EAAE,kBAAkB;qBAChC;oBACD,WAAW,EAAE;wBACX,IAAI,EAAE,QAAQ;wBACd,WAAW,EAAE,kDAAkD;qBAChE;iBACF;gBACD,QAAQ,EAAE,CAAC,OAAO,CAAC;aACpB;YACD,OAAO,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE,EAAE,EAAE;gBACxC,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC;gBAC1C,IAAI,CAAC,MAAM,EAAE,CAAC;oBACZ,OAAO;wBACL,OAAO,EAAE,KAAK;wBACd,MAAM,EAAE,IAAI;wBACZ,KAAK,EAAE,gDAAgD;qBACxD,CAAC;gBACJ,CAAC;gBAED,MAAM,CAAC,GAAG,KAAe,CAAC;gBAC1B,MAAM,KAAK,GAAI,WAAkC,IAAI,CAAC,CAAC;gBAEvD,IAAI,CAAC;oBACH,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,cAAc,EAAE;wBAC3C,MAAM,EAAE,MAAM;wBACd,OAAO,EAAE;4BACP,cAAc,EAAE,kBAAkB;4BAClC,eAAe,EAAE,UAAU,MAAM,EAAE;yBACpC;wBACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;4BACnB,KAAK,EAAE,CAAC;4BACR,WAAW,EAAE,KAAK;yBACnB,CAAC;qBACH,CAAC,CAAC;oBAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;wBACjB,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;wBACnC,OAAO;4BACL,OAAO,EAAE,KAAK;4BACd,MAAM,EAAE,IAAI;4BACZ,KAAK,EAAE,oBAAoB,QAAQ,CAAC,MAAM,KAAK,IAAI,EAAE;yBACtD,CAAC;oBACJ,CAAC;oBAED,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAG/B,CAAC;oBAEF,OAAO;wBACL,OAAO,EAAE,IAAI;wBACb,MAAM,EAAE;4BACN,KAAK,EAAE,CAAC;4BACR,OAAO,EAAE,CAAC,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;gCACtC,KAAK,EAAE,CAAC,CAAC,KAAK;gCACd,GAAG,EAAE,CAAC,CAAC,GAAG;gCACV,OAAO,EAAE,CAAC,CAAC,OAAO;gCAClB,KAAK,EAAE,CAAC,CAAC,KAAK;6BACf,CAAC,CAAC;4BACH,MAAM,EAAE,IAAI,CAAC,MAAM,IAAI,IAAI;4BAC3B,KAAK,EAAE,CAAC,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,MAAM;yBACnC;qBACF,CAAC;gBACJ,CAAC;gBAAC,OAAO,KAAc,EAAE,CAAC;oBACxB,MAAM,YAAY,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;oBAC5E,OAAO;wBACL,OAAO,EAAE,KAAK;wBACd,MAAM,EAAE,IAAI;wBACZ,KAAK,EAAE,sBAAsB,YAAY,EAAE;qBAC5C,CAAC;gBACJ,CAAC;YACH,CAAC;SACF;KACF,CAAC;AACJ,CAAC"}
@@ -1,5 +0,0 @@
1
- /**
2
- * Tests for the web_search builtin tool
3
- */
4
- export {};
5
- //# sourceMappingURL=web-search.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"web-search.test.d.ts","sourceRoot":"","sources":["../../../src/tools/builtin/web-search.test.ts"],"names":[],"mappings":"AAAA;;GAEG"}
@@ -1,90 +0,0 @@
1
- "use strict";
2
- /**
3
- * Tests for the web_search builtin tool
4
- */
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- const vitest_1 = require("vitest");
7
- const web_search_js_1 = require("./web-search.js");
8
- (0, vitest_1.describe)('createWebSearchTools', () => {
9
- (0, vitest_1.afterEach)(() => {
10
- vitest_1.vi.restoreAllMocks();
11
- delete process.env.TAVILY_API_KEY;
12
- });
13
- (0, vitest_1.it)('returns a single tool named web_search-search', () => {
14
- const tools = (0, web_search_js_1.createWebSearchTools)();
15
- (0, vitest_1.expect)(tools).toHaveLength(1);
16
- (0, vitest_1.expect)(tools[0].name).toBe('web_search-search');
17
- });
18
- (0, vitest_1.it)('requires query parameter', () => {
19
- const [tool] = (0, web_search_js_1.createWebSearchTools)();
20
- const schema = tool.parameters;
21
- (0, vitest_1.expect)(schema.required).toContain('query');
22
- });
23
- (0, vitest_1.it)('returns error when TAVILY_API_KEY is not set', async () => {
24
- const [tool] = (0, web_search_js_1.createWebSearchTools)();
25
- const result = await tool.execute({ query: 'test' });
26
- (0, vitest_1.expect)(result.success).toBe(false);
27
- (0, vitest_1.expect)(result.error).toMatch(/TAVILY_API_KEY/);
28
- });
29
- (0, vitest_1.it)('calls Tavily API and returns results', async () => {
30
- process.env.TAVILY_API_KEY = 'test-key';
31
- const mockResponse = {
32
- results: [
33
- { title: 'Result 1', url: 'https://example.com/1', content: 'Content 1', score: 0.9 },
34
- { title: 'Result 2', url: 'https://example.com/2', content: 'Content 2', score: 0.8 },
35
- ],
36
- answer: 'A direct answer'
37
- };
38
- vitest_1.vi.spyOn(global, 'fetch').mockResolvedValueOnce(new Response(JSON.stringify(mockResponse), { status: 200 }));
39
- const [tool] = (0, web_search_js_1.createWebSearchTools)();
40
- const result = await tool.execute({ query: 'test query', max_results: 2 });
41
- (0, vitest_1.expect)(result.success).toBe(true);
42
- const output = result.output;
43
- (0, vitest_1.expect)(output.query).toBe('test query');
44
- (0, vitest_1.expect)(output.results).toHaveLength(2);
45
- (0, vitest_1.expect)(output.results[0].title).toBe('Result 1');
46
- (0, vitest_1.expect)(output.answer).toBe('A direct answer');
47
- (0, vitest_1.expect)(output.count).toBe(2);
48
- });
49
- (0, vitest_1.it)('passes max_results to Tavily API', async () => {
50
- process.env.TAVILY_API_KEY = 'test-key';
51
- vitest_1.vi.spyOn(global, 'fetch').mockResolvedValueOnce(new Response(JSON.stringify({ results: [], answer: null }), { status: 200 }));
52
- const [tool] = (0, web_search_js_1.createWebSearchTools)();
53
- await tool.execute({ query: 'test', max_results: 3 });
54
- const [, options] = fetch.mock.calls[0];
55
- const body = JSON.parse(options.body);
56
- (0, vitest_1.expect)(body.max_results).toBe(3);
57
- });
58
- (0, vitest_1.it)('defaults max_results to 5 when not provided', async () => {
59
- process.env.TAVILY_API_KEY = 'test-key';
60
- vitest_1.vi.spyOn(global, 'fetch').mockResolvedValueOnce(new Response(JSON.stringify({ results: [] }), { status: 200 }));
61
- const [tool] = (0, web_search_js_1.createWebSearchTools)();
62
- await tool.execute({ query: 'test' });
63
- const [, options] = fetch.mock.calls[0];
64
- const body = JSON.parse(options.body);
65
- (0, vitest_1.expect)(body.max_results).toBe(5);
66
- });
67
- (0, vitest_1.it)('returns error on non-ok API response', async () => {
68
- process.env.TAVILY_API_KEY = 'test-key';
69
- vitest_1.vi.spyOn(global, 'fetch').mockResolvedValueOnce(new Response('Unauthorized', { status: 401 }));
70
- const [tool] = (0, web_search_js_1.createWebSearchTools)();
71
- const result = await tool.execute({ query: 'test' });
72
- (0, vitest_1.expect)(result.success).toBe(false);
73
- (0, vitest_1.expect)(result.error).toMatch(/401/);
74
- });
75
- (0, vitest_1.it)('returns error on network failure', async () => {
76
- process.env.TAVILY_API_KEY = 'test-key';
77
- vitest_1.vi.spyOn(global, 'fetch').mockRejectedValueOnce(new Error('Network error'));
78
- const [tool] = (0, web_search_js_1.createWebSearchTools)();
79
- const result = await tool.execute({ query: 'test' });
80
- (0, vitest_1.expect)(result.success).toBe(false);
81
- (0, vitest_1.expect)(result.error).toMatch(/Network error/);
82
- });
83
- });
84
- (0, vitest_1.describe)('WEB_SEARCH_PROMPT_SNIPPET', () => {
85
- (0, vitest_1.it)('is a non-empty string', () => {
86
- (0, vitest_1.expect)(typeof web_search_js_1.WEB_SEARCH_PROMPT_SNIPPET).toBe('string');
87
- (0, vitest_1.expect)(web_search_js_1.WEB_SEARCH_PROMPT_SNIPPET.length).toBeGreaterThan(0);
88
- });
89
- });
90
- //# sourceMappingURL=web-search.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"web-search.test.js","sourceRoot":"","sources":["../../../src/tools/builtin/web-search.test.ts"],"names":[],"mappings":"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"}