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,303 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Schema Migrator for SQLite Database
|
|
3
|
+
*
|
|
4
|
+
* Handles versioned SQL migrations using PRAGMA user_version.
|
|
5
|
+
* Migrations are applied sequentially and tracked in the database.
|
|
6
|
+
*
|
|
7
|
+
* ## Concurrency Warning
|
|
8
|
+
*
|
|
9
|
+
* This migrator is NOT safe for concurrent access. If multiple processes
|
|
10
|
+
* attempt to run migrations simultaneously, race conditions may occur.
|
|
11
|
+
* **Recommendation:** Run migrations from a single process at startup
|
|
12
|
+
* before spawning worker processes or subagents.
|
|
13
|
+
*
|
|
14
|
+
* ## Partial Failure Recovery
|
|
15
|
+
*
|
|
16
|
+
* SQLite requires autocommit mode for ALTER TABLE statements, so each
|
|
17
|
+
* migration runs outside a transaction. If a migration fails partway:
|
|
18
|
+
* - The schema version reflects the last successful migration
|
|
19
|
+
* - The database may have partial changes from the failed migration
|
|
20
|
+
*
|
|
21
|
+
* **Recommendation:** Design migrations to be idempotent (re-runnable).
|
|
22
|
+
* Column additions already handle "duplicate column name" errors gracefully.
|
|
23
|
+
* After fixing an issue, re-run applyMigrations() to continue.
|
|
24
|
+
*
|
|
25
|
+
* @example
|
|
26
|
+
* ```typescript
|
|
27
|
+
* import Database from 'better-sqlite3';
|
|
28
|
+
* import { applyMigrations, needsMigration } from './migrator.js';
|
|
29
|
+
*
|
|
30
|
+
* const db = new Database('sessions.db');
|
|
31
|
+
* if (needsMigration(db, './migrations')) {
|
|
32
|
+
* const result = applyMigrations(db, './migrations');
|
|
33
|
+
* console.log(`Applied ${result.applied} migrations`);
|
|
34
|
+
* }
|
|
35
|
+
* ```
|
|
36
|
+
*/
|
|
37
|
+
import { readdirSync, readFileSync } from 'node:fs';
|
|
38
|
+
import { join } from 'node:path';
|
|
39
|
+
// =============================================================================
|
|
40
|
+
// SCHEMA VERSION MANAGEMENT
|
|
41
|
+
// =============================================================================
|
|
42
|
+
/**
|
|
43
|
+
* Get the current schema version from the database.
|
|
44
|
+
* Uses SQLite's PRAGMA user_version.
|
|
45
|
+
*
|
|
46
|
+
* @param db - Database instance
|
|
47
|
+
* @returns Current schema version (0 if never migrated)
|
|
48
|
+
*/
|
|
49
|
+
export function getSchemaVersion(db) {
|
|
50
|
+
const result = db.pragma('user_version', { simple: true });
|
|
51
|
+
return typeof result === 'number' ? result : 0;
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Set the schema version in the database.
|
|
55
|
+
* Uses SQLite's PRAGMA user_version.
|
|
56
|
+
*
|
|
57
|
+
* @param db - Database instance
|
|
58
|
+
* @param version - Version number to set
|
|
59
|
+
*/
|
|
60
|
+
export function setSchemaVersion(db, version) {
|
|
61
|
+
db.pragma(`user_version = ${version}`);
|
|
62
|
+
}
|
|
63
|
+
// =============================================================================
|
|
64
|
+
// MIGRATION FILE LOADING
|
|
65
|
+
// =============================================================================
|
|
66
|
+
/**
|
|
67
|
+
* Parse a migration filename to extract version and name.
|
|
68
|
+
*
|
|
69
|
+
* @param filename - Migration filename (e.g., "001_initial.sql")
|
|
70
|
+
* @returns Parsed version and name, or null if invalid format
|
|
71
|
+
*/
|
|
72
|
+
function parseMigrationFilename(filename) {
|
|
73
|
+
// Match pattern: NNN_name.sql (e.g., 001_initial.sql, 002_add_costs.sql)
|
|
74
|
+
const match = filename.match(/^(\d+)_(.+)\.sql$/);
|
|
75
|
+
if (!match)
|
|
76
|
+
return null;
|
|
77
|
+
return {
|
|
78
|
+
version: parseInt(match[1], 10),
|
|
79
|
+
name: match[2],
|
|
80
|
+
};
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Load all migration files from a directory.
|
|
84
|
+
* Sorts migrations by version number.
|
|
85
|
+
*
|
|
86
|
+
* @param dir - Directory containing SQL migration files
|
|
87
|
+
* @returns Array of migration files sorted by version
|
|
88
|
+
*/
|
|
89
|
+
export function loadMigrations(dir) {
|
|
90
|
+
const migrations = [];
|
|
91
|
+
let files;
|
|
92
|
+
try {
|
|
93
|
+
files = readdirSync(dir);
|
|
94
|
+
}
|
|
95
|
+
catch {
|
|
96
|
+
// Directory doesn't exist or can't be read
|
|
97
|
+
return [];
|
|
98
|
+
}
|
|
99
|
+
for (const file of files) {
|
|
100
|
+
// Skip non-SQL files
|
|
101
|
+
if (!file.endsWith('.sql'))
|
|
102
|
+
continue;
|
|
103
|
+
const parsed = parseMigrationFilename(file);
|
|
104
|
+
if (!parsed)
|
|
105
|
+
continue;
|
|
106
|
+
const sql = readFileSync(join(dir, file), 'utf-8');
|
|
107
|
+
migrations.push({
|
|
108
|
+
version: parsed.version,
|
|
109
|
+
name: parsed.name,
|
|
110
|
+
sql,
|
|
111
|
+
});
|
|
112
|
+
}
|
|
113
|
+
// Sort by version number (ascending)
|
|
114
|
+
return migrations.sort((a, b) => a.version - b.version);
|
|
115
|
+
}
|
|
116
|
+
// =============================================================================
|
|
117
|
+
// MIGRATION APPLICATION
|
|
118
|
+
// =============================================================================
|
|
119
|
+
/**
|
|
120
|
+
* Check if the database needs migration.
|
|
121
|
+
*
|
|
122
|
+
* @param db - Database instance
|
|
123
|
+
* @param migrationsDir - Directory containing SQL migration files
|
|
124
|
+
* @returns True if there are pending migrations
|
|
125
|
+
*/
|
|
126
|
+
export function needsMigration(db, migrationsDir) {
|
|
127
|
+
const currentVersion = getSchemaVersion(db);
|
|
128
|
+
const migrations = loadMigrations(migrationsDir);
|
|
129
|
+
if (migrations.length === 0)
|
|
130
|
+
return false;
|
|
131
|
+
const latestVersion = migrations[migrations.length - 1].version;
|
|
132
|
+
return currentVersion < latestVersion;
|
|
133
|
+
}
|
|
134
|
+
/**
|
|
135
|
+
* Get the list of pending migrations.
|
|
136
|
+
*
|
|
137
|
+
* @param db - Database instance
|
|
138
|
+
* @param migrationsDir - Directory containing SQL migration files
|
|
139
|
+
* @returns Array of migrations that need to be applied
|
|
140
|
+
*/
|
|
141
|
+
export function getPendingMigrations(db, migrationsDir) {
|
|
142
|
+
const currentVersion = getSchemaVersion(db);
|
|
143
|
+
const migrations = loadMigrations(migrationsDir);
|
|
144
|
+
return migrations.filter(m => m.version > currentVersion);
|
|
145
|
+
}
|
|
146
|
+
/**
|
|
147
|
+
* Strip leading comment lines from a SQL statement.
|
|
148
|
+
* Preserves the actual SQL command after comments.
|
|
149
|
+
*/
|
|
150
|
+
function stripLeadingComments(sql) {
|
|
151
|
+
const lines = sql.split('\n');
|
|
152
|
+
let startIndex = 0;
|
|
153
|
+
// Skip leading blank lines and comment lines
|
|
154
|
+
while (startIndex < lines.length) {
|
|
155
|
+
const line = lines[startIndex].trim();
|
|
156
|
+
if (line === '' || line.startsWith('--')) {
|
|
157
|
+
startIndex++;
|
|
158
|
+
}
|
|
159
|
+
else {
|
|
160
|
+
break;
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
return lines.slice(startIndex).join('\n').trim();
|
|
164
|
+
}
|
|
165
|
+
/**
|
|
166
|
+
* Check if a statement is only comments (no actual SQL).
|
|
167
|
+
*/
|
|
168
|
+
function isCommentOnly(sql) {
|
|
169
|
+
const stripped = stripLeadingComments(sql);
|
|
170
|
+
return stripped === '' || stripped.startsWith('--');
|
|
171
|
+
}
|
|
172
|
+
/**
|
|
173
|
+
* Execute SQL statements from a migration.
|
|
174
|
+
* Handles multiple statements and makes column additions idempotent.
|
|
175
|
+
*
|
|
176
|
+
* @param db - Database instance
|
|
177
|
+
* @param sql - SQL content to execute
|
|
178
|
+
*/
|
|
179
|
+
function executeMigrationSql(db, sql) {
|
|
180
|
+
// Split by semicolons
|
|
181
|
+
const rawStatements = sql.split(';');
|
|
182
|
+
// Process each statement: trim, strip leading comments, filter out empty/comment-only
|
|
183
|
+
const statements = rawStatements
|
|
184
|
+
.map(s => s.trim())
|
|
185
|
+
.filter(s => s.length > 0 && !isCommentOnly(s));
|
|
186
|
+
for (const statement of statements) {
|
|
187
|
+
try {
|
|
188
|
+
db.exec(statement);
|
|
189
|
+
}
|
|
190
|
+
catch (err) {
|
|
191
|
+
// Check if it's a "duplicate column" error for ALTER TABLE
|
|
192
|
+
// This makes migrations idempotent for column additions
|
|
193
|
+
const errorMessage = err instanceof Error ? err.message : String(err);
|
|
194
|
+
if (errorMessage.includes('duplicate column name')) {
|
|
195
|
+
// Column already exists, skip this statement
|
|
196
|
+
continue;
|
|
197
|
+
}
|
|
198
|
+
throw err;
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
/**
|
|
203
|
+
* Apply all pending migrations to the database.
|
|
204
|
+
* Migrations are applied in a transaction for atomicity.
|
|
205
|
+
*
|
|
206
|
+
* @param db - Database instance
|
|
207
|
+
* @param migrationsDir - Directory containing SQL migration files
|
|
208
|
+
* @returns Result containing number of applied migrations and current version
|
|
209
|
+
* @throws Error if any migration fails (transaction is rolled back)
|
|
210
|
+
*/
|
|
211
|
+
export function applyMigrations(db, migrationsDir) {
|
|
212
|
+
const currentVersion = getSchemaVersion(db);
|
|
213
|
+
const migrations = loadMigrations(migrationsDir);
|
|
214
|
+
const appliedMigrations = [];
|
|
215
|
+
// Filter to only pending migrations
|
|
216
|
+
const pendingMigrations = migrations.filter(m => m.version > currentVersion);
|
|
217
|
+
if (pendingMigrations.length === 0) {
|
|
218
|
+
return {
|
|
219
|
+
applied: 0,
|
|
220
|
+
currentVersion,
|
|
221
|
+
appliedMigrations: [],
|
|
222
|
+
};
|
|
223
|
+
}
|
|
224
|
+
// Apply each migration in order
|
|
225
|
+
// Note: We can't use a single transaction for ALTER TABLE in SQLite
|
|
226
|
+
// as it requires autocommit mode. We apply each migration separately.
|
|
227
|
+
for (const migration of pendingMigrations) {
|
|
228
|
+
try {
|
|
229
|
+
executeMigrationSql(db, migration.sql);
|
|
230
|
+
// Update schema version after successful migration
|
|
231
|
+
setSchemaVersion(db, migration.version);
|
|
232
|
+
appliedMigrations.push(migration.name);
|
|
233
|
+
}
|
|
234
|
+
catch (err) {
|
|
235
|
+
const errorMessage = err instanceof Error ? err.message : String(err);
|
|
236
|
+
throw new Error(`Migration ${migration.version}_${migration.name} failed: ${errorMessage}`);
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
const newVersion = getSchemaVersion(db);
|
|
240
|
+
return {
|
|
241
|
+
applied: appliedMigrations.length,
|
|
242
|
+
currentVersion: newVersion,
|
|
243
|
+
appliedMigrations,
|
|
244
|
+
};
|
|
245
|
+
}
|
|
246
|
+
/**
|
|
247
|
+
* Apply migrations up to a specific version.
|
|
248
|
+
*
|
|
249
|
+
* @param db - Database instance
|
|
250
|
+
* @param migrationsDir - Directory containing SQL migration files
|
|
251
|
+
* @param targetVersion - Maximum version to apply
|
|
252
|
+
* @returns Result containing number of applied migrations and current version
|
|
253
|
+
*/
|
|
254
|
+
export function applyMigrationsTo(db, migrationsDir, targetVersion) {
|
|
255
|
+
const currentVersion = getSchemaVersion(db);
|
|
256
|
+
const migrations = loadMigrations(migrationsDir);
|
|
257
|
+
const appliedMigrations = [];
|
|
258
|
+
// Filter to migrations between current and target version
|
|
259
|
+
const pendingMigrations = migrations.filter(m => m.version > currentVersion && m.version <= targetVersion);
|
|
260
|
+
if (pendingMigrations.length === 0) {
|
|
261
|
+
return {
|
|
262
|
+
applied: 0,
|
|
263
|
+
currentVersion,
|
|
264
|
+
appliedMigrations: [],
|
|
265
|
+
};
|
|
266
|
+
}
|
|
267
|
+
for (const migration of pendingMigrations) {
|
|
268
|
+
try {
|
|
269
|
+
executeMigrationSql(db, migration.sql);
|
|
270
|
+
setSchemaVersion(db, migration.version);
|
|
271
|
+
appliedMigrations.push(migration.name);
|
|
272
|
+
}
|
|
273
|
+
catch (err) {
|
|
274
|
+
const errorMessage = err instanceof Error ? err.message : String(err);
|
|
275
|
+
throw new Error(`Migration ${migration.version}_${migration.name} failed: ${errorMessage}`);
|
|
276
|
+
}
|
|
277
|
+
}
|
|
278
|
+
const newVersion = getSchemaVersion(db);
|
|
279
|
+
return {
|
|
280
|
+
applied: appliedMigrations.length,
|
|
281
|
+
currentVersion: newVersion,
|
|
282
|
+
appliedMigrations,
|
|
283
|
+
};
|
|
284
|
+
}
|
|
285
|
+
/**
|
|
286
|
+
* Get migration status for the database.
|
|
287
|
+
*
|
|
288
|
+
* @param db - Database instance
|
|
289
|
+
* @param migrationsDir - Directory containing SQL migration files
|
|
290
|
+
* @returns Object containing version info and pending migrations
|
|
291
|
+
*/
|
|
292
|
+
export function getMigrationStatus(db, migrationsDir) {
|
|
293
|
+
const currentVersion = getSchemaVersion(db);
|
|
294
|
+
const migrations = loadMigrations(migrationsDir);
|
|
295
|
+
const pending = migrations.filter(m => m.version > currentVersion);
|
|
296
|
+
return {
|
|
297
|
+
currentVersion,
|
|
298
|
+
latestVersion: migrations.length > 0 ? migrations[migrations.length - 1].version : 0,
|
|
299
|
+
pendingCount: pending.length,
|
|
300
|
+
pendingMigrations: pending.map(m => ({ version: m.version, name: m.name })),
|
|
301
|
+
};
|
|
302
|
+
}
|
|
303
|
+
//# sourceMappingURL=migrator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"migrator.js","sourceRoot":"","sources":["../../../src/persistence/migrator.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SQLite Schema Definitions
|
|
3
|
+
*
|
|
4
|
+
* Embeds all migrations as TypeScript code - no external SQL files needed.
|
|
5
|
+
* This eliminates file path resolution issues and makes migrations part
|
|
6
|
+
* of the compiled bundle.
|
|
7
|
+
*
|
|
8
|
+
* ## Design Principles
|
|
9
|
+
*
|
|
10
|
+
* 1. **Migrations as Code**: Each migration is a TypeScript object with
|
|
11
|
+
* version, name, and SQL statements. No file I/O at runtime.
|
|
12
|
+
*
|
|
13
|
+
* 2. **Idempotent Statements**: Use IF NOT EXISTS and handle duplicate
|
|
14
|
+
* column errors gracefully.
|
|
15
|
+
*
|
|
16
|
+
* 3. **Feature Detection**: Tables are grouped by feature, allowing
|
|
17
|
+
* the store to detect which features are available.
|
|
18
|
+
*/
|
|
19
|
+
import type Database from 'better-sqlite3';
|
|
20
|
+
/**
|
|
21
|
+
* A schema migration definition.
|
|
22
|
+
*/
|
|
23
|
+
export interface Migration {
|
|
24
|
+
/** Version number (must be unique and sequential) */
|
|
25
|
+
version: number;
|
|
26
|
+
/** Human-readable name */
|
|
27
|
+
name: string;
|
|
28
|
+
/** SQL statements to execute (semicolon-separated) */
|
|
29
|
+
sql: string;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Result of applying migrations.
|
|
33
|
+
*/
|
|
34
|
+
export interface MigrationResult {
|
|
35
|
+
applied: number;
|
|
36
|
+
currentVersion: number;
|
|
37
|
+
appliedMigrations: string[];
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* All schema migrations, embedded as TypeScript code.
|
|
41
|
+
*
|
|
42
|
+
* To add a new migration:
|
|
43
|
+
* 1. Add a new entry with the next version number
|
|
44
|
+
* 2. Ensure SQL is idempotent (IF NOT EXISTS, etc.)
|
|
45
|
+
* 3. Run tests to verify migration applies cleanly
|
|
46
|
+
*/
|
|
47
|
+
export declare const MIGRATIONS: Migration[];
|
|
48
|
+
/**
|
|
49
|
+
* Feature flags based on which tables exist.
|
|
50
|
+
*/
|
|
51
|
+
export interface SchemaFeatures {
|
|
52
|
+
/** Core tables: sessions, entries, tool_calls, checkpoints */
|
|
53
|
+
core: boolean;
|
|
54
|
+
/** Cost tracking: usage_logs + session columns */
|
|
55
|
+
costs: boolean;
|
|
56
|
+
/** Session hierarchy: parent/child relationships */
|
|
57
|
+
hierarchy: boolean;
|
|
58
|
+
/** Compaction history tracking */
|
|
59
|
+
compaction: boolean;
|
|
60
|
+
/** File change tracking for undo */
|
|
61
|
+
fileChanges: boolean;
|
|
62
|
+
/** Goal integrity: goals + junctures */
|
|
63
|
+
goals: boolean;
|
|
64
|
+
/** Worker result storage: worker_results */
|
|
65
|
+
workerResults: boolean;
|
|
66
|
+
/** Pending plans for plan mode: pending_plans */
|
|
67
|
+
pendingPlans: boolean;
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Check which tables exist in the database.
|
|
71
|
+
*/
|
|
72
|
+
export declare function detectFeatures(db: Database.Database): SchemaFeatures;
|
|
73
|
+
/**
|
|
74
|
+
* Get current schema version from database.
|
|
75
|
+
*/
|
|
76
|
+
export declare function getSchemaVersion(db: Database.Database): number;
|
|
77
|
+
/**
|
|
78
|
+
* Set schema version in database.
|
|
79
|
+
*/
|
|
80
|
+
export declare function setSchemaVersion(db: Database.Database, version: number): void;
|
|
81
|
+
/**
|
|
82
|
+
* Apply all pending migrations to the database.
|
|
83
|
+
*/
|
|
84
|
+
export declare function applyMigrations(db: Database.Database): MigrationResult;
|
|
85
|
+
/**
|
|
86
|
+
* Get migration status.
|
|
87
|
+
*/
|
|
88
|
+
export declare function getMigrationStatus(db: Database.Database): {
|
|
89
|
+
currentVersion: number;
|
|
90
|
+
latestVersion: number;
|
|
91
|
+
pendingCount: number;
|
|
92
|
+
pendingMigrations: Array<{
|
|
93
|
+
version: number;
|
|
94
|
+
name: string;
|
|
95
|
+
}>;
|
|
96
|
+
};
|
|
97
|
+
/**
|
|
98
|
+
* Check if database needs migration.
|
|
99
|
+
*/
|
|
100
|
+
export declare function needsMigration(db: Database.Database): boolean;
|
|
101
|
+
//# sourceMappingURL=schema.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../src/persistence/schema.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAM3C;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,qDAAqD;IACrD,OAAO,EAAE,MAAM,CAAC;IAChB,0BAA0B;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,sDAAsD;IACtD,GAAG,EAAE,MAAM,CAAC;CACb;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,cAAc,EAAE,MAAM,CAAC;IACvB,iBAAiB,EAAE,MAAM,EAAE,CAAC;CAC7B;AAMD;;;;;;;GAOG;AACH,eAAO,MAAM,UAAU,EAAE,SAAS,EAiPjC,CAAC;AAMF;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,8DAA8D;IAC9D,IAAI,EAAE,OAAO,CAAC;IACd,kDAAkD;IAClD,KAAK,EAAE,OAAO,CAAC;IACf,oDAAoD;IACpD,SAAS,EAAE,OAAO,CAAC;IACnB,kCAAkC;IAClC,UAAU,EAAE,OAAO,CAAC;IACpB,oCAAoC;IACpC,WAAW,EAAE,OAAO,CAAC;IACrB,wCAAwC;IACxC,KAAK,EAAE,OAAO,CAAC;IACf,4CAA4C;IAC5C,aAAa,EAAE,OAAO,CAAC;IACvB,iDAAiD;IACjD,YAAY,EAAE,OAAO,CAAC;CACvB;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,GAAG,cAAc,CAkBpE;AAMD;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,GAAG,MAAM,CAG9D;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAE7E;AA8CD;;GAEG;AACH,wBAAgB,eAAe,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,GAAG,eAAe,CAqBtE;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,GAAG;IACzD,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;IACrB,iBAAiB,EAAE,KAAK,CAAC;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAC7D,CAUA;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,GAAG,OAAO,CAI7D"}
|