@stackmemoryai/stackmemory 0.5.57 → 0.5.59
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bin/codex-smd +6 -0
- package/dist/cli/codex-sm-danger.js +21 -0
- package/dist/cli/codex-sm-danger.js.map +7 -0
- package/dist/cli/commands/handoff.js +33 -3
- package/dist/cli/commands/handoff.js.map +2 -2
- package/dist/cli/commands/search.js +20 -3
- package/dist/cli/commands/search.js.map +2 -2
- package/dist/core/database/sqlite-adapter.js +13 -3
- package/dist/core/database/sqlite-adapter.js.map +2 -2
- package/dist/core/errors/error-utils.js +208 -0
- package/dist/core/errors/error-utils.js.map +7 -0
- package/dist/core/errors/index.js +13 -4
- package/dist/core/errors/index.js.map +2 -2
- package/dist/core/merge/unified-merge-resolver.js +303 -0
- package/dist/core/merge/unified-merge-resolver.js.map +7 -0
- package/dist/core/monitoring/logger.js +61 -9
- package/dist/core/monitoring/logger.js.map +2 -2
- package/dist/core/security/index.js +35 -0
- package/dist/core/security/index.js.map +7 -0
- package/dist/core/security/input-sanitizer.js +321 -0
- package/dist/core/security/input-sanitizer.js.map +7 -0
- package/dist/core/session/enhanced-handoff.js +136 -2
- package/dist/core/session/enhanced-handoff.js.map +3 -3
- package/dist/integrations/linear/client.js +5 -1
- package/dist/integrations/linear/client.js.map +2 -2
- package/dist/integrations/mcp/remote-server.js +27 -36
- package/dist/integrations/mcp/remote-server.js.map +2 -2
- package/dist/integrations/mcp/server.js +44 -29
- package/dist/integrations/mcp/server.js.map +3 -3
- package/dist/scripts/benchmark-performance.js +48 -0
- package/dist/scripts/benchmark-performance.js.map +7 -0
- package/dist/scripts/check-redis.js +42 -0
- package/dist/scripts/check-redis.js.map +7 -0
- package/dist/scripts/initialize.js +116 -0
- package/dist/scripts/initialize.js.map +7 -0
- package/dist/scripts/list-linear-tasks.js +124 -0
- package/dist/scripts/list-linear-tasks.js.map +7 -0
- package/dist/scripts/measure-handoff-impact.js +340 -0
- package/dist/scripts/measure-handoff-impact.js.map +7 -0
- package/dist/scripts/query-chromadb.js +160 -0
- package/dist/scripts/query-chromadb.js.map +7 -0
- package/dist/scripts/show-linear-summary.js +119 -0
- package/dist/scripts/show-linear-summary.js.map +7 -0
- package/dist/scripts/simple-swarm-demo.js +90 -0
- package/dist/scripts/simple-swarm-demo.js.map +7 -0
- package/dist/scripts/status.js +155 -0
- package/dist/scripts/status.js.map +7 -0
- package/dist/scripts/test-chromadb-sync.js +192 -0
- package/dist/scripts/test-chromadb-sync.js.map +7 -0
- package/dist/scripts/test-ralph-iteration-fix.js +86 -0
- package/dist/scripts/test-ralph-iteration-fix.js.map +7 -0
- package/dist/scripts/test-ralph-iterations.js +121 -0
- package/dist/scripts/test-ralph-iterations.js.map +7 -0
- package/dist/scripts/test-redis-storage.js +389 -0
- package/dist/scripts/test-redis-storage.js.map +7 -0
- package/dist/scripts/test-simple-ralph-state-sync.js +115 -0
- package/dist/scripts/test-simple-ralph-state-sync.js.map +7 -0
- package/dist/scripts/test-swarm-fixes.js +125 -0
- package/dist/scripts/test-swarm-fixes.js.map +7 -0
- package/dist/scripts/test-swarm-tui.js +23 -0
- package/dist/scripts/test-swarm-tui.js.map +7 -0
- package/dist/scripts/test-tui-shortcuts.js +52 -0
- package/dist/scripts/test-tui-shortcuts.js.map +7 -0
- package/dist/scripts/validate-tui-shortcuts.js +60 -0
- package/dist/scripts/validate-tui-shortcuts.js.map +7 -0
- package/dist/src/agents/core/agent-task-manager.js +527 -0
- package/dist/src/agents/core/agent-task-manager.js.map +7 -0
- package/dist/src/agents/verifiers/base-verifier.js +133 -0
- package/dist/src/agents/verifiers/base-verifier.js.map +7 -0
- package/dist/src/agents/verifiers/formatter-verifier.js +130 -0
- package/dist/src/agents/verifiers/formatter-verifier.js.map +7 -0
- package/dist/src/agents/verifiers/llm-judge.js +252 -0
- package/dist/src/agents/verifiers/llm-judge.js.map +7 -0
- package/dist/src/cli/auto-detect.js +321 -0
- package/dist/src/cli/auto-detect.js.map +7 -0
- package/dist/src/cli/claude-sm-danger.js +21 -0
- package/dist/src/cli/claude-sm-danger.js.map +7 -0
- package/dist/src/cli/claude-sm.js +1156 -0
- package/dist/src/cli/claude-sm.js.map +7 -0
- package/dist/src/cli/codex-sm-danger.js +21 -0
- package/dist/src/cli/codex-sm-danger.js.map +7 -0
- package/dist/src/cli/codex-sm.js +349 -0
- package/dist/src/cli/codex-sm.js.map +7 -0
- package/dist/src/cli/commands/api.js +232 -0
- package/dist/src/cli/commands/api.js.map +7 -0
- package/dist/src/cli/commands/auto-background.js +180 -0
- package/dist/src/cli/commands/auto-background.js.map +7 -0
- package/dist/src/cli/commands/cleanup-processes.js +68 -0
- package/dist/src/cli/commands/cleanup-processes.js.map +7 -0
- package/dist/src/cli/commands/clear.js +202 -0
- package/dist/src/cli/commands/clear.js.map +7 -0
- package/dist/src/cli/commands/config.js +445 -0
- package/dist/src/cli/commands/config.js.map +7 -0
- package/dist/src/cli/commands/context-rehydrate.js +751 -0
- package/dist/src/cli/commands/context-rehydrate.js.map +7 -0
- package/dist/src/cli/commands/context.js +343 -0
- package/dist/src/cli/commands/context.js.map +7 -0
- package/dist/src/cli/commands/daemon.js +392 -0
- package/dist/src/cli/commands/daemon.js.map +7 -0
- package/dist/src/cli/commands/dashboard.js +210 -0
- package/dist/src/cli/commands/dashboard.js.map +7 -0
- package/dist/src/cli/commands/db.js +147 -0
- package/dist/src/cli/commands/db.js.map +7 -0
- package/dist/src/cli/commands/decision.js +266 -0
- package/dist/src/cli/commands/decision.js.map +7 -0
- package/dist/src/cli/commands/discovery.js +279 -0
- package/dist/src/cli/commands/discovery.js.map +7 -0
- package/dist/src/cli/commands/handoff.js +624 -0
- package/dist/src/cli/commands/handoff.js.map +7 -0
- package/dist/src/cli/commands/hooks.js +298 -0
- package/dist/src/cli/commands/hooks.js.map +7 -0
- package/dist/src/cli/commands/linear.js +529 -0
- package/dist/src/cli/commands/linear.js.map +7 -0
- package/dist/src/cli/commands/log.js +169 -0
- package/dist/src/cli/commands/log.js.map +7 -0
- package/dist/src/cli/commands/login.js +172 -0
- package/dist/src/cli/commands/login.js.map +7 -0
- package/dist/src/cli/commands/migrate.js +240 -0
- package/dist/src/cli/commands/migrate.js.map +7 -0
- package/dist/src/cli/commands/model.js +533 -0
- package/dist/src/cli/commands/model.js.map +7 -0
- package/dist/src/cli/commands/onboard.js +536 -0
- package/dist/src/cli/commands/onboard.js.map +7 -0
- package/dist/src/cli/commands/projects.js +199 -0
- package/dist/src/cli/commands/projects.js.map +7 -0
- package/dist/src/cli/commands/ralph.js +909 -0
- package/dist/src/cli/commands/ralph.js.map +7 -0
- package/dist/src/cli/commands/retrieval.js +248 -0
- package/dist/src/cli/commands/retrieval.js.map +7 -0
- package/dist/src/cli/commands/search.js +173 -0
- package/dist/src/cli/commands/search.js.map +7 -0
- package/dist/src/cli/commands/service.js +749 -0
- package/dist/src/cli/commands/service.js.map +7 -0
- package/dist/src/cli/commands/session.js +200 -0
- package/dist/src/cli/commands/session.js.map +7 -0
- package/dist/src/cli/commands/settings.js +306 -0
- package/dist/src/cli/commands/settings.js.map +7 -0
- package/dist/src/cli/commands/setup.js +701 -0
- package/dist/src/cli/commands/setup.js.map +7 -0
- package/dist/src/cli/commands/shell.js +249 -0
- package/dist/src/cli/commands/shell.js.map +7 -0
- package/dist/src/cli/commands/signup.js +50 -0
- package/dist/src/cli/commands/signup.js.map +7 -0
- package/dist/src/cli/commands/skills.js +470 -0
- package/dist/src/cli/commands/skills.js.map +7 -0
- package/dist/src/cli/commands/sms-notify.js +795 -0
- package/dist/src/cli/commands/sms-notify.js.map +7 -0
- package/dist/src/cli/commands/storage-tier.js +183 -0
- package/dist/src/cli/commands/storage-tier.js.map +7 -0
- package/dist/src/cli/commands/sweep.js +249 -0
- package/dist/src/cli/commands/sweep.js.map +7 -0
- package/dist/src/cli/commands/tasks.js +213 -0
- package/dist/src/cli/commands/tasks.js.map +7 -0
- package/dist/src/cli/commands/worktree.js +319 -0
- package/dist/src/cli/commands/worktree.js.map +7 -0
- package/dist/src/cli/index.js +594 -0
- package/dist/src/cli/index.js.map +7 -0
- package/dist/src/cli/opencode-sm.js +448 -0
- package/dist/src/cli/opencode-sm.js.map +7 -0
- package/dist/src/cli/utils/viewer.js +96 -0
- package/dist/src/cli/utils/viewer.js.map +7 -0
- package/dist/src/core/config/config-manager.js +398 -0
- package/dist/src/core/config/config-manager.js.map +7 -0
- package/dist/src/core/config/feature-flags.js +76 -0
- package/dist/src/core/config/feature-flags.js.map +7 -0
- package/dist/src/core/config/storage-config.js +115 -0
- package/dist/src/core/config/storage-config.js.map +7 -0
- package/dist/src/core/config/types.js +144 -0
- package/dist/src/core/config/types.js.map +7 -0
- package/dist/src/core/context/auto-context.js +80 -0
- package/dist/src/core/context/auto-context.js.map +7 -0
- package/dist/src/core/context/dual-stack-manager.js +870 -0
- package/dist/src/core/context/dual-stack-manager.js.map +7 -0
- package/dist/src/core/context/enhanced-rehydration.js +994 -0
- package/dist/src/core/context/enhanced-rehydration.js.map +7 -0
- package/dist/src/core/context/frame-database.js +479 -0
- package/dist/src/core/context/frame-database.js.map +7 -0
- package/dist/src/core/context/frame-digest.js +250 -0
- package/dist/src/core/context/frame-digest.js.map +7 -0
- package/dist/src/core/context/frame-handoff-manager.js +778 -0
- package/dist/src/core/context/frame-handoff-manager.js.map +7 -0
- package/dist/src/core/context/frame-lifecycle-hooks.js +119 -0
- package/dist/src/core/context/frame-lifecycle-hooks.js.map +7 -0
- package/dist/src/core/context/frame-recovery.js +302 -0
- package/dist/src/core/context/frame-recovery.js.map +7 -0
- package/dist/src/core/context/frame-stack.js +314 -0
- package/dist/src/core/context/frame-stack.js.map +7 -0
- package/dist/src/core/context/frame-types.js +5 -0
- package/dist/src/core/context/frame-types.js.map +7 -0
- package/dist/src/core/context/index.js +25 -0
- package/dist/src/core/context/index.js.map +7 -0
- package/dist/src/core/context/permission-manager.js +185 -0
- package/dist/src/core/context/permission-manager.js.map +7 -0
- package/dist/src/core/context/recursive-context-manager.js +592 -0
- package/dist/src/core/context/recursive-context-manager.js.map +7 -0
- package/dist/src/core/context/refactored-frame-manager.js +754 -0
- package/dist/src/core/context/refactored-frame-manager.js.map +7 -0
- package/dist/src/core/context/shared-context-layer.js +621 -0
- package/dist/src/core/context/shared-context-layer.js.map +7 -0
- package/dist/src/core/context/stack-merge-resolver.js +749 -0
- package/dist/src/core/context/stack-merge-resolver.js.map +7 -0
- package/dist/src/core/context/validation.js +130 -0
- package/dist/src/core/context/validation.js.map +7 -0
- package/dist/src/core/database/batch-operations.js +384 -0
- package/dist/src/core/database/batch-operations.js.map +7 -0
- package/dist/src/core/database/connection-pool.js +330 -0
- package/dist/src/core/database/connection-pool.js.map +7 -0
- package/dist/src/core/database/database-adapter.js +60 -0
- package/dist/src/core/database/database-adapter.js.map +7 -0
- package/dist/src/core/database/migration-manager.js +614 -0
- package/dist/src/core/database/migration-manager.js.map +7 -0
- package/dist/src/core/database/query-cache.js +298 -0
- package/dist/src/core/database/query-cache.js.map +7 -0
- package/dist/src/core/database/query-router.js +430 -0
- package/dist/src/core/database/query-router.js.map +7 -0
- package/dist/src/core/database/sqlite-adapter.js +738 -0
- package/dist/src/core/database/sqlite-adapter.js.map +7 -0
- package/dist/src/core/digest/enhanced-hybrid-digest.js +277 -0
- package/dist/src/core/digest/enhanced-hybrid-digest.js.map +7 -0
- package/dist/src/core/digest/frame-digest-integration.js +176 -0
- package/dist/src/core/digest/frame-digest-integration.js.map +7 -0
- package/dist/src/core/digest/hybrid-digest-generator.js +553 -0
- package/dist/src/core/digest/hybrid-digest-generator.js.map +7 -0
- package/dist/src/core/digest/index.js +9 -0
- package/dist/src/core/digest/index.js.map +7 -0
- package/dist/src/core/digest/types.js +25 -0
- package/dist/src/core/digest/types.js.map +7 -0
- package/dist/src/core/errors/error-utils.js +208 -0
- package/dist/src/core/errors/error-utils.js.map +7 -0
- package/dist/src/core/errors/index.js +521 -0
- package/dist/src/core/errors/index.js.map +7 -0
- package/dist/src/core/errors/recovery.js +269 -0
- package/dist/src/core/errors/recovery.js.map +7 -0
- package/dist/src/core/execution/parallel-executor.js +258 -0
- package/dist/src/core/execution/parallel-executor.js.map +7 -0
- package/dist/src/core/frame/workflow-templates.js +319 -0
- package/dist/src/core/frame/workflow-templates.js.map +7 -0
- package/dist/src/core/merge/conflict-detector.js +431 -0
- package/dist/src/core/merge/conflict-detector.js.map +7 -0
- package/dist/src/core/merge/index.js +9 -0
- package/dist/src/core/merge/index.js.map +7 -0
- package/dist/src/core/merge/resolution-engine.js +558 -0
- package/dist/src/core/merge/resolution-engine.js.map +7 -0
- package/dist/src/core/merge/stack-diff.js +532 -0
- package/dist/src/core/merge/stack-diff.js.map +7 -0
- package/dist/src/core/merge/types.js +5 -0
- package/dist/src/core/merge/types.js.map +7 -0
- package/dist/src/core/merge/unified-merge-resolver.js +303 -0
- package/dist/src/core/merge/unified-merge-resolver.js.map +7 -0
- package/dist/src/core/models/fallback-monitor.js +232 -0
- package/dist/src/core/models/fallback-monitor.js.map +7 -0
- package/dist/src/core/models/model-router.js +340 -0
- package/dist/src/core/models/model-router.js.map +7 -0
- package/dist/src/core/monitoring/error-handler.js +49 -0
- package/dist/src/core/monitoring/error-handler.js.map +7 -0
- package/dist/src/core/monitoring/logger.js +202 -0
- package/dist/src/core/monitoring/logger.js.map +7 -0
- package/dist/src/core/monitoring/metrics.js +172 -0
- package/dist/src/core/monitoring/metrics.js.map +7 -0
- package/dist/src/core/monitoring/progress-tracker.js +189 -0
- package/dist/src/core/monitoring/progress-tracker.js.map +7 -0
- package/dist/src/core/monitoring/session-monitor.js +300 -0
- package/dist/src/core/monitoring/session-monitor.js.map +7 -0
- package/dist/src/core/performance/context-cache.js +273 -0
- package/dist/src/core/performance/context-cache.js.map +7 -0
- package/dist/src/core/performance/index.js +11 -0
- package/dist/src/core/performance/index.js.map +7 -0
- package/dist/src/core/performance/lazy-context-loader.js +327 -0
- package/dist/src/core/performance/lazy-context-loader.js.map +7 -0
- package/dist/src/core/performance/monitor.js +221 -0
- package/dist/src/core/performance/monitor.js.map +7 -0
- package/dist/src/core/performance/optimized-frame-context.js +345 -0
- package/dist/src/core/performance/optimized-frame-context.js.map +7 -0
- package/dist/src/core/performance/performance-benchmark.js +277 -0
- package/dist/src/core/performance/performance-benchmark.js.map +7 -0
- package/dist/src/core/performance/performance-profiler.js +370 -0
- package/dist/src/core/performance/performance-profiler.js.map +7 -0
- package/dist/src/core/performance/streaming-jsonl-parser.js +195 -0
- package/dist/src/core/performance/streaming-jsonl-parser.js.map +7 -0
- package/dist/src/core/persistence/postgres-adapter.js +349 -0
- package/dist/src/core/persistence/postgres-adapter.js.map +7 -0
- package/dist/src/core/projects/project-isolation.js +201 -0
- package/dist/src/core/projects/project-isolation.js.map +7 -0
- package/dist/src/core/projects/project-manager.js +697 -0
- package/dist/src/core/projects/project-manager.js.map +7 -0
- package/dist/src/core/query/query-parser.js +370 -0
- package/dist/src/core/query/query-parser.js.map +7 -0
- package/dist/src/core/query/query-templates.js +321 -0
- package/dist/src/core/query/query-templates.js.map +7 -0
- package/dist/src/core/retrieval/context-retriever.js +479 -0
- package/dist/src/core/retrieval/context-retriever.js.map +7 -0
- package/dist/src/core/retrieval/index.js +8 -0
- package/dist/src/core/retrieval/index.js.map +7 -0
- package/dist/src/core/retrieval/llm-context-retrieval.js +613 -0
- package/dist/src/core/retrieval/llm-context-retrieval.js.map +7 -0
- package/dist/src/core/retrieval/llm-provider.js +151 -0
- package/dist/src/core/retrieval/llm-provider.js.map +7 -0
- package/dist/src/core/retrieval/retrieval-audit.js +236 -0
- package/dist/src/core/retrieval/retrieval-audit.js.map +7 -0
- package/dist/src/core/retrieval/summary-generator.js +589 -0
- package/dist/src/core/retrieval/summary-generator.js.map +7 -0
- package/dist/src/core/retrieval/types.js +21 -0
- package/dist/src/core/retrieval/types.js.map +7 -0
- package/dist/src/core/security/index.js +35 -0
- package/dist/src/core/security/index.js.map +7 -0
- package/dist/src/core/security/input-sanitizer.js +321 -0
- package/dist/src/core/security/input-sanitizer.js.map +7 -0
- package/dist/src/core/session/clear-survival.js +465 -0
- package/dist/src/core/session/clear-survival.js.map +7 -0
- package/dist/src/core/session/enhanced-handoff.js +792 -0
- package/dist/src/core/session/enhanced-handoff.js.map +7 -0
- package/dist/src/core/session/handoff-generator.js +343 -0
- package/dist/src/core/session/handoff-generator.js.map +7 -0
- package/dist/src/core/session/index.js +15 -0
- package/dist/src/core/session/index.js.map +7 -0
- package/dist/src/core/session/session-manager.js +347 -0
- package/dist/src/core/session/session-manager.js.map +7 -0
- package/dist/src/core/skills/index.js +7 -0
- package/dist/src/core/skills/index.js.map +7 -0
- package/dist/src/core/skills/skill-storage.js +764 -0
- package/dist/src/core/skills/skill-storage.js.map +7 -0
- package/dist/src/core/skills/types.js +193 -0
- package/dist/src/core/skills/types.js.map +7 -0
- package/dist/src/core/storage/chromadb-adapter.js +354 -0
- package/dist/src/core/storage/chromadb-adapter.js.map +7 -0
- package/dist/src/core/storage/infinite-storage.js +510 -0
- package/dist/src/core/storage/infinite-storage.js.map +7 -0
- package/dist/src/core/storage/remote-storage.js +489 -0
- package/dist/src/core/storage/remote-storage.js.map +7 -0
- package/dist/src/core/storage/two-tier-storage.js +766 -0
- package/dist/src/core/storage/two-tier-storage.js.map +7 -0
- package/dist/src/core/trace/cli-trace-wrapper.js +132 -0
- package/dist/src/core/trace/cli-trace-wrapper.js.map +7 -0
- package/dist/src/core/trace/db-trace-wrapper.js +247 -0
- package/dist/src/core/trace/db-trace-wrapper.js.map +7 -0
- package/dist/src/core/trace/debug-trace.js +417 -0
- package/dist/src/core/trace/debug-trace.js.map +7 -0
- package/dist/src/core/trace/index.js +109 -0
- package/dist/src/core/trace/index.js.map +7 -0
- package/dist/src/core/trace/linear-api-wrapper.js +178 -0
- package/dist/src/core/trace/linear-api-wrapper.js.map +7 -0
- package/dist/src/core/trace/trace-detector.js +528 -0
- package/dist/src/core/trace/trace-detector.js.map +7 -0
- package/dist/src/core/trace/trace-store.js +345 -0
- package/dist/src/core/trace/trace-store.js.map +7 -0
- package/dist/src/core/trace/types.js +77 -0
- package/dist/src/core/trace/types.js.map +7 -0
- package/dist/src/core/types.js +5 -0
- package/dist/src/core/types.js.map +7 -0
- package/dist/src/core/utils/async-mutex.js +114 -0
- package/dist/src/core/utils/async-mutex.js.map +7 -0
- package/dist/src/core/utils/compression.js +83 -0
- package/dist/src/core/utils/compression.js.map +7 -0
- package/dist/src/core/utils/update-checker.js +218 -0
- package/dist/src/core/utils/update-checker.js.map +7 -0
- package/dist/src/core/worktree/worktree-manager.js +465 -0
- package/dist/src/core/worktree/worktree-manager.js.map +7 -0
- package/dist/src/daemon/daemon-config.js +149 -0
- package/dist/src/daemon/daemon-config.js.map +7 -0
- package/dist/src/daemon/services/context-service.js +122 -0
- package/dist/src/daemon/services/context-service.js.map +7 -0
- package/dist/src/daemon/services/linear-service.js +136 -0
- package/dist/src/daemon/services/linear-service.js.map +7 -0
- package/dist/src/daemon/session-daemon.js +312 -0
- package/dist/src/daemon/session-daemon.js.map +7 -0
- package/dist/src/daemon/unified-daemon.js +276 -0
- package/dist/src/daemon/unified-daemon.js.map +7 -0
- package/dist/src/features/analytics/api/analytics-api.js +287 -0
- package/dist/src/features/analytics/api/analytics-api.js.map +7 -0
- package/dist/src/features/analytics/core/analytics-service.js +282 -0
- package/dist/src/features/analytics/core/analytics-service.js.map +7 -0
- package/dist/src/features/analytics/index.js +18 -0
- package/dist/src/features/analytics/index.js.map +7 -0
- package/dist/src/features/analytics/queries/metrics-queries.js +277 -0
- package/dist/src/features/analytics/queries/metrics-queries.js.map +7 -0
- package/dist/src/features/analytics/types/metrics.js +5 -0
- package/dist/src/features/analytics/types/metrics.js.map +7 -0
- package/dist/src/features/browser/browser-mcp.js +492 -0
- package/dist/src/features/browser/browser-mcp.js.map +7 -0
- package/dist/src/features/sweep/index.js +20 -0
- package/dist/src/features/sweep/index.js.map +7 -0
- package/dist/src/features/sweep/prediction-client.js +155 -0
- package/dist/src/features/sweep/prediction-client.js.map +7 -0
- package/dist/src/features/sweep/prompt-builder.js +85 -0
- package/dist/src/features/sweep/prompt-builder.js.map +7 -0
- package/dist/src/features/sweep/pty-wrapper.js +171 -0
- package/dist/src/features/sweep/pty-wrapper.js.map +7 -0
- package/dist/src/features/sweep/state-watcher.js +87 -0
- package/dist/src/features/sweep/state-watcher.js.map +7 -0
- package/dist/src/features/sweep/status-bar.js +88 -0
- package/dist/src/features/sweep/status-bar.js.map +7 -0
- package/dist/src/features/sweep/sweep-server-manager.js +226 -0
- package/dist/src/features/sweep/sweep-server-manager.js.map +7 -0
- package/dist/src/features/sweep/tab-interceptor.js +38 -0
- package/dist/src/features/sweep/tab-interceptor.js.map +7 -0
- package/dist/src/features/sweep/types.js +18 -0
- package/dist/src/features/sweep/types.js.map +7 -0
- package/dist/src/features/tasks/linear-task-manager.js +487 -0
- package/dist/src/features/tasks/linear-task-manager.js.map +7 -0
- package/dist/src/features/tasks/task-aware-context.js +410 -0
- package/dist/src/features/tasks/task-aware-context.js.map +7 -0
- package/dist/src/features/tui/simple-monitor.js +116 -0
- package/dist/src/features/tui/simple-monitor.js.map +7 -0
- package/dist/src/features/tui/swarm-monitor.js +648 -0
- package/dist/src/features/tui/swarm-monitor.js.map +7 -0
- package/dist/src/features/web/client/stores/task-store.js +26 -0
- package/dist/src/features/web/client/stores/task-store.js.map +7 -0
- package/dist/src/features/web/server/index.js +194 -0
- package/dist/src/features/web/server/index.js.map +7 -0
- package/dist/src/hooks/auto-background.js +151 -0
- package/dist/src/hooks/auto-background.js.map +7 -0
- package/dist/src/hooks/claude-code-whatsapp-hook.js +197 -0
- package/dist/src/hooks/claude-code-whatsapp-hook.js.map +7 -0
- package/dist/src/hooks/config.js +150 -0
- package/dist/src/hooks/config.js.map +7 -0
- package/dist/src/hooks/daemon.js +364 -0
- package/dist/src/hooks/daemon.js.map +7 -0
- package/dist/src/hooks/events.js +58 -0
- package/dist/src/hooks/events.js.map +7 -0
- package/dist/src/hooks/index.js +12 -0
- package/dist/src/hooks/index.js.map +7 -0
- package/dist/src/hooks/linear-task-picker.js +186 -0
- package/dist/src/hooks/linear-task-picker.js.map +7 -0
- package/dist/src/hooks/schemas.js +197 -0
- package/dist/src/hooks/schemas.js.map +7 -0
- package/dist/src/hooks/secure-fs.js +49 -0
- package/dist/src/hooks/secure-fs.js.map +7 -0
- package/dist/src/hooks/security-logger.js +155 -0
- package/dist/src/hooks/security-logger.js.map +7 -0
- package/dist/src/hooks/session-summary.js +222 -0
- package/dist/src/hooks/session-summary.js.map +7 -0
- package/dist/src/hooks/sms-action-runner.js +371 -0
- package/dist/src/hooks/sms-action-runner.js.map +7 -0
- package/dist/src/hooks/sms-notify.js +506 -0
- package/dist/src/hooks/sms-notify.js.map +7 -0
- package/dist/src/hooks/sms-watcher.js +93 -0
- package/dist/src/hooks/sms-watcher.js.map +7 -0
- package/dist/src/hooks/sms-webhook.js +555 -0
- package/dist/src/hooks/sms-webhook.js.map +7 -0
- package/dist/src/hooks/whatsapp-commands.js +479 -0
- package/dist/src/hooks/whatsapp-commands.js.map +7 -0
- package/dist/src/hooks/whatsapp-scheduler.js +317 -0
- package/dist/src/hooks/whatsapp-scheduler.js.map +7 -0
- package/dist/src/hooks/whatsapp-sync.js +409 -0
- package/dist/src/hooks/whatsapp-sync.js.map +7 -0
- package/dist/src/index.js +25 -0
- package/dist/src/index.js.map +7 -0
- package/dist/src/integrations/anthropic/client.js +263 -0
- package/dist/src/integrations/anthropic/client.js.map +7 -0
- package/dist/src/integrations/claude-code/agent-bridge.js +768 -0
- package/dist/src/integrations/claude-code/agent-bridge.js.map +7 -0
- package/dist/src/integrations/claude-code/enhanced-pre-clear-hooks.js +459 -0
- package/dist/src/integrations/claude-code/enhanced-pre-clear-hooks.js.map +7 -0
- package/dist/src/integrations/claude-code/lifecycle-hooks.js +254 -0
- package/dist/src/integrations/claude-code/lifecycle-hooks.js.map +7 -0
- package/dist/src/integrations/claude-code/post-task-hooks.js +545 -0
- package/dist/src/integrations/claude-code/post-task-hooks.js.map +7 -0
- package/dist/src/integrations/claude-code/subagent-client-stub.js +20 -0
- package/dist/src/integrations/claude-code/subagent-client-stub.js.map +7 -0
- package/dist/src/integrations/claude-code/subagent-client.js +511 -0
- package/dist/src/integrations/claude-code/subagent-client.js.map +7 -0
- package/dist/src/integrations/claude-code/task-coordinator.js +360 -0
- package/dist/src/integrations/claude-code/task-coordinator.js.map +7 -0
- package/dist/src/integrations/linear/auth.js +337 -0
- package/dist/src/integrations/linear/auth.js.map +7 -0
- package/dist/src/integrations/linear/auto-sync.js +258 -0
- package/dist/src/integrations/linear/auto-sync.js.map +7 -0
- package/dist/src/integrations/linear/client.js +634 -0
- package/dist/src/integrations/linear/client.js.map +7 -0
- package/dist/src/integrations/linear/config.js +130 -0
- package/dist/src/integrations/linear/config.js.map +7 -0
- package/dist/src/integrations/linear/migration.js +361 -0
- package/dist/src/integrations/linear/migration.js.map +7 -0
- package/dist/src/integrations/linear/oauth-server.js +454 -0
- package/dist/src/integrations/linear/oauth-server.js.map +7 -0
- package/dist/src/integrations/linear/rest-client.js +213 -0
- package/dist/src/integrations/linear/rest-client.js.map +7 -0
- package/dist/src/integrations/linear/sync-manager.js +236 -0
- package/dist/src/integrations/linear/sync-manager.js.map +7 -0
- package/dist/src/integrations/linear/sync-service.js +231 -0
- package/dist/src/integrations/linear/sync-service.js.map +7 -0
- package/dist/src/integrations/linear/sync.js +782 -0
- package/dist/src/integrations/linear/sync.js.map +7 -0
- package/dist/src/integrations/linear/types.js +5 -0
- package/dist/src/integrations/linear/types.js.map +7 -0
- package/dist/src/integrations/linear/unified-sync.js +589 -0
- package/dist/src/integrations/linear/unified-sync.js.map +7 -0
- package/dist/src/integrations/linear/webhook-handler.js +219 -0
- package/dist/src/integrations/linear/webhook-handler.js.map +7 -0
- package/dist/src/integrations/linear/webhook-server.js +218 -0
- package/dist/src/integrations/linear/webhook-server.js.map +7 -0
- package/dist/src/integrations/linear/webhook.js +291 -0
- package/dist/src/integrations/linear/webhook.js.map +7 -0
- package/dist/src/integrations/mcp/handlers/code-execution-handlers.js +266 -0
- package/dist/src/integrations/mcp/handlers/code-execution-handlers.js.map +7 -0
- package/dist/src/integrations/mcp/handlers/context-handlers.js +257 -0
- package/dist/src/integrations/mcp/handlers/context-handlers.js.map +7 -0
- package/dist/src/integrations/mcp/handlers/discovery-handlers.js +497 -0
- package/dist/src/integrations/mcp/handlers/discovery-handlers.js.map +7 -0
- package/dist/src/integrations/mcp/handlers/index.js +166 -0
- package/dist/src/integrations/mcp/handlers/index.js.map +7 -0
- package/dist/src/integrations/mcp/handlers/linear-handlers.js +247 -0
- package/dist/src/integrations/mcp/handlers/linear-handlers.js.map +7 -0
- package/dist/src/integrations/mcp/handlers/skill-handlers.js +529 -0
- package/dist/src/integrations/mcp/handlers/skill-handlers.js.map +7 -0
- package/dist/src/integrations/mcp/handlers/task-handlers.js +239 -0
- package/dist/src/integrations/mcp/handlers/task-handlers.js.map +7 -0
- package/dist/src/integrations/mcp/handlers/trace-handlers.js +308 -0
- package/dist/src/integrations/mcp/handlers/trace-handlers.js.map +7 -0
- package/dist/src/integrations/mcp/index.js +23 -0
- package/dist/src/integrations/mcp/index.js.map +7 -0
- package/dist/src/integrations/mcp/middleware/tool-scoring.js +356 -0
- package/dist/src/integrations/mcp/middleware/tool-scoring.js.map +7 -0
- package/dist/src/integrations/mcp/refactored-server.js +374 -0
- package/dist/src/integrations/mcp/refactored-server.js.map +7 -0
- package/dist/src/integrations/mcp/remote-server.js +682 -0
- package/dist/src/integrations/mcp/remote-server.js.map +7 -0
- package/dist/src/integrations/mcp/schemas.js +147 -0
- package/dist/src/integrations/mcp/schemas.js.map +7 -0
- package/dist/src/integrations/mcp/server.js +1975 -0
- package/dist/src/integrations/mcp/server.js.map +7 -0
- package/dist/src/integrations/mcp/tool-definitions-code.js +125 -0
- package/dist/src/integrations/mcp/tool-definitions-code.js.map +7 -0
- package/dist/src/integrations/mcp/tool-definitions.js +702 -0
- package/dist/src/integrations/mcp/tool-definitions.js.map +7 -0
- package/dist/src/integrations/ralph/bridge/ralph-stackmemory-bridge.js +860 -0
- package/dist/src/integrations/ralph/bridge/ralph-stackmemory-bridge.js.map +7 -0
- package/dist/src/integrations/ralph/context/context-budget-manager.js +301 -0
- package/dist/src/integrations/ralph/context/context-budget-manager.js.map +7 -0
- package/dist/src/integrations/ralph/context/stackmemory-context-loader.js +360 -0
- package/dist/src/integrations/ralph/context/stackmemory-context-loader.js.map +7 -0
- package/dist/src/integrations/ralph/coordination/enhanced-coordination.js +410 -0
- package/dist/src/integrations/ralph/coordination/enhanced-coordination.js.map +7 -0
- package/dist/src/integrations/ralph/index.js +18 -0
- package/dist/src/integrations/ralph/index.js.map +7 -0
- package/dist/src/integrations/ralph/learning/pattern-learner.js +401 -0
- package/dist/src/integrations/ralph/learning/pattern-learner.js.map +7 -0
- package/dist/src/integrations/ralph/lifecycle/iteration-lifecycle.js +448 -0
- package/dist/src/integrations/ralph/lifecycle/iteration-lifecycle.js.map +7 -0
- package/dist/src/integrations/ralph/monitoring/swarm-dashboard.js +294 -0
- package/dist/src/integrations/ralph/monitoring/swarm-dashboard.js.map +7 -0
- package/dist/src/integrations/ralph/monitoring/swarm-registry.js +108 -0
- package/dist/src/integrations/ralph/monitoring/swarm-registry.js.map +7 -0
- package/dist/src/integrations/ralph/orchestration/multi-loop-orchestrator.js +463 -0
- package/dist/src/integrations/ralph/orchestration/multi-loop-orchestrator.js.map +7 -0
- package/dist/src/integrations/ralph/patterns/compounding-engineering-pattern.js +400 -0
- package/dist/src/integrations/ralph/patterns/compounding-engineering-pattern.js.map +7 -0
- package/dist/src/integrations/ralph/patterns/extended-coherence-sessions.js +473 -0
- package/dist/src/integrations/ralph/patterns/extended-coherence-sessions.js.map +7 -0
- package/dist/src/integrations/ralph/patterns/oracle-worker-pattern.js +388 -0
- package/dist/src/integrations/ralph/patterns/oracle-worker-pattern.js.map +7 -0
- package/dist/src/integrations/ralph/performance/performance-optimizer.js +358 -0
- package/dist/src/integrations/ralph/performance/performance-optimizer.js.map +7 -0
- package/dist/src/integrations/ralph/recovery/crash-recovery.js +462 -0
- package/dist/src/integrations/ralph/recovery/crash-recovery.js.map +7 -0
- package/dist/src/integrations/ralph/state/state-reconciler.js +404 -0
- package/dist/src/integrations/ralph/state/state-reconciler.js.map +7 -0
- package/dist/src/integrations/ralph/swarm/git-workflow-manager.js +428 -0
- package/dist/src/integrations/ralph/swarm/git-workflow-manager.js.map +7 -0
- package/dist/src/integrations/ralph/swarm/swarm-coordinator.js +996 -0
- package/dist/src/integrations/ralph/swarm/swarm-coordinator.js.map +7 -0
- package/dist/src/integrations/ralph/types.js +5 -0
- package/dist/src/integrations/ralph/types.js.map +7 -0
- package/dist/src/integrations/ralph/visualization/ralph-debugger.js +585 -0
- package/dist/src/integrations/ralph/visualization/ralph-debugger.js.map +7 -0
- package/dist/src/mcp/stackmemory-mcp-server.js +554 -0
- package/dist/src/mcp/stackmemory-mcp-server.js.map +7 -0
- package/dist/src/middleware/exponential-rate-limiter.js +289 -0
- package/dist/src/middleware/exponential-rate-limiter.js.map +7 -0
- package/dist/src/models/user.model.js +358 -0
- package/dist/src/models/user.model.js.map +7 -0
- package/dist/src/servers/production/auth-middleware.js +528 -0
- package/dist/src/servers/production/auth-middleware.js.map +7 -0
- package/dist/src/services/config-service.js +65 -0
- package/dist/src/services/config-service.js.map +7 -0
- package/dist/src/services/context-service.js +194 -0
- package/dist/src/services/context-service.js.map +7 -0
- package/dist/src/skills/api-discovery.js +354 -0
- package/dist/src/skills/api-discovery.js.map +7 -0
- package/dist/src/skills/api-skill.js +475 -0
- package/dist/src/skills/api-skill.js.map +7 -0
- package/dist/src/skills/claude-skills.js +1061 -0
- package/dist/src/skills/claude-skills.js.map +7 -0
- package/dist/src/skills/dashboard-launcher.js +216 -0
- package/dist/src/skills/dashboard-launcher.js.map +7 -0
- package/dist/src/skills/recursive-agent-orchestrator.js +575 -0
- package/dist/src/skills/recursive-agent-orchestrator.js.map +7 -0
- package/dist/src/skills/repo-ingestion-skill.js +609 -0
- package/dist/src/skills/repo-ingestion-skill.js.map +7 -0
- package/dist/src/skills/unified-rlm-orchestrator.js +404 -0
- package/dist/src/skills/unified-rlm-orchestrator.js.map +7 -0
- package/dist/src/types/task.js +5 -0
- package/dist/src/types/task.js.map +7 -0
- package/dist/src/utils/env.js +50 -0
- package/dist/src/utils/env.js.map +7 -0
- package/dist/src/utils/formatting.js +62 -0
- package/dist/src/utils/formatting.js.map +7 -0
- package/dist/src/utils/process-cleanup.js +136 -0
- package/dist/src/utils/process-cleanup.js.map +7 -0
- package/package.json +4 -3
- package/scripts/create-cleanup-issues.js +302 -0
- package/scripts/demos/browser-test.ts +39 -0
- package/scripts/demos/ralph-integration-demo.ts +244 -0
- package/scripts/demos/trace-demo.ts +214 -0
- package/scripts/demos/trace-detector.demo.ts +171 -0
- package/scripts/demos/trace-test.ts +67 -0
- package/scripts/initialize.ts +16 -7
- package/scripts/install.sh +14 -62
- package/scripts/status.ts +111 -46
- package/scripts/test-claude-config.sh +123 -0
- package/scripts/validate-claude-config.sh +155 -0
|
@@ -0,0 +1,473 @@
|
|
|
1
|
+
import { fileURLToPath as __fileURLToPath } from 'url';
|
|
2
|
+
import { dirname as __pathDirname } from 'path';
|
|
3
|
+
const __filename = __fileURLToPath(import.meta.url);
|
|
4
|
+
const __dirname = __pathDirname(__filename);
|
|
5
|
+
import { v4 as uuidv4 } from "uuid";
|
|
6
|
+
import * as fs from "fs/promises";
|
|
7
|
+
import * as path from "path";
|
|
8
|
+
import { logger } from "../../../core/monitoring/logger.js";
|
|
9
|
+
import { RalphStackMemoryBridge } from "../bridge/ralph-stackmemory-bridge.js";
|
|
10
|
+
class ExtendedCoherenceManager {
|
|
11
|
+
activeSessions = /* @__PURE__ */ new Map();
|
|
12
|
+
baseDir;
|
|
13
|
+
monitoringInterval;
|
|
14
|
+
performanceHistory = /* @__PURE__ */ new Map();
|
|
15
|
+
constructor(baseDir = "./.coherence-sessions") {
|
|
16
|
+
this.baseDir = baseDir;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Initialize the coherence management system
|
|
20
|
+
*/
|
|
21
|
+
async initialize() {
|
|
22
|
+
await fs.mkdir(this.baseDir, { recursive: true });
|
|
23
|
+
this.monitoringInterval = setInterval(
|
|
24
|
+
() => this.monitorActiveSessionsHealth(),
|
|
25
|
+
6e4
|
|
26
|
+
// Check every minute
|
|
27
|
+
);
|
|
28
|
+
logger.info("Extended Coherence Manager initialized", {
|
|
29
|
+
baseDir: this.baseDir,
|
|
30
|
+
monitoringEnabled: true
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Start an extended coherence work session
|
|
35
|
+
*/
|
|
36
|
+
async startCoherenceSession(agentConfig, taskConfig, sessionConfig) {
|
|
37
|
+
const sessionId = uuidv4();
|
|
38
|
+
const defaultConfig = this.generateConfigForComplexity(taskConfig.complexity);
|
|
39
|
+
const config = { ...defaultConfig, ...sessionConfig };
|
|
40
|
+
const session = {
|
|
41
|
+
id: sessionId,
|
|
42
|
+
agent: agentConfig,
|
|
43
|
+
task: {
|
|
44
|
+
...taskConfig,
|
|
45
|
+
breakpoints: taskConfig.breakpoints || this.generateBreakpoints(taskConfig)
|
|
46
|
+
},
|
|
47
|
+
config,
|
|
48
|
+
state: {
|
|
49
|
+
status: "active",
|
|
50
|
+
currentPhase: "initialization",
|
|
51
|
+
completedMilestones: [],
|
|
52
|
+
lastCheckpoint: Date.now(),
|
|
53
|
+
interventionCount: 0,
|
|
54
|
+
refreshCount: 0
|
|
55
|
+
},
|
|
56
|
+
metrics: [],
|
|
57
|
+
interventions: []
|
|
58
|
+
};
|
|
59
|
+
this.activeSessions.set(sessionId, session);
|
|
60
|
+
await this.initializeSessionWorkspace(session);
|
|
61
|
+
await this.launchAgentSession(session);
|
|
62
|
+
logger.info("Extended coherence session started", {
|
|
63
|
+
sessionId,
|
|
64
|
+
agent: agentConfig.role,
|
|
65
|
+
estimatedDuration: taskConfig.estimatedDuration,
|
|
66
|
+
maxDuration: config.maxDuration
|
|
67
|
+
});
|
|
68
|
+
return sessionId;
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Generate configuration optimized for task complexity
|
|
72
|
+
*/
|
|
73
|
+
generateConfigForComplexity(complexity) {
|
|
74
|
+
const configs = {
|
|
75
|
+
low: {
|
|
76
|
+
maxDuration: 60,
|
|
77
|
+
// 1 hour
|
|
78
|
+
coherenceThreshold: 0.7,
|
|
79
|
+
checkpointInterval: 15,
|
|
80
|
+
// 15 minutes
|
|
81
|
+
refreshStrategy: "checkpoint",
|
|
82
|
+
enableMemoryPalace: false,
|
|
83
|
+
enableProgressTracking: true,
|
|
84
|
+
enableAutoRefresh: false,
|
|
85
|
+
enableHealthMonitoring: true
|
|
86
|
+
},
|
|
87
|
+
medium: {
|
|
88
|
+
maxDuration: 180,
|
|
89
|
+
// 3 hours
|
|
90
|
+
coherenceThreshold: 0.8,
|
|
91
|
+
checkpointInterval: 10,
|
|
92
|
+
// 10 minutes
|
|
93
|
+
refreshStrategy: "context_refresh",
|
|
94
|
+
enableMemoryPalace: true,
|
|
95
|
+
enableProgressTracking: true,
|
|
96
|
+
enableAutoRefresh: true,
|
|
97
|
+
enableHealthMonitoring: true
|
|
98
|
+
},
|
|
99
|
+
high: {
|
|
100
|
+
maxDuration: 360,
|
|
101
|
+
// 6 hours
|
|
102
|
+
coherenceThreshold: 0.85,
|
|
103
|
+
checkpointInterval: 8,
|
|
104
|
+
// 8 minutes
|
|
105
|
+
refreshStrategy: "context_refresh",
|
|
106
|
+
enableMemoryPalace: true,
|
|
107
|
+
enableProgressTracking: true,
|
|
108
|
+
enableAutoRefresh: true,
|
|
109
|
+
enableHealthMonitoring: true
|
|
110
|
+
},
|
|
111
|
+
very_high: {
|
|
112
|
+
maxDuration: 720,
|
|
113
|
+
// 12 hours
|
|
114
|
+
coherenceThreshold: 0.9,
|
|
115
|
+
checkpointInterval: 5,
|
|
116
|
+
// 5 minutes
|
|
117
|
+
refreshStrategy: "full_restart",
|
|
118
|
+
enableMemoryPalace: true,
|
|
119
|
+
enableProgressTracking: true,
|
|
120
|
+
enableAutoRefresh: true,
|
|
121
|
+
enableHealthMonitoring: true
|
|
122
|
+
}
|
|
123
|
+
};
|
|
124
|
+
return configs[complexity];
|
|
125
|
+
}
|
|
126
|
+
/**
|
|
127
|
+
* Monitor active sessions for coherence degradation
|
|
128
|
+
*/
|
|
129
|
+
async monitorActiveSessionsHealth() {
|
|
130
|
+
for (const [sessionId, session] of this.activeSessions) {
|
|
131
|
+
if (session.state.status === "active") {
|
|
132
|
+
await this.assessSessionCoherence(session);
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
/**
|
|
137
|
+
* Assess session coherence and intervene if necessary
|
|
138
|
+
*/
|
|
139
|
+
async assessSessionCoherence(session) {
|
|
140
|
+
const metrics = await this.calculateCoherenceMetrics(session);
|
|
141
|
+
session.metrics.push(metrics);
|
|
142
|
+
if (session.metrics.length > 10) {
|
|
143
|
+
session.metrics.shift();
|
|
144
|
+
}
|
|
145
|
+
const overallCoherence = this.calculateOverallCoherence(metrics);
|
|
146
|
+
logger.debug("Session coherence assessment", {
|
|
147
|
+
sessionId: session.id,
|
|
148
|
+
coherence: overallCoherence,
|
|
149
|
+
threshold: session.config.coherenceThreshold,
|
|
150
|
+
duration: metrics.duration
|
|
151
|
+
});
|
|
152
|
+
if (overallCoherence < session.config.coherenceThreshold) {
|
|
153
|
+
await this.interventeInSession(session, "coherence_degradation", overallCoherence);
|
|
154
|
+
}
|
|
155
|
+
const timeSinceCheckpoint = Date.now() - session.state.lastCheckpoint;
|
|
156
|
+
const checkpointDue = timeSinceCheckpoint > session.config.checkpointInterval * 60 * 1e3;
|
|
157
|
+
if (checkpointDue) {
|
|
158
|
+
await this.checkpointSession(session);
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
/**
|
|
162
|
+
* Calculate comprehensive coherence metrics
|
|
163
|
+
*/
|
|
164
|
+
async calculateCoherenceMetrics(session) {
|
|
165
|
+
const now = Date.now();
|
|
166
|
+
const duration = (now - session.metrics[0]?.startTime || now) / (1e3 * 60);
|
|
167
|
+
const recentOutputs = await this.getRecentAgentOutputs(session);
|
|
168
|
+
const outputQuality = this.assessOutputQuality(recentOutputs);
|
|
169
|
+
const contextRetention = this.assessContextRetention(recentOutputs, session.task);
|
|
170
|
+
const taskRelevance = this.assessTaskRelevance(recentOutputs, session.task);
|
|
171
|
+
const repetitionRate = this.calculateRepetitionRate(recentOutputs);
|
|
172
|
+
const divergenceRate = this.calculateDivergenceRate(recentOutputs, session.task);
|
|
173
|
+
const errorRate = this.calculateErrorRate(recentOutputs);
|
|
174
|
+
const progressRate = this.calculateProgressRate(session);
|
|
175
|
+
return {
|
|
176
|
+
sessionId: session.id,
|
|
177
|
+
startTime: session.metrics[0]?.startTime || now,
|
|
178
|
+
currentTime: now,
|
|
179
|
+
duration,
|
|
180
|
+
outputQuality,
|
|
181
|
+
contextRetention,
|
|
182
|
+
taskRelevance,
|
|
183
|
+
progressRate,
|
|
184
|
+
repetitionRate,
|
|
185
|
+
divergenceRate,
|
|
186
|
+
errorRate,
|
|
187
|
+
memoryUsage: await this.getMemoryUsage(session),
|
|
188
|
+
contextWindowUsage: await this.getContextWindowUsage(session),
|
|
189
|
+
stateCheckpoints: session.interventions.filter((i) => i.type === "checkpoint").length
|
|
190
|
+
};
|
|
191
|
+
}
|
|
192
|
+
/**
|
|
193
|
+
* Calculate overall coherence score
|
|
194
|
+
*/
|
|
195
|
+
calculateOverallCoherence(metrics) {
|
|
196
|
+
const weights = {
|
|
197
|
+
outputQuality: 0.3,
|
|
198
|
+
contextRetention: 0.25,
|
|
199
|
+
taskRelevance: 0.25,
|
|
200
|
+
repetitionPenalty: 0.1,
|
|
201
|
+
// penalty for repetition
|
|
202
|
+
divergencePenalty: 0.1
|
|
203
|
+
// penalty for divergence
|
|
204
|
+
};
|
|
205
|
+
const baseScore = metrics.outputQuality * weights.outputQuality + metrics.contextRetention * weights.contextRetention + metrics.taskRelevance * weights.taskRelevance;
|
|
206
|
+
const penalties = metrics.repetitionRate * weights.repetitionPenalty + metrics.divergenceRate * weights.divergencePenalty;
|
|
207
|
+
return Math.max(0, baseScore - penalties);
|
|
208
|
+
}
|
|
209
|
+
/**
|
|
210
|
+
* Intervene in a session to restore coherence
|
|
211
|
+
*/
|
|
212
|
+
async interventeInSession(session, reason, currentCoherence) {
|
|
213
|
+
logger.warn("Intervening in session due to coherence degradation", {
|
|
214
|
+
sessionId: session.id,
|
|
215
|
+
reason,
|
|
216
|
+
currentCoherence,
|
|
217
|
+
interventionCount: session.state.interventionCount
|
|
218
|
+
});
|
|
219
|
+
const intervention = {
|
|
220
|
+
timestamp: Date.now(),
|
|
221
|
+
type: session.config.refreshStrategy,
|
|
222
|
+
reason,
|
|
223
|
+
effectiveness: 0
|
|
224
|
+
// will be calculated later
|
|
225
|
+
};
|
|
226
|
+
switch (session.config.refreshStrategy) {
|
|
227
|
+
case "checkpoint":
|
|
228
|
+
await this.checkpointSession(session);
|
|
229
|
+
break;
|
|
230
|
+
case "context_refresh":
|
|
231
|
+
await this.refreshSessionContext(session);
|
|
232
|
+
break;
|
|
233
|
+
case "full_restart":
|
|
234
|
+
await this.restartSession(session);
|
|
235
|
+
break;
|
|
236
|
+
default:
|
|
237
|
+
await this.provideGuidance(session, reason);
|
|
238
|
+
intervention.type = "guidance";
|
|
239
|
+
}
|
|
240
|
+
session.interventions.push(intervention);
|
|
241
|
+
session.state.interventionCount++;
|
|
242
|
+
const previousStatus = session.state.status;
|
|
243
|
+
session.state.status = "degraded";
|
|
244
|
+
setTimeout(async () => {
|
|
245
|
+
const newMetrics = await this.calculateCoherenceMetrics(session);
|
|
246
|
+
const newCoherence = this.calculateOverallCoherence(newMetrics);
|
|
247
|
+
intervention.effectiveness = Math.max(0, newCoherence - currentCoherence);
|
|
248
|
+
if (newCoherence > session.config.coherenceThreshold) {
|
|
249
|
+
session.state.status = "active";
|
|
250
|
+
logger.info("Session coherence restored", {
|
|
251
|
+
sessionId: session.id,
|
|
252
|
+
newCoherence,
|
|
253
|
+
effectiveness: intervention.effectiveness
|
|
254
|
+
});
|
|
255
|
+
}
|
|
256
|
+
}, 12e4);
|
|
257
|
+
}
|
|
258
|
+
/**
|
|
259
|
+
* Create a checkpoint of session state
|
|
260
|
+
*/
|
|
261
|
+
async checkpointSession(session) {
|
|
262
|
+
const checkpointPath = path.join(
|
|
263
|
+
this.baseDir,
|
|
264
|
+
session.id,
|
|
265
|
+
`checkpoint-${Date.now()}.json`
|
|
266
|
+
);
|
|
267
|
+
const checkpointData = {
|
|
268
|
+
timestamp: Date.now(),
|
|
269
|
+
state: session.state,
|
|
270
|
+
recentMetrics: session.metrics.slice(-3),
|
|
271
|
+
currentPhase: session.state.currentPhase,
|
|
272
|
+
completedMilestones: session.state.completedMilestones,
|
|
273
|
+
// Include recent agent context
|
|
274
|
+
contextSummary: await this.generateContextSummary(session)
|
|
275
|
+
};
|
|
276
|
+
await fs.writeFile(checkpointPath, JSON.stringify(checkpointData, null, 2));
|
|
277
|
+
session.state.lastCheckpoint = Date.now();
|
|
278
|
+
logger.info("Session checkpoint created", {
|
|
279
|
+
sessionId: session.id,
|
|
280
|
+
checkpointPath
|
|
281
|
+
});
|
|
282
|
+
}
|
|
283
|
+
/**
|
|
284
|
+
* Refresh session context to restore coherence
|
|
285
|
+
*/
|
|
286
|
+
async refreshSessionContext(session) {
|
|
287
|
+
logger.info("Refreshing session context", { sessionId: session.id });
|
|
288
|
+
const refreshPrompt = await this.generateContextRefreshPrompt(session);
|
|
289
|
+
await this.applyContextRefresh(session, refreshPrompt);
|
|
290
|
+
session.state.refreshCount++;
|
|
291
|
+
}
|
|
292
|
+
/**
|
|
293
|
+
* Restart session from last good checkpoint
|
|
294
|
+
*/
|
|
295
|
+
async restartSession(session) {
|
|
296
|
+
logger.info("Restarting session from checkpoint", { sessionId: session.id });
|
|
297
|
+
const checkpoint = await this.loadLatestCheckpoint(session);
|
|
298
|
+
if (checkpoint) {
|
|
299
|
+
session.state = { ...checkpoint.state };
|
|
300
|
+
await this.restartAgentFromCheckpoint(session, checkpoint);
|
|
301
|
+
} else {
|
|
302
|
+
await this.restartAgentFromBeginning(session);
|
|
303
|
+
}
|
|
304
|
+
}
|
|
305
|
+
/**
|
|
306
|
+
* Initialize workspace for a coherence session
|
|
307
|
+
*/
|
|
308
|
+
async initializeSessionWorkspace(session) {
|
|
309
|
+
const sessionDir = path.join(this.baseDir, session.id);
|
|
310
|
+
await fs.mkdir(sessionDir, { recursive: true });
|
|
311
|
+
const manifest = {
|
|
312
|
+
sessionId: session.id,
|
|
313
|
+
agent: session.agent,
|
|
314
|
+
task: session.task,
|
|
315
|
+
config: session.config,
|
|
316
|
+
createdAt: Date.now()
|
|
317
|
+
};
|
|
318
|
+
await fs.writeFile(
|
|
319
|
+
path.join(sessionDir, "manifest.json"),
|
|
320
|
+
JSON.stringify(manifest, null, 2)
|
|
321
|
+
);
|
|
322
|
+
}
|
|
323
|
+
/**
|
|
324
|
+
* Launch the actual agent work session
|
|
325
|
+
*/
|
|
326
|
+
async launchAgentSession(session) {
|
|
327
|
+
const sessionDir = path.join(this.baseDir, session.id);
|
|
328
|
+
const ralph = new RalphStackMemoryBridge({
|
|
329
|
+
baseDir: sessionDir,
|
|
330
|
+
maxIterations: Math.ceil(session.config.maxDuration / 5),
|
|
331
|
+
// ~5 min per iteration
|
|
332
|
+
useStackMemory: true
|
|
333
|
+
});
|
|
334
|
+
await ralph.initialize({
|
|
335
|
+
task: this.buildExtendedCoherencePrompt(session),
|
|
336
|
+
criteria: session.task.breakpoints.join("\n")
|
|
337
|
+
});
|
|
338
|
+
ralph.run().catch((error) => {
|
|
339
|
+
logger.error("Extended coherence session failed", {
|
|
340
|
+
sessionId: session.id,
|
|
341
|
+
error: error.message
|
|
342
|
+
});
|
|
343
|
+
session.state.status = "failed";
|
|
344
|
+
});
|
|
345
|
+
}
|
|
346
|
+
/**
|
|
347
|
+
* Build prompt optimized for extended coherence
|
|
348
|
+
*/
|
|
349
|
+
buildExtendedCoherencePrompt(session) {
|
|
350
|
+
return `
|
|
351
|
+
# EXTENDED COHERENCE WORK SESSION
|
|
352
|
+
|
|
353
|
+
## Your Mission
|
|
354
|
+
${session.task.description}
|
|
355
|
+
|
|
356
|
+
## Session Parameters
|
|
357
|
+
- Estimated Duration: ${session.task.estimatedDuration} minutes
|
|
358
|
+
- Maximum Duration: ${session.config.maxDuration} minutes
|
|
359
|
+
- Coherence Threshold: ${session.config.coherenceThreshold * 100}%
|
|
360
|
+
|
|
361
|
+
## Coherence Guidelines
|
|
362
|
+
1. **Maintain Focus**: Stay on task throughout the entire session
|
|
363
|
+
2. **Track Progress**: Document incremental progress at each step
|
|
364
|
+
3. **Context Awareness**: Reference previous work and maintain consistency
|
|
365
|
+
4. **Quality Control**: Regularly assess your output quality
|
|
366
|
+
5. **Milestone Reporting**: Report when you reach natural breakpoints
|
|
367
|
+
|
|
368
|
+
## Breakpoints & Milestones
|
|
369
|
+
${session.task.breakpoints.map((bp, i) => `${i + 1}. ${bp}`).join("\n")}
|
|
370
|
+
|
|
371
|
+
## Extended Session Strategy
|
|
372
|
+
- Take regular checkpoint breaks (every ${session.config.checkpointInterval} minutes)
|
|
373
|
+
- Summarize your progress regularly
|
|
374
|
+
- Ask for context refresh if you feel you're losing focus
|
|
375
|
+
- Maintain awareness of the overall project goal
|
|
376
|
+
- Break complex tasks into smaller, manageable chunks
|
|
377
|
+
|
|
378
|
+
## Memory Palace (if enabled)
|
|
379
|
+
${session.config.enableMemoryPalace ? `
|
|
380
|
+
Use structured memory organization:
|
|
381
|
+
- **Project Context**: Overall goals and requirements
|
|
382
|
+
- **Current Status**: What's been completed and what's next
|
|
383
|
+
- **Working Memory**: Current task details and immediate context
|
|
384
|
+
- **Reference Memory**: Important patterns, decisions, and learnings
|
|
385
|
+
` : ""}
|
|
386
|
+
|
|
387
|
+
## Success Criteria
|
|
388
|
+
- Complete the task within the allocated time
|
|
389
|
+
- Maintain high output quality throughout
|
|
390
|
+
- Document progress and decisions clearly
|
|
391
|
+
- Stay coherent and focused for the entire session
|
|
392
|
+
|
|
393
|
+
Begin your extended coherence work session now.
|
|
394
|
+
`;
|
|
395
|
+
}
|
|
396
|
+
// Placeholder implementations for helper methods
|
|
397
|
+
async getRecentAgentOutputs(session) {
|
|
398
|
+
return [];
|
|
399
|
+
}
|
|
400
|
+
assessOutputQuality(outputs) {
|
|
401
|
+
return 0.8;
|
|
402
|
+
}
|
|
403
|
+
assessContextRetention(outputs, task) {
|
|
404
|
+
return 0.7;
|
|
405
|
+
}
|
|
406
|
+
assessTaskRelevance(outputs, task) {
|
|
407
|
+
return 0.9;
|
|
408
|
+
}
|
|
409
|
+
calculateRepetitionRate(outputs) {
|
|
410
|
+
return 0.1;
|
|
411
|
+
}
|
|
412
|
+
calculateDivergenceRate(outputs, task) {
|
|
413
|
+
return 0.05;
|
|
414
|
+
}
|
|
415
|
+
calculateErrorRate(outputs) {
|
|
416
|
+
return 0.02;
|
|
417
|
+
}
|
|
418
|
+
calculateProgressRate(session) {
|
|
419
|
+
return 2.5;
|
|
420
|
+
}
|
|
421
|
+
async getMemoryUsage(session) {
|
|
422
|
+
return 150;
|
|
423
|
+
}
|
|
424
|
+
async getContextWindowUsage(session) {
|
|
425
|
+
return 65;
|
|
426
|
+
}
|
|
427
|
+
generateBreakpoints(taskConfig) {
|
|
428
|
+
return [
|
|
429
|
+
"Initial analysis complete",
|
|
430
|
+
"Core implementation finished",
|
|
431
|
+
"Testing phase complete",
|
|
432
|
+
"Final review and cleanup done"
|
|
433
|
+
];
|
|
434
|
+
}
|
|
435
|
+
async generateContextSummary(session) {
|
|
436
|
+
return `Session ${session.id} context summary`;
|
|
437
|
+
}
|
|
438
|
+
async generateContextRefreshPrompt(session) {
|
|
439
|
+
return "Context refresh prompt";
|
|
440
|
+
}
|
|
441
|
+
async applyContextRefresh(session, prompt) {
|
|
442
|
+
}
|
|
443
|
+
async loadLatestCheckpoint(session) {
|
|
444
|
+
return null;
|
|
445
|
+
}
|
|
446
|
+
async restartAgentFromCheckpoint(session, checkpoint) {
|
|
447
|
+
}
|
|
448
|
+
async restartAgentFromBeginning(session) {
|
|
449
|
+
}
|
|
450
|
+
async provideGuidance(session, reason) {
|
|
451
|
+
}
|
|
452
|
+
/**
|
|
453
|
+
* Get extended coherence capabilities
|
|
454
|
+
*/
|
|
455
|
+
getCoherenceCapabilities() {
|
|
456
|
+
const activeSessions = Array.from(this.activeSessions.values());
|
|
457
|
+
return {
|
|
458
|
+
maxSessionDuration: Math.max(...activeSessions.map((s) => s.config.maxDuration)),
|
|
459
|
+
activeSessionCount: activeSessions.filter((s) => s.state.status === "active").length,
|
|
460
|
+
averageCoherence: activeSessions.reduce((sum, s) => {
|
|
461
|
+
const recent = s.metrics.slice(-1)[0];
|
|
462
|
+
return sum + (recent ? this.calculateOverallCoherence(recent) : 0);
|
|
463
|
+
}, 0) / activeSessions.length,
|
|
464
|
+
totalInterventions: activeSessions.reduce((sum, s) => sum + s.interventions.length, 0)
|
|
465
|
+
};
|
|
466
|
+
}
|
|
467
|
+
}
|
|
468
|
+
var extended_coherence_sessions_default = ExtendedCoherenceManager;
|
|
469
|
+
export {
|
|
470
|
+
ExtendedCoherenceManager,
|
|
471
|
+
extended_coherence_sessions_default as default
|
|
472
|
+
};
|
|
473
|
+
//# sourceMappingURL=extended-coherence-sessions.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../../src/integrations/ralph/patterns/extended-coherence-sessions.ts"],
|
|
4
|
+
"sourcesContent": ["/**\n * Extended Coherence Work Sessions Implementation\n * \n * Enables agents to work continuously for hours without performance degradation.\n * Maintains contextual awareness and high-quality output over extended periods.\n * \n * Addresses the challenge of AI agents losing coherence after short time periods.\n */\n\nimport { v4 as uuidv4 } from 'uuid';\nimport * as fs from 'fs/promises';\nimport * as path from 'path';\nimport { logger } from '../../../core/monitoring/logger.js';\nimport { RalphStackMemoryBridge } from '../bridge/ralph-stackmemory-bridge.js';\n\nexport interface CoherenceMetrics {\n sessionId: string;\n startTime: number;\n currentTime: number;\n duration: number; // in minutes\n \n // Performance indicators\n outputQuality: number; // 0-1 scale\n contextRetention: number; // 0-1 scale\n taskRelevance: number; // 0-1 scale\n progressRate: number; // tasks/hour\n \n // Coherence indicators\n repetitionRate: number; // how often agent repeats itself\n divergenceRate: number; // how often agent goes off-topic\n errorRate: number; // errors per iteration\n \n // State management\n memoryUsage: number; // MB\n contextWindowUsage: number; // percentage\n stateCheckpoints: number; // number of saves\n}\n\nexport interface CoherenceSession {\n id: string;\n agent: {\n id: string;\n role: string;\n model: string;\n };\n task: {\n description: string;\n complexity: 'low' | 'medium' | 'high' | 'very_high';\n estimatedDuration: number; // minutes\n breakpoints: string[]; // natural stopping points\n };\n \n // Session configuration\n config: {\n maxDuration: number; // minutes\n coherenceThreshold: number; // 0-1, below which to intervene\n checkpointInterval: number; // minutes\n refreshStrategy: 'none' | 'checkpoint' | 'context_refresh' | 'full_restart';\n \n // Advanced coherence features\n enableMemoryPalace: boolean; // structured memory system\n enableProgressTracking: boolean; // track incremental progress\n enableAutoRefresh: boolean; // automatic context refresh\n enableHealthMonitoring: boolean; // monitor agent health\n };\n \n // Runtime state\n state: {\n status: 'active' | 'paused' | 'degraded' | 'completed' | 'failed';\n currentPhase: string;\n completedMilestones: string[];\n lastCheckpoint: number;\n interventionCount: number;\n refreshCount: number;\n };\n \n // Historical data\n metrics: CoherenceMetrics[];\n interventions: {\n timestamp: number;\n type: 'checkpoint' | 'refresh' | 'restart' | 'guidance';\n reason: string;\n effectiveness: number; // 0-1\n }[];\n}\n\n/**\n * Extended Coherence Manager\n * Orchestrates long-running agent sessions with coherence preservation\n */\nexport class ExtendedCoherenceManager {\n private activeSessions: Map<string, CoherenceSession> = new Map();\n private baseDir: string;\n private monitoringInterval?: NodeJS.Timeout;\n private performanceHistory: Map<string, number[]> = new Map();\n \n constructor(baseDir: string = './.coherence-sessions') {\n this.baseDir = baseDir;\n }\n\n /**\n * Initialize the coherence management system\n */\n async initialize(): Promise<void> {\n await fs.mkdir(this.baseDir, { recursive: true });\n \n // Start monitoring loop\n this.monitoringInterval = setInterval(\n () => this.monitorActiveSessionsHealth(),\n 60000 // Check every minute\n );\n \n logger.info('Extended Coherence Manager initialized', {\n baseDir: this.baseDir,\n monitoringEnabled: true,\n });\n }\n\n /**\n * Start an extended coherence work session\n */\n async startCoherenceSession(\n agentConfig: { id: string; role: string; model: string },\n taskConfig: {\n description: string;\n complexity: 'low' | 'medium' | 'high' | 'very_high';\n estimatedDuration: number;\n breakpoints?: string[];\n },\n sessionConfig?: Partial<CoherenceSession['config']>\n ): Promise<string> {\n const sessionId = uuidv4();\n \n // Configure session based on task complexity\n const defaultConfig = this.generateConfigForComplexity(taskConfig.complexity);\n const config = { ...defaultConfig, ...sessionConfig };\n \n const session: CoherenceSession = {\n id: sessionId,\n agent: agentConfig,\n task: {\n ...taskConfig,\n breakpoints: taskConfig.breakpoints || this.generateBreakpoints(taskConfig),\n },\n config,\n state: {\n status: 'active',\n currentPhase: 'initialization',\n completedMilestones: [],\n lastCheckpoint: Date.now(),\n interventionCount: 0,\n refreshCount: 0,\n },\n metrics: [],\n interventions: [],\n };\n\n this.activeSessions.set(sessionId, session);\n \n // Initialize session workspace\n await this.initializeSessionWorkspace(session);\n \n // Start the actual agent work session\n await this.launchAgentSession(session);\n \n logger.info('Extended coherence session started', {\n sessionId,\n agent: agentConfig.role,\n estimatedDuration: taskConfig.estimatedDuration,\n maxDuration: config.maxDuration,\n });\n\n return sessionId;\n }\n\n /**\n * Generate configuration optimized for task complexity\n */\n private generateConfigForComplexity(\n complexity: 'low' | 'medium' | 'high' | 'very_high'\n ): CoherenceSession['config'] {\n const configs = {\n low: {\n maxDuration: 60, // 1 hour\n coherenceThreshold: 0.7,\n checkpointInterval: 15, // 15 minutes\n refreshStrategy: 'checkpoint' as const,\n enableMemoryPalace: false,\n enableProgressTracking: true,\n enableAutoRefresh: false,\n enableHealthMonitoring: true,\n },\n medium: {\n maxDuration: 180, // 3 hours\n coherenceThreshold: 0.8,\n checkpointInterval: 10, // 10 minutes\n refreshStrategy: 'context_refresh' as const,\n enableMemoryPalace: true,\n enableProgressTracking: true,\n enableAutoRefresh: true,\n enableHealthMonitoring: true,\n },\n high: {\n maxDuration: 360, // 6 hours\n coherenceThreshold: 0.85,\n checkpointInterval: 8, // 8 minutes\n refreshStrategy: 'context_refresh' as const,\n enableMemoryPalace: true,\n enableProgressTracking: true,\n enableAutoRefresh: true,\n enableHealthMonitoring: true,\n },\n very_high: {\n maxDuration: 720, // 12 hours\n coherenceThreshold: 0.9,\n checkpointInterval: 5, // 5 minutes\n refreshStrategy: 'full_restart' as const,\n enableMemoryPalace: true,\n enableProgressTracking: true,\n enableAutoRefresh: true,\n enableHealthMonitoring: true,\n },\n };\n\n return configs[complexity];\n }\n\n /**\n * Monitor active sessions for coherence degradation\n */\n private async monitorActiveSessionsHealth(): Promise<void> {\n for (const [sessionId, session] of this.activeSessions) {\n if (session.state.status === 'active') {\n await this.assessSessionCoherence(session);\n }\n }\n }\n\n /**\n * Assess session coherence and intervene if necessary\n */\n private async assessSessionCoherence(session: CoherenceSession): Promise<void> {\n const metrics = await this.calculateCoherenceMetrics(session);\n session.metrics.push(metrics);\n \n // Keep only last 10 metrics for performance\n if (session.metrics.length > 10) {\n session.metrics.shift();\n }\n\n const overallCoherence = this.calculateOverallCoherence(metrics);\n \n logger.debug('Session coherence assessment', {\n sessionId: session.id,\n coherence: overallCoherence,\n threshold: session.config.coherenceThreshold,\n duration: metrics.duration,\n });\n\n // Intervene if coherence drops below threshold\n if (overallCoherence < session.config.coherenceThreshold) {\n await this.interventeInSession(session, 'coherence_degradation', overallCoherence);\n }\n \n // Check if checkpoint is due\n const timeSinceCheckpoint = Date.now() - session.state.lastCheckpoint;\n const checkpointDue = timeSinceCheckpoint > (session.config.checkpointInterval * 60 * 1000);\n \n if (checkpointDue) {\n await this.checkpointSession(session);\n }\n }\n\n /**\n * Calculate comprehensive coherence metrics\n */\n private async calculateCoherenceMetrics(session: CoherenceSession): Promise<CoherenceMetrics> {\n const now = Date.now();\n const duration = (now - session.metrics[0]?.startTime || now) / (1000 * 60); // minutes\n \n // Load recent agent outputs for analysis\n const recentOutputs = await this.getRecentAgentOutputs(session);\n \n // Calculate various coherence indicators\n const outputQuality = this.assessOutputQuality(recentOutputs);\n const contextRetention = this.assessContextRetention(recentOutputs, session.task);\n const taskRelevance = this.assessTaskRelevance(recentOutputs, session.task);\n const repetitionRate = this.calculateRepetitionRate(recentOutputs);\n const divergenceRate = this.calculateDivergenceRate(recentOutputs, session.task);\n const errorRate = this.calculateErrorRate(recentOutputs);\n const progressRate = this.calculateProgressRate(session);\n\n return {\n sessionId: session.id,\n startTime: session.metrics[0]?.startTime || now,\n currentTime: now,\n duration,\n outputQuality,\n contextRetention,\n taskRelevance,\n progressRate,\n repetitionRate,\n divergenceRate,\n errorRate,\n memoryUsage: await this.getMemoryUsage(session),\n contextWindowUsage: await this.getContextWindowUsage(session),\n stateCheckpoints: session.interventions.filter(i => i.type === 'checkpoint').length,\n };\n }\n\n /**\n * Calculate overall coherence score\n */\n private calculateOverallCoherence(metrics: CoherenceMetrics): number {\n // Weighted average of coherence indicators\n const weights = {\n outputQuality: 0.3,\n contextRetention: 0.25,\n taskRelevance: 0.25,\n repetitionPenalty: 0.1, // penalty for repetition\n divergencePenalty: 0.1, // penalty for divergence\n };\n\n const baseScore = \n metrics.outputQuality * weights.outputQuality +\n metrics.contextRetention * weights.contextRetention +\n metrics.taskRelevance * weights.taskRelevance;\n \n const penalties = \n metrics.repetitionRate * weights.repetitionPenalty +\n metrics.divergenceRate * weights.divergencePenalty;\n\n return Math.max(0, baseScore - penalties);\n }\n\n /**\n * Intervene in a session to restore coherence\n */\n private async interventeInSession(\n session: CoherenceSession,\n reason: string,\n currentCoherence: number\n ): Promise<void> {\n logger.warn('Intervening in session due to coherence degradation', {\n sessionId: session.id,\n reason,\n currentCoherence,\n interventionCount: session.state.interventionCount,\n });\n\n const intervention = {\n timestamp: Date.now(),\n type: session.config.refreshStrategy,\n reason,\n effectiveness: 0, // will be calculated later\n };\n\n switch (session.config.refreshStrategy) {\n case 'checkpoint':\n await this.checkpointSession(session);\n break;\n \n case 'context_refresh':\n await this.refreshSessionContext(session);\n break;\n \n case 'full_restart':\n await this.restartSession(session);\n break;\n \n default:\n await this.provideGuidance(session, reason);\n intervention.type = 'guidance';\n }\n\n session.interventions.push(intervention);\n session.state.interventionCount++;\n \n // Mark session as temporarily degraded\n const previousStatus = session.state.status;\n session.state.status = 'degraded';\n \n // Schedule restoration check\n setTimeout(async () => {\n const newMetrics = await this.calculateCoherenceMetrics(session);\n const newCoherence = this.calculateOverallCoherence(newMetrics);\n \n // Calculate intervention effectiveness\n intervention.effectiveness = Math.max(0, newCoherence - currentCoherence);\n \n if (newCoherence > session.config.coherenceThreshold) {\n session.state.status = 'active';\n logger.info('Session coherence restored', {\n sessionId: session.id,\n newCoherence,\n effectiveness: intervention.effectiveness,\n });\n }\n }, 120000); // Check after 2 minutes\n }\n\n /**\n * Create a checkpoint of session state\n */\n private async checkpointSession(session: CoherenceSession): Promise<void> {\n const checkpointPath = path.join(\n this.baseDir,\n session.id,\n `checkpoint-${Date.now()}.json`\n );\n \n const checkpointData = {\n timestamp: Date.now(),\n state: session.state,\n recentMetrics: session.metrics.slice(-3),\n currentPhase: session.state.currentPhase,\n completedMilestones: session.state.completedMilestones,\n // Include recent agent context\n contextSummary: await this.generateContextSummary(session),\n };\n\n await fs.writeFile(checkpointPath, JSON.stringify(checkpointData, null, 2));\n session.state.lastCheckpoint = Date.now();\n \n logger.info('Session checkpoint created', {\n sessionId: session.id,\n checkpointPath,\n });\n }\n\n /**\n * Refresh session context to restore coherence\n */\n private async refreshSessionContext(session: CoherenceSession): Promise<void> {\n logger.info('Refreshing session context', { sessionId: session.id });\n \n // Generate context refresh prompt\n const refreshPrompt = await this.generateContextRefreshPrompt(session);\n \n // Apply refresh to the running agent\n await this.applyContextRefresh(session, refreshPrompt);\n \n session.state.refreshCount++;\n }\n\n /**\n * Restart session from last good checkpoint\n */\n private async restartSession(session: CoherenceSession): Promise<void> {\n logger.info('Restarting session from checkpoint', { sessionId: session.id });\n \n // Load last checkpoint\n const checkpoint = await this.loadLatestCheckpoint(session);\n \n if (checkpoint) {\n // Restore session state\n session.state = { ...checkpoint.state };\n \n // Restart agent with checkpoint context\n await this.restartAgentFromCheckpoint(session, checkpoint);\n } else {\n // No checkpoint available, restart from beginning\n await this.restartAgentFromBeginning(session);\n }\n }\n\n /**\n * Initialize workspace for a coherence session\n */\n private async initializeSessionWorkspace(session: CoherenceSession): Promise<void> {\n const sessionDir = path.join(this.baseDir, session.id);\n await fs.mkdir(sessionDir, { recursive: true });\n \n // Create session manifest\n const manifest = {\n sessionId: session.id,\n agent: session.agent,\n task: session.task,\n config: session.config,\n createdAt: Date.now(),\n };\n \n await fs.writeFile(\n path.join(sessionDir, 'manifest.json'),\n JSON.stringify(manifest, null, 2)\n );\n }\n\n /**\n * Launch the actual agent work session\n */\n private async launchAgentSession(session: CoherenceSession): Promise<void> {\n const sessionDir = path.join(this.baseDir, session.id);\n \n // Create enhanced Ralph bridge for extended sessions\n const ralph = new RalphStackMemoryBridge({\n baseDir: sessionDir,\n maxIterations: Math.ceil(session.config.maxDuration / 5), // ~5 min per iteration\n useStackMemory: true,\n });\n\n // Configure for extended coherence\n await ralph.initialize({\n task: this.buildExtendedCoherencePrompt(session),\n criteria: session.task.breakpoints.join('\\n'),\n });\n\n // Start the session (non-blocking)\n ralph.run().catch(error => {\n logger.error('Extended coherence session failed', {\n sessionId: session.id,\n error: error.message,\n });\n session.state.status = 'failed';\n });\n }\n\n /**\n * Build prompt optimized for extended coherence\n */\n private buildExtendedCoherencePrompt(session: CoherenceSession): string {\n return `\n# EXTENDED COHERENCE WORK SESSION\n\n## Your Mission\n${session.task.description}\n\n## Session Parameters\n- Estimated Duration: ${session.task.estimatedDuration} minutes\n- Maximum Duration: ${session.config.maxDuration} minutes \n- Coherence Threshold: ${session.config.coherenceThreshold * 100}%\n\n## Coherence Guidelines\n1. **Maintain Focus**: Stay on task throughout the entire session\n2. **Track Progress**: Document incremental progress at each step\n3. **Context Awareness**: Reference previous work and maintain consistency\n4. **Quality Control**: Regularly assess your output quality\n5. **Milestone Reporting**: Report when you reach natural breakpoints\n\n## Breakpoints & Milestones\n${session.task.breakpoints.map((bp, i) => `${i + 1}. ${bp}`).join('\\n')}\n\n## Extended Session Strategy\n- Take regular checkpoint breaks (every ${session.config.checkpointInterval} minutes)\n- Summarize your progress regularly\n- Ask for context refresh if you feel you're losing focus\n- Maintain awareness of the overall project goal\n- Break complex tasks into smaller, manageable chunks\n\n## Memory Palace (if enabled)\n${session.config.enableMemoryPalace ? `\nUse structured memory organization:\n- **Project Context**: Overall goals and requirements\n- **Current Status**: What's been completed and what's next\n- **Working Memory**: Current task details and immediate context\n- **Reference Memory**: Important patterns, decisions, and learnings\n` : ''}\n\n## Success Criteria\n- Complete the task within the allocated time\n- Maintain high output quality throughout\n- Document progress and decisions clearly\n- Stay coherent and focused for the entire session\n\nBegin your extended coherence work session now.\n `;\n }\n\n // Placeholder implementations for helper methods\n private async getRecentAgentOutputs(session: CoherenceSession): Promise<any[]> {\n // Implementation to retrieve recent agent outputs\n return [];\n }\n\n private assessOutputQuality(outputs: any[]): number {\n // Analyze output quality metrics\n return 0.8; // placeholder\n }\n\n private assessContextRetention(outputs: any[], task: any): number {\n // Measure how well agent retains context\n return 0.7; // placeholder \n }\n\n private assessTaskRelevance(outputs: any[], task: any): number {\n // Measure relevance to original task\n return 0.9; // placeholder\n }\n\n private calculateRepetitionRate(outputs: any[]): number {\n // Calculate how often agent repeats itself\n return 0.1; // placeholder\n }\n\n private calculateDivergenceRate(outputs: any[], task: any): number {\n // Calculate how often agent goes off-topic\n return 0.05; // placeholder\n }\n\n private calculateErrorRate(outputs: any[]): number {\n // Calculate errors per iteration\n return 0.02; // placeholder\n }\n\n private calculateProgressRate(session: CoherenceSession): number {\n // Calculate tasks completed per hour\n return 2.5; // placeholder\n }\n\n private async getMemoryUsage(session: CoherenceSession): Promise<number> {\n // Get current memory usage\n return 150; // MB placeholder\n }\n\n private async getContextWindowUsage(session: CoherenceSession): Promise<number> {\n // Get context window usage percentage\n return 65; // placeholder\n }\n\n private generateBreakpoints(taskConfig: any): string[] {\n // Generate natural stopping points based on task\n return [\n 'Initial analysis complete',\n 'Core implementation finished',\n 'Testing phase complete',\n 'Final review and cleanup done',\n ];\n }\n\n private async generateContextSummary(session: CoherenceSession): Promise<string> {\n return `Session ${session.id} context summary`;\n }\n\n private async generateContextRefreshPrompt(session: CoherenceSession): Promise<string> {\n return 'Context refresh prompt';\n }\n\n private async applyContextRefresh(session: CoherenceSession, prompt: string): Promise<void> {\n // Apply context refresh to running agent\n }\n\n private async loadLatestCheckpoint(session: CoherenceSession): Promise<any> {\n // Load most recent checkpoint\n return null;\n }\n\n private async restartAgentFromCheckpoint(session: CoherenceSession, checkpoint: any): Promise<void> {\n // Restart agent with checkpoint state\n }\n\n private async restartAgentFromBeginning(session: CoherenceSession): Promise<void> {\n // Restart agent from the beginning\n }\n\n private async provideGuidance(session: CoherenceSession, reason: string): Promise<void> {\n // Provide guidance to help agent refocus\n }\n\n /**\n * Get extended coherence capabilities\n */\n getCoherenceCapabilities(): {\n maxSessionDuration: number;\n activeSessionCount: number;\n averageCoherence: number;\n totalInterventions: number;\n } {\n const activeSessions = Array.from(this.activeSessions.values());\n \n return {\n maxSessionDuration: Math.max(...activeSessions.map(s => s.config.maxDuration)),\n activeSessionCount: activeSessions.filter(s => s.state.status === 'active').length,\n averageCoherence: activeSessions.reduce((sum, s) => {\n const recent = s.metrics.slice(-1)[0];\n return sum + (recent ? this.calculateOverallCoherence(recent) : 0);\n }, 0) / activeSessions.length,\n totalInterventions: activeSessions.reduce((sum, s) => sum + s.interventions.length, 0),\n };\n }\n}\n\nexport default ExtendedCoherenceManager;"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|