@stackmemoryai/stackmemory 0.3.1 → 0.3.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +69 -288
- package/dist/cli/commands/chromadb.js +267 -0
- package/dist/cli/commands/chromadb.js.map +7 -0
- package/dist/cli/commands/clear.js +191 -0
- package/dist/cli/commands/clear.js.map +7 -0
- package/dist/cli/commands/config.js +152 -1
- package/dist/cli/commands/config.js.map +2 -2
- package/dist/cli/commands/context.js +15 -5
- package/dist/cli/commands/context.js.map +2 -2
- package/dist/cli/commands/dashboard.js +178 -0
- package/dist/cli/commands/dashboard.js.map +7 -0
- package/dist/cli/commands/handoff.js +125 -8
- package/dist/cli/commands/handoff.js.map +2 -2
- package/dist/cli/commands/linear-create.js +132 -0
- package/dist/cli/commands/linear-create.js.map +7 -0
- package/dist/cli/commands/linear-list.js +69 -0
- package/dist/cli/commands/linear-list.js.map +7 -0
- package/dist/cli/commands/linear-migrate.js +40 -0
- package/dist/cli/commands/linear-migrate.js.map +7 -0
- package/dist/cli/commands/linear.js +185 -36
- package/dist/cli/commands/linear.js.map +2 -2
- package/dist/cli/commands/monitor.js +309 -0
- package/dist/cli/commands/monitor.js.map +7 -0
- package/dist/cli/commands/quality.js +414 -0
- package/dist/cli/commands/quality.js.map +7 -0
- package/dist/cli/commands/skills.js +262 -0
- package/dist/cli/commands/skills.js.map +7 -0
- package/dist/cli/commands/storage.js +275 -0
- package/dist/cli/commands/storage.js.map +7 -0
- package/dist/cli/commands/tui.js +66 -0
- package/dist/cli/commands/tui.js.map +7 -0
- package/dist/cli/commands/workflow.js +134 -0
- package/dist/cli/commands/workflow.js.map +7 -0
- package/dist/cli/index.js +109 -8
- package/dist/cli/index.js.map +3 -3
- package/dist/core/analytics/team-analytics.js +374 -0
- package/dist/core/analytics/team-analytics.js.map +7 -0
- package/dist/core/context/context-bridge.js +234 -0
- package/dist/core/context/context-bridge.js.map +7 -0
- package/dist/core/context/dual-stack-manager.js +850 -0
- package/dist/core/context/dual-stack-manager.js.map +7 -0
- package/dist/core/context/frame-handoff-manager.js +774 -0
- package/dist/core/context/frame-handoff-manager.js.map +7 -0
- package/dist/core/context/frame-manager.js +142 -13
- package/dist/core/context/frame-manager.js.map +2 -2
- package/dist/core/context/permission-manager.js +181 -0
- package/dist/core/context/permission-manager.js.map +7 -0
- package/dist/core/context/shared-context-layer.js +386 -0
- package/dist/core/context/shared-context-layer.js.map +7 -0
- package/dist/core/context/stack-merge-resolver.js +600 -0
- package/dist/core/context/stack-merge-resolver.js.map +7 -0
- package/dist/core/context/validation.js +121 -0
- package/dist/core/context/validation.js.map +7 -0
- package/dist/core/database/connection-pool.js +266 -175
- package/dist/core/database/connection-pool.js.map +2 -2
- package/dist/core/database/database-adapter.js +51 -0
- package/dist/core/database/database-adapter.js.map +7 -0
- package/dist/core/database/migration-manager.js +514 -0
- package/dist/core/database/migration-manager.js.map +7 -0
- package/dist/core/database/paradedb-adapter.js +970 -0
- package/dist/core/database/paradedb-adapter.js.map +7 -0
- package/dist/core/database/query-router.js +421 -0
- package/dist/core/database/query-router.js.map +7 -0
- package/dist/core/database/sqlite-adapter.js +547 -0
- package/dist/core/database/sqlite-adapter.js.map +7 -0
- package/dist/core/errors/index.js +21 -1
- package/dist/core/errors/index.js.map +2 -2
- package/dist/core/frame/workflow-templates-stub.js +42 -0
- package/dist/core/frame/workflow-templates-stub.js.map +7 -0
- package/dist/core/frame/workflow-templates.js +276 -0
- package/dist/core/frame/workflow-templates.js.map +7 -0
- package/dist/core/merge/conflict-detector.js +5 -2
- package/dist/core/merge/conflict-detector.js.map +2 -2
- package/dist/core/merge/resolution-engine.js +3 -14
- package/dist/core/merge/resolution-engine.js.map +2 -2
- package/dist/core/merge/stack-diff.js.map +2 -2
- package/dist/core/monitoring/logger.js +18 -3
- package/dist/core/monitoring/logger.js.map +2 -2
- package/dist/core/monitoring/session-monitor.js +296 -0
- package/dist/core/monitoring/session-monitor.js.map +7 -0
- package/dist/core/retrieval/context-retriever.js +475 -0
- package/dist/core/retrieval/context-retriever.js.map +7 -0
- package/dist/core/retrieval/graph-retrieval.js +658 -0
- package/dist/core/retrieval/graph-retrieval.js.map +7 -0
- package/dist/core/retrieval/hierarchical-retrieval.js +652 -0
- package/dist/core/retrieval/hierarchical-retrieval.js.map +7 -0
- package/dist/core/retrieval/retrieval-benchmarks.js +517 -0
- package/dist/core/retrieval/retrieval-benchmarks.js.map +7 -0
- package/dist/core/session/clear-survival-stub.js +49 -0
- package/dist/core/session/clear-survival-stub.js.map +7 -0
- package/dist/core/session/clear-survival.js +426 -0
- package/dist/core/session/clear-survival.js.map +7 -0
- package/dist/core/session/handoff-generator.js +339 -0
- package/dist/core/session/handoff-generator.js.map +7 -0
- package/dist/core/session/session-manager.js +61 -26
- package/dist/core/session/session-manager.js.map +3 -3
- package/dist/core/skills/index.js +3 -0
- package/dist/core/skills/index.js.map +7 -0
- package/dist/core/skills/skill-storage.js +749 -0
- package/dist/core/skills/skill-storage.js.map +7 -0
- package/dist/core/skills/types.js +189 -0
- package/dist/core/skills/types.js.map +7 -0
- package/dist/core/storage/chromadb-adapter.js +346 -0
- package/dist/core/storage/chromadb-adapter.js.map +7 -0
- package/dist/core/storage/railway-optimized-storage.js +550 -0
- package/dist/core/storage/railway-optimized-storage.js.map +7 -0
- package/dist/core/storage/remote-storage.js +456 -0
- package/dist/core/storage/remote-storage.js.map +7 -0
- package/dist/core/trace/trace-detector.js +136 -5
- package/dist/core/trace/trace-detector.js.map +2 -2
- package/dist/core/trace/trace-store.js.map +2 -2
- package/dist/features/tui/components/analytics-panel.js +136 -0
- package/dist/features/tui/components/analytics-panel.js.map +7 -0
- package/dist/features/tui/components/frame-visualizer.js +377 -0
- package/dist/features/tui/components/frame-visualizer.js.map +7 -0
- package/dist/features/tui/components/pr-tracker.js +123 -0
- package/dist/features/tui/components/pr-tracker.js.map +7 -0
- package/dist/features/tui/components/session-monitor.js +286 -0
- package/dist/features/tui/components/session-monitor.js.map +7 -0
- package/dist/features/tui/components/subagent-fleet.js +388 -0
- package/dist/features/tui/components/subagent-fleet.js.map +7 -0
- package/dist/features/tui/components/task-board.js +475 -0
- package/dist/features/tui/components/task-board.js.map +7 -0
- package/dist/features/tui/index.js +397 -0
- package/dist/features/tui/index.js.map +7 -0
- package/dist/features/tui/services/data-service.js +654 -0
- package/dist/features/tui/services/data-service.js.map +7 -0
- package/dist/features/tui/services/websocket-client.js +149 -0
- package/dist/features/tui/services/websocket-client.js.map +7 -0
- package/dist/features/tui/terminal-compat.js +205 -0
- package/dist/features/tui/terminal-compat.js.map +7 -0
- package/dist/features/tui/types.js +1 -0
- package/dist/features/tui/types.js.map +7 -0
- package/dist/integrations/claude-code/enhanced-pre-clear-hooks.js +455 -0
- package/dist/integrations/claude-code/enhanced-pre-clear-hooks.js.map +7 -0
- package/dist/integrations/claude-code/lifecycle-hooks.js +250 -0
- package/dist/integrations/claude-code/lifecycle-hooks.js.map +7 -0
- package/dist/integrations/claude-code/post-task-hooks.js +541 -0
- package/dist/integrations/claude-code/post-task-hooks.js.map +7 -0
- package/dist/integrations/linear/client.js +22 -4
- package/dist/integrations/linear/client.js.map +2 -2
- package/dist/integrations/linear/migration.js +299 -0
- package/dist/integrations/linear/migration.js.map +7 -0
- package/dist/integrations/linear/oauth-server.js +396 -0
- package/dist/integrations/linear/oauth-server.js.map +7 -0
- package/dist/integrations/linear/rest-client.js +199 -0
- package/dist/integrations/linear/rest-client.js.map +7 -0
- package/dist/integrations/linear/sync.js +14 -2
- package/dist/integrations/linear/sync.js.map +2 -2
- package/dist/integrations/linear/webhook-handler.js +200 -0
- package/dist/integrations/linear/webhook-handler.js.map +7 -0
- package/dist/integrations/mcp/handlers/skill-handlers.js +514 -0
- package/dist/integrations/mcp/handlers/skill-handlers.js.map +7 -0
- package/dist/integrations/mcp/middleware/tool-scoring.js +352 -0
- package/dist/integrations/mcp/middleware/tool-scoring.js.map +7 -0
- package/dist/integrations/mcp/refactored-server.js +31 -3
- package/dist/integrations/mcp/refactored-server.js.map +2 -2
- package/dist/integrations/mcp/server.js +25 -7
- package/dist/integrations/mcp/server.js.map +2 -2
- package/dist/mcp/stackmemory-mcp-server.js.map +1 -1
- package/dist/models/user.model.js +3 -0
- package/dist/models/user.model.js.map +2 -2
- package/dist/services/context-service.js.map +2 -2
- package/dist/skills/claude-skills.js +666 -0
- package/dist/skills/claude-skills.js.map +7 -0
- package/dist/utils/formatting.js +58 -0
- package/dist/utils/formatting.js.map +7 -0
- package/package.json +30 -24
- package/dist/cli/__tests__/index.test.js +0 -290
- package/dist/cli/__tests__/index.test.js.map +0 -7
- package/dist/core/config/__tests__/config-manager.test.js +0 -248
- package/dist/core/config/__tests__/config-manager.test.js.map +0 -7
- package/dist/core/context/__tests__/frame-manager.test.js +0 -879
- package/dist/core/context/__tests__/frame-manager.test.js.map +0 -7
- package/dist/core/digest/__tests__/enhanced-hybrid-digest.test.js +0 -379
- package/dist/core/digest/__tests__/enhanced-hybrid-digest.test.js.map +0 -7
- package/dist/core/digest/__tests__/frame-digest-integration.test.js +0 -230
- package/dist/core/digest/__tests__/frame-digest-integration.test.js.map +0 -7
- package/dist/core/errors/__tests__/error-handling.test.js +0 -270
- package/dist/core/errors/__tests__/error-handling.test.js.map +0 -7
- package/dist/core/merge/__tests__/conflict-scenarios.test.js +0 -414
- package/dist/core/merge/__tests__/conflict-scenarios.test.js.map +0 -7
- package/dist/core/query/__tests__/query-parser.test.js +0 -301
- package/dist/core/query/__tests__/query-parser.test.js.map +0 -7
- package/dist/core/query/__tests__/query-templates.test.js +0 -210
- package/dist/core/query/__tests__/query-templates.test.js.map +0 -7
- package/dist/core/trace/trace-detector.test.js +0 -401
- package/dist/core/trace/trace-detector.test.js.map +0 -7
- package/dist/features/tasks/__tests__/pebbles-task-store.test.js +0 -747
- package/dist/features/tasks/__tests__/pebbles-task-store.test.js.map +0 -7
- package/dist/integrations/linear/__tests__/auth.test.js +0 -558
- package/dist/integrations/linear/__tests__/auth.test.js.map +0 -7
- package/dist/integrations/linear/__tests__/sync-service.test.js +0 -760
- package/dist/integrations/linear/__tests__/sync-service.test.js.map +0 -7
- package/dist/integrations/mcp/__tests__/server.test.js +0 -798
- package/dist/integrations/mcp/__tests__/server.test.js.map +0 -7
- package/dist/scripts/benchmark-performance.d.ts +0 -7
- package/dist/scripts/benchmark-performance.d.ts.map +0 -1
- package/dist/scripts/benchmark-performance.js +0 -44
- package/dist/scripts/benchmark-performance.js.map +0 -1
- package/dist/scripts/cancel-duplicate-tasks.d.ts +0 -7
- package/dist/scripts/cancel-duplicate-tasks.d.ts.map +0 -1
- package/dist/scripts/cancel-duplicate-tasks.js +0 -172
- package/dist/scripts/cancel-duplicate-tasks.js.map +0 -1
- package/dist/scripts/cleanup-duplicate-tasks.d.ts +0 -12
- package/dist/scripts/cleanup-duplicate-tasks.d.ts.map +0 -1
- package/dist/scripts/cleanup-duplicate-tasks.js +0 -215
- package/dist/scripts/cleanup-duplicate-tasks.js.map +0 -1
- package/dist/scripts/initialize.d.ts +0 -6
- package/dist/scripts/initialize.d.ts.map +0 -1
- package/dist/scripts/initialize.js +0 -93
- package/dist/scripts/initialize.js.map +0 -1
- package/dist/scripts/list-linear-tasks.d.ts +0 -6
- package/dist/scripts/list-linear-tasks.d.ts.map +0 -1
- package/dist/scripts/list-linear-tasks.js +0 -121
- package/dist/scripts/list-linear-tasks.js.map +0 -1
- package/dist/scripts/merge-linear-duplicates-safe.d.ts +0 -7
- package/dist/scripts/merge-linear-duplicates-safe.d.ts.map +0 -1
- package/dist/scripts/merge-linear-duplicates-safe.js +0 -267
- package/dist/scripts/merge-linear-duplicates-safe.js.map +0 -1
- package/dist/scripts/show-linear-summary.d.ts +0 -6
- package/dist/scripts/show-linear-summary.d.ts.map +0 -1
- package/dist/scripts/show-linear-summary.js +0 -120
- package/dist/scripts/show-linear-summary.js.map +0 -1
- package/dist/scripts/status.d.ts +0 -6
- package/dist/scripts/status.d.ts.map +0 -1
- package/dist/scripts/status.js +0 -101
- package/dist/scripts/status.js.map +0 -1
- package/dist/src/agents/core/agent-task-manager.d.ts +0 -154
- package/dist/src/agents/core/agent-task-manager.d.ts.map +0 -1
- package/dist/src/agents/core/agent-task-manager.js +0 -504
- package/dist/src/agents/core/agent-task-manager.js.map +0 -1
- package/dist/src/agents/verifiers/base-verifier.d.ts +0 -112
- package/dist/src/agents/verifiers/base-verifier.d.ts.map +0 -1
- package/dist/src/agents/verifiers/base-verifier.js +0 -130
- package/dist/src/agents/verifiers/base-verifier.js.map +0 -1
- package/dist/src/agents/verifiers/formatter-verifier.d.ts +0 -14
- package/dist/src/agents/verifiers/formatter-verifier.d.ts.map +0 -1
- package/dist/src/agents/verifiers/formatter-verifier.js +0 -107
- package/dist/src/agents/verifiers/formatter-verifier.js.map +0 -1
- package/dist/src/agents/verifiers/llm-judge.d.ts +0 -46
- package/dist/src/agents/verifiers/llm-judge.d.ts.map +0 -1
- package/dist/src/agents/verifiers/llm-judge.js +0 -248
- package/dist/src/agents/verifiers/llm-judge.js.map +0 -1
- package/dist/src/cli/auto-detect.d.ts +0 -61
- package/dist/src/cli/auto-detect.d.ts.map +0 -1
- package/dist/src/cli/auto-detect.js +0 -350
- package/dist/src/cli/auto-detect.js.map +0 -1
- package/dist/src/cli/browser-test.d.ts +0 -6
- package/dist/src/cli/browser-test.d.ts.map +0 -1
- package/dist/src/cli/browser-test.js +0 -32
- package/dist/src/cli/browser-test.js.map +0 -1
- package/dist/src/cli/claude-sm.d.ts +0 -7
- package/dist/src/cli/claude-sm.d.ts.map +0 -1
- package/dist/src/cli/claude-sm.js +0 -412
- package/dist/src/cli/claude-sm.js.map +0 -1
- package/dist/src/cli/commands/agent.d.ts +0 -9
- package/dist/src/cli/commands/agent.d.ts.map +0 -1
- package/dist/src/cli/commands/agent.js +0 -303
- package/dist/src/cli/commands/agent.js.map +0 -1
- package/dist/src/cli/commands/config.d.ts +0 -6
- package/dist/src/cli/commands/config.d.ts.map +0 -1
- package/dist/src/cli/commands/config.js +0 -224
- package/dist/src/cli/commands/config.js.map +0 -1
- package/dist/src/cli/commands/context.d.ts +0 -7
- package/dist/src/cli/commands/context.d.ts.map +0 -1
- package/dist/src/cli/commands/context.js +0 -365
- package/dist/src/cli/commands/context.js.map +0 -1
- package/dist/src/cli/commands/handoff.d.ts +0 -6
- package/dist/src/cli/commands/handoff.d.ts.map +0 -1
- package/dist/src/cli/commands/handoff.js +0 -212
- package/dist/src/cli/commands/handoff.js.map +0 -1
- package/dist/src/cli/commands/linear-test.d.ts +0 -6
- package/dist/src/cli/commands/linear-test.d.ts.map +0 -1
- package/dist/src/cli/commands/linear-test.js +0 -123
- package/dist/src/cli/commands/linear-test.js.map +0 -1
- package/dist/src/cli/commands/linear.d.ts +0 -6
- package/dist/src/cli/commands/linear.d.ts.map +0 -1
- package/dist/src/cli/commands/linear.js +0 -393
- package/dist/src/cli/commands/linear.js.map +0 -1
- package/dist/src/cli/commands/log.d.ts +0 -7
- package/dist/src/cli/commands/log.d.ts.map +0 -1
- package/dist/src/cli/commands/log.js +0 -168
- package/dist/src/cli/commands/log.js.map +0 -1
- package/dist/src/cli/commands/onboard.d.ts +0 -8
- package/dist/src/cli/commands/onboard.d.ts.map +0 -1
- package/dist/src/cli/commands/onboard.js +0 -363
- package/dist/src/cli/commands/onboard.js.map +0 -1
- package/dist/src/cli/commands/projects.d.ts +0 -8
- package/dist/src/cli/commands/projects.d.ts.map +0 -1
- package/dist/src/cli/commands/projects.js +0 -220
- package/dist/src/cli/commands/projects.js.map +0 -1
- package/dist/src/cli/commands/search.d.ts +0 -7
- package/dist/src/cli/commands/search.d.ts.map +0 -1
- package/dist/src/cli/commands/search.js +0 -162
- package/dist/src/cli/commands/search.js.map +0 -1
- package/dist/src/cli/commands/session.d.ts +0 -7
- package/dist/src/cli/commands/session.d.ts.map +0 -1
- package/dist/src/cli/commands/session.js +0 -222
- package/dist/src/cli/commands/session.js.map +0 -1
- package/dist/src/cli/commands/tasks.d.ts +0 -7
- package/dist/src/cli/commands/tasks.d.ts.map +0 -1
- package/dist/src/cli/commands/tasks.js +0 -229
- package/dist/src/cli/commands/tasks.js.map +0 -1
- package/dist/src/cli/commands/webhook.d.ts +0 -3
- package/dist/src/cli/commands/webhook.d.ts.map +0 -1
- package/dist/src/cli/commands/webhook.js +0 -157
- package/dist/src/cli/commands/webhook.js.map +0 -1
- package/dist/src/cli/commands/worktree.d.ts +0 -8
- package/dist/src/cli/commands/worktree.d.ts.map +0 -1
- package/dist/src/cli/commands/worktree.js +0 -339
- package/dist/src/cli/commands/worktree.js.map +0 -1
- package/dist/src/cli/index.d.ts +0 -8
- package/dist/src/cli/index.d.ts.map +0 -1
- package/dist/src/cli/index.js +0 -995
- package/dist/src/cli/index.js.map +0 -1
- package/dist/src/cli/utils/viewer.d.ts +0 -3
- package/dist/src/cli/utils/viewer.d.ts.map +0 -1
- package/dist/src/cli/utils/viewer.js +0 -91
- package/dist/src/cli/utils/viewer.js.map +0 -1
- package/dist/src/core/config/config-manager.d.ts +0 -95
- package/dist/src/core/config/config-manager.d.ts.map +0 -1
- package/dist/src/core/config/config-manager.js +0 -359
- package/dist/src/core/config/config-manager.js.map +0 -1
- package/dist/src/core/config/types.d.ts +0 -72
- package/dist/src/core/config/types.d.ts.map +0 -1
- package/dist/src/core/config/types.js +0 -127
- package/dist/src/core/config/types.js.map +0 -1
- package/dist/src/core/context/auto-context.d.ts +0 -22
- package/dist/src/core/context/auto-context.d.ts.map +0 -1
- package/dist/src/core/context/auto-context.js +0 -77
- package/dist/src/core/context/auto-context.js.map +0 -1
- package/dist/src/core/context/compaction-handler.d.ts +0 -119
- package/dist/src/core/context/compaction-handler.d.ts.map +0 -1
- package/dist/src/core/context/compaction-handler.js +0 -306
- package/dist/src/core/context/compaction-handler.js.map +0 -1
- package/dist/src/core/context/frame-database.d.ts +0 -59
- package/dist/src/core/context/frame-database.d.ts.map +0 -1
- package/dist/src/core/context/frame-database.js +0 -333
- package/dist/src/core/context/frame-database.js.map +0 -1
- package/dist/src/core/context/frame-digest.d.ts +0 -59
- package/dist/src/core/context/frame-digest.d.ts.map +0 -1
- package/dist/src/core/context/frame-digest.js +0 -264
- package/dist/src/core/context/frame-digest.js.map +0 -1
- package/dist/src/core/context/frame-manager.d.ts +0 -112
- package/dist/src/core/context/frame-manager.d.ts.map +0 -1
- package/dist/src/core/context/frame-manager.js +0 -600
- package/dist/src/core/context/frame-manager.js.map +0 -1
- package/dist/src/core/context/frame-stack.d.ts +0 -85
- package/dist/src/core/context/frame-stack.d.ts.map +0 -1
- package/dist/src/core/context/frame-stack.js +0 -287
- package/dist/src/core/context/frame-stack.js.map +0 -1
- package/dist/src/core/context/frame-types.d.ts +0 -67
- package/dist/src/core/context/frame-types.d.ts.map +0 -1
- package/dist/src/core/context/frame-types.js +0 -6
- package/dist/src/core/context/frame-types.js.map +0 -1
- package/dist/src/core/context/index.d.ts +0 -11
- package/dist/src/core/context/index.d.ts.map +0 -1
- package/dist/src/core/context/index.js +0 -14
- package/dist/src/core/context/index.js.map +0 -1
- package/dist/src/core/context/model-aware-compaction.d.ts +0 -101
- package/dist/src/core/context/model-aware-compaction.d.ts.map +0 -1
- package/dist/src/core/context/model-aware-compaction.js +0 -616
- package/dist/src/core/context/model-aware-compaction.js.map +0 -1
- package/dist/src/core/context/refactored-frame-manager.d.ts +0 -99
- package/dist/src/core/context/refactored-frame-manager.d.ts.map +0 -1
- package/dist/src/core/context/refactored-frame-manager.js +0 -340
- package/dist/src/core/context/refactored-frame-manager.js.map +0 -1
- package/dist/src/core/database/batch-operations.d.ts +0 -118
- package/dist/src/core/database/batch-operations.d.ts.map +0 -1
- package/dist/src/core/database/batch-operations.js +0 -339
- package/dist/src/core/database/batch-operations.js.map +0 -1
- package/dist/src/core/database/connection-pool.d.ts +0 -79
- package/dist/src/core/database/connection-pool.d.ts.map +0 -1
- package/dist/src/core/database/connection-pool.js +0 -236
- package/dist/src/core/database/connection-pool.js.map +0 -1
- package/dist/src/core/database/query-cache.d.ts +0 -135
- package/dist/src/core/database/query-cache.d.ts.map +0 -1
- package/dist/src/core/database/query-cache.js +0 -294
- package/dist/src/core/database/query-cache.js.map +0 -1
- package/dist/src/core/digest/enhanced-hybrid-digest.d.ts +0 -125
- package/dist/src/core/digest/enhanced-hybrid-digest.d.ts.map +0 -1
- package/dist/src/core/digest/enhanced-hybrid-digest.js +0 -282
- package/dist/src/core/digest/enhanced-hybrid-digest.js.map +0 -1
- package/dist/src/core/digest/frame-digest-integration.d.ts +0 -67
- package/dist/src/core/digest/frame-digest-integration.d.ts.map +0 -1
- package/dist/src/core/digest/frame-digest-integration.js +0 -198
- package/dist/src/core/digest/frame-digest-integration.js.map +0 -1
- package/dist/src/core/digest/hybrid-digest-generator.d.ts +0 -76
- package/dist/src/core/digest/hybrid-digest-generator.d.ts.map +0 -1
- package/dist/src/core/digest/hybrid-digest-generator.js +0 -629
- package/dist/src/core/digest/hybrid-digest-generator.js.map +0 -1
- package/dist/src/core/digest/index.d.ts +0 -9
- package/dist/src/core/digest/index.d.ts.map +0 -1
- package/dist/src/core/digest/index.js +0 -9
- package/dist/src/core/digest/index.js.map +0 -1
- package/dist/src/core/digest/types.d.ts +0 -154
- package/dist/src/core/digest/types.d.ts.map +0 -1
- package/dist/src/core/digest/types.js +0 -18
- package/dist/src/core/digest/types.js.map +0 -1
- package/dist/src/core/errors/index.d.ts +0 -143
- package/dist/src/core/errors/index.d.ts.map +0 -1
- package/dist/src/core/errors/index.js +0 -282
- package/dist/src/core/errors/index.js.map +0 -1
- package/dist/src/core/errors/recovery.d.ts +0 -86
- package/dist/src/core/errors/recovery.d.ts.map +0 -1
- package/dist/src/core/errors/recovery.js +0 -274
- package/dist/src/core/errors/recovery.js.map +0 -1
- package/dist/src/core/merge/conflict-detector.d.ts +0 -122
- package/dist/src/core/merge/conflict-detector.d.ts.map +0 -1
- package/dist/src/core/merge/conflict-detector.js +0 -468
- package/dist/src/core/merge/conflict-detector.js.map +0 -1
- package/dist/src/core/merge/index.d.ts +0 -9
- package/dist/src/core/merge/index.d.ts.map +0 -1
- package/dist/src/core/merge/index.js +0 -9
- package/dist/src/core/merge/index.js.map +0 -1
- package/dist/src/core/merge/resolution-engine.d.ts +0 -120
- package/dist/src/core/merge/resolution-engine.d.ts.map +0 -1
- package/dist/src/core/merge/resolution-engine.js +0 -573
- package/dist/src/core/merge/resolution-engine.js.map +0 -1
- package/dist/src/core/merge/stack-diff.d.ts +0 -97
- package/dist/src/core/merge/stack-diff.d.ts.map +0 -1
- package/dist/src/core/merge/stack-diff.js +0 -516
- package/dist/src/core/merge/stack-diff.js.map +0 -1
- package/dist/src/core/merge/types.d.ts +0 -110
- package/dist/src/core/merge/types.d.ts.map +0 -1
- package/dist/src/core/merge/types.js +0 -6
- package/dist/src/core/merge/types.js.map +0 -1
- package/dist/src/core/monitoring/error-handler.d.ts +0 -46
- package/dist/src/core/monitoring/error-handler.d.ts.map +0 -1
- package/dist/src/core/monitoring/error-handler.js +0 -212
- package/dist/src/core/monitoring/error-handler.js.map +0 -1
- package/dist/src/core/monitoring/logger.d.ts +0 -24
- package/dist/src/core/monitoring/logger.d.ts.map +0 -1
- package/dist/src/core/monitoring/logger.js +0 -126
- package/dist/src/core/monitoring/logger.js.map +0 -1
- package/dist/src/core/monitoring/metrics.d.ts +0 -10
- package/dist/src/core/monitoring/metrics.d.ts.map +0 -1
- package/dist/src/core/monitoring/metrics.js +0 -152
- package/dist/src/core/monitoring/metrics.js.map +0 -1
- package/dist/src/core/monitoring/progress-tracker.d.ts +0 -95
- package/dist/src/core/monitoring/progress-tracker.d.ts.map +0 -1
- package/dist/src/core/monitoring/progress-tracker.js +0 -178
- package/dist/src/core/monitoring/progress-tracker.js.map +0 -1
- package/dist/src/core/performance/context-cache.d.ts +0 -109
- package/dist/src/core/performance/context-cache.d.ts.map +0 -1
- package/dist/src/core/performance/context-cache.js +0 -280
- package/dist/src/core/performance/context-cache.js.map +0 -1
- package/dist/src/core/performance/index.d.ts +0 -3
- package/dist/src/core/performance/index.d.ts.map +0 -1
- package/dist/src/core/performance/index.js +0 -3
- package/dist/src/core/performance/index.js.map +0 -1
- package/dist/src/core/performance/lazy-context-loader.d.ts +0 -93
- package/dist/src/core/performance/lazy-context-loader.d.ts.map +0 -1
- package/dist/src/core/performance/lazy-context-loader.js +0 -332
- package/dist/src/core/performance/lazy-context-loader.js.map +0 -1
- package/dist/src/core/performance/monitor.d.ts +0 -48
- package/dist/src/core/performance/monitor.d.ts.map +0 -1
- package/dist/src/core/performance/monitor.js +0 -226
- package/dist/src/core/performance/monitor.js.map +0 -1
- package/dist/src/core/performance/optimized-frame-context.d.ts +0 -74
- package/dist/src/core/performance/optimized-frame-context.d.ts.map +0 -1
- package/dist/src/core/performance/optimized-frame-context.js +0 -330
- package/dist/src/core/performance/optimized-frame-context.js.map +0 -1
- package/dist/src/core/performance/performance-benchmark.d.ts +0 -50
- package/dist/src/core/performance/performance-benchmark.d.ts.map +0 -1
- package/dist/src/core/performance/performance-benchmark.js +0 -290
- package/dist/src/core/performance/performance-benchmark.js.map +0 -1
- package/dist/src/core/performance/performance-profiler.d.ts +0 -151
- package/dist/src/core/performance/performance-profiler.d.ts.map +0 -1
- package/dist/src/core/performance/performance-profiler.js +0 -346
- package/dist/src/core/performance/performance-profiler.js.map +0 -1
- package/dist/src/core/performance/streaming-jsonl-parser.d.ts +0 -41
- package/dist/src/core/performance/streaming-jsonl-parser.d.ts.map +0 -1
- package/dist/src/core/performance/streaming-jsonl-parser.js +0 -193
- package/dist/src/core/performance/streaming-jsonl-parser.js.map +0 -1
- package/dist/src/core/persistence/postgres-adapter.d.ts +0 -31
- package/dist/src/core/persistence/postgres-adapter.d.ts.map +0 -1
- package/dist/src/core/persistence/postgres-adapter.js +0 -330
- package/dist/src/core/persistence/postgres-adapter.js.map +0 -1
- package/dist/src/core/projects/project-manager.d.ts +0 -130
- package/dist/src/core/projects/project-manager.d.ts.map +0 -1
- package/dist/src/core/projects/project-manager.js +0 -709
- package/dist/src/core/projects/project-manager.js.map +0 -1
- package/dist/src/core/query/query-parser.d.ts +0 -109
- package/dist/src/core/query/query-parser.d.ts.map +0 -1
- package/dist/src/core/query/query-parser.js +0 -415
- package/dist/src/core/query/query-parser.js.map +0 -1
- package/dist/src/core/query/query-templates.d.ts +0 -44
- package/dist/src/core/query/query-templates.d.ts.map +0 -1
- package/dist/src/core/query/query-templates.js +0 -326
- package/dist/src/core/query/query-templates.js.map +0 -1
- package/dist/src/core/retrieval/index.d.ts +0 -8
- package/dist/src/core/retrieval/index.d.ts.map +0 -1
- package/dist/src/core/retrieval/index.js +0 -8
- package/dist/src/core/retrieval/index.js.map +0 -1
- package/dist/src/core/retrieval/llm-context-retrieval.d.ts +0 -73
- package/dist/src/core/retrieval/llm-context-retrieval.d.ts.map +0 -1
- package/dist/src/core/retrieval/llm-context-retrieval.js +0 -597
- package/dist/src/core/retrieval/llm-context-retrieval.js.map +0 -1
- package/dist/src/core/retrieval/summary-generator.d.ts +0 -63
- package/dist/src/core/retrieval/summary-generator.d.ts.map +0 -1
- package/dist/src/core/retrieval/summary-generator.js +0 -622
- package/dist/src/core/retrieval/summary-generator.js.map +0 -1
- package/dist/src/core/retrieval/types.d.ts +0 -257
- package/dist/src/core/retrieval/types.d.ts.map +0 -1
- package/dist/src/core/retrieval/types.js +0 -18
- package/dist/src/core/retrieval/types.js.map +0 -1
- package/dist/src/core/session/index.d.ts +0 -2
- package/dist/src/core/session/index.d.ts.map +0 -1
- package/dist/src/core/session/index.js +0 -2
- package/dist/src/core/session/index.js.map +0 -1
- package/dist/src/core/session/session-manager.d.ts +0 -69
- package/dist/src/core/session/session-manager.d.ts.map +0 -1
- package/dist/src/core/session/session-manager.js +0 -311
- package/dist/src/core/session/session-manager.js.map +0 -1
- package/dist/src/core/trace/cli-trace-wrapper.d.ts +0 -23
- package/dist/src/core/trace/cli-trace-wrapper.d.ts.map +0 -1
- package/dist/src/core/trace/cli-trace-wrapper.js +0 -141
- package/dist/src/core/trace/cli-trace-wrapper.js.map +0 -1
- package/dist/src/core/trace/db-trace-wrapper.d.ts +0 -36
- package/dist/src/core/trace/db-trace-wrapper.d.ts.map +0 -1
- package/dist/src/core/trace/db-trace-wrapper.js +0 -252
- package/dist/src/core/trace/db-trace-wrapper.js.map +0 -1
- package/dist/src/core/trace/debug-trace.d.ts +0 -84
- package/dist/src/core/trace/debug-trace.d.ts.map +0 -1
- package/dist/src/core/trace/debug-trace.js +0 -402
- package/dist/src/core/trace/debug-trace.js.map +0 -1
- package/dist/src/core/trace/error-test.d.ts +0 -6
- package/dist/src/core/trace/error-test.d.ts.map +0 -1
- package/dist/src/core/trace/error-test.js +0 -128
- package/dist/src/core/trace/error-test.js.map +0 -1
- package/dist/src/core/trace/index.d.ts +0 -25
- package/dist/src/core/trace/index.d.ts.map +0 -1
- package/dist/src/core/trace/index.js +0 -121
- package/dist/src/core/trace/index.js.map +0 -1
- package/dist/src/core/trace/linear-api-wrapper.d.ts +0 -17
- package/dist/src/core/trace/linear-api-wrapper.d.ts.map +0 -1
- package/dist/src/core/trace/linear-api-wrapper.js +0 -205
- package/dist/src/core/trace/linear-api-wrapper.js.map +0 -1
- package/dist/src/core/trace/performance-test.d.ts +0 -6
- package/dist/src/core/trace/performance-test.d.ts.map +0 -1
- package/dist/src/core/trace/performance-test.js +0 -111
- package/dist/src/core/trace/performance-test.js.map +0 -1
- package/dist/src/core/trace/trace-demo.d.ts +0 -8
- package/dist/src/core/trace/trace-demo.d.ts.map +0 -1
- package/dist/src/core/trace/trace-demo.js +0 -154
- package/dist/src/core/trace/trace-demo.js.map +0 -1
- package/dist/src/core/trace/trace-detector.d.ts +0 -108
- package/dist/src/core/trace/trace-detector.d.ts.map +0 -1
- package/dist/src/core/trace/trace-detector.demo.d.ts +0 -5
- package/dist/src/core/trace/trace-detector.demo.d.ts.map +0 -1
- package/dist/src/core/trace/trace-detector.demo.js +0 -145
- package/dist/src/core/trace/trace-detector.demo.js.map +0 -1
- package/dist/src/core/trace/trace-detector.js +0 -425
- package/dist/src/core/trace/trace-detector.js.map +0 -1
- package/dist/src/core/trace/trace-store.d.ts +0 -60
- package/dist/src/core/trace/trace-store.d.ts.map +0 -1
- package/dist/src/core/trace/trace-store.js +0 -323
- package/dist/src/core/trace/trace-store.js.map +0 -1
- package/dist/src/core/trace/types.d.ts +0 -81
- package/dist/src/core/trace/types.d.ts.map +0 -1
- package/dist/src/core/trace/types.js +0 -70
- package/dist/src/core/trace/types.js.map +0 -1
- package/dist/src/core/types.d.ts +0 -35
- package/dist/src/core/types.d.ts.map +0 -1
- package/dist/src/core/types.js +0 -2
- package/dist/src/core/types.js.map +0 -1
- package/dist/src/core/utils/update-checker.d.ts +0 -38
- package/dist/src/core/utils/update-checker.d.ts.map +0 -1
- package/dist/src/core/utils/update-checker.js +0 -213
- package/dist/src/core/utils/update-checker.js.map +0 -1
- package/dist/src/core/worktree/worktree-manager.d.ts +0 -110
- package/dist/src/core/worktree/worktree-manager.d.ts.map +0 -1
- package/dist/src/core/worktree/worktree-manager.js +0 -456
- package/dist/src/core/worktree/worktree-manager.js.map +0 -1
- package/dist/src/features/analytics/api/analytics-api.d.ts +0 -24
- package/dist/src/features/analytics/api/analytics-api.d.ts.map +0 -1
- package/dist/src/features/analytics/api/analytics-api.js +0 -289
- package/dist/src/features/analytics/api/analytics-api.js.map +0 -1
- package/dist/src/features/analytics/core/analytics-service.d.ts +0 -29
- package/dist/src/features/analytics/core/analytics-service.d.ts.map +0 -1
- package/dist/src/features/analytics/core/analytics-service.js +0 -275
- package/dist/src/features/analytics/core/analytics-service.js.map +0 -1
- package/dist/src/features/analytics/index.d.ts +0 -12
- package/dist/src/features/analytics/index.d.ts.map +0 -1
- package/dist/src/features/analytics/index.js +0 -11
- package/dist/src/features/analytics/index.js.map +0 -1
- package/dist/src/features/analytics/queries/metrics-queries.d.ts +0 -11
- package/dist/src/features/analytics/queries/metrics-queries.d.ts.map +0 -1
- package/dist/src/features/analytics/queries/metrics-queries.js +0 -240
- package/dist/src/features/analytics/queries/metrics-queries.js.map +0 -1
- package/dist/src/features/analytics/types/metrics.d.ts +0 -60
- package/dist/src/features/analytics/types/metrics.d.ts.map +0 -1
- package/dist/src/features/analytics/types/metrics.js +0 -2
- package/dist/src/features/analytics/types/metrics.js.map +0 -1
- package/dist/src/features/browser/browser-mcp.d.ts +0 -94
- package/dist/src/features/browser/browser-mcp.d.ts.map +0 -1
- package/dist/src/features/browser/browser-mcp.js +0 -459
- package/dist/src/features/browser/browser-mcp.js.map +0 -1
- package/dist/src/features/tasks/pebbles-task-store.d.ts +0 -128
- package/dist/src/features/tasks/pebbles-task-store.d.ts.map +0 -1
- package/dist/src/features/tasks/pebbles-task-store.js +0 -572
- package/dist/src/features/tasks/pebbles-task-store.js.map +0 -1
- package/dist/src/features/tasks/task-aware-context.d.ts +0 -103
- package/dist/src/features/tasks/task-aware-context.d.ts.map +0 -1
- package/dist/src/features/tasks/task-aware-context.js +0 -412
- package/dist/src/features/tasks/task-aware-context.js.map +0 -1
- package/dist/src/index.d.ts +0 -21
- package/dist/src/index.d.ts.map +0 -1
- package/dist/src/index.js +0 -9
- package/dist/src/index.js.map +0 -1
- package/dist/src/integrations/linear/auth.d.ts +0 -99
- package/dist/src/integrations/linear/auth.d.ts.map +0 -1
- package/dist/src/integrations/linear/auth.js +0 -319
- package/dist/src/integrations/linear/auth.js.map +0 -1
- package/dist/src/integrations/linear/auto-sync.d.ts +0 -77
- package/dist/src/integrations/linear/auto-sync.d.ts.map +0 -1
- package/dist/src/integrations/linear/auto-sync.js +0 -268
- package/dist/src/integrations/linear/auto-sync.js.map +0 -1
- package/dist/src/integrations/linear/client.d.ts +0 -127
- package/dist/src/integrations/linear/client.d.ts.map +0 -1
- package/dist/src/integrations/linear/client.js +0 -446
- package/dist/src/integrations/linear/client.js.map +0 -1
- package/dist/src/integrations/linear/config.d.ts +0 -51
- package/dist/src/integrations/linear/config.d.ts.map +0 -1
- package/dist/src/integrations/linear/config.js +0 -103
- package/dist/src/integrations/linear/config.js.map +0 -1
- package/dist/src/integrations/linear/sync-manager.d.ts +0 -78
- package/dist/src/integrations/linear/sync-manager.d.ts.map +0 -1
- package/dist/src/integrations/linear/sync-manager.js +0 -235
- package/dist/src/integrations/linear/sync-manager.js.map +0 -1
- package/dist/src/integrations/linear/sync-service.d.ts +0 -46
- package/dist/src/integrations/linear/sync-service.d.ts.map +0 -1
- package/dist/src/integrations/linear/sync-service.js +0 -217
- package/dist/src/integrations/linear/sync-service.js.map +0 -1
- package/dist/src/integrations/linear/sync.d.ts +0 -125
- package/dist/src/integrations/linear/sync.d.ts.map +0 -1
- package/dist/src/integrations/linear/sync.js +0 -563
- package/dist/src/integrations/linear/sync.js.map +0 -1
- package/dist/src/integrations/linear/types.d.ts +0 -90
- package/dist/src/integrations/linear/types.d.ts.map +0 -1
- package/dist/src/integrations/linear/types.js +0 -2
- package/dist/src/integrations/linear/types.js.map +0 -1
- package/dist/src/integrations/linear/webhook-server.d.ts +0 -32
- package/dist/src/integrations/linear/webhook-server.d.ts.map +0 -1
- package/dist/src/integrations/linear/webhook-server.js +0 -190
- package/dist/src/integrations/linear/webhook-server.js.map +0 -1
- package/dist/src/integrations/linear/webhook.d.ts +0 -108
- package/dist/src/integrations/linear/webhook.d.ts.map +0 -1
- package/dist/src/integrations/linear/webhook.js +0 -291
- package/dist/src/integrations/linear/webhook.js.map +0 -1
- package/dist/src/integrations/mcp/handlers/context-handlers.d.ts +0 -39
- package/dist/src/integrations/mcp/handlers/context-handlers.d.ts.map +0 -1
- package/dist/src/integrations/mcp/handlers/context-handlers.js +0 -266
- package/dist/src/integrations/mcp/handlers/context-handlers.js.map +0 -1
- package/dist/src/integrations/mcp/handlers/index.d.ts +0 -37
- package/dist/src/integrations/mcp/handlers/index.d.ts.map +0 -1
- package/dist/src/integrations/mcp/handlers/index.js +0 -134
- package/dist/src/integrations/mcp/handlers/index.js.map +0 -1
- package/dist/src/integrations/mcp/handlers/linear-handlers.d.ts +0 -33
- package/dist/src/integrations/mcp/handlers/linear-handlers.d.ts.map +0 -1
- package/dist/src/integrations/mcp/handlers/linear-handlers.js +0 -251
- package/dist/src/integrations/mcp/handlers/linear-handlers.js.map +0 -1
- package/dist/src/integrations/mcp/handlers/task-handlers.d.ts +0 -42
- package/dist/src/integrations/mcp/handlers/task-handlers.d.ts.map +0 -1
- package/dist/src/integrations/mcp/handlers/task-handlers.js +0 -238
- package/dist/src/integrations/mcp/handlers/task-handlers.js.map +0 -1
- package/dist/src/integrations/mcp/handlers/trace-handlers.d.ts +0 -41
- package/dist/src/integrations/mcp/handlers/trace-handlers.d.ts.map +0 -1
- package/dist/src/integrations/mcp/handlers/trace-handlers.js +0 -298
- package/dist/src/integrations/mcp/handlers/trace-handlers.js.map +0 -1
- package/dist/src/integrations/mcp/index.d.ts +0 -13
- package/dist/src/integrations/mcp/index.d.ts.map +0 -1
- package/dist/src/integrations/mcp/index.js +0 -17
- package/dist/src/integrations/mcp/index.js.map +0 -1
- package/dist/src/integrations/mcp/refactored-server.d.ts +0 -76
- package/dist/src/integrations/mcp/refactored-server.d.ts.map +0 -1
- package/dist/src/integrations/mcp/refactored-server.js +0 -351
- package/dist/src/integrations/mcp/refactored-server.js.map +0 -1
- package/dist/src/integrations/mcp/server.d.ts +0 -54
- package/dist/src/integrations/mcp/server.d.ts.map +0 -1
- package/dist/src/integrations/mcp/server.js +0 -1616
- package/dist/src/integrations/mcp/server.js.map +0 -1
- package/dist/src/integrations/mcp/tool-definitions.d.ts +0 -44
- package/dist/src/integrations/mcp/tool-definitions.d.ts.map +0 -1
- package/dist/src/integrations/mcp/tool-definitions.js +0 -563
- package/dist/src/integrations/mcp/tool-definitions.js.map +0 -1
- package/dist/src/integrations/mcp/trace-test.d.ts +0 -5
- package/dist/src/integrations/mcp/trace-test.d.ts.map +0 -1
- package/dist/src/integrations/mcp/trace-test.js +0 -54
- package/dist/src/integrations/mcp/trace-test.js.map +0 -1
- package/dist/src/integrations/pg-aiguide/embedding-provider.d.ts +0 -48
- package/dist/src/integrations/pg-aiguide/embedding-provider.d.ts.map +0 -1
- package/dist/src/integrations/pg-aiguide/embedding-provider.js +0 -190
- package/dist/src/integrations/pg-aiguide/embedding-provider.js.map +0 -1
- package/dist/src/integrations/pg-aiguide/semantic-search.d.ts +0 -34
- package/dist/src/integrations/pg-aiguide/semantic-search.d.ts.map +0 -1
- package/dist/src/integrations/pg-aiguide/semantic-search.js +0 -176
- package/dist/src/integrations/pg-aiguide/semantic-search.js.map +0 -1
- package/dist/src/integrations/pg-aiguide/timescale-analytics.d.ts +0 -44
- package/dist/src/integrations/pg-aiguide/timescale-analytics.d.ts.map +0 -1
- package/dist/src/integrations/pg-aiguide/timescale-analytics.js +0 -215
- package/dist/src/integrations/pg-aiguide/timescale-analytics.js.map +0 -1
- package/dist/src/mcp/stackmemory-mcp-server.d.ts +0 -9
- package/dist/src/mcp/stackmemory-mcp-server.d.ts.map +0 -1
- package/dist/src/mcp/stackmemory-mcp-server.js +0 -519
- package/dist/src/mcp/stackmemory-mcp-server.js.map +0 -1
- package/dist/src/middleware/exponential-rate-limiter.d.ts +0 -78
- package/dist/src/middleware/exponential-rate-limiter.d.ts.map +0 -1
- package/dist/src/middleware/exponential-rate-limiter.js +0 -293
- package/dist/src/middleware/exponential-rate-limiter.js.map +0 -1
- package/dist/src/models/user.model.d.ts +0 -62
- package/dist/src/models/user.model.d.ts.map +0 -1
- package/dist/src/models/user.model.js +0 -311
- package/dist/src/models/user.model.js.map +0 -1
- package/dist/src/servers/production/auth-middleware.d.ts +0 -76
- package/dist/src/servers/production/auth-middleware.d.ts.map +0 -1
- package/dist/src/servers/production/auth-middleware.js +0 -558
- package/dist/src/servers/production/auth-middleware.js.map +0 -1
- package/dist/src/servers/railway/index.d.ts +0 -7
- package/dist/src/servers/railway/index.d.ts.map +0 -1
- package/dist/src/servers/railway/index.js +0 -401
- package/dist/src/servers/railway/index.js.map +0 -1
- package/dist/src/services/config-service.d.ts +0 -44
- package/dist/src/services/config-service.d.ts.map +0 -1
- package/dist/src/services/config-service.js +0 -61
- package/dist/src/services/config-service.js.map +0 -1
- package/dist/src/services/context-service.d.ts +0 -17
- package/dist/src/services/context-service.d.ts.map +0 -1
- package/dist/src/services/context-service.js +0 -173
- package/dist/src/services/context-service.js.map +0 -1
- package/dist/src/types/task.d.ts +0 -27
- package/dist/src/types/task.d.ts.map +0 -1
- package/dist/src/types/task.js +0 -2
- package/dist/src/types/task.js.map +0 -1
- package/dist/src/utils/logger.d.ts +0 -13
- package/dist/src/utils/logger.d.ts.map +0 -1
- package/dist/src/utils/logger.js +0 -52
- package/dist/src/utils/logger.js.map +0 -1
- package/dist/src/validation/schemas.d.ts +0 -633
- package/dist/src/validation/schemas.d.ts.map +0 -1
- package/dist/src/validation/schemas.js +0 -347
- package/dist/src/validation/schemas.js.map +0 -1
|
@@ -0,0 +1,267 @@
|
|
|
1
|
+
import { Command } from "commander";
|
|
2
|
+
import chalk from "chalk";
|
|
3
|
+
import ora from "ora";
|
|
4
|
+
import { ChromaDBAdapter } from "../../core/storage/chromadb-adapter.js";
|
|
5
|
+
import { FrameManager } from "../../core/context/frame-manager.js";
|
|
6
|
+
import { Logger } from "../../core/monitoring/logger.js";
|
|
7
|
+
import Table from "cli-table3";
|
|
8
|
+
import dotenv from "dotenv";
|
|
9
|
+
import path from "path";
|
|
10
|
+
import { fileURLToPath } from "url";
|
|
11
|
+
import fs from "fs";
|
|
12
|
+
const __dirname = path.dirname(fileURLToPath(import.meta.url));
|
|
13
|
+
dotenv.config({
|
|
14
|
+
path: path.join(__dirname, "../../../.env"),
|
|
15
|
+
override: true,
|
|
16
|
+
silent: true
|
|
17
|
+
});
|
|
18
|
+
const logger = new Logger("ChromaDB-CLI");
|
|
19
|
+
function createChromaDBCommand() {
|
|
20
|
+
const chromadb = new Command("chromadb").description("Manage ChromaDB vector storage for context").alias("chroma");
|
|
21
|
+
chromadb.command("init").description("Initialize ChromaDB connection").option("--api-key <key>", "ChromaDB API key").option("--tenant <tenant>", "ChromaDB tenant ID").option("--database <database>", "ChromaDB database name").option("--user-id <id>", "User ID for segmentation").option("--team-id <id>", "Team ID for segmentation").action(async (options) => {
|
|
22
|
+
const spinner = ora("Initializing ChromaDB...").start();
|
|
23
|
+
try {
|
|
24
|
+
const config = {
|
|
25
|
+
apiKey: options.apiKey || process.env.CHROMADB_API_KEY || "",
|
|
26
|
+
tenant: options.tenant || process.env.CHROMADB_TENANT || "",
|
|
27
|
+
database: options.database || process.env.CHROMADB_DATABASE || "stackmemory"
|
|
28
|
+
};
|
|
29
|
+
const userId = options.userId || process.env.USER || "default";
|
|
30
|
+
const teamId = options.teamId || process.env.CHROMADB_TEAM_ID;
|
|
31
|
+
if (!config.apiKey || !config.tenant) {
|
|
32
|
+
spinner.fail("Missing ChromaDB credentials");
|
|
33
|
+
console.log(chalk.yellow("\nPlease provide:"));
|
|
34
|
+
console.log(" --api-key <key> ChromaDB API key");
|
|
35
|
+
console.log(" --tenant <tenant> ChromaDB tenant ID");
|
|
36
|
+
console.log("\nOr set environment variables:");
|
|
37
|
+
console.log(" CHROMADB_API_KEY");
|
|
38
|
+
console.log(" CHROMADB_TENANT");
|
|
39
|
+
return;
|
|
40
|
+
}
|
|
41
|
+
const adapter = new ChromaDBAdapter(config, userId, teamId);
|
|
42
|
+
await adapter.initialize();
|
|
43
|
+
const envPath = path.join(__dirname, "../../../.env");
|
|
44
|
+
let envContent = "";
|
|
45
|
+
if (fs.existsSync(envPath)) {
|
|
46
|
+
envContent = fs.readFileSync(envPath, "utf8");
|
|
47
|
+
}
|
|
48
|
+
const updates = [];
|
|
49
|
+
if (!envContent.includes("CHROMADB_API_KEY")) {
|
|
50
|
+
updates.push(`CHROMADB_API_KEY=${config.apiKey}`);
|
|
51
|
+
}
|
|
52
|
+
if (!envContent.includes("CHROMADB_TENANT")) {
|
|
53
|
+
updates.push(`CHROMADB_TENANT=${config.tenant}`);
|
|
54
|
+
}
|
|
55
|
+
if (!envContent.includes("CHROMADB_DATABASE")) {
|
|
56
|
+
updates.push(`CHROMADB_DATABASE=${config.database}`);
|
|
57
|
+
}
|
|
58
|
+
if (updates.length > 0) {
|
|
59
|
+
fs.appendFileSync(envPath, "\n# ChromaDB Configuration\n" + updates.join("\n") + "\n");
|
|
60
|
+
}
|
|
61
|
+
spinner.succeed("ChromaDB initialized successfully");
|
|
62
|
+
console.log(chalk.green("\n\u2705 Configuration:"));
|
|
63
|
+
console.log(` Tenant: ${config.tenant}`);
|
|
64
|
+
console.log(` Database: ${config.database}`);
|
|
65
|
+
console.log(` User ID: ${userId}`);
|
|
66
|
+
if (teamId) {
|
|
67
|
+
console.log(` Team ID: ${teamId}`);
|
|
68
|
+
}
|
|
69
|
+
} catch (error) {
|
|
70
|
+
spinner.fail("Failed to initialize ChromaDB");
|
|
71
|
+
logger.error("Initialization error", error);
|
|
72
|
+
console.error(chalk.red(error instanceof Error ? error.message : "Unknown error"));
|
|
73
|
+
}
|
|
74
|
+
});
|
|
75
|
+
chromadb.command("store").description("Store current context in ChromaDB").option("--type <type>", "Context type (frame/decision/observation)", "frame").option("--content <content>", "Content to store").option("--project <name>", "Project name").action(async (options) => {
|
|
76
|
+
const spinner = ora("Storing context...").start();
|
|
77
|
+
try {
|
|
78
|
+
const config = {
|
|
79
|
+
apiKey: process.env.CHROMADB_API_KEY || "",
|
|
80
|
+
tenant: process.env.CHROMADB_TENANT || "",
|
|
81
|
+
database: process.env.CHROMADB_DATABASE || "stackmemory"
|
|
82
|
+
};
|
|
83
|
+
const userId = process.env.USER || "default";
|
|
84
|
+
const teamId = process.env.CHROMADB_TEAM_ID;
|
|
85
|
+
const adapter = new ChromaDBAdapter(config, userId, teamId);
|
|
86
|
+
await adapter.initialize();
|
|
87
|
+
if (options.type === "frame") {
|
|
88
|
+
const frameManager = new FrameManager();
|
|
89
|
+
const frames = frameManager.getAllFrames();
|
|
90
|
+
for (const frame of frames) {
|
|
91
|
+
await adapter.storeFrame(frame);
|
|
92
|
+
}
|
|
93
|
+
spinner.succeed(`Stored ${frames.length} frames`);
|
|
94
|
+
} else {
|
|
95
|
+
const content = options.content || `${options.type} at ${(/* @__PURE__ */ new Date()).toISOString()}`;
|
|
96
|
+
const metadata = {
|
|
97
|
+
project_name: options.project || path.basename(process.cwd())
|
|
98
|
+
};
|
|
99
|
+
if (process.env.STACKMEMORY_SESSION_ID) {
|
|
100
|
+
metadata.session_id = process.env.STACKMEMORY_SESSION_ID;
|
|
101
|
+
}
|
|
102
|
+
await adapter.storeContext(
|
|
103
|
+
options.type,
|
|
104
|
+
content,
|
|
105
|
+
metadata
|
|
106
|
+
);
|
|
107
|
+
spinner.succeed(`Stored ${options.type}`);
|
|
108
|
+
}
|
|
109
|
+
} catch (error) {
|
|
110
|
+
spinner.fail("Failed to store context");
|
|
111
|
+
logger.error("Store error", error);
|
|
112
|
+
console.error(chalk.red(error instanceof Error ? error.message : "Unknown error"));
|
|
113
|
+
}
|
|
114
|
+
});
|
|
115
|
+
chromadb.command("query <search>").description("Query contexts from ChromaDB").option("--limit <n>", "Number of results", "10").option("--type <type>", "Filter by type").option("--project <name>", "Filter by project").action(async (search, options) => {
|
|
116
|
+
const spinner = ora("Searching...").start();
|
|
117
|
+
try {
|
|
118
|
+
const config = {
|
|
119
|
+
apiKey: process.env.CHROMADB_API_KEY || "",
|
|
120
|
+
tenant: process.env.CHROMADB_TENANT || "",
|
|
121
|
+
database: process.env.CHROMADB_DATABASE || "stackmemory"
|
|
122
|
+
};
|
|
123
|
+
const userId = process.env.USER || "default";
|
|
124
|
+
const teamId = process.env.CHROMADB_TEAM_ID;
|
|
125
|
+
const adapter = new ChromaDBAdapter(config, userId, teamId);
|
|
126
|
+
await adapter.initialize();
|
|
127
|
+
const filters = {};
|
|
128
|
+
if (options.type) {
|
|
129
|
+
filters.type = [options.type];
|
|
130
|
+
}
|
|
131
|
+
if (options.project) {
|
|
132
|
+
filters.projectName = options.project;
|
|
133
|
+
}
|
|
134
|
+
const results = await adapter.queryContexts(
|
|
135
|
+
search,
|
|
136
|
+
parseInt(options.limit),
|
|
137
|
+
filters
|
|
138
|
+
);
|
|
139
|
+
spinner.stop();
|
|
140
|
+
if (results.length === 0) {
|
|
141
|
+
console.log(chalk.yellow("No results found"));
|
|
142
|
+
return;
|
|
143
|
+
}
|
|
144
|
+
const table = new Table({
|
|
145
|
+
head: ["Type", "Project", "Content", "Distance"],
|
|
146
|
+
colWidths: [15, 20, 50, 10],
|
|
147
|
+
wordWrap: true
|
|
148
|
+
});
|
|
149
|
+
for (const result of results) {
|
|
150
|
+
const content = result.content.substring(0, 100) + (result.content.length > 100 ? "..." : "");
|
|
151
|
+
table.push([
|
|
152
|
+
result.metadata.type || "unknown",
|
|
153
|
+
result.metadata.project_name || "default",
|
|
154
|
+
content,
|
|
155
|
+
result.distance.toFixed(3)
|
|
156
|
+
]);
|
|
157
|
+
}
|
|
158
|
+
console.log(table.toString());
|
|
159
|
+
console.log(chalk.green(`
|
|
160
|
+
\u2705 Found ${results.length} results`));
|
|
161
|
+
} catch (error) {
|
|
162
|
+
spinner.fail("Failed to query contexts");
|
|
163
|
+
logger.error("Query error", error);
|
|
164
|
+
console.error(chalk.red(error instanceof Error ? error.message : "Unknown error"));
|
|
165
|
+
}
|
|
166
|
+
});
|
|
167
|
+
chromadb.command("recent").description("Get recent contexts").option("--limit <n>", "Number of results", "20").option("--type <type>", "Filter by type").action(async (options) => {
|
|
168
|
+
const spinner = ora("Fetching recent contexts...").start();
|
|
169
|
+
try {
|
|
170
|
+
const config = {
|
|
171
|
+
apiKey: process.env.CHROMADB_API_KEY || "",
|
|
172
|
+
tenant: process.env.CHROMADB_TENANT || "",
|
|
173
|
+
database: process.env.CHROMADB_DATABASE || "stackmemory"
|
|
174
|
+
};
|
|
175
|
+
const userId = process.env.USER || "default";
|
|
176
|
+
const teamId = process.env.CHROMADB_TEAM_ID;
|
|
177
|
+
const adapter = new ChromaDBAdapter(config, userId, teamId);
|
|
178
|
+
await adapter.initialize();
|
|
179
|
+
const results = await adapter.getRecentContexts(
|
|
180
|
+
parseInt(options.limit),
|
|
181
|
+
options.type
|
|
182
|
+
);
|
|
183
|
+
spinner.stop();
|
|
184
|
+
if (results.length === 0) {
|
|
185
|
+
console.log(chalk.yellow("No recent contexts found"));
|
|
186
|
+
return;
|
|
187
|
+
}
|
|
188
|
+
const table = new Table({
|
|
189
|
+
head: ["Time", "Type", "Project", "Content"],
|
|
190
|
+
colWidths: [20, 12, 20, 48],
|
|
191
|
+
wordWrap: true
|
|
192
|
+
});
|
|
193
|
+
for (const result of results) {
|
|
194
|
+
const time = new Date(result.metadata.timestamp).toLocaleString();
|
|
195
|
+
const content = result.content.substring(0, 100) + (result.content.length > 100 ? "..." : "");
|
|
196
|
+
table.push([
|
|
197
|
+
time,
|
|
198
|
+
result.metadata.type || "unknown",
|
|
199
|
+
result.metadata.project_name || "default",
|
|
200
|
+
content
|
|
201
|
+
]);
|
|
202
|
+
}
|
|
203
|
+
console.log(table.toString());
|
|
204
|
+
console.log(chalk.green(`
|
|
205
|
+
\u2705 Found ${results.length} recent contexts`));
|
|
206
|
+
} catch (error) {
|
|
207
|
+
spinner.fail("Failed to get recent contexts");
|
|
208
|
+
logger.error("Recent error", error);
|
|
209
|
+
console.error(chalk.red(error instanceof Error ? error.message : "Unknown error"));
|
|
210
|
+
}
|
|
211
|
+
});
|
|
212
|
+
chromadb.command("stats").description("Get ChromaDB storage statistics").action(async () => {
|
|
213
|
+
const spinner = ora("Fetching statistics...").start();
|
|
214
|
+
try {
|
|
215
|
+
const config = {
|
|
216
|
+
apiKey: process.env.CHROMADB_API_KEY || "",
|
|
217
|
+
tenant: process.env.CHROMADB_TENANT || "",
|
|
218
|
+
database: process.env.CHROMADB_DATABASE || "stackmemory"
|
|
219
|
+
};
|
|
220
|
+
const userId = process.env.USER || "default";
|
|
221
|
+
const teamId = process.env.CHROMADB_TEAM_ID;
|
|
222
|
+
const adapter = new ChromaDBAdapter(config, userId, teamId);
|
|
223
|
+
await adapter.initialize();
|
|
224
|
+
const stats = await adapter.getStats();
|
|
225
|
+
spinner.stop();
|
|
226
|
+
console.log(chalk.cyan("\n\u{1F4CA} ChromaDB Statistics\n"));
|
|
227
|
+
console.log(`Total Documents: ${chalk.bold(stats.totalDocuments)}`);
|
|
228
|
+
console.log(`User Documents: ${chalk.bold(stats.userDocuments)}`);
|
|
229
|
+
if (stats.teamDocuments !== void 0) {
|
|
230
|
+
console.log(`Team Documents: ${chalk.bold(stats.teamDocuments)}`);
|
|
231
|
+
}
|
|
232
|
+
console.log("\nDocuments by Type:");
|
|
233
|
+
for (const [type, count] of Object.entries(stats.documentsByType)) {
|
|
234
|
+
console.log(` ${type}: ${count}`);
|
|
235
|
+
}
|
|
236
|
+
} catch (error) {
|
|
237
|
+
spinner.fail("Failed to get statistics");
|
|
238
|
+
logger.error("Stats error", error);
|
|
239
|
+
console.error(chalk.red(error instanceof Error ? error.message : "Unknown error"));
|
|
240
|
+
}
|
|
241
|
+
});
|
|
242
|
+
chromadb.command("clean").description("Clean old contexts").option("--days <n>", "Delete contexts older than N days", "30").action(async (options) => {
|
|
243
|
+
const spinner = ora("Cleaning old contexts...").start();
|
|
244
|
+
try {
|
|
245
|
+
const config = {
|
|
246
|
+
apiKey: process.env.CHROMADB_API_KEY || "",
|
|
247
|
+
tenant: process.env.CHROMADB_TENANT || "",
|
|
248
|
+
database: process.env.CHROMADB_DATABASE || "stackmemory"
|
|
249
|
+
};
|
|
250
|
+
const userId = process.env.USER || "default";
|
|
251
|
+
const teamId = process.env.CHROMADB_TEAM_ID;
|
|
252
|
+
const adapter = new ChromaDBAdapter(config, userId, teamId);
|
|
253
|
+
await adapter.initialize();
|
|
254
|
+
const deleted = await adapter.deleteOldContexts(parseInt(options.days));
|
|
255
|
+
spinner.succeed(`Deleted ${deleted} old contexts`);
|
|
256
|
+
} catch (error) {
|
|
257
|
+
spinner.fail("Failed to clean contexts");
|
|
258
|
+
logger.error("Clean error", error);
|
|
259
|
+
console.error(chalk.red(error instanceof Error ? error.message : "Unknown error"));
|
|
260
|
+
}
|
|
261
|
+
});
|
|
262
|
+
return chromadb;
|
|
263
|
+
}
|
|
264
|
+
export {
|
|
265
|
+
createChromaDBCommand
|
|
266
|
+
};
|
|
267
|
+
//# sourceMappingURL=chromadb.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/cli/commands/chromadb.ts"],
|
|
4
|
+
"sourcesContent": ["/**\n * ChromaDB CLI Commands for StackMemory\n * \n * Provides commands to interact with ChromaDB vector storage\n */\n\nimport { Command } from 'commander';\nimport chalk from 'chalk';\nimport ora from 'ora';\nimport { ChromaDBAdapter } from '../../core/storage/chromadb-adapter.js';\nimport { FrameManager } from '../../core/context/frame-manager.js';\nimport { Logger } from '../../core/monitoring/logger.js';\nimport Table from 'cli-table3';\nimport dotenv from 'dotenv';\nimport path from 'path';\nimport { fileURLToPath } from 'url';\nimport fs from 'fs';\n\nconst __dirname = path.dirname(fileURLToPath(import.meta.url));\n\n// Load environment variables\ndotenv.config({ \n path: path.join(__dirname, '../../../.env'),\n override: true,\n silent: true\n});\n\nconst logger = new Logger('ChromaDB-CLI');\n\nexport function createChromaDBCommand(): Command {\n const chromadb = new Command('chromadb')\n .description('Manage ChromaDB vector storage for context')\n .alias('chroma');\n\n // Initialize ChromaDB\n chromadb\n .command('init')\n .description('Initialize ChromaDB connection')\n .option('--api-key <key>', 'ChromaDB API key')\n .option('--tenant <tenant>', 'ChromaDB tenant ID')\n .option('--database <database>', 'ChromaDB database name')\n .option('--user-id <id>', 'User ID for segmentation')\n .option('--team-id <id>', 'Team ID for segmentation')\n .action(async (options) => {\n const spinner = ora('Initializing ChromaDB...').start();\n\n try {\n // Get config from options or environment\n const config = {\n apiKey: options.apiKey || process.env.CHROMADB_API_KEY || '',\n tenant: options.tenant || process.env.CHROMADB_TENANT || '',\n database: options.database || process.env.CHROMADB_DATABASE || 'stackmemory',\n };\n\n const userId = options.userId || process.env.USER || 'default';\n const teamId = options.teamId || process.env.CHROMADB_TEAM_ID;\n\n if (!config.apiKey || !config.tenant) {\n spinner.fail('Missing ChromaDB credentials');\n console.log(chalk.yellow('\\nPlease provide:'));\n console.log(' --api-key <key> ChromaDB API key');\n console.log(' --tenant <tenant> ChromaDB tenant ID');\n console.log('\\nOr set environment variables:');\n console.log(' CHROMADB_API_KEY');\n console.log(' CHROMADB_TENANT');\n return;\n }\n\n // Initialize adapter\n const adapter = new ChromaDBAdapter(config, userId, teamId);\n await adapter.initialize();\n\n // Save config to .env if not present\n const envPath = path.join(__dirname, '../../../.env');\n let envContent = '';\n \n if (fs.existsSync(envPath)) {\n envContent = fs.readFileSync(envPath, 'utf8');\n }\n\n const updates: string[] = [];\n if (!envContent.includes('CHROMADB_API_KEY')) {\n updates.push(`CHROMADB_API_KEY=${config.apiKey}`);\n }\n if (!envContent.includes('CHROMADB_TENANT')) {\n updates.push(`CHROMADB_TENANT=${config.tenant}`);\n }\n if (!envContent.includes('CHROMADB_DATABASE')) {\n updates.push(`CHROMADB_DATABASE=${config.database}`);\n }\n\n if (updates.length > 0) {\n fs.appendFileSync(envPath, '\\n# ChromaDB Configuration\\n' + updates.join('\\n') + '\\n');\n }\n\n spinner.succeed('ChromaDB initialized successfully');\n \n console.log(chalk.green('\\n\u2705 Configuration:'));\n console.log(` Tenant: ${config.tenant}`);\n console.log(` Database: ${config.database}`);\n console.log(` User ID: ${userId}`);\n if (teamId) {\n console.log(` Team ID: ${teamId}`);\n }\n } catch (error) {\n spinner.fail('Failed to initialize ChromaDB');\n logger.error('Initialization error', error);\n console.error(chalk.red(error instanceof Error ? error.message : 'Unknown error'));\n }\n });\n\n // Store current context\n chromadb\n .command('store')\n .description('Store current context in ChromaDB')\n .option('--type <type>', 'Context type (frame/decision/observation)', 'frame')\n .option('--content <content>', 'Content to store')\n .option('--project <name>', 'Project name')\n .action(async (options) => {\n const spinner = ora('Storing context...').start();\n\n try {\n const config = {\n apiKey: process.env.CHROMADB_API_KEY || '',\n tenant: process.env.CHROMADB_TENANT || '',\n database: process.env.CHROMADB_DATABASE || 'stackmemory',\n };\n\n const userId = process.env.USER || 'default';\n const teamId = process.env.CHROMADB_TEAM_ID;\n\n const adapter = new ChromaDBAdapter(config, userId, teamId);\n await adapter.initialize();\n\n if (options.type === 'frame') {\n // Store current frames\n const frameManager = new FrameManager();\n const frames = frameManager.getAllFrames();\n \n for (const frame of frames) {\n await adapter.storeFrame(frame);\n }\n \n spinner.succeed(`Stored ${frames.length} frames`);\n } else {\n // Store decision or observation\n const content = options.content || `${options.type} at ${new Date().toISOString()}`;\n const metadata: any = {\n project_name: options.project || path.basename(process.cwd()),\n };\n \n // Only add session_id if it exists\n if (process.env.STACKMEMORY_SESSION_ID) {\n metadata.session_id = process.env.STACKMEMORY_SESSION_ID;\n }\n \n await adapter.storeContext(\n options.type as 'decision' | 'observation',\n content,\n metadata\n );\n \n spinner.succeed(`Stored ${options.type}`);\n }\n } catch (error) {\n spinner.fail('Failed to store context');\n logger.error('Store error', error);\n console.error(chalk.red(error instanceof Error ? error.message : 'Unknown error'));\n }\n });\n\n // Query contexts\n chromadb\n .command('query <search>')\n .description('Query contexts from ChromaDB')\n .option('--limit <n>', 'Number of results', '10')\n .option('--type <type>', 'Filter by type')\n .option('--project <name>', 'Filter by project')\n .action(async (search, options) => {\n const spinner = ora('Searching...').start();\n\n try {\n const config = {\n apiKey: process.env.CHROMADB_API_KEY || '',\n tenant: process.env.CHROMADB_TENANT || '',\n database: process.env.CHROMADB_DATABASE || 'stackmemory',\n };\n\n const userId = process.env.USER || 'default';\n const teamId = process.env.CHROMADB_TEAM_ID;\n\n const adapter = new ChromaDBAdapter(config, userId, teamId);\n await adapter.initialize();\n\n const filters: any = {};\n if (options.type) {\n filters.type = [options.type];\n }\n if (options.project) {\n filters.projectName = options.project;\n }\n\n const results = await adapter.queryContexts(\n search,\n parseInt(options.limit),\n filters\n );\n\n spinner.stop();\n\n if (results.length === 0) {\n console.log(chalk.yellow('No results found'));\n return;\n }\n\n // Display results\n const table = new Table({\n head: ['Type', 'Project', 'Content', 'Distance'],\n colWidths: [15, 20, 50, 10],\n wordWrap: true,\n });\n\n for (const result of results) {\n const content = result.content.substring(0, 100) + \n (result.content.length > 100 ? '...' : '');\n \n table.push([\n result.metadata.type || 'unknown',\n result.metadata.project_name || 'default',\n content,\n result.distance.toFixed(3),\n ]);\n }\n\n console.log(table.toString());\n console.log(chalk.green(`\\n\u2705 Found ${results.length} results`));\n } catch (error) {\n spinner.fail('Failed to query contexts');\n logger.error('Query error', error);\n console.error(chalk.red(error instanceof Error ? error.message : 'Unknown error'));\n }\n });\n\n // Get recent contexts\n chromadb\n .command('recent')\n .description('Get recent contexts')\n .option('--limit <n>', 'Number of results', '20')\n .option('--type <type>', 'Filter by type')\n .action(async (options) => {\n const spinner = ora('Fetching recent contexts...').start();\n\n try {\n const config = {\n apiKey: process.env.CHROMADB_API_KEY || '',\n tenant: process.env.CHROMADB_TENANT || '',\n database: process.env.CHROMADB_DATABASE || 'stackmemory',\n };\n\n const userId = process.env.USER || 'default';\n const teamId = process.env.CHROMADB_TEAM_ID;\n\n const adapter = new ChromaDBAdapter(config, userId, teamId);\n await adapter.initialize();\n\n const results = await adapter.getRecentContexts(\n parseInt(options.limit),\n options.type\n );\n\n spinner.stop();\n\n if (results.length === 0) {\n console.log(chalk.yellow('No recent contexts found'));\n return;\n }\n\n // Display results\n const table = new Table({\n head: ['Time', 'Type', 'Project', 'Content'],\n colWidths: [20, 12, 20, 48],\n wordWrap: true,\n });\n\n for (const result of results) {\n const time = new Date(result.metadata.timestamp).toLocaleString();\n const content = result.content.substring(0, 100) + \n (result.content.length > 100 ? '...' : '');\n \n table.push([\n time,\n result.metadata.type || 'unknown',\n result.metadata.project_name || 'default',\n content,\n ]);\n }\n\n console.log(table.toString());\n console.log(chalk.green(`\\n\u2705 Found ${results.length} recent contexts`));\n } catch (error) {\n spinner.fail('Failed to get recent contexts');\n logger.error('Recent error', error);\n console.error(chalk.red(error instanceof Error ? error.message : 'Unknown error'));\n }\n });\n\n // Get statistics\n chromadb\n .command('stats')\n .description('Get ChromaDB storage statistics')\n .action(async () => {\n const spinner = ora('Fetching statistics...').start();\n\n try {\n const config = {\n apiKey: process.env.CHROMADB_API_KEY || '',\n tenant: process.env.CHROMADB_TENANT || '',\n database: process.env.CHROMADB_DATABASE || 'stackmemory',\n };\n\n const userId = process.env.USER || 'default';\n const teamId = process.env.CHROMADB_TEAM_ID;\n\n const adapter = new ChromaDBAdapter(config, userId, teamId);\n await adapter.initialize();\n\n const stats = await adapter.getStats();\n\n spinner.stop();\n\n console.log(chalk.cyan('\\n\uD83D\uDCCA ChromaDB Statistics\\n'));\n console.log(`Total Documents: ${chalk.bold(stats.totalDocuments)}`);\n console.log(`User Documents: ${chalk.bold(stats.userDocuments)}`);\n \n if (stats.teamDocuments !== undefined) {\n console.log(`Team Documents: ${chalk.bold(stats.teamDocuments)}`);\n }\n\n console.log('\\nDocuments by Type:');\n for (const [type, count] of Object.entries(stats.documentsByType)) {\n console.log(` ${type}: ${count}`);\n }\n } catch (error) {\n spinner.fail('Failed to get statistics');\n logger.error('Stats error', error);\n console.error(chalk.red(error instanceof Error ? error.message : 'Unknown error'));\n }\n });\n\n // Clean old contexts\n chromadb\n .command('clean')\n .description('Clean old contexts')\n .option('--days <n>', 'Delete contexts older than N days', '30')\n .action(async (options) => {\n const spinner = ora('Cleaning old contexts...').start();\n\n try {\n const config = {\n apiKey: process.env.CHROMADB_API_KEY || '',\n tenant: process.env.CHROMADB_TENANT || '',\n database: process.env.CHROMADB_DATABASE || 'stackmemory',\n };\n\n const userId = process.env.USER || 'default';\n const teamId = process.env.CHROMADB_TEAM_ID;\n\n const adapter = new ChromaDBAdapter(config, userId, teamId);\n await adapter.initialize();\n\n const deleted = await adapter.deleteOldContexts(parseInt(options.days));\n\n spinner.succeed(`Deleted ${deleted} old contexts`);\n } catch (error) {\n spinner.fail('Failed to clean contexts');\n logger.error('Clean error', error);\n console.error(chalk.red(error instanceof Error ? error.message : 'Unknown error'));\n }\n });\n\n return chromadb;\n}"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,191 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import { Command } from "commander";
|
|
3
|
+
import chalk from "chalk";
|
|
4
|
+
import ora from "ora";
|
|
5
|
+
import * as fs from "fs/promises";
|
|
6
|
+
import * as path from "path";
|
|
7
|
+
import Database from "better-sqlite3";
|
|
8
|
+
import { existsSync } from "fs";
|
|
9
|
+
import { ClearSurvival } from "../../core/session/clear-survival-stub.js";
|
|
10
|
+
import { FrameManager } from "../../core/context/frame-manager.js";
|
|
11
|
+
import { sessionManager } from "../../core/session/session-manager.js";
|
|
12
|
+
const clearCommand = new Command("clear").description("Manage context clearing with ledger preservation").option("--save", "Save continuity ledger before clearing").option("--restore", "Restore from continuity ledger").option("--check", "Check if clear is recommended").option("--auto", "Automatically save if needed and clear").option("--status", "Show current context usage").option("--show-ledger", "Display current ledger").action(async (options) => {
|
|
13
|
+
const spinner = ora();
|
|
14
|
+
try {
|
|
15
|
+
const projectRoot = process.cwd();
|
|
16
|
+
const dbPath = path.join(projectRoot, ".stackmemory", "context.db");
|
|
17
|
+
if (!existsSync(dbPath)) {
|
|
18
|
+
console.error(
|
|
19
|
+
chalk.red("\u2717 StackMemory not initialized in this directory")
|
|
20
|
+
);
|
|
21
|
+
console.log(chalk.yellow("Run: stackmemory init"));
|
|
22
|
+
process.exit(1);
|
|
23
|
+
}
|
|
24
|
+
const db = new Database(dbPath);
|
|
25
|
+
await sessionManager.initialize();
|
|
26
|
+
const session = await sessionManager.getOrCreateSession({
|
|
27
|
+
projectPath: projectRoot
|
|
28
|
+
});
|
|
29
|
+
const frameManager = new FrameManager(db, session.projectId);
|
|
30
|
+
const handoffGenerator = {
|
|
31
|
+
generateHandoff: () => Promise.resolve("Mock handoff"),
|
|
32
|
+
getHandoffPath: () => "mock.md"
|
|
33
|
+
};
|
|
34
|
+
const clearSurvival = new ClearSurvival(
|
|
35
|
+
frameManager,
|
|
36
|
+
handoffGenerator,
|
|
37
|
+
projectRoot
|
|
38
|
+
);
|
|
39
|
+
if (options.status) {
|
|
40
|
+
await showContextStatus(clearSurvival);
|
|
41
|
+
} else if (options.check) {
|
|
42
|
+
await checkIfClearRecommended(clearSurvival);
|
|
43
|
+
} else if (options.save) {
|
|
44
|
+
await saveLedger(clearSurvival, spinner);
|
|
45
|
+
} else if (options.restore) {
|
|
46
|
+
await restoreFromLedger(clearSurvival, spinner);
|
|
47
|
+
} else if (options.showLedger) {
|
|
48
|
+
await showLedger(projectRoot);
|
|
49
|
+
} else if (options.auto) {
|
|
50
|
+
await autoClear(clearSurvival, spinner);
|
|
51
|
+
} else {
|
|
52
|
+
await showContextStatus(clearSurvival);
|
|
53
|
+
console.log("\nOptions:");
|
|
54
|
+
console.log(" --status Show current context usage");
|
|
55
|
+
console.log(" --check Check if clear is recommended");
|
|
56
|
+
console.log(" --save Save continuity ledger");
|
|
57
|
+
console.log(" --restore Restore from ledger");
|
|
58
|
+
console.log(" --auto Auto-save if needed and clear");
|
|
59
|
+
}
|
|
60
|
+
} catch (error) {
|
|
61
|
+
console.error(chalk.red("Error: " + error.message));
|
|
62
|
+
if (process.env.NODE_ENV !== "test") {
|
|
63
|
+
process.exit(1);
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
});
|
|
67
|
+
async function showContextStatus(clearSurvival) {
|
|
68
|
+
const usage = await clearSurvival.getContextUsage();
|
|
69
|
+
const status = clearSurvival.assessContextStatus(usage);
|
|
70
|
+
console.log(chalk.bold("\n\u{1F4CA} Context Usage Status"));
|
|
71
|
+
console.log("\u2500".repeat(40));
|
|
72
|
+
const percentage = Math.round(usage.percentageUsed);
|
|
73
|
+
const statusColor = getStatusColor(status);
|
|
74
|
+
console.log(`Usage: ${percentage}% ${getProgressBar(percentage)}`);
|
|
75
|
+
console.log(`Status: ${statusColor}`);
|
|
76
|
+
console.log(`Active Frames: ${usage.activeFrames}`);
|
|
77
|
+
console.log(`Total Frames: ${usage.totalFrames}`);
|
|
78
|
+
console.log(`Sessions: ${usage.sessionCount}`);
|
|
79
|
+
if (status === "critical" || status === "saved") {
|
|
80
|
+
console.log(
|
|
81
|
+
chalk.yellow("\n\u26A0\uFE0F Consider clearing context to improve performance")
|
|
82
|
+
);
|
|
83
|
+
console.log(chalk.cyan("Run: stackmemory clear --save"));
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
async function checkIfClearRecommended(clearSurvival) {
|
|
87
|
+
const usage = await clearSurvival.getContextUsage();
|
|
88
|
+
const status = clearSurvival.assessContextStatus(usage);
|
|
89
|
+
if (status === "critical" || status === "saved") {
|
|
90
|
+
console.log(chalk.yellow("\u2713 Clear recommended"));
|
|
91
|
+
console.log(`Context usage: ${Math.round(usage.percentageUsed)}%`);
|
|
92
|
+
process.exit(0);
|
|
93
|
+
} else {
|
|
94
|
+
console.log(chalk.green("\u2717 Clear not needed"));
|
|
95
|
+
console.log(`Context usage: ${Math.round(usage.percentageUsed)}%`);
|
|
96
|
+
process.exit(1);
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
async function saveLedger(clearSurvival, spinner) {
|
|
100
|
+
spinner.start("Saving continuity ledger...");
|
|
101
|
+
const ledgerPath = await clearSurvival.saveContinuityLedger();
|
|
102
|
+
spinner.succeed(chalk.green("Continuity ledger saved"));
|
|
103
|
+
console.log(chalk.cyan(`Location: ${ledgerPath}`));
|
|
104
|
+
const ledger = JSON.parse(await fs.readFile(ledgerPath, "utf-8"));
|
|
105
|
+
console.log("\nSaved:");
|
|
106
|
+
console.log(` \u2022 ${ledger.activeFrames.length} active frames`);
|
|
107
|
+
console.log(` \u2022 ${ledger.decisions.length} key decisions`);
|
|
108
|
+
console.log(` \u2022 ${ledger.context.importantTasks?.length || 0} important tasks`);
|
|
109
|
+
}
|
|
110
|
+
async function restoreFromLedger(clearSurvival, spinner) {
|
|
111
|
+
spinner.start("Restoring from continuity ledger...");
|
|
112
|
+
const result = await clearSurvival.restoreFromLedger();
|
|
113
|
+
if (result.success) {
|
|
114
|
+
spinner.succeed(chalk.green("Context restored from ledger"));
|
|
115
|
+
console.log("\nRestored:");
|
|
116
|
+
console.log(` \u2022 ${result.restoredFrames} frames`);
|
|
117
|
+
console.log(` \u2022 ${result.restoredDecisions} decisions`);
|
|
118
|
+
} else {
|
|
119
|
+
spinner.fail(chalk.red("Failed to restore from ledger"));
|
|
120
|
+
console.log(chalk.yellow(result.message));
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
async function showLedger(projectRoot) {
|
|
124
|
+
const ledgerPath = path.join(projectRoot, ".stackmemory", "continuity.json");
|
|
125
|
+
if (!existsSync(ledgerPath)) {
|
|
126
|
+
console.log(chalk.yellow("No continuity ledger found"));
|
|
127
|
+
return;
|
|
128
|
+
}
|
|
129
|
+
const ledger = JSON.parse(await fs.readFile(ledgerPath, "utf-8"));
|
|
130
|
+
console.log(chalk.bold("\n\u{1F4D6} Continuity Ledger"));
|
|
131
|
+
console.log("\u2500".repeat(40));
|
|
132
|
+
console.log(`Created: ${new Date(ledger.timestamp).toLocaleString()}`);
|
|
133
|
+
console.log(`Active Frames: ${ledger.activeFrames.length}`);
|
|
134
|
+
console.log(`Key Decisions: ${ledger.decisions.length}`);
|
|
135
|
+
if (ledger.activeFrames.length > 0) {
|
|
136
|
+
console.log("\nActive Work:");
|
|
137
|
+
ledger.activeFrames.slice(0, 5).forEach((frame) => {
|
|
138
|
+
console.log(` \u2022 ${frame.name} (${frame.type})`);
|
|
139
|
+
});
|
|
140
|
+
}
|
|
141
|
+
if (ledger.decisions.length > 0) {
|
|
142
|
+
console.log("\nKey Decisions:");
|
|
143
|
+
ledger.decisions.slice(0, 3).forEach((decision) => {
|
|
144
|
+
console.log(` \u2022 ${decision.decision}`);
|
|
145
|
+
});
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
async function autoClear(clearSurvival, spinner) {
|
|
149
|
+
const usage = await clearSurvival.getContextUsage();
|
|
150
|
+
const status = clearSurvival.assessContextStatus(usage);
|
|
151
|
+
if (status === "critical" || status === "saved") {
|
|
152
|
+
spinner.start("Auto-saving ledger before clear...");
|
|
153
|
+
await clearSurvival.saveContinuityLedger();
|
|
154
|
+
spinner.succeed("Ledger saved");
|
|
155
|
+
spinner.start("Clearing context...");
|
|
156
|
+
await new Promise((resolve) => setTimeout(resolve, 1e3));
|
|
157
|
+
spinner.succeed("Context cleared successfully");
|
|
158
|
+
} else {
|
|
159
|
+
console.log(chalk.green("Context usage is healthy, no clear needed"));
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
function getProgressBar(percentage) {
|
|
163
|
+
const filled = Math.round(percentage / 5);
|
|
164
|
+
const empty = 20 - filled;
|
|
165
|
+
let bar = "[";
|
|
166
|
+
bar += chalk.green("\u25A0").repeat(Math.min(filled, 10));
|
|
167
|
+
bar += chalk.yellow("\u25A0").repeat(Math.max(0, Math.min(filled - 10, 5)));
|
|
168
|
+
bar += chalk.red("\u25A0").repeat(Math.max(0, filled - 15));
|
|
169
|
+
bar += chalk.gray("\u25A1").repeat(empty);
|
|
170
|
+
bar += "]";
|
|
171
|
+
return bar;
|
|
172
|
+
}
|
|
173
|
+
function getStatusColor(status) {
|
|
174
|
+
switch (status) {
|
|
175
|
+
case "healthy":
|
|
176
|
+
return chalk.green("\u2713 Healthy (<50%)");
|
|
177
|
+
case "moderate":
|
|
178
|
+
return chalk.blue("\u26A1 Moderate (50-70%)");
|
|
179
|
+
case "critical":
|
|
180
|
+
return chalk.yellow("\u26A0\uFE0F Critical (70-85%)");
|
|
181
|
+
case "saved":
|
|
182
|
+
return chalk.red("\u{1F4BE} Auto-saved (>85%)");
|
|
183
|
+
default:
|
|
184
|
+
return status;
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
var clear_default = clearCommand;
|
|
188
|
+
export {
|
|
189
|
+
clear_default as default
|
|
190
|
+
};
|
|
191
|
+
//# sourceMappingURL=clear.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/cli/commands/clear.ts"],
|
|
4
|
+
"sourcesContent": ["#!/usr/bin/env node\n/**\n * Clear command for StackMemory\n * Manages context clearing with ledger preservation\n */\n\nimport { Command } from 'commander';\nimport chalk from 'chalk';\nimport ora from 'ora';\nimport * as fs from 'fs/promises';\nimport * as path from 'path';\nimport Database from 'better-sqlite3';\nimport { existsSync } from 'fs';\nimport { ClearSurvival } from '../../core/session/clear-survival-stub.js';\nimport { FrameManager } from '../../core/context/frame-manager.js';\nimport { HandoffGenerator } from '../../core/session/handoff-generator.js';\nimport { sessionManager } from '../../core/session/session-manager.js';\n\nconst clearCommand = new Command('clear')\n .description('Manage context clearing with ledger preservation')\n .option('--save', 'Save continuity ledger before clearing')\n .option('--restore', 'Restore from continuity ledger')\n .option('--check', 'Check if clear is recommended')\n .option('--auto', 'Automatically save if needed and clear')\n .option('--status', 'Show current context usage')\n .option('--show-ledger', 'Display current ledger')\n .action(async (options) => {\n const spinner = ora();\n\n try {\n // Initialize managers\n const projectRoot = process.cwd();\n const dbPath = path.join(projectRoot, '.stackmemory', 'context.db');\n\n // Check if StackMemory is initialized\n if (!existsSync(dbPath)) {\n console.error(\n chalk.red('\u2717 StackMemory not initialized in this directory')\n );\n console.log(chalk.yellow('Run: stackmemory init'));\n process.exit(1);\n }\n\n const db = new Database(dbPath);\n \n // Initialize session manager\n await sessionManager.initialize();\n const session = await sessionManager.getOrCreateSession({\n projectPath: projectRoot,\n });\n\n const frameManager = new FrameManager(db, session.projectId);\n // For testing - use a mock handoff generator\n const handoffGenerator = {\n generateHandoff: () => Promise.resolve('Mock handoff'),\n getHandoffPath: () => 'mock.md'\n };\n const clearSurvival = new ClearSurvival(\n frameManager,\n handoffGenerator,\n projectRoot\n );\n\n // Handle different options\n if (options.status) {\n await showContextStatus(clearSurvival);\n } else if (options.check) {\n await checkIfClearRecommended(clearSurvival);\n } else if (options.save) {\n await saveLedger(clearSurvival, spinner);\n } else if (options.restore) {\n await restoreFromLedger(clearSurvival, spinner);\n } else if (options.showLedger) {\n await showLedger(projectRoot);\n } else if (options.auto) {\n await autoClear(clearSurvival, spinner);\n } else {\n // Default: Show status and options\n await showContextStatus(clearSurvival);\n console.log('\\nOptions:');\n console.log(' --status Show current context usage');\n console.log(' --check Check if clear is recommended');\n console.log(' --save Save continuity ledger');\n console.log(' --restore Restore from ledger');\n console.log(' --auto Auto-save if needed and clear');\n }\n } catch (error) {\n // Don't exit in tests - just log the error\n console.error(chalk.red('Error: ' + (error as Error).message));\n if (process.env.NODE_ENV !== 'test') {\n process.exit(1);\n }\n }\n });\n\nasync function showContextStatus(clearSurvival: ClearSurvival): Promise<void> {\n const usage = await clearSurvival.getContextUsage();\n const status = clearSurvival.assessContextStatus(usage);\n\n console.log(chalk.bold('\\n\uD83D\uDCCA Context Usage Status'));\n console.log('\u2500'.repeat(40));\n \n const percentage = Math.round(usage.percentageUsed);\n const statusColor = getStatusColor(status);\n \n console.log(`Usage: ${percentage}% ${getProgressBar(percentage)}`);\n console.log(`Status: ${statusColor}`);\n console.log(`Active Frames: ${usage.activeFrames}`);\n console.log(`Total Frames: ${usage.totalFrames}`);\n console.log(`Sessions: ${usage.sessionCount}`);\n \n if (status === 'critical' || status === 'saved') {\n console.log(\n chalk.yellow('\\n\u26A0\uFE0F Consider clearing context to improve performance')\n );\n console.log(chalk.cyan('Run: stackmemory clear --save'));\n }\n}\n\nasync function checkIfClearRecommended(clearSurvival: ClearSurvival): Promise<void> {\n const usage = await clearSurvival.getContextUsage();\n const status = clearSurvival.assessContextStatus(usage);\n \n if (status === 'critical' || status === 'saved') {\n console.log(chalk.yellow('\u2713 Clear recommended'));\n console.log(`Context usage: ${Math.round(usage.percentageUsed)}%`);\n process.exit(0);\n } else {\n console.log(chalk.green('\u2717 Clear not needed'));\n console.log(`Context usage: ${Math.round(usage.percentageUsed)}%`);\n process.exit(1);\n }\n}\n\nasync function saveLedger(clearSurvival: ClearSurvival, spinner: ora.Ora): Promise<void> {\n spinner.start('Saving continuity ledger...');\n \n const ledgerPath = await clearSurvival.saveContinuityLedger();\n \n spinner.succeed(chalk.green('Continuity ledger saved'));\n console.log(chalk.cyan(`Location: ${ledgerPath}`));\n \n // Show what was saved\n const ledger = JSON.parse(await fs.readFile(ledgerPath, 'utf-8'));\n console.log('\\nSaved:');\n console.log(` \u2022 ${ledger.activeFrames.length} active frames`);\n console.log(` \u2022 ${ledger.decisions.length} key decisions`);\n console.log(` \u2022 ${ledger.context.importantTasks?.length || 0} important tasks`);\n}\n\nasync function restoreFromLedger(clearSurvival: ClearSurvival, spinner: ora.Ora): Promise<void> {\n spinner.start('Restoring from continuity ledger...');\n \n const result = await clearSurvival.restoreFromLedger();\n \n if (result.success) {\n spinner.succeed(chalk.green('Context restored from ledger'));\n console.log('\\nRestored:');\n console.log(` \u2022 ${result.restoredFrames} frames`);\n console.log(` \u2022 ${result.restoredDecisions} decisions`);\n } else {\n spinner.fail(chalk.red('Failed to restore from ledger'));\n console.log(chalk.yellow(result.message));\n }\n}\n\nasync function showLedger(projectRoot: string): Promise<void> {\n const ledgerPath = path.join(projectRoot, '.stackmemory', 'continuity.json');\n \n if (!existsSync(ledgerPath)) {\n console.log(chalk.yellow('No continuity ledger found'));\n return;\n }\n \n const ledger = JSON.parse(await fs.readFile(ledgerPath, 'utf-8'));\n \n console.log(chalk.bold('\\n\uD83D\uDCD6 Continuity Ledger'));\n console.log('\u2500'.repeat(40));\n console.log(`Created: ${new Date(ledger.timestamp).toLocaleString()}`);\n console.log(`Active Frames: ${ledger.activeFrames.length}`);\n console.log(`Key Decisions: ${ledger.decisions.length}`);\n \n if (ledger.activeFrames.length > 0) {\n console.log('\\nActive Work:');\n ledger.activeFrames.slice(0, 5).forEach((frame: any) => {\n console.log(` \u2022 ${frame.name} (${frame.type})`);\n });\n }\n \n if (ledger.decisions.length > 0) {\n console.log('\\nKey Decisions:');\n ledger.decisions.slice(0, 3).forEach((decision: any) => {\n console.log(` \u2022 ${decision.decision}`);\n });\n }\n}\n\nasync function autoClear(clearSurvival: ClearSurvival, spinner: ora.Ora): Promise<void> {\n const usage = await clearSurvival.getContextUsage();\n const status = clearSurvival.assessContextStatus(usage);\n \n if (status === 'critical' || status === 'saved') {\n spinner.start('Auto-saving ledger before clear...');\n await clearSurvival.saveContinuityLedger();\n spinner.succeed('Ledger saved');\n \n spinner.start('Clearing context...');\n // Note: Actual clear implementation would go here\n // For now, just simulate\n await new Promise(resolve => setTimeout(resolve, 1000));\n spinner.succeed('Context cleared successfully');\n } else {\n console.log(chalk.green('Context usage is healthy, no clear needed'));\n }\n}\n\nfunction getProgressBar(percentage: number): string {\n const filled = Math.round(percentage / 5);\n const empty = 20 - filled;\n \n let bar = '[';\n bar += chalk.green('\u25A0').repeat(Math.min(filled, 10));\n bar += chalk.yellow('\u25A0').repeat(Math.max(0, Math.min(filled - 10, 5)));\n bar += chalk.red('\u25A0').repeat(Math.max(0, filled - 15));\n bar += chalk.gray('\u25A1').repeat(empty);\n bar += ']';\n \n return bar;\n}\n\nfunction getStatusColor(status: string): string {\n switch (status) {\n case 'healthy':\n return chalk.green('\u2713 Healthy (<50%)');\n case 'moderate':\n return chalk.blue('\u26A1 Moderate (50-70%)');\n case 'critical':\n return chalk.yellow('\u26A0\uFE0F Critical (70-85%)');\n case 'saved':\n return chalk.red('\uD83D\uDCBE Auto-saved (>85%)');\n default:\n return status;\n }\n}\n\n// Export for use in main CLI\nexport default clearCommand;"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|