@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
package/dist/types.d.ts
ADDED
|
@@ -0,0 +1,249 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `@esankhan3/anvil-agent-core` — public type surface.
|
|
3
|
+
*
|
|
4
|
+
* Two interfaces live here, intentionally:
|
|
5
|
+
*
|
|
6
|
+
* 1. `LanguageModel` — the new, forward-looking shape. Vendor-agnostic
|
|
7
|
+
* streaming/single-shot interface that future code (Phase 5+ of the
|
|
8
|
+
* agent-core extract) wires against. Yields typed events; analytical
|
|
9
|
+
* callers drain the stream via the default `invoke()` impl.
|
|
10
|
+
*
|
|
11
|
+
* 2. `ModelAdapter` — the legacy interface inherited from cli/src/providers.
|
|
12
|
+
* Kept verbatim (same field names, same signatures) so the seven existing
|
|
13
|
+
* adapters keep compiling unchanged when they move into this package in
|
|
14
|
+
* Phase 3+4. New code should not import these — they are bridged into
|
|
15
|
+
* `LanguageModel` via `legacyAdapterToLanguageModel()` (Phase 3).
|
|
16
|
+
*
|
|
17
|
+
* `ProviderName` is shared between the two interfaces and uses the EXISTING
|
|
18
|
+
* values (`'claude' | 'openai' | …`) — see ADR D15. Renaming would cascade
|
|
19
|
+
* through every `ProviderRegistry.get()` site and the model-router dispatcher.
|
|
20
|
+
*/
|
|
21
|
+
export type ProviderName = 'claude' | 'openai' | 'gemini' | 'openrouter' | 'ollama' | 'gemini-cli' | 'adk' | 'opencode';
|
|
22
|
+
export type ProviderTier = 'agentic' | 'function-calling' | 'text-only';
|
|
23
|
+
export interface ProviderCapabilities {
|
|
24
|
+
tier: ProviderTier;
|
|
25
|
+
streaming: boolean;
|
|
26
|
+
toolUse: boolean;
|
|
27
|
+
fileSystem: boolean;
|
|
28
|
+
shellExecution: boolean;
|
|
29
|
+
sessionResume: boolean;
|
|
30
|
+
/** Whether the provider supports prompt caching (e.g. Anthropic ephemeral cache). */
|
|
31
|
+
promptCaching?: boolean;
|
|
32
|
+
/**
|
|
33
|
+
* Prompt-cache marker semantics:
|
|
34
|
+
* - 'auto' — provider caches stable prefixes silently (e.g. OpenAI ≥1024 tok).
|
|
35
|
+
* - 'explicit' — caller must place markers (e.g. Anthropic cache_control).
|
|
36
|
+
* - 'none' — no caching benefit; markers are no-ops.
|
|
37
|
+
* `undefined` means the adapter has not declared a stance — treat as 'none'.
|
|
38
|
+
*/
|
|
39
|
+
cache?: 'auto' | 'explicit' | 'none';
|
|
40
|
+
/** Cache TTL in seconds when `cache !== 'none'`. Informational only. */
|
|
41
|
+
cacheTtlSeconds?: number;
|
|
42
|
+
/**
|
|
43
|
+
* Adapter honors `ModelAdapterConfig.maxOutputTokens` and forwards it to the
|
|
44
|
+
* provider. When false, callers may still pass it but the adapter ignores it.
|
|
45
|
+
*/
|
|
46
|
+
maxOutputTokens?: boolean;
|
|
47
|
+
/**
|
|
48
|
+
* Structured-output (JSON-schema-constrained generation) support level.
|
|
49
|
+
* - 'strict' — provider enforces the schema server-side.
|
|
50
|
+
* - 'tool-shim' — caller emulates via tool calls (e.g. Claude's tool-use trick).
|
|
51
|
+
* - 'best-effort' — prompt-only; provider doesn't constrain output.
|
|
52
|
+
* - 'none' — not supported.
|
|
53
|
+
*/
|
|
54
|
+
structuredOutput?: 'strict' | 'tool-shim' | 'best-effort' | 'none';
|
|
55
|
+
}
|
|
56
|
+
export interface LanguageModelMessage {
|
|
57
|
+
role: 'system' | 'user' | 'assistant' | 'tool';
|
|
58
|
+
content: string;
|
|
59
|
+
toolCallId?: string;
|
|
60
|
+
toolCalls?: ToolCall[];
|
|
61
|
+
}
|
|
62
|
+
export interface ToolCall {
|
|
63
|
+
id: string;
|
|
64
|
+
name: string;
|
|
65
|
+
arguments: Record<string, unknown>;
|
|
66
|
+
}
|
|
67
|
+
export interface ToolSchema {
|
|
68
|
+
name: string;
|
|
69
|
+
description: string;
|
|
70
|
+
inputSchema: Record<string, unknown>;
|
|
71
|
+
}
|
|
72
|
+
export interface LanguageModelInvokeOptions {
|
|
73
|
+
model: string;
|
|
74
|
+
messages: LanguageModelMessage[];
|
|
75
|
+
tools?: ToolSchema[];
|
|
76
|
+
maxTokens?: number;
|
|
77
|
+
temperature?: number;
|
|
78
|
+
/** Index in `messages[]` where a cache breakpoint should be inserted (Anthropic-style). */
|
|
79
|
+
cacheBreakpoint?: number;
|
|
80
|
+
/** Escape hatch for provider-specific knobs (e.g., `topP`, `responseFormat`). */
|
|
81
|
+
providerOptions?: Record<string, unknown>;
|
|
82
|
+
signal?: AbortSignal;
|
|
83
|
+
}
|
|
84
|
+
export type StreamEvent = {
|
|
85
|
+
type: 'text-delta';
|
|
86
|
+
text: string;
|
|
87
|
+
} | {
|
|
88
|
+
type: 'tool-call';
|
|
89
|
+
call: ToolCall;
|
|
90
|
+
} | {
|
|
91
|
+
type: 'reasoning-delta';
|
|
92
|
+
text: string;
|
|
93
|
+
} | {
|
|
94
|
+
type: 'usage';
|
|
95
|
+
inputTokens: number;
|
|
96
|
+
outputTokens: number;
|
|
97
|
+
cacheReadTokens?: number;
|
|
98
|
+
cacheWriteTokens?: number;
|
|
99
|
+
} | {
|
|
100
|
+
type: 'finish';
|
|
101
|
+
reason: 'end' | 'tool-use' | 'length' | 'error';
|
|
102
|
+
error?: string;
|
|
103
|
+
};
|
|
104
|
+
export interface InvokeUsage {
|
|
105
|
+
inputTokens: number;
|
|
106
|
+
outputTokens: number;
|
|
107
|
+
cacheReadTokens?: number;
|
|
108
|
+
cacheWriteTokens?: number;
|
|
109
|
+
}
|
|
110
|
+
export interface InvokeResult {
|
|
111
|
+
text: string;
|
|
112
|
+
toolCalls: ToolCall[];
|
|
113
|
+
usage: InvokeUsage;
|
|
114
|
+
costUsd: number;
|
|
115
|
+
durationMs: number;
|
|
116
|
+
provider: ProviderName;
|
|
117
|
+
model: string;
|
|
118
|
+
/** Reason the stream finished. Mirrors the final `finish` event. */
|
|
119
|
+
finishReason: 'end' | 'tool-use' | 'length' | 'error';
|
|
120
|
+
}
|
|
121
|
+
export interface LanguageModel {
|
|
122
|
+
readonly provider: ProviderName;
|
|
123
|
+
readonly capabilities: ProviderCapabilities;
|
|
124
|
+
supportsModel(modelId: string): boolean;
|
|
125
|
+
/** `[inputPer1M, outputPer1M]` pricing in USD, or `null` if unknown. */
|
|
126
|
+
getModelPricing(modelId: string): [number, number] | null;
|
|
127
|
+
checkAvailability(): Promise<{
|
|
128
|
+
available: boolean;
|
|
129
|
+
version?: string;
|
|
130
|
+
error?: string;
|
|
131
|
+
}>;
|
|
132
|
+
/** Streaming surface — yields events as the provider produces them. */
|
|
133
|
+
invokeStream(opts: LanguageModelInvokeOptions): AsyncIterable<StreamEvent>;
|
|
134
|
+
/** Single-shot surface — drains the stream and returns the final block. */
|
|
135
|
+
invoke(opts: LanguageModelInvokeOptions): Promise<InvokeResult>;
|
|
136
|
+
}
|
|
137
|
+
export interface ModelAdapterConfig {
|
|
138
|
+
userPrompt: string;
|
|
139
|
+
projectPrompt?: string;
|
|
140
|
+
model: string;
|
|
141
|
+
workingDir: string;
|
|
142
|
+
stage: string;
|
|
143
|
+
persona: string;
|
|
144
|
+
sessionId?: string;
|
|
145
|
+
resume?: boolean;
|
|
146
|
+
permissionMode?: string;
|
|
147
|
+
allowedTools?: string[];
|
|
148
|
+
disallowedTools?: string[];
|
|
149
|
+
timeout?: number;
|
|
150
|
+
/**
|
|
151
|
+
* Cap on the number of output tokens the provider should emit for this
|
|
152
|
+
* call. Adapters whose `capabilities.maxOutputTokens === true` honor it
|
|
153
|
+
* (set the provider's `max_tokens` knob); others ignore it.
|
|
154
|
+
*/
|
|
155
|
+
maxOutputTokens?: number;
|
|
156
|
+
/**
|
|
157
|
+
* Routes the call through the process-local FIFO single-slot executor
|
|
158
|
+
* (`@esankhan3/anvil-agent-core/router/local-executor`). Set true ONLY for local
|
|
159
|
+
* GPU-resident models that cannot co-reside (Qwen 14B / Gemma class).
|
|
160
|
+
* Other adapters ignore this flag. Default false = bypass queue.
|
|
161
|
+
*/
|
|
162
|
+
exclusiveSlot?: boolean;
|
|
163
|
+
/**
|
|
164
|
+
* Optional tool executor for adapters that drive their own agentic
|
|
165
|
+
* loop (Ollama, future OpenAI/Gemini agentic paths). When set, the
|
|
166
|
+
* adapter advertises the executor's filtered schemas to the model
|
|
167
|
+
* and feeds back tool results in-loop. Claude CLI ignores it — it
|
|
168
|
+
* ships its own tool runtime.
|
|
169
|
+
*/
|
|
170
|
+
toolExecutor?: ToolExecutorLike;
|
|
171
|
+
/**
|
|
172
|
+
* Cap on agentic-loop iterations. Default 32. Adapters that don't
|
|
173
|
+
* loop ignore the field. Hitting the cap surfaces as
|
|
174
|
+
* `stopReason: 'iteration_limit'` in the result.
|
|
175
|
+
*/
|
|
176
|
+
maxToolIterations?: number;
|
|
177
|
+
/**
|
|
178
|
+
* Provider-side context-window cap (Ollama `num_ctx`). Bounds VRAM
|
|
179
|
+
* cost of the conversation history. Adapters that don't expose
|
|
180
|
+
* this knob ignore the field.
|
|
181
|
+
*/
|
|
182
|
+
contextWindow?: number;
|
|
183
|
+
/**
|
|
184
|
+
* Path to an `mcp.json` config the adapter should forward to its
|
|
185
|
+
* underlying tool runtime. Today only the Claude CLI path consumes
|
|
186
|
+
* this (passes `--mcp-config <path>`); other adapters ignore it.
|
|
187
|
+
* Populated by `defaultAdapterFactory` when a `workspaceDir` is set
|
|
188
|
+
* and an MCP config is discovered. Per AGENT-PROCESS-CONSOLIDATION-
|
|
189
|
+
* ADR §C5.
|
|
190
|
+
*/
|
|
191
|
+
mcpConfigPath?: string;
|
|
192
|
+
}
|
|
193
|
+
export interface ToolExecutorLike {
|
|
194
|
+
listSchemas(): ToolSchema[];
|
|
195
|
+
execute(call: ToolCall, ctx: {
|
|
196
|
+
workingDir: string;
|
|
197
|
+
abortSignal: AbortSignal;
|
|
198
|
+
}): Promise<{
|
|
199
|
+
content: string;
|
|
200
|
+
isError: boolean;
|
|
201
|
+
}>;
|
|
202
|
+
}
|
|
203
|
+
export interface ModelAdapterResult {
|
|
204
|
+
output: string;
|
|
205
|
+
inputTokens: number;
|
|
206
|
+
outputTokens: number;
|
|
207
|
+
costUsd: number;
|
|
208
|
+
durationMs: number;
|
|
209
|
+
sessionId?: string;
|
|
210
|
+
provider: ProviderName;
|
|
211
|
+
model: string;
|
|
212
|
+
/** Tokens served from a prompt cache (Anthropic cache_read, OpenAI cached_tokens, Gemini cachedContentTokenCount). */
|
|
213
|
+
cacheReadTokens?: number;
|
|
214
|
+
/** Tokens written to the prompt cache (Anthropic cache_creation; OpenAI/Gemini do not bill cache writes separately). */
|
|
215
|
+
cacheWriteTokens?: number;
|
|
216
|
+
/** Tokens spent on extended thinking / reasoning blocks (Anthropic ThinkingBlock, OpenAI o-series reasoning, Gemini thoughtsTokenCount). */
|
|
217
|
+
reasoningTokens?: number;
|
|
218
|
+
/** Count of tool_use / function-call invocations in this turn. */
|
|
219
|
+
toolCallCount?: number;
|
|
220
|
+
/**
|
|
221
|
+
* Provider-reported reason the call ended. Common values:
|
|
222
|
+
* - 'end_turn' / 'stop' — natural completion
|
|
223
|
+
* - 'max_tokens' / 'length' — output ceiling hit (truncation)
|
|
224
|
+
* - 'tool_use' — paused for a tool call
|
|
225
|
+
* Adapters that don't surface a reason leave it undefined. OpenAI-shape
|
|
226
|
+
* adapters normalize 'length' → 'max_tokens' so callers can detect
|
|
227
|
+
* truncation provider-agnostically.
|
|
228
|
+
*/
|
|
229
|
+
stopReason?: string;
|
|
230
|
+
}
|
|
231
|
+
export interface ModelAdapter {
|
|
232
|
+
readonly provider: ProviderName;
|
|
233
|
+
readonly capabilities: ProviderCapabilities;
|
|
234
|
+
/** Check whether this adapter handles the given model identifier. */
|
|
235
|
+
supportsModel(modelId: string): boolean;
|
|
236
|
+
/** Return [inputPer1M, outputPer1M] pricing, or null if unknown. */
|
|
237
|
+
getModelPricing(modelId: string): [number, number] | null;
|
|
238
|
+
/** Verify the provider CLI / API is reachable and report its version. */
|
|
239
|
+
checkAvailability(): Promise<{
|
|
240
|
+
available: boolean;
|
|
241
|
+
version?: string;
|
|
242
|
+
error?: string;
|
|
243
|
+
}>;
|
|
244
|
+
/** Run agent. Write Anvil Stream Format NDJSON to `output`. */
|
|
245
|
+
run(config: ModelAdapterConfig, output: NodeJS.WritableStream): Promise<ModelAdapterResult>;
|
|
246
|
+
/** Kill running process if applicable. */
|
|
247
|
+
kill?(): void;
|
|
248
|
+
}
|
|
249
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/dist/types.js
ADDED
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `@esankhan3/anvil-agent-core` — public type surface.
|
|
3
|
+
*
|
|
4
|
+
* Two interfaces live here, intentionally:
|
|
5
|
+
*
|
|
6
|
+
* 1. `LanguageModel` — the new, forward-looking shape. Vendor-agnostic
|
|
7
|
+
* streaming/single-shot interface that future code (Phase 5+ of the
|
|
8
|
+
* agent-core extract) wires against. Yields typed events; analytical
|
|
9
|
+
* callers drain the stream via the default `invoke()` impl.
|
|
10
|
+
*
|
|
11
|
+
* 2. `ModelAdapter` — the legacy interface inherited from cli/src/providers.
|
|
12
|
+
* Kept verbatim (same field names, same signatures) so the seven existing
|
|
13
|
+
* adapters keep compiling unchanged when they move into this package in
|
|
14
|
+
* Phase 3+4. New code should not import these — they are bridged into
|
|
15
|
+
* `LanguageModel` via `legacyAdapterToLanguageModel()` (Phase 3).
|
|
16
|
+
*
|
|
17
|
+
* `ProviderName` is shared between the two interfaces and uses the EXISTING
|
|
18
|
+
* values (`'claude' | 'openai' | …`) — see ADR D15. Renaming would cascade
|
|
19
|
+
* through every `ProviderRegistry.get()` site and the model-router dispatcher.
|
|
20
|
+
*/
|
|
21
|
+
export {};
|
|
22
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG"}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared upstream-error contract for all `ModelAdapter` implementations.
|
|
3
|
+
*
|
|
4
|
+
* The dashboard's `runStageWithFallback` (in
|
|
5
|
+
* `packages/dashboard/server/pipeline-runner.ts`) duck-types this shape
|
|
6
|
+
* — `name === 'UpstreamError' && retryable === true` — to decide whether
|
|
7
|
+
* to burn the current model and re-resolve the chain. Adapters that
|
|
8
|
+
* throw plain `Error` lose chain-fallback even when the failure is
|
|
9
|
+
* obviously transient (429 quota, 503 outage).
|
|
10
|
+
*
|
|
11
|
+
* The class is provider-agnostic on purpose. CLI adapters (claude,
|
|
12
|
+
* gemini-cli) don't get an HTTP status — pass `synthesizeStatusFromCli`
|
|
13
|
+
* the stderr text and we'll map known vendor patterns to a synthetic
|
|
14
|
+
* status code that callers can switch on the same way they switch on
|
|
15
|
+
* real HTTP status codes.
|
|
16
|
+
*/
|
|
17
|
+
export declare class UpstreamError extends Error {
|
|
18
|
+
readonly status: number;
|
|
19
|
+
readonly body: string;
|
|
20
|
+
/**
|
|
21
|
+
* True when the failure class warrants chain-fallback (insufficient
|
|
22
|
+
* quota, rate limited, upstream outage). Auth / bad-request errors
|
|
23
|
+
* are NOT retryable — they need a config fix, not a different model.
|
|
24
|
+
*/
|
|
25
|
+
readonly retryable: boolean;
|
|
26
|
+
constructor(status: number, body: string, opts?: {
|
|
27
|
+
provider?: string;
|
|
28
|
+
retryable?: boolean;
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Default retryable-status map. Matches what the dashboard's
|
|
33
|
+
* `runStageWithFallback` checks. Adapters can pass an explicit
|
|
34
|
+
* `retryable` override when they need finer control (e.g. Anthropic's
|
|
35
|
+
* "Credit balance too low" is 400 with a specific body — not
|
|
36
|
+
* retryable to a different model from the SAME provider, but the
|
|
37
|
+
* dashboard should still fall back to a DIFFERENT provider in the
|
|
38
|
+
* chain, so we mark it retryable=true with a synthetic 402).
|
|
39
|
+
*/
|
|
40
|
+
export declare function isRetryableStatus(status: number): boolean;
|
|
41
|
+
/**
|
|
42
|
+
* Body-pattern matcher for cases where the upstream returns 200/400
|
|
43
|
+
* but the body indicates a transient condition. Common with Anthropic
|
|
44
|
+
* (`overloaded_error`) and OpenRouter's wrapped-provider errors.
|
|
45
|
+
*/
|
|
46
|
+
export declare function bodyLooksRetryable(body: string): boolean;
|
|
47
|
+
/**
|
|
48
|
+
* For CLI subprocess adapters (claude, gemini-cli) — map stderr text
|
|
49
|
+
* patterns to a synthetic HTTP-style status code. Returns `undefined`
|
|
50
|
+
* when the stderr doesn't look like a known transient condition; the
|
|
51
|
+
* adapter should then throw a plain (non-retryable) `Error`.
|
|
52
|
+
*
|
|
53
|
+
* Patterns curated from observed stderr output:
|
|
54
|
+
* - Anthropic Claude CLI: "rate_limit_error", "overloaded_error",
|
|
55
|
+
* "Credit balance is too low" (the last is a hard block — but we
|
|
56
|
+
* mark it retryable so the chain hops to another provider).
|
|
57
|
+
* - Google Gemini CLI: "RESOURCE_EXHAUSTED", "Quota exceeded",
|
|
58
|
+
* "rate limit exceeded", "429".
|
|
59
|
+
*/
|
|
60
|
+
export declare function synthesizeStatusFromCli(stderr: string): {
|
|
61
|
+
status: number;
|
|
62
|
+
retryable: boolean;
|
|
63
|
+
} | undefined;
|
|
64
|
+
//# sourceMappingURL=upstream-error.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"upstream-error.d.ts","sourceRoot":"","sources":["../src/upstream-error.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,qBAAa,aAAc,SAAQ,KAAK;IACtC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB;;;;OAIG;IACH,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;gBAEhB,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,GAAE;QAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,OAAO,CAAA;KAAO;CAQhG;AAED;;;;;;;;GAQG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAQzD;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAGxD;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,MAAM,GAAG;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,OAAO,CAAA;CAAE,GAAG,SAAS,CAuB1G"}
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared upstream-error contract for all `ModelAdapter` implementations.
|
|
3
|
+
*
|
|
4
|
+
* The dashboard's `runStageWithFallback` (in
|
|
5
|
+
* `packages/dashboard/server/pipeline-runner.ts`) duck-types this shape
|
|
6
|
+
* — `name === 'UpstreamError' && retryable === true` — to decide whether
|
|
7
|
+
* to burn the current model and re-resolve the chain. Adapters that
|
|
8
|
+
* throw plain `Error` lose chain-fallback even when the failure is
|
|
9
|
+
* obviously transient (429 quota, 503 outage).
|
|
10
|
+
*
|
|
11
|
+
* The class is provider-agnostic on purpose. CLI adapters (claude,
|
|
12
|
+
* gemini-cli) don't get an HTTP status — pass `synthesizeStatusFromCli`
|
|
13
|
+
* the stderr text and we'll map known vendor patterns to a synthetic
|
|
14
|
+
* status code that callers can switch on the same way they switch on
|
|
15
|
+
* real HTTP status codes.
|
|
16
|
+
*/
|
|
17
|
+
export class UpstreamError extends Error {
|
|
18
|
+
status;
|
|
19
|
+
body;
|
|
20
|
+
/**
|
|
21
|
+
* True when the failure class warrants chain-fallback (insufficient
|
|
22
|
+
* quota, rate limited, upstream outage). Auth / bad-request errors
|
|
23
|
+
* are NOT retryable — they need a config fix, not a different model.
|
|
24
|
+
*/
|
|
25
|
+
retryable;
|
|
26
|
+
constructor(status, body, opts = {}) {
|
|
27
|
+
const provider = opts.provider ?? 'upstream';
|
|
28
|
+
super(`${provider} ${status}: ${truncate(body, 400)}`);
|
|
29
|
+
this.name = 'UpstreamError';
|
|
30
|
+
this.status = status;
|
|
31
|
+
this.body = body;
|
|
32
|
+
this.retryable = opts.retryable ?? (isRetryableStatus(status) || bodyLooksRetryable(body));
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Default retryable-status map. Matches what the dashboard's
|
|
37
|
+
* `runStageWithFallback` checks. Adapters can pass an explicit
|
|
38
|
+
* `retryable` override when they need finer control (e.g. Anthropic's
|
|
39
|
+
* "Credit balance too low" is 400 with a specific body — not
|
|
40
|
+
* retryable to a different model from the SAME provider, but the
|
|
41
|
+
* dashboard should still fall back to a DIFFERENT provider in the
|
|
42
|
+
* chain, so we mark it retryable=true with a synthetic 402).
|
|
43
|
+
*/
|
|
44
|
+
export function isRetryableStatus(status) {
|
|
45
|
+
return status === 408 || // Request Timeout
|
|
46
|
+
status === 425 || // Too Early
|
|
47
|
+
status === 429 || // Too Many Requests / quota
|
|
48
|
+
status === 502 || // Bad Gateway
|
|
49
|
+
status === 503 || // Service Unavailable
|
|
50
|
+
status === 504 || // Gateway Timeout
|
|
51
|
+
status === 0; // network / empty body / DNS
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Body-pattern matcher for cases where the upstream returns 200/400
|
|
55
|
+
* but the body indicates a transient condition. Common with Anthropic
|
|
56
|
+
* (`overloaded_error`) and OpenRouter's wrapped-provider errors.
|
|
57
|
+
*/
|
|
58
|
+
export function bodyLooksRetryable(body) {
|
|
59
|
+
if (!body)
|
|
60
|
+
return false;
|
|
61
|
+
return /insufficient[\s_-]?quota|rate[\s_-]?limit|overloaded[\s_-]?error|resource[\s_-]?exhausted|quota[\s_-]?exceeded|server\s+(?:is\s+)?busy|temporarily\s+(?:un)?available|temporarily\s+rate-?limited|too\s+many\s+requests/i.test(body);
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* For CLI subprocess adapters (claude, gemini-cli) — map stderr text
|
|
65
|
+
* patterns to a synthetic HTTP-style status code. Returns `undefined`
|
|
66
|
+
* when the stderr doesn't look like a known transient condition; the
|
|
67
|
+
* adapter should then throw a plain (non-retryable) `Error`.
|
|
68
|
+
*
|
|
69
|
+
* Patterns curated from observed stderr output:
|
|
70
|
+
* - Anthropic Claude CLI: "rate_limit_error", "overloaded_error",
|
|
71
|
+
* "Credit balance is too low" (the last is a hard block — but we
|
|
72
|
+
* mark it retryable so the chain hops to another provider).
|
|
73
|
+
* - Google Gemini CLI: "RESOURCE_EXHAUSTED", "Quota exceeded",
|
|
74
|
+
* "rate limit exceeded", "429".
|
|
75
|
+
*/
|
|
76
|
+
export function synthesizeStatusFromCli(stderr) {
|
|
77
|
+
if (!stderr)
|
|
78
|
+
return undefined;
|
|
79
|
+
const s = stderr.toLowerCase();
|
|
80
|
+
// Quota / billing — provider-side. Hop to another provider's chain entry.
|
|
81
|
+
if (/credit\s+balance\s+is\s+too\s+low|insufficient[\s_-]?credit|insufficient[\s_-]?quota|quota[\s_-]?exceeded|resource[\s_-]?exhausted/.test(s)) {
|
|
82
|
+
return { status: 429, retryable: true };
|
|
83
|
+
}
|
|
84
|
+
// Rate-limit / overload — usually transient. Other models help.
|
|
85
|
+
if (/rate[\s_-]?limit|too\s+many\s+requests|overloaded_error|server\s+(?:is\s+)?busy|\b429\b/.test(s)) {
|
|
86
|
+
return { status: 429, retryable: true };
|
|
87
|
+
}
|
|
88
|
+
// Outage signals.
|
|
89
|
+
if (/internal\s+server\s+error|\b503\b|\b502\b|\b504\b|service\s+unavailable|gateway\s+timeout|temporarily\s+unavailable/.test(s)) {
|
|
90
|
+
return { status: 503, retryable: true };
|
|
91
|
+
}
|
|
92
|
+
// Auth / config errors — terminal. The chain-fallback would just hit
|
|
93
|
+
// the same wall on the next model from the same provider.
|
|
94
|
+
if (/invalid\s+api\s+key|api\s+key\s+not\s+valid|unauthorized|\b401\b|\b403\b|permission[\s_-]?denied/.test(s)) {
|
|
95
|
+
return { status: 401, retryable: false };
|
|
96
|
+
}
|
|
97
|
+
// Default: caller should treat as terminal.
|
|
98
|
+
return undefined;
|
|
99
|
+
}
|
|
100
|
+
function truncate(s, n) {
|
|
101
|
+
if (s.length <= n)
|
|
102
|
+
return s;
|
|
103
|
+
return s.slice(0, n) + '…';
|
|
104
|
+
}
|
|
105
|
+
//# sourceMappingURL=upstream-error.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"upstream-error.js","sourceRoot":"","sources":["../src/upstream-error.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,MAAM,OAAO,aAAc,SAAQ,KAAK;IAC7B,MAAM,CAAS;IACf,IAAI,CAAS;IACtB;;;;OAIG;IACM,SAAS,CAAU;IAE5B,YAAY,MAAc,EAAE,IAAY,EAAE,OAAmD,EAAE;QAC7F,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,IAAI,UAAU,CAAC;QAC7C,KAAK,CAAC,GAAG,QAAQ,IAAI,MAAM,KAAK,QAAQ,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;QACvD,IAAI,CAAC,IAAI,GAAG,eAAe,CAAC;QAC5B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,IAAI,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC;IAC7F,CAAC;CACF;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,iBAAiB,CAAC,MAAc;IAC9C,OAAO,MAAM,KAAK,GAAG,IAAK,kBAAkB;QACrC,MAAM,KAAK,GAAG,IAAK,YAAY;QAC/B,MAAM,KAAK,GAAG,IAAK,4BAA4B;QAC/C,MAAM,KAAK,GAAG,IAAK,cAAc;QACjC,MAAM,KAAK,GAAG,IAAK,sBAAsB;QACzC,MAAM,KAAK,GAAG,IAAK,kBAAkB;QACrC,MAAM,KAAK,CAAC,CAAC,CAAM,6BAA6B;AACzD,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,kBAAkB,CAAC,IAAY;IAC7C,IAAI,CAAC,IAAI;QAAE,OAAO,KAAK,CAAC;IACxB,OAAO,0NAA0N,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC/O,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,uBAAuB,CAAC,MAAc;IACpD,IAAI,CAAC,MAAM;QAAE,OAAO,SAAS,CAAC;IAC9B,MAAM,CAAC,GAAG,MAAM,CAAC,WAAW,EAAE,CAAC;IAE/B,0EAA0E;IAC1E,IAAI,oIAAoI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;QACjJ,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;IAC1C,CAAC;IACD,gEAAgE;IAChE,IAAI,yFAAyF,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;QACtG,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;IAC1C,CAAC;IACD,kBAAkB;IAClB,IAAI,qHAAqH,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;QAClI,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;IAC1C,CAAC;IACD,qEAAqE;IACrE,0DAA0D;IAC1D,IAAI,kGAAkG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;QAC/G,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;IAC3C,CAAC;IACD,4CAA4C;IAC5C,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAS,QAAQ,CAAC,CAAS,EAAE,CAAS;IACpC,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC;QAAE,OAAO,CAAC,CAAC;IAC5B,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,GAAG,CAAC;AAC7B,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../src/version.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,OAAO,UAAU,CAAC"}
|
package/dist/version.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"version.js","sourceRoot":"","sources":["../src/version.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,OAAO,GAAG,OAAO,CAAC"}
|
package/package.json
ADDED
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@esankhan3/anvil-agent-core",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "Shared LLM stack — unified LanguageModel interface, provider adapters, agent subprocess machinery, and cost calculation for cli + knowledge-core + headless runners.",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"license": "MIT",
|
|
7
|
+
"main": "./dist/index.js",
|
|
8
|
+
"types": "./dist/index.d.ts",
|
|
9
|
+
"exports": {
|
|
10
|
+
".": {
|
|
11
|
+
"types": "./dist/index.d.ts",
|
|
12
|
+
"default": "./dist/index.js"
|
|
13
|
+
},
|
|
14
|
+
"./*.js": {
|
|
15
|
+
"types": "./dist/*.d.ts",
|
|
16
|
+
"default": "./dist/*.js"
|
|
17
|
+
}
|
|
18
|
+
},
|
|
19
|
+
"files": [
|
|
20
|
+
"dist"
|
|
21
|
+
],
|
|
22
|
+
"scripts": {
|
|
23
|
+
"build": "tsc -b && mkdir -p dist/data && cp src/data/model-prices.json dist/data/",
|
|
24
|
+
"dev": "tsc -b --watch",
|
|
25
|
+
"test": "tsc -b && mkdir -p dist/data && cp src/data/model-prices.json dist/data/ && node --test dist/__tests__/*.test.js dist/agent/session/__tests__/*.test.js dist/checkpoint/__tests__/*.test.js",
|
|
26
|
+
"refresh-cost-table": "node scripts/refresh-cost-table.mjs"
|
|
27
|
+
},
|
|
28
|
+
"dependencies": {
|
|
29
|
+
"@opentelemetry/api": "^1.9.0",
|
|
30
|
+
"@opentelemetry/exporter-metrics-otlp-http": "^0.200.0",
|
|
31
|
+
"@opentelemetry/exporter-trace-otlp-http": "^0.200.0",
|
|
32
|
+
"@opentelemetry/resources": "^2.0.0",
|
|
33
|
+
"@opentelemetry/sdk-metrics": "^2.0.0",
|
|
34
|
+
"@opentelemetry/sdk-trace-base": "^2.0.0",
|
|
35
|
+
"@opentelemetry/sdk-trace-node": "^2.0.0",
|
|
36
|
+
"@opentelemetry/semantic-conventions": "^1.30.0",
|
|
37
|
+
"@modelcontextprotocol/sdk": "^1.29.0",
|
|
38
|
+
"better-sqlite3": "^11.7.0",
|
|
39
|
+
"yaml": "^2.8.3"
|
|
40
|
+
},
|
|
41
|
+
"optionalDependencies": {
|
|
42
|
+
"@google/adk": "^1.1.0",
|
|
43
|
+
"@google/genai": "^1.37.0"
|
|
44
|
+
},
|
|
45
|
+
"devDependencies": {
|
|
46
|
+
"@types/better-sqlite3": "^7.6.12",
|
|
47
|
+
"@types/node": "^22.15.2"
|
|
48
|
+
}
|
|
49
|
+
}
|