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,208 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Resilient Fetch Utility
|
|
3
|
+
*
|
|
4
|
+
* Provides network resilience for LLM provider requests:
|
|
5
|
+
* - Configurable timeout to prevent infinite hangs
|
|
6
|
+
* - Retry with exponential backoff for transient failures
|
|
7
|
+
* - Rate limit handling with Retry-After header parsing
|
|
8
|
+
* - Cancellation token support for user interrupts
|
|
9
|
+
*/
|
|
10
|
+
/**
|
|
11
|
+
* Error thrown when fetch fails after all retries.
|
|
12
|
+
*/
|
|
13
|
+
export class ResilientFetchError extends Error {
|
|
14
|
+
providerName;
|
|
15
|
+
attempts;
|
|
16
|
+
lastError;
|
|
17
|
+
isTimeout;
|
|
18
|
+
isCancelled;
|
|
19
|
+
constructor(message, providerName, attempts, lastError, isTimeout = false, isCancelled = false) {
|
|
20
|
+
super(message);
|
|
21
|
+
this.providerName = providerName;
|
|
22
|
+
this.attempts = attempts;
|
|
23
|
+
this.lastError = lastError;
|
|
24
|
+
this.isTimeout = isTimeout;
|
|
25
|
+
this.isCancelled = isCancelled;
|
|
26
|
+
this.name = 'ResilientFetchError';
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
// =============================================================================
|
|
30
|
+
// DEFAULT CONFIG
|
|
31
|
+
// =============================================================================
|
|
32
|
+
const DEFAULT_CONFIG = {
|
|
33
|
+
timeout: 30000,
|
|
34
|
+
maxRetries: 3,
|
|
35
|
+
baseRetryDelay: 1000,
|
|
36
|
+
maxRetryDelay: 30000,
|
|
37
|
+
retryableStatusCodes: [429, 500, 502, 503, 504],
|
|
38
|
+
};
|
|
39
|
+
// =============================================================================
|
|
40
|
+
// RESILIENT FETCH
|
|
41
|
+
// =============================================================================
|
|
42
|
+
/**
|
|
43
|
+
* Perform a fetch with timeout, retry, and cancellation support.
|
|
44
|
+
*
|
|
45
|
+
* @example
|
|
46
|
+
* ```typescript
|
|
47
|
+
* const { response, attempts, duration } = await resilientFetch({
|
|
48
|
+
* url: 'https://api.anthropic.com/v1/messages',
|
|
49
|
+
* init: { method: 'POST', headers: {...}, body: JSON.stringify(body) },
|
|
50
|
+
* providerName: 'anthropic',
|
|
51
|
+
* networkConfig: { timeout: 60000, maxRetries: 3 },
|
|
52
|
+
* });
|
|
53
|
+
* ```
|
|
54
|
+
*/
|
|
55
|
+
export async function resilientFetch(options) {
|
|
56
|
+
const { url, init, providerName, networkConfig = {}, cancellationToken, onRetry, } = options;
|
|
57
|
+
const config = { ...DEFAULT_CONFIG, ...networkConfig };
|
|
58
|
+
const startTime = Date.now();
|
|
59
|
+
let lastError;
|
|
60
|
+
let attempts = 0;
|
|
61
|
+
while (attempts < config.maxRetries) {
|
|
62
|
+
attempts++;
|
|
63
|
+
// Check for cancellation before each attempt
|
|
64
|
+
if (cancellationToken?.isCancelled) {
|
|
65
|
+
throw new ResilientFetchError(`Request cancelled by user`, providerName, attempts, lastError, false, true);
|
|
66
|
+
}
|
|
67
|
+
// Create AbortController for timeout
|
|
68
|
+
const controller = new AbortController();
|
|
69
|
+
const timeoutId = setTimeout(() => controller.abort(), config.timeout);
|
|
70
|
+
// Link external cancellation token
|
|
71
|
+
let cancelCleanup;
|
|
72
|
+
if (cancellationToken?.onCancel) {
|
|
73
|
+
cancellationToken.onCancel(() => controller.abort());
|
|
74
|
+
// Note: In a real implementation, you'd want proper cleanup here
|
|
75
|
+
}
|
|
76
|
+
try {
|
|
77
|
+
const response = await fetch(url, {
|
|
78
|
+
...init,
|
|
79
|
+
signal: controller.signal,
|
|
80
|
+
});
|
|
81
|
+
clearTimeout(timeoutId);
|
|
82
|
+
if (cancelCleanup)
|
|
83
|
+
cancelCleanup();
|
|
84
|
+
// Check if response is retryable
|
|
85
|
+
if (config.retryableStatusCodes.includes(response.status)) {
|
|
86
|
+
// Parse Retry-After header for rate limits
|
|
87
|
+
const retryAfter = parseRetryAfter(response.headers.get('Retry-After'));
|
|
88
|
+
const delay = retryAfter ?? calculateBackoff(attempts, config);
|
|
89
|
+
lastError = new Error(`HTTP ${response.status}: ${response.statusText}`);
|
|
90
|
+
// Don't retry if this is the last attempt
|
|
91
|
+
if (attempts >= config.maxRetries) {
|
|
92
|
+
throw new ResilientFetchError(`${providerName} request failed after ${attempts} attempts: HTTP ${response.status}`, providerName, attempts, lastError);
|
|
93
|
+
}
|
|
94
|
+
// Notify about retry
|
|
95
|
+
if (onRetry) {
|
|
96
|
+
onRetry(attempts, delay, lastError);
|
|
97
|
+
}
|
|
98
|
+
await sleep(delay);
|
|
99
|
+
continue;
|
|
100
|
+
}
|
|
101
|
+
// Success (or non-retryable error - let caller handle)
|
|
102
|
+
return {
|
|
103
|
+
response,
|
|
104
|
+
attempts,
|
|
105
|
+
duration: Date.now() - startTime,
|
|
106
|
+
};
|
|
107
|
+
}
|
|
108
|
+
catch (error) {
|
|
109
|
+
clearTimeout(timeoutId);
|
|
110
|
+
if (cancelCleanup)
|
|
111
|
+
cancelCleanup();
|
|
112
|
+
// Handle abort (timeout or cancellation)
|
|
113
|
+
if (error instanceof Error && error.name === 'AbortError') {
|
|
114
|
+
if (cancellationToken?.isCancelled) {
|
|
115
|
+
throw new ResilientFetchError(`Request cancelled by user`, providerName, attempts, error, false, true);
|
|
116
|
+
}
|
|
117
|
+
// Timeout
|
|
118
|
+
lastError = new Error(`Request timeout after ${config.timeout}ms`);
|
|
119
|
+
if (attempts >= config.maxRetries) {
|
|
120
|
+
throw new ResilientFetchError(`${providerName} request timed out after ${attempts} attempts`, providerName, attempts, lastError, true);
|
|
121
|
+
}
|
|
122
|
+
const delay = calculateBackoff(attempts, config);
|
|
123
|
+
if (onRetry) {
|
|
124
|
+
onRetry(attempts, delay, lastError);
|
|
125
|
+
}
|
|
126
|
+
await sleep(delay);
|
|
127
|
+
continue;
|
|
128
|
+
}
|
|
129
|
+
// Network error (ECONNREFUSED, DNS failure, etc.)
|
|
130
|
+
lastError = error instanceof Error ? error : new Error(String(error));
|
|
131
|
+
if (attempts >= config.maxRetries) {
|
|
132
|
+
throw new ResilientFetchError(`${providerName} network error after ${attempts} attempts: ${lastError.message}`, providerName, attempts, lastError);
|
|
133
|
+
}
|
|
134
|
+
const delay = calculateBackoff(attempts, config);
|
|
135
|
+
if (onRetry) {
|
|
136
|
+
onRetry(attempts, delay, lastError);
|
|
137
|
+
}
|
|
138
|
+
await sleep(delay);
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
// Should not reach here, but just in case
|
|
142
|
+
throw new ResilientFetchError(`${providerName} request failed after ${attempts} attempts`, providerName, attempts, lastError);
|
|
143
|
+
}
|
|
144
|
+
// =============================================================================
|
|
145
|
+
// HELPERS
|
|
146
|
+
// =============================================================================
|
|
147
|
+
/**
|
|
148
|
+
* Parse Retry-After header value.
|
|
149
|
+
* Can be either a number of seconds or an HTTP-date.
|
|
150
|
+
*/
|
|
151
|
+
function parseRetryAfter(header) {
|
|
152
|
+
if (!header)
|
|
153
|
+
return null;
|
|
154
|
+
// Try parsing as number of seconds
|
|
155
|
+
const seconds = parseInt(header, 10);
|
|
156
|
+
if (!isNaN(seconds)) {
|
|
157
|
+
return seconds * 1000; // Convert to milliseconds
|
|
158
|
+
}
|
|
159
|
+
// Try parsing as HTTP-date
|
|
160
|
+
try {
|
|
161
|
+
const date = new Date(header);
|
|
162
|
+
const delay = date.getTime() - Date.now();
|
|
163
|
+
return delay > 0 ? delay : null;
|
|
164
|
+
}
|
|
165
|
+
catch {
|
|
166
|
+
return null;
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
/**
|
|
170
|
+
* Calculate exponential backoff delay with jitter.
|
|
171
|
+
*/
|
|
172
|
+
function calculateBackoff(attempt, config) {
|
|
173
|
+
// Exponential backoff: baseDelay * 2^(attempt-1)
|
|
174
|
+
const exponentialDelay = config.baseRetryDelay * Math.pow(2, attempt - 1);
|
|
175
|
+
// Add jitter (±25%)
|
|
176
|
+
const jitter = exponentialDelay * 0.25 * (Math.random() * 2 - 1);
|
|
177
|
+
const delay = exponentialDelay + jitter;
|
|
178
|
+
// Clamp to max delay
|
|
179
|
+
return Math.min(delay, config.maxRetryDelay);
|
|
180
|
+
}
|
|
181
|
+
/**
|
|
182
|
+
* Sleep for a given number of milliseconds.
|
|
183
|
+
*/
|
|
184
|
+
function sleep(ms) {
|
|
185
|
+
return new Promise((resolve) => setTimeout(resolve, ms));
|
|
186
|
+
}
|
|
187
|
+
// =============================================================================
|
|
188
|
+
// UTILITIES
|
|
189
|
+
// =============================================================================
|
|
190
|
+
/**
|
|
191
|
+
* Check if an error is a resilient fetch error.
|
|
192
|
+
*/
|
|
193
|
+
export function isResilientFetchError(error) {
|
|
194
|
+
return error instanceof ResilientFetchError;
|
|
195
|
+
}
|
|
196
|
+
/**
|
|
197
|
+
* Check if an error is a timeout error.
|
|
198
|
+
*/
|
|
199
|
+
export function isTimeoutError(error) {
|
|
200
|
+
return isResilientFetchError(error) && error.isTimeout;
|
|
201
|
+
}
|
|
202
|
+
/**
|
|
203
|
+
* Check if an error is a cancellation error.
|
|
204
|
+
*/
|
|
205
|
+
export function isCancellationError(error) {
|
|
206
|
+
return isResilientFetchError(error) && error.isCancelled;
|
|
207
|
+
}
|
|
208
|
+
//# sourceMappingURL=resilient-fetch.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resilient-fetch.js","sourceRoot":"","sources":["../../../src/providers/resilient-fetch.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,227 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Lesson 2: Provider Abstraction Types
|
|
3
|
+
*
|
|
4
|
+
* Extended types that support multiple LLM providers.
|
|
5
|
+
*/
|
|
6
|
+
export interface Message {
|
|
7
|
+
role: 'user' | 'assistant' | 'system';
|
|
8
|
+
content: string;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Options for chat requests.
|
|
12
|
+
*/
|
|
13
|
+
export interface ChatOptions {
|
|
14
|
+
/** Maximum tokens to generate */
|
|
15
|
+
maxTokens?: number;
|
|
16
|
+
/** Temperature for randomness (0-1) */
|
|
17
|
+
temperature?: number;
|
|
18
|
+
/** Stop sequences */
|
|
19
|
+
stopSequences?: string[];
|
|
20
|
+
/** Model override (uses provider default if not specified) */
|
|
21
|
+
model?: string;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Response from chat request.
|
|
25
|
+
*/
|
|
26
|
+
export interface ChatResponse {
|
|
27
|
+
/** The assistant's response text */
|
|
28
|
+
content: string;
|
|
29
|
+
/** Why the response stopped */
|
|
30
|
+
stopReason: 'end_turn' | 'max_tokens' | 'stop_sequence';
|
|
31
|
+
/** Token usage (if available) */
|
|
32
|
+
usage?: {
|
|
33
|
+
inputTokens: number;
|
|
34
|
+
outputTokens: number;
|
|
35
|
+
/** Tokens read from cache (for providers that support caching) */
|
|
36
|
+
cachedTokens?: number;
|
|
37
|
+
/** Actual cost from provider (when available, e.g., OpenRouter) */
|
|
38
|
+
cost?: number;
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* The core LLM provider interface.
|
|
43
|
+
* All providers must implement this.
|
|
44
|
+
*/
|
|
45
|
+
export interface LLMProvider {
|
|
46
|
+
/** Provider name for logging/debugging */
|
|
47
|
+
readonly name: string;
|
|
48
|
+
/** Default model used by this provider */
|
|
49
|
+
readonly defaultModel: string;
|
|
50
|
+
/**
|
|
51
|
+
* Send a chat request to the LLM.
|
|
52
|
+
* @param messages - Conversation history
|
|
53
|
+
* @param options - Optional configuration
|
|
54
|
+
*/
|
|
55
|
+
chat(messages: Message[], options?: ChatOptions): Promise<ChatResponse>;
|
|
56
|
+
/**
|
|
57
|
+
* Check if the provider is properly configured.
|
|
58
|
+
*/
|
|
59
|
+
isConfigured(): boolean;
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Configuration for Anthropic provider.
|
|
63
|
+
*/
|
|
64
|
+
export interface AnthropicConfig {
|
|
65
|
+
apiKey: string;
|
|
66
|
+
model?: string;
|
|
67
|
+
baseUrl?: string;
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Configuration for OpenAI provider.
|
|
71
|
+
*/
|
|
72
|
+
export interface OpenAIConfig {
|
|
73
|
+
apiKey: string;
|
|
74
|
+
model?: string;
|
|
75
|
+
organization?: string;
|
|
76
|
+
baseUrl?: string;
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Configuration for Azure OpenAI provider.
|
|
80
|
+
*/
|
|
81
|
+
export interface AzureOpenAIConfig {
|
|
82
|
+
apiKey: string;
|
|
83
|
+
endpoint: string;
|
|
84
|
+
deployment: string;
|
|
85
|
+
apiVersion?: string;
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* Configuration for OpenRouter provider.
|
|
89
|
+
* OpenRouter provides access to 100+ models via a single API.
|
|
90
|
+
*/
|
|
91
|
+
export interface OpenRouterConfig {
|
|
92
|
+
apiKey: string;
|
|
93
|
+
model?: string;
|
|
94
|
+
siteUrl?: string;
|
|
95
|
+
siteName?: string;
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* Union of all provider configs.
|
|
99
|
+
*/
|
|
100
|
+
export type ProviderConfig = {
|
|
101
|
+
type: 'anthropic';
|
|
102
|
+
config: AnthropicConfig;
|
|
103
|
+
} | {
|
|
104
|
+
type: 'openai';
|
|
105
|
+
config: OpenAIConfig;
|
|
106
|
+
} | {
|
|
107
|
+
type: 'azure';
|
|
108
|
+
config: AzureOpenAIConfig;
|
|
109
|
+
} | {
|
|
110
|
+
type: 'openrouter';
|
|
111
|
+
config: OpenRouterConfig;
|
|
112
|
+
} | {
|
|
113
|
+
type: 'mock';
|
|
114
|
+
config?: undefined;
|
|
115
|
+
};
|
|
116
|
+
/**
|
|
117
|
+
* Base error for provider issues.
|
|
118
|
+
*/
|
|
119
|
+
export declare class ProviderError extends Error {
|
|
120
|
+
readonly provider: string;
|
|
121
|
+
readonly code: ProviderErrorCode;
|
|
122
|
+
readonly cause?: Error | undefined;
|
|
123
|
+
constructor(message: string, provider: string, code: ProviderErrorCode, cause?: Error | undefined);
|
|
124
|
+
}
|
|
125
|
+
export type ProviderErrorCode = 'NOT_CONFIGURED' | 'AUTHENTICATION_FAILED' | 'RATE_LIMITED' | 'CONTEXT_LENGTH_EXCEEDED' | 'INVALID_REQUEST' | 'SERVER_ERROR' | 'NETWORK_ERROR' | 'UNKNOWN';
|
|
126
|
+
/**
|
|
127
|
+
* OpenAI-compatible tool definition schema.
|
|
128
|
+
* This is the format expected by OpenRouter for native tool calling.
|
|
129
|
+
*
|
|
130
|
+
* Why this format?
|
|
131
|
+
* - OpenRouter uses OpenAI's API format
|
|
132
|
+
* - Native tool use is more reliable than JSON parsing from text
|
|
133
|
+
* - Type safety: the LLM's tool calls are structured, not string parsing
|
|
134
|
+
*/
|
|
135
|
+
export interface ToolDefinitionSchema {
|
|
136
|
+
type: 'function';
|
|
137
|
+
function: {
|
|
138
|
+
/** Tool name - must match what the LLM should call */
|
|
139
|
+
name: string;
|
|
140
|
+
/** Description shown to LLM - critical for correct tool selection */
|
|
141
|
+
description: string;
|
|
142
|
+
/** JSON Schema for parameters */
|
|
143
|
+
parameters: Record<string, unknown>;
|
|
144
|
+
/** Enable strict schema validation (OpenAI feature) */
|
|
145
|
+
strict?: boolean;
|
|
146
|
+
};
|
|
147
|
+
}
|
|
148
|
+
/**
|
|
149
|
+
* Extended chat options that include tool definitions.
|
|
150
|
+
*/
|
|
151
|
+
export interface ChatOptionsWithTools extends ChatOptions {
|
|
152
|
+
/** Tool definitions in OpenAI format */
|
|
153
|
+
tools?: ToolDefinitionSchema[];
|
|
154
|
+
/**
|
|
155
|
+
* How the LLM should choose tools:
|
|
156
|
+
* - 'auto': LLM decides whether to use tools (default)
|
|
157
|
+
* - 'required': LLM must use at least one tool
|
|
158
|
+
* - 'none': Disable tool use for this request
|
|
159
|
+
* - { type: 'function', function: { name: 'X' } }: Force specific tool
|
|
160
|
+
*/
|
|
161
|
+
tool_choice?: 'auto' | 'required' | 'none' | {
|
|
162
|
+
type: 'function';
|
|
163
|
+
function: {
|
|
164
|
+
name: string;
|
|
165
|
+
};
|
|
166
|
+
};
|
|
167
|
+
}
|
|
168
|
+
/**
|
|
169
|
+
* A tool call returned by the LLM.
|
|
170
|
+
* This is the native response format - no JSON parsing needed!
|
|
171
|
+
*/
|
|
172
|
+
export interface ToolCallResponse {
|
|
173
|
+
/** Unique ID for this tool call (used to match results) */
|
|
174
|
+
id: string;
|
|
175
|
+
type: 'function';
|
|
176
|
+
function: {
|
|
177
|
+
/** Which tool the LLM wants to call */
|
|
178
|
+
name: string;
|
|
179
|
+
/** Arguments as JSON string (needs JSON.parse) */
|
|
180
|
+
arguments: string;
|
|
181
|
+
};
|
|
182
|
+
}
|
|
183
|
+
/**
|
|
184
|
+
* Extended chat response that may include tool calls.
|
|
185
|
+
*/
|
|
186
|
+
export interface ChatResponseWithTools extends ChatResponse {
|
|
187
|
+
/** Tool calls requested by the LLM (if any) */
|
|
188
|
+
toolCalls?: ToolCallResponse[];
|
|
189
|
+
}
|
|
190
|
+
/**
|
|
191
|
+
* Message content that supports caching.
|
|
192
|
+
* Used for OpenRouter's cache_control feature on Anthropic models.
|
|
193
|
+
*/
|
|
194
|
+
export interface CacheableContent {
|
|
195
|
+
type: 'text';
|
|
196
|
+
text: string;
|
|
197
|
+
/** Mark this content for caching */
|
|
198
|
+
cache_control?: {
|
|
199
|
+
type: 'ephemeral';
|
|
200
|
+
};
|
|
201
|
+
}
|
|
202
|
+
/**
|
|
203
|
+
* Extended message that supports both string and structured content.
|
|
204
|
+
* Structured content allows for cache control markers.
|
|
205
|
+
*/
|
|
206
|
+
export interface MessageWithContent {
|
|
207
|
+
role: 'user' | 'assistant' | 'system' | 'tool';
|
|
208
|
+
content: string | CacheableContent[];
|
|
209
|
+
/** For tool result messages - matches the tool call ID */
|
|
210
|
+
tool_call_id?: string;
|
|
211
|
+
/** For tool result messages - the name of the tool (required for Gemini) */
|
|
212
|
+
name?: string;
|
|
213
|
+
/** For assistant messages - tool calls made */
|
|
214
|
+
tool_calls?: ToolCallResponse[];
|
|
215
|
+
}
|
|
216
|
+
/**
|
|
217
|
+
* Provider interface extended with native tool use.
|
|
218
|
+
* Providers that support tools implement this alongside LLMProvider.
|
|
219
|
+
*/
|
|
220
|
+
export interface LLMProviderWithTools extends LLMProvider {
|
|
221
|
+
/**
|
|
222
|
+
* Send a chat request with tool definitions.
|
|
223
|
+
* Returns structured tool calls instead of text that needs parsing.
|
|
224
|
+
*/
|
|
225
|
+
chatWithTools(messages: (Message | MessageWithContent)[], options?: ChatOptionsWithTools): Promise<ChatResponseWithTools>;
|
|
226
|
+
}
|
|
227
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/providers/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAMH,MAAM,WAAW,OAAO;IACtB,IAAI,EAAE,MAAM,GAAG,WAAW,GAAG,QAAQ,CAAC;IACtC,OAAO,EAAE,MAAM,CAAC;CACjB;AAMD;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,iCAAiC;IACjC,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB,uCAAuC;IACvC,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB,qBAAqB;IACrB,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IAEzB,8DAA8D;IAC9D,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,oCAAoC;IACpC,OAAO,EAAE,MAAM,CAAC;IAEhB,+BAA+B;IAC/B,UAAU,EAAE,UAAU,GAAG,YAAY,GAAG,eAAe,CAAC;IAExD,iCAAiC;IACjC,KAAK,CAAC,EAAE;QACN,WAAW,EAAE,MAAM,CAAC;QACpB,YAAY,EAAE,MAAM,CAAC;QACrB,kEAAkE;QAClE,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,mEAAmE;QACnE,IAAI,CAAC,EAAE,MAAM,CAAC;KACf,CAAC;CACH;AAED;;;GAGG;AACH,MAAM,WAAW,WAAW;IAC1B,0CAA0C;IAC1C,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAEtB,0CAA0C;IAC1C,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAE9B;;;;OAIG;IACH,IAAI,CAAC,QAAQ,EAAE,OAAO,EAAE,EAAE,OAAO,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;IAExE;;OAEG;IACH,YAAY,IAAI,OAAO,CAAC;CACzB;AAMD;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;;GAGG;AACH,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,MAAM,cAAc,GACtB;IAAE,IAAI,EAAE,WAAW,CAAC;IAAC,MAAM,EAAE,eAAe,CAAA;CAAE,GAC9C;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,MAAM,EAAE,YAAY,CAAA;CAAE,GACxC;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,iBAAiB,CAAA;CAAE,GAC5C;IAAE,IAAI,EAAE,YAAY,CAAC;IAAC,MAAM,EAAE,gBAAgB,CAAA;CAAE,GAChD;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,SAAS,CAAA;CAAE,CAAC;AAMzC;;GAEG;AACH,qBAAa,aAAc,SAAQ,KAAK;aAGpB,QAAQ,EAAE,MAAM;aAChB,IAAI,EAAE,iBAAiB;aACvB,KAAK,CAAC,EAAE,KAAK;gBAH7B,OAAO,EAAE,MAAM,EACC,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,iBAAiB,EACvB,KAAK,CAAC,EAAE,KAAK,YAAA;CAKhC;AAED,MAAM,MAAM,iBAAiB,GACzB,gBAAgB,GAChB,uBAAuB,GACvB,cAAc,GACd,yBAAyB,GACzB,iBAAiB,GACjB,cAAc,GACd,eAAe,GACf,SAAS,CAAC;AAMd;;;;;;;;GAQG;AACH,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,UAAU,CAAC;IACjB,QAAQ,EAAE;QACR,sDAAsD;QACtD,IAAI,EAAE,MAAM,CAAC;QACb,qEAAqE;QACrE,WAAW,EAAE,MAAM,CAAC;QACpB,iCAAiC;QACjC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACpC,uDAAuD;QACvD,MAAM,CAAC,EAAE,OAAO,CAAC;KAClB,CAAC;CACH;AAED;;GAEG;AACH,MAAM,WAAW,oBAAqB,SAAQ,WAAW;IACvD,wCAAwC;IACxC,KAAK,CAAC,EAAE,oBAAoB,EAAE,CAAC;IAE/B;;;;;;OAMG;IACH,WAAW,CAAC,EAAE,MAAM,GAAG,UAAU,GAAG,MAAM,GAAG;QAAE,IAAI,EAAE,UAAU,CAAC;QAAC,QAAQ,EAAE;YAAE,IAAI,EAAE,MAAM,CAAA;SAAE,CAAA;KAAE,CAAC;CAC/F;AAED;;;GAGG;AACH,MAAM,WAAW,gBAAgB;IAC/B,2DAA2D;IAC3D,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,UAAU,CAAC;IACjB,QAAQ,EAAE;QACR,uCAAuC;QACvC,IAAI,EAAE,MAAM,CAAC;QACb,kDAAkD;QAClD,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC;CACH;AAED;;GAEG;AACH,MAAM,WAAW,qBAAsB,SAAQ,YAAY;IACzD,+CAA+C;IAC/C,SAAS,CAAC,EAAE,gBAAgB,EAAE,CAAC;CAChC;AAED;;;GAGG;AACH,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,oCAAoC;IACpC,aAAa,CAAC,EAAE;QAAE,IAAI,EAAE,WAAW,CAAA;KAAE,CAAC;CACvC;AAED;;;GAGG;AACH,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,GAAG,WAAW,GAAG,QAAQ,GAAG,MAAM,CAAC;IAC/C,OAAO,EAAE,MAAM,GAAG,gBAAgB,EAAE,CAAC;IACrC,0DAA0D;IAC1D,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,4EAA4E;IAC5E,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,+CAA+C;IAC/C,UAAU,CAAC,EAAE,gBAAgB,EAAE,CAAC;CACjC;AAED;;;GAGG;AACH,MAAM,WAAW,oBAAqB,SAAQ,WAAW;IACvD;;;OAGG;IACH,aAAa,CACX,QAAQ,EAAE,CAAC,OAAO,GAAG,kBAAkB,CAAC,EAAE,EAC1C,OAAO,CAAC,EAAE,oBAAoB,GAC7B,OAAO,CAAC,qBAAqB,CAAC,CAAC;CACnC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Lesson 2: Provider Abstraction Types
|
|
3
|
+
*
|
|
4
|
+
* Extended types that support multiple LLM providers.
|
|
5
|
+
*/
|
|
6
|
+
// =============================================================================
|
|
7
|
+
// PROVIDER ERRORS
|
|
8
|
+
// =============================================================================
|
|
9
|
+
/**
|
|
10
|
+
* Base error for provider issues.
|
|
11
|
+
*/
|
|
12
|
+
export class ProviderError extends Error {
|
|
13
|
+
provider;
|
|
14
|
+
code;
|
|
15
|
+
cause;
|
|
16
|
+
constructor(message, provider, code, cause) {
|
|
17
|
+
super(message);
|
|
18
|
+
this.provider = provider;
|
|
19
|
+
this.code = code;
|
|
20
|
+
this.cause = cause;
|
|
21
|
+
this.name = 'ProviderError';
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/providers/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAmIH,gFAAgF;AAChF,kBAAkB;AAClB,gFAAgF;AAEhF;;GAEG;AACH,MAAM,OAAO,aAAc,SAAQ,KAAK;IAGpB;IACA;IACA;IAJlB,YACE,OAAe,EACC,QAAgB,EAChB,IAAuB,EACvB,KAAa;QAE7B,KAAK,CAAC,OAAO,CAAC,CAAC;QAJC,aAAQ,GAAR,QAAQ,CAAQ;QAChB,SAAI,GAAJ,IAAI,CAAmB;QACvB,UAAK,GAAL,KAAK,CAAQ;QAG7B,IAAI,CAAC,IAAI,GAAG,eAAe,CAAC;IAC9B,CAAC;CACF"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Session Resume Picker
|
|
3
|
+
*
|
|
4
|
+
* Displays recent sessions and allows user to select one to resume.
|
|
5
|
+
* Works with both SQLite and JSONL session stores.
|
|
6
|
+
*/
|
|
7
|
+
import type { SessionMetadata } from './integrations/session-store.js';
|
|
8
|
+
export interface SessionPickerOptions {
|
|
9
|
+
maxSessions?: number;
|
|
10
|
+
showCost?: boolean;
|
|
11
|
+
}
|
|
12
|
+
export interface SessionPickerResult {
|
|
13
|
+
action: 'resume' | 'new' | 'cancel';
|
|
14
|
+
sessionId?: string;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Display sessions and let user pick one.
|
|
18
|
+
*/
|
|
19
|
+
export declare function showSessionPicker(sessions: SessionMetadata[], options?: SessionPickerOptions): Promise<SessionPickerResult>;
|
|
20
|
+
/**
|
|
21
|
+
* Simple inline session picker (single line prompt).
|
|
22
|
+
*/
|
|
23
|
+
export declare function showQuickPicker(sessions: SessionMetadata[]): Promise<SessionPickerResult>;
|
|
24
|
+
/**
|
|
25
|
+
* Format sessions for display (used by /sessions command).
|
|
26
|
+
*/
|
|
27
|
+
export declare function formatSessionsTable(sessions: SessionMetadata[], maxRows?: number): string;
|
|
28
|
+
//# sourceMappingURL=session-picker.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session-picker.d.ts","sourceRoot":"","sources":["../../src/session-picker.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAmLvE,MAAM,WAAW,oBAAoB;IACnC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,QAAQ,GAAG,KAAK,GAAG,QAAQ,CAAC;IACpC,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,wBAAsB,iBAAiB,CACrC,QAAQ,EAAE,eAAe,EAAE,EAC3B,OAAO,GAAE,oBAAyB,GACjC,OAAO,CAAC,mBAAmB,CAAC,CAmD9B;AAED;;GAEG;AACH,wBAAsB,eAAe,CACnC,QAAQ,EAAE,eAAe,EAAE,GAC1B,OAAO,CAAC,mBAAmB,CAAC,CA0B9B;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,QAAQ,EAAE,eAAe,EAAE,EAC3B,OAAO,GAAE,MAAW,GACnB,MAAM,CA4BR"}
|