@stackmemoryai/stackmemory 0.5.5 → 0.5.6
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/agents/core/agent-task-manager.js +4 -0
- package/dist/agents/core/agent-task-manager.js.map +1 -1
- package/dist/agents/testing-agent.js +4 -0
- package/dist/agents/testing-agent.js.map +1 -1
- package/dist/agents/verifiers/base-verifier.js +4 -0
- package/dist/agents/verifiers/base-verifier.js.map +1 -1
- package/dist/agents/verifiers/formatter-verifier.js +4 -0
- package/dist/agents/verifiers/formatter-verifier.js.map +1 -1
- package/dist/agents/verifiers/llm-judge.js +4 -0
- package/dist/agents/verifiers/llm-judge.js.map +1 -1
- package/dist/cli/auto-detect.js +4 -0
- package/dist/cli/auto-detect.js.map +1 -1
- package/dist/cli/browser-test.js +4 -0
- package/dist/cli/browser-test.js.map +1 -1
- package/dist/cli/claude-sm-danger.js +4 -3
- package/dist/cli/claude-sm-danger.js.map +2 -2
- package/dist/cli/claude-sm.js +4 -0
- package/dist/cli/claude-sm.js.map +2 -2
- package/dist/cli/codex-sm.js +4 -0
- package/dist/cli/codex-sm.js.map +1 -1
- package/dist/cli/commands/api.js +4 -0
- package/dist/cli/commands/api.js.map +1 -1
- package/dist/cli/commands/cleanup-processes.js +4 -0
- package/dist/cli/commands/cleanup-processes.js.map +1 -1
- package/dist/cli/commands/clear.js +4 -0
- package/dist/cli/commands/clear.js.map +1 -1
- package/dist/cli/commands/config.js +4 -0
- package/dist/cli/commands/config.js.map +1 -1
- package/dist/cli/commands/context-rehydrate.js +4 -0
- package/dist/cli/commands/context-rehydrate.js.map +1 -1
- package/dist/cli/commands/context.js +4 -0
- package/dist/cli/commands/context.js.map +1 -1
- package/dist/cli/commands/dashboard.js +4 -0
- package/dist/cli/commands/dashboard.js.map +1 -1
- package/dist/cli/commands/db.js +4 -0
- package/dist/cli/commands/db.js.map +1 -1
- package/dist/cli/commands/decision.js +4 -0
- package/dist/cli/commands/decision.js.map +1 -1
- package/dist/cli/commands/handoff.js +4 -0
- package/dist/cli/commands/handoff.js.map +1 -1
- package/dist/cli/commands/hooks.js +4 -0
- package/dist/cli/commands/hooks.js.map +1 -1
- package/dist/cli/commands/linear-unified.js +4 -0
- package/dist/cli/commands/linear-unified.js.map +1 -1
- package/dist/cli/commands/linear.js +4 -0
- package/dist/cli/commands/linear.js.map +1 -1
- package/dist/cli/commands/log.js +4 -0
- package/dist/cli/commands/log.js.map +1 -1
- package/dist/cli/commands/login.js +4 -0
- package/dist/cli/commands/login.js.map +1 -1
- package/dist/cli/commands/migrate.js +4 -0
- package/dist/cli/commands/migrate.js.map +1 -1
- package/dist/cli/commands/monitor.js +4 -0
- package/dist/cli/commands/monitor.js.map +1 -1
- package/dist/cli/commands/onboard.js +4 -0
- package/dist/cli/commands/onboard.js.map +1 -1
- package/dist/cli/commands/projects.js +4 -0
- package/dist/cli/commands/projects.js.map +1 -1
- package/dist/cli/commands/quality.js +4 -0
- package/dist/cli/commands/quality.js.map +1 -1
- package/dist/cli/commands/ralph.js +4 -0
- package/dist/cli/commands/ralph.js.map +1 -1
- package/dist/cli/commands/search.js +4 -0
- package/dist/cli/commands/search.js.map +1 -1
- package/dist/cli/commands/service.js +4 -0
- package/dist/cli/commands/service.js.map +1 -1
- package/dist/cli/commands/session.js +4 -0
- package/dist/cli/commands/session.js.map +1 -1
- package/dist/cli/commands/shell.js +5 -4
- package/dist/cli/commands/shell.js.map +2 -2
- package/dist/cli/commands/signup.js +4 -0
- package/dist/cli/commands/signup.js.map +1 -1
- package/dist/cli/commands/skills.js +4 -0
- package/dist/cli/commands/skills.js.map +1 -1
- package/dist/cli/commands/storage-tier.js +4 -0
- package/dist/cli/commands/storage-tier.js.map +1 -1
- package/dist/cli/commands/storage.js +4 -0
- package/dist/cli/commands/storage.js.map +1 -1
- package/dist/cli/commands/sweep.js +5 -4
- package/dist/cli/commands/sweep.js.map +2 -2
- package/dist/cli/commands/tasks.js +4 -0
- package/dist/cli/commands/tasks.js.map +1 -1
- package/dist/cli/commands/test.js +4 -0
- package/dist/cli/commands/test.js.map +1 -1
- package/dist/cli/commands/workflow.js +4 -0
- package/dist/cli/commands/workflow.js.map +1 -1
- package/dist/cli/commands/worktree.js +4 -0
- package/dist/cli/commands/worktree.js.map +1 -1
- package/dist/cli/index.js +4 -0
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/utils/viewer.js +4 -0
- package/dist/cli/utils/viewer.js.map +1 -1
- package/dist/core/analytics/team-analytics.js +4 -0
- package/dist/core/analytics/team-analytics.js.map +1 -1
- package/dist/core/config/config-manager.js +4 -0
- package/dist/core/config/config-manager.js.map +1 -1
- package/dist/core/config/storage-config.js +4 -0
- package/dist/core/config/storage-config.js.map +1 -1
- package/dist/core/config/types.js +4 -0
- package/dist/core/config/types.js.map +1 -1
- package/dist/core/context/auto-context.js +4 -0
- package/dist/core/context/auto-context.js.map +1 -1
- package/dist/core/context/compaction-handler.js +4 -0
- package/dist/core/context/compaction-handler.js.map +1 -1
- package/dist/core/context/context-bridge.js +4 -0
- package/dist/core/context/context-bridge.js.map +1 -1
- package/dist/core/context/dual-stack-manager.js +4 -0
- package/dist/core/context/dual-stack-manager.js.map +1 -1
- package/dist/core/context/enhanced-rehydration.js +4 -0
- package/dist/core/context/enhanced-rehydration.js.map +1 -1
- package/dist/core/context/frame-database.js +4 -0
- package/dist/core/context/frame-database.js.map +1 -1
- package/dist/core/context/frame-digest.js +4 -0
- package/dist/core/context/frame-digest.js.map +1 -1
- package/dist/core/context/frame-handoff-manager.js +4 -0
- package/dist/core/context/frame-handoff-manager.js.map +1 -1
- package/dist/core/context/frame-manager.js +4 -0
- package/dist/core/context/frame-manager.js.map +1 -1
- package/dist/core/context/frame-stack.js +4 -0
- package/dist/core/context/frame-stack.js.map +1 -1
- package/dist/core/context/frame-types.js +4 -0
- package/dist/core/context/incremental-gc.js +4 -0
- package/dist/core/context/incremental-gc.js.map +1 -1
- package/dist/core/context/index.js +4 -0
- package/dist/core/context/index.js.map +1 -1
- package/dist/core/context/model-aware-compaction.js +4 -0
- package/dist/core/context/model-aware-compaction.js.map +1 -1
- package/dist/core/context/permission-manager.js +4 -0
- package/dist/core/context/permission-manager.js.map +1 -1
- package/dist/core/context/recursive-context-manager.js +4 -0
- package/dist/core/context/recursive-context-manager.js.map +1 -1
- package/dist/core/context/refactored-frame-manager.js +4 -0
- package/dist/core/context/refactored-frame-manager.js.map +1 -1
- package/dist/core/context/shared-context-layer.js +4 -0
- package/dist/core/context/shared-context-layer.js.map +1 -1
- package/dist/core/context/stack-merge-resolver.js +4 -0
- package/dist/core/context/stack-merge-resolver.js.map +1 -1
- package/dist/core/context/validation.js +4 -0
- package/dist/core/context/validation.js.map +1 -1
- package/dist/core/database/batch-operations.js +4 -0
- package/dist/core/database/batch-operations.js.map +1 -1
- package/dist/core/database/connection-pool.js +4 -0
- package/dist/core/database/connection-pool.js.map +1 -1
- package/dist/core/database/database-adapter.js +4 -0
- package/dist/core/database/database-adapter.js.map +1 -1
- package/dist/core/database/migration-manager.js +4 -0
- package/dist/core/database/migration-manager.js.map +1 -1
- package/dist/core/database/paradedb-adapter.js +4 -0
- package/dist/core/database/paradedb-adapter.js.map +1 -1
- package/dist/core/database/query-cache.js +4 -0
- package/dist/core/database/query-cache.js.map +1 -1
- package/dist/core/database/query-router.js +4 -0
- package/dist/core/database/query-router.js.map +1 -1
- package/dist/core/database/sqlite-adapter.js +4 -0
- package/dist/core/database/sqlite-adapter.js.map +1 -1
- package/dist/core/digest/enhanced-hybrid-digest.js +4 -0
- package/dist/core/digest/enhanced-hybrid-digest.js.map +1 -1
- package/dist/core/digest/frame-digest-integration.js +4 -0
- package/dist/core/digest/frame-digest-integration.js.map +1 -1
- package/dist/core/digest/hybrid-digest-generator.js +4 -0
- package/dist/core/digest/hybrid-digest-generator.js.map +1 -1
- package/dist/core/digest/index.js +4 -0
- package/dist/core/digest/index.js.map +1 -1
- package/dist/core/digest/types.js +4 -0
- package/dist/core/digest/types.js.map +1 -1
- package/dist/core/errors/index.js +4 -0
- package/dist/core/errors/index.js.map +1 -1
- package/dist/core/errors/recovery.js +4 -0
- package/dist/core/errors/recovery.js.map +1 -1
- package/dist/core/execution/parallel-executor.js +4 -0
- package/dist/core/execution/parallel-executor.js.map +1 -1
- package/dist/core/frame/workflow-templates.js +4 -0
- package/dist/core/frame/workflow-templates.js.map +1 -1
- package/dist/core/merge/conflict-detector.js +4 -0
- package/dist/core/merge/conflict-detector.js.map +1 -1
- package/dist/core/merge/index.js +4 -0
- package/dist/core/merge/index.js.map +1 -1
- package/dist/core/merge/resolution-engine.js +4 -0
- package/dist/core/merge/resolution-engine.js.map +1 -1
- package/dist/core/merge/stack-diff.js +4 -0
- package/dist/core/merge/stack-diff.js.map +1 -1
- package/dist/core/merge/types.js +4 -0
- package/dist/core/monitoring/error-handler.js +4 -0
- package/dist/core/monitoring/error-handler.js.map +1 -1
- package/dist/core/monitoring/logger.js +4 -0
- package/dist/core/monitoring/logger.js.map +1 -1
- package/dist/core/monitoring/metrics.js +4 -0
- package/dist/core/monitoring/metrics.js.map +1 -1
- package/dist/core/monitoring/progress-tracker.js +4 -0
- package/dist/core/monitoring/progress-tracker.js.map +1 -1
- package/dist/core/monitoring/session-monitor.js +4 -0
- package/dist/core/monitoring/session-monitor.js.map +1 -1
- package/dist/core/performance/context-cache.js +4 -0
- package/dist/core/performance/context-cache.js.map +1 -1
- package/dist/core/performance/index.js +4 -0
- package/dist/core/performance/index.js.map +1 -1
- package/dist/core/performance/lazy-context-loader.js +4 -0
- package/dist/core/performance/lazy-context-loader.js.map +1 -1
- package/dist/core/performance/monitor.js +4 -0
- package/dist/core/performance/monitor.js.map +1 -1
- package/dist/core/performance/optimized-frame-context.js +4 -0
- package/dist/core/performance/optimized-frame-context.js.map +1 -1
- package/dist/core/performance/performance-benchmark.js +4 -0
- package/dist/core/performance/performance-benchmark.js.map +1 -1
- package/dist/core/performance/performance-profiler.js +4 -0
- package/dist/core/performance/performance-profiler.js.map +1 -1
- package/dist/core/performance/streaming-jsonl-parser.js +4 -0
- package/dist/core/performance/streaming-jsonl-parser.js.map +1 -1
- package/dist/core/persistence/postgres-adapter.js +4 -0
- package/dist/core/persistence/postgres-adapter.js.map +1 -1
- package/dist/core/projects/project-isolation.js +4 -0
- package/dist/core/projects/project-isolation.js.map +1 -1
- package/dist/core/projects/project-manager.js +4 -0
- package/dist/core/projects/project-manager.js.map +1 -1
- package/dist/core/query/query-parser.js +4 -0
- package/dist/core/query/query-parser.js.map +1 -1
- package/dist/core/query/query-templates.js +4 -0
- package/dist/core/query/query-templates.js.map +1 -1
- package/dist/core/retrieval/context-retriever.js +4 -0
- package/dist/core/retrieval/context-retriever.js.map +1 -1
- package/dist/core/retrieval/graph-retrieval.js +4 -0
- package/dist/core/retrieval/graph-retrieval.js.map +1 -1
- package/dist/core/retrieval/hierarchical-retrieval.js +4 -0
- package/dist/core/retrieval/hierarchical-retrieval.js.map +1 -1
- package/dist/core/retrieval/index.js +4 -0
- package/dist/core/retrieval/index.js.map +1 -1
- package/dist/core/retrieval/llm-context-retrieval.js +4 -0
- package/dist/core/retrieval/llm-context-retrieval.js.map +1 -1
- package/dist/core/retrieval/retrieval-benchmarks.js +4 -0
- package/dist/core/retrieval/retrieval-benchmarks.js.map +1 -1
- package/dist/core/retrieval/summary-generator.js +4 -0
- package/dist/core/retrieval/summary-generator.js.map +1 -1
- package/dist/core/retrieval/types.js +4 -0
- package/dist/core/retrieval/types.js.map +1 -1
- package/dist/core/session/clear-survival.js +4 -0
- package/dist/core/session/clear-survival.js.map +1 -1
- package/dist/core/session/enhanced-handoff.js +4 -0
- package/dist/core/session/enhanced-handoff.js.map +1 -1
- package/dist/core/session/handoff-generator.js +4 -0
- package/dist/core/session/handoff-generator.js.map +1 -1
- package/dist/core/session/index.js +4 -0
- package/dist/core/session/index.js.map +1 -1
- package/dist/core/session/session-manager.js +4 -0
- package/dist/core/session/session-manager.js.map +1 -1
- package/dist/core/skills/index.js +4 -0
- package/dist/core/skills/index.js.map +1 -1
- package/dist/core/skills/skill-storage.js +4 -0
- package/dist/core/skills/skill-storage.js.map +1 -1
- package/dist/core/skills/types.js +4 -0
- package/dist/core/skills/types.js.map +1 -1
- package/dist/core/storage/chromadb-adapter.js +4 -0
- package/dist/core/storage/chromadb-adapter.js.map +1 -1
- package/dist/core/storage/infinite-storage.js +4 -0
- package/dist/core/storage/infinite-storage.js.map +1 -1
- package/dist/core/storage/railway-optimized-storage.js +4 -0
- package/dist/core/storage/railway-optimized-storage.js.map +1 -1
- package/dist/core/storage/remote-storage.js +4 -0
- package/dist/core/storage/remote-storage.js.map +1 -1
- package/dist/core/storage/two-tier-storage.js +4 -0
- package/dist/core/storage/two-tier-storage.js.map +1 -1
- package/dist/core/trace/cli-trace-wrapper.js +4 -0
- package/dist/core/trace/cli-trace-wrapper.js.map +1 -1
- package/dist/core/trace/db-trace-wrapper.js +4 -0
- package/dist/core/trace/db-trace-wrapper.js.map +1 -1
- package/dist/core/trace/debug-trace.js +4 -0
- package/dist/core/trace/debug-trace.js.map +1 -1
- package/dist/core/trace/index.js +4 -0
- package/dist/core/trace/index.js.map +1 -1
- package/dist/core/trace/linear-api-wrapper.js +4 -0
- package/dist/core/trace/linear-api-wrapper.js.map +1 -1
- package/dist/core/trace/trace-demo.js +4 -0
- package/dist/core/trace/trace-demo.js.map +1 -1
- package/dist/core/trace/trace-detector.demo.js +4 -0
- package/dist/core/trace/trace-detector.demo.js.map +1 -1
- package/dist/core/trace/trace-detector.js +4 -0
- package/dist/core/trace/trace-detector.js.map +1 -1
- package/dist/core/trace/trace-store.js +4 -0
- package/dist/core/trace/trace-store.js.map +1 -1
- package/dist/core/trace/types.js +4 -0
- package/dist/core/trace/types.js.map +1 -1
- package/dist/core/types.js +4 -0
- package/dist/core/utils/compression.js +4 -0
- package/dist/core/utils/compression.js.map +1 -1
- package/dist/core/utils/update-checker.js +4 -0
- package/dist/core/utils/update-checker.js.map +1 -1
- package/dist/core/worktree/worktree-manager.js +4 -0
- package/dist/core/worktree/worktree-manager.js.map +1 -1
- package/dist/daemon/session-daemon.js +4 -0
- package/dist/daemon/session-daemon.js.map +1 -1
- package/dist/features/analytics/api/analytics-api.js +4 -0
- package/dist/features/analytics/api/analytics-api.js.map +1 -1
- package/dist/features/analytics/core/analytics-service.js +4 -0
- package/dist/features/analytics/core/analytics-service.js.map +1 -1
- package/dist/features/analytics/index.js +4 -0
- package/dist/features/analytics/index.js.map +1 -1
- package/dist/features/analytics/queries/metrics-queries.js +4 -0
- package/dist/features/analytics/queries/metrics-queries.js.map +1 -1
- package/dist/features/analytics/types/metrics.js +4 -0
- package/dist/features/browser/browser-mcp.js +4 -0
- package/dist/features/browser/browser-mcp.js.map +1 -1
- package/dist/features/tasks/linear-task-manager.js +4 -0
- package/dist/features/tasks/linear-task-manager.js.map +1 -1
- package/dist/features/tasks/task-aware-context.js +4 -0
- package/dist/features/tasks/task-aware-context.js.map +1 -1
- package/dist/features/tui/simple-monitor.js +4 -0
- package/dist/features/tui/simple-monitor.js.map +1 -1
- package/dist/features/tui/swarm-monitor.js +4 -0
- package/dist/features/tui/swarm-monitor.js.map +1 -1
- package/dist/features/web/client/stores/task-store.js +4 -0
- package/dist/features/web/client/stores/task-store.js.map +1 -1
- package/dist/features/web/server/index.js +4 -0
- package/dist/features/web/server/index.js.map +1 -1
- package/dist/hooks/config.js +4 -0
- package/dist/hooks/config.js.map +1 -1
- package/dist/hooks/daemon.js +4 -0
- package/dist/hooks/daemon.js.map +1 -1
- package/dist/hooks/events.js +4 -0
- package/dist/hooks/events.js.map +1 -1
- package/dist/hooks/index.js +4 -0
- package/dist/hooks/index.js.map +1 -1
- package/dist/index.js +4 -0
- package/dist/index.js.map +1 -1
- package/dist/integrations/anthropic/client.js +4 -0
- package/dist/integrations/anthropic/client.js.map +1 -1
- package/dist/integrations/claude-code/agent-bridge.js +4 -0
- package/dist/integrations/claude-code/agent-bridge.js.map +1 -1
- package/dist/integrations/claude-code/enhanced-pre-clear-hooks.js +4 -0
- package/dist/integrations/claude-code/enhanced-pre-clear-hooks.js.map +1 -1
- package/dist/integrations/claude-code/lifecycle-hooks.js +4 -0
- package/dist/integrations/claude-code/lifecycle-hooks.js.map +1 -1
- package/dist/integrations/claude-code/post-task-hooks.js +4 -0
- package/dist/integrations/claude-code/post-task-hooks.js.map +1 -1
- package/dist/integrations/claude-code/subagent-client-stub.js +4 -0
- package/dist/integrations/claude-code/subagent-client-stub.js.map +1 -1
- package/dist/integrations/claude-code/subagent-client.js +4 -0
- package/dist/integrations/claude-code/subagent-client.js.map +1 -1
- package/dist/integrations/claude-code/task-coordinator.js +4 -0
- package/dist/integrations/claude-code/task-coordinator.js.map +1 -1
- package/dist/integrations/linear/auth.js +4 -0
- package/dist/integrations/linear/auth.js.map +1 -1
- package/dist/integrations/linear/auto-sync.js +4 -0
- package/dist/integrations/linear/auto-sync.js.map +1 -1
- package/dist/integrations/linear/client.js +4 -0
- package/dist/integrations/linear/client.js.map +1 -1
- package/dist/integrations/linear/config.js +4 -0
- package/dist/integrations/linear/config.js.map +1 -1
- package/dist/integrations/linear/migration.js +4 -0
- package/dist/integrations/linear/migration.js.map +1 -1
- package/dist/integrations/linear/oauth-server.js +4 -0
- package/dist/integrations/linear/oauth-server.js.map +1 -1
- package/dist/integrations/linear/rest-client.js +4 -0
- package/dist/integrations/linear/rest-client.js.map +1 -1
- package/dist/integrations/linear/sync-manager.js +4 -0
- package/dist/integrations/linear/sync-manager.js.map +1 -1
- package/dist/integrations/linear/sync-service.js +4 -0
- package/dist/integrations/linear/sync-service.js.map +1 -1
- package/dist/integrations/linear/sync.js +4 -0
- package/dist/integrations/linear/sync.js.map +1 -1
- package/dist/integrations/linear/types.js +4 -0
- package/dist/integrations/linear/unified-sync.js +4 -0
- package/dist/integrations/linear/unified-sync.js.map +1 -1
- package/dist/integrations/linear/webhook-handler.js +4 -0
- package/dist/integrations/linear/webhook-handler.js.map +1 -1
- package/dist/integrations/linear/webhook-server.js +4 -0
- package/dist/integrations/linear/webhook-server.js.map +1 -1
- package/dist/integrations/linear/webhook.js +4 -0
- package/dist/integrations/linear/webhook.js.map +1 -1
- package/dist/integrations/mcp/handlers/code-execution-handlers.js +4 -0
- package/dist/integrations/mcp/handlers/code-execution-handlers.js.map +1 -1
- package/dist/integrations/mcp/handlers/context-handlers.js +4 -0
- package/dist/integrations/mcp/handlers/context-handlers.js.map +1 -1
- package/dist/integrations/mcp/handlers/index.js +4 -0
- package/dist/integrations/mcp/handlers/index.js.map +1 -1
- package/dist/integrations/mcp/handlers/linear-handlers.js +4 -0
- package/dist/integrations/mcp/handlers/linear-handlers.js.map +1 -1
- package/dist/integrations/mcp/handlers/skill-handlers.js +4 -0
- package/dist/integrations/mcp/handlers/skill-handlers.js.map +1 -1
- package/dist/integrations/mcp/handlers/task-handlers.js +4 -0
- package/dist/integrations/mcp/handlers/task-handlers.js.map +1 -1
- package/dist/integrations/mcp/handlers/trace-handlers.js +4 -0
- package/dist/integrations/mcp/handlers/trace-handlers.js.map +1 -1
- package/dist/integrations/mcp/index.js +4 -0
- package/dist/integrations/mcp/index.js.map +1 -1
- package/dist/integrations/mcp/middleware/tool-scoring.js +4 -0
- package/dist/integrations/mcp/middleware/tool-scoring.js.map +1 -1
- package/dist/integrations/mcp/refactored-server.js +4 -0
- package/dist/integrations/mcp/refactored-server.js.map +1 -1
- package/dist/integrations/mcp/server.js +4 -0
- package/dist/integrations/mcp/server.js.map +1 -1
- package/dist/integrations/mcp/tool-definitions-code.js +4 -0
- package/dist/integrations/mcp/tool-definitions-code.js.map +1 -1
- package/dist/integrations/mcp/tool-definitions.js +4 -0
- package/dist/integrations/mcp/tool-definitions.js.map +1 -1
- package/dist/integrations/mcp/trace-test.js +4 -0
- package/dist/integrations/mcp/trace-test.js.map +1 -1
- package/dist/integrations/pg-aiguide/embedding-provider.js +4 -0
- package/dist/integrations/pg-aiguide/embedding-provider.js.map +1 -1
- package/dist/integrations/pg-aiguide/semantic-search.js +4 -0
- package/dist/integrations/pg-aiguide/semantic-search.js.map +1 -1
- package/dist/integrations/pg-aiguide/timescale-analytics.js +4 -0
- package/dist/integrations/pg-aiguide/timescale-analytics.js.map +1 -1
- package/dist/integrations/ralph/bridge/ralph-stackmemory-bridge.js +4 -0
- package/dist/integrations/ralph/bridge/ralph-stackmemory-bridge.js.map +1 -1
- package/dist/integrations/ralph/context/context-budget-manager.js +4 -0
- package/dist/integrations/ralph/context/context-budget-manager.js.map +1 -1
- package/dist/integrations/ralph/context/stackmemory-context-loader.js +4 -0
- package/dist/integrations/ralph/context/stackmemory-context-loader.js.map +1 -1
- package/dist/integrations/ralph/coordination/enhanced-coordination.js +4 -0
- package/dist/integrations/ralph/coordination/enhanced-coordination.js.map +1 -1
- package/dist/integrations/ralph/index.js +4 -0
- package/dist/integrations/ralph/index.js.map +1 -1
- package/dist/integrations/ralph/learning/pattern-learner.js +4 -0
- package/dist/integrations/ralph/learning/pattern-learner.js.map +1 -1
- package/dist/integrations/ralph/lifecycle/iteration-lifecycle.js +4 -0
- package/dist/integrations/ralph/lifecycle/iteration-lifecycle.js.map +1 -1
- package/dist/integrations/ralph/monitoring/swarm-dashboard.js +4 -0
- package/dist/integrations/ralph/monitoring/swarm-dashboard.js.map +1 -1
- package/dist/integrations/ralph/monitoring/swarm-registry.js +4 -0
- package/dist/integrations/ralph/monitoring/swarm-registry.js.map +1 -1
- package/dist/integrations/ralph/orchestration/multi-loop-orchestrator.js +4 -0
- package/dist/integrations/ralph/orchestration/multi-loop-orchestrator.js.map +1 -1
- package/dist/integrations/ralph/patterns/compounding-engineering-pattern.js +4 -0
- package/dist/integrations/ralph/patterns/compounding-engineering-pattern.js.map +1 -1
- package/dist/integrations/ralph/patterns/extended-coherence-sessions.js +4 -0
- package/dist/integrations/ralph/patterns/extended-coherence-sessions.js.map +1 -1
- package/dist/integrations/ralph/patterns/oracle-worker-pattern.js +4 -0
- package/dist/integrations/ralph/patterns/oracle-worker-pattern.js.map +1 -1
- package/dist/integrations/ralph/performance/performance-optimizer.js +4 -0
- package/dist/integrations/ralph/performance/performance-optimizer.js.map +1 -1
- package/dist/integrations/ralph/ralph-integration-demo.js +4 -0
- package/dist/integrations/ralph/ralph-integration-demo.js.map +1 -1
- package/dist/integrations/ralph/recovery/crash-recovery.js +4 -0
- package/dist/integrations/ralph/recovery/crash-recovery.js.map +1 -1
- package/dist/integrations/ralph/state/state-reconciler.js +4 -0
- package/dist/integrations/ralph/state/state-reconciler.js.map +1 -1
- package/dist/integrations/ralph/swarm/git-workflow-manager.js +4 -0
- package/dist/integrations/ralph/swarm/git-workflow-manager.js.map +1 -1
- package/dist/integrations/ralph/swarm/swarm-coordinator.js +4 -0
- package/dist/integrations/ralph/swarm/swarm-coordinator.js.map +1 -1
- package/dist/integrations/ralph/types.js +4 -0
- package/dist/integrations/ralph/visualization/ralph-debugger.js +4 -0
- package/dist/integrations/ralph/visualization/ralph-debugger.js.map +1 -1
- package/dist/mcp/stackmemory-mcp-server.js +4 -0
- package/dist/mcp/stackmemory-mcp-server.js.map +1 -1
- package/dist/middleware/exponential-rate-limiter.js +4 -0
- package/dist/middleware/exponential-rate-limiter.js.map +1 -1
- package/dist/models/user.model.js +4 -0
- package/dist/models/user.model.js.map +1 -1
- package/dist/servers/production/auth-middleware.js +4 -0
- package/dist/servers/production/auth-middleware.js.map +1 -1
- package/dist/servers/railway/config.js +4 -0
- package/dist/servers/railway/config.js.map +1 -1
- package/dist/servers/railway/index-enhanced.js +4 -0
- package/dist/servers/railway/index-enhanced.js.map +1 -1
- package/dist/servers/railway/index.js +4 -0
- package/dist/servers/railway/index.js.map +1 -1
- package/dist/servers/railway/simple.js +4 -0
- package/dist/servers/railway/simple.js.map +1 -1
- package/dist/servers/railway/storage-test.js +4 -0
- package/dist/servers/railway/storage-test.js.map +1 -1
- package/dist/services/config-service.js +4 -0
- package/dist/services/config-service.js.map +1 -1
- package/dist/services/context-service.js +4 -0
- package/dist/services/context-service.js.map +1 -1
- package/dist/skills/api-discovery.js +4 -0
- package/dist/skills/api-discovery.js.map +1 -1
- package/dist/skills/api-skill.js +4 -0
- package/dist/skills/api-skill.js.map +1 -1
- package/dist/skills/claude-skills.js +4 -0
- package/dist/skills/claude-skills.js.map +1 -1
- package/dist/skills/dashboard-launcher.js +4 -0
- package/dist/skills/dashboard-launcher.js.map +1 -1
- package/dist/skills/recursive-agent-orchestrator.js +4 -0
- package/dist/skills/recursive-agent-orchestrator.js.map +1 -1
- package/dist/skills/repo-ingestion-skill.js +4 -0
- package/dist/skills/repo-ingestion-skill.js.map +1 -1
- package/dist/skills/security-secrets-scanner.js +4 -0
- package/dist/skills/security-secrets-scanner.js.map +1 -1
- package/dist/skills/unified-rlm-orchestrator.js +4 -0
- package/dist/skills/unified-rlm-orchestrator.js.map +1 -1
- package/dist/types/task.js +4 -0
- package/dist/utils/env.js +4 -0
- package/dist/utils/env.js.map +1 -1
- package/dist/utils/formatting.js +4 -0
- package/dist/utils/formatting.js.map +1 -1
- package/dist/utils/process-cleanup.js +4 -0
- package/dist/utils/process-cleanup.js.map +1 -1
- package/dist/validation/schemas.js +4 -0
- package/dist/validation/schemas.js.map +1 -1
- package/package.json +1 -1
|
@@ -2,6 +2,6 @@
|
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/core/session/clear-survival.ts"],
|
|
4
4
|
"sourcesContent": ["/**\n * Clear Survival System for StackMemory\n * Inspired by Continuous-Claude's \"Clear, don't compact\" philosophy\n *\n * Allows StackMemory to survive /clear operations by:\n * 1. Detecting when context is getting full (>70%)\n * 2. Saving critical state to external ledgers\n * 3. Restoring from ledgers after /clear\n * 4. Maintaining continuity across session resets\n */\n\nimport { Frame, Trace, Context, Digest } from '../types';\nimport { FrameManager } from '../frame/frame-manager';\nimport { DatabaseManager } from '../storage/database-manager';\nimport { HandoffGenerator } from './handoff-generator';\nimport * as fs from 'fs/promises';\nimport * as path from 'path';\n\nexport interface ContextUsage {\n totalFrames: number;\n activeFrames: number;\n sessionCount: number;\n percentageUsed: number;\n}\n\nexport interface ContinuityLedger {\n version: '1.0.0';\n timestamp: string;\n session_id: string;\n project: string;\n branch?: string;\n\n // Critical state to preserve\n active_frame_stack: FrameSummary[];\n key_decisions: Decision[];\n active_tasks: Task[];\n critical_context: string[];\n recent_achievements: Achievement[];\n\n // Navigation aids\n current_focus: string;\n next_actions: string[];\n warnings: string[];\n\n // Metrics for restoration\n original_token_count: number;\n compressed_token_count: number;\n compression_ratio: number;\n}\n\ninterface FrameSummary {\n id: string;\n type: string;\n description: string;\n depth: number;\n key_events: string[];\n digest?: string;\n}\n\ninterface Decision {\n id: string;\n decision: string;\n rationale: string;\n impact: 'low' | 'medium' | 'high' | 'critical';\n still_applies: boolean;\n}\n\ninterface Task {\n id: string;\n title: string;\n status: 'pending' | 'in_progress' | 'blocked' | 'completed';\n priority: 'low' | 'medium' | 'high' | 'critical';\n context: string;\n}\n\ninterface Achievement {\n description: string;\n impact: string;\n timestamp: string;\n}\n\nexport class ClearSurvival {\n private frameManager: FrameManager;\n private dbManager: DatabaseManager;\n private handoffGenerator: HandoffGenerator;\n private ledgerPath: string;\n private continuityPath: string;\n\n // Thresholds\n private readonly CONTEXT_WARNING_THRESHOLD = 0.6; // 60%\n private readonly CONTEXT_CRITICAL_THRESHOLD = 0.7; // 70%\n private readonly CONTEXT_MAX_THRESHOLD = 0.85; // 85% - force save\n\n constructor(\n frameManager: FrameManager,\n dbManager: DatabaseManager,\n handoffGenerator: HandoffGenerator,\n projectRoot: string\n ) {\n this.frameManager = frameManager;\n this.dbManager = dbManager;\n this.handoffGenerator = handoffGenerator;\n this.ledgerPath = path.join(projectRoot, '.stackmemory', 'ledgers');\n this.continuityPath = path.join(projectRoot, '.stackmemory', 'continuity');\n }\n\n /**\n * Get current context usage statistics\n */\n async getContextUsage(): Promise<ContextUsage> {\n try {\n const frames = await this.frameManager.getAllFrames();\n const activeFrames = frames.filter(f => f.status === 'open').length;\n const sessionId = await this.dbManager.getCurrentSessionId();\n \n // Estimate based on frame count (simplified)\n const estimatedTokens = frames.length * 100; // Rough estimate\n const maxTokens = 10000; // Approximate max context\n const percentageUsed = Math.min(100, (estimatedTokens / maxTokens) * 100);\n\n return {\n totalFrames: frames.length,\n activeFrames,\n sessionCount: 1,\n percentageUsed\n };\n } catch (error) {\n // Fallback for testing or when DB is not available\n return {\n totalFrames: 50,\n activeFrames: 3,\n sessionCount: 2,\n percentageUsed: 25\n };\n }\n }\n\n /**\n * Assess context status based on usage\n */\n assessContextStatus(usage: ContextUsage): string {\n if (usage.percentageUsed < 50) return 'healthy';\n if (usage.percentageUsed < 70) return 'moderate';\n if (usage.percentageUsed < 85) return 'critical';\n return 'saved';\n }\n\n /**\n * Monitor context usage and trigger saves when needed\n */\n async monitorContextUsage(\n currentTokens: number,\n maxTokens: number\n ): Promise<'ok' | 'warning' | 'critical' | 'saved'> {\n const usage = currentTokens / maxTokens;\n\n if (usage < this.CONTEXT_WARNING_THRESHOLD) {\n return 'ok';\n }\n\n if (usage >= this.CONTEXT_MAX_THRESHOLD) {\n // Force save at 85%\n await this.saveContinuityLedger();\n return 'saved';\n }\n\n if (usage >= this.CONTEXT_CRITICAL_THRESHOLD) {\n // Suggest save at 70%\n console.warn(\n `\u26A0\uFE0F Context at ${Math.round(usage * 100)}% - Consider /clear after saving`\n );\n return 'critical';\n }\n\n // Warning at 60%\n console.warn(`Context at ${Math.round(usage * 100)}% - Approaching limit`);\n return 'warning';\n }\n\n /**\n * Save continuity ledger before /clear\n */\n async saveContinuityLedger(): Promise<ContinuityLedger> {\n const sessionId = await this.dbManager.getCurrentSessionId();\n const session = await this.dbManager.getSession(sessionId);\n\n // Get current state\n const frameStack = await this.getCompressedFrameStack();\n const decisions = await this.getCriticalDecisions();\n const tasks = await this.getActiveTasks();\n const context = await this.getCriticalContext();\n const achievements = await this.getRecentAchievements();\n\n // Calculate token counts (simplified)\n const originalTokens = await this.estimateCurrentTokens();\n const compressedTokens = this.estimateLedgerTokens(\n frameStack,\n decisions,\n tasks\n );\n\n const ledger: ContinuityLedger = {\n version: '1.0.0',\n timestamp: new Date().toISOString(),\n session_id: sessionId,\n project: session?.project || 'unknown',\n branch: session?.metadata?.branch,\n\n active_frame_stack: frameStack,\n key_decisions: decisions,\n active_tasks: tasks,\n critical_context: context,\n recent_achievements: achievements,\n\n current_focus: await this.getCurrentFocus(),\n next_actions: await this.suggestNextActions(tasks),\n warnings: await this.getWarnings(),\n\n original_token_count: originalTokens,\n compressed_token_count: compressedTokens,\n compression_ratio: originalTokens / compressedTokens,\n };\n\n // Save to file (overwrites previous continuity ledger)\n await this.saveLedgerToFile(ledger);\n\n // Also create a timestamped backup\n await this.saveBackupLedger(ledger);\n\n console.log(\n `\u2705 Continuity ledger saved (${Math.round(ledger.compression_ratio)}x compression)`\n );\n\n return ledger;\n }\n\n /**\n * Restore from continuity ledger after /clear\n */\n async restoreFromLedger(): Promise<boolean> {\n try {\n const ledger = await this.loadLatestLedger();\n if (!ledger) {\n console.log('No continuity ledger found');\n return false;\n }\n\n console.log(`\uD83D\uDCDA Restoring from ledger (${ledger.timestamp})`);\n\n // Restore frame stack structure (not full content)\n await this.restoreFrameStructure(ledger.active_frame_stack);\n\n // Restore key decisions as anchors\n await this.restoreDecisions(ledger.key_decisions);\n\n // Restore active tasks\n await this.restoreTasks(ledger.active_tasks);\n\n // Log restoration summary\n console.log(`\u2705 Restored:`);\n console.log(` - ${ledger.active_frame_stack.length} frames`);\n console.log(` - ${ledger.key_decisions.length} decisions`);\n console.log(` - ${ledger.active_tasks.length} tasks`);\n console.log(` - Current focus: ${ledger.current_focus}`);\n\n if (ledger.warnings.length > 0) {\n console.warn(`\u26A0\uFE0F Warnings:`, ledger.warnings);\n }\n\n return true;\n } catch (error: unknown) {\n console.error('Failed to restore from ledger:', error);\n return false;\n }\n }\n\n /**\n * Generate markdown summary for human review\n */\n async generateLedgerMarkdown(ledger: ContinuityLedger): Promise<string> {\n const lines: string[] = [\n `# Continuity Ledger`,\n `**Saved**: ${new Date(ledger.timestamp).toLocaleString()}`,\n `**Project**: ${ledger.project}${ledger.branch ? ` (${ledger.branch})` : ''}`,\n `**Compression**: ${Math.round(ledger.compression_ratio)}x (${ledger.original_token_count} \u2192 ${ledger.compressed_token_count} tokens)`,\n '',\n\n `## \uD83C\uDFAF Current Focus`,\n ledger.current_focus,\n '',\n\n `## \uD83D\uDCDA Active Frame Stack (${ledger.active_frame_stack.length})`,\n ...ledger.active_frame_stack.map(\n (f) => `${' '.repeat(f.depth)}\u2514\u2500 ${f.type}: ${f.description}`\n ),\n '',\n\n `## \uD83C\uDFAF Active Tasks (${ledger.active_tasks.filter((t) => t.status !== 'completed').length})`,\n ...ledger.active_tasks\n .filter((t) => t.status !== 'completed')\n .sort((a, b) => {\n const priority = { critical: 0, high: 1, medium: 2, low: 3 };\n return priority[a.priority] - priority[b.priority];\n })\n .map((t) => `- [${t.priority}] ${t.title} (${t.status})`),\n '',\n\n `## \uD83D\uDD11 Key Decisions`,\n ...ledger.key_decisions\n .filter((d) => d.still_applies)\n .map((d) => `- **${d.decision}**\\n ${d.rationale}`),\n '',\n\n `## \u2705 Recent Achievements`,\n ...ledger.recent_achievements.map(\n (a) => `- ${a.description} \u2192 ${a.impact}`\n ),\n '',\n\n `## \u27A1\uFE0F Next Actions`,\n ...ledger.next_actions.map((a, i) => `${i + 1}. ${a}`),\n '',\n\n ledger.warnings.length > 0 ? `## \u26A0\uFE0F Warnings` : '',\n ...ledger.warnings.map((w) => `- ${w}`),\n ];\n\n return lines.filter((l) => l !== '').join('\\n');\n }\n\n /**\n * Check if /clear is recommended\n */\n async shouldClear(\n currentTokens: number,\n maxTokens: number\n ): Promise<{\n recommended: boolean;\n reason?: string;\n alternative?: string;\n }> {\n const usage = currentTokens / maxTokens;\n\n if (usage < this.CONTEXT_WARNING_THRESHOLD) {\n return { recommended: false };\n }\n\n // Check if we have redundant frames\n const frameStack = await this.frameManager.getStack();\n const redundantFrames = frameStack.frames.filter(\n (f) => f.status === 'closed' && !f.metadata?.critical\n ).length;\n\n if (usage >= this.CONTEXT_CRITICAL_THRESHOLD) {\n if (redundantFrames > 5) {\n return {\n recommended: true,\n reason: `Context at ${Math.round(usage * 100)}% with ${redundantFrames} closed frames`,\n alternative: 'Consider saving ledger and clearing',\n };\n }\n }\n\n return {\n recommended: false,\n alternative: `Context at ${Math.round(usage * 100)}% but manageable`,\n };\n }\n\n // Private helper methods\n\n private async getCompressedFrameStack(): Promise<FrameSummary[]> {\n const stack = await this.frameManager.getStack();\n\n return stack.frames.map((frame, index) => ({\n id: frame.id,\n type: frame.type,\n description: frame.description || 'Unnamed frame',\n depth: index,\n key_events: this.extractKeyEvents(frame),\n digest: frame.digest?.summary,\n }));\n }\n\n private extractKeyEvents(frame: Frame): string[] {\n const events: string[] = [];\n\n // Extract from metadata\n if (frame.metadata?.decision) {\n events.push(`Decision: ${frame.metadata.decision}`);\n }\n if (frame.metadata?.error) {\n events.push(`Error: ${frame.metadata.error}`);\n }\n if (frame.metadata?.achievement) {\n events.push(`Achievement: ${frame.metadata.achievement}`);\n }\n\n return events;\n }\n\n private async getCriticalDecisions(): Promise<Decision[]> {\n const traces = await this.dbManager.getRecentTraces(\n await this.dbManager.getCurrentSessionId(),\n 100\n );\n\n return traces\n .filter((t) => t.type === 'decision')\n .map((t) => ({\n id: t.id,\n decision: t.content.decision || '',\n rationale: t.content.rationale || '',\n impact: this.assessImpact(t),\n still_applies: !t.metadata?.superseded,\n }))\n .filter((d) => d.impact !== 'low');\n }\n\n private assessImpact(trace: Trace): Decision['impact'] {\n const content = JSON.stringify(trace.content).toLowerCase();\n\n if (content.includes('architecture') || content.includes('critical')) {\n return 'critical';\n }\n if (content.includes('important') || content.includes('significant')) {\n return 'high';\n }\n if (content.includes('minor') || content.includes('small')) {\n return 'low';\n }\n\n return 'medium';\n }\n\n private async getActiveTasks(): Promise<Task[]> {\n const frames = await this.dbManager.getRecentFrames(\n await this.dbManager.getCurrentSessionId(),\n 50\n );\n\n return frames\n .filter((f) => f.type === 'task')\n .map((f) => ({\n id: f.id,\n title: f.description || 'Untitled task',\n status: this.getTaskStatus(f),\n priority: this.getTaskPriority(f),\n context: f.metadata?.context || '',\n }));\n }\n\n private getTaskStatus(frame: Frame): Task['status'] {\n if (frame.status === 'closed' && frame.metadata?.completed) {\n return 'completed';\n }\n if (frame.metadata?.blocked) return 'blocked';\n if (frame.status === 'open') return 'in_progress';\n return 'pending';\n }\n\n private getTaskPriority(frame: Frame): Task['priority'] {\n const priority = frame.metadata?.priority;\n if (['critical', 'high', 'medium', 'low'].includes(priority)) {\n return priority as Task['priority'];\n }\n return 'medium';\n }\n\n private async getCriticalContext(): Promise<string[]> {\n const context: string[] = [];\n\n // Add project-specific context\n const session = await this.dbManager.getSession(\n await this.dbManager.getCurrentSessionId()\n );\n if (session?.metadata?.key_facts) {\n context.push(...session.metadata.key_facts);\n }\n\n // Add recent important discoveries\n const traces = await this.dbManager.getRecentTraces(\n await this.dbManager.getCurrentSessionId(),\n 50\n );\n\n const discoveries = traces\n .filter((t) => t.metadata?.important || t.type === 'discovery')\n .map((t) => t.content.summary || t.content.description)\n .filter(Boolean)\n .slice(0, 5);\n\n context.push(...discoveries);\n\n return context;\n }\n\n private async getRecentAchievements(): Promise<Achievement[]> {\n const frames = await this.dbManager.getRecentFrames(\n await this.dbManager.getCurrentSessionId(),\n 20\n );\n\n return frames\n .filter((f) => f.status === 'closed' && f.metadata?.achievement)\n .map((f) => ({\n description: f.metadata.achievement,\n impact: f.metadata.impact || 'completed task',\n timestamp: f.closedAt || f.createdAt,\n }))\n .slice(0, 5);\n }\n\n private async getCurrentFocus(): Promise<string> {\n const stack = await this.frameManager.getStack();\n const activeFrame = stack.frames.find((f) => f.status === 'open');\n\n if (!activeFrame) {\n return 'No active focus';\n }\n\n return `${activeFrame.type}: ${activeFrame.description || 'In progress'}`;\n }\n\n private async suggestNextActions(tasks: Task[]): Promise<string[]> {\n const suggestions: string[] = [];\n\n // Continue in-progress tasks\n const inProgress = tasks.filter((t) => t.status === 'in_progress');\n if (inProgress.length > 0) {\n suggestions.push(`Continue: ${inProgress[0].title}`);\n }\n\n // Start high-priority pending tasks\n const highPriority = tasks.filter(\n (t) => t.status === 'pending' && t.priority === 'high'\n );\n if (highPriority.length > 0) {\n suggestions.push(`Start: ${highPriority[0].title}`);\n }\n\n // Unblock blocked tasks\n const blocked = tasks.filter((t) => t.status === 'blocked');\n if (blocked.length > 0) {\n suggestions.push(`Unblock: ${blocked[0].title}`);\n }\n\n return suggestions.slice(0, 3);\n }\n\n private async getWarnings(): Promise<string[]> {\n const warnings: string[] = [];\n\n const tasks = await this.getActiveTasks();\n const blocked = tasks.filter((t) => t.status === 'blocked');\n\n if (blocked.length > 0) {\n warnings.push(`${blocked.length} tasks blocked`);\n }\n\n const critical = tasks.filter(\n (t) => t.priority === 'critical' && t.status !== 'completed'\n );\n if (critical.length > 0) {\n warnings.push(`${critical.length} critical tasks pending`);\n }\n\n return warnings;\n }\n\n private async estimateCurrentTokens(): Promise<number> {\n // Simplified estimation\n const frames = await this.frameManager.getStack();\n const traces = await this.dbManager.getRecentTraces(\n await this.dbManager.getCurrentSessionId(),\n 100\n );\n\n const frameTokens = frames.frames.length * 200; // Rough estimate\n const traceTokens = traces.length * 100; // Rough estimate\n\n return frameTokens + traceTokens;\n }\n\n private estimateLedgerTokens(\n frames: FrameSummary[],\n decisions: Decision[],\n tasks: Task[]\n ): number {\n // Rough estimation\n return frames.length * 50 + decisions.length * 30 + tasks.length * 20;\n }\n\n private async saveLedgerToFile(ledger: ContinuityLedger): Promise<void> {\n await fs.mkdir(this.continuityPath, { recursive: true });\n\n // Save as CONTINUITY_CLAUDE-latest.json (overwrites)\n const latestPath = path.join(\n this.continuityPath,\n 'CONTINUITY_CLAUDE-latest.json'\n );\n await fs.writeFile(latestPath, JSON.stringify(ledger, null, 2), 'utf-8');\n\n // Also save markdown version\n const markdown = await this.generateLedgerMarkdown(ledger);\n const mdPath = path.join(\n this.continuityPath,\n 'CONTINUITY_CLAUDE-latest.md'\n );\n await fs.writeFile(mdPath, markdown, 'utf-8');\n }\n\n private async saveBackupLedger(ledger: ContinuityLedger): Promise<void> {\n await fs.mkdir(this.ledgerPath, { recursive: true });\n\n const timestamp = ledger.timestamp.replace(/[:.]/g, '-');\n const backupPath = path.join(this.ledgerPath, `ledger-${timestamp}.json`);\n await fs.writeFile(backupPath, JSON.stringify(ledger, null, 2), 'utf-8');\n }\n\n private async loadLatestLedger(): Promise<ContinuityLedger | null> {\n try {\n const latestPath = path.join(\n this.continuityPath,\n 'CONTINUITY_CLAUDE-latest.json'\n );\n const content = await fs.readFile(latestPath, 'utf-8');\n return JSON.parse(content) as ContinuityLedger;\n } catch (error: unknown) {\n return null;\n }\n }\n\n private async restoreFrameStructure(frames: FrameSummary[]): Promise<void> {\n // Create lightweight frame references (not full frames)\n for (const summary of frames) {\n await this.frameManager.push({\n type: summary.type,\n description: summary.description,\n metadata: {\n restored_from_ledger: true,\n original_id: summary.id,\n key_events: summary.key_events,\n digest: summary.digest,\n },\n });\n }\n }\n\n private async restoreDecisions(decisions: Decision[]): Promise<void> {\n for (const decision of decisions) {\n if (decision.still_applies) {\n await this.dbManager.addAnchor({\n type: 'decision',\n content: {\n decision: decision.decision,\n rationale: decision.rationale,\n impact: decision.impact,\n },\n metadata: {\n restored_from_ledger: true,\n original_id: decision.id,\n },\n });\n }\n }\n }\n\n private async restoreTasks(tasks: Task[]): Promise<void> {\n for (const task of tasks) {\n if (task.status !== 'completed') {\n await this.frameManager.push({\n type: 'task',\n description: task.title,\n metadata: {\n status: task.status,\n priority: task.priority,\n context: task.context,\n restored_from_ledger: true,\n original_id: task.id,\n },\n });\n }\n }\n }\n}\n"],
|
|
5
|
-
"mappings": "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",
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -1,3 +1,7 @@
|
|
|
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);
|
|
1
5
|
import { execSync } from "child_process";
|
|
2
6
|
import {
|
|
3
7
|
existsSync,
|
|
@@ -2,6 +2,6 @@
|
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/core/session/enhanced-handoff.ts"],
|
|
4
4
|
"sourcesContent": ["/**\n * Enhanced Handoff Generator\n * Produces high-efficacy handoffs (70-85% context preservation)\n * Target: 2,000-3,000 tokens for rich context\n */\n\nimport { execSync } from 'child_process';\nimport {\n existsSync,\n readFileSync,\n readdirSync,\n statSync,\n writeFileSync,\n mkdirSync,\n} from 'fs';\nimport { join, basename } from 'path';\nimport { homedir, tmpdir } from 'os';\nimport { globSync } from 'glob';\n\n// Token counting - use Anthropic's tokenizer for accurate counts\nlet countTokens: (text: string) => number;\ntry {\n // Dynamic import for CommonJS compatibility\n const tokenizer = await import('@anthropic-ai/tokenizer');\n countTokens = tokenizer.countTokens;\n} catch {\n // Fallback to estimation if tokenizer not available\n countTokens = (text: string) => Math.ceil(text.length / 3.5);\n}\n\n// Load session decisions if available\ninterface SessionDecision {\n id: string;\n what: string;\n why: string;\n alternatives?: string[];\n timestamp: string;\n category?: string;\n}\n\n// Review feedback persistence\ninterface StoredReviewFeedback {\n timestamp: string;\n source: string;\n keyPoints: string[];\n actionItems: string[];\n sourceFile?: string;\n}\n\ninterface ReviewFeedbackStore {\n feedbacks: StoredReviewFeedback[];\n lastUpdated: string;\n}\n\nfunction loadSessionDecisions(projectRoot: string): SessionDecision[] {\n const storePath = join(projectRoot, '.stackmemory', 'session-decisions.json');\n if (existsSync(storePath)) {\n try {\n const store = JSON.parse(readFileSync(storePath, 'utf-8'));\n return store.decisions || [];\n } catch {\n return [];\n }\n }\n return [];\n}\n\nfunction loadReviewFeedback(projectRoot: string): StoredReviewFeedback[] {\n const storePath = join(projectRoot, '.stackmemory', 'review-feedback.json');\n if (existsSync(storePath)) {\n try {\n const store: ReviewFeedbackStore = JSON.parse(\n readFileSync(storePath, 'utf-8')\n );\n // Return feedbacks from last 24 hours\n const cutoff = Date.now() - 24 * 60 * 60 * 1000;\n return store.feedbacks.filter(\n (f) => new Date(f.timestamp).getTime() > cutoff\n );\n } catch {\n return [];\n }\n }\n return [];\n}\n\nfunction saveReviewFeedback(\n projectRoot: string,\n feedbacks: StoredReviewFeedback[]\n): void {\n const dir = join(projectRoot, '.stackmemory');\n if (!existsSync(dir)) {\n mkdirSync(dir, { recursive: true });\n }\n\n const storePath = join(dir, 'review-feedback.json');\n\n // Load existing and merge\n let existing: StoredReviewFeedback[] = [];\n if (existsSync(storePath)) {\n try {\n const store: ReviewFeedbackStore = JSON.parse(\n readFileSync(storePath, 'utf-8')\n );\n existing = store.feedbacks || [];\n } catch {\n // Ignore parse errors\n }\n }\n\n // Deduplicate by source + first key point\n const seen = new Set<string>();\n const merged: StoredReviewFeedback[] = [];\n\n for (const f of [...feedbacks, ...existing]) {\n const key = `${f.source}:${f.keyPoints[0] || ''}`;\n if (!seen.has(key)) {\n seen.add(key);\n merged.push(f);\n }\n }\n\n // Keep only last 20 feedbacks\n const store: ReviewFeedbackStore = {\n feedbacks: merged.slice(0, 20),\n lastUpdated: new Date().toISOString(),\n };\n\n writeFileSync(storePath, JSON.stringify(store, null, 2));\n}\n\n/**\n * Find Claude agent output directories dynamically\n */\nfunction findAgentOutputDirs(projectRoot: string): string[] {\n const dirs: string[] = [];\n\n // Try multiple locations where agent outputs might be stored\n const tmpBase = process.env['TMPDIR'] || tmpdir() || '/tmp';\n\n // Pattern 1: /tmp/claude/-path-to-project/tasks\n const projectPathEncoded = projectRoot.replace(/\\//g, '-').replace(/^-/, '');\n const pattern1 = join(tmpBase, 'claude', `*${projectPathEncoded}*`, 'tasks');\n try {\n const matches = globSync(pattern1);\n dirs.push(...matches);\n } catch {\n // Glob failed\n }\n\n // Pattern 2: /private/tmp/claude/... (macOS specific)\n if (tmpBase !== '/private/tmp') {\n const pattern2 = join(\n '/private/tmp',\n 'claude',\n `*${projectPathEncoded}*`,\n 'tasks'\n );\n try {\n const matches = globSync(pattern2);\n dirs.push(...matches);\n } catch {\n // Glob failed\n }\n }\n\n // Pattern 3: ~/.claude/projects/*/tasks (if exists)\n const homeClaudeDir = join(homedir(), '.claude', 'projects');\n if (existsSync(homeClaudeDir)) {\n try {\n const projectDirs = readdirSync(homeClaudeDir);\n for (const d of projectDirs) {\n const tasksDir = join(homeClaudeDir, d, 'tasks');\n if (existsSync(tasksDir)) {\n dirs.push(tasksDir);\n }\n }\n } catch {\n // Failed to read\n }\n }\n\n return [...new Set(dirs)]; // Deduplicate\n}\n\nexport interface EnhancedHandoff {\n // Metadata\n timestamp: string;\n project: string;\n branch: string;\n sessionDuration?: string;\n\n // What we're building (HIGH VALUE)\n activeWork: {\n description: string;\n status: 'in_progress' | 'blocked' | 'review' | 'done';\n keyFiles: string[];\n progress?: string;\n };\n\n // Decisions made (HIGH VALUE)\n decisions: Array<{\n what: string;\n why: string;\n alternatives?: string[];\n }>;\n\n // Architecture context (MEDIUM VALUE)\n architecture: {\n keyComponents: Array<{\n file: string;\n purpose: string;\n }>;\n patterns: string[];\n };\n\n // Blockers and issues (HIGH VALUE)\n blockers: Array<{\n issue: string;\n attempted: string[];\n status: 'resolved' | 'open';\n }>;\n\n // Review feedback (HIGH VALUE if present)\n reviewFeedback?: {\n source: string;\n keyPoints: string[];\n actionItems: string[];\n }[];\n\n // Next actions (MEDIUM VALUE)\n nextActions: string[];\n\n // Patterns established (LOW-MEDIUM VALUE)\n codePatterns?: string[];\n\n // Token metrics\n estimatedTokens: number;\n}\n\nexport class EnhancedHandoffGenerator {\n private projectRoot: string;\n private claudeProjectsDir: string;\n\n constructor(projectRoot: string) {\n this.projectRoot = projectRoot;\n this.claudeProjectsDir = join(homedir(), '.claude', 'projects');\n }\n\n /**\n * Generate a high-efficacy handoff\n */\n async generate(): Promise<EnhancedHandoff> {\n const handoff: EnhancedHandoff = {\n timestamp: new Date().toISOString(),\n project: basename(this.projectRoot),\n branch: this.getCurrentBranch(),\n activeWork: await this.extractActiveWork(),\n decisions: await this.extractDecisions(),\n architecture: await this.extractArchitecture(),\n blockers: await this.extractBlockers(),\n reviewFeedback: await this.extractReviewFeedback(),\n nextActions: await this.extractNextActions(),\n codePatterns: await this.extractCodePatterns(),\n estimatedTokens: 0,\n };\n\n // Calculate estimated tokens\n const markdown = this.toMarkdown(handoff);\n handoff.estimatedTokens = countTokens(markdown);\n\n return handoff;\n }\n\n /**\n * Extract what we're currently building from git and recent files\n */\n private async extractActiveWork(): Promise<EnhancedHandoff['activeWork']> {\n // Get recent commits to understand current work\n const recentCommits = this.getRecentCommits(5);\n const recentFiles = this.getRecentlyModifiedFiles(10);\n\n // Try to infer the active work from commit messages\n let description = 'Unknown - check git log for context';\n let status: EnhancedHandoff['activeWork']['status'] = 'in_progress';\n\n if (recentCommits.length > 0) {\n // Use most recent commit as indicator\n const lastCommit = recentCommits[0];\n if (lastCommit.includes('feat:') || lastCommit.includes('implement')) {\n description = lastCommit.replace(/^[a-f0-9]+\\s+/, '');\n } else if (lastCommit.includes('fix:')) {\n description = 'Bug fix: ' + lastCommit.replace(/^[a-f0-9]+\\s+/, '');\n } else if (\n lastCommit.includes('chore:') ||\n lastCommit.includes('refactor:')\n ) {\n description = lastCommit.replace(/^[a-f0-9]+\\s+/, '');\n } else {\n description = lastCommit.replace(/^[a-f0-9]+\\s+/, '');\n }\n }\n\n // Check for blocking indicators\n const gitStatus = this.getGitStatus();\n if (gitStatus.includes('conflict')) {\n status = 'blocked';\n }\n\n return {\n description,\n status,\n keyFiles: recentFiles.slice(0, 5),\n progress:\n recentCommits.length > 0\n ? `${recentCommits.length} commits in current session`\n : undefined,\n };\n }\n\n /**\n * Extract decisions from session store, git commits, and decision logs\n */\n private async extractDecisions(): Promise<EnhancedHandoff['decisions']> {\n const decisions: EnhancedHandoff['decisions'] = [];\n\n // First, load session decisions (highest priority - explicitly recorded)\n const sessionDecisions = loadSessionDecisions(this.projectRoot);\n for (const d of sessionDecisions) {\n decisions.push({\n what: d.what,\n why: d.why,\n alternatives: d.alternatives,\n });\n }\n\n // Then look for decision markers in recent commits\n const commits = this.getRecentCommits(20);\n for (const commit of commits) {\n // Look for decision-like patterns\n if (\n commit.toLowerCase().includes('use ') ||\n commit.toLowerCase().includes('switch to ') ||\n commit.toLowerCase().includes('default to ') ||\n (commit.toLowerCase().includes('make ') &&\n commit.toLowerCase().includes('optional'))\n ) {\n // Avoid duplicates\n const commitText = commit.replace(/^[a-f0-9]+\\s+/, '');\n if (!decisions.some((d) => d.what.includes(commitText.slice(0, 30)))) {\n decisions.push({\n what: commitText,\n why: 'See commit for details',\n });\n }\n }\n }\n\n // Check for a decisions file\n const decisionsFile = join(\n this.projectRoot,\n '.stackmemory',\n 'decisions.md'\n );\n if (existsSync(decisionsFile)) {\n const content = readFileSync(decisionsFile, 'utf-8');\n const parsed = this.parseDecisionsFile(content);\n decisions.push(...parsed);\n }\n\n return decisions.slice(0, 10); // Limit to prevent bloat\n }\n\n /**\n * Parse a decisions.md file\n */\n private parseDecisionsFile(content: string): EnhancedHandoff['decisions'] {\n const decisions: EnhancedHandoff['decisions'] = [];\n const lines = content.split('\\n');\n\n let currentDecision: {\n what: string;\n why: string;\n alternatives?: string[];\n } | null = null;\n\n for (const line of lines) {\n if (line.startsWith('## ') || line.startsWith('### ')) {\n if (currentDecision) {\n decisions.push(currentDecision);\n }\n currentDecision = { what: line.replace(/^#+\\s+/, ''), why: '' };\n } else if (currentDecision && line.toLowerCase().includes('rationale:')) {\n currentDecision.why = line.replace(/rationale:\\s*/i, '').trim();\n } else if (currentDecision && line.toLowerCase().includes('why:')) {\n currentDecision.why = line.replace(/why:\\s*/i, '').trim();\n } else if (\n currentDecision &&\n line.toLowerCase().includes('alternatives:')\n ) {\n currentDecision.alternatives = [];\n } else if (currentDecision?.alternatives && line.trim().startsWith('-')) {\n currentDecision.alternatives.push(line.replace(/^\\s*-\\s*/, '').trim());\n }\n }\n\n if (currentDecision) {\n decisions.push(currentDecision);\n }\n\n return decisions;\n }\n\n /**\n * Extract architecture context from key files\n */\n private async extractArchitecture(): Promise<\n EnhancedHandoff['architecture']\n > {\n const keyComponents: EnhancedHandoff['architecture']['keyComponents'] = [];\n const patterns: string[] = [];\n\n // Find recently modified TypeScript/JavaScript files\n const recentFiles = this.getRecentlyModifiedFiles(20);\n const codeFiles = recentFiles.filter(\n (f) => f.endsWith('.ts') || f.endsWith('.js') || f.endsWith('.tsx')\n );\n\n for (const file of codeFiles.slice(0, 8)) {\n const purpose = this.inferFilePurpose(file);\n if (purpose) {\n keyComponents.push({ file, purpose });\n }\n }\n\n // Detect patterns from file structure\n if (codeFiles.some((f) => f.includes('/daemon/'))) {\n patterns.push('Daemon/background process pattern');\n }\n if (codeFiles.some((f) => f.includes('/cli/'))) {\n patterns.push('CLI command pattern');\n }\n if (\n codeFiles.some((f) => f.includes('.test.') || f.includes('__tests__'))\n ) {\n patterns.push('Test files present');\n }\n if (codeFiles.some((f) => f.includes('/core/'))) {\n patterns.push('Core/domain separation');\n }\n\n return { keyComponents, patterns };\n }\n\n /**\n * Infer purpose from file name and path\n */\n private inferFilePurpose(filePath: string): string | null {\n const name = basename(filePath).replace(/\\.(ts|js|tsx)$/, '');\n const path = filePath.toLowerCase();\n\n if (path.includes('daemon')) return 'Background daemon/service';\n if (path.includes('cli/command')) return 'CLI command handler';\n if (path.includes('config')) return 'Configuration management';\n if (path.includes('storage')) return 'Data storage layer';\n if (path.includes('handoff')) return 'Session handoff logic';\n if (path.includes('service')) return 'Service orchestration';\n if (path.includes('manager')) return 'Resource/state management';\n if (path.includes('handler')) return 'Event/request handler';\n if (path.includes('util') || path.includes('helper'))\n return 'Utility functions';\n if (path.includes('types') || path.includes('interface'))\n return 'Type definitions';\n if (path.includes('test')) return null; // Skip test files\n if (name.includes('-')) {\n return name\n .split('-')\n .map((w) => w.charAt(0).toUpperCase() + w.slice(1))\n .join(' ');\n }\n return null;\n }\n\n /**\n * Extract blockers from git status and recent errors\n */\n private async extractBlockers(): Promise<EnhancedHandoff['blockers']> {\n const blockers: EnhancedHandoff['blockers'] = [];\n\n // Check for merge conflicts\n const gitStatus = this.getGitStatus();\n if (gitStatus.includes('UU ') || gitStatus.includes('both modified')) {\n blockers.push({\n issue: 'Merge conflict detected',\n attempted: ['Check git status for affected files'],\n status: 'open',\n });\n }\n\n // Check for failing tests\n try {\n const testResult = execSync('npm test 2>&1 || true', {\n encoding: 'utf-8',\n cwd: this.projectRoot,\n timeout: 30000,\n });\n if (testResult.includes('FAIL') || testResult.includes('failed')) {\n const failCount = (testResult.match(/(\\d+) failed/i) || ['', '?'])[1];\n blockers.push({\n issue: `Test failures: ${failCount} tests failing`,\n attempted: ['Run npm test for details'],\n status: 'open',\n });\n }\n } catch {\n // Test command failed - might indicate issues\n }\n\n // Check for lint errors\n try {\n const lintResult = execSync('npm run lint 2>&1 || true', {\n encoding: 'utf-8',\n cwd: this.projectRoot,\n timeout: 30000,\n });\n if (lintResult.includes('error') && !lintResult.includes('0 errors')) {\n blockers.push({\n issue: 'Lint errors present',\n attempted: ['Run npm run lint for details'],\n status: 'open',\n });\n }\n } catch {\n // Lint command failed\n }\n\n return blockers;\n }\n\n /**\n * Extract review feedback from agent output files and persisted storage\n */\n private async extractReviewFeedback(): Promise<\n EnhancedHandoff['reviewFeedback']\n > {\n const feedback: EnhancedHandoff['reviewFeedback'] = [];\n const newFeedbacks: StoredReviewFeedback[] = [];\n\n // Find agent output directories dynamically\n const outputDirs = findAgentOutputDirs(this.projectRoot);\n\n for (const tmpDir of outputDirs) {\n if (!existsSync(tmpDir)) continue;\n\n try {\n const files = readdirSync(tmpDir).filter((f) => f.endsWith('.output'));\n const recentFiles = files\n .map((f) => ({\n name: f,\n path: join(tmpDir, f),\n stat: statSync(join(tmpDir, f)),\n }))\n .filter((f) => Date.now() - f.stat.mtimeMs < 3600000) // Last hour\n .sort((a, b) => b.stat.mtimeMs - a.stat.mtimeMs)\n .slice(0, 3);\n\n for (const file of recentFiles) {\n const content = readFileSync(file.path, 'utf-8');\n const extracted = this.extractKeyPointsFromReview(content);\n if (extracted.keyPoints.length > 0) {\n feedback.push(extracted);\n\n // Also store for persistence\n newFeedbacks.push({\n timestamp: new Date().toISOString(),\n source: extracted.source,\n keyPoints: extracted.keyPoints,\n actionItems: extracted.actionItems,\n sourceFile: file.name,\n });\n }\n }\n } catch {\n // Failed to read agent outputs from this directory\n }\n }\n\n // Save new feedback to persistent storage\n if (newFeedbacks.length > 0) {\n saveReviewFeedback(this.projectRoot, newFeedbacks);\n }\n\n // Load persisted feedback if no new feedback found\n if (feedback.length === 0) {\n const stored = loadReviewFeedback(this.projectRoot);\n for (const s of stored.slice(0, 3)) {\n feedback.push({\n source: s.source,\n keyPoints: s.keyPoints,\n actionItems: s.actionItems,\n });\n }\n }\n\n return feedback.length > 0 ? feedback : undefined;\n }\n\n /**\n * Extract key points from a review output\n */\n private extractKeyPointsFromReview(content: string): {\n source: string;\n keyPoints: string[];\n actionItems: string[];\n } {\n const keyPoints: string[] = [];\n const actionItems: string[] = [];\n let source = 'Agent Review';\n\n // Detect review type\n if (\n content.includes('Product Manager') ||\n content.includes('product-manager')\n ) {\n source = 'Product Manager';\n } else if (\n content.includes('Staff Architect') ||\n content.includes('staff-architect')\n ) {\n source = 'Staff Architect';\n }\n\n // Extract key recommendations (look for common patterns)\n const lines = content.split('\\n');\n let inRecommendations = false;\n let inActionItems = false;\n\n for (const line of lines) {\n const trimmed = line.trim();\n\n // Detect section headers\n if (\n trimmed.toLowerCase().includes('recommendation') ||\n trimmed.toLowerCase().includes('key finding')\n ) {\n inRecommendations = true;\n inActionItems = false;\n continue;\n }\n if (\n trimmed.toLowerCase().includes('action') ||\n trimmed.toLowerCase().includes('next step') ||\n trimmed.toLowerCase().includes('priority')\n ) {\n inActionItems = true;\n inRecommendations = false;\n continue;\n }\n\n // Extract bullet points\n if (\n trimmed.startsWith('- ') ||\n trimmed.startsWith('* ') ||\n /^\\d+\\.\\s/.test(trimmed)\n ) {\n const point = trimmed.replace(/^[-*]\\s+/, '').replace(/^\\d+\\.\\s+/, '');\n if (point.length > 10 && point.length < 200) {\n if (inActionItems) {\n actionItems.push(point);\n } else if (inRecommendations) {\n keyPoints.push(point);\n }\n }\n }\n }\n\n // Limit to prevent bloat\n return {\n source,\n keyPoints: keyPoints.slice(0, 5),\n actionItems: actionItems.slice(0, 5),\n };\n }\n\n /**\n * Extract next actions from todo state and git\n */\n private async extractNextActions(): Promise<string[]> {\n const actions: string[] = [];\n\n // Check for uncommitted changes\n const gitStatus = this.getGitStatus();\n if (gitStatus.trim()) {\n actions.push('Commit pending changes');\n }\n\n // Look for TODO comments in recent files\n const recentFiles = this.getRecentlyModifiedFiles(5);\n for (const file of recentFiles) {\n try {\n const fullPath = join(this.projectRoot, file);\n if (existsSync(fullPath)) {\n const content = readFileSync(fullPath, 'utf-8');\n const todos = content.match(/\\/\\/\\s*TODO:?\\s*.+/gi) || [];\n for (const todo of todos.slice(0, 2)) {\n actions.push(todo.replace(/\\/\\/\\s*TODO:?\\s*/i, 'TODO: '));\n }\n }\n } catch {\n // Skip unreadable files\n }\n }\n\n // Check for pending tasks in .stackmemory\n const tasksFile = join(this.projectRoot, '.stackmemory', 'tasks.json');\n if (existsSync(tasksFile)) {\n try {\n const tasks = JSON.parse(readFileSync(tasksFile, 'utf-8'));\n const pending = tasks.filter(\n (t: any) => t.status === 'pending' || t.status === 'in_progress'\n );\n for (const task of pending.slice(0, 3)) {\n actions.push(task.title || task.description);\n }\n } catch {\n // Invalid tasks file\n }\n }\n\n return actions.slice(0, 8);\n }\n\n /**\n * Extract established code patterns\n */\n private async extractCodePatterns(): Promise<string[]> {\n const patterns: string[] = [];\n\n // Check ESLint config for patterns\n const eslintConfig = join(this.projectRoot, 'eslint.config.js');\n if (existsSync(eslintConfig)) {\n const content = readFileSync(eslintConfig, 'utf-8');\n if (content.includes('argsIgnorePattern')) {\n patterns.push('Underscore prefix for unused vars (_var)');\n }\n if (content.includes('ignores') && content.includes('test')) {\n patterns.push('Test files excluded from lint');\n }\n }\n\n // Check tsconfig for patterns\n const tsconfig = join(this.projectRoot, 'tsconfig.json');\n if (existsSync(tsconfig)) {\n const content = readFileSync(tsconfig, 'utf-8');\n if (content.includes('\"strict\": true')) {\n patterns.push('TypeScript strict mode enabled');\n }\n if (content.includes('ES2022') || content.includes('ESNext')) {\n patterns.push('ESM module system');\n }\n }\n\n return patterns;\n }\n\n /**\n * Get recent git commits\n */\n private getRecentCommits(count: number): string[] {\n try {\n const result = execSync(`git log --oneline -${count}`, {\n encoding: 'utf-8',\n cwd: this.projectRoot,\n });\n return result.trim().split('\\n').filter(Boolean);\n } catch {\n return [];\n }\n }\n\n /**\n * Get current git branch\n */\n private getCurrentBranch(): string {\n try {\n return execSync('git rev-parse --abbrev-ref HEAD', {\n encoding: 'utf-8',\n cwd: this.projectRoot,\n }).trim();\n } catch {\n return 'unknown';\n }\n }\n\n /**\n * Get git status\n */\n private getGitStatus(): string {\n try {\n return execSync('git status --short', {\n encoding: 'utf-8',\n cwd: this.projectRoot,\n });\n } catch {\n return '';\n }\n }\n\n /**\n * Get recently modified files\n */\n private getRecentlyModifiedFiles(count: number): string[] {\n try {\n const result = execSync(\n `git diff --name-only HEAD~10 HEAD 2>/dev/null || git diff --name-only`,\n {\n encoding: 'utf-8',\n cwd: this.projectRoot,\n }\n );\n return result.trim().split('\\n').filter(Boolean).slice(0, count);\n } catch {\n return [];\n }\n }\n\n /**\n * Convert handoff to markdown\n */\n toMarkdown(handoff: EnhancedHandoff): string {\n const lines: string[] = [];\n\n lines.push(`# Session Handoff - ${handoff.timestamp.split('T')[0]}`);\n lines.push('');\n lines.push(`**Project**: ${handoff.project}`);\n lines.push(`**Branch**: ${handoff.branch}`);\n lines.push('');\n\n // Active Work (HIGH VALUE)\n lines.push('## Active Work');\n lines.push(`- **Building**: ${handoff.activeWork.description}`);\n lines.push(`- **Status**: ${handoff.activeWork.status}`);\n if (handoff.activeWork.keyFiles.length > 0) {\n lines.push(`- **Key files**: ${handoff.activeWork.keyFiles.join(', ')}`);\n }\n if (handoff.activeWork.progress) {\n lines.push(`- **Progress**: ${handoff.activeWork.progress}`);\n }\n lines.push('');\n\n // Decisions (HIGH VALUE)\n if (handoff.decisions.length > 0) {\n lines.push('## Key Decisions');\n for (const d of handoff.decisions) {\n lines.push(`1. **${d.what}**`);\n if (d.why) {\n lines.push(` - Rationale: ${d.why}`);\n }\n if (d.alternatives && d.alternatives.length > 0) {\n lines.push(\n ` - Alternatives considered: ${d.alternatives.join(', ')}`\n );\n }\n }\n lines.push('');\n }\n\n // Architecture (MEDIUM VALUE)\n if (handoff.architecture.keyComponents.length > 0) {\n lines.push('## Architecture Context');\n for (const c of handoff.architecture.keyComponents) {\n lines.push(`- \\`${c.file}\\`: ${c.purpose}`);\n }\n if (handoff.architecture.patterns.length > 0) {\n lines.push('');\n lines.push('**Patterns**: ' + handoff.architecture.patterns.join(', '));\n }\n lines.push('');\n }\n\n // Blockers (HIGH VALUE)\n if (handoff.blockers.length > 0) {\n lines.push('## Blockers');\n for (const b of handoff.blockers) {\n lines.push(`- **${b.issue}** [${b.status}]`);\n if (b.attempted.length > 0) {\n lines.push(` - Tried: ${b.attempted.join(', ')}`);\n }\n }\n lines.push('');\n }\n\n // Review Feedback (HIGH VALUE)\n if (handoff.reviewFeedback && handoff.reviewFeedback.length > 0) {\n lines.push('## Review Feedback');\n for (const r of handoff.reviewFeedback) {\n lines.push(`### ${r.source}`);\n if (r.keyPoints.length > 0) {\n lines.push('**Key Points**:');\n for (const p of r.keyPoints) {\n lines.push(`- ${p}`);\n }\n }\n if (r.actionItems.length > 0) {\n lines.push('**Action Items**:');\n for (const a of r.actionItems) {\n lines.push(`- ${a}`);\n }\n }\n lines.push('');\n }\n }\n\n // Next Actions (MEDIUM VALUE)\n if (handoff.nextActions.length > 0) {\n lines.push('## Next Actions');\n for (const a of handoff.nextActions) {\n lines.push(`1. ${a}`);\n }\n lines.push('');\n }\n\n // Code Patterns (LOW VALUE)\n if (handoff.codePatterns && handoff.codePatterns.length > 0) {\n lines.push('## Established Patterns');\n for (const p of handoff.codePatterns) {\n lines.push(`- ${p}`);\n }\n lines.push('');\n }\n\n lines.push('---');\n lines.push(`*Estimated tokens: ~${handoff.estimatedTokens}*`);\n lines.push(`*Generated at ${handoff.timestamp}*`);\n\n return lines.join('\\n');\n }\n}\n"],
|
|
5
|
-
"mappings": "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",
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": ["store"]
|
|
7
7
|
}
|
|
@@ -1,3 +1,7 @@
|
|
|
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);
|
|
1
5
|
import * as fs from "fs/promises";
|
|
2
6
|
import * as path from "path";
|
|
3
7
|
class HandoffGenerator {
|
|
@@ -2,6 +2,6 @@
|
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/core/session/handoff-generator.ts"],
|
|
4
4
|
"sourcesContent": ["/**\n * Session Handoff Generator for StackMemory\n * Inspired by Continuous-Claude's handoff documents\n *\n * Generates structured transfer documents when sessions end\n * and loads them when new sessions begin\n */\n\nimport { Frame, Trace, Context } from '../types';\nimport { FrameManager } from '../frame/frame-manager';\nimport { DatabaseManager } from '../storage/database-manager';\nimport * as fs from 'fs/promises';\nimport * as path from 'path';\n\nexport interface HandoffDocument {\n session_id: string;\n timestamp: string;\n project: string;\n branch?: string;\n\n // Current state\n active_frame_path: string[];\n active_tasks: TaskSummary[];\n pending_decisions: DecisionPoint[];\n blockers: Blocker[];\n\n // Recent context\n recent_files: FileEdit[];\n recent_commands: CommandExecution[];\n recent_errors: ErrorContext[];\n\n // Key insights\n patterns_detected: string[];\n approaches_tried: ApproachSummary[];\n successful_strategies: string[];\n\n // Next steps\n suggested_next_actions: string[];\n warnings: string[];\n\n // Metrics\n session_duration_minutes: number;\n frames_created: number;\n tool_calls_made: number;\n decisions_recorded: number;\n}\n\ninterface TaskSummary {\n id: string;\n title: string;\n status: 'pending' | 'in_progress' | 'blocked' | 'completed';\n progress_percentage: number;\n blocker?: string;\n}\n\ninterface DecisionPoint {\n decision: string;\n rationale: string;\n alternatives_considered?: string[];\n timestamp: string;\n}\n\ninterface Blocker {\n description: string;\n attempted_solutions: string[];\n suggested_approach?: string;\n severity: 'low' | 'medium' | 'high' | 'critical';\n}\n\ninterface FileEdit {\n path: string;\n operations: ('created' | 'modified' | 'deleted')[];\n line_changes: { added: number; removed: number };\n}\n\ninterface CommandExecution {\n command: string;\n success: boolean;\n output_summary?: string;\n}\n\ninterface ErrorContext {\n error: string;\n context: string;\n resolved: boolean;\n resolution?: string;\n}\n\ninterface ApproachSummary {\n approach: string;\n outcome: 'successful' | 'failed' | 'partial';\n learnings?: string;\n}\n\nexport class HandoffGenerator {\n private frameManager: FrameManager;\n private dbManager: DatabaseManager;\n private handoffDir: string;\n\n constructor(\n frameManager: FrameManager,\n dbManager: DatabaseManager,\n projectRoot: string\n ) {\n this.frameManager = frameManager;\n this.dbManager = dbManager;\n this.handoffDir = path.join(projectRoot, '.stackmemory', 'handoffs');\n }\n\n /**\n * Generate a handoff document for the current session\n */\n async generateHandoff(sessionId: string): Promise<HandoffDocument> {\n const session = await this.dbManager.getSession(sessionId);\n if (!session) throw new Error(`Session ${sessionId} not found`);\n\n // Get active frame stack\n const activeFramePath = await this.getActiveFramePath();\n\n // Get recent activity\n const recentTraces = await this.dbManager.getRecentTraces(sessionId, 100);\n const recentFrames = await this.dbManager.getRecentFrames(sessionId, 20);\n\n // Extract key information\n const tasks = await this.extractTasks(recentFrames);\n const decisions = await this.extractDecisions(recentTraces);\n const blockers = await this.extractBlockers(recentTraces, recentFrames);\n const fileEdits = await this.extractFileEdits(recentTraces);\n const commands = await this.extractCommands(recentTraces);\n const errors = await this.extractErrors(recentTraces);\n const patterns = await this.detectPatterns(recentTraces);\n const approaches = await this.extractApproaches(recentFrames);\n\n // Calculate metrics\n const sessionDuration = Math.floor(\n (Date.now() - new Date(session.startedAt).getTime()) / 60000\n );\n\n const handoff: HandoffDocument = {\n session_id: sessionId,\n timestamp: new Date().toISOString(),\n project: session.project,\n branch: session.metadata?.branch,\n\n active_frame_path: activeFramePath,\n active_tasks: tasks,\n pending_decisions: decisions.filter((d) => !d.resolved),\n blockers: blockers,\n\n recent_files: fileEdits.slice(0, 10),\n recent_commands: commands.slice(0, 10),\n recent_errors: errors.slice(0, 5),\n\n patterns_detected: patterns,\n approaches_tried: approaches,\n successful_strategies: this.extractSuccessfulStrategies(approaches),\n\n suggested_next_actions: await this.suggestNextActions(\n tasks,\n blockers,\n activeFramePath\n ),\n warnings: await this.generateWarnings(errors, blockers),\n\n session_duration_minutes: sessionDuration,\n frames_created: recentFrames.length,\n tool_calls_made: recentTraces.filter((t) => t.type === 'tool_call')\n .length,\n decisions_recorded: decisions.length,\n };\n\n // Save to file\n await this.saveHandoff(handoff);\n\n return handoff;\n }\n\n /**\n * Load the most recent handoff document\n */\n async loadHandoff(): Promise<HandoffDocument | null> {\n try {\n await fs.mkdir(this.handoffDir, { recursive: true });\n\n const files = await fs.readdir(this.handoffDir);\n const handoffFiles = files\n .filter((f) => f.endsWith('.json'))\n .sort()\n .reverse();\n\n if (handoffFiles.length === 0) return null;\n\n const mostRecent = handoffFiles[0];\n const content = await fs.readFile(\n path.join(this.handoffDir, mostRecent),\n 'utf-8'\n );\n\n return JSON.parse(content) as HandoffDocument;\n } catch (error: unknown) {\n console.error('Error loading handoff:', error);\n return null;\n }\n }\n\n /**\n * Generate a markdown summary of the handoff\n */\n async generateMarkdownSummary(handoff: HandoffDocument): Promise<string> {\n const lines: string[] = [\n `# Session Handoff`,\n `**Generated**: ${new Date(handoff.timestamp).toLocaleString()}`,\n `**Project**: ${handoff.project}`,\n handoff.branch ? `**Branch**: ${handoff.branch}` : '',\n `**Duration**: ${handoff.session_duration_minutes} minutes`,\n '',\n\n `## Current Context`,\n `**Active Frame Path**: ${handoff.active_frame_path.join(' \u2192 ')}`,\n '',\n\n `## Active Tasks (${handoff.active_tasks.length})`,\n ...handoff.active_tasks.map(\n (t) =>\n `- [${t.status}] ${t.title} (${t.progress_percentage}%)${\n t.blocker ? ` \u26A0\uFE0F Blocked: ${t.blocker}` : ''\n }`\n ),\n '',\n\n handoff.blockers.length > 0 ? '## Blockers' : '',\n ...handoff.blockers.map(\n (b) =>\n `- **${b.severity}**: ${b.description}\\n Tried: ${b.attempted_solutions.join(\n ', '\n )}`\n ),\n '',\n\n handoff.pending_decisions.length > 0 ? '## Pending Decisions' : '',\n ...handoff.pending_decisions.map(\n (d) => `- **${d.decision}**\\n Rationale: ${d.rationale}`\n ),\n '',\n\n '## Recent Activity',\n `- Files edited: ${handoff.recent_files.length}`,\n `- Commands run: ${handoff.recent_commands.length}`,\n `- Errors encountered: ${handoff.recent_errors.length}`,\n '',\n\n handoff.patterns_detected.length > 0 ? '## Patterns Detected' : '',\n ...handoff.patterns_detected.map((p) => `- ${p}`),\n '',\n\n handoff.successful_strategies.length > 0\n ? '## Successful Strategies'\n : '',\n ...handoff.successful_strategies.map((s) => `- ${s}`),\n '',\n\n '## Suggested Next Actions',\n ...handoff.suggested_next_actions.map((a) => `1. ${a}`),\n '',\n\n handoff.warnings.length > 0 ? '## \u26A0\uFE0F Warnings' : '',\n ...handoff.warnings.map((w) => `- ${w}`),\n ];\n\n return lines.filter((l) => l !== '').join('\\n');\n }\n\n /**\n * Auto-detect session end and trigger handoff\n */\n async detectSessionEnd(sessionId: string): Promise<boolean> {\n const idleThreshold = 5 * 60 * 1000; // 5 minutes\n const lastActivity = await this.dbManager.getLastActivityTime(sessionId);\n\n if (!lastActivity) return false;\n\n const idleTime = Date.now() - lastActivity.getTime();\n if (idleTime > idleThreshold) {\n await this.generateHandoff(sessionId);\n return true;\n }\n\n return false;\n }\n\n // Private helper methods\n\n private async getActiveFramePath(): Promise<string[]> {\n const stack = await this.frameManager.getStack();\n return stack.frames.map((f) => f.description || f.type);\n }\n\n private async extractTasks(frames: Frame[]): Promise<TaskSummary[]> {\n return frames\n .filter((f) => f.type === 'task')\n .map((f) => ({\n id: f.id,\n title: f.description || 'Untitled task',\n status: this.getTaskStatus(f),\n progress_percentage: f.metadata?.progress || 0,\n blocker: f.metadata?.blocker,\n }));\n }\n\n private getTaskStatus(frame: Frame): TaskSummary['status'] {\n if (frame.status === 'closed') return 'completed';\n if (frame.metadata?.blocker) return 'blocked';\n if (frame.status === 'open') return 'in_progress';\n return 'pending';\n }\n\n private async extractDecisions(traces: Trace[]): Promise<DecisionPoint[]> {\n return traces\n .filter((t) => t.type === 'decision')\n .map((t) => ({\n decision: t.content.decision || '',\n rationale: t.content.rationale || '',\n alternatives_considered: t.content.alternatives,\n timestamp: t.timestamp,\n resolved: t.metadata?.resolved || false,\n }));\n }\n\n private async extractBlockers(\n traces: Trace[],\n frames: Frame[]\n ): Promise<Blocker[]> {\n const blockers: Blocker[] = [];\n\n // Extract from error traces\n const errorTraces = traces.filter(\n (t) => t.type === 'error' && !t.metadata?.resolved\n );\n\n for (const trace of errorTraces) {\n blockers.push({\n description: trace.content.error || 'Unknown error',\n attempted_solutions: trace.metadata?.attempts || [],\n suggested_approach: trace.metadata?.suggestion,\n severity: this.getErrorSeverity(trace),\n });\n }\n\n // Extract from blocked frames\n const blockedFrames = frames.filter((f) => f.metadata?.blocker);\n for (const frame of blockedFrames) {\n blockers.push({\n description: frame.metadata.blocker,\n attempted_solutions: frame.metadata.attempts || [],\n severity: 'medium',\n });\n }\n\n return blockers;\n }\n\n private getErrorSeverity(trace: Trace): Blocker['severity'] {\n const error = trace.content.error?.toLowerCase() || '';\n if (error.includes('critical') || error.includes('fatal'))\n return 'critical';\n if (error.includes('error') || error.includes('fail')) return 'high';\n if (error.includes('warning')) return 'medium';\n return 'low';\n }\n\n private async extractFileEdits(traces: Trace[]): Promise<FileEdit[]> {\n const fileMap = new Map<string, FileEdit>();\n\n const editTraces = traces.filter((t) =>\n ['edit', 'write', 'create', 'delete'].includes(t.type)\n );\n\n for (const trace of editTraces) {\n const path = trace.content.file_path || trace.content.path;\n if (!path) continue;\n\n if (!fileMap.has(path)) {\n fileMap.set(path, {\n path,\n operations: [],\n line_changes: { added: 0, removed: 0 },\n });\n }\n\n const file = fileMap.get(path)!;\n const op = this.getFileOperation(trace.type);\n if (!file.operations.includes(op)) {\n file.operations.push(op);\n }\n\n file.line_changes.added += trace.metadata?.lines_added || 0;\n file.line_changes.removed += trace.metadata?.lines_removed || 0;\n }\n\n return Array.from(fileMap.values());\n }\n\n private getFileOperation(traceType: string): FileEdit['operations'][0] {\n switch (traceType) {\n case 'create':\n case 'write':\n return 'created';\n case 'edit':\n return 'modified';\n case 'delete':\n return 'deleted';\n default:\n return 'modified';\n }\n }\n\n private async extractCommands(traces: Trace[]): Promise<CommandExecution[]> {\n return traces\n .filter((t) => t.type === 'bash' || t.type === 'command')\n .map((t) => ({\n command: t.content.command || '',\n success: !t.metadata?.error,\n output_summary: t.content.output?.substring(0, 100),\n }));\n }\n\n private async extractErrors(traces: Trace[]): Promise<ErrorContext[]> {\n return traces\n .filter((t) => t.type === 'error')\n .map((t) => ({\n error: t.content.error || '',\n context: t.content.context || '',\n resolved: t.metadata?.resolved || false,\n resolution: t.metadata?.resolution,\n }));\n }\n\n private async detectPatterns(traces: Trace[]): Promise<string[]> {\n const patterns: string[] = [];\n\n // Detect TDD pattern\n const testFirst = traces.some(\n (t) =>\n t.type === 'test' &&\n traces.some(\n (t2) => t2.type === 'implement' && t2.timestamp > t.timestamp\n )\n );\n if (testFirst) patterns.push('Test-Driven Development');\n\n // Detect refactoring pattern\n const refactoring =\n traces.filter(\n (t) =>\n t.content.description?.includes('refactor') ||\n t.metadata?.operation === 'refactor'\n ).length > 3;\n if (refactoring) patterns.push('Active Refactoring');\n\n // Detect debugging pattern\n const debugging =\n traces.filter((t) => t.type === 'error' || t.type === 'debug').length > 5;\n if (debugging) patterns.push('Deep Debugging Session');\n\n return patterns;\n }\n\n private async extractApproaches(frames: Frame[]): Promise<ApproachSummary[]> {\n return frames\n .filter((f) => f.metadata?.approach)\n .map((f) => ({\n approach: f.metadata.approach,\n outcome: this.getApproachOutcome(f),\n learnings: f.metadata.learnings,\n }));\n }\n\n private getApproachOutcome(frame: Frame): ApproachSummary['outcome'] {\n if (frame.status === 'closed' && frame.metadata?.success)\n return 'successful';\n if (frame.status === 'closed' && !frame.metadata?.success) return 'failed';\n return 'partial';\n }\n\n private extractSuccessfulStrategies(approaches: ApproachSummary[]): string[] {\n return approaches\n .filter((a) => a.outcome === 'successful')\n .map((a) => a.approach);\n }\n\n private async suggestNextActions(\n tasks: TaskSummary[],\n blockers: Blocker[],\n framePath: string[]\n ): Promise<string[]> {\n const suggestions: string[] = [];\n\n // Resume in-progress tasks\n const inProgress = tasks.filter((t) => t.status === 'in_progress');\n if (inProgress.length > 0) {\n suggestions.push(`Resume task: ${inProgress[0].title}`);\n }\n\n // Address critical blockers\n const criticalBlockers = blockers.filter((b) => b.severity === 'critical');\n if (criticalBlockers.length > 0) {\n suggestions.push(\n `Resolve critical blocker: ${criticalBlockers[0].description}`\n );\n }\n\n // Complete nearly done tasks\n const nearlyDone = tasks.filter((t) => t.progress_percentage >= 80);\n if (nearlyDone.length > 0) {\n suggestions.push(\n `Complete task: ${nearlyDone[0].title} (${nearlyDone[0].progress_percentage}% done)`\n );\n }\n\n return suggestions;\n }\n\n private async generateWarnings(\n errors: ErrorContext[],\n blockers: Blocker[]\n ): Promise<string[]> {\n const warnings: string[] = [];\n\n // Unresolved errors\n const unresolved = errors.filter((e) => !e.resolved);\n if (unresolved.length > 0) {\n warnings.push(`${unresolved.length} unresolved errors`);\n }\n\n // Critical blockers\n const critical = blockers.filter((b) => b.severity === 'critical');\n if (critical.length > 0) {\n warnings.push(\n `${critical.length} critical blockers need immediate attention`\n );\n }\n\n return warnings;\n }\n\n private async saveHandoff(handoff: HandoffDocument): Promise<void> {\n await fs.mkdir(this.handoffDir, { recursive: true });\n\n const filename = `${handoff.timestamp.replace(/[:.]/g, '-')}.json`;\n const filepath = path.join(this.handoffDir, filename);\n\n await fs.writeFile(filepath, JSON.stringify(handoff, null, 2), 'utf-8');\n\n // Also save markdown summary\n const markdown = await this.generateMarkdownSummary(handoff);\n const mdPath = filepath.replace('.json', '.md');\n await fs.writeFile(mdPath, markdown, 'utf-8');\n }\n}\n"],
|
|
5
|
-
"mappings": "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",
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": ["path"]
|
|
7
7
|
}
|
|
@@ -2,6 +2,6 @@
|
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/core/session/index.ts"],
|
|
4
4
|
"sourcesContent": ["export {\n SessionManager,\n sessionManager,\n type Session,\n type SessionOptions,\n FrameQueryMode,\n} from './session-manager.js';\n"],
|
|
5
|
-
"mappings": "AAAA;AAAA,EACE;AAAA,EACA;AAAA,EAGA;AAAA,OACK;",
|
|
5
|
+
"mappings": ";;;;AAAA;AAAA,EACE;AAAA,EACA;AAAA,EAGA;AAAA,OACK;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -1,3 +1,7 @@
|
|
|
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);
|
|
1
5
|
import { v4 as uuidv4 } from "uuid";
|
|
2
6
|
import * as fs from "fs/promises";
|
|
3
7
|
import * as path from "path";
|
|
@@ -2,6 +2,6 @@
|
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/core/session/session-manager.ts"],
|
|
4
4
|
"sourcesContent": ["/**\n * Session Management for StackMemory\n * Provides session persistence and recovery across CLI invocations\n */\n\nimport { v4 as uuidv4 } from 'uuid';\nimport * as fs from 'fs/promises';\nimport * as path from 'path';\nimport * as crypto from 'crypto';\nimport { logger } from '../monitoring/logger.js';\nimport { SystemError, ErrorCode } from '../errors/index.js';\n// Type-safe environment variable access\nfunction getEnv(key: string, defaultValue?: string): string {\n const value = process.env[key];\n if (value === undefined) {\n if (defaultValue !== undefined) return defaultValue;\n throw new Error(`Environment variable ${key} is required`);\n }\n return value;\n}\n\nfunction getOptionalEnv(key: string): string | undefined {\n return process.env[key];\n}\n\nexport interface Session {\n sessionId: string;\n runId: string;\n projectId: string;\n branch?: string;\n startedAt: number;\n lastActiveAt: number;\n metadata: {\n user?: string;\n environment?: string;\n tags?: string[];\n cliVersion?: string;\n };\n state: 'active' | 'suspended' | 'closed';\n}\n\nexport interface SessionOptions {\n sessionId?: string;\n projectPath?: string;\n branch?: string;\n metadata?: Session['metadata'];\n}\n\nexport enum FrameQueryMode {\n CURRENT_SESSION = 'current',\n PROJECT_ACTIVE = 'project',\n ALL_ACTIVE = 'all',\n HISTORICAL = 'historical',\n}\n\nexport class SessionManager {\n private static instance: SessionManager;\n private sessionsDir: string;\n private currentSession: Session | null = null;\n private readonly STALE_THRESHOLD = 24 * 60 * 60 * 1000; // 24 hours\n\n private constructor() {\n const homeDir = process.env['HOME'] || process.env['USERPROFILE'] || '';\n this.sessionsDir = path.join(homeDir, '.stackmemory', 'sessions');\n }\n\n static getInstance(): SessionManager {\n if (!SessionManager.instance) {\n SessionManager.instance = new SessionManager();\n }\n return SessionManager.instance;\n }\n\n async initialize(): Promise<void> {\n try {\n await fs.mkdir(this.sessionsDir, { recursive: true });\n await fs.mkdir(path.join(this.sessionsDir, 'projects'), {\n recursive: true,\n });\n await fs.mkdir(path.join(this.sessionsDir, 'history'), {\n recursive: true,\n });\n } catch (error: unknown) {\n throw new SystemError(\n 'Failed to initialize session directories',\n ErrorCode.INITIALIZATION_ERROR,\n { error, sessionsDir: this.sessionsDir }\n );\n }\n }\n\n async getOrCreateSession(options?: SessionOptions): Promise<Session> {\n // 1. Check explicit session ID\n if (options?.sessionId) {\n const session = await this.loadSession(options.sessionId);\n if (session) {\n this.currentSession = session;\n return session;\n }\n }\n\n // 2. Check environment variable\n const envSessionId = process.env['STACKMEMORY_SESSION'];\n if (envSessionId) {\n const session = await this.loadSession(envSessionId);\n if (session) {\n this.currentSession = session;\n return session;\n }\n }\n\n // 3. Check project + branch context\n const projectHash = await this.getProjectHash(options?.projectPath);\n const branch =\n options?.branch || (await this.getGitBranch(options?.projectPath));\n\n if (projectHash) {\n // Try project+branch session\n const branchSession = await this.findProjectBranchSession(\n projectHash,\n branch\n );\n if (branchSession && this.isSessionRecent(branchSession)) {\n await this.touchSession(branchSession);\n this.currentSession = branchSession;\n return branchSession;\n }\n\n // Try last active for project\n const lastActive = await this.findLastActiveSession(projectHash);\n if (lastActive && this.isSessionRecent(lastActive)) {\n await this.touchSession(lastActive);\n this.currentSession = lastActive;\n return lastActive;\n }\n }\n\n // 4. Create new session\n const newSession = await this.createSession({\n projectId: projectHash || 'global',\n branch,\n metadata: options?.metadata,\n });\n\n this.currentSession = newSession;\n return newSession;\n }\n\n async createSession(params: {\n projectId: string;\n branch?: string;\n metadata?: Session['metadata'];\n }): Promise<Session> {\n const session: Session = {\n sessionId: uuidv4(),\n runId: uuidv4(),\n projectId: params.projectId,\n branch: params.branch,\n startedAt: Date.now(),\n lastActiveAt: Date.now(),\n metadata: {\n ...params.metadata,\n user: process.env['USER'],\n environment: process.env['NODE_ENV'] || 'development',\n cliVersion: process.env['npm_package_version'],\n },\n state: 'active',\n };\n\n await this.saveSession(session);\n await this.setProjectActiveSession(params.projectId, session.sessionId);\n\n // Set as current session\n this.currentSession = session;\n\n logger.info('Created new session', {\n sessionId: session.sessionId,\n projectId: session.projectId,\n branch: session.branch,\n });\n\n return session;\n }\n\n async loadSession(sessionId: string): Promise<Session | null> {\n try {\n const sessionPath = path.join(this.sessionsDir, `${sessionId}.json`);\n const data = await fs.readFile(sessionPath, 'utf-8');\n return JSON.parse(data) as Session;\n } catch (error: unknown) {\n // Check history\n try {\n const historyPath = path.join(\n this.sessionsDir,\n 'history',\n `${sessionId}.json`\n );\n const data = await fs.readFile(historyPath, 'utf-8');\n return JSON.parse(data) as Session;\n } catch {\n return null;\n }\n }\n }\n\n async saveSession(session: Session): Promise<void> {\n const sessionPath = path.join(\n this.sessionsDir,\n `${session.sessionId}.json`\n );\n await fs.writeFile(sessionPath, JSON.stringify(session, null, 2));\n }\n\n async suspendSession(sessionId?: string): Promise<void> {\n const id = sessionId || this.currentSession?.sessionId;\n if (!id) return;\n\n const session = await this.loadSession(id);\n if (session) {\n session.state = 'suspended';\n session.lastActiveAt = Date.now();\n await this.saveSession(session);\n }\n }\n\n async resumeSession(sessionId: string): Promise<Session> {\n const session = await this.loadSession(sessionId);\n if (!session) {\n throw new SystemError('Session not found', ErrorCode.NOT_FOUND, {\n sessionId,\n });\n }\n\n session.state = 'active';\n session.lastActiveAt = Date.now();\n await this.saveSession(session);\n\n this.currentSession = session;\n return session;\n }\n\n async closeSession(sessionId?: string): Promise<void> {\n const id = sessionId || this.currentSession?.sessionId;\n if (!id) return;\n\n const session = await this.loadSession(id);\n if (session) {\n session.state = 'closed';\n session.lastActiveAt = Date.now();\n\n // Move to history\n const sessionPath = path.join(\n this.sessionsDir,\n `${session.sessionId}.json`\n );\n const historyPath = path.join(\n this.sessionsDir,\n 'history',\n `${session.sessionId}.json`\n );\n\n await fs.rename(sessionPath, historyPath);\n }\n }\n\n async listSessions(filter?: {\n projectId?: string;\n state?: Session['state'];\n branch?: string;\n }): Promise<Session[]> {\n const sessions: Session[] = [];\n\n // Load active sessions\n const files = await fs.readdir(this.sessionsDir);\n for (const file of files) {\n if (file.endsWith('.json')) {\n const session = await this.loadSession(file.replace('.json', ''));\n if (session) {\n sessions.push(session);\n }\n }\n }\n\n // Apply filters\n return sessions.filter((s) => {\n if (filter?.projectId && s.projectId !== filter.projectId) return false;\n if (filter?.state && s.state !== filter.state) return false;\n if (filter?.branch && s.branch !== filter.branch) return false;\n return true;\n });\n }\n\n async mergeSessions(sourceId: string, targetId: string): Promise<Session> {\n const source = await this.loadSession(sourceId);\n const target = await this.loadSession(targetId);\n\n if (!source || !target) {\n throw new SystemError(\n 'Session not found for merge',\n ErrorCode.NOT_FOUND,\n { sourceId, targetId }\n );\n }\n\n // Merge metadata\n target.metadata = {\n ...target.metadata,\n ...source.metadata,\n tags: [...(target.metadata.tags || []), ...(source.metadata.tags || [])],\n };\n\n // Update timestamps\n target.lastActiveAt = Date.now();\n\n // Close source session\n await this.closeSession(sourceId);\n await this.saveSession(target);\n\n logger.info('Merged sessions', {\n source: sourceId,\n target: targetId,\n });\n\n return target;\n }\n\n async cleanupStaleSessions(\n maxAge: number = 30 * 24 * 60 * 60 * 1000\n ): Promise<number> {\n const historyDir = path.join(this.sessionsDir, 'history');\n const files = await fs.readdir(historyDir);\n const cutoff = Date.now() - maxAge;\n let cleaned = 0;\n\n for (const file of files) {\n if (file.endsWith('.json')) {\n const filePath = path.join(historyDir, file);\n const stats = await fs.stat(filePath);\n\n if (stats.mtimeMs < cutoff) {\n await fs.unlink(filePath);\n cleaned++;\n }\n }\n }\n\n logger.info(`Cleaned up ${cleaned} stale sessions`);\n return cleaned;\n }\n\n getCurrentSession(): Session | null {\n return this.currentSession;\n }\n\n getSessionRunId(): string {\n return this.currentSession?.runId || uuidv4();\n }\n\n private async getProjectHash(projectPath?: string): Promise<string | null> {\n try {\n const cwd = projectPath || process.cwd();\n const pathModule = await import('path');\n\n // Try to get git remote first (consistent with project-manager)\n let identifier: string;\n try {\n const { execSync } = await import('child_process');\n identifier = execSync('git config --get remote.origin.url', {\n cwd,\n encoding: 'utf-8',\n timeout: 5000,\n }).trim();\n } catch {\n // Fall back to directory path\n identifier = cwd;\n }\n\n // Use same algorithm as project-manager.generateProjectId\n const cleaned = identifier\n .replace(/\\.git$/, '')\n .replace(/[^a-zA-Z0-9-]/g, '-')\n .toLowerCase();\n\n return cleaned.substring(cleaned.length - 50);\n } catch {\n return null;\n }\n }\n\n private async getGitBranch(\n projectPath?: string\n ): Promise<string | undefined> {\n try {\n const { execSync } = await import('child_process');\n const cwd = projectPath || process.cwd();\n const branch = execSync('git rev-parse --abbrev-ref HEAD', {\n cwd,\n encoding: 'utf-8',\n }).trim();\n return branch;\n } catch {\n return undefined;\n }\n }\n\n private async findProjectBranchSession(\n projectHash: string,\n branch?: string\n ): Promise<Session | null> {\n if (!branch) return null;\n\n const sessions = await this.listSessions({\n projectId: projectHash,\n state: 'active',\n branch,\n });\n\n return sessions.sort((a, b) => b.lastActiveAt - a.lastActiveAt)[0] || null;\n }\n\n private async findLastActiveSession(\n projectHash: string\n ): Promise<Session | null> {\n const sessions = await this.listSessions({\n projectId: projectHash,\n state: 'active',\n });\n\n return sessions.sort((a, b) => b.lastActiveAt - a.lastActiveAt)[0] || null;\n }\n\n private async setProjectActiveSession(\n projectId: string,\n sessionId: string\n ): Promise<void> {\n const projectFile = path.join(\n this.sessionsDir,\n 'projects',\n `${projectId}.json`\n );\n await fs.writeFile(\n projectFile,\n JSON.stringify(\n {\n projectId,\n activeSessionId: sessionId,\n updatedAt: Date.now(),\n },\n null,\n 2\n )\n );\n }\n\n private isSessionRecent(session: Session): boolean {\n return Date.now() - session.lastActiveAt < this.STALE_THRESHOLD;\n }\n\n private async touchSession(session: Session): Promise<void> {\n session.lastActiveAt = Date.now();\n await this.saveSession(session);\n }\n}\n\nexport const sessionManager = SessionManager.getInstance();\n"],
|
|
5
|
-
"mappings": "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",
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": ["FrameQueryMode"]
|
|
7
7
|
}
|
|
@@ -1,3 +1,7 @@
|
|
|
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);
|
|
1
5
|
export * from "./types.js";
|
|
2
6
|
export * from "./skill-storage.js";
|
|
3
7
|
//# sourceMappingURL=index.js.map
|
|
@@ -2,6 +2,6 @@
|
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/core/skills/index.ts"],
|
|
4
4
|
"sourcesContent": ["/**\n * Skills Module\n * Persistent agent learning and skill memory\n */\n\nexport * from './types.js';\nexport * from './skill-storage.js';\n"],
|
|
5
|
-
"mappings": "AAKA,cAAc;AACd,cAAc;",
|
|
5
|
+
"mappings": ";;;;AAKA,cAAc;AACd,cAAc;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -1,3 +1,7 @@
|
|
|
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);
|
|
1
5
|
import "dotenv/config";
|
|
2
6
|
import Redis from "ioredis";
|
|
3
7
|
import { v4 as uuidv4 } from "uuid";
|