gsd-pi 2.68.1-dev.c1497ab → 2.69.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/dist/resources/extensions/gsd/auto-model-selection.js +27 -1
- package/dist/resources/extensions/gsd/bootstrap/register-hooks.js +7 -0
- package/dist/resources/extensions/gsd/codebase-generator.js +12 -0
- package/dist/resources/extensions/gsd/model-router.js +53 -0
- package/dist/web/standalone/.next/BUILD_ID +1 -1
- package/dist/web/standalone/.next/app-path-routes-manifest.json +10 -10
- package/dist/web/standalone/.next/build-manifest.json +3 -3
- package/dist/web/standalone/.next/prerender-manifest.json +3 -3
- package/dist/web/standalone/.next/required-server-files.json +3 -3
- package/dist/web/standalone/.next/server/app/_global-error/page.js +3 -3
- package/dist/web/standalone/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app/_global-error.html +1 -1
- package/dist/web/standalone/.next/server/app/_global-error.rsc +1 -1
- package/dist/web/standalone/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/_not-found/page.js +2 -2
- package/dist/web/standalone/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app/_not-found.html +1 -1
- package/dist/web/standalone/.next/server/app/_not-found.rsc +3 -3
- package/dist/web/standalone/.next/server/app/_not-found.segments/_full.segment.rsc +3 -3
- package/dist/web/standalone/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/_not-found.segments/_index.segment.rsc +3 -3
- package/dist/web/standalone/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/_not-found.segments/_tree.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/api/boot/route.js +1 -1
- package/dist/web/standalone/.next/server/app/api/boot/route_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app/api/bridge-terminal/input/route.js +1 -1
- package/dist/web/standalone/.next/server/app/api/bridge-terminal/input/route_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app/api/bridge-terminal/resize/route.js +1 -1
- package/dist/web/standalone/.next/server/app/api/bridge-terminal/resize/route_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app/api/bridge-terminal/stream/route.js +2 -2
- package/dist/web/standalone/.next/server/app/api/bridge-terminal/stream/route_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app/api/browse-directories/route.js +1 -1
- package/dist/web/standalone/.next/server/app/api/browse-directories/route_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app/api/captures/route.js +1 -1
- package/dist/web/standalone/.next/server/app/api/captures/route_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app/api/cleanup/route.js +1 -1
- package/dist/web/standalone/.next/server/app/api/cleanup/route_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app/api/dev-mode/route.js +1 -1
- package/dist/web/standalone/.next/server/app/api/dev-mode/route_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app/api/doctor/route.js +1 -1
- package/dist/web/standalone/.next/server/app/api/doctor/route_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app/api/experimental/route.js +2 -2
- package/dist/web/standalone/.next/server/app/api/experimental/route_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app/api/export-data/route.js +1 -1
- package/dist/web/standalone/.next/server/app/api/export-data/route_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app/api/files/route.js +1 -1
- package/dist/web/standalone/.next/server/app/api/files/route_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app/api/forensics/route.js +1 -1
- package/dist/web/standalone/.next/server/app/api/forensics/route_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app/api/git/route.js +1 -1
- package/dist/web/standalone/.next/server/app/api/git/route_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app/api/history/route.js +1 -1
- package/dist/web/standalone/.next/server/app/api/history/route_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app/api/hooks/route.js +1 -1
- package/dist/web/standalone/.next/server/app/api/hooks/route_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app/api/inspect/route.js +1 -1
- package/dist/web/standalone/.next/server/app/api/inspect/route_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app/api/knowledge/route.js +1 -1
- package/dist/web/standalone/.next/server/app/api/knowledge/route_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app/api/live-state/route.js +1 -1
- package/dist/web/standalone/.next/server/app/api/live-state/route_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app/api/notifications/route.js +2 -2
- package/dist/web/standalone/.next/server/app/api/notifications/route_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app/api/onboarding/route.js +1 -1
- package/dist/web/standalone/.next/server/app/api/onboarding/route_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app/api/preferences/route.js +1 -1
- package/dist/web/standalone/.next/server/app/api/preferences/route_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app/api/projects/route.js +1 -1
- package/dist/web/standalone/.next/server/app/api/projects/route_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app/api/recovery/route.js +1 -1
- package/dist/web/standalone/.next/server/app/api/recovery/route_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app/api/remote-questions/route.js +2 -2
- package/dist/web/standalone/.next/server/app/api/remote-questions/route_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app/api/session/browser/route.js +1 -1
- package/dist/web/standalone/.next/server/app/api/session/browser/route_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app/api/session/command/route.js +1 -1
- package/dist/web/standalone/.next/server/app/api/session/command/route_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app/api/session/events/route.js +2 -2
- package/dist/web/standalone/.next/server/app/api/session/events/route_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app/api/session/manage/route.js +1 -1
- package/dist/web/standalone/.next/server/app/api/session/manage/route_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app/api/settings-data/route.js +1 -1
- package/dist/web/standalone/.next/server/app/api/settings-data/route_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app/api/shutdown/route.js +1 -1
- package/dist/web/standalone/.next/server/app/api/shutdown/route_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app/api/skill-health/route.js +1 -1
- package/dist/web/standalone/.next/server/app/api/skill-health/route_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app/api/steer/route.js +1 -1
- package/dist/web/standalone/.next/server/app/api/steer/route_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app/api/switch-root/route.js +1 -1
- package/dist/web/standalone/.next/server/app/api/switch-root/route_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app/api/terminal/input/route.js +1 -1
- package/dist/web/standalone/.next/server/app/api/terminal/input/route_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app/api/terminal/resize/route.js +2 -2
- package/dist/web/standalone/.next/server/app/api/terminal/resize/route_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app/api/terminal/sessions/route.js +1 -1
- package/dist/web/standalone/.next/server/app/api/terminal/sessions/route_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app/api/terminal/stream/route.js +2 -2
- package/dist/web/standalone/.next/server/app/api/terminal/stream/route_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app/api/terminal/upload/route.js +1 -1
- package/dist/web/standalone/.next/server/app/api/terminal/upload/route_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app/api/undo/route.js +1 -1
- package/dist/web/standalone/.next/server/app/api/undo/route_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app/api/update/route.js +1 -1
- package/dist/web/standalone/.next/server/app/api/update/route_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app/api/visualizer/route.js +1 -1
- package/dist/web/standalone/.next/server/app/api/visualizer/route_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app/index.html +1 -1
- package/dist/web/standalone/.next/server/app/index.rsc +4 -4
- package/dist/web/standalone/.next/server/app/index.segments/__PAGE__.segment.rsc +2 -2
- package/dist/web/standalone/.next/server/app/index.segments/_full.segment.rsc +4 -4
- package/dist/web/standalone/.next/server/app/index.segments/_head.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/index.segments/_index.segment.rsc +3 -3
- package/dist/web/standalone/.next/server/app/index.segments/_tree.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/page.js +2 -2
- package/dist/web/standalone/.next/server/app/page_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app-paths-manifest.json +10 -10
- package/dist/web/standalone/.next/server/chunks/63.js +3 -3
- package/dist/web/standalone/.next/server/chunks/6897.js +1 -1
- package/dist/web/standalone/.next/server/middleware-build-manifest.js +1 -1
- package/dist/web/standalone/.next/server/middleware.js +2 -2
- package/dist/web/standalone/.next/server/next-font-manifest.js +1 -1
- package/dist/web/standalone/.next/server/next-font-manifest.json +1 -1
- package/dist/web/standalone/.next/server/pages/404.html +1 -1
- package/dist/web/standalone/.next/server/pages/500.html +1 -1
- package/dist/web/standalone/.next/server/server-reference-manifest.json +1 -1
- package/dist/web/standalone/.next/static/chunks/app/_not-found/{page-f2a7482d42a5614b.js → page-2f24283c162b6ab3.js} +1 -1
- package/dist/web/standalone/.next/static/chunks/app/{layout-a16c7a7ecdf0c2cf.js → layout-9ecfd95f343793f0.js} +1 -1
- package/dist/web/standalone/.next/static/chunks/app/page-7115e62689b5fd84.js +1 -0
- package/dist/web/standalone/.next/static/chunks/main-app-d3d4c336195465f9.js +1 -0
- package/dist/web/standalone/.next/static/chunks/next/dist/client/components/builtin/global-error-ab5a8926e07ec673.js +1 -0
- package/dist/web/standalone/node_modules/node-pty/build/Makefile +2 -2
- package/dist/web/standalone/node_modules/node-pty/build/Release/pty.node +0 -0
- package/dist/web/standalone/node_modules/node-pty/build/pty.target.mk +14 -14
- package/dist/web/standalone/node_modules/node-pty/node-addon-api/node_addon_api.target.mk +14 -14
- package/dist/web/standalone/node_modules/node-pty/node-addon-api/node_addon_api_except.target.mk +14 -14
- package/dist/web/standalone/node_modules/node-pty/node-addon-api/node_addon_api_maybe.target.mk +14 -14
- package/dist/web/standalone/server.js +1 -1
- package/package.json +1 -1
- package/packages/pi-ai/dist/index.d.ts +3 -0
- package/packages/pi-ai/dist/index.d.ts.map +1 -1
- package/packages/pi-ai/dist/index.js +2 -0
- package/packages/pi-ai/dist/index.js.map +1 -1
- package/packages/pi-ai/dist/providers/amazon-bedrock.js +2 -2
- package/packages/pi-ai/dist/providers/amazon-bedrock.js.map +1 -1
- package/packages/pi-ai/dist/providers/anthropic-shared.js +2 -2
- package/packages/pi-ai/dist/providers/anthropic-shared.js.map +1 -1
- package/packages/pi-ai/dist/providers/google-shared.js +2 -2
- package/packages/pi-ai/dist/providers/google-shared.js.map +1 -1
- package/packages/pi-ai/dist/providers/mistral.js +2 -2
- package/packages/pi-ai/dist/providers/mistral.js.map +1 -1
- package/packages/pi-ai/dist/providers/openai-completions.js +2 -2
- package/packages/pi-ai/dist/providers/openai-completions.js.map +1 -1
- package/packages/pi-ai/dist/providers/openai-responses-shared.js +2 -2
- package/packages/pi-ai/dist/providers/openai-responses-shared.js.map +1 -1
- package/packages/pi-ai/dist/providers/provider-capabilities.d.ts +59 -0
- package/packages/pi-ai/dist/providers/provider-capabilities.d.ts.map +1 -0
- package/packages/pi-ai/dist/providers/provider-capabilities.js +173 -0
- package/packages/pi-ai/dist/providers/provider-capabilities.js.map +1 -0
- package/packages/pi-ai/dist/providers/provider-capabilities.test.d.ts +2 -0
- package/packages/pi-ai/dist/providers/provider-capabilities.test.d.ts.map +1 -0
- package/packages/pi-ai/dist/providers/provider-capabilities.test.js +132 -0
- package/packages/pi-ai/dist/providers/provider-capabilities.test.js.map +1 -0
- package/packages/pi-ai/dist/providers/transform-messages-report.test.d.ts +2 -0
- package/packages/pi-ai/dist/providers/transform-messages-report.test.d.ts.map +1 -0
- package/packages/pi-ai/dist/providers/transform-messages-report.test.js +172 -0
- package/packages/pi-ai/dist/providers/transform-messages-report.test.js.map +1 -0
- package/packages/pi-ai/dist/providers/transform-messages.d.ts +34 -1
- package/packages/pi-ai/dist/providers/transform-messages.d.ts.map +1 -1
- package/packages/pi-ai/dist/providers/transform-messages.js +73 -2
- package/packages/pi-ai/dist/providers/transform-messages.js.map +1 -1
- package/packages/pi-ai/src/index.ts +3 -0
- package/packages/pi-ai/src/providers/amazon-bedrock.ts +2 -2
- package/packages/pi-ai/src/providers/anthropic-shared.ts +2 -2
- package/packages/pi-ai/src/providers/google-shared.ts +2 -2
- package/packages/pi-ai/src/providers/mistral.ts +2 -2
- package/packages/pi-ai/src/providers/openai-completions.ts +2 -2
- package/packages/pi-ai/src/providers/openai-responses-shared.ts +2 -2
- package/packages/pi-ai/src/providers/provider-capabilities.test.ts +174 -0
- package/packages/pi-ai/src/providers/provider-capabilities.ts +215 -0
- package/packages/pi-ai/src/providers/transform-messages-report.test.ts +189 -0
- package/packages/pi-ai/src/providers/transform-messages.ts +94 -1
- package/packages/pi-coding-agent/dist/core/extensions/index.d.ts +1 -1
- package/packages/pi-coding-agent/dist/core/extensions/index.d.ts.map +1 -1
- package/packages/pi-coding-agent/dist/core/extensions/index.js.map +1 -1
- package/packages/pi-coding-agent/dist/core/extensions/loader.d.ts.map +1 -1
- package/packages/pi-coding-agent/dist/core/extensions/loader.js +10 -1
- package/packages/pi-coding-agent/dist/core/extensions/loader.js.map +1 -1
- package/packages/pi-coding-agent/dist/core/extensions/runner.d.ts +2 -1
- package/packages/pi-coding-agent/dist/core/extensions/runner.d.ts.map +1 -1
- package/packages/pi-coding-agent/dist/core/extensions/runner.js +15 -0
- package/packages/pi-coding-agent/dist/core/extensions/runner.js.map +1 -1
- package/packages/pi-coding-agent/dist/core/extensions/types.d.ts +41 -0
- package/packages/pi-coding-agent/dist/core/extensions/types.d.ts.map +1 -1
- package/packages/pi-coding-agent/dist/core/extensions/types.js.map +1 -1
- package/packages/pi-coding-agent/dist/core/tools/index.d.ts +1 -0
- package/packages/pi-coding-agent/dist/core/tools/index.d.ts.map +1 -1
- package/packages/pi-coding-agent/dist/core/tools/index.js +1 -0
- package/packages/pi-coding-agent/dist/core/tools/index.js.map +1 -1
- package/packages/pi-coding-agent/dist/core/tools/tool-compatibility-registry.d.ts +27 -0
- package/packages/pi-coding-agent/dist/core/tools/tool-compatibility-registry.d.ts.map +1 -0
- package/packages/pi-coding-agent/dist/core/tools/tool-compatibility-registry.js +69 -0
- package/packages/pi-coding-agent/dist/core/tools/tool-compatibility-registry.js.map +1 -0
- package/packages/pi-coding-agent/dist/index.d.ts +2 -2
- package/packages/pi-coding-agent/dist/index.d.ts.map +1 -1
- package/packages/pi-coding-agent/dist/index.js +3 -1
- package/packages/pi-coding-agent/dist/index.js.map +1 -1
- package/packages/pi-coding-agent/package.json +1 -1
- package/packages/pi-coding-agent/src/core/extensions/index.ts +4 -0
- package/packages/pi-coding-agent/src/core/extensions/loader.ts +11 -1
- package/packages/pi-coding-agent/src/core/extensions/runner.ts +18 -0
- package/packages/pi-coding-agent/src/core/extensions/types.ts +45 -0
- package/packages/pi-coding-agent/src/core/tools/index.ts +7 -0
- package/packages/pi-coding-agent/src/core/tools/tool-compatibility-registry.ts +83 -0
- package/packages/pi-coding-agent/src/index.ts +9 -0
- package/pkg/package.json +1 -1
- package/src/resources/extensions/gsd/auto-model-selection.ts +35 -1
- package/src/resources/extensions/gsd/bootstrap/register-hooks.ts +8 -0
- package/src/resources/extensions/gsd/codebase-generator.ts +16 -0
- package/src/resources/extensions/gsd/model-router.ts +73 -0
- package/src/resources/extensions/gsd/tests/codebase-generator.test.ts +28 -0
- package/src/resources/extensions/gsd/tests/tool-compatibility.test.ts +199 -0
- package/dist/web/standalone/.next/static/chunks/app/page-f1e30ab6bb269149.js +0 -1
- package/dist/web/standalone/.next/static/chunks/main-app-fdab67f7802d7832.js +0 -1
- package/dist/web/standalone/.next/static/chunks/next/dist/client/components/builtin/global-error-459824ffb8c323dd.js +0 -1
- /package/dist/web/standalone/.next/static/{5D80IWYltFwlAJiCZ84MC → DrWdzskk28E5Qz-Wjw1mj}/_buildManifest.js +0 -0
- /package/dist/web/standalone/.next/static/{5D80IWYltFwlAJiCZ84MC → DrWdzskk28E5Qz-Wjw1mj}/_ssgManifest.js +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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","sourcesContent":["// Core session management\n\n// Config paths\nexport { getAgentDir, VERSION } from \"./config.js\";\nexport {\n\tAgentSession,\n\ttype AgentSessionConfig,\n\ttype AgentSessionEvent,\n\ttype AgentSessionEventListener,\n\ttype ModelCycleResult,\n\ttype ParsedSkillBlock,\n\ttype PromptOptions,\n\tparseSkillBlock,\n\ttype SessionStats,\n} from \"./core/agent-session.js\";\n// Auth and model registry\nexport {\n\ttype ApiKeyCredential,\n\ttype AuthCredential,\n\tAuthStorage,\n\ttype AuthStorageBackend,\n\tFileAuthStorageBackend,\n\tInMemoryAuthStorageBackend,\n\ttype OAuthCredential,\n} from \"./core/auth-storage.js\";\n// Compaction\nexport {\n\ttype BranchPreparation,\n\ttype BranchSummaryResult,\n\ttype CollectEntriesResult,\n\ttype CompactionResult,\n\ttype CutPointResult,\n\tcalculateContextTokens,\n\tcollectEntriesForBranchSummary,\n\tcompact,\n\tDEFAULT_COMPACTION_SETTINGS,\n\testimateTokens,\n\ttype FileOperations,\n\tfindCutPoint,\n\tfindTurnStartIndex,\n\ttype GenerateBranchSummaryOptions,\n\tgenerateBranchSummary,\n\tgenerateSummary,\n\tgetLastAssistantUsage,\n\tprepareBranchEntries,\n\tserializeConversation,\n\tshouldCompact,\n} from \"./core/compaction/index.js\";\nexport { createEventBus, type EventBus, type EventBusController } from \"./core/event-bus.js\";\n// Extension system\nexport type {\n\tAgentEndEvent,\n\tAgentStartEvent,\n\tAgentToolResult,\n\tAgentToolUpdateCallback,\n\tAppAction,\n\tBashToolCallEvent,\n\tBeforeAgentStartEvent,\n\tBeforeProviderRequestEvent,\n\tBeforeProviderRequestEventResult,\n\tCompactOptions,\n\tContextEvent,\n\tContextUsage,\n\tCustomToolCallEvent,\n\tEditToolCallEvent,\n\tExecOptions,\n\tExecResult,\n\tExtension,\n\tExtensionActions,\n\tExtensionAPI,\n\tExtensionManifest,\n\tExtensionCommandContext,\n\tExtensionCommandContextActions,\n\tExtensionContext,\n\tExtensionContextActions,\n\tExtensionError,\n\tExtensionEvent,\n\tExtensionFactory,\n\tExtensionFlag,\n\tExtensionHandler,\n\tExtensionRuntime,\n\tExtensionShortcut,\n\tExtensionUIContext,\n\tExtensionUIDialogOptions,\n\tExtensionWidgetOptions,\n\tFindToolCallEvent,\n\tGrepToolCallEvent,\n\tInputEvent,\n\tInputEventResult,\n\tInputSource,\n\tKeybindingsManager,\n\tLoadExtensionsResult,\n\tLsToolCallEvent,\n\tMessageRenderer,\n\tMessageRenderOptions,\n\tProviderConfig,\n\tProviderModelConfig,\n\tLifecycleHookContext,\n\tLifecycleHookHandler,\n\tLifecycleHookMap,\n\tLifecycleHookPhase,\n\tLifecycleHookScope,\n\tReadToolCallEvent,\n\tRegisteredCommand,\n\tRegisteredTool,\n\tSessionBeforeCompactEvent,\n\tSessionBeforeForkEvent,\n\tSessionBeforeSwitchEvent,\n\tSessionBeforeTreeEvent,\n\tSessionCompactEvent,\n\tSessionForkEvent,\n\tSessionShutdownEvent,\n\tSessionStartEvent,\n\tSessionSwitchEvent,\n\tSessionTreeEvent,\n\tSlashCommandInfo,\n\tSlashCommandLocation,\n\tSlashCommandSource,\n\tTerminalInputHandler,\n\tToolCallEvent,\n\tToolDefinition,\n\tToolInfo,\n\tSortResult,\n\tSortWarning,\n\tToolRenderResultOptions,\n\tToolResultEvent,\n\tTurnEndEvent,\n\tTurnStartEvent,\n\tUserBashEvent,\n\tUserBashEventResult,\n\tBashTransformEvent,\n\tBashTransformEventResult,\n\tWidgetPlacement,\n\tWriteToolCallEvent,\n} from \"./core/extensions/index.js\";\nexport {\n\tcreateExtensionRuntime,\n\tdiscoverAndLoadExtensions,\n\tExtensionRunner,\n\timportExtensionModule,\n\tisToolCallEventType,\n\tisToolResultEventType,\n\treadManifest,\n\treadManifestFromEntryPath,\n\tsortExtensionPaths,\n\twrapRegisteredTool,\n\twrapRegisteredTools,\n\twrapToolsWithExtensions,\n\twrapToolWithExtensions,\n} from \"./core/extensions/index.js\";\n// Footer data provider (git branch + extension statuses - data not otherwise available to extensions)\nexport type { ReadonlyFooterDataProvider } from \"./core/footer-data-provider.js\";\nexport { convertToLlm } from \"./core/messages.js\";\nexport { ModelDiscoveryCache } from \"./core/discovery-cache.js\";\nexport type { DiscoveredModel, DiscoveryResult, ProviderDiscoveryAdapter } from \"./core/model-discovery.js\";\nexport { getDiscoverableProviders, getDiscoveryAdapter } from \"./core/model-discovery.js\";\nexport { ModelRegistry } from \"./core/model-registry.js\";\nexport { ModelsJsonWriter } from \"./core/models-json-writer.js\";\nexport type {\n\tPackageManager,\n\tPathMetadata,\n\tProgressCallback,\n\tProgressEvent,\n\tResolvedPaths,\n\tResolvedResource,\n} from \"./core/package-manager.js\";\nexport { DefaultPackageManager } from \"./core/package-manager.js\";\nexport type { PackageCommand, PackageCommandOptions, PackageCommandRunnerOptions, PackageCommandRunnerResult } from \"./core/package-commands.js\";\nexport { getPackageCommandUsage, parsePackageCommand, runPackageCommand } from \"./core/package-commands.js\";\nexport type { ResourceCollision, ResourceDiagnostic, ResourceLoader } from \"./core/resource-loader.js\";\nexport { DefaultResourceLoader } from \"./core/resource-loader.js\";\n// SDK for programmatic usage\nexport {\n\ttype CreateAgentSessionOptions,\n\ttype CreateAgentSessionResult,\n\t// Factory\n\tcreateAgentSession,\n\tcreateBashTool,\n\t// Tool factories (for custom cwd)\n\tcreateCodingTools,\n\tcreateEditTool,\n\tcreateFindTool,\n\tcreateGrepTool,\n\tcreateLsTool,\n\tcreateReadOnlyTools,\n\tcreateReadTool,\n\tcreateWriteTool,\n\ttype PromptTemplate,\n\t// Pre-built tools (use process.cwd())\n\treadOnlyTools,\n} from \"./core/sdk.js\";\nexport {\n\ttype BranchSummaryEntry,\n\tbuildSessionContext,\n\ttype CompactionEntry,\n\tCURRENT_SESSION_VERSION,\n\ttype CustomEntry,\n\ttype CustomMessageEntry,\n\ttype FileEntry,\n\tgetLatestCompactionEntry,\n\ttype ModelChangeEntry,\n\tmigrateSessionEntries,\n\ttype NewSessionOptions,\n\tparseSessionEntries,\n\ttype SessionContext,\n\ttype SessionEntry,\n\ttype SessionEntryBase,\n\ttype SessionHeader,\n\ttype SessionInfo,\n\ttype SessionInfoEntry,\n\tSessionManager,\n\ttype SessionMessageEntry,\n\ttype ThinkingLevelChangeEntry,\n} from \"./core/session-manager.js\";\n// Blob and artifact storage\nexport { BlobStore, isBlobRef, parseBlobRef, externalizeImageData, resolveImageData } from \"./core/blob-store.js\";\nexport { ArtifactManager } from \"./core/artifact-manager.js\";\nexport {\n\ttype AsyncSettings,\n\ttype CompactionSettings,\n\ttype ImageSettings,\n\ttype MemorySettings,\n\ttype PackageSource,\n\ttype RetrySettings,\n\tSettingsManager,\n\ttype TaskIsolationSettings,\n} from \"./core/settings-manager.js\";\nexport {\n\tSAFE_COMMAND_PREFIXES,\n\tsetAllowedCommandPrefixes,\n\tgetAllowedCommandPrefixes,\n} from \"./core/resolve-config-value.js\";\n// Skills\nexport {\n\tECOSYSTEM_SKILLS_DIR,\n\tECOSYSTEM_PROJECT_SKILLS_DIR,\n\tformatSkillsForPrompt,\n\tgetLoadedSkills,\n\ttype LoadSkillsFromDirOptions,\n\ttype LoadSkillsResult,\n\tloadSkills,\n\tloadSkillsFromDir,\n\ttype Skill,\n\ttype SkillFrontmatter,\n} from \"./core/skills.js\";\n// Tools\nexport {\n\ttype BashInterceptorRule,\n\ttype BashOperations,\n\ttype BashSpawnContext,\n\ttype BashSpawnHook,\n\ttype BashToolDetails,\n\ttype BashToolInput,\n\ttype BashToolOptions,\n\tbashTool,\n\trewriteBackgroundCommand,\n\tcheckBashInterception,\n\ttype CompiledInterceptor,\n\tcompileInterceptor,\n\tDEFAULT_BASH_INTERCEPTOR_RULES,\n\tcodingTools,\n\tDEFAULT_MAX_BYTES,\n\tDEFAULT_MAX_LINES,\n\ttype EditOperations,\n\ttype EditToolDetails,\n\ttype EditToolInput,\n\ttype EditToolOptions,\n\teditTool,\n\ttype FindOperations,\n\ttype FindToolDetails,\n\ttype FindToolInput,\n\ttype FindToolOptions,\n\tfindTool,\n\tformatSize,\n\ttype GrepOperations,\n\ttype GrepToolDetails,\n\ttype GrepToolInput,\n\ttype GrepToolOptions,\n\tgrepTool,\n\ttype LsOperations,\n\ttype LsToolDetails,\n\ttype LsToolInput,\n\ttype LsToolOptions,\n\tlsTool,\n\ttype ReadOperations,\n\ttype ReadToolDetails,\n\ttype ReadToolInput,\n\ttype ReadToolOptions,\n\treadTool,\n\ttype ToolsOptions,\n\ttype TruncationOptions,\n\ttype TruncationResult,\n\ttruncateHead,\n\ttruncateLine,\n\ttruncateTail,\n\ttype WriteOperations,\n\ttype WriteToolInput,\n\ttype WriteToolOptions,\n\twriteTool,\n\t// Hashline edit mode tools\n\thashlineEditTool,\n\thashlineReadTool,\n\thashlineCodingTools,\n\tcreateHashlineEditTool,\n\tcreateHashlineReadTool,\n\tcreateHashlineCodingTools,\n\ttype HashlineEditInput,\n\ttype HashlineEditToolDetails,\n\ttype HashlineEditToolOptions,\n\ttype HashlineReadToolDetails,\n\ttype HashlineReadToolInput,\n\ttype HashlineReadToolOptions,\n} from \"./core/tools/index.js\";\n// Main entry point\nexport { main } from \"./main.js\";\n// Run modes for programmatic SDK usage\nexport {\n\tInteractiveMode,\n\ttype InteractiveModeOptions,\n\ttype PrintModeOptions,\n\trunPrintMode,\n\trunRpcMode,\n\ttype ModelInfo,\n\tRpcClient,\n\ttype RpcClientOptions,\n\ttype RpcEventListener,\n\ttype RpcCommand,\n\ttype RpcInitResult,\n\ttype RpcProtocolVersion,\n\ttype RpcResponse,\n\ttype RpcSessionState,\n\ttype RpcV2Event,\n} from \"./modes/index.js\";\n// RPC JSONL utilities\nexport { attachJsonlLineReader, serializeJsonLine } from \"./modes/rpc/jsonl.js\";\n// UI components for extensions\nexport {\n\tArminComponent,\n\tAssistantMessageComponent,\n\tappKey,\n\tappKeyHint,\n\tBashExecutionComponent,\n\tBorderedLoader,\n\tBranchSummaryMessageComponent,\n\tCompactionSummaryMessageComponent,\n\tCustomEditor,\n\tCustomMessageComponent,\n\tDynamicBorder,\n\tExtensionEditorComponent,\n\tExtensionInputComponent,\n\tExtensionSelectorComponent,\n\teditorKey,\n\tFooterComponent,\n\tkeyHint,\n\tLoginDialogComponent,\n\tModelSelectorComponent,\n\tOAuthSelectorComponent,\n\tProviderManagerComponent,\n\ttype RenderDiffOptions,\n\trawKeyHint,\n\trenderDiff,\n\tSessionSelectorComponent,\n\ttype SettingsCallbacks,\n\ttype SettingsConfig,\n\tSettingsSelectorComponent,\n\tShowImagesSelectorComponent,\n\tSkillInvocationMessageComponent,\n\tThemeSelectorComponent,\n\tThinkingSelectorComponent,\n\tToolExecutionComponent,\n\ttype ToolExecutionOptions,\n\tTreeSelectorComponent,\n\ttruncateToVisualLines,\n\tUserMessageComponent,\n\tUserMessageSelectorComponent,\n\ttype VisualTruncateResult,\n} from \"./modes/interactive/components/index.js\";\n// Theme utilities for custom tools and extensions\nexport {\n\tgetLanguageFromPath,\n\tgetMarkdownTheme,\n\tgetSelectListTheme,\n\tgetSettingsListTheme,\n\thighlightCode,\n\tinitTheme,\n\tTheme,\n\ttype ThemeColor,\n} from \"./modes/interactive/theme/theme.js\";\n// Clipboard utilities\nexport { copyToClipboard } from \"./utils/clipboard.js\";\nexport { parseFrontmatter, stripFrontmatter } from \"./utils/frontmatter.js\";\n// Shell utilities\nexport { getShellConfig, sanitizeCommand } from \"./utils/shell.js\";\n// Cross-platform path display\nexport { toPosixPath } from \"./utils/path-display.js\";\n"]}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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","sourcesContent":["// Core session management\n\n// Config paths\nexport { getAgentDir, VERSION } from \"./config.js\";\nexport {\n\tAgentSession,\n\ttype AgentSessionConfig,\n\ttype AgentSessionEvent,\n\ttype AgentSessionEventListener,\n\ttype ModelCycleResult,\n\ttype ParsedSkillBlock,\n\ttype PromptOptions,\n\tparseSkillBlock,\n\ttype SessionStats,\n} from \"./core/agent-session.js\";\n// Auth and model registry\nexport {\n\ttype ApiKeyCredential,\n\ttype AuthCredential,\n\tAuthStorage,\n\ttype AuthStorageBackend,\n\tFileAuthStorageBackend,\n\tInMemoryAuthStorageBackend,\n\ttype OAuthCredential,\n} from \"./core/auth-storage.js\";\n// Compaction\nexport {\n\ttype BranchPreparation,\n\ttype BranchSummaryResult,\n\ttype CollectEntriesResult,\n\ttype CompactionResult,\n\ttype CutPointResult,\n\tcalculateContextTokens,\n\tcollectEntriesForBranchSummary,\n\tcompact,\n\tDEFAULT_COMPACTION_SETTINGS,\n\testimateTokens,\n\ttype FileOperations,\n\tfindCutPoint,\n\tfindTurnStartIndex,\n\ttype GenerateBranchSummaryOptions,\n\tgenerateBranchSummary,\n\tgenerateSummary,\n\tgetLastAssistantUsage,\n\tprepareBranchEntries,\n\tserializeConversation,\n\tshouldCompact,\n} from \"./core/compaction/index.js\";\nexport { createEventBus, type EventBus, type EventBusController } from \"./core/event-bus.js\";\n// Extension system\nexport type {\n\tAdjustToolSetEvent,\n\tAdjustToolSetResult,\n\tAgentEndEvent,\n\tAgentStartEvent,\n\tAgentToolResult,\n\tAgentToolUpdateCallback,\n\tAppAction,\n\tBashToolCallEvent,\n\tBeforeAgentStartEvent,\n\tBeforeProviderRequestEvent,\n\tBeforeProviderRequestEventResult,\n\tCompactOptions,\n\tContextEvent,\n\tContextUsage,\n\tCustomToolCallEvent,\n\tEditToolCallEvent,\n\tExecOptions,\n\tExecResult,\n\tExtension,\n\tExtensionActions,\n\tExtensionAPI,\n\tExtensionManifest,\n\tExtensionCommandContext,\n\tExtensionCommandContextActions,\n\tExtensionContext,\n\tExtensionContextActions,\n\tExtensionError,\n\tExtensionEvent,\n\tExtensionFactory,\n\tExtensionFlag,\n\tExtensionHandler,\n\tExtensionRuntime,\n\tExtensionShortcut,\n\tExtensionUIContext,\n\tExtensionUIDialogOptions,\n\tExtensionWidgetOptions,\n\tFindToolCallEvent,\n\tGrepToolCallEvent,\n\tInputEvent,\n\tInputEventResult,\n\tInputSource,\n\tKeybindingsManager,\n\tLoadExtensionsResult,\n\tLsToolCallEvent,\n\tMessageRenderer,\n\tMessageRenderOptions,\n\tProviderConfig,\n\tProviderModelConfig,\n\tLifecycleHookContext,\n\tLifecycleHookHandler,\n\tLifecycleHookMap,\n\tLifecycleHookPhase,\n\tLifecycleHookScope,\n\tReadToolCallEvent,\n\tRegisteredCommand,\n\tRegisteredTool,\n\tSessionBeforeCompactEvent,\n\tSessionBeforeForkEvent,\n\tSessionBeforeSwitchEvent,\n\tSessionBeforeTreeEvent,\n\tSessionCompactEvent,\n\tSessionForkEvent,\n\tSessionShutdownEvent,\n\tSessionStartEvent,\n\tSessionSwitchEvent,\n\tSessionTreeEvent,\n\tSlashCommandInfo,\n\tSlashCommandLocation,\n\tSlashCommandSource,\n\tTerminalInputHandler,\n\tToolCallEvent,\n\tToolCompatibility,\n\tToolDefinition,\n\tToolInfo,\n\tSortResult,\n\tSortWarning,\n\tToolRenderResultOptions,\n\tToolResultEvent,\n\tTurnEndEvent,\n\tTurnStartEvent,\n\tUserBashEvent,\n\tUserBashEventResult,\n\tBashTransformEvent,\n\tBashTransformEventResult,\n\tWidgetPlacement,\n\tWriteToolCallEvent,\n} from \"./core/extensions/index.js\";\nexport {\n\tcreateExtensionRuntime,\n\tdiscoverAndLoadExtensions,\n\tExtensionRunner,\n\timportExtensionModule,\n\tisToolCallEventType,\n\tisToolResultEventType,\n\treadManifest,\n\treadManifestFromEntryPath,\n\tsortExtensionPaths,\n\twrapRegisteredTool,\n\twrapRegisteredTools,\n\twrapToolsWithExtensions,\n\twrapToolWithExtensions,\n} from \"./core/extensions/index.js\";\n// Footer data provider (git branch + extension statuses - data not otherwise available to extensions)\nexport type { ReadonlyFooterDataProvider } from \"./core/footer-data-provider.js\";\nexport { convertToLlm } from \"./core/messages.js\";\nexport { ModelDiscoveryCache } from \"./core/discovery-cache.js\";\nexport type { DiscoveredModel, DiscoveryResult, ProviderDiscoveryAdapter } from \"./core/model-discovery.js\";\nexport { getDiscoverableProviders, getDiscoveryAdapter } from \"./core/model-discovery.js\";\nexport { ModelRegistry } from \"./core/model-registry.js\";\nexport { ModelsJsonWriter } from \"./core/models-json-writer.js\";\nexport type {\n\tPackageManager,\n\tPathMetadata,\n\tProgressCallback,\n\tProgressEvent,\n\tResolvedPaths,\n\tResolvedResource,\n} from \"./core/package-manager.js\";\nexport { DefaultPackageManager } from \"./core/package-manager.js\";\nexport type { PackageCommand, PackageCommandOptions, PackageCommandRunnerOptions, PackageCommandRunnerResult } from \"./core/package-commands.js\";\nexport { getPackageCommandUsage, parsePackageCommand, runPackageCommand } from \"./core/package-commands.js\";\nexport type { ResourceCollision, ResourceDiagnostic, ResourceLoader } from \"./core/resource-loader.js\";\nexport { DefaultResourceLoader } from \"./core/resource-loader.js\";\n// SDK for programmatic usage\nexport {\n\ttype CreateAgentSessionOptions,\n\ttype CreateAgentSessionResult,\n\t// Factory\n\tcreateAgentSession,\n\tcreateBashTool,\n\t// Tool factories (for custom cwd)\n\tcreateCodingTools,\n\tcreateEditTool,\n\tcreateFindTool,\n\tcreateGrepTool,\n\tcreateLsTool,\n\tcreateReadOnlyTools,\n\tcreateReadTool,\n\tcreateWriteTool,\n\ttype PromptTemplate,\n\t// Pre-built tools (use process.cwd())\n\treadOnlyTools,\n} from \"./core/sdk.js\";\nexport {\n\ttype BranchSummaryEntry,\n\tbuildSessionContext,\n\ttype CompactionEntry,\n\tCURRENT_SESSION_VERSION,\n\ttype CustomEntry,\n\ttype CustomMessageEntry,\n\ttype FileEntry,\n\tgetLatestCompactionEntry,\n\ttype ModelChangeEntry,\n\tmigrateSessionEntries,\n\ttype NewSessionOptions,\n\tparseSessionEntries,\n\ttype SessionContext,\n\ttype SessionEntry,\n\ttype SessionEntryBase,\n\ttype SessionHeader,\n\ttype SessionInfo,\n\ttype SessionInfoEntry,\n\tSessionManager,\n\ttype SessionMessageEntry,\n\ttype ThinkingLevelChangeEntry,\n} from \"./core/session-manager.js\";\n// Blob and artifact storage\nexport { BlobStore, isBlobRef, parseBlobRef, externalizeImageData, resolveImageData } from \"./core/blob-store.js\";\nexport { ArtifactManager } from \"./core/artifact-manager.js\";\nexport {\n\ttype AsyncSettings,\n\ttype CompactionSettings,\n\ttype ImageSettings,\n\ttype MemorySettings,\n\ttype PackageSource,\n\ttype RetrySettings,\n\tSettingsManager,\n\ttype TaskIsolationSettings,\n} from \"./core/settings-manager.js\";\nexport {\n\tSAFE_COMMAND_PREFIXES,\n\tsetAllowedCommandPrefixes,\n\tgetAllowedCommandPrefixes,\n} from \"./core/resolve-config-value.js\";\n// Skills\nexport {\n\tECOSYSTEM_SKILLS_DIR,\n\tECOSYSTEM_PROJECT_SKILLS_DIR,\n\tformatSkillsForPrompt,\n\tgetLoadedSkills,\n\ttype LoadSkillsFromDirOptions,\n\ttype LoadSkillsResult,\n\tloadSkills,\n\tloadSkillsFromDir,\n\ttype Skill,\n\ttype SkillFrontmatter,\n} from \"./core/skills.js\";\n// Tools\nexport {\n\ttype BashInterceptorRule,\n\ttype BashOperations,\n\ttype BashSpawnContext,\n\ttype BashSpawnHook,\n\ttype BashToolDetails,\n\ttype BashToolInput,\n\ttype BashToolOptions,\n\tbashTool,\n\trewriteBackgroundCommand,\n\tcheckBashInterception,\n\ttype CompiledInterceptor,\n\tcompileInterceptor,\n\tDEFAULT_BASH_INTERCEPTOR_RULES,\n\tcodingTools,\n\tDEFAULT_MAX_BYTES,\n\tDEFAULT_MAX_LINES,\n\ttype EditOperations,\n\ttype EditToolDetails,\n\ttype EditToolInput,\n\ttype EditToolOptions,\n\teditTool,\n\ttype FindOperations,\n\ttype FindToolDetails,\n\ttype FindToolInput,\n\ttype FindToolOptions,\n\tfindTool,\n\tformatSize,\n\ttype GrepOperations,\n\ttype GrepToolDetails,\n\ttype GrepToolInput,\n\ttype GrepToolOptions,\n\tgrepTool,\n\ttype LsOperations,\n\ttype LsToolDetails,\n\ttype LsToolInput,\n\ttype LsToolOptions,\n\tlsTool,\n\ttype ReadOperations,\n\ttype ReadToolDetails,\n\ttype ReadToolInput,\n\ttype ReadToolOptions,\n\treadTool,\n\ttype ToolsOptions,\n\ttype TruncationOptions,\n\ttype TruncationResult,\n\ttruncateHead,\n\ttruncateLine,\n\ttruncateTail,\n\ttype WriteOperations,\n\ttype WriteToolInput,\n\ttype WriteToolOptions,\n\twriteTool,\n\t// Hashline edit mode tools\n\thashlineEditTool,\n\thashlineReadTool,\n\thashlineCodingTools,\n\tcreateHashlineEditTool,\n\tcreateHashlineReadTool,\n\tcreateHashlineCodingTools,\n\ttype HashlineEditInput,\n\ttype HashlineEditToolDetails,\n\ttype HashlineEditToolOptions,\n\ttype HashlineReadToolDetails,\n\ttype HashlineReadToolInput,\n\ttype HashlineReadToolOptions,\n\t// Tool compatibility registry (ADR-005)\n\tregisterToolCompatibility,\n\tgetToolCompatibility,\n\tgetAllToolCompatibility,\n\tregisterMcpToolCompatibility,\n\tresetToolCompatibilityRegistry,\n} from \"./core/tools/index.js\";\n// Main entry point\nexport { main } from \"./main.js\";\n// Run modes for programmatic SDK usage\nexport {\n\tInteractiveMode,\n\ttype InteractiveModeOptions,\n\ttype PrintModeOptions,\n\trunPrintMode,\n\trunRpcMode,\n\ttype ModelInfo,\n\tRpcClient,\n\ttype RpcClientOptions,\n\ttype RpcEventListener,\n\ttype RpcCommand,\n\ttype RpcInitResult,\n\ttype RpcProtocolVersion,\n\ttype RpcResponse,\n\ttype RpcSessionState,\n\ttype RpcV2Event,\n} from \"./modes/index.js\";\n// RPC JSONL utilities\nexport { attachJsonlLineReader, serializeJsonLine } from \"./modes/rpc/jsonl.js\";\n// UI components for extensions\nexport {\n\tArminComponent,\n\tAssistantMessageComponent,\n\tappKey,\n\tappKeyHint,\n\tBashExecutionComponent,\n\tBorderedLoader,\n\tBranchSummaryMessageComponent,\n\tCompactionSummaryMessageComponent,\n\tCustomEditor,\n\tCustomMessageComponent,\n\tDynamicBorder,\n\tExtensionEditorComponent,\n\tExtensionInputComponent,\n\tExtensionSelectorComponent,\n\teditorKey,\n\tFooterComponent,\n\tkeyHint,\n\tLoginDialogComponent,\n\tModelSelectorComponent,\n\tOAuthSelectorComponent,\n\tProviderManagerComponent,\n\ttype RenderDiffOptions,\n\trawKeyHint,\n\trenderDiff,\n\tSessionSelectorComponent,\n\ttype SettingsCallbacks,\n\ttype SettingsConfig,\n\tSettingsSelectorComponent,\n\tShowImagesSelectorComponent,\n\tSkillInvocationMessageComponent,\n\tThemeSelectorComponent,\n\tThinkingSelectorComponent,\n\tToolExecutionComponent,\n\ttype ToolExecutionOptions,\n\tTreeSelectorComponent,\n\ttruncateToVisualLines,\n\tUserMessageComponent,\n\tUserMessageSelectorComponent,\n\ttype VisualTruncateResult,\n} from \"./modes/interactive/components/index.js\";\n// Theme utilities for custom tools and extensions\nexport {\n\tgetLanguageFromPath,\n\tgetMarkdownTheme,\n\tgetSelectListTheme,\n\tgetSettingsListTheme,\n\thighlightCode,\n\tinitTheme,\n\tTheme,\n\ttype ThemeColor,\n} from \"./modes/interactive/theme/theme.js\";\n// Clipboard utilities\nexport { copyToClipboard } from \"./utils/clipboard.js\";\nexport { parseFrontmatter, stripFrontmatter } from \"./utils/frontmatter.js\";\n// Shell utilities\nexport { getShellConfig, sanitizeCommand } from \"./utils/shell.js\";\n// Cross-platform path display\nexport { toPosixPath } from \"./utils/path-display.js\";\n"]}
|
|
@@ -43,6 +43,9 @@ export type {
|
|
|
43
43
|
BeforeProviderRequestEventResult,
|
|
44
44
|
// Context
|
|
45
45
|
CompactOptions,
|
|
46
|
+
// Events - Adjust Tool Set (ADR-005)
|
|
47
|
+
AdjustToolSetEvent,
|
|
48
|
+
AdjustToolSetResult,
|
|
46
49
|
// Events - Agent
|
|
47
50
|
ContextEvent,
|
|
48
51
|
// Event Results
|
|
@@ -135,6 +138,7 @@ export type {
|
|
|
135
138
|
ToolCallEvent,
|
|
136
139
|
ToolCallEventResult,
|
|
137
140
|
// Tools
|
|
141
|
+
ToolCompatibility,
|
|
138
142
|
ToolDefinition,
|
|
139
143
|
// Events - Tool Execution
|
|
140
144
|
ToolExecutionEndEvent,
|
|
@@ -38,6 +38,7 @@ import type { ExecOptions } from "../exec.js";
|
|
|
38
38
|
import { execCommand } from "../exec.js";
|
|
39
39
|
import { getUntrustedExtensionPaths } from "./project-trust.js";
|
|
40
40
|
export { isProjectTrusted, trustProject, getUntrustedExtensionPaths } from "./project-trust.js";
|
|
41
|
+
import { registerToolCompatibility } from "../tools/tool-compatibility-registry.js";
|
|
41
42
|
import type {
|
|
42
43
|
Extension,
|
|
43
44
|
ExtensionAPI,
|
|
@@ -428,8 +429,9 @@ export function createExtensionRuntime(): ExtensionRuntime {
|
|
|
428
429
|
unregisterProvider: (name) => {
|
|
429
430
|
runtime.pendingProviderRegistrations = runtime.pendingProviderRegistrations.filter((r) => r.name !== name);
|
|
430
431
|
},
|
|
431
|
-
//
|
|
432
|
+
// Stubs replaced by ExtensionRunner at construction time via bindEmitMethods().
|
|
432
433
|
emitBeforeModelSelect: async () => undefined,
|
|
434
|
+
emitAdjustToolSet: async () => undefined,
|
|
433
435
|
};
|
|
434
436
|
|
|
435
437
|
return runtime;
|
|
@@ -459,6 +461,10 @@ function createExtensionAPI(
|
|
|
459
461
|
definition: tool,
|
|
460
462
|
extensionPath: extension.path,
|
|
461
463
|
});
|
|
464
|
+
// ADR-005: auto-register tool compatibility metadata
|
|
465
|
+
if (tool.compatibility) {
|
|
466
|
+
registerToolCompatibility(tool.name, tool.compatibility);
|
|
467
|
+
}
|
|
462
468
|
runtime.refreshTools();
|
|
463
469
|
},
|
|
464
470
|
|
|
@@ -585,6 +591,10 @@ function createExtensionAPI(
|
|
|
585
591
|
return runtime.emitBeforeModelSelect(event);
|
|
586
592
|
},
|
|
587
593
|
|
|
594
|
+
async emitAdjustToolSet(event: Omit<import("./types.js").AdjustToolSetEvent, "type">): Promise<import("./types.js").AdjustToolSetResult | undefined> {
|
|
595
|
+
return runtime.emitAdjustToolSet(event);
|
|
596
|
+
},
|
|
597
|
+
|
|
588
598
|
events: eventBus,
|
|
589
599
|
} as ExtensionAPI;
|
|
590
600
|
|
|
@@ -11,6 +11,8 @@ import type { KeyAction, KeybindingsConfig } from "../keybindings.js";
|
|
|
11
11
|
import type { ModelRegistry } from "../model-registry.js";
|
|
12
12
|
import type { SessionManager } from "../session-manager.js";
|
|
13
13
|
import type {
|
|
14
|
+
AdjustToolSetEvent,
|
|
15
|
+
AdjustToolSetResult,
|
|
14
16
|
BeforeAgentStartEvent,
|
|
15
17
|
BeforeAgentStartEventResult,
|
|
16
18
|
BeforeModelSelectEvent,
|
|
@@ -234,6 +236,7 @@ export class ExtensionRunner {
|
|
|
234
236
|
this.modelRegistry = modelRegistry;
|
|
235
237
|
// Bind emit methods into the shared runtime so createExtensionAPI can delegate to them.
|
|
236
238
|
this.runtime.emitBeforeModelSelect = (event) => this.emitBeforeModelSelect(event);
|
|
239
|
+
this.runtime.emitAdjustToolSet = (event) => this.emitAdjustToolSet(event);
|
|
237
240
|
}
|
|
238
241
|
|
|
239
242
|
bindCore(actions: ExtensionActions, contextActions: ExtensionContextActions): void {
|
|
@@ -713,6 +716,21 @@ export class ExtensionRunner {
|
|
|
713
716
|
return result;
|
|
714
717
|
}
|
|
715
718
|
|
|
719
|
+
async emitAdjustToolSet(event: Omit<AdjustToolSetEvent, "type">): Promise<AdjustToolSetResult | undefined> {
|
|
720
|
+
let result: AdjustToolSetResult | undefined;
|
|
721
|
+
await this.invokeHandlers("adjust_tool_set", () => ({
|
|
722
|
+
type: "adjust_tool_set" as const,
|
|
723
|
+
...event,
|
|
724
|
+
} satisfies AdjustToolSetEvent), (handlerResult) => {
|
|
725
|
+
if (handlerResult) {
|
|
726
|
+
result = handlerResult as AdjustToolSetResult;
|
|
727
|
+
return { done: true }; // first override wins
|
|
728
|
+
}
|
|
729
|
+
return { done: false };
|
|
730
|
+
});
|
|
731
|
+
return result;
|
|
732
|
+
}
|
|
733
|
+
|
|
716
734
|
async emitBeforeAgentStart(
|
|
717
735
|
prompt: string,
|
|
718
736
|
images: ImageContent[] | undefined,
|
|
@@ -331,6 +331,19 @@ export interface ToolRenderResultOptions {
|
|
|
331
331
|
isPartial: boolean;
|
|
332
332
|
}
|
|
333
333
|
|
|
334
|
+
/**
|
|
335
|
+
* Tool compatibility metadata for provider-aware tool filtering (ADR-005 Phase 2).
|
|
336
|
+
* Tools without compatibility metadata are assumed universally compatible.
|
|
337
|
+
*/
|
|
338
|
+
export interface ToolCompatibility {
|
|
339
|
+
/** Tool produces image content in results (filtered for providers without imageToolResults) */
|
|
340
|
+
producesImages?: boolean;
|
|
341
|
+
/** Tool requires schema features that some providers don't support (e.g., ["patternProperties"]) */
|
|
342
|
+
schemaFeatures?: string[];
|
|
343
|
+
/** Tool is effective only with models above a minimum capability threshold */
|
|
344
|
+
minCapabilityTier?: "light" | "standard" | "heavy";
|
|
345
|
+
}
|
|
346
|
+
|
|
334
347
|
/**
|
|
335
348
|
* Tool definition for registerTool().
|
|
336
349
|
*/
|
|
@@ -347,6 +360,8 @@ export interface ToolDefinition<TParams extends TSchema = TSchema, TDetails = un
|
|
|
347
360
|
promptGuidelines?: string[];
|
|
348
361
|
/** Parameter schema (TypeBox) */
|
|
349
362
|
parameters: TParams;
|
|
363
|
+
/** Provider compatibility metadata (ADR-005). Omit for universally compatible tools. */
|
|
364
|
+
compatibility?: ToolCompatibility;
|
|
350
365
|
|
|
351
366
|
/** Execute the tool. */
|
|
352
367
|
execute(
|
|
@@ -619,6 +634,30 @@ export interface BeforeModelSelectResult {
|
|
|
619
634
|
modelId: string;
|
|
620
635
|
}
|
|
621
636
|
|
|
637
|
+
/**
|
|
638
|
+
* Fired after model selection to allow extensions to adjust the active tool set (ADR-005 Phase 4).
|
|
639
|
+
* Extensions can add, remove, or reorder tools based on the selected model's provider capabilities.
|
|
640
|
+
*/
|
|
641
|
+
export interface AdjustToolSetEvent {
|
|
642
|
+
type: "adjust_tool_set";
|
|
643
|
+
/** The selected model's API type */
|
|
644
|
+
selectedModelApi: string;
|
|
645
|
+
/** The selected model's provider */
|
|
646
|
+
selectedModelProvider: string;
|
|
647
|
+
/** The selected model ID */
|
|
648
|
+
selectedModelId: string;
|
|
649
|
+
/** Current active tool names */
|
|
650
|
+
activeToolNames: string[];
|
|
651
|
+
/** Tools already filtered by provider compatibility */
|
|
652
|
+
filteredTools: string[];
|
|
653
|
+
}
|
|
654
|
+
|
|
655
|
+
/** Result from adjust_tool_set event handler. Return { toolNames } to override tool set. */
|
|
656
|
+
export interface AdjustToolSetResult {
|
|
657
|
+
/** Replacement tool names. If omitted, the default filtering is used. */
|
|
658
|
+
toolNames?: string[];
|
|
659
|
+
}
|
|
660
|
+
|
|
622
661
|
// ============================================================================
|
|
623
662
|
// User Bash Events
|
|
624
663
|
// ============================================================================
|
|
@@ -1069,6 +1108,7 @@ export interface ExtensionAPI {
|
|
|
1069
1108
|
on(event: "user_bash", handler: ExtensionHandler<UserBashEvent, UserBashEventResult>): void;
|
|
1070
1109
|
on(event: "input", handler: ExtensionHandler<InputEvent, InputEventResult>): void;
|
|
1071
1110
|
on(event: "before_model_select", handler: ExtensionHandler<BeforeModelSelectEvent, BeforeModelSelectResult>): void;
|
|
1111
|
+
on(event: "adjust_tool_set", handler: ExtensionHandler<AdjustToolSetEvent, AdjustToolSetResult>): void;
|
|
1072
1112
|
|
|
1073
1113
|
// =========================================================================
|
|
1074
1114
|
// Event Emission (for host extensions that orchestrate model selection)
|
|
@@ -1077,6 +1117,9 @@ export interface ExtensionAPI {
|
|
|
1077
1117
|
/** Emit before_model_select event. Returns override model ID or undefined. */
|
|
1078
1118
|
emitBeforeModelSelect(event: Omit<BeforeModelSelectEvent, "type">): Promise<BeforeModelSelectResult | undefined>;
|
|
1079
1119
|
|
|
1120
|
+
/** Emit adjust_tool_set event (ADR-005). Returns override tool names or undefined. */
|
|
1121
|
+
emitAdjustToolSet(event: Omit<AdjustToolSetEvent, "type">): Promise<AdjustToolSetResult | undefined>;
|
|
1122
|
+
|
|
1080
1123
|
// =========================================================================
|
|
1081
1124
|
// Tool Registration
|
|
1082
1125
|
// =========================================================================
|
|
@@ -1395,6 +1438,8 @@ export interface ExtensionRuntimeState {
|
|
|
1395
1438
|
unregisterProvider: (name: string) => void;
|
|
1396
1439
|
/** Emit before_model_select event to all registered handlers. Bound by ExtensionRunner. */
|
|
1397
1440
|
emitBeforeModelSelect: (event: Omit<BeforeModelSelectEvent, "type">) => Promise<BeforeModelSelectResult | undefined>;
|
|
1441
|
+
/** Emit adjust_tool_set event to all registered handlers. Bound by ExtensionRunner (ADR-005). */
|
|
1442
|
+
emitAdjustToolSet: (event: Omit<AdjustToolSetEvent, "type">) => Promise<AdjustToolSetResult | undefined>;
|
|
1398
1443
|
}
|
|
1399
1444
|
|
|
1400
1445
|
/**
|
|
@@ -112,6 +112,13 @@ export {
|
|
|
112
112
|
lspTool,
|
|
113
113
|
} from "../lsp/index.js";
|
|
114
114
|
export type { LspServerStatus } from "../lsp/client.js";
|
|
115
|
+
export {
|
|
116
|
+
registerToolCompatibility,
|
|
117
|
+
getToolCompatibility,
|
|
118
|
+
getAllToolCompatibility,
|
|
119
|
+
registerMcpToolCompatibility,
|
|
120
|
+
resetToolCompatibilityRegistry,
|
|
121
|
+
} from "./tool-compatibility-registry.js";
|
|
115
122
|
|
|
116
123
|
import type { AgentTool } from "@gsd/pi-agent-core";
|
|
117
124
|
import { type BashToolOptions, bashTool, createBashTool } from "./bash.js";
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
// GSD-2 — Tool Compatibility Registry (ADR-005 Phase 2)
|
|
2
|
+
// Maps tool names to their provider compatibility metadata.
|
|
3
|
+
// Used by the model router to filter tools incompatible with the selected provider.
|
|
4
|
+
|
|
5
|
+
import type { ToolCompatibility } from "../extensions/types.js";
|
|
6
|
+
|
|
7
|
+
// ─── Registry State ─────────────────────────────────────────────────────────
|
|
8
|
+
|
|
9
|
+
const registry = new Map<string, ToolCompatibility>();
|
|
10
|
+
|
|
11
|
+
// ─── Built-in Tool Compatibility (universally compatible) ───────────────────
|
|
12
|
+
// Built-in tools (bash, read, write, edit, grep, find, ls) produce text-only
|
|
13
|
+
// results and use standard JSON Schema — compatible with all providers.
|
|
14
|
+
|
|
15
|
+
const BUILTIN_TOOLS: Record<string, ToolCompatibility> = {
|
|
16
|
+
bash: {},
|
|
17
|
+
read: {},
|
|
18
|
+
write: {},
|
|
19
|
+
edit: {},
|
|
20
|
+
grep: {},
|
|
21
|
+
find: {},
|
|
22
|
+
ls: {},
|
|
23
|
+
lsp: {},
|
|
24
|
+
hashline_edit: {},
|
|
25
|
+
hashline_read: {},
|
|
26
|
+
};
|
|
27
|
+
|
|
28
|
+
// Pre-populate registry with built-in tools
|
|
29
|
+
for (const [name, compat] of Object.entries(BUILTIN_TOOLS)) {
|
|
30
|
+
registry.set(name, compat);
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
// ─── MCP Tool Defaults ─────────────────────────────────────────────────────
|
|
34
|
+
// MCP tools may use complex schemas. Default to cautious compatibility.
|
|
35
|
+
|
|
36
|
+
const MCP_TOOL_DEFAULTS: ToolCompatibility = {
|
|
37
|
+
schemaFeatures: ["patternProperties"],
|
|
38
|
+
};
|
|
39
|
+
|
|
40
|
+
// ─── Public API ─────────────────────────────────────────────────────────────
|
|
41
|
+
|
|
42
|
+
/**
|
|
43
|
+
* Register compatibility metadata for a tool.
|
|
44
|
+
* Called automatically by registerTool() for extension tools that include
|
|
45
|
+
* compatibility metadata in their ToolDefinition.
|
|
46
|
+
*/
|
|
47
|
+
export function registerToolCompatibility(toolName: string, compatibility: ToolCompatibility): void {
|
|
48
|
+
registry.set(toolName, compatibility);
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
/**
|
|
52
|
+
* Get compatibility metadata for a tool.
|
|
53
|
+
* Returns undefined for unknown tools (treated as universally compatible
|
|
54
|
+
* per ADR-005 principle: "fail open, don't restrict without data").
|
|
55
|
+
*/
|
|
56
|
+
export function getToolCompatibility(toolName: string): ToolCompatibility | undefined {
|
|
57
|
+
return registry.get(toolName);
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
/**
|
|
61
|
+
* Get all registered tool compatibility entries.
|
|
62
|
+
*/
|
|
63
|
+
export function getAllToolCompatibility(): ReadonlyMap<string, ToolCompatibility> {
|
|
64
|
+
return registry;
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
/**
|
|
68
|
+
* Register an MCP tool with default cautious compatibility.
|
|
69
|
+
* MCP tools may use complex schemas that some providers don't support.
|
|
70
|
+
*/
|
|
71
|
+
export function registerMcpToolCompatibility(toolName: string, overrides?: Partial<ToolCompatibility>): void {
|
|
72
|
+
registry.set(toolName, { ...MCP_TOOL_DEFAULTS, ...overrides });
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
/**
|
|
76
|
+
* Clear all non-builtin entries (for testing).
|
|
77
|
+
*/
|
|
78
|
+
export function resetToolCompatibilityRegistry(): void {
|
|
79
|
+
registry.clear();
|
|
80
|
+
for (const [name, compat] of Object.entries(BUILTIN_TOOLS)) {
|
|
81
|
+
registry.set(name, compat);
|
|
82
|
+
}
|
|
83
|
+
}
|
|
@@ -49,6 +49,8 @@ export {
|
|
|
49
49
|
export { createEventBus, type EventBus, type EventBusController } from "./core/event-bus.js";
|
|
50
50
|
// Extension system
|
|
51
51
|
export type {
|
|
52
|
+
AdjustToolSetEvent,
|
|
53
|
+
AdjustToolSetResult,
|
|
52
54
|
AgentEndEvent,
|
|
53
55
|
AgentStartEvent,
|
|
54
56
|
AgentToolResult,
|
|
@@ -118,6 +120,7 @@ export type {
|
|
|
118
120
|
SlashCommandSource,
|
|
119
121
|
TerminalInputHandler,
|
|
120
122
|
ToolCallEvent,
|
|
123
|
+
ToolCompatibility,
|
|
121
124
|
ToolDefinition,
|
|
122
125
|
ToolInfo,
|
|
123
126
|
SortResult,
|
|
@@ -310,6 +313,12 @@ export {
|
|
|
310
313
|
type HashlineReadToolDetails,
|
|
311
314
|
type HashlineReadToolInput,
|
|
312
315
|
type HashlineReadToolOptions,
|
|
316
|
+
// Tool compatibility registry (ADR-005)
|
|
317
|
+
registerToolCompatibility,
|
|
318
|
+
getToolCompatibility,
|
|
319
|
+
getAllToolCompatibility,
|
|
320
|
+
registerMcpToolCompatibility,
|
|
321
|
+
resetToolCompatibilityRegistry,
|
|
313
322
|
} from "./core/tools/index.js";
|
|
314
323
|
// Main entry point
|
|
315
324
|
export { main } from "./main.js";
|
package/pkg/package.json
CHANGED
|
@@ -5,12 +5,13 @@
|
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
7
|
import type { Api, Model } from "@gsd/pi-ai";
|
|
8
|
+
import { getProviderCapabilities } from "@gsd/pi-ai";
|
|
8
9
|
import type { ExtensionAPI, ExtensionContext } from "@gsd/pi-coding-agent";
|
|
9
10
|
import type { GSDPreferences } from "./preferences.js";
|
|
10
11
|
import { resolveModelWithFallbacksForUnit, resolveDynamicRoutingConfig } from "./preferences.js";
|
|
11
12
|
import type { ComplexityTier } from "./complexity-classifier.js";
|
|
12
13
|
import { classifyUnitComplexity, tierLabel } from "./complexity-classifier.js";
|
|
13
|
-
import { resolveModelForComplexity, escalateTier, getEligibleModels, loadCapabilityOverrides } from "./model-router.js";
|
|
14
|
+
import { resolveModelForComplexity, escalateTier, getEligibleModels, loadCapabilityOverrides, adjustToolSet, filterToolsForProvider } from "./model-router.js";
|
|
14
15
|
import { getLedger, getProjectTotals } from "./metrics.js";
|
|
15
16
|
import { unitPhaseLabel } from "./auto-dashboard.js";
|
|
16
17
|
|
|
@@ -244,12 +245,45 @@ export async function selectAndApplyModel(
|
|
|
244
245
|
const ok = await pi.setModel(model, { persist: false });
|
|
245
246
|
if (ok) {
|
|
246
247
|
appliedModel = model;
|
|
248
|
+
|
|
249
|
+
// ADR-005: Adjust active tool set for the selected model's provider capabilities.
|
|
250
|
+
// Hard-filter incompatible tools, then let extensions override via adjust_tool_set hook.
|
|
251
|
+
const activeToolNames = pi.getActiveTools();
|
|
252
|
+
const { toolNames: compatibleTools, removedTools } = adjustToolSet(activeToolNames, model.api);
|
|
253
|
+
let finalToolNames = compatibleTools;
|
|
254
|
+
|
|
255
|
+
// Fire adjust_tool_set hook — extensions can override the filtered tool set
|
|
256
|
+
if (routingConfig.hooks !== false) {
|
|
257
|
+
const hookResult = await pi.emitAdjustToolSet({
|
|
258
|
+
selectedModelApi: model.api,
|
|
259
|
+
selectedModelProvider: model.provider,
|
|
260
|
+
selectedModelId: model.id,
|
|
261
|
+
activeToolNames,
|
|
262
|
+
filteredTools: removedTools,
|
|
263
|
+
});
|
|
264
|
+
if (hookResult?.toolNames) {
|
|
265
|
+
finalToolNames = hookResult.toolNames;
|
|
266
|
+
}
|
|
267
|
+
}
|
|
268
|
+
|
|
269
|
+
// Apply the filtered tool set if any tools were removed
|
|
270
|
+
if (removedTools.length > 0 || finalToolNames.length !== activeToolNames.length) {
|
|
271
|
+
pi.setActiveTools(finalToolNames);
|
|
272
|
+
}
|
|
273
|
+
|
|
247
274
|
if (verbose) {
|
|
248
275
|
const fallbackNote = modelId === effectiveModelConfig.primary
|
|
249
276
|
? ""
|
|
250
277
|
: ` (fallback from ${effectiveModelConfig.primary})`;
|
|
251
278
|
const phase = unitPhaseLabel(unitType);
|
|
252
279
|
ctx.ui.notify(`Model [${phase}]${routingTierLabel}: ${model.provider}/${model.id}${fallbackNote}`, "info");
|
|
280
|
+
// ADR-005: Report tools filtered due to provider incompatibility
|
|
281
|
+
if (removedTools.length > 0) {
|
|
282
|
+
ctx.ui.notify(
|
|
283
|
+
`Tool compatibility: ${removedTools.length} tools filtered for ${model.api} — ${removedTools.join(", ")}`,
|
|
284
|
+
"info",
|
|
285
|
+
);
|
|
286
|
+
}
|
|
253
287
|
}
|
|
254
288
|
break;
|
|
255
289
|
} else {
|
|
@@ -446,4 +446,12 @@ export function registerHooks(pi: ExtensionAPI): void {
|
|
|
446
446
|
// Default: no override — let capability scoring handle selection
|
|
447
447
|
return undefined;
|
|
448
448
|
});
|
|
449
|
+
|
|
450
|
+
// Tool set adaptation hook (ADR-005 Phase 4)
|
|
451
|
+
// Extensions can override tool set after model selection by returning { toolNames: [...] }
|
|
452
|
+
// Return undefined to let the built-in provider compatibility filtering proceed.
|
|
453
|
+
pi.on("adjust_tool_set", async (_event) => {
|
|
454
|
+
// Default: no override — let provider capability filtering handle tool set
|
|
455
|
+
return undefined;
|
|
456
|
+
});
|
|
449
457
|
}
|
|
@@ -71,13 +71,23 @@ interface EnumeratedFiles {
|
|
|
71
71
|
// ─── Defaults ────────────────────────────────────────────────────────────────
|
|
72
72
|
|
|
73
73
|
const DEFAULT_EXCLUDES = [
|
|
74
|
+
// ── AI / tooling meta ──
|
|
75
|
+
".agents/",
|
|
74
76
|
".gsd/",
|
|
75
77
|
".planning/",
|
|
76
78
|
".plans/",
|
|
77
79
|
".claude/",
|
|
78
80
|
".cursor/",
|
|
81
|
+
".bg-shell/",
|
|
82
|
+
|
|
83
|
+
// ── Editor / IDE ──
|
|
79
84
|
".vscode/",
|
|
85
|
+
".idea/",
|
|
86
|
+
|
|
87
|
+
// ── VCS ──
|
|
80
88
|
".git/",
|
|
89
|
+
|
|
90
|
+
// ── Dependencies & build artifacts ──
|
|
81
91
|
"node_modules/",
|
|
82
92
|
"dist/",
|
|
83
93
|
"build/",
|
|
@@ -85,7 +95,13 @@ const DEFAULT_EXCLUDES = [
|
|
|
85
95
|
"coverage/",
|
|
86
96
|
"__pycache__/",
|
|
87
97
|
".venv/",
|
|
98
|
+
"venv/",
|
|
88
99
|
"vendor/",
|
|
100
|
+
"target/",
|
|
101
|
+
|
|
102
|
+
// ── Misc ──
|
|
103
|
+
".cache/",
|
|
104
|
+
"tmp/",
|
|
89
105
|
];
|
|
90
106
|
|
|
91
107
|
const DEFAULT_MAX_FILES = 500;
|
|
@@ -5,6 +5,9 @@
|
|
|
5
5
|
import type { ComplexityTier, ClassificationResult, TaskMetadata } from "./complexity-classifier.js";
|
|
6
6
|
import { tierOrdinal } from "./complexity-classifier.js";
|
|
7
7
|
import type { ResolvedModelConfig } from "./preferences.js";
|
|
8
|
+
import { getProviderCapabilities, type ProviderCapabilities } from "@gsd/pi-ai";
|
|
9
|
+
import { getToolCompatibility, getAllToolCompatibility } from "@gsd/pi-coding-agent";
|
|
10
|
+
import type { ToolCompatibility } from "@gsd/pi-coding-agent";
|
|
8
11
|
|
|
9
12
|
// ─── Types ───────────────────────────────────────────────────────────────────
|
|
10
13
|
|
|
@@ -37,6 +40,8 @@ export interface RoutingDecision {
|
|
|
37
40
|
selectionMethod: "tier-only" | "capability-scored";
|
|
38
41
|
/** Capability scores per eligible model (capability-scored path only) */
|
|
39
42
|
capabilityScores?: Record<string, number>;
|
|
43
|
+
/** Tools filtered out due to provider incompatibility (ADR-005) */
|
|
44
|
+
filteredTools?: string[];
|
|
40
45
|
/** Task requirement vector used for scoring */
|
|
41
46
|
taskRequirements?: Partial<Record<string, number>>;
|
|
42
47
|
}
|
|
@@ -536,3 +541,71 @@ function getModelCost(modelId: string): number {
|
|
|
536
541
|
// Unknown cost — assume expensive to avoid routing to unknown cheap models
|
|
537
542
|
return 999;
|
|
538
543
|
}
|
|
544
|
+
|
|
545
|
+
// ─── Tool Compatibility Filter (ADR-005 Phase 3) ───────────────────────────
|
|
546
|
+
|
|
547
|
+
/**
|
|
548
|
+
* Check if a tool is compatible with a provider's capabilities.
|
|
549
|
+
* Returns true if the tool can be used with the provider.
|
|
550
|
+
*/
|
|
551
|
+
export function isToolCompatibleWithProvider(
|
|
552
|
+
toolName: string,
|
|
553
|
+
providerCaps: ProviderCapabilities,
|
|
554
|
+
): boolean {
|
|
555
|
+
const compat = getToolCompatibility(toolName);
|
|
556
|
+
if (!compat) return true; // no metadata = always compatible
|
|
557
|
+
|
|
558
|
+
// Hard filter: provider doesn't support image tool results
|
|
559
|
+
if (compat.producesImages && !providerCaps.imageToolResults) return false;
|
|
560
|
+
|
|
561
|
+
// Hard filter: tool uses schema features provider doesn't support
|
|
562
|
+
if (compat.schemaFeatures?.some(f => providerCaps.unsupportedSchemaFeatures.includes(f))) {
|
|
563
|
+
return false;
|
|
564
|
+
}
|
|
565
|
+
|
|
566
|
+
return true;
|
|
567
|
+
}
|
|
568
|
+
|
|
569
|
+
/**
|
|
570
|
+
* Filter a list of tool names to only those compatible with a provider.
|
|
571
|
+
* Used by the routing pipeline to adjust tool sets when switching providers.
|
|
572
|
+
*/
|
|
573
|
+
export function filterToolsForProvider(
|
|
574
|
+
toolNames: string[],
|
|
575
|
+
providerApi: string,
|
|
576
|
+
): { compatible: string[]; filtered: string[] } {
|
|
577
|
+
const providerCaps = getProviderCapabilities(providerApi);
|
|
578
|
+
|
|
579
|
+
// Provider doesn't support tool calling at all
|
|
580
|
+
if (!providerCaps.toolCalling) {
|
|
581
|
+
return { compatible: [], filtered: toolNames };
|
|
582
|
+
}
|
|
583
|
+
|
|
584
|
+
const compatible: string[] = [];
|
|
585
|
+
const filtered: string[] = [];
|
|
586
|
+
|
|
587
|
+
for (const name of toolNames) {
|
|
588
|
+
if (isToolCompatibleWithProvider(name, providerCaps)) {
|
|
589
|
+
compatible.push(name);
|
|
590
|
+
} else {
|
|
591
|
+
filtered.push(name);
|
|
592
|
+
}
|
|
593
|
+
}
|
|
594
|
+
|
|
595
|
+
return { compatible, filtered };
|
|
596
|
+
}
|
|
597
|
+
|
|
598
|
+
/**
|
|
599
|
+
* Adjust the active tool set for a selected model's provider capabilities.
|
|
600
|
+
* Returns tool names that should be active — removes incompatible tools.
|
|
601
|
+
*
|
|
602
|
+
* This is a hard filter only — it removes tools that would fail at the
|
|
603
|
+
* provider level. It does NOT remove tools based on soft heuristics.
|
|
604
|
+
*/
|
|
605
|
+
export function adjustToolSet(
|
|
606
|
+
activeToolNames: string[],
|
|
607
|
+
selectedModelApi: string,
|
|
608
|
+
): { toolNames: string[]; removedTools: string[] } {
|
|
609
|
+
const { compatible, filtered } = filterToolsForProvider(activeToolNames, selectedModelApi);
|
|
610
|
+
return { toolNames: compatible, removedTools: filtered };
|
|
611
|
+
}
|
|
@@ -162,6 +162,34 @@ test("generateCodebaseMap: excludes .claude/ and other tool directories", () =>
|
|
|
162
162
|
}
|
|
163
163
|
});
|
|
164
164
|
|
|
165
|
+
test("generateCodebaseMap: excludes .agents/ and other tooling directories", () => {
|
|
166
|
+
const base = makeTmpRepo();
|
|
167
|
+
try {
|
|
168
|
+
addFile(base, "src/main.ts");
|
|
169
|
+
addFile(base, ".agents/skills/pdf/SKILL.md");
|
|
170
|
+
addFile(base, ".agents/skills/find-skills/SKILL.md");
|
|
171
|
+
addFile(base, ".bg-shell/session.json");
|
|
172
|
+
addFile(base, ".idea/workspace.xml");
|
|
173
|
+
addFile(base, ".cache/data.bin");
|
|
174
|
+
addFile(base, "tmp/scratch.ts");
|
|
175
|
+
addFile(base, "target/debug/build.rs");
|
|
176
|
+
addFile(base, "venv/lib/site.py");
|
|
177
|
+
|
|
178
|
+
const result = generateCodebaseMap(base);
|
|
179
|
+
assert.ok(result.content.includes("`src/main.ts`"), "should include src/main.ts");
|
|
180
|
+
assert.ok(!result.content.includes("SKILL.md"), "should exclude .agents/ files");
|
|
181
|
+
assert.ok(!result.content.includes(".bg-shell"), "should exclude .bg-shell/ files");
|
|
182
|
+
assert.ok(!result.content.includes(".idea"), "should exclude .idea/ files");
|
|
183
|
+
assert.ok(!result.content.includes(".cache"), "should exclude .cache/ files");
|
|
184
|
+
assert.ok(!result.content.includes("tmp/"), "should exclude tmp/ files");
|
|
185
|
+
assert.ok(!result.content.includes("target"), "should exclude target/ files");
|
|
186
|
+
assert.ok(!result.content.includes("venv"), "should exclude venv/ files");
|
|
187
|
+
assert.equal(result.fileCount, 1);
|
|
188
|
+
} finally {
|
|
189
|
+
cleanup(base);
|
|
190
|
+
}
|
|
191
|
+
});
|
|
192
|
+
|
|
165
193
|
test("generateCodebaseMap: excludes binary and lock files", () => {
|
|
166
194
|
const base = makeTmpRepo();
|
|
167
195
|
try {
|