attocode 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/CHANGELOG.md +48 -0
- package/LICENSE +21 -0
- package/README.md +164 -0
- package/dist/src/adapters.d.ts +83 -0
- package/dist/src/adapters.d.ts.map +1 -0
- package/dist/src/adapters.js +221 -0
- package/dist/src/adapters.js.map +1 -0
- package/dist/src/agent-tools/index.d.ts +7 -0
- package/dist/src/agent-tools/index.d.ts.map +1 -0
- package/dist/src/agent-tools/index.js +8 -0
- package/dist/src/agent-tools/index.js.map +1 -0
- package/dist/src/agent-tools/lsp-file-tools.d.ts +33 -0
- package/dist/src/agent-tools/lsp-file-tools.d.ts.map +1 -0
- package/dist/src/agent-tools/lsp-file-tools.js +200 -0
- package/dist/src/agent-tools/lsp-file-tools.js.map +1 -0
- package/dist/src/agent.d.ts +667 -0
- package/dist/src/agent.d.ts.map +1 -0
- package/dist/src/agent.js +2824 -0
- package/dist/src/agent.js.map +1 -0
- package/dist/src/cli.d.ts +36 -0
- package/dist/src/cli.d.ts.map +1 -0
- package/dist/src/cli.js +176 -0
- package/dist/src/cli.js.map +1 -0
- package/dist/src/commands/handler.d.ts +22 -0
- package/dist/src/commands/handler.d.ts.map +1 -0
- package/dist/src/commands/handler.js +1320 -0
- package/dist/src/commands/handler.js.map +1 -0
- package/dist/src/commands/init.d.ts +7 -0
- package/dist/src/commands/init.d.ts.map +1 -0
- package/dist/src/commands/init.js +153 -0
- package/dist/src/commands/init.js.map +1 -0
- package/dist/src/commands/types.d.ts +70 -0
- package/dist/src/commands/types.d.ts.map +1 -0
- package/dist/src/commands/types.js +8 -0
- package/dist/src/commands/types.js.map +1 -0
- package/dist/src/config.d.ts +22 -0
- package/dist/src/config.d.ts.map +1 -0
- package/dist/src/config.js +25 -0
- package/dist/src/config.js.map +1 -0
- package/dist/src/core/index.d.ts +32 -0
- package/dist/src/core/index.d.ts.map +1 -0
- package/dist/src/core/index.js +35 -0
- package/dist/src/core/index.js.map +1 -0
- package/dist/src/core/process-handlers.d.ts +43 -0
- package/dist/src/core/process-handlers.d.ts.map +1 -0
- package/dist/src/core/process-handlers.js +117 -0
- package/dist/src/core/process-handlers.js.map +1 -0
- package/dist/src/core/protocol/bridge.d.ts +117 -0
- package/dist/src/core/protocol/bridge.d.ts.map +1 -0
- package/dist/src/core/protocol/bridge.js +149 -0
- package/dist/src/core/protocol/bridge.js.map +1 -0
- package/dist/src/core/protocol/index.d.ts +8 -0
- package/dist/src/core/protocol/index.d.ts.map +1 -0
- package/dist/src/core/protocol/index.js +8 -0
- package/dist/src/core/protocol/index.js.map +1 -0
- package/dist/src/core/protocol/types.d.ts +539 -0
- package/dist/src/core/protocol/types.d.ts.map +1 -0
- package/dist/src/core/protocol/types.js +149 -0
- package/dist/src/core/protocol/types.js.map +1 -0
- package/dist/src/core/queues/atomic-counter.d.ts +36 -0
- package/dist/src/core/queues/atomic-counter.d.ts.map +1 -0
- package/dist/src/core/queues/atomic-counter.js +46 -0
- package/dist/src/core/queues/atomic-counter.js.map +1 -0
- package/dist/src/core/queues/event-queue.d.ts +126 -0
- package/dist/src/core/queues/event-queue.d.ts.map +1 -0
- package/dist/src/core/queues/event-queue.js +208 -0
- package/dist/src/core/queues/event-queue.js.map +1 -0
- package/dist/src/core/queues/index.d.ts +12 -0
- package/dist/src/core/queues/index.d.ts.map +1 -0
- package/dist/src/core/queues/index.js +15 -0
- package/dist/src/core/queues/index.js.map +1 -0
- package/dist/src/core/queues/submission-queue.d.ts +116 -0
- package/dist/src/core/queues/submission-queue.d.ts.map +1 -0
- package/dist/src/core/queues/submission-queue.js +236 -0
- package/dist/src/core/queues/submission-queue.js.map +1 -0
- package/dist/src/costs/index.d.ts +22 -0
- package/dist/src/costs/index.d.ts.map +1 -0
- package/dist/src/costs/index.js +22 -0
- package/dist/src/costs/index.js.map +1 -0
- package/dist/src/costs/model-registry.d.ts +80 -0
- package/dist/src/costs/model-registry.d.ts.map +1 -0
- package/dist/src/costs/model-registry.js +237 -0
- package/dist/src/costs/model-registry.js.map +1 -0
- package/dist/src/costs/types.d.ts +50 -0
- package/dist/src/costs/types.d.ts.map +1 -0
- package/dist/src/costs/types.js +2 -0
- package/dist/src/costs/types.js.map +1 -0
- package/dist/src/defaults.d.ts +114 -0
- package/dist/src/defaults.d.ts.map +1 -0
- package/dist/src/defaults.js +457 -0
- package/dist/src/defaults.js.map +1 -0
- package/dist/src/first-run.d.ts +35 -0
- package/dist/src/first-run.d.ts.map +1 -0
- package/dist/src/first-run.js +94 -0
- package/dist/src/first-run.js.map +1 -0
- package/dist/src/hello.d.ts +2 -0
- package/dist/src/hello.d.ts.map +1 -0
- package/dist/src/hello.js +4 -0
- package/dist/src/hello.js.map +1 -0
- package/dist/src/integrations/agent-registry.d.ts +160 -0
- package/dist/src/integrations/agent-registry.d.ts.map +1 -0
- package/dist/src/integrations/agent-registry.js +446 -0
- package/dist/src/integrations/agent-registry.js.map +1 -0
- package/dist/src/integrations/auto-compaction.d.ts +177 -0
- package/dist/src/integrations/auto-compaction.d.ts.map +1 -0
- package/dist/src/integrations/auto-compaction.js +428 -0
- package/dist/src/integrations/auto-compaction.js.map +1 -0
- package/dist/src/integrations/cancellation.d.ts +162 -0
- package/dist/src/integrations/cancellation.d.ts.map +1 -0
- package/dist/src/integrations/cancellation.js +339 -0
- package/dist/src/integrations/cancellation.js.map +1 -0
- package/dist/src/integrations/codebase-context.d.ts +319 -0
- package/dist/src/integrations/codebase-context.d.ts.map +1 -0
- package/dist/src/integrations/codebase-context.js +816 -0
- package/dist/src/integrations/codebase-context.js.map +1 -0
- package/dist/src/integrations/compaction.d.ts +192 -0
- package/dist/src/integrations/compaction.d.ts.map +1 -0
- package/dist/src/integrations/compaction.js +376 -0
- package/dist/src/integrations/compaction.js.map +1 -0
- package/dist/src/integrations/context-engineering.d.ts +246 -0
- package/dist/src/integrations/context-engineering.d.ts.map +1 -0
- package/dist/src/integrations/context-engineering.js +394 -0
- package/dist/src/integrations/context-engineering.js.map +1 -0
- package/dist/src/integrations/diff-utils.d.ts +105 -0
- package/dist/src/integrations/diff-utils.d.ts.map +1 -0
- package/dist/src/integrations/diff-utils.js +497 -0
- package/dist/src/integrations/diff-utils.js.map +1 -0
- package/dist/src/integrations/economics.d.ts +192 -0
- package/dist/src/integrations/economics.d.ts.map +1 -0
- package/dist/src/integrations/economics.js +431 -0
- package/dist/src/integrations/economics.js.map +1 -0
- package/dist/src/integrations/execution-policy.d.ts +189 -0
- package/dist/src/integrations/execution-policy.d.ts.map +1 -0
- package/dist/src/integrations/execution-policy.js +352 -0
- package/dist/src/integrations/execution-policy.js.map +1 -0
- package/dist/src/integrations/file-change-tracker.d.ts +161 -0
- package/dist/src/integrations/file-change-tracker.d.ts.map +1 -0
- package/dist/src/integrations/file-change-tracker.js +520 -0
- package/dist/src/integrations/file-change-tracker.js.map +1 -0
- package/dist/src/integrations/hierarchical-config.d.ts +212 -0
- package/dist/src/integrations/hierarchical-config.d.ts.map +1 -0
- package/dist/src/integrations/hierarchical-config.js +484 -0
- package/dist/src/integrations/hierarchical-config.js.map +1 -0
- package/dist/src/integrations/hooks.d.ts +114 -0
- package/dist/src/integrations/hooks.d.ts.map +1 -0
- package/dist/src/integrations/hooks.js +326 -0
- package/dist/src/integrations/hooks.js.map +1 -0
- package/dist/src/integrations/ignore.d.ts +143 -0
- package/dist/src/integrations/ignore.d.ts.map +1 -0
- package/dist/src/integrations/ignore.js +417 -0
- package/dist/src/integrations/ignore.js.map +1 -0
- package/dist/src/integrations/image-renderer.d.ts +119 -0
- package/dist/src/integrations/image-renderer.d.ts.map +1 -0
- package/dist/src/integrations/image-renderer.js +306 -0
- package/dist/src/integrations/image-renderer.js.map +1 -0
- package/dist/src/integrations/index.d.ts +42 -0
- package/dist/src/integrations/index.d.ts.map +1 -0
- package/dist/src/integrations/index.js +73 -0
- package/dist/src/integrations/index.js.map +1 -0
- package/dist/src/integrations/lsp.d.ts +196 -0
- package/dist/src/integrations/lsp.d.ts.map +1 -0
- package/dist/src/integrations/lsp.js +582 -0
- package/dist/src/integrations/lsp.js.map +1 -0
- package/dist/src/integrations/mcp-client.d.ts +270 -0
- package/dist/src/integrations/mcp-client.d.ts.map +1 -0
- package/dist/src/integrations/mcp-client.js +698 -0
- package/dist/src/integrations/mcp-client.js.map +1 -0
- package/dist/src/integrations/mcp-tool-search.d.ts +77 -0
- package/dist/src/integrations/mcp-tool-search.d.ts.map +1 -0
- package/dist/src/integrations/mcp-tool-search.js +220 -0
- package/dist/src/integrations/mcp-tool-search.js.map +1 -0
- package/dist/src/integrations/memory.d.ts +108 -0
- package/dist/src/integrations/memory.d.ts.map +1 -0
- package/dist/src/integrations/memory.js +288 -0
- package/dist/src/integrations/memory.js.map +1 -0
- package/dist/src/integrations/multi-agent.d.ts +150 -0
- package/dist/src/integrations/multi-agent.d.ts.map +1 -0
- package/dist/src/integrations/multi-agent.js +306 -0
- package/dist/src/integrations/multi-agent.js.map +1 -0
- package/dist/src/integrations/observability.d.ts +162 -0
- package/dist/src/integrations/observability.d.ts.map +1 -0
- package/dist/src/integrations/observability.js +406 -0
- package/dist/src/integrations/observability.js.map +1 -0
- package/dist/src/integrations/openrouter-pricing.d.ts +42 -0
- package/dist/src/integrations/openrouter-pricing.d.ts.map +1 -0
- package/dist/src/integrations/openrouter-pricing.js +124 -0
- package/dist/src/integrations/openrouter-pricing.js.map +1 -0
- package/dist/src/integrations/pending-plan.d.ts +171 -0
- package/dist/src/integrations/pending-plan.d.ts.map +1 -0
- package/dist/src/integrations/pending-plan.js +244 -0
- package/dist/src/integrations/pending-plan.js.map +1 -0
- package/dist/src/integrations/persistence.d.ts +48 -0
- package/dist/src/integrations/persistence.d.ts.map +1 -0
- package/dist/src/integrations/persistence.js +196 -0
- package/dist/src/integrations/persistence.js.map +1 -0
- package/dist/src/integrations/planning.d.ts +96 -0
- package/dist/src/integrations/planning.d.ts.map +1 -0
- package/dist/src/integrations/planning.js +338 -0
- package/dist/src/integrations/planning.js.map +1 -0
- package/dist/src/integrations/pty-shell.d.ts +169 -0
- package/dist/src/integrations/pty-shell.d.ts.map +1 -0
- package/dist/src/integrations/pty-shell.js +367 -0
- package/dist/src/integrations/pty-shell.js.map +1 -0
- package/dist/src/integrations/react.d.ts +139 -0
- package/dist/src/integrations/react.d.ts.map +1 -0
- package/dist/src/integrations/react.js +273 -0
- package/dist/src/integrations/react.js.map +1 -0
- package/dist/src/integrations/resources.d.ts +177 -0
- package/dist/src/integrations/resources.d.ts.map +1 -0
- package/dist/src/integrations/resources.js +311 -0
- package/dist/src/integrations/resources.js.map +1 -0
- package/dist/src/integrations/result-synthesizer.d.ts +389 -0
- package/dist/src/integrations/result-synthesizer.d.ts.map +1 -0
- package/dist/src/integrations/result-synthesizer.js +951 -0
- package/dist/src/integrations/result-synthesizer.js.map +1 -0
- package/dist/src/integrations/routing.d.ts +117 -0
- package/dist/src/integrations/routing.d.ts.map +1 -0
- package/dist/src/integrations/routing.js +347 -0
- package/dist/src/integrations/routing.js.map +1 -0
- package/dist/src/integrations/rules.d.ts +131 -0
- package/dist/src/integrations/rules.d.ts.map +1 -0
- package/dist/src/integrations/rules.js +284 -0
- package/dist/src/integrations/rules.js.map +1 -0
- package/dist/src/integrations/safety.d.ts +142 -0
- package/dist/src/integrations/safety.d.ts.map +1 -0
- package/dist/src/integrations/safety.js +342 -0
- package/dist/src/integrations/safety.js.map +1 -0
- package/dist/src/integrations/sandbox/basic.d.ts +74 -0
- package/dist/src/integrations/sandbox/basic.d.ts.map +1 -0
- package/dist/src/integrations/sandbox/basic.js +310 -0
- package/dist/src/integrations/sandbox/basic.js.map +1 -0
- package/dist/src/integrations/sandbox/docker.d.ts +94 -0
- package/dist/src/integrations/sandbox/docker.d.ts.map +1 -0
- package/dist/src/integrations/sandbox/docker.js +293 -0
- package/dist/src/integrations/sandbox/docker.js.map +1 -0
- package/dist/src/integrations/sandbox/index.d.ts +182 -0
- package/dist/src/integrations/sandbox/index.d.ts.map +1 -0
- package/dist/src/integrations/sandbox/index.js +382 -0
- package/dist/src/integrations/sandbox/index.js.map +1 -0
- package/dist/src/integrations/sandbox/landlock.d.ts +59 -0
- package/dist/src/integrations/sandbox/landlock.d.ts.map +1 -0
- package/dist/src/integrations/sandbox/landlock.js +326 -0
- package/dist/src/integrations/sandbox/landlock.js.map +1 -0
- package/dist/src/integrations/sandbox/seatbelt.d.ts +68 -0
- package/dist/src/integrations/sandbox/seatbelt.d.ts.map +1 -0
- package/dist/src/integrations/sandbox/seatbelt.js +298 -0
- package/dist/src/integrations/sandbox/seatbelt.js.map +1 -0
- package/dist/src/integrations/semantic-cache.d.ts +178 -0
- package/dist/src/integrations/semantic-cache.d.ts.map +1 -0
- package/dist/src/integrations/semantic-cache.js +372 -0
- package/dist/src/integrations/semantic-cache.js.map +1 -0
- package/dist/src/integrations/session-store.d.ts +183 -0
- package/dist/src/integrations/session-store.d.ts.map +1 -0
- package/dist/src/integrations/session-store.js +345 -0
- package/dist/src/integrations/session-store.js.map +1 -0
- package/dist/src/integrations/shared-blackboard.d.ts +403 -0
- package/dist/src/integrations/shared-blackboard.d.ts.map +1 -0
- package/dist/src/integrations/shared-blackboard.js +710 -0
- package/dist/src/integrations/shared-blackboard.js.map +1 -0
- package/dist/src/integrations/skills.d.ts +171 -0
- package/dist/src/integrations/skills.d.ts.map +1 -0
- package/dist/src/integrations/skills.js +403 -0
- package/dist/src/integrations/skills.js.map +1 -0
- package/dist/src/integrations/smart-decomposer.d.ts +322 -0
- package/dist/src/integrations/smart-decomposer.d.ts.map +1 -0
- package/dist/src/integrations/smart-decomposer.js +856 -0
- package/dist/src/integrations/smart-decomposer.js.map +1 -0
- package/dist/src/integrations/sourcegraph.d.ts +169 -0
- package/dist/src/integrations/sourcegraph.d.ts.map +1 -0
- package/dist/src/integrations/sourcegraph.js +379 -0
- package/dist/src/integrations/sourcegraph.js.map +1 -0
- package/dist/src/integrations/sqlite-store.d.ts +518 -0
- package/dist/src/integrations/sqlite-store.d.ts.map +1 -0
- package/dist/src/integrations/sqlite-store.js +1423 -0
- package/dist/src/integrations/sqlite-store.js.map +1 -0
- package/dist/src/integrations/streaming.d.ts +102 -0
- package/dist/src/integrations/streaming.d.ts.map +1 -0
- package/dist/src/integrations/streaming.js +362 -0
- package/dist/src/integrations/streaming.js.map +1 -0
- package/dist/src/integrations/thread-manager.d.ts +199 -0
- package/dist/src/integrations/thread-manager.d.ts.map +1 -0
- package/dist/src/integrations/thread-manager.js +357 -0
- package/dist/src/integrations/thread-manager.js.map +1 -0
- package/dist/src/main.d.ts +26 -0
- package/dist/src/main.d.ts.map +1 -0
- package/dist/src/main.js +170 -0
- package/dist/src/main.js.map +1 -0
- package/dist/src/modes/index.d.ts +10 -0
- package/dist/src/modes/index.d.ts.map +1 -0
- package/dist/src/modes/index.js +10 -0
- package/dist/src/modes/index.js.map +1 -0
- package/dist/src/modes/repl.d.ts +19 -0
- package/dist/src/modes/repl.d.ts.map +1 -0
- package/dist/src/modes/repl.js +393 -0
- package/dist/src/modes/repl.js.map +1 -0
- package/dist/src/modes/tui.d.ts +29 -0
- package/dist/src/modes/tui.d.ts.map +1 -0
- package/dist/src/modes/tui.js +272 -0
- package/dist/src/modes/tui.js.map +1 -0
- package/dist/src/modes.d.ts +179 -0
- package/dist/src/modes.d.ts.map +1 -0
- package/dist/src/modes.js +385 -0
- package/dist/src/modes.js.map +1 -0
- package/dist/src/observability/tracer.d.ts +111 -0
- package/dist/src/observability/tracer.d.ts.map +1 -0
- package/dist/src/observability/tracer.js +300 -0
- package/dist/src/observability/tracer.js.map +1 -0
- package/dist/src/observability/types.d.ts +271 -0
- package/dist/src/observability/types.d.ts.map +1 -0
- package/dist/src/observability/types.js +24 -0
- package/dist/src/observability/types.js.map +1 -0
- package/dist/src/paths.d.ts +101 -0
- package/dist/src/paths.d.ts.map +1 -0
- package/dist/src/paths.js +148 -0
- package/dist/src/paths.js.map +1 -0
- package/dist/src/persistence/index.d.ts +38 -0
- package/dist/src/persistence/index.d.ts.map +1 -0
- package/dist/src/persistence/index.js +48 -0
- package/dist/src/persistence/index.js.map +1 -0
- package/dist/src/persistence/migrator.d.ts +135 -0
- package/dist/src/persistence/migrator.d.ts.map +1 -0
- package/dist/src/persistence/migrator.js +303 -0
- package/dist/src/persistence/migrator.js.map +1 -0
- package/dist/src/persistence/schema.d.ts +101 -0
- package/dist/src/persistence/schema.d.ts.map +1 -0
- package/dist/src/persistence/schema.js +395 -0
- package/dist/src/persistence/schema.js.map +1 -0
- package/dist/src/providers/adapters/anthropic.d.ts +20 -0
- package/dist/src/providers/adapters/anthropic.d.ts.map +1 -0
- package/dist/src/providers/adapters/anthropic.js +124 -0
- package/dist/src/providers/adapters/anthropic.js.map +1 -0
- package/dist/src/providers/adapters/mock.d.ts +25 -0
- package/dist/src/providers/adapters/mock.d.ts.map +1 -0
- package/dist/src/providers/adapters/mock.js +133 -0
- package/dist/src/providers/adapters/mock.js.map +1 -0
- package/dist/src/providers/adapters/openai.d.ts +21 -0
- package/dist/src/providers/adapters/openai.d.ts.map +1 -0
- package/dist/src/providers/adapters/openai.js +126 -0
- package/dist/src/providers/adapters/openai.js.map +1 -0
- package/dist/src/providers/adapters/openrouter.d.ts +49 -0
- package/dist/src/providers/adapters/openrouter.d.ts.map +1 -0
- package/dist/src/providers/adapters/openrouter.js +363 -0
- package/dist/src/providers/adapters/openrouter.js.map +1 -0
- package/dist/src/providers/provider.d.ts +54 -0
- package/dist/src/providers/provider.d.ts.map +1 -0
- package/dist/src/providers/provider.js +111 -0
- package/dist/src/providers/provider.js.map +1 -0
- package/dist/src/providers/resilient-fetch.d.ts +99 -0
- package/dist/src/providers/resilient-fetch.d.ts.map +1 -0
- package/dist/src/providers/resilient-fetch.js +208 -0
- package/dist/src/providers/resilient-fetch.js.map +1 -0
- package/dist/src/providers/types.d.ts +227 -0
- package/dist/src/providers/types.d.ts.map +1 -0
- package/dist/src/providers/types.js +24 -0
- package/dist/src/providers/types.js.map +1 -0
- package/dist/src/session-picker.d.ts +28 -0
- package/dist/src/session-picker.d.ts.map +1 -0
- package/dist/src/session-picker.js +256 -0
- package/dist/src/session-picker.js.map +1 -0
- package/dist/src/test-sqlite.d.ts +2 -0
- package/dist/src/test-sqlite.d.ts.map +1 -0
- package/dist/src/test-sqlite.js +114 -0
- package/dist/src/test-sqlite.js.map +1 -0
- package/dist/src/tools/agent.d.ts +44 -0
- package/dist/src/tools/agent.d.ts.map +1 -0
- package/dist/src/tools/agent.js +110 -0
- package/dist/src/tools/agent.js.map +1 -0
- package/dist/src/tools/bash.d.ts +52 -0
- package/dist/src/tools/bash.d.ts.map +1 -0
- package/dist/src/tools/bash.js +141 -0
- package/dist/src/tools/bash.js.map +1 -0
- package/dist/src/tools/file.d.ts +47 -0
- package/dist/src/tools/file.d.ts.map +1 -0
- package/dist/src/tools/file.js +263 -0
- package/dist/src/tools/file.js.map +1 -0
- package/dist/src/tools/permission.d.ts +43 -0
- package/dist/src/tools/permission.d.ts.map +1 -0
- package/dist/src/tools/permission.js +216 -0
- package/dist/src/tools/permission.js.map +1 -0
- package/dist/src/tools/registry.d.ts +63 -0
- package/dist/src/tools/registry.d.ts.map +1 -0
- package/dist/src/tools/registry.js +250 -0
- package/dist/src/tools/registry.js.map +1 -0
- package/dist/src/tools/standard.d.ts +57 -0
- package/dist/src/tools/standard.d.ts.map +1 -0
- package/dist/src/tools/standard.js +113 -0
- package/dist/src/tools/standard.js.map +1 -0
- package/dist/src/tools/types.d.ts +146 -0
- package/dist/src/tools/types.d.ts.map +1 -0
- package/dist/src/tools/types.js +28 -0
- package/dist/src/tools/types.js.map +1 -0
- package/dist/src/tools/undo.d.ts +71 -0
- package/dist/src/tools/undo.d.ts.map +1 -0
- package/dist/src/tools/undo.js +123 -0
- package/dist/src/tools/undo.js.map +1 -0
- package/dist/src/tracing/cache-boundary-tracker.d.ts +189 -0
- package/dist/src/tracing/cache-boundary-tracker.d.ts.map +1 -0
- package/dist/src/tracing/cache-boundary-tracker.js +411 -0
- package/dist/src/tracing/cache-boundary-tracker.js.map +1 -0
- package/dist/src/tracing/trace-collector.d.ts +274 -0
- package/dist/src/tracing/trace-collector.d.ts.map +1 -0
- package/dist/src/tracing/trace-collector.js +727 -0
- package/dist/src/tracing/trace-collector.js.map +1 -0
- package/dist/src/tracing/types.d.ts +657 -0
- package/dist/src/tracing/types.d.ts.map +1 -0
- package/dist/src/tracing/types.js +39 -0
- package/dist/src/tracing/types.js.map +1 -0
- package/dist/src/tricks/failure-evidence.d.ts +268 -0
- package/dist/src/tricks/failure-evidence.d.ts.map +1 -0
- package/dist/src/tricks/failure-evidence.js +544 -0
- package/dist/src/tricks/failure-evidence.js.map +1 -0
- package/dist/src/tricks/json-utils.d.ts +77 -0
- package/dist/src/tricks/json-utils.d.ts.map +1 -0
- package/dist/src/tricks/json-utils.js +247 -0
- package/dist/src/tricks/json-utils.js.map +1 -0
- package/dist/src/tricks/kv-cache-context.d.ts +227 -0
- package/dist/src/tricks/kv-cache-context.d.ts.map +1 -0
- package/dist/src/tricks/kv-cache-context.js +377 -0
- package/dist/src/tricks/kv-cache-context.js.map +1 -0
- package/dist/src/tricks/recitation.d.ts +208 -0
- package/dist/src/tricks/recitation.d.ts.map +1 -0
- package/dist/src/tricks/recitation.js +374 -0
- package/dist/src/tricks/recitation.js.map +1 -0
- package/dist/src/tricks/reversible-compaction.d.ts +251 -0
- package/dist/src/tricks/reversible-compaction.d.ts.map +1 -0
- package/dist/src/tricks/reversible-compaction.js +555 -0
- package/dist/src/tricks/reversible-compaction.js.map +1 -0
- package/dist/src/tricks/serialization-diversity.d.ts +197 -0
- package/dist/src/tricks/serialization-diversity.d.ts.map +1 -0
- package/dist/src/tricks/serialization-diversity.js +460 -0
- package/dist/src/tricks/serialization-diversity.js.map +1 -0
- package/dist/src/tui/app.d.ts +42 -0
- package/dist/src/tui/app.d.ts.map +1 -0
- package/dist/src/tui/app.js +1076 -0
- package/dist/src/tui/app.js.map +1 -0
- package/dist/src/tui/components/ApprovalDialog.d.ts +28 -0
- package/dist/src/tui/components/ApprovalDialog.d.ts.map +1 -0
- package/dist/src/tui/components/ApprovalDialog.js +59 -0
- package/dist/src/tui/components/ApprovalDialog.js.map +1 -0
- package/dist/src/tui/components/InputArea.d.ts +35 -0
- package/dist/src/tui/components/InputArea.d.ts.map +1 -0
- package/dist/src/tui/components/InputArea.js +144 -0
- package/dist/src/tui/components/InputArea.js.map +1 -0
- package/dist/src/tui/components/MessageItem.d.ts +28 -0
- package/dist/src/tui/components/MessageItem.d.ts.map +1 -0
- package/dist/src/tui/components/MessageItem.js +27 -0
- package/dist/src/tui/components/MessageItem.js.map +1 -0
- package/dist/src/tui/components/ScrollableBox.d.ts +41 -0
- package/dist/src/tui/components/ScrollableBox.d.ts.map +1 -0
- package/dist/src/tui/components/ScrollableBox.js +101 -0
- package/dist/src/tui/components/ScrollableBox.js.map +1 -0
- package/dist/src/tui/components/ToolCallItem.d.ts +33 -0
- package/dist/src/tui/components/ToolCallItem.d.ts.map +1 -0
- package/dist/src/tui/components/ToolCallItem.js +91 -0
- package/dist/src/tui/components/ToolCallItem.js.map +1 -0
- package/dist/src/tui/components/index.d.ts +13 -0
- package/dist/src/tui/components/index.d.ts.map +1 -0
- package/dist/src/tui/components/index.js +15 -0
- package/dist/src/tui/components/index.js.map +1 -0
- package/dist/src/tui/event-display.d.ts +19 -0
- package/dist/src/tui/event-display.d.ts.map +1 -0
- package/dist/src/tui/event-display.js +178 -0
- package/dist/src/tui/event-display.js.map +1 -0
- package/dist/src/tui/index.d.ts +105 -0
- package/dist/src/tui/index.d.ts.map +1 -0
- package/dist/src/tui/index.js +214 -0
- package/dist/src/tui/index.js.map +1 -0
- package/dist/src/tui/input/CommandPalette.d.ts +55 -0
- package/dist/src/tui/input/CommandPalette.d.ts.map +1 -0
- package/dist/src/tui/input/CommandPalette.js +135 -0
- package/dist/src/tui/input/CommandPalette.js.map +1 -0
- package/dist/src/tui/input/index.d.ts +7 -0
- package/dist/src/tui/input/index.d.ts.map +1 -0
- package/dist/src/tui/input/index.js +7 -0
- package/dist/src/tui/input/index.js.map +1 -0
- package/dist/src/tui/theme/index.d.ts +45 -0
- package/dist/src/tui/theme/index.d.ts.map +1 -0
- package/dist/src/tui/theme/index.js +215 -0
- package/dist/src/tui/theme/index.js.map +1 -0
- package/dist/src/tui/types.d.ts +214 -0
- package/dist/src/tui/types.d.ts.map +1 -0
- package/dist/src/tui/types.js +27 -0
- package/dist/src/tui/types.js.map +1 -0
- package/dist/src/types.d.ts +905 -0
- package/dist/src/types.d.ts.map +1 -0
- package/dist/src/types.js +9 -0
- package/dist/src/types.js.map +1 -0
- package/package.json +89 -0
|
@@ -0,0 +1,236 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Bounded async queue for operations from UI to Agent.
|
|
3
|
+
* Implements backpressure - when full, producers wait until space is available.
|
|
4
|
+
*/
|
|
5
|
+
import { AtomicCounter } from './atomic-counter.js';
|
|
6
|
+
/**
|
|
7
|
+
* Error thrown when a queue operation times out.
|
|
8
|
+
*/
|
|
9
|
+
export class QueueTimeoutError extends Error {
|
|
10
|
+
constructor(message = 'Queue operation timed out') {
|
|
11
|
+
super(message);
|
|
12
|
+
this.name = 'QueueTimeoutError';
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Error thrown when attempting to operate on a closed queue.
|
|
17
|
+
*/
|
|
18
|
+
export class QueueClosedError extends Error {
|
|
19
|
+
constructor(message = 'Queue is closed') {
|
|
20
|
+
super(message);
|
|
21
|
+
this.name = 'QueueClosedError';
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* A bounded async queue for operations from UI to Agent.
|
|
26
|
+
*
|
|
27
|
+
* Features:
|
|
28
|
+
* - Bounded capacity with backpressure (producers wait when full)
|
|
29
|
+
* - Async iterator support for consumption
|
|
30
|
+
* - Graceful shutdown via close()
|
|
31
|
+
* - Timeout handling for blocked producers
|
|
32
|
+
*/
|
|
33
|
+
export class SubmissionQueue {
|
|
34
|
+
maxSize;
|
|
35
|
+
timeout;
|
|
36
|
+
counter;
|
|
37
|
+
queue = [];
|
|
38
|
+
producerWaiters = [];
|
|
39
|
+
consumerWaiters = [];
|
|
40
|
+
closed = false;
|
|
41
|
+
/**
|
|
42
|
+
* Creates a new SubmissionQueue.
|
|
43
|
+
* @param config - Optional configuration
|
|
44
|
+
*/
|
|
45
|
+
constructor(config) {
|
|
46
|
+
this.maxSize = config?.maxSize ?? 64;
|
|
47
|
+
this.timeout = config?.timeout ?? 30000;
|
|
48
|
+
this.counter = new AtomicCounter();
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Submits an operation to the queue.
|
|
52
|
+
* Blocks if the queue is full (backpressure).
|
|
53
|
+
*
|
|
54
|
+
* @param op - The operation to submit
|
|
55
|
+
* @param correlationId - Optional correlation ID for request/response tracking
|
|
56
|
+
* @returns The submission ID
|
|
57
|
+
* @throws QueueClosedError if the queue is closed
|
|
58
|
+
* @throws QueueTimeoutError if waiting for space times out
|
|
59
|
+
*/
|
|
60
|
+
async submit(op, correlationId) {
|
|
61
|
+
if (this.closed) {
|
|
62
|
+
throw new QueueClosedError('Cannot submit to a closed queue');
|
|
63
|
+
}
|
|
64
|
+
// Wait for space if queue is full
|
|
65
|
+
if (this.queue.length >= this.maxSize) {
|
|
66
|
+
await this.waitForSpace();
|
|
67
|
+
}
|
|
68
|
+
// Re-check closed status after waiting
|
|
69
|
+
if (this.closed) {
|
|
70
|
+
throw new QueueClosedError('Queue closed while waiting for space');
|
|
71
|
+
}
|
|
72
|
+
const id = this.counter.next();
|
|
73
|
+
const submission = {
|
|
74
|
+
id,
|
|
75
|
+
op,
|
|
76
|
+
timestamp: Date.now(),
|
|
77
|
+
...(correlationId !== undefined && { correlationId }),
|
|
78
|
+
};
|
|
79
|
+
this.queue.push(submission);
|
|
80
|
+
// Wake up a waiting consumer if any
|
|
81
|
+
this.wakeConsumer(submission);
|
|
82
|
+
return id;
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Takes the next submission from the queue.
|
|
86
|
+
* Blocks if the queue is empty.
|
|
87
|
+
*
|
|
88
|
+
* @returns The next submission, or null if the queue is closed and empty
|
|
89
|
+
*/
|
|
90
|
+
async take() {
|
|
91
|
+
// Return immediately if there's an item
|
|
92
|
+
if (this.queue.length > 0) {
|
|
93
|
+
const submission = this.queue.shift();
|
|
94
|
+
this.wakeProducer();
|
|
95
|
+
return submission;
|
|
96
|
+
}
|
|
97
|
+
// If closed and empty, return null
|
|
98
|
+
if (this.closed) {
|
|
99
|
+
return null;
|
|
100
|
+
}
|
|
101
|
+
// Wait for an item
|
|
102
|
+
return new Promise((resolve, reject) => {
|
|
103
|
+
this.consumerWaiters.push({ resolve, reject });
|
|
104
|
+
});
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* Non-blocking version of take().
|
|
108
|
+
* @returns The next submission, or null if the queue is empty
|
|
109
|
+
*/
|
|
110
|
+
tryTake() {
|
|
111
|
+
if (this.queue.length === 0) {
|
|
112
|
+
return null;
|
|
113
|
+
}
|
|
114
|
+
const submission = this.queue.shift();
|
|
115
|
+
this.wakeProducer();
|
|
116
|
+
return submission;
|
|
117
|
+
}
|
|
118
|
+
/**
|
|
119
|
+
* Returns the current queue size.
|
|
120
|
+
*/
|
|
121
|
+
size() {
|
|
122
|
+
return this.queue.length;
|
|
123
|
+
}
|
|
124
|
+
/**
|
|
125
|
+
* Returns true if the queue is empty.
|
|
126
|
+
*/
|
|
127
|
+
isEmpty() {
|
|
128
|
+
return this.queue.length === 0;
|
|
129
|
+
}
|
|
130
|
+
/**
|
|
131
|
+
* Returns true if the queue is full.
|
|
132
|
+
*/
|
|
133
|
+
isFull() {
|
|
134
|
+
return this.queue.length >= this.maxSize;
|
|
135
|
+
}
|
|
136
|
+
/**
|
|
137
|
+
* Returns true if the queue is closed.
|
|
138
|
+
*/
|
|
139
|
+
isClosed() {
|
|
140
|
+
return this.closed;
|
|
141
|
+
}
|
|
142
|
+
/**
|
|
143
|
+
* Closes the queue.
|
|
144
|
+
* - Rejects all pending producer waiters
|
|
145
|
+
* - Resolves all pending consumer waiters with null
|
|
146
|
+
* - No more submissions are accepted
|
|
147
|
+
*/
|
|
148
|
+
close() {
|
|
149
|
+
if (this.closed) {
|
|
150
|
+
return;
|
|
151
|
+
}
|
|
152
|
+
this.closed = true;
|
|
153
|
+
// Reject all waiting producers
|
|
154
|
+
const closedError = new QueueClosedError('Queue was closed');
|
|
155
|
+
for (const waiter of this.producerWaiters) {
|
|
156
|
+
waiter.reject(closedError);
|
|
157
|
+
}
|
|
158
|
+
this.producerWaiters.length = 0;
|
|
159
|
+
// Resolve all waiting consumers with null
|
|
160
|
+
for (const waiter of this.consumerWaiters) {
|
|
161
|
+
waiter.resolve(null);
|
|
162
|
+
}
|
|
163
|
+
this.consumerWaiters.length = 0;
|
|
164
|
+
}
|
|
165
|
+
/**
|
|
166
|
+
* Async iterator for consuming submissions.
|
|
167
|
+
* Yields submissions until the queue is closed and empty.
|
|
168
|
+
*/
|
|
169
|
+
async *[Symbol.asyncIterator]() {
|
|
170
|
+
while (true) {
|
|
171
|
+
const submission = await this.take();
|
|
172
|
+
if (submission === null) {
|
|
173
|
+
return;
|
|
174
|
+
}
|
|
175
|
+
yield submission;
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
/**
|
|
179
|
+
* Waits for space to become available in the queue.
|
|
180
|
+
* @throws QueueTimeoutError if waiting times out
|
|
181
|
+
* @throws QueueClosedError if queue is closed while waiting
|
|
182
|
+
*/
|
|
183
|
+
waitForSpace() {
|
|
184
|
+
return new Promise((resolve, reject) => {
|
|
185
|
+
const waiter = { resolve, reject };
|
|
186
|
+
// Set up timeout
|
|
187
|
+
const timeoutId = setTimeout(() => {
|
|
188
|
+
const index = this.producerWaiters.indexOf(waiter);
|
|
189
|
+
if (index !== -1) {
|
|
190
|
+
this.producerWaiters.splice(index, 1);
|
|
191
|
+
reject(new QueueTimeoutError(`Timed out waiting for space after ${this.timeout}ms`));
|
|
192
|
+
}
|
|
193
|
+
}, this.timeout);
|
|
194
|
+
// Wrap resolve to clear timeout
|
|
195
|
+
const originalResolve = waiter.resolve;
|
|
196
|
+
waiter.resolve = (value) => {
|
|
197
|
+
clearTimeout(timeoutId);
|
|
198
|
+
originalResolve(value);
|
|
199
|
+
};
|
|
200
|
+
// Wrap reject to clear timeout
|
|
201
|
+
const originalReject = waiter.reject;
|
|
202
|
+
waiter.reject = (error) => {
|
|
203
|
+
clearTimeout(timeoutId);
|
|
204
|
+
originalReject(error);
|
|
205
|
+
};
|
|
206
|
+
this.producerWaiters.push(waiter);
|
|
207
|
+
});
|
|
208
|
+
}
|
|
209
|
+
/**
|
|
210
|
+
* Wakes a waiting producer (called when space becomes available).
|
|
211
|
+
*/
|
|
212
|
+
wakeProducer() {
|
|
213
|
+
const waiter = this.producerWaiters.shift();
|
|
214
|
+
if (waiter) {
|
|
215
|
+
waiter.resolve();
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
/**
|
|
219
|
+
* Wakes a waiting consumer with a submission.
|
|
220
|
+
* If no consumers are waiting, the submission is already in the queue.
|
|
221
|
+
*/
|
|
222
|
+
wakeConsumer(submission) {
|
|
223
|
+
const waiter = this.consumerWaiters.shift();
|
|
224
|
+
if (waiter) {
|
|
225
|
+
// Remove from queue since we're giving it directly to consumer
|
|
226
|
+
const index = this.queue.indexOf(submission);
|
|
227
|
+
if (index !== -1) {
|
|
228
|
+
this.queue.splice(index, 1);
|
|
229
|
+
}
|
|
230
|
+
waiter.resolve(submission);
|
|
231
|
+
// Wake a producer since we freed a slot
|
|
232
|
+
this.wakeProducer();
|
|
233
|
+
}
|
|
234
|
+
}
|
|
235
|
+
}
|
|
236
|
+
//# sourceMappingURL=submission-queue.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"submission-queue.js","sourceRoot":"","sources":["../../../../src/core/queues/submission-queue.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Cost tracking and model registry module.
|
|
3
|
+
* Provides model configuration, pricing, and cost calculation utilities.
|
|
4
|
+
*
|
|
5
|
+
* @example
|
|
6
|
+
* ```typescript
|
|
7
|
+
* import { modelRegistry, type UsageRecord } from './costs/index.js';
|
|
8
|
+
*
|
|
9
|
+
* const usage: UsageRecord = {
|
|
10
|
+
* modelId: 'claude-3-5-sonnet-20241022',
|
|
11
|
+
* promptTokens: 1000,
|
|
12
|
+
* completionTokens: 500,
|
|
13
|
+
* cacheReadTokens: 200,
|
|
14
|
+
* };
|
|
15
|
+
*
|
|
16
|
+
* const cost = modelRegistry.calculateCost(usage);
|
|
17
|
+
* console.log(cost.formatted); // '$0.0195'
|
|
18
|
+
* ```
|
|
19
|
+
*/
|
|
20
|
+
export * from './types.js';
|
|
21
|
+
export * from './model-registry.js';
|
|
22
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/costs/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,cAAc,YAAY,CAAC;AAC3B,cAAc,qBAAqB,CAAC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Cost tracking and model registry module.
|
|
3
|
+
* Provides model configuration, pricing, and cost calculation utilities.
|
|
4
|
+
*
|
|
5
|
+
* @example
|
|
6
|
+
* ```typescript
|
|
7
|
+
* import { modelRegistry, type UsageRecord } from './costs/index.js';
|
|
8
|
+
*
|
|
9
|
+
* const usage: UsageRecord = {
|
|
10
|
+
* modelId: 'claude-3-5-sonnet-20241022',
|
|
11
|
+
* promptTokens: 1000,
|
|
12
|
+
* completionTokens: 500,
|
|
13
|
+
* cacheReadTokens: 200,
|
|
14
|
+
* };
|
|
15
|
+
*
|
|
16
|
+
* const cost = modelRegistry.calculateCost(usage);
|
|
17
|
+
* console.log(cost.formatted); // '$0.0195'
|
|
18
|
+
* ```
|
|
19
|
+
*/
|
|
20
|
+
export * from './types.js';
|
|
21
|
+
export * from './model-registry.js';
|
|
22
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/costs/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,cAAc,YAAY,CAAC;AAC3B,cAAc,qBAAqB,CAAC"}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
import type { ModelConfig, UsageRecord, CostBreakdown } from './types.js';
|
|
2
|
+
/**
|
|
3
|
+
* Registry for model configurations with caching and cost calculation.
|
|
4
|
+
* Provides a centralized way to manage model metadata and pricing.
|
|
5
|
+
*/
|
|
6
|
+
export declare class ModelRegistry {
|
|
7
|
+
private models;
|
|
8
|
+
private cacheTimestamp;
|
|
9
|
+
private readonly cacheDurationMs;
|
|
10
|
+
/**
|
|
11
|
+
* Creates a new ModelRegistry instance.
|
|
12
|
+
* @param cacheDurationMs - How long to cache model configs (default: 24 hours)
|
|
13
|
+
*/
|
|
14
|
+
constructor(cacheDurationMs?: number);
|
|
15
|
+
/**
|
|
16
|
+
* Loads default model configurations into the registry.
|
|
17
|
+
*/
|
|
18
|
+
private loadDefaults;
|
|
19
|
+
/**
|
|
20
|
+
* Gets a model configuration by ID.
|
|
21
|
+
* @param modelId - The unique model identifier
|
|
22
|
+
* @returns The model config or undefined if not found
|
|
23
|
+
*/
|
|
24
|
+
getModel(modelId: string): ModelConfig | undefined;
|
|
25
|
+
/**
|
|
26
|
+
* Gets all registered models.
|
|
27
|
+
* @returns Array of all model configurations
|
|
28
|
+
*/
|
|
29
|
+
getAllModels(): ModelConfig[];
|
|
30
|
+
/**
|
|
31
|
+
* Gets models filtered by provider.
|
|
32
|
+
* @param provider - The provider name to filter by
|
|
33
|
+
* @returns Array of models from the specified provider
|
|
34
|
+
*/
|
|
35
|
+
getModelsByProvider(provider: string): ModelConfig[];
|
|
36
|
+
/**
|
|
37
|
+
* Adds or updates a model configuration.
|
|
38
|
+
* @param config - The model configuration to set
|
|
39
|
+
*/
|
|
40
|
+
setModel(config: ModelConfig): void;
|
|
41
|
+
/**
|
|
42
|
+
* Calculates cost breakdown for a usage record.
|
|
43
|
+
* Uses default pricing if model is not found in registry.
|
|
44
|
+
* @param usage - The usage record with token counts
|
|
45
|
+
* @returns Cost breakdown with prompt, completion, cache, and total costs
|
|
46
|
+
*/
|
|
47
|
+
calculateCost(usage: UsageRecord): CostBreakdown;
|
|
48
|
+
/**
|
|
49
|
+
* Checks if the cache needs to be refreshed based on cache duration.
|
|
50
|
+
* @returns True if cache is stale and needs refresh
|
|
51
|
+
*/
|
|
52
|
+
needsRefresh(): boolean;
|
|
53
|
+
/**
|
|
54
|
+
* Refreshes the cache timestamp.
|
|
55
|
+
* In future, this could fetch updated pricing from an API.
|
|
56
|
+
*/
|
|
57
|
+
refreshCache(): void;
|
|
58
|
+
/**
|
|
59
|
+
* Exports the current cache state for persistence.
|
|
60
|
+
* @returns Object containing models array and timestamp
|
|
61
|
+
*/
|
|
62
|
+
exportCache(): {
|
|
63
|
+
models: ModelConfig[];
|
|
64
|
+
timestamp: number;
|
|
65
|
+
};
|
|
66
|
+
/**
|
|
67
|
+
* Imports a previously exported cache.
|
|
68
|
+
* @param cache - The cache object to import
|
|
69
|
+
*/
|
|
70
|
+
importCache(cache: {
|
|
71
|
+
models: ModelConfig[];
|
|
72
|
+
timestamp: number;
|
|
73
|
+
}): void;
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Singleton instance of ModelRegistry for global access.
|
|
77
|
+
* Use this for shared model configuration across the application.
|
|
78
|
+
*/
|
|
79
|
+
export declare const modelRegistry: ModelRegistry;
|
|
80
|
+
//# sourceMappingURL=model-registry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"model-registry.d.ts","sourceRoot":"","sources":["../../../src/costs/model-registry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AA8G1E;;;GAGG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,MAAM,CAAuC;IACrD,OAAO,CAAC,cAAc,CAAa;IACnC,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAS;IAEzC;;;OAGG;gBACS,eAAe,GAAE,MAA4B;IAKzD;;OAEG;IACH,OAAO,CAAC,YAAY;IAOpB;;;;OAIG;IACH,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,WAAW,GAAG,SAAS;IAIlD;;;OAGG;IACH,YAAY,IAAI,WAAW,EAAE;IAI7B;;;;OAIG;IACH,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,WAAW,EAAE;IAIpD;;;OAGG;IACH,QAAQ,CAAC,MAAM,EAAE,WAAW,GAAG,IAAI;IAInC;;;;;OAKG;IACH,aAAa,CAAC,KAAK,EAAE,WAAW,GAAG,aAAa;IA+BhD;;;OAGG;IACH,YAAY,IAAI,OAAO;IAIvB;;;OAGG;IACH,YAAY,IAAI,IAAI;IAMpB;;;OAGG;IACH,WAAW,IAAI;QAAE,MAAM,EAAE,WAAW,EAAE,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE;IAO3D;;;OAGG;IACH,WAAW,CAAC,KAAK,EAAE;QAAE,MAAM,EAAE,WAAW,EAAE,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI;CAOvE;AAED;;;GAGG;AACH,eAAO,MAAM,aAAa,eAAsB,CAAC"}
|
|
@@ -0,0 +1,237 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Default model configurations with current pricing (2024/2025).
|
|
3
|
+
* Pricing sourced from official provider documentation.
|
|
4
|
+
*/
|
|
5
|
+
const DEFAULT_MODELS = [
|
|
6
|
+
// Claude models (Anthropic)
|
|
7
|
+
{
|
|
8
|
+
modelId: 'claude-3-5-sonnet-20241022',
|
|
9
|
+
provider: 'anthropic',
|
|
10
|
+
displayName: 'Claude 3.5 Sonnet',
|
|
11
|
+
pricing: {
|
|
12
|
+
promptPerMillion: 3.0,
|
|
13
|
+
completionPerMillion: 15.0,
|
|
14
|
+
cacheReadPerMillion: 0.30,
|
|
15
|
+
cacheWritePerMillion: 3.75,
|
|
16
|
+
},
|
|
17
|
+
capabilities: {
|
|
18
|
+
maxContextTokens: 200000,
|
|
19
|
+
maxOutputTokens: 8192,
|
|
20
|
+
supportsVision: true,
|
|
21
|
+
supportsTools: true,
|
|
22
|
+
supportsCaching: true,
|
|
23
|
+
},
|
|
24
|
+
},
|
|
25
|
+
{
|
|
26
|
+
modelId: 'claude-3-5-haiku-20241022',
|
|
27
|
+
provider: 'anthropic',
|
|
28
|
+
displayName: 'Claude 3.5 Haiku',
|
|
29
|
+
pricing: {
|
|
30
|
+
promptPerMillion: 0.80,
|
|
31
|
+
completionPerMillion: 4.0,
|
|
32
|
+
cacheReadPerMillion: 0.08,
|
|
33
|
+
cacheWritePerMillion: 1.0,
|
|
34
|
+
},
|
|
35
|
+
capabilities: {
|
|
36
|
+
maxContextTokens: 200000,
|
|
37
|
+
maxOutputTokens: 8192,
|
|
38
|
+
supportsVision: true,
|
|
39
|
+
supportsTools: true,
|
|
40
|
+
supportsCaching: true,
|
|
41
|
+
},
|
|
42
|
+
},
|
|
43
|
+
{
|
|
44
|
+
modelId: 'claude-3-opus-20240229',
|
|
45
|
+
provider: 'anthropic',
|
|
46
|
+
displayName: 'Claude 3 Opus',
|
|
47
|
+
pricing: {
|
|
48
|
+
promptPerMillion: 15.0,
|
|
49
|
+
completionPerMillion: 75.0,
|
|
50
|
+
cacheReadPerMillion: 1.50,
|
|
51
|
+
cacheWritePerMillion: 18.75,
|
|
52
|
+
},
|
|
53
|
+
capabilities: {
|
|
54
|
+
maxContextTokens: 200000,
|
|
55
|
+
maxOutputTokens: 4096,
|
|
56
|
+
supportsVision: true,
|
|
57
|
+
supportsTools: true,
|
|
58
|
+
supportsCaching: true,
|
|
59
|
+
},
|
|
60
|
+
},
|
|
61
|
+
// GPT-4o models (OpenAI)
|
|
62
|
+
{
|
|
63
|
+
modelId: 'gpt-4o',
|
|
64
|
+
provider: 'openai',
|
|
65
|
+
displayName: 'GPT-4o',
|
|
66
|
+
pricing: {
|
|
67
|
+
promptPerMillion: 2.50,
|
|
68
|
+
completionPerMillion: 10.0,
|
|
69
|
+
},
|
|
70
|
+
capabilities: {
|
|
71
|
+
maxContextTokens: 128000,
|
|
72
|
+
maxOutputTokens: 16384,
|
|
73
|
+
supportsVision: true,
|
|
74
|
+
supportsTools: true,
|
|
75
|
+
},
|
|
76
|
+
},
|
|
77
|
+
{
|
|
78
|
+
modelId: 'gpt-4o-mini',
|
|
79
|
+
provider: 'openai',
|
|
80
|
+
displayName: 'GPT-4o Mini',
|
|
81
|
+
pricing: {
|
|
82
|
+
promptPerMillion: 0.15,
|
|
83
|
+
completionPerMillion: 0.60,
|
|
84
|
+
},
|
|
85
|
+
capabilities: {
|
|
86
|
+
maxContextTokens: 128000,
|
|
87
|
+
maxOutputTokens: 16384,
|
|
88
|
+
supportsVision: true,
|
|
89
|
+
supportsTools: true,
|
|
90
|
+
},
|
|
91
|
+
},
|
|
92
|
+
{
|
|
93
|
+
modelId: 'gpt-4-turbo',
|
|
94
|
+
provider: 'openai',
|
|
95
|
+
displayName: 'GPT-4 Turbo',
|
|
96
|
+
pricing: {
|
|
97
|
+
promptPerMillion: 10.0,
|
|
98
|
+
completionPerMillion: 30.0,
|
|
99
|
+
},
|
|
100
|
+
capabilities: {
|
|
101
|
+
maxContextTokens: 128000,
|
|
102
|
+
maxOutputTokens: 4096,
|
|
103
|
+
supportsVision: true,
|
|
104
|
+
supportsTools: true,
|
|
105
|
+
},
|
|
106
|
+
},
|
|
107
|
+
];
|
|
108
|
+
/**
|
|
109
|
+
* Registry for model configurations with caching and cost calculation.
|
|
110
|
+
* Provides a centralized way to manage model metadata and pricing.
|
|
111
|
+
*/
|
|
112
|
+
export class ModelRegistry {
|
|
113
|
+
models = new Map();
|
|
114
|
+
cacheTimestamp = 0;
|
|
115
|
+
cacheDurationMs;
|
|
116
|
+
/**
|
|
117
|
+
* Creates a new ModelRegistry instance.
|
|
118
|
+
* @param cacheDurationMs - How long to cache model configs (default: 24 hours)
|
|
119
|
+
*/
|
|
120
|
+
constructor(cacheDurationMs = 24 * 60 * 60 * 1000) {
|
|
121
|
+
this.cacheDurationMs = cacheDurationMs;
|
|
122
|
+
this.loadDefaults();
|
|
123
|
+
}
|
|
124
|
+
/**
|
|
125
|
+
* Loads default model configurations into the registry.
|
|
126
|
+
*/
|
|
127
|
+
loadDefaults() {
|
|
128
|
+
for (const model of DEFAULT_MODELS) {
|
|
129
|
+
this.models.set(model.modelId, model);
|
|
130
|
+
}
|
|
131
|
+
this.cacheTimestamp = Date.now();
|
|
132
|
+
}
|
|
133
|
+
/**
|
|
134
|
+
* Gets a model configuration by ID.
|
|
135
|
+
* @param modelId - The unique model identifier
|
|
136
|
+
* @returns The model config or undefined if not found
|
|
137
|
+
*/
|
|
138
|
+
getModel(modelId) {
|
|
139
|
+
return this.models.get(modelId);
|
|
140
|
+
}
|
|
141
|
+
/**
|
|
142
|
+
* Gets all registered models.
|
|
143
|
+
* @returns Array of all model configurations
|
|
144
|
+
*/
|
|
145
|
+
getAllModels() {
|
|
146
|
+
return Array.from(this.models.values());
|
|
147
|
+
}
|
|
148
|
+
/**
|
|
149
|
+
* Gets models filtered by provider.
|
|
150
|
+
* @param provider - The provider name to filter by
|
|
151
|
+
* @returns Array of models from the specified provider
|
|
152
|
+
*/
|
|
153
|
+
getModelsByProvider(provider) {
|
|
154
|
+
return this.getAllModels().filter(m => m.provider === provider);
|
|
155
|
+
}
|
|
156
|
+
/**
|
|
157
|
+
* Adds or updates a model configuration.
|
|
158
|
+
* @param config - The model configuration to set
|
|
159
|
+
*/
|
|
160
|
+
setModel(config) {
|
|
161
|
+
this.models.set(config.modelId, config);
|
|
162
|
+
}
|
|
163
|
+
/**
|
|
164
|
+
* Calculates cost breakdown for a usage record.
|
|
165
|
+
* Uses default pricing if model is not found in registry.
|
|
166
|
+
* @param usage - The usage record with token counts
|
|
167
|
+
* @returns Cost breakdown with prompt, completion, cache, and total costs
|
|
168
|
+
*/
|
|
169
|
+
calculateCost(usage) {
|
|
170
|
+
const model = this.getModel(usage.modelId);
|
|
171
|
+
// Default pricing if model not found (Claude 3.5 Sonnet pricing as fallback)
|
|
172
|
+
const pricing = model?.pricing ?? {
|
|
173
|
+
promptPerMillion: 3.0,
|
|
174
|
+
completionPerMillion: 15.0,
|
|
175
|
+
};
|
|
176
|
+
const promptCost = (usage.promptTokens / 1_000_000) * pricing.promptPerMillion;
|
|
177
|
+
const completionCost = (usage.completionTokens / 1_000_000) * pricing.completionPerMillion;
|
|
178
|
+
let cacheCost = 0;
|
|
179
|
+
if (usage.cacheReadTokens && pricing.cacheReadPerMillion) {
|
|
180
|
+
cacheCost += (usage.cacheReadTokens / 1_000_000) * pricing.cacheReadPerMillion;
|
|
181
|
+
}
|
|
182
|
+
if (usage.cacheWriteTokens && pricing.cacheWritePerMillion) {
|
|
183
|
+
cacheCost += (usage.cacheWriteTokens / 1_000_000) * pricing.cacheWritePerMillion;
|
|
184
|
+
}
|
|
185
|
+
const totalCost = promptCost + completionCost + cacheCost;
|
|
186
|
+
return {
|
|
187
|
+
promptCost,
|
|
188
|
+
completionCost,
|
|
189
|
+
cacheCost,
|
|
190
|
+
totalCost,
|
|
191
|
+
formatted: `$${totalCost.toFixed(4)}`,
|
|
192
|
+
};
|
|
193
|
+
}
|
|
194
|
+
/**
|
|
195
|
+
* Checks if the cache needs to be refreshed based on cache duration.
|
|
196
|
+
* @returns True if cache is stale and needs refresh
|
|
197
|
+
*/
|
|
198
|
+
needsRefresh() {
|
|
199
|
+
return Date.now() - this.cacheTimestamp > this.cacheDurationMs;
|
|
200
|
+
}
|
|
201
|
+
/**
|
|
202
|
+
* Refreshes the cache timestamp.
|
|
203
|
+
* In future, this could fetch updated pricing from an API.
|
|
204
|
+
*/
|
|
205
|
+
refreshCache() {
|
|
206
|
+
// In future, this could fetch from an API
|
|
207
|
+
// For now, just reset the timestamp
|
|
208
|
+
this.cacheTimestamp = Date.now();
|
|
209
|
+
}
|
|
210
|
+
/**
|
|
211
|
+
* Exports the current cache state for persistence.
|
|
212
|
+
* @returns Object containing models array and timestamp
|
|
213
|
+
*/
|
|
214
|
+
exportCache() {
|
|
215
|
+
return {
|
|
216
|
+
models: this.getAllModels(),
|
|
217
|
+
timestamp: this.cacheTimestamp,
|
|
218
|
+
};
|
|
219
|
+
}
|
|
220
|
+
/**
|
|
221
|
+
* Imports a previously exported cache.
|
|
222
|
+
* @param cache - The cache object to import
|
|
223
|
+
*/
|
|
224
|
+
importCache(cache) {
|
|
225
|
+
this.models.clear();
|
|
226
|
+
for (const model of cache.models) {
|
|
227
|
+
this.models.set(model.modelId, model);
|
|
228
|
+
}
|
|
229
|
+
this.cacheTimestamp = cache.timestamp;
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
/**
|
|
233
|
+
* Singleton instance of ModelRegistry for global access.
|
|
234
|
+
* Use this for shared model configuration across the application.
|
|
235
|
+
*/
|
|
236
|
+
export const modelRegistry = new ModelRegistry();
|
|
237
|
+
//# sourceMappingURL=model-registry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"model-registry.js","sourceRoot":"","sources":["../../../src/costs/model-registry.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Model configuration with pricing information.
|
|
3
|
+
*/
|
|
4
|
+
export interface ModelConfig {
|
|
5
|
+
/** Unique model identifier (e.g., 'claude-3-5-sonnet-20241022') */
|
|
6
|
+
modelId: string;
|
|
7
|
+
/** Provider name (e.g., 'anthropic', 'openai', 'openrouter') */
|
|
8
|
+
provider: 'anthropic' | 'openai' | 'openrouter' | string;
|
|
9
|
+
/** Human-readable display name */
|
|
10
|
+
displayName: string;
|
|
11
|
+
/** Pricing per million tokens */
|
|
12
|
+
pricing: {
|
|
13
|
+
promptPerMillion: number;
|
|
14
|
+
completionPerMillion: number;
|
|
15
|
+
/** Cache read pricing (if supported) */
|
|
16
|
+
cacheReadPerMillion?: number;
|
|
17
|
+
/** Cache write pricing (if supported) */
|
|
18
|
+
cacheWritePerMillion?: number;
|
|
19
|
+
};
|
|
20
|
+
/** Model capabilities */
|
|
21
|
+
capabilities: {
|
|
22
|
+
maxContextTokens: number;
|
|
23
|
+
maxOutputTokens: number;
|
|
24
|
+
supportsVision?: boolean;
|
|
25
|
+
supportsTools?: boolean;
|
|
26
|
+
supportsCaching?: boolean;
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Usage record for cost calculation.
|
|
31
|
+
*/
|
|
32
|
+
export interface UsageRecord {
|
|
33
|
+
modelId: string;
|
|
34
|
+
promptTokens: number;
|
|
35
|
+
completionTokens: number;
|
|
36
|
+
cacheReadTokens?: number;
|
|
37
|
+
cacheWriteTokens?: number;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Calculated cost breakdown.
|
|
41
|
+
*/
|
|
42
|
+
export interface CostBreakdown {
|
|
43
|
+
promptCost: number;
|
|
44
|
+
completionCost: number;
|
|
45
|
+
cacheCost: number;
|
|
46
|
+
totalCost: number;
|
|
47
|
+
/** Cost formatted as string (e.g., '$0.0123') */
|
|
48
|
+
formatted: string;
|
|
49
|
+
}
|
|
50
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/costs/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,mEAAmE;IACnE,OAAO,EAAE,MAAM,CAAC;IAChB,gEAAgE;IAChE,QAAQ,EAAE,WAAW,GAAG,QAAQ,GAAG,YAAY,GAAG,MAAM,CAAC;IACzD,kCAAkC;IAClC,WAAW,EAAE,MAAM,CAAC;IACpB,iCAAiC;IACjC,OAAO,EAAE;QACP,gBAAgB,EAAE,MAAM,CAAC;QACzB,oBAAoB,EAAE,MAAM,CAAC;QAC7B,wCAAwC;QACxC,mBAAmB,CAAC,EAAE,MAAM,CAAC;QAC7B,yCAAyC;QACzC,oBAAoB,CAAC,EAAE,MAAM,CAAC;KAC/B,CAAC;IACF,yBAAyB;IACzB,YAAY,EAAE;QACZ,gBAAgB,EAAE,MAAM,CAAC;QACzB,eAAe,EAAE,MAAM,CAAC;QACxB,cAAc,CAAC,EAAE,OAAO,CAAC;QACzB,aAAa,CAAC,EAAE,OAAO,CAAC;QACxB,eAAe,CAAC,EAAE,OAAO,CAAC;KAC3B,CAAC;CACH;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;IACrB,gBAAgB,EAAE,MAAM,CAAC;IACzB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,iDAAiD;IACjD,SAAS,EAAE,MAAM,CAAC;CACnB"}
|