@stackmemoryai/stackmemory 0.3.0 → 0.3.3
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 +52 -272
- package/dist/cli/codex-sm.js +48 -19
- package/dist/cli/codex-sm.js.map +2 -2
- 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/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/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 +105 -9
- 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 +384 -0
- package/dist/core/context/frame-handoff-manager.js.map +7 -0
- package/dist/core/context/frame-manager.js +132 -12
- 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/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/utils/formatting.js +58 -0
- package/dist/utils/formatting.js.map +7 -0
- package/package.json +24 -5
- 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
|
@@ -1,230 +0,0 @@
|
|
|
1
|
-
import { describe, it, expect, beforeEach, vi, afterEach } from "vitest";
|
|
2
|
-
import Database from "better-sqlite3";
|
|
3
|
-
import { FrameManager } from "../../context/frame-manager.js";
|
|
4
|
-
import {
|
|
5
|
-
enhanceFrameManagerWithDigest
|
|
6
|
-
} from "../frame-digest-integration.js";
|
|
7
|
-
describe("FrameDigestIntegration", () => {
|
|
8
|
-
let db;
|
|
9
|
-
let frameManager;
|
|
10
|
-
let integration;
|
|
11
|
-
let mockLLMProvider;
|
|
12
|
-
beforeEach(() => {
|
|
13
|
-
db = new Database(":memory:");
|
|
14
|
-
frameManager = new FrameManager(db, "test-project", "test-run");
|
|
15
|
-
mockLLMProvider = {
|
|
16
|
-
generateSummary: vi.fn().mockResolvedValue({
|
|
17
|
-
summary: "Test AI summary",
|
|
18
|
-
insight: "Test insight",
|
|
19
|
-
flaggedIssue: null,
|
|
20
|
-
generatedAt: Date.now(),
|
|
21
|
-
modelUsed: "test-model",
|
|
22
|
-
tokensUsed: 100
|
|
23
|
-
})
|
|
24
|
-
};
|
|
25
|
-
integration = enhanceFrameManagerWithDigest(
|
|
26
|
-
frameManager,
|
|
27
|
-
db,
|
|
28
|
-
mockLLMProvider
|
|
29
|
-
);
|
|
30
|
-
});
|
|
31
|
-
afterEach(() => {
|
|
32
|
-
integration.shutdown();
|
|
33
|
-
db.close();
|
|
34
|
-
});
|
|
35
|
-
describe("Frame Lifecycle Integration", () => {
|
|
36
|
-
it("should track frame creation", () => {
|
|
37
|
-
const frameId = frameManager.createFrame({
|
|
38
|
-
type: "task",
|
|
39
|
-
name: "Test Task",
|
|
40
|
-
inputs: { test: true }
|
|
41
|
-
});
|
|
42
|
-
expect(frameId).toBeDefined();
|
|
43
|
-
const status = integration.getIdleStatus();
|
|
44
|
-
expect(status.activeFrames).toBe(1);
|
|
45
|
-
});
|
|
46
|
-
it("should track tool calls for idle detection", () => {
|
|
47
|
-
const frameId = frameManager.createFrame({
|
|
48
|
-
type: "task",
|
|
49
|
-
name: "Test Task"
|
|
50
|
-
});
|
|
51
|
-
frameManager.addEvent("tool_call", {
|
|
52
|
-
tool_name: "test_tool",
|
|
53
|
-
args: {}
|
|
54
|
-
});
|
|
55
|
-
const status = integration.getIdleStatus();
|
|
56
|
-
expect(status.timeSinceLastToolCall).toBeLessThan(100);
|
|
57
|
-
});
|
|
58
|
-
it("should track user input", () => {
|
|
59
|
-
frameManager.createFrame({
|
|
60
|
-
type: "task",
|
|
61
|
-
name: "Test Task"
|
|
62
|
-
});
|
|
63
|
-
frameManager.addEvent("user_message", {
|
|
64
|
-
content: "Test message"
|
|
65
|
-
});
|
|
66
|
-
const status = integration.getIdleStatus();
|
|
67
|
-
expect(status.timeSinceLastInput).toBeLessThan(100);
|
|
68
|
-
});
|
|
69
|
-
it("should generate digest on frame close", () => {
|
|
70
|
-
const frameId = frameManager.createFrame({
|
|
71
|
-
type: "task",
|
|
72
|
-
name: "Test Task"
|
|
73
|
-
});
|
|
74
|
-
frameManager.addEvent("tool_call", {
|
|
75
|
-
tool_name: "write_file",
|
|
76
|
-
file_path: "/src/test.ts"
|
|
77
|
-
});
|
|
78
|
-
frameManager.addAnchor("DECISION", "Use TypeScript");
|
|
79
|
-
frameManager.closeFrame(frameId, { result: "success" });
|
|
80
|
-
const frame = frameManager.getFrame(frameId);
|
|
81
|
-
expect(frame).toBeDefined();
|
|
82
|
-
expect(frame?.state).toBe("closed");
|
|
83
|
-
expect(frame?.outputs).toBeDefined();
|
|
84
|
-
expect(frame?.outputs.digestText).toBeDefined();
|
|
85
|
-
});
|
|
86
|
-
it("should trigger digest processing on frame close", () => {
|
|
87
|
-
const frameId = frameManager.createFrame({
|
|
88
|
-
type: "feature",
|
|
89
|
-
name: "Feature Implementation"
|
|
90
|
-
});
|
|
91
|
-
frameManager.addEvent("tool_call", {
|
|
92
|
-
tool_name: "write_file",
|
|
93
|
-
file_path: "/src/feature.ts"
|
|
94
|
-
});
|
|
95
|
-
frameManager.addEvent("tool_result", {
|
|
96
|
-
success: true,
|
|
97
|
-
output: "File written successfully"
|
|
98
|
-
});
|
|
99
|
-
let status = integration.getIdleStatus();
|
|
100
|
-
expect(status.activeFrames).toBe(1);
|
|
101
|
-
frameManager.closeFrame(frameId);
|
|
102
|
-
status = integration.getIdleStatus();
|
|
103
|
-
expect(status.activeFrames).toBe(0);
|
|
104
|
-
});
|
|
105
|
-
});
|
|
106
|
-
describe("Idle Detection", () => {
|
|
107
|
-
it("should detect idle state after inactivity", async () => {
|
|
108
|
-
frameManager.createFrame({
|
|
109
|
-
type: "task",
|
|
110
|
-
name: "Test Task"
|
|
111
|
-
});
|
|
112
|
-
let status = integration.getIdleStatus();
|
|
113
|
-
expect(status.isIdle).toBe(false);
|
|
114
|
-
await new Promise((resolve) => setTimeout(resolve, 100));
|
|
115
|
-
await integration.forceProcessQueue();
|
|
116
|
-
});
|
|
117
|
-
it("should handle user interruption", () => {
|
|
118
|
-
frameManager.createFrame({
|
|
119
|
-
type: "task",
|
|
120
|
-
name: "Test Task"
|
|
121
|
-
});
|
|
122
|
-
integration.handleUserInterruption();
|
|
123
|
-
const status = integration.getIdleStatus();
|
|
124
|
-
expect(status.isIdle).toBe(false);
|
|
125
|
-
});
|
|
126
|
-
});
|
|
127
|
-
describe("Digest Content Generation", () => {
|
|
128
|
-
it("should generate both deterministic and AI content", async () => {
|
|
129
|
-
const frameId = frameManager.createFrame({
|
|
130
|
-
type: "feature",
|
|
131
|
-
name: "Complex Feature"
|
|
132
|
-
});
|
|
133
|
-
frameManager.addEvent("tool_call", {
|
|
134
|
-
tool_name: "write_file",
|
|
135
|
-
file_path: "/src/feature.ts"
|
|
136
|
-
});
|
|
137
|
-
frameManager.addEvent("tool_call", {
|
|
138
|
-
tool_name: "run_test",
|
|
139
|
-
command: "npm test"
|
|
140
|
-
});
|
|
141
|
-
frameManager.addEvent("tool_result", {
|
|
142
|
-
success: true,
|
|
143
|
-
output: "10 tests passed"
|
|
144
|
-
});
|
|
145
|
-
frameManager.addAnchor(
|
|
146
|
-
"DECISION",
|
|
147
|
-
"Implement using event-driven architecture"
|
|
148
|
-
);
|
|
149
|
-
frameManager.addAnchor(
|
|
150
|
-
"RISK",
|
|
151
|
-
"Performance may degrade with high event volume"
|
|
152
|
-
);
|
|
153
|
-
frameManager.closeFrame(frameId);
|
|
154
|
-
const frame = frameManager.getFrame(frameId);
|
|
155
|
-
expect(frame?.outputs.digest).toBeDefined();
|
|
156
|
-
expect(frame?.outputs.digest.deterministic).toBeDefined();
|
|
157
|
-
expect(frame?.outputs.digest.status).toBeDefined();
|
|
158
|
-
});
|
|
159
|
-
it("should calculate importance scores", () => {
|
|
160
|
-
const debugFrame = frameManager.createFrame({
|
|
161
|
-
type: "debug",
|
|
162
|
-
name: "Debug Critical Issue"
|
|
163
|
-
});
|
|
164
|
-
const toolFrame = frameManager.createFrame({
|
|
165
|
-
type: "tool_scope",
|
|
166
|
-
name: "Tool Execution"
|
|
167
|
-
});
|
|
168
|
-
frameManager.closeFrame(toolFrame);
|
|
169
|
-
frameManager.closeFrame(debugFrame);
|
|
170
|
-
const debugFrameData = frameManager.getFrame(debugFrame);
|
|
171
|
-
const toolFrameData = frameManager.getFrame(toolFrame);
|
|
172
|
-
expect(debugFrameData?.outputs.digest).toBeDefined();
|
|
173
|
-
expect(toolFrameData?.outputs.digest).toBeDefined();
|
|
174
|
-
});
|
|
175
|
-
});
|
|
176
|
-
describe("Multiple Frames", () => {
|
|
177
|
-
it("should handle nested frames correctly", () => {
|
|
178
|
-
const parentFrame = frameManager.createFrame({
|
|
179
|
-
type: "task",
|
|
180
|
-
name: "Parent Task"
|
|
181
|
-
});
|
|
182
|
-
const childFrame = frameManager.createFrame({
|
|
183
|
-
type: "subtask",
|
|
184
|
-
name: "Child Task",
|
|
185
|
-
parentFrameId: parentFrame
|
|
186
|
-
});
|
|
187
|
-
let status = integration.getIdleStatus();
|
|
188
|
-
expect(status.activeFrames).toBe(2);
|
|
189
|
-
frameManager.closeFrame(childFrame);
|
|
190
|
-
status = integration.getIdleStatus();
|
|
191
|
-
expect(status.activeFrames).toBe(1);
|
|
192
|
-
frameManager.closeFrame(parentFrame);
|
|
193
|
-
status = integration.getIdleStatus();
|
|
194
|
-
expect(status.activeFrames).toBe(0);
|
|
195
|
-
});
|
|
196
|
-
it("should process frames independently", async () => {
|
|
197
|
-
const frame1 = frameManager.createFrame({
|
|
198
|
-
type: "task",
|
|
199
|
-
name: "Task 1"
|
|
200
|
-
});
|
|
201
|
-
frameManager.addEvent("tool_call", { tool_name: "tool1" }, frame1);
|
|
202
|
-
frameManager.closeFrame(frame1);
|
|
203
|
-
const frame2 = frameManager.createFrame({
|
|
204
|
-
type: "task",
|
|
205
|
-
name: "Task 2"
|
|
206
|
-
});
|
|
207
|
-
frameManager.addEvent("tool_call", { tool_name: "tool2" }, frame2);
|
|
208
|
-
frameManager.closeFrame(frame2);
|
|
209
|
-
const frame1Data = frameManager.getFrame(frame1);
|
|
210
|
-
const frame2Data = frameManager.getFrame(frame2);
|
|
211
|
-
expect(frame1Data?.outputs.digestText).toBeDefined();
|
|
212
|
-
expect(frame2Data?.outputs.digestText).toBeDefined();
|
|
213
|
-
});
|
|
214
|
-
});
|
|
215
|
-
describe("Queue Processing", () => {
|
|
216
|
-
it("should allow forced queue processing", async () => {
|
|
217
|
-
const frameId = frameManager.createFrame({
|
|
218
|
-
type: "feature",
|
|
219
|
-
name: "Feature for AI Processing"
|
|
220
|
-
});
|
|
221
|
-
frameManager.addEvent("tool_call", {
|
|
222
|
-
tool_name: "complex_operation"
|
|
223
|
-
});
|
|
224
|
-
frameManager.closeFrame(frameId);
|
|
225
|
-
await integration.forceProcessQueue();
|
|
226
|
-
expect(mockLLMProvider.generateSummary).toHaveBeenCalled();
|
|
227
|
-
});
|
|
228
|
-
});
|
|
229
|
-
});
|
|
230
|
-
//# sourceMappingURL=frame-digest-integration.test.js.map
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../../src/core/digest/__tests__/frame-digest-integration.test.ts"],
|
|
4
|
-
"sourcesContent": ["import { describe, it, expect, beforeEach, vi, afterEach } from 'vitest';\nimport Database from 'better-sqlite3';\nimport { FrameManager } from '../../context/frame-manager.js';\nimport {\n enhanceFrameManagerWithDigest,\n FrameDigestIntegration,\n} from '../frame-digest-integration.js';\nimport { DigestLLMProvider } from '../types.js';\n\ndescribe('FrameDigestIntegration', () => {\n let db: Database.Database;\n let frameManager: FrameManager;\n let integration: FrameDigestIntegration;\n let mockLLMProvider: DigestLLMProvider;\n\n beforeEach(() => {\n // Create in-memory database\n db = new Database(':memory:');\n\n // Create frame manager\n frameManager = new FrameManager(db, 'test-project', 'test-run');\n\n // Create mock LLM provider\n mockLLMProvider = {\n generateSummary: vi.fn().mockResolvedValue({\n summary: 'Test AI summary',\n insight: 'Test insight',\n flaggedIssue: null,\n generatedAt: Date.now(),\n modelUsed: 'test-model',\n tokensUsed: 100,\n }),\n };\n\n // Enhance frame manager with digest integration\n integration = enhanceFrameManagerWithDigest(\n frameManager,\n db,\n mockLLMProvider\n );\n });\n\n afterEach(() => {\n integration.shutdown();\n db.close();\n });\n\n describe('Frame Lifecycle Integration', () => {\n it('should track frame creation', () => {\n const frameId = frameManager.createFrame({\n type: 'task',\n name: 'Test Task',\n inputs: { test: true },\n });\n\n expect(frameId).toBeDefined();\n\n // Check idle status shows active frame\n const status = integration.getIdleStatus();\n expect(status.activeFrames).toBe(1);\n });\n\n it('should track tool calls for idle detection', () => {\n const frameId = frameManager.createFrame({\n type: 'task',\n name: 'Test Task',\n });\n\n // Add tool call event\n frameManager.addEvent('tool_call', {\n tool_name: 'test_tool',\n args: {},\n });\n\n // Should reset idle timer\n const status = integration.getIdleStatus();\n expect(status.timeSinceLastToolCall).toBeLessThan(100);\n });\n\n it('should track user input', () => {\n frameManager.createFrame({\n type: 'task',\n name: 'Test Task',\n });\n\n // Add user message event\n frameManager.addEvent('user_message', {\n content: 'Test message',\n });\n\n // Should reset input timer\n const status = integration.getIdleStatus();\n expect(status.timeSinceLastInput).toBeLessThan(100);\n });\n\n it('should generate digest on frame close', () => {\n const frameId = frameManager.createFrame({\n type: 'task',\n name: 'Test Task',\n });\n\n // Add some events\n frameManager.addEvent('tool_call', {\n tool_name: 'write_file',\n file_path: '/src/test.ts',\n });\n\n frameManager.addAnchor('DECISION', 'Use TypeScript');\n\n // Close frame\n frameManager.closeFrame(frameId, { result: 'success' });\n\n // Get frame to check digest\n const frame = frameManager.getFrame(frameId);\n expect(frame).toBeDefined();\n expect(frame?.state).toBe('closed');\n expect(frame?.outputs).toBeDefined();\n expect(frame?.outputs.digestText).toBeDefined();\n });\n\n it('should trigger digest processing on frame close', () => {\n const frameId = frameManager.createFrame({\n type: 'feature',\n name: 'Feature Implementation',\n });\n\n // Add events to make it interesting\n frameManager.addEvent('tool_call', {\n tool_name: 'write_file',\n file_path: '/src/feature.ts',\n });\n\n frameManager.addEvent('tool_result', {\n success: true,\n output: 'File written successfully',\n });\n\n // Before close, frame is active\n let status = integration.getIdleStatus();\n expect(status.activeFrames).toBe(1);\n\n // Close frame\n frameManager.closeFrame(frameId);\n\n // After close, frame is not active\n status = integration.getIdleStatus();\n expect(status.activeFrames).toBe(0);\n });\n });\n\n describe('Idle Detection', () => {\n it('should detect idle state after inactivity', async () => {\n frameManager.createFrame({\n type: 'task',\n name: 'Test Task',\n });\n\n // Initially not idle\n let status = integration.getIdleStatus();\n expect(status.isIdle).toBe(false);\n\n // Simulate passage of time by manipulating internal state\n // This would normally happen with actual time passing\n await new Promise((resolve) => setTimeout(resolve, 100));\n\n // Force check of idle state\n await integration.forceProcessQueue();\n\n // Verify LLM was potentially called (if frames were queued)\n // Note: Actual idle detection would require more time to pass\n });\n\n it('should handle user interruption', () => {\n frameManager.createFrame({\n type: 'task',\n name: 'Test Task',\n });\n\n // Simulate user interruption\n integration.handleUserInterruption();\n\n // Should reset idle timers\n const status = integration.getIdleStatus();\n expect(status.isIdle).toBe(false);\n });\n });\n\n describe('Digest Content Generation', () => {\n it('should generate both deterministic and AI content', async () => {\n const frameId = frameManager.createFrame({\n type: 'feature',\n name: 'Complex Feature',\n });\n\n // Add various events\n frameManager.addEvent('tool_call', {\n tool_name: 'write_file',\n file_path: '/src/feature.ts',\n });\n\n frameManager.addEvent('tool_call', {\n tool_name: 'run_test',\n command: 'npm test',\n });\n\n frameManager.addEvent('tool_result', {\n success: true,\n output: '10 tests passed',\n });\n\n frameManager.addAnchor(\n 'DECISION',\n 'Implement using event-driven architecture'\n );\n frameManager.addAnchor(\n 'RISK',\n 'Performance may degrade with high event volume'\n );\n\n // Close frame to trigger digest\n frameManager.closeFrame(frameId);\n\n const frame = frameManager.getFrame(frameId);\n expect(frame?.outputs.digest).toBeDefined();\n expect(frame?.outputs.digest.deterministic).toBeDefined();\n expect(frame?.outputs.digest.status).toBeDefined();\n });\n\n it('should calculate importance scores', () => {\n // Create different types of frames\n const debugFrame = frameManager.createFrame({\n type: 'debug',\n name: 'Debug Critical Issue',\n });\n\n const toolFrame = frameManager.createFrame({\n type: 'tool_scope',\n name: 'Tool Execution',\n });\n\n // Close both\n frameManager.closeFrame(toolFrame);\n frameManager.closeFrame(debugFrame);\n\n // Debug frame should have higher importance\n const debugFrameData = frameManager.getFrame(debugFrame);\n const toolFrameData = frameManager.getFrame(toolFrame);\n\n // Both should have digests\n expect(debugFrameData?.outputs.digest).toBeDefined();\n expect(toolFrameData?.outputs.digest).toBeDefined();\n });\n });\n\n describe('Multiple Frames', () => {\n it('should handle nested frames correctly', () => {\n const parentFrame = frameManager.createFrame({\n type: 'task',\n name: 'Parent Task',\n });\n\n const childFrame = frameManager.createFrame({\n type: 'subtask',\n name: 'Child Task',\n parentFrameId: parentFrame,\n });\n\n // Track both frames\n let status = integration.getIdleStatus();\n expect(status.activeFrames).toBe(2);\n\n // Close child\n frameManager.closeFrame(childFrame);\n status = integration.getIdleStatus();\n expect(status.activeFrames).toBe(1);\n\n // Close parent\n frameManager.closeFrame(parentFrame);\n status = integration.getIdleStatus();\n expect(status.activeFrames).toBe(0);\n });\n\n it('should process frames independently', async () => {\n // Create multiple frames\n const frame1 = frameManager.createFrame({\n type: 'task',\n name: 'Task 1',\n });\n\n frameManager.addEvent('tool_call', { tool_name: 'tool1' }, frame1);\n frameManager.closeFrame(frame1);\n\n const frame2 = frameManager.createFrame({\n type: 'task',\n name: 'Task 2',\n });\n\n frameManager.addEvent('tool_call', { tool_name: 'tool2' }, frame2);\n frameManager.closeFrame(frame2);\n\n // Both should have digests\n const frame1Data = frameManager.getFrame(frame1);\n const frame2Data = frameManager.getFrame(frame2);\n\n expect(frame1Data?.outputs.digestText).toBeDefined();\n expect(frame2Data?.outputs.digestText).toBeDefined();\n });\n });\n\n describe('Queue Processing', () => {\n it('should allow forced queue processing', async () => {\n const frameId = frameManager.createFrame({\n type: 'feature',\n name: 'Feature for AI Processing',\n });\n\n // Add events\n frameManager.addEvent('tool_call', {\n tool_name: 'complex_operation',\n });\n\n // Close to queue for AI processing\n frameManager.closeFrame(frameId);\n\n // Force process queue\n await integration.forceProcessQueue();\n\n // Verify AI provider was called\n expect(mockLLMProvider.generateSummary).toHaveBeenCalled();\n });\n });\n});\n"],
|
|
5
|
-
"mappings": "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",
|
|
6
|
-
"names": []
|
|
7
|
-
}
|
|
@@ -1,270 +0,0 @@
|
|
|
1
|
-
import { describe, it, expect, vi, beforeEach } from "vitest";
|
|
2
|
-
import {
|
|
3
|
-
StackMemoryError,
|
|
4
|
-
DatabaseError,
|
|
5
|
-
FrameError,
|
|
6
|
-
ValidationError,
|
|
7
|
-
ErrorCode,
|
|
8
|
-
isRetryableError,
|
|
9
|
-
getErrorMessage,
|
|
10
|
-
wrapError
|
|
11
|
-
} from "../index.js";
|
|
12
|
-
import {
|
|
13
|
-
retry,
|
|
14
|
-
CircuitBreaker,
|
|
15
|
-
withFallback,
|
|
16
|
-
calculateBackoff,
|
|
17
|
-
CircuitState,
|
|
18
|
-
withTimeout,
|
|
19
|
-
gracefulDegrade
|
|
20
|
-
} from "../recovery.js";
|
|
21
|
-
describe("Error Classes", () => {
|
|
22
|
-
describe("StackMemoryError", () => {
|
|
23
|
-
it("should create error with all properties", () => {
|
|
24
|
-
const error = new StackMemoryError({
|
|
25
|
-
code: ErrorCode.INTERNAL_ERROR,
|
|
26
|
-
message: "Test error",
|
|
27
|
-
context: { key: "value" },
|
|
28
|
-
isRetryable: true,
|
|
29
|
-
httpStatus: 500
|
|
30
|
-
});
|
|
31
|
-
expect(error.code).toBe(ErrorCode.INTERNAL_ERROR);
|
|
32
|
-
expect(error.message).toBe("Test error");
|
|
33
|
-
expect(error.context).toEqual({ key: "value" });
|
|
34
|
-
expect(error.isRetryable).toBe(true);
|
|
35
|
-
expect(error.httpStatus).toBe(500);
|
|
36
|
-
expect(error.timestamp).toBeInstanceOf(Date);
|
|
37
|
-
});
|
|
38
|
-
it("should serialize to JSON correctly", () => {
|
|
39
|
-
const error = new StackMemoryError({
|
|
40
|
-
code: ErrorCode.DB_CONNECTION_FAILED,
|
|
41
|
-
message: "Connection failed"
|
|
42
|
-
});
|
|
43
|
-
const json = error.toJSON();
|
|
44
|
-
expect(json.code).toBe(ErrorCode.DB_CONNECTION_FAILED);
|
|
45
|
-
expect(json.message).toBe("Connection failed");
|
|
46
|
-
expect(json.timestamp).toBeDefined();
|
|
47
|
-
});
|
|
48
|
-
});
|
|
49
|
-
describe("DatabaseError", () => {
|
|
50
|
-
it("should be retryable for connection failures", () => {
|
|
51
|
-
const error = new DatabaseError(
|
|
52
|
-
"Connection lost",
|
|
53
|
-
ErrorCode.DB_CONNECTION_FAILED
|
|
54
|
-
);
|
|
55
|
-
expect(error.isRetryable).toBe(true);
|
|
56
|
-
});
|
|
57
|
-
it("should not be retryable for query failures", () => {
|
|
58
|
-
const error = new DatabaseError(
|
|
59
|
-
"Invalid SQL",
|
|
60
|
-
ErrorCode.DB_QUERY_FAILED
|
|
61
|
-
);
|
|
62
|
-
expect(error.isRetryable).toBe(false);
|
|
63
|
-
});
|
|
64
|
-
});
|
|
65
|
-
describe("Error Helpers", () => {
|
|
66
|
-
it("should identify retryable errors", () => {
|
|
67
|
-
const retryable = new DatabaseError(
|
|
68
|
-
"Connection lost",
|
|
69
|
-
ErrorCode.DB_CONNECTION_FAILED
|
|
70
|
-
);
|
|
71
|
-
const nonRetryable = new ValidationError("Invalid input");
|
|
72
|
-
expect(isRetryableError(retryable)).toBe(true);
|
|
73
|
-
expect(isRetryableError(nonRetryable)).toBe(false);
|
|
74
|
-
});
|
|
75
|
-
it("should identify retryable network errors", () => {
|
|
76
|
-
const networkError = new Error("ECONNREFUSED");
|
|
77
|
-
const timeoutError = new Error("Request timeout");
|
|
78
|
-
expect(isRetryableError(networkError)).toBe(true);
|
|
79
|
-
expect(isRetryableError(timeoutError)).toBe(true);
|
|
80
|
-
});
|
|
81
|
-
it("should extract error messages safely", () => {
|
|
82
|
-
expect(getErrorMessage(new Error("Test"))).toBe("Test");
|
|
83
|
-
expect(getErrorMessage("String error")).toBe("String error");
|
|
84
|
-
expect(getErrorMessage({ message: "Object error" })).toBe("Object error");
|
|
85
|
-
expect(getErrorMessage(null)).toBe("An unknown error occurred");
|
|
86
|
-
expect(getErrorMessage(void 0)).toBe("An unknown error occurred");
|
|
87
|
-
});
|
|
88
|
-
it("should wrap errors correctly", () => {
|
|
89
|
-
const originalError = new Error("Original");
|
|
90
|
-
const wrapped = wrapError(
|
|
91
|
-
originalError,
|
|
92
|
-
"Wrapped message",
|
|
93
|
-
ErrorCode.INTERNAL_ERROR,
|
|
94
|
-
{ extra: "context" }
|
|
95
|
-
);
|
|
96
|
-
expect(wrapped).toBeInstanceOf(StackMemoryError);
|
|
97
|
-
expect(wrapped.cause).toBe(originalError);
|
|
98
|
-
expect(wrapped.context).toEqual({ extra: "context" });
|
|
99
|
-
});
|
|
100
|
-
it("should not double-wrap StackMemoryErrors", () => {
|
|
101
|
-
const stackError = new FrameError("Frame error");
|
|
102
|
-
const wrapped = wrapError(stackError, "Default");
|
|
103
|
-
expect(wrapped).toBe(stackError);
|
|
104
|
-
});
|
|
105
|
-
});
|
|
106
|
-
});
|
|
107
|
-
describe("Recovery Utilities", () => {
|
|
108
|
-
beforeEach(() => {
|
|
109
|
-
vi.clearAllMocks();
|
|
110
|
-
});
|
|
111
|
-
describe("Retry Logic", () => {
|
|
112
|
-
it("should retry on failure", async () => {
|
|
113
|
-
let attempts = 0;
|
|
114
|
-
const fn = vi.fn(async () => {
|
|
115
|
-
attempts++;
|
|
116
|
-
if (attempts < 3) {
|
|
117
|
-
throw new DatabaseError("Connection lost", ErrorCode.DB_CONNECTION_FAILED);
|
|
118
|
-
}
|
|
119
|
-
return "success";
|
|
120
|
-
});
|
|
121
|
-
const result = await retry(fn, {
|
|
122
|
-
maxAttempts: 3,
|
|
123
|
-
initialDelay: 10
|
|
124
|
-
});
|
|
125
|
-
expect(result).toBe("success");
|
|
126
|
-
expect(fn).toHaveBeenCalledTimes(3);
|
|
127
|
-
});
|
|
128
|
-
it("should not retry non-retryable errors", async () => {
|
|
129
|
-
const fn = vi.fn(async () => {
|
|
130
|
-
throw new ValidationError("Invalid data");
|
|
131
|
-
});
|
|
132
|
-
await expect(
|
|
133
|
-
retry(fn, { maxAttempts: 3 })
|
|
134
|
-
).rejects.toThrow("Invalid data");
|
|
135
|
-
expect(fn).toHaveBeenCalledTimes(1);
|
|
136
|
-
});
|
|
137
|
-
it("should respect timeout", async () => {
|
|
138
|
-
const fn = vi.fn(async () => {
|
|
139
|
-
await new Promise((resolve) => setTimeout(resolve, 1e3));
|
|
140
|
-
return "slow";
|
|
141
|
-
});
|
|
142
|
-
await expect(
|
|
143
|
-
retry(fn, { timeout: 50 })
|
|
144
|
-
).rejects.toThrow("Operation timed out");
|
|
145
|
-
});
|
|
146
|
-
it("should calculate backoff correctly", () => {
|
|
147
|
-
const delay1 = calculateBackoff(1, 100, 1e4, 2);
|
|
148
|
-
const delay2 = calculateBackoff(2, 100, 1e4, 2);
|
|
149
|
-
const delay3 = calculateBackoff(3, 100, 1e4, 2);
|
|
150
|
-
expect(delay1).toBeGreaterThanOrEqual(100);
|
|
151
|
-
expect(delay1).toBeLessThanOrEqual(125);
|
|
152
|
-
expect(delay2).toBeGreaterThanOrEqual(200);
|
|
153
|
-
expect(delay2).toBeLessThanOrEqual(250);
|
|
154
|
-
expect(delay3).toBeGreaterThanOrEqual(400);
|
|
155
|
-
expect(delay3).toBeLessThanOrEqual(500);
|
|
156
|
-
});
|
|
157
|
-
});
|
|
158
|
-
describe("Circuit Breaker", () => {
|
|
159
|
-
it("should open after threshold failures", async () => {
|
|
160
|
-
const breaker = new CircuitBreaker("test", {
|
|
161
|
-
failureThreshold: 2,
|
|
162
|
-
resetTimeout: 100
|
|
163
|
-
});
|
|
164
|
-
const failingFn = vi.fn(async () => {
|
|
165
|
-
throw new Error("Failed");
|
|
166
|
-
});
|
|
167
|
-
await expect(breaker.execute(failingFn)).rejects.toThrow("Failed");
|
|
168
|
-
await expect(breaker.execute(failingFn)).rejects.toThrow("Failed");
|
|
169
|
-
expect(breaker.getState()).toBe(CircuitState.OPEN);
|
|
170
|
-
await expect(breaker.execute(failingFn)).rejects.toThrow(
|
|
171
|
-
"Circuit breaker test is OPEN"
|
|
172
|
-
);
|
|
173
|
-
expect(failingFn).toHaveBeenCalledTimes(2);
|
|
174
|
-
});
|
|
175
|
-
it("should transition to half-open after timeout", async () => {
|
|
176
|
-
const breaker = new CircuitBreaker("test", {
|
|
177
|
-
failureThreshold: 1,
|
|
178
|
-
resetTimeout: 50,
|
|
179
|
-
halfOpenRequests: 1
|
|
180
|
-
});
|
|
181
|
-
const fn = vi.fn(async () => {
|
|
182
|
-
throw new Error("Failed");
|
|
183
|
-
});
|
|
184
|
-
await expect(breaker.execute(fn)).rejects.toThrow();
|
|
185
|
-
expect(breaker.getState()).toBe(CircuitState.OPEN);
|
|
186
|
-
await new Promise((resolve) => setTimeout(resolve, 60));
|
|
187
|
-
const successFn = vi.fn(async () => "success");
|
|
188
|
-
const result = await breaker.execute(successFn);
|
|
189
|
-
expect(result).toBe("success");
|
|
190
|
-
expect(breaker.getState()).toBe(CircuitState.CLOSED);
|
|
191
|
-
});
|
|
192
|
-
it("should reset manually", () => {
|
|
193
|
-
const breaker = new CircuitBreaker("test", {
|
|
194
|
-
failureThreshold: 1
|
|
195
|
-
});
|
|
196
|
-
breaker.reset();
|
|
197
|
-
expect(breaker.getState()).toBe(CircuitState.CLOSED);
|
|
198
|
-
});
|
|
199
|
-
});
|
|
200
|
-
describe("Fallback Mechanism", () => {
|
|
201
|
-
it("should use fallback on primary failure", async () => {
|
|
202
|
-
const primary = vi.fn(async () => {
|
|
203
|
-
throw new Error("Primary failed");
|
|
204
|
-
});
|
|
205
|
-
const fallback1 = vi.fn(async () => "fallback result");
|
|
206
|
-
const result = await withFallback(primary, [fallback1]);
|
|
207
|
-
expect(result).toBe("fallback result");
|
|
208
|
-
expect(primary).toHaveBeenCalledTimes(1);
|
|
209
|
-
expect(fallback1).toHaveBeenCalledTimes(1);
|
|
210
|
-
});
|
|
211
|
-
it("should try multiple fallbacks", async () => {
|
|
212
|
-
const primary = vi.fn(async () => {
|
|
213
|
-
throw new Error("Primary failed");
|
|
214
|
-
});
|
|
215
|
-
const fallback1 = vi.fn(async () => {
|
|
216
|
-
throw new Error("Fallback1 failed");
|
|
217
|
-
});
|
|
218
|
-
const fallback2 = vi.fn(async () => "fallback2 result");
|
|
219
|
-
const result = await withFallback(primary, [fallback1, fallback2]);
|
|
220
|
-
expect(result).toBe("fallback2 result");
|
|
221
|
-
expect(fallback1).toHaveBeenCalledTimes(1);
|
|
222
|
-
expect(fallback2).toHaveBeenCalledTimes(1);
|
|
223
|
-
});
|
|
224
|
-
it("should throw if all attempts fail", async () => {
|
|
225
|
-
const primary = vi.fn(async () => {
|
|
226
|
-
throw new Error("Primary");
|
|
227
|
-
});
|
|
228
|
-
const fallback = vi.fn(async () => {
|
|
229
|
-
throw new Error("Fallback");
|
|
230
|
-
});
|
|
231
|
-
await expect(
|
|
232
|
-
withFallback(primary, [fallback])
|
|
233
|
-
).rejects.toThrow("All attempts failed");
|
|
234
|
-
});
|
|
235
|
-
});
|
|
236
|
-
describe("Timeout Wrapper", () => {
|
|
237
|
-
it("should timeout long operations", async () => {
|
|
238
|
-
const slowFn = async () => {
|
|
239
|
-
await new Promise((resolve) => setTimeout(resolve, 1e3));
|
|
240
|
-
return "slow";
|
|
241
|
-
};
|
|
242
|
-
await expect(
|
|
243
|
-
withTimeout(slowFn, 50, "Custom timeout")
|
|
244
|
-
).rejects.toThrow("Custom timeout");
|
|
245
|
-
});
|
|
246
|
-
it("should complete fast operations", async () => {
|
|
247
|
-
const fastFn = async () => {
|
|
248
|
-
await new Promise((resolve) => setTimeout(resolve, 10));
|
|
249
|
-
return "fast";
|
|
250
|
-
};
|
|
251
|
-
const result = await withTimeout(fastFn, 100);
|
|
252
|
-
expect(result).toBe("fast");
|
|
253
|
-
});
|
|
254
|
-
});
|
|
255
|
-
describe("Graceful Degradation", () => {
|
|
256
|
-
it("should return default on failure", async () => {
|
|
257
|
-
const failingFn = vi.fn(async () => {
|
|
258
|
-
throw new Error("Failed");
|
|
259
|
-
});
|
|
260
|
-
const result = await gracefulDegrade(failingFn, "default");
|
|
261
|
-
expect(result).toBe("default");
|
|
262
|
-
});
|
|
263
|
-
it("should return result on success", async () => {
|
|
264
|
-
const successFn = vi.fn(async () => "success");
|
|
265
|
-
const result = await gracefulDegrade(successFn, "default");
|
|
266
|
-
expect(result).toBe("success");
|
|
267
|
-
});
|
|
268
|
-
});
|
|
269
|
-
});
|
|
270
|
-
//# sourceMappingURL=error-handling.test.js.map
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../../src/core/errors/__tests__/error-handling.test.ts"],
|
|
4
|
-
"sourcesContent": ["/**\n * Tests for error handling system\n */\n\nimport { describe, it, expect, vi, beforeEach } from 'vitest';\nimport {\n StackMemoryError,\n DatabaseError,\n FrameError,\n TaskError,\n ValidationError,\n ErrorCode,\n isRetryableError,\n getErrorMessage,\n wrapError,\n isStackMemoryError,\n} from '../index.js';\nimport {\n retry,\n CircuitBreaker,\n withFallback,\n calculateBackoff,\n CircuitState,\n withTimeout,\n gracefulDegrade,\n} from '../recovery.js';\n\ndescribe('Error Classes', () => {\n describe('StackMemoryError', () => {\n it('should create error with all properties', () => {\n const error = new StackMemoryError({\n code: ErrorCode.INTERNAL_ERROR,\n message: 'Test error',\n context: { key: 'value' },\n isRetryable: true,\n httpStatus: 500,\n });\n\n expect(error.code).toBe(ErrorCode.INTERNAL_ERROR);\n expect(error.message).toBe('Test error');\n expect(error.context).toEqual({ key: 'value' });\n expect(error.isRetryable).toBe(true);\n expect(error.httpStatus).toBe(500);\n expect(error.timestamp).toBeInstanceOf(Date);\n });\n\n it('should serialize to JSON correctly', () => {\n const error = new StackMemoryError({\n code: ErrorCode.DB_CONNECTION_FAILED,\n message: 'Connection failed',\n });\n\n const json = error.toJSON();\n expect(json.code).toBe(ErrorCode.DB_CONNECTION_FAILED);\n expect(json.message).toBe('Connection failed');\n expect(json.timestamp).toBeDefined();\n });\n });\n\n describe('DatabaseError', () => {\n it('should be retryable for connection failures', () => {\n const error = new DatabaseError(\n 'Connection lost',\n ErrorCode.DB_CONNECTION_FAILED\n );\n expect(error.isRetryable).toBe(true);\n });\n\n it('should not be retryable for query failures', () => {\n const error = new DatabaseError(\n 'Invalid SQL',\n ErrorCode.DB_QUERY_FAILED\n );\n expect(error.isRetryable).toBe(false);\n });\n });\n\n describe('Error Helpers', () => {\n it('should identify retryable errors', () => {\n const retryable = new DatabaseError(\n 'Connection lost',\n ErrorCode.DB_CONNECTION_FAILED\n );\n const nonRetryable = new ValidationError('Invalid input');\n\n expect(isRetryableError(retryable)).toBe(true);\n expect(isRetryableError(nonRetryable)).toBe(false);\n });\n\n it('should identify retryable network errors', () => {\n const networkError = new Error('ECONNREFUSED');\n const timeoutError = new Error('Request timeout');\n \n expect(isRetryableError(networkError)).toBe(true);\n expect(isRetryableError(timeoutError)).toBe(true);\n });\n\n it('should extract error messages safely', () => {\n expect(getErrorMessage(new Error('Test'))).toBe('Test');\n expect(getErrorMessage('String error')).toBe('String error');\n expect(getErrorMessage({ message: 'Object error' })).toBe('Object error');\n expect(getErrorMessage(null)).toBe('An unknown error occurred');\n expect(getErrorMessage(undefined)).toBe('An unknown error occurred');\n });\n\n it('should wrap errors correctly', () => {\n const originalError = new Error('Original');\n const wrapped = wrapError(\n originalError,\n 'Wrapped message',\n ErrorCode.INTERNAL_ERROR,\n { extra: 'context' }\n );\n\n expect(wrapped).toBeInstanceOf(StackMemoryError);\n expect(wrapped.cause).toBe(originalError);\n expect(wrapped.context).toEqual({ extra: 'context' });\n });\n\n it('should not double-wrap StackMemoryErrors', () => {\n const stackError = new FrameError('Frame error');\n const wrapped = wrapError(stackError, 'Default');\n \n expect(wrapped).toBe(stackError);\n });\n });\n});\n\ndescribe('Recovery Utilities', () => {\n beforeEach(() => {\n vi.clearAllMocks();\n });\n\n describe('Retry Logic', () => {\n it('should retry on failure', async () => {\n let attempts = 0;\n const fn = vi.fn(async () => {\n attempts++;\n if (attempts < 3) {\n throw new DatabaseError('Connection lost', ErrorCode.DB_CONNECTION_FAILED);\n }\n return 'success';\n });\n\n const result = await retry(fn, {\n maxAttempts: 3,\n initialDelay: 10,\n });\n\n expect(result).toBe('success');\n expect(fn).toHaveBeenCalledTimes(3);\n });\n\n it('should not retry non-retryable errors', async () => {\n const fn = vi.fn(async () => {\n throw new ValidationError('Invalid data');\n });\n\n await expect(\n retry(fn, { maxAttempts: 3 })\n ).rejects.toThrow('Invalid data');\n \n expect(fn).toHaveBeenCalledTimes(1);\n });\n\n it('should respect timeout', async () => {\n const fn = vi.fn(async () => {\n await new Promise(resolve => setTimeout(resolve, 1000));\n return 'slow';\n });\n\n await expect(\n retry(fn, { timeout: 50 })\n ).rejects.toThrow('Operation timed out');\n });\n\n it('should calculate backoff correctly', () => {\n const delay1 = calculateBackoff(1, 100, 10000, 2);\n const delay2 = calculateBackoff(2, 100, 10000, 2);\n const delay3 = calculateBackoff(3, 100, 10000, 2);\n\n // Base delays without jitter\n expect(delay1).toBeGreaterThanOrEqual(100);\n expect(delay1).toBeLessThanOrEqual(125); // With max 25% jitter\n\n expect(delay2).toBeGreaterThanOrEqual(200);\n expect(delay2).toBeLessThanOrEqual(250);\n\n expect(delay3).toBeGreaterThanOrEqual(400);\n expect(delay3).toBeLessThanOrEqual(500);\n });\n });\n\n describe('Circuit Breaker', () => {\n it('should open after threshold failures', async () => {\n const breaker = new CircuitBreaker('test', {\n failureThreshold: 2,\n resetTimeout: 100,\n });\n\n const failingFn = vi.fn(async () => {\n throw new Error('Failed');\n });\n\n // First two failures\n await expect(breaker.execute(failingFn)).rejects.toThrow('Failed');\n await expect(breaker.execute(failingFn)).rejects.toThrow('Failed');\n\n // Circuit should be open\n expect(breaker.getState()).toBe(CircuitState.OPEN);\n\n // Next call should fail immediately\n await expect(breaker.execute(failingFn)).rejects.toThrow(\n 'Circuit breaker test is OPEN'\n );\n expect(failingFn).toHaveBeenCalledTimes(2); // Not called on open circuit\n });\n\n it('should transition to half-open after timeout', async () => {\n const breaker = new CircuitBreaker('test', {\n failureThreshold: 1,\n resetTimeout: 50,\n halfOpenRequests: 1,\n });\n\n const fn = vi.fn(async () => {\n throw new Error('Failed');\n });\n\n // Open the circuit\n await expect(breaker.execute(fn)).rejects.toThrow();\n expect(breaker.getState()).toBe(CircuitState.OPEN);\n\n // Wait for reset timeout\n await new Promise(resolve => setTimeout(resolve, 60));\n\n // Should allow one request in half-open\n const successFn = vi.fn(async () => 'success');\n const result = await breaker.execute(successFn);\n \n expect(result).toBe('success');\n expect(breaker.getState()).toBe(CircuitState.CLOSED);\n });\n\n it('should reset manually', () => {\n const breaker = new CircuitBreaker('test', {\n failureThreshold: 1,\n });\n\n breaker.reset();\n expect(breaker.getState()).toBe(CircuitState.CLOSED);\n });\n });\n\n describe('Fallback Mechanism', () => {\n it('should use fallback on primary failure', async () => {\n const primary = vi.fn(async () => {\n throw new Error('Primary failed');\n });\n const fallback1 = vi.fn(async () => 'fallback result');\n\n const result = await withFallback(primary, [fallback1]);\n\n expect(result).toBe('fallback result');\n expect(primary).toHaveBeenCalledTimes(1);\n expect(fallback1).toHaveBeenCalledTimes(1);\n });\n\n it('should try multiple fallbacks', async () => {\n const primary = vi.fn(async () => {\n throw new Error('Primary failed');\n });\n const fallback1 = vi.fn(async () => {\n throw new Error('Fallback1 failed');\n });\n const fallback2 = vi.fn(async () => 'fallback2 result');\n\n const result = await withFallback(primary, [fallback1, fallback2]);\n\n expect(result).toBe('fallback2 result');\n expect(fallback1).toHaveBeenCalledTimes(1);\n expect(fallback2).toHaveBeenCalledTimes(1);\n });\n\n it('should throw if all attempts fail', async () => {\n const primary = vi.fn(async () => {\n throw new Error('Primary');\n });\n const fallback = vi.fn(async () => {\n throw new Error('Fallback');\n });\n\n await expect(\n withFallback(primary, [fallback])\n ).rejects.toThrow('All attempts failed');\n });\n });\n\n describe('Timeout Wrapper', () => {\n it('should timeout long operations', async () => {\n const slowFn = async () => {\n await new Promise(resolve => setTimeout(resolve, 1000));\n return 'slow';\n };\n\n await expect(\n withTimeout(slowFn, 50, 'Custom timeout')\n ).rejects.toThrow('Custom timeout');\n });\n\n it('should complete fast operations', async () => {\n const fastFn = async () => {\n await new Promise(resolve => setTimeout(resolve, 10));\n return 'fast';\n };\n\n const result = await withTimeout(fastFn, 100);\n expect(result).toBe('fast');\n });\n });\n\n describe('Graceful Degradation', () => {\n it('should return default on failure', async () => {\n const failingFn = vi.fn(async () => {\n throw new Error('Failed');\n });\n\n const result = await gracefulDegrade(failingFn, 'default');\n expect(result).toBe('default');\n });\n\n it('should return result on success', async () => {\n const successFn = vi.fn(async () => 'success');\n \n const result = await gracefulDegrade(successFn, 'default');\n expect(result).toBe('success');\n });\n });\n});"],
|
|
5
|
-
"mappings": "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",
|
|
6
|
-
"names": []
|
|
7
|
-
}
|