@ikarmic/forge-core 4.4.0 → 5.0.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.
- package/LICENSE +44 -21
- package/README.md +2 -2
- package/dist/agent/agent.d.ts +0 -1
- package/dist/agent/agent.js +84 -32
- package/dist/agent/architect.d.ts +3 -1
- package/dist/agent/architect.js +1 -1
- package/dist/agent/cache-hints.d.ts +0 -1
- package/dist/agent/cache-hints.js +0 -1
- package/dist/agent/cost-router.d.ts +0 -1
- package/dist/agent/cost-router.js +2 -1
- package/dist/agent/enhance-prompt.d.ts +7 -0
- package/dist/agent/enhance-prompt.js +30 -0
- package/dist/agent/index.d.ts +0 -1
- package/dist/agent/index.js +0 -1
- package/dist/agent/loop-guard.d.ts +21 -0
- package/dist/agent/loop-guard.js +41 -0
- package/dist/agent/prompts.d.ts +0 -1
- package/dist/agent/prompts.js +0 -1
- package/dist/agent/think-tags.d.ts +0 -1
- package/dist/agent/think-tags.js +0 -1
- package/dist/agent/verify.d.ts +0 -1
- package/dist/agent/verify.js +0 -1
- package/dist/ai-comments/index.d.ts +0 -1
- package/dist/ai-comments/index.js +0 -1
- package/dist/attachments.d.ts +46 -0
- package/dist/attachments.js +178 -0
- package/dist/browser/cdp.d.ts +0 -1
- package/dist/browser/cdp.js +0 -1
- package/dist/browser/chrome.d.ts +0 -1
- package/dist/browser/chrome.js +0 -1
- package/dist/browser/session.d.ts +0 -1
- package/dist/browser/session.js +0 -1
- package/dist/checkpoints/index.d.ts +0 -1
- package/dist/checkpoints/index.js +0 -1
- package/dist/checkpoints/store.d.ts +0 -1
- package/dist/checkpoints/store.js +0 -1
- package/dist/checkpoints/types.d.ts +0 -1
- package/dist/checkpoints/types.js +0 -1
- package/dist/code-index/builder.d.ts +0 -1
- package/dist/code-index/builder.js +4 -1
- package/dist/code-index/index-store.d.ts +0 -1
- package/dist/code-index/index-store.js +0 -1
- package/dist/code-index/parser.d.ts +0 -1
- package/dist/code-index/parser.js +0 -1
- package/dist/code-index/types.d.ts +0 -1
- package/dist/code-index/types.js +0 -1
- package/dist/commands/custom-commands.d.ts +24 -0
- package/dist/commands/custom-commands.js +98 -0
- package/dist/config-file.d.ts +4 -1
- package/dist/config-file.js +0 -1
- package/dist/config.d.ts +0 -1
- package/dist/config.js +0 -1
- package/dist/context/compaction.d.ts +0 -1
- package/dist/context/compaction.js +17 -3
- package/dist/context/mask.d.ts +0 -1
- package/dist/context/mask.js +1 -2
- package/dist/credentials/index.d.ts +0 -1
- package/dist/credentials/index.js +0 -1
- package/dist/credentials/types.d.ts +0 -1
- package/dist/credentials/types.js +0 -1
- package/dist/diff/index.d.ts +0 -1
- package/dist/diff/index.js +0 -1
- package/dist/diff/unified-diff.d.ts +0 -1
- package/dist/diff/unified-diff.js +42 -16
- package/dist/git/auto-commit.d.ts +1 -2
- package/dist/git/auto-commit.js +17 -5
- package/dist/git/index.d.ts +0 -1
- package/dist/git/index.js +0 -1
- package/dist/github/github-tools.d.ts +83 -0
- package/dist/github/github-tools.js +175 -0
- package/dist/hooks/agent-runner.d.ts +0 -1
- package/dist/hooks/agent-runner.js +0 -1
- package/dist/hooks/bus.d.ts +0 -1
- package/dist/hooks/bus.js +0 -1
- package/dist/hooks/config.d.ts +0 -1
- package/dist/hooks/config.js +0 -1
- package/dist/hooks/events.d.ts +0 -1
- package/dist/hooks/events.js +0 -1
- package/dist/hooks/index.d.ts +0 -1
- package/dist/hooks/index.js +0 -1
- package/dist/hooks/loader.d.ts +0 -1
- package/dist/hooks/loader.js +0 -1
- package/dist/hooks/runner.d.ts +0 -1
- package/dist/hooks/runner.js +0 -1
- package/dist/hooks/watch-coalescer.d.ts +0 -1
- package/dist/hooks/watch-coalescer.js +0 -1
- package/dist/hooks/watch-ignore.d.ts +0 -1
- package/dist/hooks/watch-ignore.js +0 -1
- package/dist/hooks/watcher.d.ts +0 -1
- package/dist/hooks/watcher.js +0 -1
- package/dist/index.d.ts +21 -9
- package/dist/index.js +16 -5
- package/dist/lazy-model.d.ts +0 -1
- package/dist/lazy-model.js +0 -1
- package/dist/lint/auto-lint.d.ts +0 -1
- package/dist/lint/auto-lint.js +0 -1
- package/dist/lint/index.d.ts +0 -1
- package/dist/lint/index.js +0 -1
- package/dist/lsp/client.d.ts +0 -1
- package/dist/lsp/client.js +0 -1
- package/dist/lsp/diagnostics.d.ts +0 -1
- package/dist/lsp/diagnostics.js +0 -1
- package/dist/lsp/index.d.ts +0 -1
- package/dist/lsp/index.js +0 -1
- package/dist/mcp/catalog.d.ts +0 -1
- package/dist/mcp/catalog.js +0 -1
- package/dist/mcp/index.d.ts +0 -1
- package/dist/mcp/index.js +0 -1
- package/dist/mcp/json-schema-to-zod.d.ts +0 -1
- package/dist/mcp/json-schema-to-zod.js +0 -1
- package/dist/mcp/manager.d.ts +0 -1
- package/dist/mcp/manager.js +0 -1
- package/dist/mcp/marketplace-types.d.ts +0 -1
- package/dist/mcp/marketplace-types.js +0 -1
- package/dist/mcp/marketplace.d.ts +0 -1
- package/dist/mcp/marketplace.js +0 -1
- package/dist/mcp/mcp-client.d.ts +0 -1
- package/dist/mcp/mcp-client.js +0 -1
- package/dist/mcp/mcp-config.d.ts +0 -1
- package/dist/mcp/mcp-config.js +0 -1
- package/dist/mcp/registry.d.ts +0 -1
- package/dist/mcp/registry.js +0 -1
- package/dist/memory/memory-store.d.ts +57 -11
- package/dist/memory/memory-store.js +236 -70
- package/dist/memory/rank.d.ts +20 -0
- package/dist/memory/rank.js +64 -0
- package/dist/memory/stale.d.ts +18 -0
- package/dist/memory/stale.js +45 -0
- package/dist/model-alias.d.ts +0 -1
- package/dist/model-alias.js +0 -1
- package/dist/model-catalog.d.ts +0 -1
- package/dist/model-catalog.js +0 -1
- package/dist/model-list.d.ts +0 -1
- package/dist/model-list.js +0 -1
- package/dist/orchestrator/board-tools.d.ts +0 -1
- package/dist/orchestrator/board-tools.js +0 -1
- package/dist/orchestrator/board.d.ts +0 -1
- package/dist/orchestrator/board.js +0 -1
- package/dist/orchestrator/index.d.ts +0 -1
- package/dist/orchestrator/index.js +0 -1
- package/dist/orchestrator/orchestrator.d.ts +0 -1
- package/dist/orchestrator/orchestrator.js +0 -1
- package/dist/orchestrator/router.d.ts +0 -1
- package/dist/orchestrator/router.js +0 -1
- package/dist/orchestrator/specialists-registry.d.ts +0 -1
- package/dist/orchestrator/specialists-registry.js +0 -1
- package/dist/orchestrator/specialists.d.ts +0 -1
- package/dist/orchestrator/specialists.js +5 -6
- package/dist/orchestrator/types.d.ts +0 -1
- package/dist/orchestrator/types.js +0 -1
- package/dist/plugins/index.d.ts +0 -1
- package/dist/plugins/index.js +0 -1
- package/dist/plugins/install.d.ts +0 -1
- package/dist/plugins/install.js +0 -1
- package/dist/plugins/loader.d.ts +0 -1
- package/dist/plugins/loader.js +0 -1
- package/dist/policy/audit.d.ts +0 -1
- package/dist/policy/audit.js +0 -1
- package/dist/policy/policy.d.ts +0 -1
- package/dist/policy/policy.js +0 -1
- package/dist/policy/proxy.d.ts +0 -1
- package/dist/policy/proxy.js +0 -1
- package/dist/pricing.d.ts +0 -1
- package/dist/pricing.js +0 -1
- package/dist/providers.d.ts +0 -1
- package/dist/providers.js +0 -1
- package/dist/repomap/index.d.ts +0 -1
- package/dist/repomap/index.js +0 -1
- package/dist/repomap/repo-map.d.ts +0 -1
- package/dist/repomap/repo-map.js +0 -1
- package/dist/semantic/chunker.d.ts +0 -1
- package/dist/semantic/chunker.js +0 -1
- package/dist/semantic/embedder.d.ts +0 -1
- package/dist/semantic/embedder.js +0 -1
- package/dist/semantic/semantic-index.d.ts +0 -1
- package/dist/semantic/semantic-index.js +4 -1
- package/dist/semantic/vector-store.d.ts +0 -1
- package/dist/semantic/vector-store.js +0 -1
- package/dist/sessions/index.d.ts +2 -1
- package/dist/sessions/index.js +2 -1
- package/dist/sessions/prune.d.ts +23 -0
- package/dist/sessions/prune.js +35 -0
- package/dist/sessions/search.d.ts +22 -0
- package/dist/sessions/search.js +66 -0
- package/dist/sessions/session-export.d.ts +0 -1
- package/dist/sessions/session-export.js +0 -1
- package/dist/sessions/session-store.d.ts +0 -1
- package/dist/sessions/session-store.js +0 -1
- package/dist/sessions/watch.d.ts +0 -1
- package/dist/sessions/watch.js +0 -1
- package/dist/settings-export.d.ts +0 -1
- package/dist/settings-export.js +0 -1
- package/dist/skills/activator.d.ts +0 -1
- package/dist/skills/activator.js +0 -1
- package/dist/skills/index.d.ts +0 -1
- package/dist/skills/index.js +0 -1
- package/dist/skills/loader.d.ts +0 -1
- package/dist/skills/loader.js +0 -1
- package/dist/skills/marketplace-types.d.ts +0 -1
- package/dist/skills/marketplace-types.js +0 -1
- package/dist/skills/marketplace.d.ts +0 -1
- package/dist/skills/marketplace.js +0 -1
- package/dist/skills/parser.d.ts +0 -1
- package/dist/skills/parser.js +0 -1
- package/dist/skills/types.d.ts +0 -1
- package/dist/skills/types.js +0 -1
- package/dist/specs/generate.d.ts +0 -1
- package/dist/specs/generate.js +0 -1
- package/dist/specs/index.d.ts +2 -1
- package/dist/specs/index.js +1 -1
- package/dist/specs/store.d.ts +7 -1
- package/dist/specs/store.js +33 -1
- package/dist/specs/sync.d.ts +29 -0
- package/dist/specs/sync.js +155 -0
- package/dist/specs/tasks-parser.d.ts +0 -1
- package/dist/specs/tasks-parser.js +0 -1
- package/dist/specs/types.d.ts +2 -1
- package/dist/specs/types.js +0 -1
- package/dist/steering/glob.d.ts +0 -1
- package/dist/steering/glob.js +0 -1
- package/dist/steering/index.d.ts +0 -1
- package/dist/steering/index.js +0 -1
- package/dist/steering/loader.d.ts +0 -1
- package/dist/steering/loader.js +0 -1
- package/dist/steering/project-instructions.d.ts +0 -1
- package/dist/steering/project-instructions.js +0 -1
- package/dist/steering/select.d.ts +0 -1
- package/dist/steering/select.js +0 -1
- package/dist/steering/types.d.ts +0 -1
- package/dist/steering/types.js +0 -1
- package/dist/structured/index.d.ts +0 -1
- package/dist/structured/index.js +0 -1
- package/dist/structured/retry.d.ts +0 -1
- package/dist/structured/retry.js +0 -1
- package/dist/structured/schema.d.ts +0 -1
- package/dist/structured/schema.js +0 -1
- package/dist/tools/browser-tools.d.ts +0 -1
- package/dist/tools/browser-tools.js +0 -1
- package/dist/tools/codebase-search.d.ts +0 -1
- package/dist/tools/codebase-search.js +0 -1
- package/dist/tools/command-allow.d.ts +0 -1
- package/dist/tools/command-allow.js +0 -1
- package/dist/tools/edit-file.d.ts +0 -1
- package/dist/tools/edit-file.js +0 -1
- package/dist/tools/fetch-url.d.ts +0 -1
- package/dist/tools/fetch-url.js +0 -1
- package/dist/tools/find-references.d.ts +0 -1
- package/dist/tools/find-references.js +0 -1
- package/dist/tools/find-symbol.d.ts +0 -1
- package/dist/tools/find-symbol.js +0 -1
- package/dist/tools/ignore-rules.d.ts +15 -0
- package/dist/tools/ignore-rules.js +84 -0
- package/dist/tools/index.d.ts +3 -3
- package/dist/tools/index.js +5 -3
- package/dist/tools/list-files.d.ts +3 -1
- package/dist/tools/list-files.js +8 -1
- package/dist/tools/list-symbols.d.ts +0 -1
- package/dist/tools/list-symbols.js +0 -1
- package/dist/tools/memory.d.ts +34 -2
- package/dist/tools/memory.js +118 -26
- package/dist/tools/notebook.d.ts +69 -0
- package/dist/tools/notebook.js +163 -0
- package/dist/tools/policy.d.ts +0 -1
- package/dist/tools/policy.js +0 -1
- package/dist/tools/read-file.d.ts +8 -2
- package/dist/tools/read-file.js +19 -2
- package/dist/tools/read-image.d.ts +0 -1
- package/dist/tools/read-image.js +0 -1
- package/dist/tools/read-only.d.ts +0 -1
- package/dist/tools/read-only.js +0 -1
- package/dist/tools/redact.d.ts +0 -1
- package/dist/tools/redact.js +0 -1
- package/dist/tools/result-cache.d.ts +0 -1
- package/dist/tools/result-cache.js +0 -1
- package/dist/tools/run-command.d.ts +0 -1
- package/dist/tools/run-command.js +0 -1
- package/dist/tools/sandbox-loader.d.ts +0 -1
- package/dist/tools/sandbox-loader.js +0 -1
- package/dist/tools/search-files.d.ts +5 -3
- package/dist/tools/search-files.js +8 -1
- package/dist/tools/shared.d.ts +0 -1
- package/dist/tools/shared.js +0 -1
- package/dist/tools/sub-agent.d.ts +0 -1
- package/dist/tools/sub-agent.js +0 -1
- package/dist/tools/web-search.d.ts +55 -0
- package/dist/tools/web-search.js +131 -0
- package/dist/tools/write-file.d.ts +0 -1
- package/dist/tools/write-file.js +0 -1
- package/dist/types.d.ts +43 -2
- package/dist/types.js +0 -1
- package/dist/verify/detect.d.ts +0 -1
- package/dist/verify/detect.js +0 -1
- package/dist/verify/index.d.ts +0 -1
- package/dist/verify/index.js +0 -1
- package/dist/worktree/branch-ops.d.ts +0 -1
- package/dist/worktree/branch-ops.js +0 -1
- package/dist/worktree/index.d.ts +0 -1
- package/dist/worktree/index.js +0 -1
- package/dist/worktree/worktree.d.ts +0 -1
- package/dist/worktree/worktree.js +0 -1
- package/package.json +4 -2
- package/dist/agent/agent.d.ts.map +0 -1
- package/dist/agent/agent.js.map +0 -1
- package/dist/agent/architect.d.ts.map +0 -1
- package/dist/agent/architect.js.map +0 -1
- package/dist/agent/cache-hints.d.ts.map +0 -1
- package/dist/agent/cache-hints.js.map +0 -1
- package/dist/agent/cost-router.d.ts.map +0 -1
- package/dist/agent/cost-router.js.map +0 -1
- package/dist/agent/index.d.ts.map +0 -1
- package/dist/agent/index.js.map +0 -1
- package/dist/agent/prompts.d.ts.map +0 -1
- package/dist/agent/prompts.js.map +0 -1
- package/dist/agent/think-tags.d.ts.map +0 -1
- package/dist/agent/think-tags.js.map +0 -1
- package/dist/agent/verify.d.ts.map +0 -1
- package/dist/agent/verify.js.map +0 -1
- package/dist/ai-comments/index.d.ts.map +0 -1
- package/dist/ai-comments/index.js.map +0 -1
- package/dist/browser/cdp.d.ts.map +0 -1
- package/dist/browser/cdp.js.map +0 -1
- package/dist/browser/chrome.d.ts.map +0 -1
- package/dist/browser/chrome.js.map +0 -1
- package/dist/browser/session.d.ts.map +0 -1
- package/dist/browser/session.js.map +0 -1
- package/dist/checkpoints/index.d.ts.map +0 -1
- package/dist/checkpoints/index.js.map +0 -1
- package/dist/checkpoints/store.d.ts.map +0 -1
- package/dist/checkpoints/store.js.map +0 -1
- package/dist/checkpoints/types.d.ts.map +0 -1
- package/dist/checkpoints/types.js.map +0 -1
- package/dist/code-index/builder.d.ts.map +0 -1
- package/dist/code-index/builder.js.map +0 -1
- package/dist/code-index/index-store.d.ts.map +0 -1
- package/dist/code-index/index-store.js.map +0 -1
- package/dist/code-index/parser.d.ts.map +0 -1
- package/dist/code-index/parser.js.map +0 -1
- package/dist/code-index/types.d.ts.map +0 -1
- package/dist/code-index/types.js.map +0 -1
- package/dist/config-file.d.ts.map +0 -1
- package/dist/config-file.js.map +0 -1
- package/dist/config.d.ts.map +0 -1
- package/dist/config.js.map +0 -1
- package/dist/context/compaction.d.ts.map +0 -1
- package/dist/context/compaction.js.map +0 -1
- package/dist/context/mask.d.ts.map +0 -1
- package/dist/context/mask.js.map +0 -1
- package/dist/credentials/index.d.ts.map +0 -1
- package/dist/credentials/index.js.map +0 -1
- package/dist/credentials/types.d.ts.map +0 -1
- package/dist/credentials/types.js.map +0 -1
- package/dist/diff/index.d.ts.map +0 -1
- package/dist/diff/index.js.map +0 -1
- package/dist/diff/unified-diff.d.ts.map +0 -1
- package/dist/diff/unified-diff.js.map +0 -1
- package/dist/git/auto-commit.d.ts.map +0 -1
- package/dist/git/auto-commit.js.map +0 -1
- package/dist/git/index.d.ts.map +0 -1
- package/dist/git/index.js.map +0 -1
- package/dist/hooks/agent-runner.d.ts.map +0 -1
- package/dist/hooks/agent-runner.js.map +0 -1
- package/dist/hooks/bus.d.ts.map +0 -1
- package/dist/hooks/bus.js.map +0 -1
- package/dist/hooks/config.d.ts.map +0 -1
- package/dist/hooks/config.js.map +0 -1
- package/dist/hooks/events.d.ts.map +0 -1
- package/dist/hooks/events.js.map +0 -1
- package/dist/hooks/index.d.ts.map +0 -1
- package/dist/hooks/index.js.map +0 -1
- package/dist/hooks/loader.d.ts.map +0 -1
- package/dist/hooks/loader.js.map +0 -1
- package/dist/hooks/runner.d.ts.map +0 -1
- package/dist/hooks/runner.js.map +0 -1
- package/dist/hooks/watch-coalescer.d.ts.map +0 -1
- package/dist/hooks/watch-coalescer.js.map +0 -1
- package/dist/hooks/watch-ignore.d.ts.map +0 -1
- package/dist/hooks/watch-ignore.js.map +0 -1
- package/dist/hooks/watcher.d.ts.map +0 -1
- package/dist/hooks/watcher.js.map +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/lazy-model.d.ts.map +0 -1
- package/dist/lazy-model.js.map +0 -1
- package/dist/lint/auto-lint.d.ts.map +0 -1
- package/dist/lint/auto-lint.js.map +0 -1
- package/dist/lint/index.d.ts.map +0 -1
- package/dist/lint/index.js.map +0 -1
- package/dist/lsp/client.d.ts.map +0 -1
- package/dist/lsp/client.js.map +0 -1
- package/dist/lsp/diagnostics.d.ts.map +0 -1
- package/dist/lsp/diagnostics.js.map +0 -1
- package/dist/lsp/index.d.ts.map +0 -1
- package/dist/lsp/index.js.map +0 -1
- package/dist/mcp/catalog.d.ts.map +0 -1
- package/dist/mcp/catalog.js.map +0 -1
- package/dist/mcp/index.d.ts.map +0 -1
- package/dist/mcp/index.js.map +0 -1
- package/dist/mcp/json-schema-to-zod.d.ts.map +0 -1
- package/dist/mcp/json-schema-to-zod.js.map +0 -1
- package/dist/mcp/manager.d.ts.map +0 -1
- package/dist/mcp/manager.js.map +0 -1
- package/dist/mcp/marketplace-types.d.ts.map +0 -1
- package/dist/mcp/marketplace-types.js.map +0 -1
- package/dist/mcp/marketplace.d.ts.map +0 -1
- package/dist/mcp/marketplace.js.map +0 -1
- package/dist/mcp/mcp-client.d.ts.map +0 -1
- package/dist/mcp/mcp-client.js.map +0 -1
- package/dist/mcp/mcp-config.d.ts.map +0 -1
- package/dist/mcp/mcp-config.js.map +0 -1
- package/dist/mcp/registry.d.ts.map +0 -1
- package/dist/mcp/registry.js.map +0 -1
- package/dist/memory/memory-store.d.ts.map +0 -1
- package/dist/memory/memory-store.js.map +0 -1
- package/dist/model-alias.d.ts.map +0 -1
- package/dist/model-alias.js.map +0 -1
- package/dist/model-catalog.d.ts.map +0 -1
- package/dist/model-catalog.js.map +0 -1
- package/dist/model-list.d.ts.map +0 -1
- package/dist/model-list.js.map +0 -1
- package/dist/orchestrator/board-tools.d.ts.map +0 -1
- package/dist/orchestrator/board-tools.js.map +0 -1
- package/dist/orchestrator/board.d.ts.map +0 -1
- package/dist/orchestrator/board.js.map +0 -1
- package/dist/orchestrator/index.d.ts.map +0 -1
- package/dist/orchestrator/index.js.map +0 -1
- package/dist/orchestrator/orchestrator.d.ts.map +0 -1
- package/dist/orchestrator/orchestrator.js.map +0 -1
- package/dist/orchestrator/router.d.ts.map +0 -1
- package/dist/orchestrator/router.js.map +0 -1
- package/dist/orchestrator/specialists-registry.d.ts.map +0 -1
- package/dist/orchestrator/specialists-registry.js.map +0 -1
- package/dist/orchestrator/specialists.d.ts.map +0 -1
- package/dist/orchestrator/specialists.js.map +0 -1
- package/dist/orchestrator/types.d.ts.map +0 -1
- package/dist/orchestrator/types.js.map +0 -1
- package/dist/plugins/index.d.ts.map +0 -1
- package/dist/plugins/index.js.map +0 -1
- package/dist/plugins/install.d.ts.map +0 -1
- package/dist/plugins/install.js.map +0 -1
- package/dist/plugins/loader.d.ts.map +0 -1
- package/dist/plugins/loader.js.map +0 -1
- package/dist/policy/audit.d.ts.map +0 -1
- package/dist/policy/audit.js.map +0 -1
- package/dist/policy/policy.d.ts.map +0 -1
- package/dist/policy/policy.js.map +0 -1
- package/dist/policy/proxy.d.ts.map +0 -1
- package/dist/policy/proxy.js.map +0 -1
- package/dist/pricing.d.ts.map +0 -1
- package/dist/pricing.js.map +0 -1
- package/dist/providers.d.ts.map +0 -1
- package/dist/providers.js.map +0 -1
- package/dist/repomap/index.d.ts.map +0 -1
- package/dist/repomap/index.js.map +0 -1
- package/dist/repomap/repo-map.d.ts.map +0 -1
- package/dist/repomap/repo-map.js.map +0 -1
- package/dist/semantic/chunker.d.ts.map +0 -1
- package/dist/semantic/chunker.js.map +0 -1
- package/dist/semantic/embedder.d.ts.map +0 -1
- package/dist/semantic/embedder.js.map +0 -1
- package/dist/semantic/semantic-index.d.ts.map +0 -1
- package/dist/semantic/semantic-index.js.map +0 -1
- package/dist/semantic/vector-store.d.ts.map +0 -1
- package/dist/semantic/vector-store.js.map +0 -1
- package/dist/sessions/index.d.ts.map +0 -1
- package/dist/sessions/index.js.map +0 -1
- package/dist/sessions/session-export.d.ts.map +0 -1
- package/dist/sessions/session-export.js.map +0 -1
- package/dist/sessions/session-store.d.ts.map +0 -1
- package/dist/sessions/session-store.js.map +0 -1
- package/dist/sessions/watch.d.ts.map +0 -1
- package/dist/sessions/watch.js.map +0 -1
- package/dist/settings-export.d.ts.map +0 -1
- package/dist/settings-export.js.map +0 -1
- package/dist/skills/activator.d.ts.map +0 -1
- package/dist/skills/activator.js.map +0 -1
- package/dist/skills/index.d.ts.map +0 -1
- package/dist/skills/index.js.map +0 -1
- package/dist/skills/loader.d.ts.map +0 -1
- package/dist/skills/loader.js.map +0 -1
- package/dist/skills/marketplace-types.d.ts.map +0 -1
- package/dist/skills/marketplace-types.js.map +0 -1
- package/dist/skills/marketplace.d.ts.map +0 -1
- package/dist/skills/marketplace.js.map +0 -1
- package/dist/skills/parser.d.ts.map +0 -1
- package/dist/skills/parser.js.map +0 -1
- package/dist/skills/types.d.ts.map +0 -1
- package/dist/skills/types.js.map +0 -1
- package/dist/specs/generate.d.ts.map +0 -1
- package/dist/specs/generate.js.map +0 -1
- package/dist/specs/index.d.ts.map +0 -1
- package/dist/specs/index.js.map +0 -1
- package/dist/specs/store.d.ts.map +0 -1
- package/dist/specs/store.js.map +0 -1
- package/dist/specs/tasks-parser.d.ts.map +0 -1
- package/dist/specs/tasks-parser.js.map +0 -1
- package/dist/specs/types.d.ts.map +0 -1
- package/dist/specs/types.js.map +0 -1
- package/dist/steering/glob.d.ts.map +0 -1
- package/dist/steering/glob.js.map +0 -1
- package/dist/steering/index.d.ts.map +0 -1
- package/dist/steering/index.js.map +0 -1
- package/dist/steering/loader.d.ts.map +0 -1
- package/dist/steering/loader.js.map +0 -1
- package/dist/steering/project-instructions.d.ts.map +0 -1
- package/dist/steering/project-instructions.js.map +0 -1
- package/dist/steering/select.d.ts.map +0 -1
- package/dist/steering/select.js.map +0 -1
- package/dist/steering/types.d.ts.map +0 -1
- package/dist/steering/types.js.map +0 -1
- package/dist/structured/index.d.ts.map +0 -1
- package/dist/structured/index.js.map +0 -1
- package/dist/structured/retry.d.ts.map +0 -1
- package/dist/structured/retry.js.map +0 -1
- package/dist/structured/schema.d.ts.map +0 -1
- package/dist/structured/schema.js.map +0 -1
- package/dist/tools/browser-tools.d.ts.map +0 -1
- package/dist/tools/browser-tools.js.map +0 -1
- package/dist/tools/codebase-search.d.ts.map +0 -1
- package/dist/tools/codebase-search.js.map +0 -1
- package/dist/tools/command-allow.d.ts.map +0 -1
- package/dist/tools/command-allow.js.map +0 -1
- package/dist/tools/edit-file.d.ts.map +0 -1
- package/dist/tools/edit-file.js.map +0 -1
- package/dist/tools/fetch-url.d.ts.map +0 -1
- package/dist/tools/fetch-url.js.map +0 -1
- package/dist/tools/find-references.d.ts.map +0 -1
- package/dist/tools/find-references.js.map +0 -1
- package/dist/tools/find-symbol.d.ts.map +0 -1
- package/dist/tools/find-symbol.js.map +0 -1
- package/dist/tools/index.d.ts.map +0 -1
- package/dist/tools/index.js.map +0 -1
- package/dist/tools/list-files.d.ts.map +0 -1
- package/dist/tools/list-files.js.map +0 -1
- package/dist/tools/list-symbols.d.ts.map +0 -1
- package/dist/tools/list-symbols.js.map +0 -1
- package/dist/tools/memory.d.ts.map +0 -1
- package/dist/tools/memory.js.map +0 -1
- package/dist/tools/policy.d.ts.map +0 -1
- package/dist/tools/policy.js.map +0 -1
- package/dist/tools/read-file.d.ts.map +0 -1
- package/dist/tools/read-file.js.map +0 -1
- package/dist/tools/read-image.d.ts.map +0 -1
- package/dist/tools/read-image.js.map +0 -1
- package/dist/tools/read-only.d.ts.map +0 -1
- package/dist/tools/read-only.js.map +0 -1
- package/dist/tools/redact.d.ts.map +0 -1
- package/dist/tools/redact.js.map +0 -1
- package/dist/tools/result-cache.d.ts.map +0 -1
- package/dist/tools/result-cache.js.map +0 -1
- package/dist/tools/run-command.d.ts.map +0 -1
- package/dist/tools/run-command.js.map +0 -1
- package/dist/tools/sandbox-loader.d.ts.map +0 -1
- package/dist/tools/sandbox-loader.js.map +0 -1
- package/dist/tools/search-files.d.ts.map +0 -1
- package/dist/tools/search-files.js.map +0 -1
- package/dist/tools/shared.d.ts.map +0 -1
- package/dist/tools/shared.js.map +0 -1
- package/dist/tools/sub-agent.d.ts.map +0 -1
- package/dist/tools/sub-agent.js.map +0 -1
- package/dist/tools/write-file.d.ts.map +0 -1
- package/dist/tools/write-file.js.map +0 -1
- package/dist/types.d.ts.map +0 -1
- package/dist/types.js.map +0 -1
- package/dist/verify/detect.d.ts.map +0 -1
- package/dist/verify/detect.js.map +0 -1
- package/dist/verify/index.d.ts.map +0 -1
- package/dist/verify/index.js.map +0 -1
- package/dist/worktree/branch-ops.d.ts.map +0 -1
- package/dist/worktree/branch-ops.js.map +0 -1
- package/dist/worktree/index.d.ts.map +0 -1
- package/dist/worktree/index.js.map +0 -1
- package/dist/worktree/worktree.d.ts.map +0 -1
- package/dist/worktree/worktree.js.map +0 -1
package/dist/tools/redact.js
CHANGED
|
@@ -66,4 +66,3 @@ export declare class ToolResultCache {
|
|
|
66
66
|
* intentionally don't cache destructive tools by default.
|
|
67
67
|
*/
|
|
68
68
|
export declare function cachedExecute<TArgs, TResult>(toolName: string, execute: (args: TArgs, ctx: ToolContext) => Promise<TResult>, cache: ToolResultCache, ctx: ToolContext): (args: TArgs, ctx: ToolContext) => Promise<TResult>;
|
|
69
|
-
//# sourceMappingURL=result-cache.d.ts.map
|
|
@@ -21,4 +21,3 @@ export declare function loadToolSandboxConfig(cwd: string, opts: {
|
|
|
21
21
|
* this function, matching its manually-edited, untrusted-by-default role.
|
|
22
22
|
*/
|
|
23
23
|
export declare function saveToolSandboxConfig(sandbox: SerializedToolSandbox, settingsPath?: string): Promise<void>;
|
|
24
|
-
//# sourceMappingURL=sandbox-loader.d.ts.map
|
|
@@ -6,19 +6,22 @@ declare const params: z.ZodObject<{
|
|
|
6
6
|
include: z.ZodOptional<z.ZodString>;
|
|
7
7
|
/** Maximum matches to return. Default 200. */
|
|
8
8
|
max_results: z.ZodOptional<z.ZodNumber>;
|
|
9
|
+
include_ignored: z.ZodOptional<z.ZodBoolean>;
|
|
9
10
|
/** Show a few lines of context around each match. */
|
|
10
11
|
context_lines: z.ZodOptional<z.ZodNumber>;
|
|
11
12
|
}, "strip", z.ZodTypeAny, {
|
|
12
13
|
pattern: string;
|
|
13
14
|
path?: string | undefined;
|
|
14
|
-
include?: string | undefined;
|
|
15
15
|
max_results?: number | undefined;
|
|
16
|
+
include?: string | undefined;
|
|
17
|
+
include_ignored?: boolean | undefined;
|
|
16
18
|
context_lines?: number | undefined;
|
|
17
19
|
}, {
|
|
18
20
|
pattern: string;
|
|
19
21
|
path?: string | undefined;
|
|
20
|
-
include?: string | undefined;
|
|
21
22
|
max_results?: number | undefined;
|
|
23
|
+
include?: string | undefined;
|
|
24
|
+
include_ignored?: boolean | undefined;
|
|
22
25
|
context_lines?: number | undefined;
|
|
23
26
|
}>;
|
|
24
27
|
export interface SearchMatch {
|
|
@@ -34,4 +37,3 @@ export interface SearchFilesResult {
|
|
|
34
37
|
}
|
|
35
38
|
export declare const searchFilesTool: ToolDefinition<z.infer<typeof params>, SearchFilesResult>;
|
|
36
39
|
export {};
|
|
37
|
-
//# sourceMappingURL=search-files.d.ts.map
|
|
@@ -2,6 +2,7 @@ import { readFile } from 'node:fs/promises';
|
|
|
2
2
|
import path from 'node:path';
|
|
3
3
|
import { z } from 'zod';
|
|
4
4
|
import { globToRegex } from './policy.js';
|
|
5
|
+
import { IgnoreRules } from './ignore-rules.js';
|
|
5
6
|
import { resolveAndCheckPath, truncateByLines, DEFAULT_IGNORED_DIRS } from './shared.js';
|
|
6
7
|
const params = z.object({
|
|
7
8
|
pattern: z.string().describe('Regex pattern to search for in file contents.'),
|
|
@@ -15,6 +16,10 @@ const params = z.object({
|
|
|
15
16
|
.describe('Glob to restrict search to specific files, e.g. "*.ts" or "src/**/*.ts".'),
|
|
16
17
|
/** Maximum matches to return. Default 200. */
|
|
17
18
|
max_results: z.number().int().positive().max(5000).optional().describe('Cap on number of matches returned.'),
|
|
19
|
+
include_ignored: z
|
|
20
|
+
.boolean()
|
|
21
|
+
.optional()
|
|
22
|
+
.describe('Also search paths matched by .gitignore / .forgeignore (skipped by default).'),
|
|
18
23
|
/** Show a few lines of context around each match. */
|
|
19
24
|
context_lines: z.number().int().nonnegative().max(20).optional().describe('Lines of context around each match.'),
|
|
20
25
|
});
|
|
@@ -31,6 +36,7 @@ export const searchFilesTool = {
|
|
|
31
36
|
const matches = [];
|
|
32
37
|
let truncated = false;
|
|
33
38
|
let filesScanned = 0;
|
|
39
|
+
const rules = args.include_ignored ? null : IgnoreRules.forRoot(ctx.cwd);
|
|
34
40
|
async function walk(dir) {
|
|
35
41
|
if (matches.length >= maxResults) {
|
|
36
42
|
truncated = true;
|
|
@@ -57,6 +63,8 @@ export const searchFilesTool = {
|
|
|
57
63
|
if (DEFAULT_IGNORED_DIRS.has(entry.name))
|
|
58
64
|
continue;
|
|
59
65
|
const abs = path.join(dir, entry.name);
|
|
66
|
+
if (rules?.isIgnored(abs, entry.isDirectory()))
|
|
67
|
+
continue;
|
|
60
68
|
if (entry.isDirectory()) {
|
|
61
69
|
await walk(abs);
|
|
62
70
|
}
|
|
@@ -121,4 +129,3 @@ function safeRegex(source) {
|
|
|
121
129
|
throw new Error(`Invalid regex pattern: ${err.message}`);
|
|
122
130
|
}
|
|
123
131
|
}
|
|
124
|
-
//# sourceMappingURL=search-files.js.map
|
package/dist/tools/shared.d.ts
CHANGED
package/dist/tools/shared.js
CHANGED
package/dist/tools/sub-agent.js
CHANGED
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `web_search` tool: search the web and return titles, URLs and snippets, so the agent
|
|
3
|
+
* can find current docs, error messages or release notes, then read a page with fetch_url.
|
|
4
|
+
*
|
|
5
|
+
* Opt-in (`AgentConfig.webSearch`), because queries leave the machine. Backends:
|
|
6
|
+
* - Brave Search API (`BRAVE_API_KEY`)
|
|
7
|
+
* - Tavily (`TAVILY_API_KEY`)
|
|
8
|
+
* - a SearXNG instance you run (`SEARXNG_URL`, JSON output enabled)
|
|
9
|
+
*/
|
|
10
|
+
import { z } from 'zod';
|
|
11
|
+
import type { ToolDefinition } from '../types.js';
|
|
12
|
+
export type WebSearchProvider = 'brave' | 'tavily' | 'searxng';
|
|
13
|
+
export declare const WEB_SEARCH_PROVIDERS: readonly WebSearchProvider[];
|
|
14
|
+
export interface WebSearchConfig {
|
|
15
|
+
provider: WebSearchProvider;
|
|
16
|
+
/** Brave or Tavily key. */
|
|
17
|
+
apiKey?: string;
|
|
18
|
+
/** SearXNG base URL, e.g. `http://localhost:8080`. */
|
|
19
|
+
baseUrl?: string;
|
|
20
|
+
/** Results per search when the model doesn't ask for a number. Default 5. */
|
|
21
|
+
maxResults?: number;
|
|
22
|
+
/** For tests. */
|
|
23
|
+
fetch?: typeof fetch;
|
|
24
|
+
}
|
|
25
|
+
export interface WebSearchResult {
|
|
26
|
+
title: string;
|
|
27
|
+
url: string;
|
|
28
|
+
snippet: string;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* The backend the environment configures: `FORGE_WEB_SEARCH` names one explicitly;
|
|
32
|
+
* otherwise the first of Tavily, Brave, SearXNG that has its key or URL set.
|
|
33
|
+
*/
|
|
34
|
+
export declare function webSearchFromEnv(env?: NodeJS.ProcessEnv, prefer?: WebSearchProvider): WebSearchConfig | undefined;
|
|
35
|
+
/** What is missing for a provider, or null when it is usable. */
|
|
36
|
+
export declare function webSearchProblem(cfg: WebSearchConfig): string | null;
|
|
37
|
+
/** Run one search. Throws with a readable message on a missing key or an HTTP error. */
|
|
38
|
+
export declare function searchWeb(cfg: WebSearchConfig, query: string, count: number, signal?: AbortSignal): Promise<WebSearchResult[]>;
|
|
39
|
+
declare const params: z.ZodObject<{
|
|
40
|
+
query: z.ZodString;
|
|
41
|
+
max_results: z.ZodOptional<z.ZodNumber>;
|
|
42
|
+
}, "strip", z.ZodTypeAny, {
|
|
43
|
+
query: string;
|
|
44
|
+
max_results?: number | undefined;
|
|
45
|
+
}, {
|
|
46
|
+
query: string;
|
|
47
|
+
max_results?: number | undefined;
|
|
48
|
+
}>;
|
|
49
|
+
export interface WebSearchToolResult {
|
|
50
|
+
provider: WebSearchProvider;
|
|
51
|
+
query: string;
|
|
52
|
+
results: WebSearchResult[];
|
|
53
|
+
}
|
|
54
|
+
export declare function createWebSearchTool(cfg: WebSearchConfig): ToolDefinition<z.infer<typeof params>, WebSearchToolResult>;
|
|
55
|
+
export {};
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `web_search` tool: search the web and return titles, URLs and snippets, so the agent
|
|
3
|
+
* can find current docs, error messages or release notes, then read a page with fetch_url.
|
|
4
|
+
*
|
|
5
|
+
* Opt-in (`AgentConfig.webSearch`), because queries leave the machine. Backends:
|
|
6
|
+
* - Brave Search API (`BRAVE_API_KEY`)
|
|
7
|
+
* - Tavily (`TAVILY_API_KEY`)
|
|
8
|
+
* - a SearXNG instance you run (`SEARXNG_URL`, JSON output enabled)
|
|
9
|
+
*/
|
|
10
|
+
import { z } from 'zod';
|
|
11
|
+
export const WEB_SEARCH_PROVIDERS = ['brave', 'tavily', 'searxng'];
|
|
12
|
+
const TIMEOUT_MS = 15_000;
|
|
13
|
+
const SNIPPET_MAX = 400;
|
|
14
|
+
/**
|
|
15
|
+
* The backend the environment configures: `FORGE_WEB_SEARCH` names one explicitly;
|
|
16
|
+
* otherwise the first of Tavily, Brave, SearXNG that has its key or URL set.
|
|
17
|
+
*/
|
|
18
|
+
export function webSearchFromEnv(env = process.env, prefer) {
|
|
19
|
+
const keys = {
|
|
20
|
+
tavily: env.TAVILY_API_KEY,
|
|
21
|
+
brave: env.BRAVE_API_KEY ?? env.BRAVE_SEARCH_API_KEY,
|
|
22
|
+
searxng: env.SEARXNG_URL ?? env.FORGE_SEARXNG_URL,
|
|
23
|
+
};
|
|
24
|
+
const named = prefer ?? WEB_SEARCH_PROVIDERS.find((p) => p === env.FORGE_WEB_SEARCH?.trim().toLowerCase());
|
|
25
|
+
const provider = named ?? ['tavily', 'brave', 'searxng'].find((p) => keys[p]);
|
|
26
|
+
if (!provider || !keys[provider])
|
|
27
|
+
return undefined;
|
|
28
|
+
return provider === 'searxng' ? { provider, baseUrl: keys.searxng } : { provider, apiKey: keys[provider] };
|
|
29
|
+
}
|
|
30
|
+
/** What is missing for a provider, or null when it is usable. */
|
|
31
|
+
export function webSearchProblem(cfg) {
|
|
32
|
+
if (cfg.provider === 'searxng') {
|
|
33
|
+
if (!cfg.baseUrl)
|
|
34
|
+
return 'SearXNG needs a URL (SEARXNG_URL)';
|
|
35
|
+
try {
|
|
36
|
+
const u = new URL(cfg.baseUrl);
|
|
37
|
+
if (u.protocol !== 'http:' && u.protocol !== 'https:')
|
|
38
|
+
return 'the SearXNG URL must be http(s)';
|
|
39
|
+
}
|
|
40
|
+
catch {
|
|
41
|
+
return `"${cfg.baseUrl}" is not a URL`;
|
|
42
|
+
}
|
|
43
|
+
return null;
|
|
44
|
+
}
|
|
45
|
+
if (!cfg.apiKey)
|
|
46
|
+
return `${cfg.provider === 'brave' ? 'Brave' : 'Tavily'} needs an API key (${cfg.provider === 'brave' ? 'BRAVE_API_KEY' : 'TAVILY_API_KEY'})`;
|
|
47
|
+
return null;
|
|
48
|
+
}
|
|
49
|
+
function clean(text) {
|
|
50
|
+
if (typeof text !== 'string')
|
|
51
|
+
return '';
|
|
52
|
+
const plain = text
|
|
53
|
+
.replace(/<[^>]*>/g, '')
|
|
54
|
+
.replace(/"/g, '"')
|
|
55
|
+
.replace(/'|'/g, "'")
|
|
56
|
+
.replace(/</g, '<')
|
|
57
|
+
.replace(/>/g, '>')
|
|
58
|
+
.replace(/&/g, '&')
|
|
59
|
+
.replace(/\s+/g, ' ')
|
|
60
|
+
.trim();
|
|
61
|
+
return plain.length > SNIPPET_MAX ? `${plain.slice(0, SNIPPET_MAX - 1)}…` : plain;
|
|
62
|
+
}
|
|
63
|
+
function toResults(items, snippetKey) {
|
|
64
|
+
if (!Array.isArray(items))
|
|
65
|
+
return [];
|
|
66
|
+
const out = [];
|
|
67
|
+
for (const it of items) {
|
|
68
|
+
if (!it || typeof it !== 'object')
|
|
69
|
+
continue;
|
|
70
|
+
const r = it;
|
|
71
|
+
if (typeof r.url !== 'string' || !/^https?:\/\//.test(r.url))
|
|
72
|
+
continue;
|
|
73
|
+
out.push({ title: clean(r.title) || r.url, url: r.url, snippet: clean(r[snippetKey]) });
|
|
74
|
+
}
|
|
75
|
+
return out;
|
|
76
|
+
}
|
|
77
|
+
async function getJson(fetchFn, url, init, label) {
|
|
78
|
+
const res = await fetchFn(url, init);
|
|
79
|
+
if (!res.ok) {
|
|
80
|
+
const body = (await res.text().catch(() => '')).slice(0, 200).replace(/\s+/g, ' ');
|
|
81
|
+
throw new Error(`${label} search failed: HTTP ${res.status}${body ? ` (${body})` : ''}`);
|
|
82
|
+
}
|
|
83
|
+
return res.json();
|
|
84
|
+
}
|
|
85
|
+
/** Run one search. Throws with a readable message on a missing key or an HTTP error. */
|
|
86
|
+
export async function searchWeb(cfg, query, count, signal) {
|
|
87
|
+
const problem = webSearchProblem(cfg);
|
|
88
|
+
if (problem)
|
|
89
|
+
throw new Error(`web_search: ${problem}`);
|
|
90
|
+
const fetchFn = cfg.fetch ?? fetch;
|
|
91
|
+
const timeout = AbortSignal.timeout(TIMEOUT_MS);
|
|
92
|
+
const init = { signal: signal ? AbortSignal.any([signal, timeout]) : timeout };
|
|
93
|
+
switch (cfg.provider) {
|
|
94
|
+
case 'brave': {
|
|
95
|
+
const url = `https://api.search.brave.com/res/v1/web/search?q=${encodeURIComponent(query)}&count=${count}`;
|
|
96
|
+
const data = (await getJson(fetchFn, url, { ...init, headers: { Accept: 'application/json', 'X-Subscription-Token': cfg.apiKey } }, 'Brave'));
|
|
97
|
+
return toResults(data.web?.results, 'description').slice(0, count);
|
|
98
|
+
}
|
|
99
|
+
case 'tavily': {
|
|
100
|
+
const data = (await getJson(fetchFn, 'https://api.tavily.com/search', {
|
|
101
|
+
...init,
|
|
102
|
+
method: 'POST',
|
|
103
|
+
headers: { 'Content-Type': 'application/json', Authorization: `Bearer ${cfg.apiKey}` },
|
|
104
|
+
body: JSON.stringify({ query, max_results: count }),
|
|
105
|
+
}, 'Tavily'));
|
|
106
|
+
return toResults(data.results, 'content').slice(0, count);
|
|
107
|
+
}
|
|
108
|
+
case 'searxng': {
|
|
109
|
+
const base = cfg.baseUrl.replace(/\/+$/, '');
|
|
110
|
+
const data = (await getJson(fetchFn, `${base}/search?q=${encodeURIComponent(query)}&format=json`, { ...init, headers: { Accept: 'application/json' } }, 'SearXNG'));
|
|
111
|
+
return toResults(data.results, 'content').slice(0, count);
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
const params = z.object({
|
|
116
|
+
query: z.string().min(1).max(400).describe('What to search for, as you would type it into a search engine.'),
|
|
117
|
+
max_results: z.number().int().min(1).max(10).optional().describe('How many results to return (1-10). Default 5.'),
|
|
118
|
+
});
|
|
119
|
+
export function createWebSearchTool(cfg) {
|
|
120
|
+
return {
|
|
121
|
+
name: 'web_search',
|
|
122
|
+
description: 'Search the web. Returns titles, URLs and short snippets; read a promising page with fetch_url. Use it for things that change or that you may not know: current library versions and APIs, error messages, release notes, recent events. The query is sent to an external search service, so never include secrets or private code in it.',
|
|
123
|
+
parameters: params,
|
|
124
|
+
destructive: false,
|
|
125
|
+
execute: async (args, ctx) => {
|
|
126
|
+
const count = args.max_results ?? cfg.maxResults ?? 5;
|
|
127
|
+
const results = await searchWeb(cfg, args.query, count, ctx.abortSignal);
|
|
128
|
+
return { provider: cfg.provider, query: args.query, results };
|
|
129
|
+
},
|
|
130
|
+
};
|
|
131
|
+
}
|
package/dist/tools/write-file.js
CHANGED
package/dist/types.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import type { ModelMessage, LanguageModel } from 'ai';
|
|
2
2
|
import type { z } from 'zod';
|
|
3
|
+
import type { Attachment } from './attachments.js';
|
|
3
4
|
import type { SkillRegistry } from './skills/types.js';
|
|
4
5
|
/**
|
|
5
6
|
* The summarizer takes a chunk of messages and returns a structured
|
|
@@ -43,6 +44,11 @@ export interface ToolDefinition<TArgs = unknown, TResult = unknown> {
|
|
|
43
44
|
* approval even in `--auto` mode unless the user passes `--yes-destructive`.
|
|
44
45
|
*/
|
|
45
46
|
destructive?: boolean;
|
|
47
|
+
/**
|
|
48
|
+
* Optional text shown in the approval prompt so the user sees what the call
|
|
49
|
+
* will change (for example a diff). Failures are swallowed: no preview, still asked.
|
|
50
|
+
*/
|
|
51
|
+
previewApproval?: (args: TArgs, ctx: ToolContext) => Promise<string>;
|
|
46
52
|
}
|
|
47
53
|
/**
|
|
48
54
|
* Runtime context passed to every tool invocation. Lets tools respect the
|
|
@@ -80,6 +86,8 @@ export interface ToolContext {
|
|
|
80
86
|
commandRunner?: CommandRunner;
|
|
81
87
|
/** The run's abort signal; long-running tools (run_command) stop when it fires. */
|
|
82
88
|
abortSignal?: AbortSignal;
|
|
89
|
+
/** Longest body `memory_write` accepts, in characters; absent = the default of 1200. */
|
|
90
|
+
memoryMaxBodyChars?: number;
|
|
83
91
|
/** A command that outlives its timeout must be stopped, not left running (verification checks; a dev server must not be). */
|
|
84
92
|
interruptOnTimeout?: boolean;
|
|
85
93
|
}
|
|
@@ -303,6 +311,10 @@ export type AgentEvent = {
|
|
|
303
311
|
} | {
|
|
304
312
|
type: 'error';
|
|
305
313
|
error: string;
|
|
314
|
+
} | {
|
|
315
|
+
type: 'loop_detected';
|
|
316
|
+
tool: string;
|
|
317
|
+
count: number;
|
|
306
318
|
} | {
|
|
307
319
|
type: 'plan'; /** The model's emitted plan (final text on a plan-mode run). */
|
|
308
320
|
plan: string;
|
|
@@ -513,6 +525,10 @@ export interface AgentConfig {
|
|
|
513
525
|
* conventions.
|
|
514
526
|
*/
|
|
515
527
|
memoryInjectionBudget?: number;
|
|
528
|
+
/** Longest body `memory_write` accepts, in characters. Default 1200. */
|
|
529
|
+
memoryMaxBodyChars?: number;
|
|
530
|
+
/** Skip the approval prompt for `memory_write` (never for `memory_forget`). Default false. */
|
|
531
|
+
memoryAutoApproveWrites?: boolean;
|
|
516
532
|
/**
|
|
517
533
|
* Enable automatic context compaction. When true (default off), the
|
|
518
534
|
* agent summarizes older turns once `inputTokens / windowSize` exceeds
|
|
@@ -575,6 +591,18 @@ export interface AgentConfig {
|
|
|
575
591
|
* closed when the run ends.
|
|
576
592
|
*/
|
|
577
593
|
browser?: true | import('./browser/session.js').BrowserSessionOptions;
|
|
594
|
+
/**
|
|
595
|
+
* Adds `github_pr_read` and `github_pr_create` (always approved first) for the repo's
|
|
596
|
+
* origin remote. `true` takes the token from `GITHUB_TOKEN` / `GH_TOKEN`; without one,
|
|
597
|
+
* no tools are added.
|
|
598
|
+
*/
|
|
599
|
+
github?: true | import('./github/github-tools.js').GitHubConfig;
|
|
600
|
+
/**
|
|
601
|
+
* Adds the `web_search` tool. `true` takes the backend from the environment
|
|
602
|
+
* (`FORGE_WEB_SEARCH`, `TAVILY_API_KEY`, `BRAVE_API_KEY`, `SEARXNG_URL`); with none
|
|
603
|
+
* set, no tool is added. Queries go to that external service.
|
|
604
|
+
*/
|
|
605
|
+
webSearch?: true | import('./tools/web-search.js').WebSearchConfig;
|
|
578
606
|
/**
|
|
579
607
|
* Adds the `codebase_search` tool (semantic search over `.forge/index/embeddings.json`).
|
|
580
608
|
* Omit `embedder` to pick one from `FORGE_EMBED_PROVIDER` (default: offline hashing).
|
|
@@ -618,6 +646,11 @@ export interface AgentConfig {
|
|
|
618
646
|
* accrues cost, so the cap never trips.
|
|
619
647
|
*/
|
|
620
648
|
maxCostUsd?: number;
|
|
649
|
+
/**
|
|
650
|
+
* Stop the run (`reason: 'loop_detected'`) after this many identical tool calls in a row
|
|
651
|
+
* (same tool, same arguments, same result). 0 or unset turns the guard off.
|
|
652
|
+
*/
|
|
653
|
+
loopGuardThreshold?: number;
|
|
621
654
|
/**
|
|
622
655
|
* Add prompt-cache breakpoints for providers that need them (Anthropic,
|
|
623
656
|
* Anthropic on Bedrock). Default true. Other providers cache on their own.
|
|
@@ -695,6 +728,8 @@ export interface ApprovalRequest {
|
|
|
695
728
|
args: unknown;
|
|
696
729
|
destructive: boolean;
|
|
697
730
|
description: string;
|
|
731
|
+
/** What the call will change, from the tool's `previewApproval`; absent when the tool has none. */
|
|
732
|
+
preview?: string;
|
|
698
733
|
}
|
|
699
734
|
export interface AgentRunOptions {
|
|
700
735
|
task: string;
|
|
@@ -709,10 +744,17 @@ export interface AgentRunOptions {
|
|
|
709
744
|
* output). Unlike `task` it is not used to pick skills or rank the repo map.
|
|
710
745
|
*/
|
|
711
746
|
context?: string;
|
|
747
|
+
/**
|
|
748
|
+
* Files attached to this turn (pasted images, PDFs, any other file). They are sent as
|
|
749
|
+
* native content parts of the user message; see `attachments.ts`.
|
|
750
|
+
*/
|
|
751
|
+
attachments?: Attachment[];
|
|
712
752
|
onEvent?: (event: AgentEvent) => void;
|
|
713
753
|
abortSignal?: AbortSignal;
|
|
714
754
|
}
|
|
715
|
-
export type AgentRunReason = 'completed' | 'max_iterations' | 'max_duration' | 'budget_exceeded'
|
|
755
|
+
export type AgentRunReason = 'completed' | 'max_iterations' | 'max_duration' | 'budget_exceeded'
|
|
756
|
+
/** The run repeated one identical tool call `loopGuardThreshold` times in a row. */
|
|
757
|
+
| 'loop_detected' | 'aborted' | 'error' | 'no_provider_key'
|
|
716
758
|
/** The agent finished a plan-mode run with a plan instead of executing. */
|
|
717
759
|
| 'plan'
|
|
718
760
|
/** The agent finished a spec-mode run with requirements/design/tasks text instead of executing. */
|
|
@@ -754,4 +796,3 @@ export type AnyLanguageModel = LanguageModel;
|
|
|
754
796
|
* (the default).
|
|
755
797
|
*/
|
|
756
798
|
export type LanguageModelFactory = (config: ModelConfig) => AnyLanguageModel;
|
|
757
|
-
//# sourceMappingURL=types.d.ts.map
|
package/dist/types.js
CHANGED
package/dist/verify/detect.d.ts
CHANGED
|
@@ -26,4 +26,3 @@ export declare function projectScriptsFingerprint(cwd: string): Promise<string>;
|
|
|
26
26
|
export declare function autoRunFingerprint(d: DetectedChecks): string[];
|
|
27
27
|
/** The system-prompt block that tells the agent how this project is checked and built. */
|
|
28
28
|
export declare function formatProjectCommandsBlock(d: DetectedChecks): string;
|
|
29
|
-
//# sourceMappingURL=detect.d.ts.map
|
package/dist/verify/detect.js
CHANGED
package/dist/verify/index.d.ts
CHANGED
package/dist/verify/index.js
CHANGED
|
@@ -25,4 +25,3 @@ export type MergeResult = {
|
|
|
25
25
|
export declare function mergeBranch(repoRoot: string, branch: string, message?: string): Promise<MergeResult>;
|
|
26
26
|
/** Delete a local branch (force: used for discarding an unmerged specialist branch). */
|
|
27
27
|
export declare function deleteBranch(repoRoot: string, branch: string): Promise<void>;
|
|
28
|
-
//# sourceMappingURL=branch-ops.d.ts.map
|
package/dist/worktree/index.d.ts
CHANGED
|
@@ -15,4 +15,3 @@ export { compareWorktreeContexts, snapshotWorktreeContext, WorktreeManager, Work
|
|
|
15
15
|
export type { CreateOptions, RemoveOptions, RemoveResult, WorktreeContextSnapshot, WorktreeInfo, WorktreeMismatchKind, WorktreeMismatchResult, } from './worktree.js';
|
|
16
16
|
export { branchChangedFiles, branchDiff, commitAllInWorktree, deleteBranch, mergeBranch, } from './branch-ops.js';
|
|
17
17
|
export type { MergeResult, WorktreeCommit } from './branch-ops.js';
|
|
18
|
-
//# sourceMappingURL=index.d.ts.map
|
package/dist/worktree/index.js
CHANGED
|
@@ -13,4 +13,3 @@
|
|
|
13
13
|
*/
|
|
14
14
|
export { compareWorktreeContexts, snapshotWorktreeContext, WorktreeManager, WorktreeError, } from './worktree.js';
|
|
15
15
|
export { branchChangedFiles, branchDiff, commitAllInWorktree, deleteBranch, mergeBranch, } from './branch-ops.js';
|
|
16
|
-
//# sourceMappingURL=index.js.map
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ikarmic/forge-core",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "5.0.0",
|
|
4
4
|
"description": "Agent engine for IKarmic AI Forge. Model loop, tools, MCP, sandbox, memory, compaction, plan mode, skills, hooks.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -13,6 +13,7 @@
|
|
|
13
13
|
},
|
|
14
14
|
"files": [
|
|
15
15
|
"dist",
|
|
16
|
+
"LICENSE",
|
|
16
17
|
"README.md"
|
|
17
18
|
],
|
|
18
19
|
"keywords": [
|
|
@@ -29,7 +30,7 @@
|
|
|
29
30
|
"tool-use",
|
|
30
31
|
"code-assistant"
|
|
31
32
|
],
|
|
32
|
-
"license": "
|
|
33
|
+
"license": "SEE LICENSE IN LICENSE",
|
|
33
34
|
"repository": {
|
|
34
35
|
"type": "git",
|
|
35
36
|
"url": "https://github.com/ikarmicai/ikarmic-forge"
|
|
@@ -51,6 +52,7 @@
|
|
|
51
52
|
"@modelcontextprotocol/sdk": "^1.32.1",
|
|
52
53
|
"ai": "^7.0.0",
|
|
53
54
|
"chokidar": "4.0.3",
|
|
55
|
+
"ignore": "^7.0.13",
|
|
54
56
|
"tree-sitter-wasms": "^0.1.13",
|
|
55
57
|
"undici": "^7.30.0",
|
|
56
58
|
"web-tree-sitter": "0.20.8",
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../../src/agent/agent.ts"],"names":[],"mappings":"AA4BA,OAAO,KAAK,EACV,WAAW,EAEX,eAAe,EACf,cAAc,EAGd,cAAc,EAEd,WAAW,EACZ,MAAM,aAAa,CAAC;AAOrB,eAAO,MAAM,uBAAuB,QAAiB,CAAC;AAWtD;;;GAGG;AACH,qBAAa,KAAK;IAChB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAc;IACrC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAmB;IACzC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAkB;IACxC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAU;IACxC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC;IACzB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAwB;IAC/C,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAuB;IAC7C,OAAO,CAAC,QAAQ,CAAC,WAAW,CAA6B;IACzD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA6B;IACrD,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAwB;gBAElC,MAAM,EAAE,WAAW;IAkC/B,qEAAqE;IACrE,OAAO,KAAK,kBAAkB,GAO7B;IAED;;;OAGG;IACG,GAAG,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,cAAc,CAAC;IA6rB5D;;;;;OAKG;IACH,OAAO,CAAC,YAAY;IAUpB;;;;OAIG;IACH,OAAO,CAAC,cAAc;IA2BtB;;;;OAIG;IACH,OAAO,CAAC,kBAAkB;YA0BZ,eAAe;IAsC7B;;;;;OAKG;IACH,OAAO,CAAC,sBAAsB;CAO/B;AA2FD;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,cAAc,EAAE,EAAE,OAAO,EAAE,WAAW,GAAG,SAAS,GAAG,cAAc,EAAE,CAYxG"}
|