@esankhan3/anvil-agent-core 0.1.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/README.md +142 -0
- package/dist/__tests__/adapter-enrichment.test.d.ts +12 -0
- package/dist/__tests__/adapter-enrichment.test.d.ts.map +1 -0
- package/dist/__tests__/adapter-enrichment.test.js +199 -0
- package/dist/__tests__/adapter-enrichment.test.js.map +1 -0
- package/dist/__tests__/adk-anthropic-llm.test.d.ts +18 -0
- package/dist/__tests__/adk-anthropic-llm.test.d.ts.map +1 -0
- package/dist/__tests__/adk-anthropic-llm.test.js +124 -0
- package/dist/__tests__/adk-anthropic-llm.test.js.map +1 -0
- package/dist/__tests__/cost-breakdown.test.d.ts +11 -0
- package/dist/__tests__/cost-breakdown.test.d.ts.map +1 -0
- package/dist/__tests__/cost-breakdown.test.js +163 -0
- package/dist/__tests__/cost-breakdown.test.js.map +1 -0
- package/dist/__tests__/mcp.test.d.ts +13 -0
- package/dist/__tests__/mcp.test.d.ts.map +1 -0
- package/dist/__tests__/mcp.test.js +413 -0
- package/dist/__tests__/mcp.test.js.map +1 -0
- package/dist/__tests__/ollama-adapter-agentic.test.d.ts +15 -0
- package/dist/__tests__/ollama-adapter-agentic.test.d.ts.map +1 -0
- package/dist/__tests__/ollama-adapter-agentic.test.js +268 -0
- package/dist/__tests__/ollama-adapter-agentic.test.js.map +1 -0
- package/dist/__tests__/ollama-adapter-executor.test.d.ts +10 -0
- package/dist/__tests__/ollama-adapter-executor.test.d.ts.map +1 -0
- package/dist/__tests__/ollama-adapter-executor.test.js +95 -0
- package/dist/__tests__/ollama-adapter-executor.test.js.map +1 -0
- package/dist/__tests__/openai-adapter-output.test.d.ts +17 -0
- package/dist/__tests__/openai-adapter-output.test.d.ts.map +1 -0
- package/dist/__tests__/openai-adapter-output.test.js +127 -0
- package/dist/__tests__/openai-adapter-output.test.js.map +1 -0
- package/dist/__tests__/opencode-adapter.test.d.ts +7 -0
- package/dist/__tests__/opencode-adapter.test.d.ts.map +1 -0
- package/dist/__tests__/opencode-adapter.test.js +141 -0
- package/dist/__tests__/opencode-adapter.test.js.map +1 -0
- package/dist/__tests__/openrouter-adapter-agentic.test.d.ts +11 -0
- package/dist/__tests__/openrouter-adapter-agentic.test.d.ts.map +1 -0
- package/dist/__tests__/openrouter-adapter-agentic.test.js +297 -0
- package/dist/__tests__/openrouter-adapter-agentic.test.js.map +1 -0
- package/dist/__tests__/router-circuit-breaker.test.d.ts +6 -0
- package/dist/__tests__/router-circuit-breaker.test.d.ts.map +1 -0
- package/dist/__tests__/router-circuit-breaker.test.js +253 -0
- package/dist/__tests__/router-circuit-breaker.test.js.map +1 -0
- package/dist/__tests__/router-config-loader.test.d.ts +8 -0
- package/dist/__tests__/router-config-loader.test.d.ts.map +1 -0
- package/dist/__tests__/router-config-loader.test.js +172 -0
- package/dist/__tests__/router-config-loader.test.js.map +1 -0
- package/dist/__tests__/router-discovery.test.d.ts +5 -0
- package/dist/__tests__/router-discovery.test.d.ts.map +1 -0
- package/dist/__tests__/router-discovery.test.js +129 -0
- package/dist/__tests__/router-discovery.test.js.map +1 -0
- package/dist/__tests__/router-fallback.test.d.ts +9 -0
- package/dist/__tests__/router-fallback.test.d.ts.map +1 -0
- package/dist/__tests__/router-fallback.test.js +283 -0
- package/dist/__tests__/router-fallback.test.js.map +1 -0
- package/dist/__tests__/router-local-executor.test.d.ts +6 -0
- package/dist/__tests__/router-local-executor.test.d.ts.map +1 -0
- package/dist/__tests__/router-local-executor.test.js +193 -0
- package/dist/__tests__/router-local-executor.test.js.map +1 -0
- package/dist/__tests__/router-model-registry.test.d.ts +8 -0
- package/dist/__tests__/router-model-registry.test.d.ts.map +1 -0
- package/dist/__tests__/router-model-registry.test.js +389 -0
- package/dist/__tests__/router-model-registry.test.js.map +1 -0
- package/dist/__tests__/router-rate-limiter.test.d.ts +8 -0
- package/dist/__tests__/router-rate-limiter.test.d.ts.map +1 -0
- package/dist/__tests__/router-rate-limiter.test.js +128 -0
- package/dist/__tests__/router-rate-limiter.test.js.map +1 -0
- package/dist/__tests__/router-resolver.test.d.ts +7 -0
- package/dist/__tests__/router-resolver.test.d.ts.map +1 -0
- package/dist/__tests__/router-resolver.test.js +110 -0
- package/dist/__tests__/router-resolver.test.js.map +1 -0
- package/dist/__tests__/router-retry.test.d.ts +7 -0
- package/dist/__tests__/router-retry.test.d.ts.map +1 -0
- package/dist/__tests__/router-retry.test.js +302 -0
- package/dist/__tests__/router-retry.test.js.map +1 -0
- package/dist/__tests__/router-scaffold.test.d.ts +11 -0
- package/dist/__tests__/router-scaffold.test.d.ts.map +1 -0
- package/dist/__tests__/router-scaffold.test.js +103 -0
- package/dist/__tests__/router-scaffold.test.js.map +1 -0
- package/dist/__tests__/router-spend-ledger.test.d.ts +8 -0
- package/dist/__tests__/router-spend-ledger.test.d.ts.map +1 -0
- package/dist/__tests__/router-spend-ledger.test.js +227 -0
- package/dist/__tests__/router-spend-ledger.test.js.map +1 -0
- package/dist/__tests__/router-telemetry.test.d.ts +11 -0
- package/dist/__tests__/router-telemetry.test.d.ts.map +1 -0
- package/dist/__tests__/router-telemetry.test.js +173 -0
- package/dist/__tests__/router-telemetry.test.js.map +1 -0
- package/dist/__tests__/single-shot.test.d.ts +12 -0
- package/dist/__tests__/single-shot.test.d.ts.map +1 -0
- package/dist/__tests__/single-shot.test.js +204 -0
- package/dist/__tests__/single-shot.test.js.map +1 -0
- package/dist/__tests__/skills-prompt.test.d.ts +11 -0
- package/dist/__tests__/skills-prompt.test.d.ts.map +1 -0
- package/dist/__tests__/skills-prompt.test.js +208 -0
- package/dist/__tests__/skills-prompt.test.js.map +1 -0
- package/dist/__tests__/skills.test.d.ts +11 -0
- package/dist/__tests__/skills.test.d.ts.map +1 -0
- package/dist/__tests__/skills.test.js +161 -0
- package/dist/__tests__/skills.test.js.map +1 -0
- package/dist/__tests__/telemetry-integration.test.d.ts +12 -0
- package/dist/__tests__/telemetry-integration.test.d.ts.map +1 -0
- package/dist/__tests__/telemetry-integration.test.js +153 -0
- package/dist/__tests__/telemetry-integration.test.js.map +1 -0
- package/dist/__tests__/telemetry.test.d.ts +13 -0
- package/dist/__tests__/telemetry.test.d.ts.map +1 -0
- package/dist/__tests__/telemetry.test.js +161 -0
- package/dist/__tests__/telemetry.test.js.map +1 -0
- package/dist/__tests__/upstream-error.test.d.ts +8 -0
- package/dist/__tests__/upstream-error.test.d.ts.map +1 -0
- package/dist/__tests__/upstream-error.test.js +186 -0
- package/dist/__tests__/upstream-error.test.js.map +1 -0
- package/dist/adk-adapter.d.ts +45 -0
- package/dist/adk-adapter.d.ts.map +1 -0
- package/dist/adk-adapter.js +403 -0
- package/dist/adk-adapter.js.map +1 -0
- package/dist/adk-anthropic-llm.d.ts +59 -0
- package/dist/adk-anthropic-llm.d.ts.map +1 -0
- package/dist/adk-anthropic-llm.js +397 -0
- package/dist/adk-anthropic-llm.js.map +1 -0
- package/dist/agent/index.d.ts +14 -0
- package/dist/agent/index.d.ts.map +1 -0
- package/dist/agent/index.js +14 -0
- package/dist/agent/index.js.map +1 -0
- package/dist/agent/session/__tests__/bridge-tool-executor.test.d.ts +10 -0
- package/dist/agent/session/__tests__/bridge-tool-executor.test.d.ts.map +1 -0
- package/dist/agent/session/__tests__/bridge-tool-executor.test.js +152 -0
- package/dist/agent/session/__tests__/bridge-tool-executor.test.js.map +1 -0
- package/dist/agent/session/__tests__/collect-trajectory.test.d.ts +18 -0
- package/dist/agent/session/__tests__/collect-trajectory.test.d.ts.map +1 -0
- package/dist/agent/session/__tests__/collect-trajectory.test.js +208 -0
- package/dist/agent/session/__tests__/collect-trajectory.test.js.map +1 -0
- package/dist/agent/session/__tests__/run-with-agent.test.d.ts +8 -0
- package/dist/agent/session/__tests__/run-with-agent.test.d.ts.map +1 -0
- package/dist/agent/session/__tests__/run-with-agent.test.js +98 -0
- package/dist/agent/session/__tests__/run-with-agent.test.js.map +1 -0
- package/dist/agent/session/__tests__/runtime.test.d.ts +7 -0
- package/dist/agent/session/__tests__/runtime.test.d.ts.map +1 -0
- package/dist/agent/session/__tests__/runtime.test.js +361 -0
- package/dist/agent/session/__tests__/runtime.test.js.map +1 -0
- package/dist/agent/session/__tests__/skills-mcp-spawn.test.d.ts +15 -0
- package/dist/agent/session/__tests__/skills-mcp-spawn.test.d.ts.map +1 -0
- package/dist/agent/session/__tests__/skills-mcp-spawn.test.js +160 -0
- package/dist/agent/session/__tests__/skills-mcp-spawn.test.js.map +1 -0
- package/dist/agent/session/__tests__/spawn-telemetry.test.d.ts +13 -0
- package/dist/agent/session/__tests__/spawn-telemetry.test.d.ts.map +1 -0
- package/dist/agent/session/__tests__/spawn-telemetry.test.js +135 -0
- package/dist/agent/session/__tests__/spawn-telemetry.test.js.map +1 -0
- package/dist/agent/session/__tests__/types.test.d.ts +9 -0
- package/dist/agent/session/__tests__/types.test.d.ts.map +1 -0
- package/dist/agent/session/__tests__/types.test.js +220 -0
- package/dist/agent/session/__tests__/types.test.js.map +1 -0
- package/dist/agent/session/adapter.d.ts +108 -0
- package/dist/agent/session/adapter.d.ts.map +1 -0
- package/dist/agent/session/adapter.js +39 -0
- package/dist/agent/session/adapter.js.map +1 -0
- package/dist/agent/session/collect-trajectory.d.ts +36 -0
- package/dist/agent/session/collect-trajectory.d.ts.map +1 -0
- package/dist/agent/session/collect-trajectory.js +193 -0
- package/dist/agent/session/collect-trajectory.js.map +1 -0
- package/dist/agent/session/default-adapter-factory.d.ts +48 -0
- package/dist/agent/session/default-adapter-factory.d.ts.map +1 -0
- package/dist/agent/session/default-adapter-factory.js +227 -0
- package/dist/agent/session/default-adapter-factory.js.map +1 -0
- package/dist/agent/session/headless-types.d.ts +85 -0
- package/dist/agent/session/headless-types.d.ts.map +1 -0
- package/dist/agent/session/headless-types.js +16 -0
- package/dist/agent/session/headless-types.js.map +1 -0
- package/dist/agent/session/index.d.ts +18 -0
- package/dist/agent/session/index.d.ts.map +1 -0
- package/dist/agent/session/index.js +20 -0
- package/dist/agent/session/index.js.map +1 -0
- package/dist/agent/session/language-model-bridge.d.ts +84 -0
- package/dist/agent/session/language-model-bridge.d.ts.map +1 -0
- package/dist/agent/session/language-model-bridge.js +454 -0
- package/dist/agent/session/language-model-bridge.js.map +1 -0
- package/dist/agent/session/legacy-adapter-types.d.ts +63 -0
- package/dist/agent/session/legacy-adapter-types.d.ts.map +1 -0
- package/dist/agent/session/legacy-adapter-types.js +11 -0
- package/dist/agent/session/legacy-adapter-types.js.map +1 -0
- package/dist/agent/session/run-with-agent.d.ts +36 -0
- package/dist/agent/session/run-with-agent.d.ts.map +1 -0
- package/dist/agent/session/run-with-agent.js +81 -0
- package/dist/agent/session/run-with-agent.js.map +1 -0
- package/dist/agent/session/session-registry.d.ts +71 -0
- package/dist/agent/session/session-registry.d.ts.map +1 -0
- package/dist/agent/session/session-registry.js +209 -0
- package/dist/agent/session/session-registry.js.map +1 -0
- package/dist/agent/session/session.d.ts +76 -0
- package/dist/agent/session/session.d.ts.map +1 -0
- package/dist/agent/session/session.js +327 -0
- package/dist/agent/session/session.js.map +1 -0
- package/dist/agent/session/types.d.ts +230 -0
- package/dist/agent/session/types.d.ts.map +1 -0
- package/dist/agent/session/types.js +44 -0
- package/dist/agent/session/types.js.map +1 -0
- package/dist/checkpoint/__tests__/blob-store.test.d.ts +5 -0
- package/dist/checkpoint/__tests__/blob-store.test.d.ts.map +1 -0
- package/dist/checkpoint/__tests__/blob-store.test.js +82 -0
- package/dist/checkpoint/__tests__/blob-store.test.js.map +1 -0
- package/dist/checkpoint/__tests__/key.test.d.ts +7 -0
- package/dist/checkpoint/__tests__/key.test.d.ts.map +1 -0
- package/dist/checkpoint/__tests__/key.test.js +130 -0
- package/dist/checkpoint/__tests__/key.test.js.map +1 -0
- package/dist/checkpoint/__tests__/runner.test.d.ts +12 -0
- package/dist/checkpoint/__tests__/runner.test.d.ts.map +1 -0
- package/dist/checkpoint/__tests__/runner.test.js +201 -0
- package/dist/checkpoint/__tests__/runner.test.js.map +1 -0
- package/dist/checkpoint/__tests__/store.test.d.ts +6 -0
- package/dist/checkpoint/__tests__/store.test.d.ts.map +1 -0
- package/dist/checkpoint/__tests__/store.test.js +150 -0
- package/dist/checkpoint/__tests__/store.test.js.map +1 -0
- package/dist/checkpoint/blob-store.d.ts +41 -0
- package/dist/checkpoint/blob-store.d.ts.map +1 -0
- package/dist/checkpoint/blob-store.js +119 -0
- package/dist/checkpoint/blob-store.js.map +1 -0
- package/dist/checkpoint/index.d.ts +15 -0
- package/dist/checkpoint/index.d.ts.map +1 -0
- package/dist/checkpoint/index.js +14 -0
- package/dist/checkpoint/index.js.map +1 -0
- package/dist/checkpoint/key.d.ts +39 -0
- package/dist/checkpoint/key.d.ts.map +1 -0
- package/dist/checkpoint/key.js +112 -0
- package/dist/checkpoint/key.js.map +1 -0
- package/dist/checkpoint/runner.d.ts +83 -0
- package/dist/checkpoint/runner.d.ts.map +1 -0
- package/dist/checkpoint/runner.js +146 -0
- package/dist/checkpoint/runner.js.map +1 -0
- package/dist/checkpoint/store.d.ts +91 -0
- package/dist/checkpoint/store.d.ts.map +1 -0
- package/dist/checkpoint/store.js +292 -0
- package/dist/checkpoint/store.js.map +1 -0
- package/dist/checkpoint/types.d.ts +74 -0
- package/dist/checkpoint/types.d.ts.map +1 -0
- package/dist/checkpoint/types.js +16 -0
- package/dist/checkpoint/types.js.map +1 -0
- package/dist/claude-adapter.d.ts +23 -0
- package/dist/claude-adapter.d.ts.map +1 -0
- package/dist/claude-adapter.js +233 -0
- package/dist/claude-adapter.js.map +1 -0
- package/dist/cost.d.ts +67 -0
- package/dist/cost.d.ts.map +1 -0
- package/dist/cost.js +148 -0
- package/dist/cost.js.map +1 -0
- package/dist/data/model-prices.json +39681 -0
- package/dist/fallback-adapter.d.ts +51 -0
- package/dist/fallback-adapter.d.ts.map +1 -0
- package/dist/fallback-adapter.js +116 -0
- package/dist/fallback-adapter.js.map +1 -0
- package/dist/gemini-adapter.d.ts +22 -0
- package/dist/gemini-adapter.d.ts.map +1 -0
- package/dist/gemini-adapter.js +185 -0
- package/dist/gemini-adapter.js.map +1 -0
- package/dist/gemini-cli-adapter.d.ts +24 -0
- package/dist/gemini-cli-adapter.d.ts.map +1 -0
- package/dist/gemini-cli-adapter.js +169 -0
- package/dist/gemini-cli-adapter.js.map +1 -0
- package/dist/index.d.ts +39 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +39 -0
- package/dist/index.js.map +1 -0
- package/dist/mcp/client.d.ts +32 -0
- package/dist/mcp/client.d.ts.map +1 -0
- package/dist/mcp/client.js +92 -0
- package/dist/mcp/client.js.map +1 -0
- package/dist/mcp/config-loader.d.ts +36 -0
- package/dist/mcp/config-loader.d.ts.map +1 -0
- package/dist/mcp/config-loader.js +129 -0
- package/dist/mcp/config-loader.js.map +1 -0
- package/dist/mcp/index.d.ts +12 -0
- package/dist/mcp/index.d.ts.map +1 -0
- package/dist/mcp/index.js +11 -0
- package/dist/mcp/index.js.map +1 -0
- package/dist/mcp/tool-merger.d.ts +18 -0
- package/dist/mcp/tool-merger.d.ts.map +1 -0
- package/dist/mcp/tool-merger.js +34 -0
- package/dist/mcp/tool-merger.js.map +1 -0
- package/dist/mcp/types.d.ts +35 -0
- package/dist/mcp/types.d.ts.map +1 -0
- package/dist/mcp/types.js +10 -0
- package/dist/mcp/types.js.map +1 -0
- package/dist/ollama-adapter.d.ts +95 -0
- package/dist/ollama-adapter.d.ts.map +1 -0
- package/dist/ollama-adapter.js +404 -0
- package/dist/ollama-adapter.js.map +1 -0
- package/dist/openai-adapter.d.ts +40 -0
- package/dist/openai-adapter.d.ts.map +1 -0
- package/dist/openai-adapter.js +81 -0
- package/dist/openai-adapter.js.map +1 -0
- package/dist/opencode-adapter.d.ts +39 -0
- package/dist/opencode-adapter.d.ts.map +1 -0
- package/dist/opencode-adapter.js +105 -0
- package/dist/opencode-adapter.js.map +1 -0
- package/dist/openrouter-adapter.d.ts +69 -0
- package/dist/openrouter-adapter.d.ts.map +1 -0
- package/dist/openrouter-adapter.js +481 -0
- package/dist/openrouter-adapter.js.map +1 -0
- package/dist/registry.d.ts +55 -0
- package/dist/registry.d.ts.map +1 -0
- package/dist/registry.js +191 -0
- package/dist/registry.js.map +1 -0
- package/dist/router/circuit-breaker.d.ts +57 -0
- package/dist/router/circuit-breaker.d.ts.map +1 -0
- package/dist/router/circuit-breaker.js +110 -0
- package/dist/router/circuit-breaker.js.map +1 -0
- package/dist/router/config-loader.d.ts +43 -0
- package/dist/router/config-loader.d.ts.map +1 -0
- package/dist/router/config-loader.js +155 -0
- package/dist/router/config-loader.js.map +1 -0
- package/dist/router/discovery.d.ts +37 -0
- package/dist/router/discovery.d.ts.map +1 -0
- package/dist/router/discovery.js +54 -0
- package/dist/router/discovery.js.map +1 -0
- package/dist/router/errors.d.ts +39 -0
- package/dist/router/errors.d.ts.map +1 -0
- package/dist/router/errors.js +103 -0
- package/dist/router/errors.js.map +1 -0
- package/dist/router/index.d.ts +31 -0
- package/dist/router/index.d.ts.map +1 -0
- package/dist/router/index.js +20 -0
- package/dist/router/index.js.map +1 -0
- package/dist/router/local-executor.d.ts +62 -0
- package/dist/router/local-executor.d.ts.map +1 -0
- package/dist/router/local-executor.js +161 -0
- package/dist/router/local-executor.js.map +1 -0
- package/dist/router/model-registry.d.ts +90 -0
- package/dist/router/model-registry.d.ts.map +1 -0
- package/dist/router/model-registry.js +242 -0
- package/dist/router/model-registry.js.map +1 -0
- package/dist/router/rate-limiter.d.ts +63 -0
- package/dist/router/rate-limiter.d.ts.map +1 -0
- package/dist/router/rate-limiter.js +136 -0
- package/dist/router/rate-limiter.js.map +1 -0
- package/dist/router/resolver.d.ts +45 -0
- package/dist/router/resolver.d.ts.map +1 -0
- package/dist/router/resolver.js +71 -0
- package/dist/router/resolver.js.map +1 -0
- package/dist/router/retry.d.ts +58 -0
- package/dist/router/retry.d.ts.map +1 -0
- package/dist/router/retry.js +119 -0
- package/dist/router/retry.js.map +1 -0
- package/dist/router/router.d.ts +100 -0
- package/dist/router/router.d.ts.map +1 -0
- package/dist/router/router.js +306 -0
- package/dist/router/router.js.map +1 -0
- package/dist/router/spend-ledger.d.ts +69 -0
- package/dist/router/spend-ledger.d.ts.map +1 -0
- package/dist/router/spend-ledger.js +191 -0
- package/dist/router/spend-ledger.js.map +1 -0
- package/dist/router/telemetry.d.ts +48 -0
- package/dist/router/telemetry.d.ts.map +1 -0
- package/dist/router/telemetry.js +112 -0
- package/dist/router/telemetry.js.map +1 -0
- package/dist/router/types.d.ts +95 -0
- package/dist/router/types.d.ts.map +1 -0
- package/dist/router/types.js +16 -0
- package/dist/router/types.js.map +1 -0
- package/dist/single-shot.d.ts +60 -0
- package/dist/single-shot.d.ts.map +1 -0
- package/dist/single-shot.js +385 -0
- package/dist/single-shot.js.map +1 -0
- package/dist/skills/activator.d.ts +17 -0
- package/dist/skills/activator.d.ts.map +1 -0
- package/dist/skills/activator.js +24 -0
- package/dist/skills/activator.js.map +1 -0
- package/dist/skills/compose.d.ts +43 -0
- package/dist/skills/compose.d.ts.map +1 -0
- package/dist/skills/compose.js +53 -0
- package/dist/skills/compose.js.map +1 -0
- package/dist/skills/index.d.ts +17 -0
- package/dist/skills/index.d.ts.map +1 -0
- package/dist/skills/index.js +16 -0
- package/dist/skills/index.js.map +1 -0
- package/dist/skills/loader.d.ts +9 -0
- package/dist/skills/loader.d.ts.map +1 -0
- package/dist/skills/loader.js +49 -0
- package/dist/skills/loader.js.map +1 -0
- package/dist/skills/parser.d.ts +13 -0
- package/dist/skills/parser.d.ts.map +1 -0
- package/dist/skills/parser.js +60 -0
- package/dist/skills/parser.js.map +1 -0
- package/dist/skills/render.d.ts +11 -0
- package/dist/skills/render.d.ts.map +1 -0
- package/dist/skills/render.js +21 -0
- package/dist/skills/render.js.map +1 -0
- package/dist/skills/resolve-dir.d.ts +20 -0
- package/dist/skills/resolve-dir.d.ts.map +1 -0
- package/dist/skills/resolve-dir.js +30 -0
- package/dist/skills/resolve-dir.js.map +1 -0
- package/dist/skills/tool-policy.d.ts +26 -0
- package/dist/skills/tool-policy.d.ts.map +1 -0
- package/dist/skills/tool-policy.js +33 -0
- package/dist/skills/tool-policy.js.map +1 -0
- package/dist/skills/types.d.ts +42 -0
- package/dist/skills/types.d.ts.map +1 -0
- package/dist/skills/types.js +8 -0
- package/dist/skills/types.js.map +1 -0
- package/dist/stream-format.d.ts +100 -0
- package/dist/stream-format.d.ts.map +1 -0
- package/dist/stream-format.js +90 -0
- package/dist/stream-format.js.map +1 -0
- package/dist/telemetry/attributes.d.ts +38 -0
- package/dist/telemetry/attributes.d.ts.map +1 -0
- package/dist/telemetry/attributes.js +39 -0
- package/dist/telemetry/attributes.js.map +1 -0
- package/dist/telemetry/config.d.ts +30 -0
- package/dist/telemetry/config.d.ts.map +1 -0
- package/dist/telemetry/config.js +54 -0
- package/dist/telemetry/config.js.map +1 -0
- package/dist/telemetry/exporters.d.ts +10 -0
- package/dist/telemetry/exporters.d.ts.map +1 -0
- package/dist/telemetry/exporters.js +46 -0
- package/dist/telemetry/exporters.js.map +1 -0
- package/dist/telemetry/index.d.ts +15 -0
- package/dist/telemetry/index.d.ts.map +1 -0
- package/dist/telemetry/index.js +12 -0
- package/dist/telemetry/index.js.map +1 -0
- package/dist/telemetry/instrument.d.ts +36 -0
- package/dist/telemetry/instrument.d.ts.map +1 -0
- package/dist/telemetry/instrument.js +215 -0
- package/dist/telemetry/instrument.js.map +1 -0
- package/dist/telemetry/metrics.d.ts +45 -0
- package/dist/telemetry/metrics.d.ts.map +1 -0
- package/dist/telemetry/metrics.js +186 -0
- package/dist/telemetry/metrics.js.map +1 -0
- package/dist/telemetry/tracer.d.ts +33 -0
- package/dist/telemetry/tracer.d.ts.map +1 -0
- package/dist/telemetry/tracer.js +162 -0
- package/dist/telemetry/tracer.js.map +1 -0
- package/dist/tools/__tests__/builtin.test.d.ts +7 -0
- package/dist/tools/__tests__/builtin.test.d.ts.map +1 -0
- package/dist/tools/__tests__/builtin.test.js +242 -0
- package/dist/tools/__tests__/builtin.test.js.map +1 -0
- package/dist/tools/builtin.d.ts +29 -0
- package/dist/tools/builtin.d.ts.map +1 -0
- package/dist/tools/builtin.js +367 -0
- package/dist/tools/builtin.js.map +1 -0
- package/dist/tools/index.d.ts +4 -0
- package/dist/tools/index.d.ts.map +1 -0
- package/dist/tools/index.js +3 -0
- package/dist/tools/index.js.map +1 -0
- package/dist/tools/path-guard.d.ts +23 -0
- package/dist/tools/path-guard.d.ts.map +1 -0
- package/dist/tools/path-guard.js +66 -0
- package/dist/tools/path-guard.js.map +1 -0
- package/dist/tools/types.d.ts +45 -0
- package/dist/tools/types.d.ts.map +1 -0
- package/dist/tools/types.js +11 -0
- package/dist/tools/types.js.map +1 -0
- package/dist/types.d.ts +249 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +22 -0
- package/dist/types.js.map +1 -0
- package/dist/upstream-error.d.ts +64 -0
- package/dist/upstream-error.d.ts.map +1 -0
- package/dist/upstream-error.js +105 -0
- package/dist/upstream-error.js.map +1 -0
- package/dist/version.d.ts +2 -0
- package/dist/version.d.ts.map +1 -0
- package/dist/version.js +2 -0
- package/dist/version.js.map +1 -0
- package/package.json +49 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/agent/session/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EACL,YAAY,EACZ,SAAS,EACT,iBAAiB,EACjB,YAAY,EACZ,YAAY,EACZ,cAAc,GAEf,MAAM,cAAc,CAAC;AAEtB,OAAO,EACL,YAAY,GAEb,MAAM,uBAAuB,CAAC;AAQ/B,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAEnD,8EAA8E;AAC9E,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,EACL,qBAAqB,EACrB,uBAAuB,EACvB,eAAe,GAChB,MAAM,8BAA8B,CAAC;AAOtC,uEAAuE;AACvE,+DAA+D;AAC/D,OAAO,EACL,YAAY,GAGb,MAAM,qBAAqB,CAAC;AAE7B,2EAA2E;AAC3E,2EAA2E;AAC3E,2CAA2C;AAC3C,OAAO,EACL,iBAAiB,GAElB,MAAM,yBAAyB,CAAC;AAuBjC,OAAO,EACL,kBAAkB,EAClB,8BAA8B,GAC/B,MAAM,YAAY,CAAC"}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `LanguageModelBridge` — adapts an `@esankhan3/anvil-agent-core` `ModelAdapter` (or a
|
|
3
|
+
* future `LanguageModel`) to the `AgentAdapter` interface that
|
|
4
|
+
* `AgentProcess` consumes (5-event EventEmitter: `content` / `activity` /
|
|
5
|
+
* `result` / `error-output` / `exit`).
|
|
6
|
+
*
|
|
7
|
+
* Two surfaces in one class:
|
|
8
|
+
* - `AgentAdapter` (lifecycle): `start()` / `kill()` + the 5 events.
|
|
9
|
+
* This is what `AgentProcess` drives.
|
|
10
|
+
* - Prompt-construction helpers: `capabilities` (with `promptCache`
|
|
11
|
+
* stance), `markCacheBreakpoint(prompt, position)`, `countTokens(text)`.
|
|
12
|
+
* These let prompt-envelope code make caching decisions before the
|
|
13
|
+
* spawn — out of band of the lifecycle.
|
|
14
|
+
*
|
|
15
|
+
* Behavior:
|
|
16
|
+
* - `start()` kicks `ModelAdapter.run()` against an in-process Writable
|
|
17
|
+
* that parses Anvil Stream Format NDJSON and re-emits dashboard events.
|
|
18
|
+
* - The wire-format `result` frame is ignored — the bridge waits for
|
|
19
|
+
* `run()` to resolve and emits `result` from the richer
|
|
20
|
+
* `ModelAdapterResult` (which includes `stopReason` + cache token
|
|
21
|
+
* counts that the wire format doesn't carry).
|
|
22
|
+
* - Errors from `run()` surface as `error-output` + `exit(1)`.
|
|
23
|
+
*/
|
|
24
|
+
import { EventEmitter } from 'node:events';
|
|
25
|
+
import type { ModelAdapter, ProviderName } from '../../types.js';
|
|
26
|
+
import type { AdapterRequest, AgentAdapter } from './adapter.js';
|
|
27
|
+
import type { AdapterCapabilities } from './legacy-adapter-types.js';
|
|
28
|
+
export declare class LanguageModelBridge extends EventEmitter implements AgentAdapter {
|
|
29
|
+
private readonly request;
|
|
30
|
+
private readonly adapter;
|
|
31
|
+
private readonly providerName;
|
|
32
|
+
private readonly capabilitiesCache;
|
|
33
|
+
private maxOutputTokensOverride?;
|
|
34
|
+
private isStarted;
|
|
35
|
+
private isKilled;
|
|
36
|
+
private activityCounter;
|
|
37
|
+
/** Map of tool_use_id → open child span. Tool spans are opened when we
|
|
38
|
+
* see a `tool_use` block in the assistant stream and closed when the
|
|
39
|
+
* matching `tool_result` arrives in a user-role message. Surviving
|
|
40
|
+
* entries on adapter end are closed with status=UNSET so they're still
|
|
41
|
+
* visible — adapters that hang up before tool_result arrives are not
|
|
42
|
+
* uncommon. */
|
|
43
|
+
private readonly openToolSpans;
|
|
44
|
+
constructor(request: AdapterRequest, adapter: ModelAdapter, providerName: ProviderName);
|
|
45
|
+
start(): void;
|
|
46
|
+
kill(_signal?: string): void;
|
|
47
|
+
setMaxOutputTokens(n: number): void;
|
|
48
|
+
get pid(): number | undefined;
|
|
49
|
+
get killed(): boolean;
|
|
50
|
+
get capabilities(): AdapterCapabilities;
|
|
51
|
+
/** Heuristic estimator (chars / 4). Concrete adapters with exact token
|
|
52
|
+
* counters can override; bridges use the heuristic. */
|
|
53
|
+
countTokens(text: string): number;
|
|
54
|
+
/** Insert a cache breakpoint marker into `prompt` at byte `position`.
|
|
55
|
+
* No-op for `auto` / `none` providers. */
|
|
56
|
+
markCacheBreakpoint(prompt: string, position: number): string;
|
|
57
|
+
/** Provider name surfaced for diagnostics. */
|
|
58
|
+
get provider(): ProviderName;
|
|
59
|
+
private buildAdapterConfig;
|
|
60
|
+
private runAdapter;
|
|
61
|
+
/**
|
|
62
|
+
* Build a Writable that parses Anvil Stream Format NDJSON line-by-line
|
|
63
|
+
* and re-emits AgentAdapter events. The result frame is ignored here —
|
|
64
|
+
* the bridge surfaces it from the resolved ModelAdapterResult instead.
|
|
65
|
+
*/
|
|
66
|
+
private createStreamSink;
|
|
67
|
+
private nextActivityId;
|
|
68
|
+
private handleStreamLine;
|
|
69
|
+
private handleAssistantBlocks;
|
|
70
|
+
private handleUserBlocks;
|
|
71
|
+
/** Open a child span for a tool_use block. The span lives in the active
|
|
72
|
+
* `gen_ai.invoke` span's context — that's set up by instrumentModelAdapter
|
|
73
|
+
* before adapter.run() starts streaming. We rely on Node's
|
|
74
|
+
* AsyncLocalStorage to propagate context through the Writable callback. */
|
|
75
|
+
private openToolSpan;
|
|
76
|
+
/** Close a tool span when its matching tool_result arrives. */
|
|
77
|
+
private closeToolSpan;
|
|
78
|
+
/** Close any tool spans that never received a tool_result. Called from
|
|
79
|
+
* runAdapter's finally block so abandoned spans don't linger. */
|
|
80
|
+
private closeOpenToolSpans;
|
|
81
|
+
}
|
|
82
|
+
/** Test/internal — reset the registry cache so the next lookup re-reads. */
|
|
83
|
+
export declare function _resetBridgeRegistryCache(): void;
|
|
84
|
+
//# sourceMappingURL=language-model-bridge.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"language-model-bridge.d.ts","sourceRoot":"","sources":["../../../src/agent/session/language-model-bridge.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAG3C,OAAO,KAAK,EACV,YAAY,EAIZ,YAAY,EAEb,MAAM,gBAAgB,CAAC;AACxB,OAAO,KAAK,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AACjE,OAAO,KAAK,EACV,mBAAmB,EAEpB,MAAM,2BAA2B,CAAC;AAuEnC,qBAAa,mBAAoB,SAAQ,YAAa,YAAW,YAAY;IAC3E,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAiB;IACzC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAe;IACvC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAe;IAC5C,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAsB;IACxD,OAAO,CAAC,uBAAuB,CAAC,CAAS;IACzC,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,eAAe,CAAK;IAC5B;;;;;oBAKgB;IAChB,OAAO,CAAC,QAAQ,CAAC,aAAa,CAA2B;gBAGvD,OAAO,EAAE,cAAc,EACvB,OAAO,EAAE,YAAY,EACrB,YAAY,EAAE,YAAY;IAc5B,KAAK,IAAI,IAAI;IAMb,IAAI,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI;IAS5B,kBAAkB,CAAC,CAAC,EAAE,MAAM,GAAG,IAAI;IAInC,IAAI,GAAG,IAAI,MAAM,GAAG,SAAS,CAE5B;IAED,IAAI,MAAM,IAAI,OAAO,CAEpB;IAID,IAAI,YAAY,IAAI,mBAAmB,CAEtC;IAED;4DACwD;IACxD,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IAKjC;+CAC2C;IAC3C,mBAAmB,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM;IAM7D,8CAA8C;IAC9C,IAAI,QAAQ,IAAI,YAAY,CAE3B;IAID,OAAO,CAAC,kBAAkB;YAuCZ,UAAU;IA8CxB;;;;OAIG;IACH,OAAO,CAAC,gBAAgB;IAoBxB,OAAO,CAAC,cAAc;IAItB,OAAO,CAAC,gBAAgB;IAuBxB,OAAO,CAAC,qBAAqB;IAmC7B,OAAO,CAAC,gBAAgB;IAgCxB;;;gFAG4E;IAC5E,OAAO,CAAC,YAAY;IAiBpB,+DAA+D;IAC/D,OAAO,CAAC,aAAa;IAYrB;sEACkE;IAClE,OAAO,CAAC,kBAAkB;CAO3B;AAgDD,4EAA4E;AAC5E,wBAAgB,yBAAyB,IAAI,IAAI,CAEhD"}
|
|
@@ -0,0 +1,454 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `LanguageModelBridge` — adapts an `@esankhan3/anvil-agent-core` `ModelAdapter` (or a
|
|
3
|
+
* future `LanguageModel`) to the `AgentAdapter` interface that
|
|
4
|
+
* `AgentProcess` consumes (5-event EventEmitter: `content` / `activity` /
|
|
5
|
+
* `result` / `error-output` / `exit`).
|
|
6
|
+
*
|
|
7
|
+
* Two surfaces in one class:
|
|
8
|
+
* - `AgentAdapter` (lifecycle): `start()` / `kill()` + the 5 events.
|
|
9
|
+
* This is what `AgentProcess` drives.
|
|
10
|
+
* - Prompt-construction helpers: `capabilities` (with `promptCache`
|
|
11
|
+
* stance), `markCacheBreakpoint(prompt, position)`, `countTokens(text)`.
|
|
12
|
+
* These let prompt-envelope code make caching decisions before the
|
|
13
|
+
* spawn — out of band of the lifecycle.
|
|
14
|
+
*
|
|
15
|
+
* Behavior:
|
|
16
|
+
* - `start()` kicks `ModelAdapter.run()` against an in-process Writable
|
|
17
|
+
* that parses Anvil Stream Format NDJSON and re-emits dashboard events.
|
|
18
|
+
* - The wire-format `result` frame is ignored — the bridge waits for
|
|
19
|
+
* `run()` to resolve and emits `result` from the richer
|
|
20
|
+
* `ModelAdapterResult` (which includes `stopReason` + cache token
|
|
21
|
+
* counts that the wire format doesn't carry).
|
|
22
|
+
* - Errors from `run()` surface as `error-output` + `exit(1)`.
|
|
23
|
+
*/
|
|
24
|
+
import { EventEmitter } from 'node:events';
|
|
25
|
+
import { Writable } from 'node:stream';
|
|
26
|
+
import { SpanStatusCode } from '@opentelemetry/api';
|
|
27
|
+
import { instrumentModelAdapter } from '../../telemetry/instrument.js';
|
|
28
|
+
import { getTracer } from '../../telemetry/tracer.js';
|
|
29
|
+
import { BuiltinToolExecutor } from '../../tools/index.js';
|
|
30
|
+
import { loadModelRegistry } from '../../router/model-registry.js';
|
|
31
|
+
// ── Capability mapping ───────────────────────────────────────────────────
|
|
32
|
+
const STRUCTURED_OUTPUT_DEFAULT = 'best-effort';
|
|
33
|
+
function mapCapabilities(caps) {
|
|
34
|
+
const promptCache = caps.cache ?? (caps.promptCaching ? 'auto' : 'none');
|
|
35
|
+
return {
|
|
36
|
+
promptCache,
|
|
37
|
+
countTokens: 'heuristic',
|
|
38
|
+
structuredOutput: caps.structuredOutput ?? STRUCTURED_OUTPUT_DEFAULT,
|
|
39
|
+
cacheTtlSeconds: caps.cacheTtlSeconds,
|
|
40
|
+
maxOutputTokens: caps.maxOutputTokens === true,
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
// ── Tool-use summary ─────────────────────────────────────────────────────
|
|
44
|
+
function summarizeToolUse(name, input) {
|
|
45
|
+
// Two casings live in this stream simultaneously: Claude CLI ships
|
|
46
|
+
// PascalCase tool names (Read/Edit/Write/Bash/Grep/Glob), and the
|
|
47
|
+
// BuiltinToolExecutor (used by Ollama / OpenCode / OpenRouter
|
|
48
|
+
// agentic adapters) emits snake_case (read_file/edit/write_file/
|
|
49
|
+
// bash/grep/glob/list). Field shapes also differ on the path arg —
|
|
50
|
+
// Claude uses `file_path`, Builtin uses `path`. Normalize so the
|
|
51
|
+
// dashboard activity log shows the same human label regardless.
|
|
52
|
+
const path = (input.file_path ?? input.path ?? 'file');
|
|
53
|
+
switch (name) {
|
|
54
|
+
case 'Read':
|
|
55
|
+
case 'read_file':
|
|
56
|
+
return `Reading ${path}`;
|
|
57
|
+
case 'Edit':
|
|
58
|
+
case 'edit':
|
|
59
|
+
return `Editing ${path}`;
|
|
60
|
+
case 'Write':
|
|
61
|
+
case 'write_file':
|
|
62
|
+
return `Writing ${path}`;
|
|
63
|
+
case 'Bash':
|
|
64
|
+
case 'bash':
|
|
65
|
+
return `Running: ${String(input.command ?? input.description ?? '').slice(0, 120)}`;
|
|
66
|
+
case 'Grep':
|
|
67
|
+
case 'grep':
|
|
68
|
+
return `Searching for "${String(input.pattern ?? '').slice(0, 60)}"${input.path ? ` in ${input.path}` : ''}`;
|
|
69
|
+
case 'Glob':
|
|
70
|
+
case 'glob':
|
|
71
|
+
return `Finding files: ${input.pattern ?? ''}`;
|
|
72
|
+
case 'list':
|
|
73
|
+
return `Listing ${input.path ?? '.'}`;
|
|
74
|
+
case 'Agent':
|
|
75
|
+
return `Spawning sub-agent: ${input.description ?? ''}`;
|
|
76
|
+
case 'Skill':
|
|
77
|
+
return `Using skill: ${input.skill ?? ''}${input.args ? ` ${input.args}` : ''}`;
|
|
78
|
+
case 'ToolSearch':
|
|
79
|
+
return `Searching tools: ${input.query ?? ''}`;
|
|
80
|
+
case 'TaskCreate':
|
|
81
|
+
return `Creating task: ${input.description ?? ''}`;
|
|
82
|
+
case 'TaskUpdate':
|
|
83
|
+
return `Updating task: ${input.id ?? ''} → ${input.status ?? ''}`;
|
|
84
|
+
default:
|
|
85
|
+
return `Using ${name}`;
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
// ── Bridge ───────────────────────────────────────────────────────────────
|
|
89
|
+
export class LanguageModelBridge extends EventEmitter {
|
|
90
|
+
request;
|
|
91
|
+
adapter;
|
|
92
|
+
providerName;
|
|
93
|
+
capabilitiesCache;
|
|
94
|
+
maxOutputTokensOverride;
|
|
95
|
+
isStarted = false;
|
|
96
|
+
isKilled = false;
|
|
97
|
+
activityCounter = 0;
|
|
98
|
+
/** Map of tool_use_id → open child span. Tool spans are opened when we
|
|
99
|
+
* see a `tool_use` block in the assistant stream and closed when the
|
|
100
|
+
* matching `tool_result` arrives in a user-role message. Surviving
|
|
101
|
+
* entries on adapter end are closed with status=UNSET so they're still
|
|
102
|
+
* visible — adapters that hang up before tool_result arrives are not
|
|
103
|
+
* uncommon. */
|
|
104
|
+
openToolSpans = new Map();
|
|
105
|
+
constructor(request, adapter, providerName) {
|
|
106
|
+
super();
|
|
107
|
+
this.request = request;
|
|
108
|
+
// Wrap the adapter so every `run()` emits an OTel `gen_ai.invoke` span.
|
|
109
|
+
// No-op when telemetry is disabled (loadTelemetryConfig returns the
|
|
110
|
+
// noop exporter and OTel's no-op tracer skips work).
|
|
111
|
+
this.adapter = instrumentModelAdapter(adapter);
|
|
112
|
+
this.providerName = providerName;
|
|
113
|
+
this.capabilitiesCache = mapCapabilities(adapter.capabilities);
|
|
114
|
+
}
|
|
115
|
+
// ── AgentAdapter surface ─────────────────────────────────────────────
|
|
116
|
+
start() {
|
|
117
|
+
if (this.isStarted)
|
|
118
|
+
return;
|
|
119
|
+
this.isStarted = true;
|
|
120
|
+
void this.runAdapter();
|
|
121
|
+
}
|
|
122
|
+
kill(_signal) {
|
|
123
|
+
this.isKilled = true;
|
|
124
|
+
try {
|
|
125
|
+
this.adapter.kill?.();
|
|
126
|
+
}
|
|
127
|
+
catch {
|
|
128
|
+
// best-effort
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
setMaxOutputTokens(n) {
|
|
132
|
+
if (n > 0)
|
|
133
|
+
this.maxOutputTokensOverride = n;
|
|
134
|
+
}
|
|
135
|
+
get pid() {
|
|
136
|
+
return undefined;
|
|
137
|
+
}
|
|
138
|
+
get killed() {
|
|
139
|
+
return this.isKilled;
|
|
140
|
+
}
|
|
141
|
+
// ── Prompt-construction surface ───────────────────────────────────────
|
|
142
|
+
get capabilities() {
|
|
143
|
+
return this.capabilitiesCache;
|
|
144
|
+
}
|
|
145
|
+
/** Heuristic estimator (chars / 4). Concrete adapters with exact token
|
|
146
|
+
* counters can override; bridges use the heuristic. */
|
|
147
|
+
countTokens(text) {
|
|
148
|
+
if (!text)
|
|
149
|
+
return 0;
|
|
150
|
+
return Math.ceil(text.length / 4);
|
|
151
|
+
}
|
|
152
|
+
/** Insert a cache breakpoint marker into `prompt` at byte `position`.
|
|
153
|
+
* No-op for `auto` / `none` providers. */
|
|
154
|
+
markCacheBreakpoint(prompt, position) {
|
|
155
|
+
if (this.capabilitiesCache.promptCache !== 'explicit')
|
|
156
|
+
return prompt;
|
|
157
|
+
const safe = Math.max(0, Math.min(prompt.length, position));
|
|
158
|
+
return prompt.slice(0, safe) + '\n<!-- anvil:cache-breakpoint -->\n' + prompt.slice(safe);
|
|
159
|
+
}
|
|
160
|
+
/** Provider name surfaced for diagnostics. */
|
|
161
|
+
get provider() {
|
|
162
|
+
return this.providerName;
|
|
163
|
+
}
|
|
164
|
+
// ── Internals ─────────────────────────────────────────────────────────
|
|
165
|
+
buildAdapterConfig() {
|
|
166
|
+
const config = {
|
|
167
|
+
userPrompt: this.request.prompt,
|
|
168
|
+
projectPrompt: this.request.projectPrompt,
|
|
169
|
+
model: this.request.model,
|
|
170
|
+
workingDir: this.request.cwd,
|
|
171
|
+
stage: this.request.stage ?? '',
|
|
172
|
+
persona: this.request.persona ?? '',
|
|
173
|
+
sessionId: this.request.sessionId,
|
|
174
|
+
resume: this.request.resume,
|
|
175
|
+
permissionMode: this.request.permissionMode,
|
|
176
|
+
allowedTools: this.request.allowedTools,
|
|
177
|
+
disallowedTools: this.request.disallowedTools,
|
|
178
|
+
maxOutputTokens: this.maxOutputTokensOverride ?? this.request.maxOutputTokens,
|
|
179
|
+
};
|
|
180
|
+
// Non-Claude providers need a tool executor + bounded context to drive
|
|
181
|
+
// an agentic loop. Claude CLI ships its own tool runtime; passing one
|
|
182
|
+
// here would be ignored. Keep the construction lazy so this method
|
|
183
|
+
// stays cheap when called by adapters that don't loop.
|
|
184
|
+
if (this.providerName !== 'claude') {
|
|
185
|
+
const executor = buildBuiltinExecutor(this.request);
|
|
186
|
+
if (executor)
|
|
187
|
+
config.toolExecutor = executor;
|
|
188
|
+
const ctx = lookupContextWindow(this.request.model);
|
|
189
|
+
if (ctx !== undefined)
|
|
190
|
+
config.contextWindow = ctx;
|
|
191
|
+
}
|
|
192
|
+
else if (this.request.claudeMcpConfigPath) {
|
|
193
|
+
// Claude path: forward the resolved mcp.json so claude-cli reads
|
|
194
|
+
// its MCP servers via --mcp-config. Populated by
|
|
195
|
+
// defaultAdapterFactory when workspaceDir is set.
|
|
196
|
+
config.mcpConfigPath = this.request.claudeMcpConfigPath;
|
|
197
|
+
}
|
|
198
|
+
if (this.request.exclusiveSlot) {
|
|
199
|
+
config.exclusiveSlot = true;
|
|
200
|
+
}
|
|
201
|
+
return config;
|
|
202
|
+
}
|
|
203
|
+
async runAdapter() {
|
|
204
|
+
const sink = this.createStreamSink();
|
|
205
|
+
let result = null;
|
|
206
|
+
let runError = null;
|
|
207
|
+
try {
|
|
208
|
+
result = await this.adapter.run(this.buildAdapterConfig(), sink);
|
|
209
|
+
}
|
|
210
|
+
catch (err) {
|
|
211
|
+
runError = err instanceof Error ? err : new Error(String(err));
|
|
212
|
+
}
|
|
213
|
+
finally {
|
|
214
|
+
// Close any tool spans whose tool_result never arrived (e.g. adapter
|
|
215
|
+
// crashed mid-call). Must happen BEFORE the adapter run span ends
|
|
216
|
+
// so OTel captures them as siblings, not orphans.
|
|
217
|
+
this.closeOpenToolSpans();
|
|
218
|
+
}
|
|
219
|
+
sink.end();
|
|
220
|
+
if (runError) {
|
|
221
|
+
if (!this.isKilled) {
|
|
222
|
+
this.emit('error-output', runError.message);
|
|
223
|
+
}
|
|
224
|
+
this.emit('exit', 1);
|
|
225
|
+
return;
|
|
226
|
+
}
|
|
227
|
+
if (result) {
|
|
228
|
+
const cost = {
|
|
229
|
+
totalUsd: result.costUsd ?? 0,
|
|
230
|
+
inputTokens: result.inputTokens ?? 0,
|
|
231
|
+
outputTokens: result.outputTokens ?? 0,
|
|
232
|
+
cacheReadTokens: result.cacheReadTokens ?? 0,
|
|
233
|
+
cacheWriteTokens: result.cacheWriteTokens ?? 0,
|
|
234
|
+
durationMs: result.durationMs ?? 0,
|
|
235
|
+
stopReason: result.stopReason,
|
|
236
|
+
};
|
|
237
|
+
this.emit('result', {
|
|
238
|
+
result: result.output ?? '',
|
|
239
|
+
cost,
|
|
240
|
+
sessionId: result.sessionId ?? this.request.sessionId,
|
|
241
|
+
});
|
|
242
|
+
}
|
|
243
|
+
this.emit('exit', this.isKilled ? null : 0);
|
|
244
|
+
}
|
|
245
|
+
/**
|
|
246
|
+
* Build a Writable that parses Anvil Stream Format NDJSON line-by-line
|
|
247
|
+
* and re-emits AgentAdapter events. The result frame is ignored here —
|
|
248
|
+
* the bridge surfaces it from the resolved ModelAdapterResult instead.
|
|
249
|
+
*/
|
|
250
|
+
createStreamSink() {
|
|
251
|
+
let buffer = '';
|
|
252
|
+
return new Writable({
|
|
253
|
+
write: (chunk, _enc, cb) => {
|
|
254
|
+
buffer += chunk.toString('utf-8');
|
|
255
|
+
const lines = buffer.split('\n');
|
|
256
|
+
buffer = lines.pop() ?? '';
|
|
257
|
+
for (const line of lines)
|
|
258
|
+
this.handleStreamLine(line);
|
|
259
|
+
cb();
|
|
260
|
+
},
|
|
261
|
+
final: (cb) => {
|
|
262
|
+
if (buffer) {
|
|
263
|
+
this.handleStreamLine(buffer);
|
|
264
|
+
buffer = '';
|
|
265
|
+
}
|
|
266
|
+
cb();
|
|
267
|
+
},
|
|
268
|
+
});
|
|
269
|
+
}
|
|
270
|
+
nextActivityId() {
|
|
271
|
+
return `act-${this.request.sessionId.slice(0, 8)}-${++this.activityCounter}`;
|
|
272
|
+
}
|
|
273
|
+
handleStreamLine(line) {
|
|
274
|
+
const trimmed = line.trim();
|
|
275
|
+
if (!trimmed)
|
|
276
|
+
return;
|
|
277
|
+
let parsed;
|
|
278
|
+
try {
|
|
279
|
+
parsed = JSON.parse(trimmed);
|
|
280
|
+
}
|
|
281
|
+
catch {
|
|
282
|
+
return;
|
|
283
|
+
}
|
|
284
|
+
// Tool-use blocks come in `assistant` messages. The corresponding
|
|
285
|
+
// `tool_result` blocks come back in `user` messages. We pair them up
|
|
286
|
+
// by `tool_use_id` to materialise child spans.
|
|
287
|
+
if (parsed?.type === 'assistant' && Array.isArray(parsed.message?.content)) {
|
|
288
|
+
this.handleAssistantBlocks(parsed.message.content);
|
|
289
|
+
return;
|
|
290
|
+
}
|
|
291
|
+
if (parsed?.type === 'user' && Array.isArray(parsed.message?.content)) {
|
|
292
|
+
this.handleUserBlocks(parsed.message.content);
|
|
293
|
+
return;
|
|
294
|
+
}
|
|
295
|
+
}
|
|
296
|
+
handleAssistantBlocks(blocks) {
|
|
297
|
+
for (const block of blocks) {
|
|
298
|
+
if (block.type === 'text' && typeof block.text === 'string') {
|
|
299
|
+
this.emit('content', block.text);
|
|
300
|
+
this.emit('activity', {
|
|
301
|
+
id: this.nextActivityId(),
|
|
302
|
+
kind: 'text',
|
|
303
|
+
summary: block.text.slice(0, 200),
|
|
304
|
+
content: block.text,
|
|
305
|
+
timestamp: Date.now(),
|
|
306
|
+
});
|
|
307
|
+
}
|
|
308
|
+
else if (block.type === 'tool_use' && typeof block.name === 'string') {
|
|
309
|
+
const input = block.input ?? {};
|
|
310
|
+
const toolUseId = typeof block.id === 'string' ? block.id : undefined;
|
|
311
|
+
this.emit('activity', {
|
|
312
|
+
id: this.nextActivityId(),
|
|
313
|
+
kind: 'tool_use',
|
|
314
|
+
tool: block.name,
|
|
315
|
+
summary: summarizeToolUse(block.name, input),
|
|
316
|
+
content: JSON.stringify(input, null, 2),
|
|
317
|
+
timestamp: Date.now(),
|
|
318
|
+
});
|
|
319
|
+
this.openToolSpan(block.name, input, toolUseId);
|
|
320
|
+
}
|
|
321
|
+
else if (block.type === 'thinking' && typeof block.text === 'string') {
|
|
322
|
+
this.emit('activity', {
|
|
323
|
+
id: this.nextActivityId(),
|
|
324
|
+
kind: 'thinking',
|
|
325
|
+
summary: block.text.slice(0, 200),
|
|
326
|
+
content: block.text,
|
|
327
|
+
timestamp: Date.now(),
|
|
328
|
+
});
|
|
329
|
+
}
|
|
330
|
+
}
|
|
331
|
+
}
|
|
332
|
+
handleUserBlocks(blocks) {
|
|
333
|
+
for (const block of blocks) {
|
|
334
|
+
if (block.type !== 'tool_result')
|
|
335
|
+
continue;
|
|
336
|
+
const toolUseId = typeof block.tool_use_id === 'string' ? block.tool_use_id : undefined;
|
|
337
|
+
const isError = block.is_error === true;
|
|
338
|
+
const rawContent = typeof block.content === 'string' ? block.content : '';
|
|
339
|
+
// Emit an activity so consumers (dashboard PR scanner, run history,
|
|
340
|
+
// audit log) see what the tool returned. Without this, `gh pr
|
|
341
|
+
// create` invoked via bash prints the PR URL into the tool_result
|
|
342
|
+
// body — but the URL never reaches `agent-activity`, so the
|
|
343
|
+
// dashboard's `extractPRUrls(content)` scanner can't find it and
|
|
344
|
+
// PRs never surface in stats. Cap content at 4KB so a stray
|
|
345
|
+
// `bash: cat huge_file` doesn't blow the activity stream.
|
|
346
|
+
if (rawContent) {
|
|
347
|
+
// `tool_result` kind so the dashboard renders it collapsed/hidden
|
|
348
|
+
// by default — without this, the activity panel dumps the full
|
|
349
|
+
// file body (line-by-line) for every Read / Bash / Grep call.
|
|
350
|
+
// PR URL extraction scans every activity regardless of kind, so
|
|
351
|
+
// `gh pr create` URLs still surface.
|
|
352
|
+
this.emit('activity', {
|
|
353
|
+
id: this.nextActivityId(),
|
|
354
|
+
kind: 'tool_result',
|
|
355
|
+
summary: rawContent.slice(0, 200),
|
|
356
|
+
content: rawContent.slice(0, 4096),
|
|
357
|
+
timestamp: Date.now(),
|
|
358
|
+
});
|
|
359
|
+
}
|
|
360
|
+
if (!toolUseId)
|
|
361
|
+
continue;
|
|
362
|
+
this.closeToolSpan(toolUseId, { isError });
|
|
363
|
+
}
|
|
364
|
+
}
|
|
365
|
+
/** Open a child span for a tool_use block. The span lives in the active
|
|
366
|
+
* `gen_ai.invoke` span's context — that's set up by instrumentModelAdapter
|
|
367
|
+
* before adapter.run() starts streaming. We rely on Node's
|
|
368
|
+
* AsyncLocalStorage to propagate context through the Writable callback. */
|
|
369
|
+
openToolSpan(name, input, toolUseId) {
|
|
370
|
+
if (!toolUseId)
|
|
371
|
+
return; // Without an id we can't pair the result; skip.
|
|
372
|
+
const tracer = getTracer();
|
|
373
|
+
const span = tracer.startSpan(`gen_ai.tool.${name}`, {
|
|
374
|
+
attributes: {
|
|
375
|
+
'gen_ai.tool.name': name,
|
|
376
|
+
'gen_ai.tool.call.id': toolUseId,
|
|
377
|
+
'gen_ai.tool.input.summary': summarizeToolUse(name, input).slice(0, 256),
|
|
378
|
+
},
|
|
379
|
+
});
|
|
380
|
+
this.openToolSpans.set(toolUseId, span);
|
|
381
|
+
}
|
|
382
|
+
/** Close a tool span when its matching tool_result arrives. */
|
|
383
|
+
closeToolSpan(toolUseId, result) {
|
|
384
|
+
const span = this.openToolSpans.get(toolUseId);
|
|
385
|
+
if (!span)
|
|
386
|
+
return;
|
|
387
|
+
this.openToolSpans.delete(toolUseId);
|
|
388
|
+
if (result.isError) {
|
|
389
|
+
span.setStatus({ code: SpanStatusCode.ERROR });
|
|
390
|
+
}
|
|
391
|
+
else {
|
|
392
|
+
span.setStatus({ code: SpanStatusCode.OK });
|
|
393
|
+
}
|
|
394
|
+
span.end();
|
|
395
|
+
}
|
|
396
|
+
/** Close any tool spans that never received a tool_result. Called from
|
|
397
|
+
* runAdapter's finally block so abandoned spans don't linger. */
|
|
398
|
+
closeOpenToolSpans() {
|
|
399
|
+
for (const span of this.openToolSpans.values()) {
|
|
400
|
+
span.setAttribute('gen_ai.tool.abandoned', true);
|
|
401
|
+
span.end();
|
|
402
|
+
}
|
|
403
|
+
this.openToolSpans.clear();
|
|
404
|
+
}
|
|
405
|
+
}
|
|
406
|
+
// ───────────────────────────────────────────────────────────────────────
|
|
407
|
+
// Helpers — tool executor + context window lookup for non-Claude paths
|
|
408
|
+
// ───────────────────────────────────────────────────────────────────────
|
|
409
|
+
/**
|
|
410
|
+
* Build a `BuiltinToolExecutor` for an agentic non-Claude run. The
|
|
411
|
+
* `request.allowedTools` field carries the per-stage permission set
|
|
412
|
+
* the dashboard pipeline-runner populated upstream. When it's missing
|
|
413
|
+
* (legacy spawn sites that haven't been upgraded yet), we conservatively
|
|
414
|
+
* fall back to read-only tools so the model can still work but never
|
|
415
|
+
* mutates the workspace.
|
|
416
|
+
*/
|
|
417
|
+
function buildBuiltinExecutor(req) {
|
|
418
|
+
if (!req.cwd)
|
|
419
|
+
return undefined;
|
|
420
|
+
const allowed = req.allowedTools && req.allowedTools.length > 0
|
|
421
|
+
? req.allowedTools
|
|
422
|
+
: ['read_file', 'grep', 'glob', 'list'];
|
|
423
|
+
return new BuiltinToolExecutor({ allowedTools: allowed });
|
|
424
|
+
}
|
|
425
|
+
/**
|
|
426
|
+
* Look up the configured `context_window` for a model in the registry.
|
|
427
|
+
* Returns undefined when the model isn't in the registry or has no
|
|
428
|
+
* context_window set — the adapter then falls back to its own default.
|
|
429
|
+
*
|
|
430
|
+
* Cached lazily; the registry file rarely changes during a run.
|
|
431
|
+
*/
|
|
432
|
+
let _registryCache = null;
|
|
433
|
+
function lookupContextWindow(modelId) {
|
|
434
|
+
if (!_registryCache) {
|
|
435
|
+
_registryCache = new Map();
|
|
436
|
+
try {
|
|
437
|
+
const reg = loadModelRegistry();
|
|
438
|
+
for (const m of reg.models) {
|
|
439
|
+
if (m.context_window !== undefined) {
|
|
440
|
+
_registryCache.set(m.id, m.context_window);
|
|
441
|
+
}
|
|
442
|
+
}
|
|
443
|
+
}
|
|
444
|
+
catch {
|
|
445
|
+
// Registry missing/invalid → no context-window data; adapters use defaults.
|
|
446
|
+
}
|
|
447
|
+
}
|
|
448
|
+
return _registryCache.get(modelId);
|
|
449
|
+
}
|
|
450
|
+
/** Test/internal — reset the registry cache so the next lookup re-reads. */
|
|
451
|
+
export function _resetBridgeRegistryCache() {
|
|
452
|
+
_registryCache = null;
|
|
453
|
+
}
|
|
454
|
+
//# sourceMappingURL=language-model-bridge.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"language-model-bridge.js","sourceRoot":"","sources":["../../../src/agent/session/language-model-bridge.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Type-only surface lifted from the dashboard's pre-Phase-4 `BaseAdapter`
|
|
3
|
+
* abstract class. Used by `LanguageModelBridge` to expose
|
|
4
|
+
* `capabilities` / `markCacheBreakpoint` / `countTokens` to prompt-construction
|
|
5
|
+
* code (dashboard's `prompt-envelope.ts`, `token-util.ts`).
|
|
6
|
+
*
|
|
7
|
+
* The abstract `BaseAdapter` class is gone — `LanguageModelBridge` is the
|
|
8
|
+
* single concrete implementation. These types describe its public surface.
|
|
9
|
+
*/
|
|
10
|
+
/**
|
|
11
|
+
* Provider-agnostic capability descriptor used by prompt-construction
|
|
12
|
+
* machinery to make caching/output-ceiling/structured-output decisions.
|
|
13
|
+
*
|
|
14
|
+
* Mapped from `agent-core`'s `ProviderCapabilities` via the bridge's
|
|
15
|
+
* internal `mapCapabilities()`.
|
|
16
|
+
*/
|
|
17
|
+
export interface AdapterCapabilities {
|
|
18
|
+
/**
|
|
19
|
+
* - 'auto' — provider caches stable prefixes silently (e.g., OpenAI ≥1024 tok).
|
|
20
|
+
* - 'explicit' — caller must place markers (e.g., Anthropic cache_control).
|
|
21
|
+
* - 'none' — no caching benefit; markers are no-ops.
|
|
22
|
+
*/
|
|
23
|
+
promptCache: 'auto' | 'explicit' | 'none';
|
|
24
|
+
/** Whether countTokens uses the model's exact tokenizer or an estimator. */
|
|
25
|
+
countTokens: 'exact' | 'heuristic';
|
|
26
|
+
/** Structured-output support level. */
|
|
27
|
+
structuredOutput: 'strict' | 'tool-shim' | 'best-effort' | 'none';
|
|
28
|
+
/** Cache TTL in seconds when promptCache !== 'none'. Informational only. */
|
|
29
|
+
cacheTtlSeconds?: number;
|
|
30
|
+
/** Adapter knows how to enforce a max-output ceiling. */
|
|
31
|
+
maxOutputTokens: boolean;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Cost block emitted with the bridge's `result` event. Identical fields to
|
|
35
|
+
* the agent-core `CostInfo` type (which lives in session/types.ts) — kept
|
|
36
|
+
* separate here because the bridge's `result` event payload uses this name
|
|
37
|
+
* historically.
|
|
38
|
+
*/
|
|
39
|
+
export interface AdapterCostInfo {
|
|
40
|
+
totalUsd: number;
|
|
41
|
+
inputTokens: number;
|
|
42
|
+
outputTokens: number;
|
|
43
|
+
cacheReadTokens: number;
|
|
44
|
+
cacheWriteTokens: number;
|
|
45
|
+
durationMs: number;
|
|
46
|
+
/**
|
|
47
|
+
* Provider's stop reason. Common values:
|
|
48
|
+
* - 'end_turn' / 'stop' — natural completion
|
|
49
|
+
* - 'max_tokens' / 'length' — output ceiling hit (TRUNCATION)
|
|
50
|
+
* - 'tool_use' — agent paused for a tool call
|
|
51
|
+
*/
|
|
52
|
+
stopReason?: string;
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Structural type describing what `prompt-envelope` and `token-util` need
|
|
56
|
+
* from an adapter. The bridge satisfies it; tests can also stub it.
|
|
57
|
+
*/
|
|
58
|
+
export interface PromptAwareAdapter {
|
|
59
|
+
readonly capabilities: AdapterCapabilities;
|
|
60
|
+
countTokens(text: string): number;
|
|
61
|
+
markCacheBreakpoint(prompt: string, position: number): string;
|
|
62
|
+
}
|
|
63
|
+
//# sourceMappingURL=legacy-adapter-types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"legacy-adapter-types.d.ts","sourceRoot":"","sources":["../../../src/agent/session/legacy-adapter-types.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH;;;;;;GAMG;AACH,MAAM,WAAW,mBAAmB;IAClC;;;;OAIG;IACH,WAAW,EAAE,MAAM,GAAG,UAAU,GAAG,MAAM,CAAC;IAC1C,4EAA4E;IAC5E,WAAW,EAAE,OAAO,GAAG,WAAW,CAAC;IACnC,uCAAuC;IACvC,gBAAgB,EAAE,QAAQ,GAAG,WAAW,GAAG,aAAa,GAAG,MAAM,CAAC;IAClE,4EAA4E;IAC5E,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,yDAAyD;IACzD,eAAe,EAAE,OAAO,CAAC;CAC1B;AAED;;;;;GAKG;AACH,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,eAAe,EAAE,MAAM,CAAC;IACxB,gBAAgB,EAAE,MAAM,CAAC;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB;;;;;OAKG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;;GAGG;AACH,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,YAAY,EAAE,mBAAmB,CAAC;IAC3C,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC;IAClC,mBAAmB,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAAC;CAC/D"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Type-only surface lifted from the dashboard's pre-Phase-4 `BaseAdapter`
|
|
3
|
+
* abstract class. Used by `LanguageModelBridge` to expose
|
|
4
|
+
* `capabilities` / `markCacheBreakpoint` / `countTokens` to prompt-construction
|
|
5
|
+
* code (dashboard's `prompt-envelope.ts`, `token-util.ts`).
|
|
6
|
+
*
|
|
7
|
+
* The abstract `BaseAdapter` class is gone — `LanguageModelBridge` is the
|
|
8
|
+
* single concrete implementation. These types describe its public surface.
|
|
9
|
+
*/
|
|
10
|
+
export {};
|
|
11
|
+
//# sourceMappingURL=legacy-adapter-types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"legacy-adapter-types.js","sourceRoot":"","sources":["../../../src/agent/session/legacy-adapter-types.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG"}
|