@stackmemoryai/stackmemory 0.5.58 → 0.5.59
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/dist/cli/commands/search.js +20 -3
- package/dist/cli/commands/search.js.map +2 -2
- package/dist/core/database/sqlite-adapter.js +13 -3
- package/dist/core/database/sqlite-adapter.js.map +2 -2
- package/dist/core/errors/error-utils.js +208 -0
- package/dist/core/errors/error-utils.js.map +7 -0
- package/dist/core/errors/index.js +13 -4
- package/dist/core/errors/index.js.map +2 -2
- package/dist/core/merge/unified-merge-resolver.js +303 -0
- package/dist/core/merge/unified-merge-resolver.js.map +7 -0
- package/dist/core/monitoring/logger.js +61 -9
- package/dist/core/monitoring/logger.js.map +2 -2
- package/dist/core/security/index.js +35 -0
- package/dist/core/security/index.js.map +7 -0
- package/dist/core/security/input-sanitizer.js +321 -0
- package/dist/core/security/input-sanitizer.js.map +7 -0
- package/dist/integrations/linear/client.js +5 -1
- package/dist/integrations/linear/client.js.map +2 -2
- package/dist/integrations/mcp/remote-server.js +27 -36
- package/dist/integrations/mcp/remote-server.js.map +2 -2
- package/dist/integrations/mcp/server.js +44 -29
- package/dist/integrations/mcp/server.js.map +3 -3
- package/dist/scripts/benchmark-performance.js +48 -0
- package/dist/scripts/benchmark-performance.js.map +7 -0
- package/dist/scripts/check-redis.js +42 -0
- package/dist/scripts/check-redis.js.map +7 -0
- package/dist/scripts/initialize.js +116 -0
- package/dist/scripts/initialize.js.map +7 -0
- package/dist/scripts/list-linear-tasks.js +124 -0
- package/dist/scripts/list-linear-tasks.js.map +7 -0
- package/dist/scripts/measure-handoff-impact.js +340 -0
- package/dist/scripts/measure-handoff-impact.js.map +7 -0
- package/dist/scripts/query-chromadb.js +160 -0
- package/dist/scripts/query-chromadb.js.map +7 -0
- package/dist/scripts/show-linear-summary.js +119 -0
- package/dist/scripts/show-linear-summary.js.map +7 -0
- package/dist/scripts/simple-swarm-demo.js +90 -0
- package/dist/scripts/simple-swarm-demo.js.map +7 -0
- package/dist/scripts/status.js +155 -0
- package/dist/scripts/status.js.map +7 -0
- package/dist/scripts/test-chromadb-sync.js +192 -0
- package/dist/scripts/test-chromadb-sync.js.map +7 -0
- package/dist/scripts/test-ralph-iteration-fix.js +86 -0
- package/dist/scripts/test-ralph-iteration-fix.js.map +7 -0
- package/dist/scripts/test-ralph-iterations.js +121 -0
- package/dist/scripts/test-ralph-iterations.js.map +7 -0
- package/dist/scripts/test-redis-storage.js +389 -0
- package/dist/scripts/test-redis-storage.js.map +7 -0
- package/dist/scripts/test-simple-ralph-state-sync.js +115 -0
- package/dist/scripts/test-simple-ralph-state-sync.js.map +7 -0
- package/dist/scripts/test-swarm-fixes.js +125 -0
- package/dist/scripts/test-swarm-fixes.js.map +7 -0
- package/dist/scripts/test-swarm-tui.js +23 -0
- package/dist/scripts/test-swarm-tui.js.map +7 -0
- package/dist/scripts/test-tui-shortcuts.js +52 -0
- package/dist/scripts/test-tui-shortcuts.js.map +7 -0
- package/dist/scripts/validate-tui-shortcuts.js +60 -0
- package/dist/scripts/validate-tui-shortcuts.js.map +7 -0
- package/dist/src/agents/core/agent-task-manager.js +527 -0
- package/dist/src/agents/core/agent-task-manager.js.map +7 -0
- package/dist/src/agents/verifiers/base-verifier.js +133 -0
- package/dist/src/agents/verifiers/base-verifier.js.map +7 -0
- package/dist/src/agents/verifiers/formatter-verifier.js +130 -0
- package/dist/src/agents/verifiers/formatter-verifier.js.map +7 -0
- package/dist/src/agents/verifiers/llm-judge.js +252 -0
- package/dist/src/agents/verifiers/llm-judge.js.map +7 -0
- package/dist/src/cli/auto-detect.js +321 -0
- package/dist/src/cli/auto-detect.js.map +7 -0
- package/dist/src/cli/claude-sm-danger.js +21 -0
- package/dist/src/cli/claude-sm-danger.js.map +7 -0
- package/dist/src/cli/claude-sm.js +1156 -0
- package/dist/src/cli/claude-sm.js.map +7 -0
- package/dist/src/cli/codex-sm-danger.js +21 -0
- package/dist/src/cli/codex-sm-danger.js.map +7 -0
- package/dist/src/cli/codex-sm.js +349 -0
- package/dist/src/cli/codex-sm.js.map +7 -0
- package/dist/src/cli/commands/api.js +232 -0
- package/dist/src/cli/commands/api.js.map +7 -0
- package/dist/src/cli/commands/auto-background.js +180 -0
- package/dist/src/cli/commands/auto-background.js.map +7 -0
- package/dist/src/cli/commands/cleanup-processes.js +68 -0
- package/dist/src/cli/commands/cleanup-processes.js.map +7 -0
- package/dist/src/cli/commands/clear.js +202 -0
- package/dist/src/cli/commands/clear.js.map +7 -0
- package/dist/src/cli/commands/config.js +445 -0
- package/dist/src/cli/commands/config.js.map +7 -0
- package/dist/src/cli/commands/context-rehydrate.js +751 -0
- package/dist/src/cli/commands/context-rehydrate.js.map +7 -0
- package/dist/src/cli/commands/context.js +343 -0
- package/dist/src/cli/commands/context.js.map +7 -0
- package/dist/src/cli/commands/daemon.js +392 -0
- package/dist/src/cli/commands/daemon.js.map +7 -0
- package/dist/src/cli/commands/dashboard.js +210 -0
- package/dist/src/cli/commands/dashboard.js.map +7 -0
- package/dist/src/cli/commands/db.js +147 -0
- package/dist/src/cli/commands/db.js.map +7 -0
- package/dist/src/cli/commands/decision.js +266 -0
- package/dist/src/cli/commands/decision.js.map +7 -0
- package/dist/src/cli/commands/discovery.js +279 -0
- package/dist/src/cli/commands/discovery.js.map +7 -0
- package/dist/src/cli/commands/handoff.js +624 -0
- package/dist/src/cli/commands/handoff.js.map +7 -0
- package/dist/src/cli/commands/hooks.js +298 -0
- package/dist/src/cli/commands/hooks.js.map +7 -0
- package/dist/src/cli/commands/linear.js +529 -0
- package/dist/src/cli/commands/linear.js.map +7 -0
- package/dist/src/cli/commands/log.js +169 -0
- package/dist/src/cli/commands/log.js.map +7 -0
- package/dist/src/cli/commands/login.js +172 -0
- package/dist/src/cli/commands/login.js.map +7 -0
- package/dist/src/cli/commands/migrate.js +240 -0
- package/dist/src/cli/commands/migrate.js.map +7 -0
- package/dist/src/cli/commands/model.js +533 -0
- package/dist/src/cli/commands/model.js.map +7 -0
- package/dist/src/cli/commands/onboard.js +536 -0
- package/dist/src/cli/commands/onboard.js.map +7 -0
- package/dist/src/cli/commands/projects.js +199 -0
- package/dist/src/cli/commands/projects.js.map +7 -0
- package/dist/src/cli/commands/ralph.js +909 -0
- package/dist/src/cli/commands/ralph.js.map +7 -0
- package/dist/src/cli/commands/retrieval.js +248 -0
- package/dist/src/cli/commands/retrieval.js.map +7 -0
- package/dist/src/cli/commands/search.js +173 -0
- package/dist/src/cli/commands/search.js.map +7 -0
- package/dist/src/cli/commands/service.js +749 -0
- package/dist/src/cli/commands/service.js.map +7 -0
- package/dist/src/cli/commands/session.js +200 -0
- package/dist/src/cli/commands/session.js.map +7 -0
- package/dist/src/cli/commands/settings.js +306 -0
- package/dist/src/cli/commands/settings.js.map +7 -0
- package/dist/src/cli/commands/setup.js +701 -0
- package/dist/src/cli/commands/setup.js.map +7 -0
- package/dist/src/cli/commands/shell.js +249 -0
- package/dist/src/cli/commands/shell.js.map +7 -0
- package/dist/src/cli/commands/signup.js +50 -0
- package/dist/src/cli/commands/signup.js.map +7 -0
- package/dist/src/cli/commands/skills.js +470 -0
- package/dist/src/cli/commands/skills.js.map +7 -0
- package/dist/src/cli/commands/sms-notify.js +795 -0
- package/dist/src/cli/commands/sms-notify.js.map +7 -0
- package/dist/src/cli/commands/storage-tier.js +183 -0
- package/dist/src/cli/commands/storage-tier.js.map +7 -0
- package/dist/src/cli/commands/sweep.js +249 -0
- package/dist/src/cli/commands/sweep.js.map +7 -0
- package/dist/src/cli/commands/tasks.js +213 -0
- package/dist/src/cli/commands/tasks.js.map +7 -0
- package/dist/src/cli/commands/worktree.js +319 -0
- package/dist/src/cli/commands/worktree.js.map +7 -0
- package/dist/src/cli/index.js +594 -0
- package/dist/src/cli/index.js.map +7 -0
- package/dist/src/cli/opencode-sm.js +448 -0
- package/dist/src/cli/opencode-sm.js.map +7 -0
- package/dist/src/cli/utils/viewer.js +96 -0
- package/dist/src/cli/utils/viewer.js.map +7 -0
- package/dist/src/core/config/config-manager.js +398 -0
- package/dist/src/core/config/config-manager.js.map +7 -0
- package/dist/src/core/config/feature-flags.js +76 -0
- package/dist/src/core/config/feature-flags.js.map +7 -0
- package/dist/src/core/config/storage-config.js +115 -0
- package/dist/src/core/config/storage-config.js.map +7 -0
- package/dist/src/core/config/types.js +144 -0
- package/dist/src/core/config/types.js.map +7 -0
- package/dist/src/core/context/auto-context.js +80 -0
- package/dist/src/core/context/auto-context.js.map +7 -0
- package/dist/src/core/context/dual-stack-manager.js +870 -0
- package/dist/src/core/context/dual-stack-manager.js.map +7 -0
- package/dist/src/core/context/enhanced-rehydration.js +994 -0
- package/dist/src/core/context/enhanced-rehydration.js.map +7 -0
- package/dist/src/core/context/frame-database.js +479 -0
- package/dist/src/core/context/frame-database.js.map +7 -0
- package/dist/src/core/context/frame-digest.js +250 -0
- package/dist/src/core/context/frame-digest.js.map +7 -0
- package/dist/src/core/context/frame-handoff-manager.js +778 -0
- package/dist/src/core/context/frame-handoff-manager.js.map +7 -0
- package/dist/src/core/context/frame-lifecycle-hooks.js +119 -0
- package/dist/src/core/context/frame-lifecycle-hooks.js.map +7 -0
- package/dist/src/core/context/frame-recovery.js +302 -0
- package/dist/src/core/context/frame-recovery.js.map +7 -0
- package/dist/src/core/context/frame-stack.js +314 -0
- package/dist/src/core/context/frame-stack.js.map +7 -0
- package/dist/src/core/context/frame-types.js +5 -0
- package/dist/src/core/context/frame-types.js.map +7 -0
- package/dist/src/core/context/index.js +25 -0
- package/dist/src/core/context/index.js.map +7 -0
- package/dist/src/core/context/permission-manager.js +185 -0
- package/dist/src/core/context/permission-manager.js.map +7 -0
- package/dist/src/core/context/recursive-context-manager.js +592 -0
- package/dist/src/core/context/recursive-context-manager.js.map +7 -0
- package/dist/src/core/context/refactored-frame-manager.js +754 -0
- package/dist/src/core/context/refactored-frame-manager.js.map +7 -0
- package/dist/src/core/context/shared-context-layer.js +621 -0
- package/dist/src/core/context/shared-context-layer.js.map +7 -0
- package/dist/src/core/context/stack-merge-resolver.js +749 -0
- package/dist/src/core/context/stack-merge-resolver.js.map +7 -0
- package/dist/src/core/context/validation.js +130 -0
- package/dist/src/core/context/validation.js.map +7 -0
- package/dist/src/core/database/batch-operations.js +384 -0
- package/dist/src/core/database/batch-operations.js.map +7 -0
- package/dist/src/core/database/connection-pool.js +330 -0
- package/dist/src/core/database/connection-pool.js.map +7 -0
- package/dist/src/core/database/database-adapter.js +60 -0
- package/dist/src/core/database/database-adapter.js.map +7 -0
- package/dist/src/core/database/migration-manager.js +614 -0
- package/dist/src/core/database/migration-manager.js.map +7 -0
- package/dist/src/core/database/query-cache.js +298 -0
- package/dist/src/core/database/query-cache.js.map +7 -0
- package/dist/src/core/database/query-router.js +430 -0
- package/dist/src/core/database/query-router.js.map +7 -0
- package/dist/src/core/database/sqlite-adapter.js +738 -0
- package/dist/src/core/database/sqlite-adapter.js.map +7 -0
- package/dist/src/core/digest/enhanced-hybrid-digest.js +277 -0
- package/dist/src/core/digest/enhanced-hybrid-digest.js.map +7 -0
- package/dist/src/core/digest/frame-digest-integration.js +176 -0
- package/dist/src/core/digest/frame-digest-integration.js.map +7 -0
- package/dist/src/core/digest/hybrid-digest-generator.js +553 -0
- package/dist/src/core/digest/hybrid-digest-generator.js.map +7 -0
- package/dist/src/core/digest/index.js +9 -0
- package/dist/src/core/digest/index.js.map +7 -0
- package/dist/src/core/digest/types.js +25 -0
- package/dist/src/core/digest/types.js.map +7 -0
- package/dist/src/core/errors/error-utils.js +208 -0
- package/dist/src/core/errors/error-utils.js.map +7 -0
- package/dist/src/core/errors/index.js +521 -0
- package/dist/src/core/errors/index.js.map +7 -0
- package/dist/src/core/errors/recovery.js +269 -0
- package/dist/src/core/errors/recovery.js.map +7 -0
- package/dist/src/core/execution/parallel-executor.js +258 -0
- package/dist/src/core/execution/parallel-executor.js.map +7 -0
- package/dist/src/core/frame/workflow-templates.js +319 -0
- package/dist/src/core/frame/workflow-templates.js.map +7 -0
- package/dist/src/core/merge/conflict-detector.js +431 -0
- package/dist/src/core/merge/conflict-detector.js.map +7 -0
- package/dist/src/core/merge/index.js +9 -0
- package/dist/src/core/merge/index.js.map +7 -0
- package/dist/src/core/merge/resolution-engine.js +558 -0
- package/dist/src/core/merge/resolution-engine.js.map +7 -0
- package/dist/src/core/merge/stack-diff.js +532 -0
- package/dist/src/core/merge/stack-diff.js.map +7 -0
- package/dist/src/core/merge/types.js +5 -0
- package/dist/src/core/merge/types.js.map +7 -0
- package/dist/src/core/merge/unified-merge-resolver.js +303 -0
- package/dist/src/core/merge/unified-merge-resolver.js.map +7 -0
- package/dist/src/core/models/fallback-monitor.js +232 -0
- package/dist/src/core/models/fallback-monitor.js.map +7 -0
- package/dist/src/core/models/model-router.js +340 -0
- package/dist/src/core/models/model-router.js.map +7 -0
- package/dist/src/core/monitoring/error-handler.js +49 -0
- package/dist/src/core/monitoring/error-handler.js.map +7 -0
- package/dist/src/core/monitoring/logger.js +202 -0
- package/dist/src/core/monitoring/logger.js.map +7 -0
- package/dist/src/core/monitoring/metrics.js +172 -0
- package/dist/src/core/monitoring/metrics.js.map +7 -0
- package/dist/src/core/monitoring/progress-tracker.js +189 -0
- package/dist/src/core/monitoring/progress-tracker.js.map +7 -0
- package/dist/src/core/monitoring/session-monitor.js +300 -0
- package/dist/src/core/monitoring/session-monitor.js.map +7 -0
- package/dist/src/core/performance/context-cache.js +273 -0
- package/dist/src/core/performance/context-cache.js.map +7 -0
- package/dist/src/core/performance/index.js +11 -0
- package/dist/src/core/performance/index.js.map +7 -0
- package/dist/src/core/performance/lazy-context-loader.js +327 -0
- package/dist/src/core/performance/lazy-context-loader.js.map +7 -0
- package/dist/src/core/performance/monitor.js +221 -0
- package/dist/src/core/performance/monitor.js.map +7 -0
- package/dist/src/core/performance/optimized-frame-context.js +345 -0
- package/dist/src/core/performance/optimized-frame-context.js.map +7 -0
- package/dist/src/core/performance/performance-benchmark.js +277 -0
- package/dist/src/core/performance/performance-benchmark.js.map +7 -0
- package/dist/src/core/performance/performance-profiler.js +370 -0
- package/dist/src/core/performance/performance-profiler.js.map +7 -0
- package/dist/src/core/performance/streaming-jsonl-parser.js +195 -0
- package/dist/src/core/performance/streaming-jsonl-parser.js.map +7 -0
- package/dist/src/core/persistence/postgres-adapter.js +349 -0
- package/dist/src/core/persistence/postgres-adapter.js.map +7 -0
- package/dist/src/core/projects/project-isolation.js +201 -0
- package/dist/src/core/projects/project-isolation.js.map +7 -0
- package/dist/src/core/projects/project-manager.js +697 -0
- package/dist/src/core/projects/project-manager.js.map +7 -0
- package/dist/src/core/query/query-parser.js +370 -0
- package/dist/src/core/query/query-parser.js.map +7 -0
- package/dist/src/core/query/query-templates.js +321 -0
- package/dist/src/core/query/query-templates.js.map +7 -0
- package/dist/src/core/retrieval/context-retriever.js +479 -0
- package/dist/src/core/retrieval/context-retriever.js.map +7 -0
- package/dist/src/core/retrieval/index.js +8 -0
- package/dist/src/core/retrieval/index.js.map +7 -0
- package/dist/src/core/retrieval/llm-context-retrieval.js +613 -0
- package/dist/src/core/retrieval/llm-context-retrieval.js.map +7 -0
- package/dist/src/core/retrieval/llm-provider.js +151 -0
- package/dist/src/core/retrieval/llm-provider.js.map +7 -0
- package/dist/src/core/retrieval/retrieval-audit.js +236 -0
- package/dist/src/core/retrieval/retrieval-audit.js.map +7 -0
- package/dist/src/core/retrieval/summary-generator.js +589 -0
- package/dist/src/core/retrieval/summary-generator.js.map +7 -0
- package/dist/src/core/retrieval/types.js +21 -0
- package/dist/src/core/retrieval/types.js.map +7 -0
- package/dist/src/core/security/index.js +35 -0
- package/dist/src/core/security/index.js.map +7 -0
- package/dist/src/core/security/input-sanitizer.js +321 -0
- package/dist/src/core/security/input-sanitizer.js.map +7 -0
- package/dist/src/core/session/clear-survival.js +465 -0
- package/dist/src/core/session/clear-survival.js.map +7 -0
- package/dist/src/core/session/enhanced-handoff.js +792 -0
- package/dist/src/core/session/enhanced-handoff.js.map +7 -0
- package/dist/src/core/session/handoff-generator.js +343 -0
- package/dist/src/core/session/handoff-generator.js.map +7 -0
- package/dist/src/core/session/index.js +15 -0
- package/dist/src/core/session/index.js.map +7 -0
- package/dist/src/core/session/session-manager.js +347 -0
- package/dist/src/core/session/session-manager.js.map +7 -0
- package/dist/src/core/skills/index.js +7 -0
- package/dist/src/core/skills/index.js.map +7 -0
- package/dist/src/core/skills/skill-storage.js +764 -0
- package/dist/src/core/skills/skill-storage.js.map +7 -0
- package/dist/src/core/skills/types.js +193 -0
- package/dist/src/core/skills/types.js.map +7 -0
- package/dist/src/core/storage/chromadb-adapter.js +354 -0
- package/dist/src/core/storage/chromadb-adapter.js.map +7 -0
- package/dist/src/core/storage/infinite-storage.js +510 -0
- package/dist/src/core/storage/infinite-storage.js.map +7 -0
- package/dist/src/core/storage/remote-storage.js +489 -0
- package/dist/src/core/storage/remote-storage.js.map +7 -0
- package/dist/src/core/storage/two-tier-storage.js +766 -0
- package/dist/src/core/storage/two-tier-storage.js.map +7 -0
- package/dist/src/core/trace/cli-trace-wrapper.js +132 -0
- package/dist/src/core/trace/cli-trace-wrapper.js.map +7 -0
- package/dist/src/core/trace/db-trace-wrapper.js +247 -0
- package/dist/src/core/trace/db-trace-wrapper.js.map +7 -0
- package/dist/src/core/trace/debug-trace.js +417 -0
- package/dist/src/core/trace/debug-trace.js.map +7 -0
- package/dist/src/core/trace/index.js +109 -0
- package/dist/src/core/trace/index.js.map +7 -0
- package/dist/src/core/trace/linear-api-wrapper.js +178 -0
- package/dist/src/core/trace/linear-api-wrapper.js.map +7 -0
- package/dist/src/core/trace/trace-detector.js +528 -0
- package/dist/src/core/trace/trace-detector.js.map +7 -0
- package/dist/src/core/trace/trace-store.js +345 -0
- package/dist/src/core/trace/trace-store.js.map +7 -0
- package/dist/src/core/trace/types.js +77 -0
- package/dist/src/core/trace/types.js.map +7 -0
- package/dist/src/core/types.js +5 -0
- package/dist/src/core/types.js.map +7 -0
- package/dist/src/core/utils/async-mutex.js +114 -0
- package/dist/src/core/utils/async-mutex.js.map +7 -0
- package/dist/src/core/utils/compression.js +83 -0
- package/dist/src/core/utils/compression.js.map +7 -0
- package/dist/src/core/utils/update-checker.js +218 -0
- package/dist/src/core/utils/update-checker.js.map +7 -0
- package/dist/src/core/worktree/worktree-manager.js +465 -0
- package/dist/src/core/worktree/worktree-manager.js.map +7 -0
- package/dist/src/daemon/daemon-config.js +149 -0
- package/dist/src/daemon/daemon-config.js.map +7 -0
- package/dist/src/daemon/services/context-service.js +122 -0
- package/dist/src/daemon/services/context-service.js.map +7 -0
- package/dist/src/daemon/services/linear-service.js +136 -0
- package/dist/src/daemon/services/linear-service.js.map +7 -0
- package/dist/src/daemon/session-daemon.js +312 -0
- package/dist/src/daemon/session-daemon.js.map +7 -0
- package/dist/src/daemon/unified-daemon.js +276 -0
- package/dist/src/daemon/unified-daemon.js.map +7 -0
- package/dist/src/features/analytics/api/analytics-api.js +287 -0
- package/dist/src/features/analytics/api/analytics-api.js.map +7 -0
- package/dist/src/features/analytics/core/analytics-service.js +282 -0
- package/dist/src/features/analytics/core/analytics-service.js.map +7 -0
- package/dist/src/features/analytics/index.js +18 -0
- package/dist/src/features/analytics/index.js.map +7 -0
- package/dist/src/features/analytics/queries/metrics-queries.js +277 -0
- package/dist/src/features/analytics/queries/metrics-queries.js.map +7 -0
- package/dist/src/features/analytics/types/metrics.js +5 -0
- package/dist/src/features/analytics/types/metrics.js.map +7 -0
- package/dist/src/features/browser/browser-mcp.js +492 -0
- package/dist/src/features/browser/browser-mcp.js.map +7 -0
- package/dist/src/features/sweep/index.js +20 -0
- package/dist/src/features/sweep/index.js.map +7 -0
- package/dist/src/features/sweep/prediction-client.js +155 -0
- package/dist/src/features/sweep/prediction-client.js.map +7 -0
- package/dist/src/features/sweep/prompt-builder.js +85 -0
- package/dist/src/features/sweep/prompt-builder.js.map +7 -0
- package/dist/src/features/sweep/pty-wrapper.js +171 -0
- package/dist/src/features/sweep/pty-wrapper.js.map +7 -0
- package/dist/src/features/sweep/state-watcher.js +87 -0
- package/dist/src/features/sweep/state-watcher.js.map +7 -0
- package/dist/src/features/sweep/status-bar.js +88 -0
- package/dist/src/features/sweep/status-bar.js.map +7 -0
- package/dist/src/features/sweep/sweep-server-manager.js +226 -0
- package/dist/src/features/sweep/sweep-server-manager.js.map +7 -0
- package/dist/src/features/sweep/tab-interceptor.js +38 -0
- package/dist/src/features/sweep/tab-interceptor.js.map +7 -0
- package/dist/src/features/sweep/types.js +18 -0
- package/dist/src/features/sweep/types.js.map +7 -0
- package/dist/src/features/tasks/linear-task-manager.js +487 -0
- package/dist/src/features/tasks/linear-task-manager.js.map +7 -0
- package/dist/src/features/tasks/task-aware-context.js +410 -0
- package/dist/src/features/tasks/task-aware-context.js.map +7 -0
- package/dist/src/features/tui/simple-monitor.js +116 -0
- package/dist/src/features/tui/simple-monitor.js.map +7 -0
- package/dist/src/features/tui/swarm-monitor.js +648 -0
- package/dist/src/features/tui/swarm-monitor.js.map +7 -0
- package/dist/src/features/web/client/stores/task-store.js +26 -0
- package/dist/src/features/web/client/stores/task-store.js.map +7 -0
- package/dist/src/features/web/server/index.js +194 -0
- package/dist/src/features/web/server/index.js.map +7 -0
- package/dist/src/hooks/auto-background.js +151 -0
- package/dist/src/hooks/auto-background.js.map +7 -0
- package/dist/src/hooks/claude-code-whatsapp-hook.js +197 -0
- package/dist/src/hooks/claude-code-whatsapp-hook.js.map +7 -0
- package/dist/src/hooks/config.js +150 -0
- package/dist/src/hooks/config.js.map +7 -0
- package/dist/src/hooks/daemon.js +364 -0
- package/dist/src/hooks/daemon.js.map +7 -0
- package/dist/src/hooks/events.js +58 -0
- package/dist/src/hooks/events.js.map +7 -0
- package/dist/src/hooks/index.js +12 -0
- package/dist/src/hooks/index.js.map +7 -0
- package/dist/src/hooks/linear-task-picker.js +186 -0
- package/dist/src/hooks/linear-task-picker.js.map +7 -0
- package/dist/src/hooks/schemas.js +197 -0
- package/dist/src/hooks/schemas.js.map +7 -0
- package/dist/src/hooks/secure-fs.js +49 -0
- package/dist/src/hooks/secure-fs.js.map +7 -0
- package/dist/src/hooks/security-logger.js +155 -0
- package/dist/src/hooks/security-logger.js.map +7 -0
- package/dist/src/hooks/session-summary.js +222 -0
- package/dist/src/hooks/session-summary.js.map +7 -0
- package/dist/src/hooks/sms-action-runner.js +371 -0
- package/dist/src/hooks/sms-action-runner.js.map +7 -0
- package/dist/src/hooks/sms-notify.js +506 -0
- package/dist/src/hooks/sms-notify.js.map +7 -0
- package/dist/src/hooks/sms-watcher.js +93 -0
- package/dist/src/hooks/sms-watcher.js.map +7 -0
- package/dist/src/hooks/sms-webhook.js +555 -0
- package/dist/src/hooks/sms-webhook.js.map +7 -0
- package/dist/src/hooks/whatsapp-commands.js +479 -0
- package/dist/src/hooks/whatsapp-commands.js.map +7 -0
- package/dist/src/hooks/whatsapp-scheduler.js +317 -0
- package/dist/src/hooks/whatsapp-scheduler.js.map +7 -0
- package/dist/src/hooks/whatsapp-sync.js +409 -0
- package/dist/src/hooks/whatsapp-sync.js.map +7 -0
- package/dist/src/index.js +25 -0
- package/dist/src/index.js.map +7 -0
- package/dist/src/integrations/anthropic/client.js +263 -0
- package/dist/src/integrations/anthropic/client.js.map +7 -0
- package/dist/src/integrations/claude-code/agent-bridge.js +768 -0
- package/dist/src/integrations/claude-code/agent-bridge.js.map +7 -0
- package/dist/src/integrations/claude-code/enhanced-pre-clear-hooks.js +459 -0
- package/dist/src/integrations/claude-code/enhanced-pre-clear-hooks.js.map +7 -0
- package/dist/src/integrations/claude-code/lifecycle-hooks.js +254 -0
- package/dist/src/integrations/claude-code/lifecycle-hooks.js.map +7 -0
- package/dist/src/integrations/claude-code/post-task-hooks.js +545 -0
- package/dist/src/integrations/claude-code/post-task-hooks.js.map +7 -0
- package/dist/src/integrations/claude-code/subagent-client-stub.js +20 -0
- package/dist/src/integrations/claude-code/subagent-client-stub.js.map +7 -0
- package/dist/src/integrations/claude-code/subagent-client.js +511 -0
- package/dist/src/integrations/claude-code/subagent-client.js.map +7 -0
- package/dist/src/integrations/claude-code/task-coordinator.js +360 -0
- package/dist/src/integrations/claude-code/task-coordinator.js.map +7 -0
- package/dist/src/integrations/linear/auth.js +337 -0
- package/dist/src/integrations/linear/auth.js.map +7 -0
- package/dist/src/integrations/linear/auto-sync.js +258 -0
- package/dist/src/integrations/linear/auto-sync.js.map +7 -0
- package/dist/src/integrations/linear/client.js +634 -0
- package/dist/src/integrations/linear/client.js.map +7 -0
- package/dist/src/integrations/linear/config.js +130 -0
- package/dist/src/integrations/linear/config.js.map +7 -0
- package/dist/src/integrations/linear/migration.js +361 -0
- package/dist/src/integrations/linear/migration.js.map +7 -0
- package/dist/src/integrations/linear/oauth-server.js +454 -0
- package/dist/src/integrations/linear/oauth-server.js.map +7 -0
- package/dist/src/integrations/linear/rest-client.js +213 -0
- package/dist/src/integrations/linear/rest-client.js.map +7 -0
- package/dist/src/integrations/linear/sync-manager.js +236 -0
- package/dist/src/integrations/linear/sync-manager.js.map +7 -0
- package/dist/src/integrations/linear/sync-service.js +231 -0
- package/dist/src/integrations/linear/sync-service.js.map +7 -0
- package/dist/src/integrations/linear/sync.js +782 -0
- package/dist/src/integrations/linear/sync.js.map +7 -0
- package/dist/src/integrations/linear/types.js +5 -0
- package/dist/src/integrations/linear/types.js.map +7 -0
- package/dist/src/integrations/linear/unified-sync.js +589 -0
- package/dist/src/integrations/linear/unified-sync.js.map +7 -0
- package/dist/src/integrations/linear/webhook-handler.js +219 -0
- package/dist/src/integrations/linear/webhook-handler.js.map +7 -0
- package/dist/src/integrations/linear/webhook-server.js +218 -0
- package/dist/src/integrations/linear/webhook-server.js.map +7 -0
- package/dist/src/integrations/linear/webhook.js +291 -0
- package/dist/src/integrations/linear/webhook.js.map +7 -0
- package/dist/src/integrations/mcp/handlers/code-execution-handlers.js +266 -0
- package/dist/src/integrations/mcp/handlers/code-execution-handlers.js.map +7 -0
- package/dist/src/integrations/mcp/handlers/context-handlers.js +257 -0
- package/dist/src/integrations/mcp/handlers/context-handlers.js.map +7 -0
- package/dist/src/integrations/mcp/handlers/discovery-handlers.js +497 -0
- package/dist/src/integrations/mcp/handlers/discovery-handlers.js.map +7 -0
- package/dist/src/integrations/mcp/handlers/index.js +166 -0
- package/dist/src/integrations/mcp/handlers/index.js.map +7 -0
- package/dist/src/integrations/mcp/handlers/linear-handlers.js +247 -0
- package/dist/src/integrations/mcp/handlers/linear-handlers.js.map +7 -0
- package/dist/src/integrations/mcp/handlers/skill-handlers.js +529 -0
- package/dist/src/integrations/mcp/handlers/skill-handlers.js.map +7 -0
- package/dist/src/integrations/mcp/handlers/task-handlers.js +239 -0
- package/dist/src/integrations/mcp/handlers/task-handlers.js.map +7 -0
- package/dist/src/integrations/mcp/handlers/trace-handlers.js +308 -0
- package/dist/src/integrations/mcp/handlers/trace-handlers.js.map +7 -0
- package/dist/src/integrations/mcp/index.js +23 -0
- package/dist/src/integrations/mcp/index.js.map +7 -0
- package/dist/src/integrations/mcp/middleware/tool-scoring.js +356 -0
- package/dist/src/integrations/mcp/middleware/tool-scoring.js.map +7 -0
- package/dist/src/integrations/mcp/refactored-server.js +374 -0
- package/dist/src/integrations/mcp/refactored-server.js.map +7 -0
- package/dist/src/integrations/mcp/remote-server.js +682 -0
- package/dist/src/integrations/mcp/remote-server.js.map +7 -0
- package/dist/src/integrations/mcp/schemas.js +147 -0
- package/dist/src/integrations/mcp/schemas.js.map +7 -0
- package/dist/src/integrations/mcp/server.js +1975 -0
- package/dist/src/integrations/mcp/server.js.map +7 -0
- package/dist/src/integrations/mcp/tool-definitions-code.js +125 -0
- package/dist/src/integrations/mcp/tool-definitions-code.js.map +7 -0
- package/dist/src/integrations/mcp/tool-definitions.js +702 -0
- package/dist/src/integrations/mcp/tool-definitions.js.map +7 -0
- package/dist/src/integrations/ralph/bridge/ralph-stackmemory-bridge.js +860 -0
- package/dist/src/integrations/ralph/bridge/ralph-stackmemory-bridge.js.map +7 -0
- package/dist/src/integrations/ralph/context/context-budget-manager.js +301 -0
- package/dist/src/integrations/ralph/context/context-budget-manager.js.map +7 -0
- package/dist/src/integrations/ralph/context/stackmemory-context-loader.js +360 -0
- package/dist/src/integrations/ralph/context/stackmemory-context-loader.js.map +7 -0
- package/dist/src/integrations/ralph/coordination/enhanced-coordination.js +410 -0
- package/dist/src/integrations/ralph/coordination/enhanced-coordination.js.map +7 -0
- package/dist/src/integrations/ralph/index.js +18 -0
- package/dist/src/integrations/ralph/index.js.map +7 -0
- package/dist/src/integrations/ralph/learning/pattern-learner.js +401 -0
- package/dist/src/integrations/ralph/learning/pattern-learner.js.map +7 -0
- package/dist/src/integrations/ralph/lifecycle/iteration-lifecycle.js +448 -0
- package/dist/src/integrations/ralph/lifecycle/iteration-lifecycle.js.map +7 -0
- package/dist/src/integrations/ralph/monitoring/swarm-dashboard.js +294 -0
- package/dist/src/integrations/ralph/monitoring/swarm-dashboard.js.map +7 -0
- package/dist/src/integrations/ralph/monitoring/swarm-registry.js +108 -0
- package/dist/src/integrations/ralph/monitoring/swarm-registry.js.map +7 -0
- package/dist/src/integrations/ralph/orchestration/multi-loop-orchestrator.js +463 -0
- package/dist/src/integrations/ralph/orchestration/multi-loop-orchestrator.js.map +7 -0
- package/dist/src/integrations/ralph/patterns/compounding-engineering-pattern.js +400 -0
- package/dist/src/integrations/ralph/patterns/compounding-engineering-pattern.js.map +7 -0
- package/dist/src/integrations/ralph/patterns/extended-coherence-sessions.js +473 -0
- package/dist/src/integrations/ralph/patterns/extended-coherence-sessions.js.map +7 -0
- package/dist/src/integrations/ralph/patterns/oracle-worker-pattern.js +388 -0
- package/dist/src/integrations/ralph/patterns/oracle-worker-pattern.js.map +7 -0
- package/dist/src/integrations/ralph/performance/performance-optimizer.js +358 -0
- package/dist/src/integrations/ralph/performance/performance-optimizer.js.map +7 -0
- package/dist/src/integrations/ralph/recovery/crash-recovery.js +462 -0
- package/dist/src/integrations/ralph/recovery/crash-recovery.js.map +7 -0
- package/dist/src/integrations/ralph/state/state-reconciler.js +404 -0
- package/dist/src/integrations/ralph/state/state-reconciler.js.map +7 -0
- package/dist/src/integrations/ralph/swarm/git-workflow-manager.js +428 -0
- package/dist/src/integrations/ralph/swarm/git-workflow-manager.js.map +7 -0
- package/dist/src/integrations/ralph/swarm/swarm-coordinator.js +996 -0
- package/dist/src/integrations/ralph/swarm/swarm-coordinator.js.map +7 -0
- package/dist/src/integrations/ralph/types.js +5 -0
- package/dist/src/integrations/ralph/types.js.map +7 -0
- package/dist/src/integrations/ralph/visualization/ralph-debugger.js +585 -0
- package/dist/src/integrations/ralph/visualization/ralph-debugger.js.map +7 -0
- package/dist/src/mcp/stackmemory-mcp-server.js +554 -0
- package/dist/src/mcp/stackmemory-mcp-server.js.map +7 -0
- package/dist/src/middleware/exponential-rate-limiter.js +289 -0
- package/dist/src/middleware/exponential-rate-limiter.js.map +7 -0
- package/dist/src/models/user.model.js +358 -0
- package/dist/src/models/user.model.js.map +7 -0
- package/dist/src/servers/production/auth-middleware.js +528 -0
- package/dist/src/servers/production/auth-middleware.js.map +7 -0
- package/dist/src/services/config-service.js +65 -0
- package/dist/src/services/config-service.js.map +7 -0
- package/dist/src/services/context-service.js +194 -0
- package/dist/src/services/context-service.js.map +7 -0
- package/dist/src/skills/api-discovery.js +354 -0
- package/dist/src/skills/api-discovery.js.map +7 -0
- package/dist/src/skills/api-skill.js +475 -0
- package/dist/src/skills/api-skill.js.map +7 -0
- package/dist/src/skills/claude-skills.js +1061 -0
- package/dist/src/skills/claude-skills.js.map +7 -0
- package/dist/src/skills/dashboard-launcher.js +216 -0
- package/dist/src/skills/dashboard-launcher.js.map +7 -0
- package/dist/src/skills/recursive-agent-orchestrator.js +575 -0
- package/dist/src/skills/recursive-agent-orchestrator.js.map +7 -0
- package/dist/src/skills/repo-ingestion-skill.js +609 -0
- package/dist/src/skills/repo-ingestion-skill.js.map +7 -0
- package/dist/src/skills/unified-rlm-orchestrator.js +404 -0
- package/dist/src/skills/unified-rlm-orchestrator.js.map +7 -0
- package/dist/src/types/task.js +5 -0
- package/dist/src/types/task.js.map +7 -0
- package/dist/src/utils/env.js +50 -0
- package/dist/src/utils/env.js.map +7 -0
- package/dist/src/utils/formatting.js +62 -0
- package/dist/src/utils/formatting.js.map +7 -0
- package/dist/src/utils/process-cleanup.js +136 -0
- package/dist/src/utils/process-cleanup.js.map +7 -0
- package/package.json +3 -3
- package/scripts/initialize.ts +16 -7
- package/scripts/install.sh +14 -62
- package/scripts/status.ts +111 -46
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
import { fileURLToPath as __fileURLToPath } from 'url';
|
|
2
|
+
import { dirname as __pathDirname } from 'path';
|
|
3
|
+
const __filename = __fileURLToPath(import.meta.url);
|
|
4
|
+
const __dirname = __pathDirname(__filename);
|
|
5
|
+
import zlib from "zlib";
|
|
6
|
+
import { promisify } from "util";
|
|
7
|
+
const gzipAsync = promisify(zlib.gzip);
|
|
8
|
+
const gunzipAsync = promisify(zlib.gunzip);
|
|
9
|
+
const brotliCompressAsync = promisify(zlib.brotliCompress);
|
|
10
|
+
const brotliDecompressAsync = promisify(zlib.brotliDecompress);
|
|
11
|
+
var CompressionType = /* @__PURE__ */ ((CompressionType2) => {
|
|
12
|
+
CompressionType2["NONE"] = "none";
|
|
13
|
+
CompressionType2["GZIP"] = "gzip";
|
|
14
|
+
CompressionType2["BROTLI"] = "brotli";
|
|
15
|
+
return CompressionType2;
|
|
16
|
+
})(CompressionType || {});
|
|
17
|
+
async function compress(data, options = {}) {
|
|
18
|
+
const { type = "gzip" /* GZIP */, level = 6 } = options;
|
|
19
|
+
const input = typeof data === "string" ? Buffer.from(data, "utf8") : data;
|
|
20
|
+
switch (type) {
|
|
21
|
+
case "none" /* NONE */:
|
|
22
|
+
return input;
|
|
23
|
+
case "gzip" /* GZIP */:
|
|
24
|
+
return gzipAsync(input, { level });
|
|
25
|
+
case "brotli" /* BROTLI */:
|
|
26
|
+
return brotliCompressAsync(input, {
|
|
27
|
+
params: {
|
|
28
|
+
[zlib.constants.BROTLI_PARAM_QUALITY]: level
|
|
29
|
+
}
|
|
30
|
+
});
|
|
31
|
+
default:
|
|
32
|
+
throw new Error(`Unknown compression type: ${type}`);
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
async function decompress(data, type = "gzip" /* GZIP */) {
|
|
36
|
+
let decompressed;
|
|
37
|
+
switch (type) {
|
|
38
|
+
case "none" /* NONE */:
|
|
39
|
+
decompressed = data;
|
|
40
|
+
break;
|
|
41
|
+
case "gzip" /* GZIP */:
|
|
42
|
+
decompressed = await gunzipAsync(data);
|
|
43
|
+
break;
|
|
44
|
+
case "brotli" /* BROTLI */:
|
|
45
|
+
decompressed = await brotliDecompressAsync(data);
|
|
46
|
+
break;
|
|
47
|
+
default:
|
|
48
|
+
throw new Error(`Unknown compression type: ${type}`);
|
|
49
|
+
}
|
|
50
|
+
return decompressed.toString("utf8");
|
|
51
|
+
}
|
|
52
|
+
function compressionRatio(original, compressed) {
|
|
53
|
+
if (original === 0) return 0;
|
|
54
|
+
return (1 - compressed / original) * 100;
|
|
55
|
+
}
|
|
56
|
+
function detectCompressionType(data) {
|
|
57
|
+
if (data.length >= 2 && data[0] === 31 && data[1] === 139) {
|
|
58
|
+
return "gzip" /* GZIP */;
|
|
59
|
+
}
|
|
60
|
+
if (data.length >= 4 && data[0] === 206 && data[1] === 178) {
|
|
61
|
+
return "brotli" /* BROTLI */;
|
|
62
|
+
}
|
|
63
|
+
return "none" /* NONE */;
|
|
64
|
+
}
|
|
65
|
+
function chooseOptimalCompression(data, speedPriority = false) {
|
|
66
|
+
const size = typeof data === "string" ? Buffer.byteLength(data) : data.length;
|
|
67
|
+
if (size < 1024) {
|
|
68
|
+
return "none" /* NONE */;
|
|
69
|
+
}
|
|
70
|
+
if (speedPriority || size < 100 * 1024) {
|
|
71
|
+
return "gzip" /* GZIP */;
|
|
72
|
+
}
|
|
73
|
+
return "brotli" /* BROTLI */;
|
|
74
|
+
}
|
|
75
|
+
export {
|
|
76
|
+
CompressionType,
|
|
77
|
+
chooseOptimalCompression,
|
|
78
|
+
compress,
|
|
79
|
+
compressionRatio,
|
|
80
|
+
decompress,
|
|
81
|
+
detectCompressionType
|
|
82
|
+
};
|
|
83
|
+
//# sourceMappingURL=compression.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../src/core/utils/compression.ts"],
|
|
4
|
+
"sourcesContent": ["/**\n * Compression utilities for storage optimization\n */\n\nimport zlib from 'zlib';\nimport { promisify } from 'util';\n\nconst gzipAsync = promisify(zlib.gzip);\nconst gunzipAsync = promisify(zlib.gunzip);\nconst brotliCompressAsync = promisify(zlib.brotliCompress);\nconst brotliDecompressAsync = promisify(zlib.brotliDecompress);\n\nexport enum CompressionType {\n NONE = 'none',\n GZIP = 'gzip',\n BROTLI = 'brotli',\n}\n\nexport interface CompressionOptions {\n type?: CompressionType;\n level?: number;\n}\n\n/**\n * Compress data using specified algorithm\n */\nexport async function compress(\n data: string | Buffer,\n options: CompressionOptions = {}\n): Promise<Buffer> {\n const { type = CompressionType.GZIP, level = 6 } = options;\n\n const input = typeof data === 'string' ? Buffer.from(data, 'utf8') : data;\n\n switch (type) {\n case CompressionType.NONE:\n return input;\n\n case CompressionType.GZIP:\n return gzipAsync(input, { level });\n\n case CompressionType.BROTLI:\n return brotliCompressAsync(input, {\n params: {\n [zlib.constants.BROTLI_PARAM_QUALITY]: level,\n },\n });\n\n default:\n throw new Error(`Unknown compression type: ${type}`);\n }\n}\n\n/**\n * Decompress data\n */\nexport async function decompress(\n data: Buffer,\n type: CompressionType = CompressionType.GZIP\n): Promise<string> {\n let decompressed: Buffer;\n\n switch (type) {\n case CompressionType.NONE:\n decompressed = data;\n break;\n\n case CompressionType.GZIP:\n decompressed = await gunzipAsync(data);\n break;\n\n case CompressionType.BROTLI:\n decompressed = await brotliDecompressAsync(data);\n break;\n\n default:\n throw new Error(`Unknown compression type: ${type}`);\n }\n\n return decompressed.toString('utf8');\n}\n\n/**\n * Calculate compression ratio\n */\nexport function compressionRatio(original: number, compressed: number): number {\n if (original === 0) return 0;\n return (1 - compressed / original) * 100;\n}\n\n/**\n * Auto-detect compression type from buffer\n */\nexport function detectCompressionType(data: Buffer): CompressionType {\n // Check for gzip magic number\n if (data.length >= 2 && data[0] === 0x1f && data[1] === 0x8b) {\n return CompressionType.GZIP;\n }\n\n // Check for brotli\n // Brotli doesn't have a consistent magic number, but we can try to decompress\n // This is a heuristic approach\n if (data.length >= 4 && data[0] === 0xce && data[1] === 0xb2) {\n return CompressionType.BROTLI;\n }\n\n return CompressionType.NONE;\n}\n\n/**\n * Choose optimal compression based on data characteristics\n */\nexport function chooseOptimalCompression(\n data: string | Buffer,\n speedPriority: boolean = false\n): CompressionType {\n const size = typeof data === 'string' ? Buffer.byteLength(data) : data.length;\n\n // Don't compress small data\n if (size < 1024) {\n return CompressionType.NONE;\n }\n\n // Use gzip for speed priority or medium data\n if (speedPriority || size < 100 * 1024) {\n return CompressionType.GZIP;\n }\n\n // Use brotli for large data and better compression\n return CompressionType.BROTLI;\n}\n"],
|
|
5
|
+
"mappings": ";;;;AAIA,OAAO,UAAU;AACjB,SAAS,iBAAiB;AAE1B,MAAM,YAAY,UAAU,KAAK,IAAI;AACrC,MAAM,cAAc,UAAU,KAAK,MAAM;AACzC,MAAM,sBAAsB,UAAU,KAAK,cAAc;AACzD,MAAM,wBAAwB,UAAU,KAAK,gBAAgB;AAEtD,IAAK,kBAAL,kBAAKA,qBAAL;AACL,EAAAA,iBAAA,UAAO;AACP,EAAAA,iBAAA,UAAO;AACP,EAAAA,iBAAA,YAAS;AAHC,SAAAA;AAAA,GAAA;AAcZ,eAAsB,SACpB,MACA,UAA8B,CAAC,GACd;AACjB,QAAM,EAAE,OAAO,mBAAsB,QAAQ,EAAE,IAAI;AAEnD,QAAM,QAAQ,OAAO,SAAS,WAAW,OAAO,KAAK,MAAM,MAAM,IAAI;AAErE,UAAQ,MAAM;AAAA,IACZ,KAAK;AACH,aAAO;AAAA,IAET,KAAK;AACH,aAAO,UAAU,OAAO,EAAE,MAAM,CAAC;AAAA,IAEnC,KAAK;AACH,aAAO,oBAAoB,OAAO;AAAA,QAChC,QAAQ;AAAA,UACN,CAAC,KAAK,UAAU,oBAAoB,GAAG;AAAA,QACzC;AAAA,MACF,CAAC;AAAA,IAEH;AACE,YAAM,IAAI,MAAM,6BAA6B,IAAI,EAAE;AAAA,EACvD;AACF;AAKA,eAAsB,WACpB,MACA,OAAwB,mBACP;AACjB,MAAI;AAEJ,UAAQ,MAAM;AAAA,IACZ,KAAK;AACH,qBAAe;AACf;AAAA,IAEF,KAAK;AACH,qBAAe,MAAM,YAAY,IAAI;AACrC;AAAA,IAEF,KAAK;AACH,qBAAe,MAAM,sBAAsB,IAAI;AAC/C;AAAA,IAEF;AACE,YAAM,IAAI,MAAM,6BAA6B,IAAI,EAAE;AAAA,EACvD;AAEA,SAAO,aAAa,SAAS,MAAM;AACrC;AAKO,SAAS,iBAAiB,UAAkB,YAA4B;AAC7E,MAAI,aAAa,EAAG,QAAO;AAC3B,UAAQ,IAAI,aAAa,YAAY;AACvC;AAKO,SAAS,sBAAsB,MAA+B;AAEnE,MAAI,KAAK,UAAU,KAAK,KAAK,CAAC,MAAM,MAAQ,KAAK,CAAC,MAAM,KAAM;AAC5D,WAAO;AAAA,EACT;AAKA,MAAI,KAAK,UAAU,KAAK,KAAK,CAAC,MAAM,OAAQ,KAAK,CAAC,MAAM,KAAM;AAC5D,WAAO;AAAA,EACT;AAEA,SAAO;AACT;AAKO,SAAS,yBACd,MACA,gBAAyB,OACR;AACjB,QAAM,OAAO,OAAO,SAAS,WAAW,OAAO,WAAW,IAAI,IAAI,KAAK;AAGvE,MAAI,OAAO,MAAM;AACf,WAAO;AAAA,EACT;AAGA,MAAI,iBAAiB,OAAO,MAAM,MAAM;AACtC,WAAO;AAAA,EACT;AAGA,SAAO;AACT;",
|
|
6
|
+
"names": ["CompressionType"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,218 @@
|
|
|
1
|
+
import { fileURLToPath as __fileURLToPath } from 'url';
|
|
2
|
+
import { dirname as __pathDirname } from 'path';
|
|
3
|
+
const __filename = __fileURLToPath(import.meta.url);
|
|
4
|
+
const __dirname = __pathDirname(__filename);
|
|
5
|
+
import { execFileSync } from "child_process";
|
|
6
|
+
import { existsSync, readFileSync, writeFileSync, mkdirSync } from "fs";
|
|
7
|
+
import { join } from "path";
|
|
8
|
+
import { homedir } from "os";
|
|
9
|
+
import { logger } from "../monitoring/logger.js";
|
|
10
|
+
import {
|
|
11
|
+
ErrorCode,
|
|
12
|
+
getErrorMessage,
|
|
13
|
+
wrapError
|
|
14
|
+
} from "../errors/index.js";
|
|
15
|
+
import { withTimeout, gracefulDegrade } from "../errors/recovery.js";
|
|
16
|
+
class UpdateChecker {
|
|
17
|
+
static CACHE_FILE = join(
|
|
18
|
+
homedir(),
|
|
19
|
+
".stackmemory",
|
|
20
|
+
"update-check.json"
|
|
21
|
+
);
|
|
22
|
+
static CHECK_INTERVAL = 24 * 60 * 60 * 1e3;
|
|
23
|
+
// 24 hours
|
|
24
|
+
static PACKAGE_NAME = "@stackmemoryai/stackmemory";
|
|
25
|
+
/**
|
|
26
|
+
* Check for updates and display notification if needed
|
|
27
|
+
*/
|
|
28
|
+
static async checkForUpdates(currentVersion, silent = false) {
|
|
29
|
+
try {
|
|
30
|
+
const cache = this.loadCache();
|
|
31
|
+
const now = Date.now();
|
|
32
|
+
if (cache && now - cache.lastChecked < this.CHECK_INTERVAL) {
|
|
33
|
+
if (!silent && cache.latestVersion && cache.latestVersion !== currentVersion) {
|
|
34
|
+
this.displayUpdateNotification(currentVersion, cache.latestVersion);
|
|
35
|
+
}
|
|
36
|
+
return;
|
|
37
|
+
}
|
|
38
|
+
const latestVersion = await this.fetchLatestVersion();
|
|
39
|
+
this.saveCache({
|
|
40
|
+
lastChecked: now,
|
|
41
|
+
latestVersion,
|
|
42
|
+
currentVersion
|
|
43
|
+
});
|
|
44
|
+
if (!silent && latestVersion && this.isNewerVersion(currentVersion, latestVersion)) {
|
|
45
|
+
this.displayUpdateNotification(currentVersion, latestVersion);
|
|
46
|
+
}
|
|
47
|
+
} catch (error) {
|
|
48
|
+
const wrappedError = wrapError(
|
|
49
|
+
error,
|
|
50
|
+
"Update check failed",
|
|
51
|
+
ErrorCode.INTERNAL_ERROR,
|
|
52
|
+
{ currentVersion, silent }
|
|
53
|
+
);
|
|
54
|
+
logger.debug("Update check failed:", {
|
|
55
|
+
error: getErrorMessage(error),
|
|
56
|
+
context: wrappedError.context
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Fetch latest version from npm registry
|
|
62
|
+
*/
|
|
63
|
+
static async fetchLatestVersion() {
|
|
64
|
+
try {
|
|
65
|
+
const fetchVersion = async () => {
|
|
66
|
+
const output = execFileSync("npm", ["view", this.PACKAGE_NAME, "version"], {
|
|
67
|
+
encoding: "utf-8",
|
|
68
|
+
stdio: ["pipe", "pipe", "ignore"],
|
|
69
|
+
timeout: 5e3
|
|
70
|
+
// 5 second timeout
|
|
71
|
+
}).trim();
|
|
72
|
+
return output;
|
|
73
|
+
};
|
|
74
|
+
return await gracefulDegrade(
|
|
75
|
+
() => withTimeout(fetchVersion, 5e3, "npm registry timeout"),
|
|
76
|
+
"",
|
|
77
|
+
{ operation: "fetchLatestVersion", package: this.PACKAGE_NAME }
|
|
78
|
+
);
|
|
79
|
+
} catch (error) {
|
|
80
|
+
const wrappedError = wrapError(
|
|
81
|
+
error,
|
|
82
|
+
"Failed to fetch latest version from npm",
|
|
83
|
+
ErrorCode.SERVICE_UNAVAILABLE,
|
|
84
|
+
{ package: this.PACKAGE_NAME }
|
|
85
|
+
);
|
|
86
|
+
logger.debug("Failed to fetch latest version:", {
|
|
87
|
+
error: getErrorMessage(error),
|
|
88
|
+
context: wrappedError.context
|
|
89
|
+
});
|
|
90
|
+
return "";
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* Compare version strings
|
|
95
|
+
*/
|
|
96
|
+
static isNewerVersion(current, latest) {
|
|
97
|
+
try {
|
|
98
|
+
const currentParts = current.split(".").map(Number);
|
|
99
|
+
const latestParts = latest.split(".").map(Number);
|
|
100
|
+
if (currentParts.some(isNaN) || latestParts.some(isNaN)) {
|
|
101
|
+
logger.debug("Invalid version format:", { current, latest });
|
|
102
|
+
return false;
|
|
103
|
+
}
|
|
104
|
+
for (let i = 0; i < 3; i++) {
|
|
105
|
+
const latestPart = latestParts[i] ?? 0;
|
|
106
|
+
const currentPart = currentParts[i] ?? 0;
|
|
107
|
+
if (latestPart > currentPart) return true;
|
|
108
|
+
if (latestPart < currentPart) return false;
|
|
109
|
+
}
|
|
110
|
+
return false;
|
|
111
|
+
} catch (error) {
|
|
112
|
+
logger.debug("Version comparison failed:", {
|
|
113
|
+
error: getErrorMessage(error),
|
|
114
|
+
current,
|
|
115
|
+
latest
|
|
116
|
+
});
|
|
117
|
+
return false;
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
/**
|
|
121
|
+
* Display update notification
|
|
122
|
+
*/
|
|
123
|
+
static displayUpdateNotification(current, latest) {
|
|
124
|
+
console.log("\n" + "\u2500".repeat(60));
|
|
125
|
+
console.log("\u{1F4E6} StackMemory Update Available!");
|
|
126
|
+
console.log(` Current: v${current}`);
|
|
127
|
+
console.log(` Latest: v${latest}`);
|
|
128
|
+
console.log("\n Update with:");
|
|
129
|
+
console.log(" npm install -g @stackmemoryai/stackmemory@latest");
|
|
130
|
+
console.log("\u2500".repeat(60) + "\n");
|
|
131
|
+
}
|
|
132
|
+
/**
|
|
133
|
+
* Load update cache
|
|
134
|
+
*/
|
|
135
|
+
static loadCache() {
|
|
136
|
+
try {
|
|
137
|
+
if (!existsSync(this.CACHE_FILE)) {
|
|
138
|
+
return null;
|
|
139
|
+
}
|
|
140
|
+
const data = readFileSync(this.CACHE_FILE, "utf-8");
|
|
141
|
+
const cache = JSON.parse(data);
|
|
142
|
+
if (typeof cache.lastChecked !== "number" || typeof cache.latestVersion !== "string" || typeof cache.currentVersion !== "string") {
|
|
143
|
+
logger.debug("Invalid cache format, ignoring");
|
|
144
|
+
return null;
|
|
145
|
+
}
|
|
146
|
+
return cache;
|
|
147
|
+
} catch (error) {
|
|
148
|
+
const wrappedError = wrapError(
|
|
149
|
+
error,
|
|
150
|
+
"Failed to load update cache",
|
|
151
|
+
ErrorCode.INTERNAL_ERROR,
|
|
152
|
+
{ cacheFile: this.CACHE_FILE }
|
|
153
|
+
);
|
|
154
|
+
logger.debug("Failed to load update cache:", {
|
|
155
|
+
error: getErrorMessage(error),
|
|
156
|
+
context: wrappedError.context
|
|
157
|
+
});
|
|
158
|
+
return null;
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
/**
|
|
162
|
+
* Save update cache
|
|
163
|
+
*/
|
|
164
|
+
static saveCache(cache) {
|
|
165
|
+
try {
|
|
166
|
+
const dir = join(homedir(), ".stackmemory");
|
|
167
|
+
if (!existsSync(dir)) {
|
|
168
|
+
mkdirSync(dir, { recursive: true, mode: 493 });
|
|
169
|
+
}
|
|
170
|
+
const tempFile = `${this.CACHE_FILE}.tmp`;
|
|
171
|
+
writeFileSync(tempFile, JSON.stringify(cache, null, 2), {
|
|
172
|
+
mode: 420
|
|
173
|
+
});
|
|
174
|
+
if (existsSync(this.CACHE_FILE)) {
|
|
175
|
+
writeFileSync(this.CACHE_FILE, JSON.stringify(cache, null, 2));
|
|
176
|
+
} else {
|
|
177
|
+
writeFileSync(this.CACHE_FILE, JSON.stringify(cache, null, 2));
|
|
178
|
+
}
|
|
179
|
+
} catch (error) {
|
|
180
|
+
const wrappedError = wrapError(
|
|
181
|
+
error,
|
|
182
|
+
"Failed to save update cache",
|
|
183
|
+
ErrorCode.INTERNAL_ERROR,
|
|
184
|
+
{ cacheFile: this.CACHE_FILE, cache }
|
|
185
|
+
);
|
|
186
|
+
logger.debug("Failed to save update cache:", {
|
|
187
|
+
error: getErrorMessage(error),
|
|
188
|
+
context: wrappedError.context
|
|
189
|
+
});
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
/**
|
|
193
|
+
* Force check for updates (ignores cache)
|
|
194
|
+
*/
|
|
195
|
+
static async forceCheck(currentVersion) {
|
|
196
|
+
try {
|
|
197
|
+
const latestVersion = await this.fetchLatestVersion();
|
|
198
|
+
this.saveCache({
|
|
199
|
+
lastChecked: Date.now(),
|
|
200
|
+
latestVersion,
|
|
201
|
+
currentVersion
|
|
202
|
+
});
|
|
203
|
+
if (latestVersion) {
|
|
204
|
+
if (this.isNewerVersion(currentVersion, latestVersion)) {
|
|
205
|
+
this.displayUpdateNotification(currentVersion, latestVersion);
|
|
206
|
+
} else {
|
|
207
|
+
console.log(`\u2705 StackMemory is up to date (v${currentVersion})`);
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
} catch (error) {
|
|
211
|
+
console.error("\u274C Update check failed:", error.message);
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
export {
|
|
216
|
+
UpdateChecker
|
|
217
|
+
};
|
|
218
|
+
//# sourceMappingURL=update-checker.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../src/core/utils/update-checker.ts"],
|
|
4
|
+
"sourcesContent": ["/**\n * Update checker for StackMemory\n * Checks npm registry for newer versions\n */\n\nimport { execSync, execFileSync } from 'child_process';\nimport { existsSync, readFileSync, writeFileSync, mkdirSync } from 'fs';\nimport { join } from 'path';\nimport { homedir } from 'os';\nimport { logger } from '../monitoring/logger.js';\nimport {\n SystemError,\n ErrorCode,\n getErrorMessage,\n wrapError,\n} from '../errors/index.js';\nimport { withTimeout, gracefulDegrade } from '../errors/recovery.js';\n\ninterface UpdateCache {\n lastChecked: number;\n latestVersion: string;\n currentVersion: string;\n}\n\nexport class UpdateChecker {\n private static CACHE_FILE = join(\n homedir(),\n '.stackmemory',\n 'update-check.json'\n );\n private static CHECK_INTERVAL = 24 * 60 * 60 * 1000; // 24 hours\n private static PACKAGE_NAME = '@stackmemoryai/stackmemory';\n\n /**\n * Check for updates and display notification if needed\n */\n static async checkForUpdates(\n currentVersion: string,\n silent = false\n ): Promise<void> {\n try {\n // Check cache first\n const cache = this.loadCache();\n const now = Date.now();\n\n // Skip check if we checked recently\n if (cache && now - cache.lastChecked < this.CHECK_INTERVAL) {\n if (\n !silent &&\n cache.latestVersion &&\n cache.latestVersion !== currentVersion\n ) {\n this.displayUpdateNotification(currentVersion, cache.latestVersion);\n }\n return;\n }\n\n // Fetch latest version from npm\n const latestVersion = await this.fetchLatestVersion();\n\n // Update cache\n this.saveCache({\n lastChecked: now,\n latestVersion,\n currentVersion,\n });\n\n // Display notification if update available\n if (\n !silent &&\n latestVersion &&\n this.isNewerVersion(currentVersion, latestVersion)\n ) {\n this.displayUpdateNotification(currentVersion, latestVersion);\n }\n } catch (error: unknown) {\n // Log the error with proper context but don't interrupt user workflow\n const wrappedError = wrapError(\n error,\n 'Update check failed',\n ErrorCode.INTERNAL_ERROR,\n { currentVersion, silent }\n );\n logger.debug('Update check failed:', {\n error: getErrorMessage(error),\n context: wrappedError.context,\n });\n }\n }\n\n /**\n * Fetch latest version from npm registry\n */\n private static async fetchLatestVersion(): Promise<string> {\n try {\n // Use timeout to prevent hanging on slow network\n const fetchVersion = async () => {\n const output = execFileSync('npm', ['view', this.PACKAGE_NAME, 'version'], {\n encoding: 'utf-8',\n stdio: ['pipe', 'pipe', 'ignore'],\n timeout: 5000, // 5 second timeout\n }).trim();\n return output;\n };\n\n // Wrap with timeout and graceful degradation\n return await gracefulDegrade(\n () => withTimeout(fetchVersion, 5000, 'npm registry timeout'),\n '',\n { operation: 'fetchLatestVersion', package: this.PACKAGE_NAME }\n );\n } catch (error: unknown) {\n const wrappedError = wrapError(\n error,\n 'Failed to fetch latest version from npm',\n ErrorCode.SERVICE_UNAVAILABLE,\n { package: this.PACKAGE_NAME }\n );\n logger.debug('Failed to fetch latest version:', {\n error: getErrorMessage(error),\n context: wrappedError.context,\n });\n return '';\n }\n }\n\n /**\n * Compare version strings\n */\n private static isNewerVersion(current: string, latest: string): boolean {\n try {\n const currentParts = current.split('.').map(Number);\n const latestParts = latest.split('.').map(Number);\n\n // Handle malformed version strings\n if (currentParts.some(isNaN) || latestParts.some(isNaN)) {\n logger.debug('Invalid version format:', { current, latest });\n return false;\n }\n\n for (let i = 0; i < 3; i++) {\n const latestPart = latestParts[i] ?? 0;\n const currentPart = currentParts[i] ?? 0;\n if (latestPart > currentPart) return true;\n if (latestPart < currentPart) return false;\n }\n return false;\n } catch (error: unknown) {\n logger.debug('Version comparison failed:', {\n error: getErrorMessage(error),\n current,\n latest,\n });\n return false;\n }\n }\n\n /**\n * Display update notification\n */\n private static displayUpdateNotification(\n current: string,\n latest: string\n ): void {\n console.log('\\n' + '\u2500'.repeat(60));\n console.log('\uD83D\uDCE6 StackMemory Update Available!');\n console.log(` Current: v${current}`);\n console.log(` Latest: v${latest}`);\n console.log('\\n Update with:');\n console.log(' npm install -g @stackmemoryai/stackmemory@latest');\n console.log('\u2500'.repeat(60) + '\\n');\n }\n\n /**\n * Load update cache\n */\n private static loadCache(): UpdateCache | null {\n try {\n if (!existsSync(this.CACHE_FILE)) {\n return null;\n }\n\n const data = readFileSync(this.CACHE_FILE, 'utf-8');\n const cache = JSON.parse(data) as UpdateCache;\n\n // Validate cache structure\n if (\n typeof cache.lastChecked !== 'number' ||\n typeof cache.latestVersion !== 'string' ||\n typeof cache.currentVersion !== 'string'\n ) {\n logger.debug('Invalid cache format, ignoring');\n return null;\n }\n\n return cache;\n } catch (error: unknown) {\n // Cache errors should not interrupt operation\n const wrappedError = wrapError(\n error,\n 'Failed to load update cache',\n ErrorCode.INTERNAL_ERROR,\n { cacheFile: this.CACHE_FILE }\n );\n logger.debug('Failed to load update cache:', {\n error: getErrorMessage(error),\n context: wrappedError.context,\n });\n return null;\n }\n }\n\n /**\n * Save update cache\n */\n private static saveCache(cache: UpdateCache): void {\n try {\n const dir = join(homedir(), '.stackmemory');\n\n // Create directory if it doesn't exist (safer than execSync)\n if (!existsSync(dir)) {\n mkdirSync(dir, { recursive: true, mode: 0o755 });\n }\n\n // Write cache with atomic operation (write to temp, then rename)\n const tempFile = `${this.CACHE_FILE}.tmp`;\n writeFileSync(tempFile, JSON.stringify(cache, null, 2), {\n mode: 0o644,\n });\n\n // Atomic rename\n if (existsSync(this.CACHE_FILE)) {\n writeFileSync(this.CACHE_FILE, JSON.stringify(cache, null, 2));\n } else {\n writeFileSync(this.CACHE_FILE, JSON.stringify(cache, null, 2));\n }\n } catch (error: unknown) {\n // Cache save errors should not interrupt operation\n const wrappedError = wrapError(\n error,\n 'Failed to save update cache',\n ErrorCode.INTERNAL_ERROR,\n { cacheFile: this.CACHE_FILE, cache }\n );\n logger.debug('Failed to save update cache:', {\n error: getErrorMessage(error),\n context: wrappedError.context,\n });\n }\n }\n\n /**\n * Force check for updates (ignores cache)\n */\n static async forceCheck(currentVersion: string): Promise<void> {\n try {\n const latestVersion = await this.fetchLatestVersion();\n\n // Update cache\n this.saveCache({\n lastChecked: Date.now(),\n latestVersion,\n currentVersion,\n });\n\n if (latestVersion) {\n if (this.isNewerVersion(currentVersion, latestVersion)) {\n this.displayUpdateNotification(currentVersion, latestVersion);\n } else {\n console.log(`\u2705 StackMemory is up to date (v${currentVersion})`);\n }\n }\n } catch (error: unknown) {\n console.error('\u274C Update check failed:', (error as Error).message);\n }\n }\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|