@stackmemoryai/stackmemory 0.5.59 → 0.5.61
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +105 -1
- package/dist/src/cli/claude-sm.js +130 -50
- package/dist/src/cli/claude-sm.js.map +2 -2
- package/dist/src/cli/index.js +18 -3
- package/dist/src/cli/index.js.map +3 -3
- package/dist/src/core/extensions/custom-tools.js +567 -0
- package/dist/src/core/extensions/custom-tools.js.map +7 -0
- package/dist/src/core/extensions/index.js +55 -0
- package/dist/src/core/extensions/index.js.map +7 -0
- package/dist/src/core/extensions/loader.js +709 -0
- package/dist/src/core/extensions/loader.js.map +7 -0
- package/dist/src/core/extensions/plugin-system.js +506 -0
- package/dist/src/core/extensions/plugin-system.js.map +7 -0
- package/dist/src/core/extensions/provider-adapter.js +617 -0
- package/dist/src/core/extensions/provider-adapter.js.map +7 -0
- package/dist/src/core/extensions/sandbox-runtime.js +664 -0
- package/dist/src/core/extensions/sandbox-runtime.js.map +7 -0
- package/dist/src/core/storage/chromadb-adapter.js +32 -6
- package/dist/src/core/storage/chromadb-adapter.js.map +2 -2
- package/dist/src/skills/repo-ingestion-skill.js +35 -12
- package/dist/src/skills/repo-ingestion-skill.js.map +2 -2
- package/package.json +11 -7
- package/scripts/background-sync-manager.js +145 -83
- package/scripts/claude-sm-autostart.js +17 -12
- package/scripts/gepa/README.md +275 -0
- package/scripts/gepa/config.json +53 -0
- package/scripts/gepa/evals/coding-tasks.jsonl +5 -0
- package/scripts/gepa/evals/fixtures/buggy-loop.js +18 -0
- package/scripts/gepa/evals/fixtures/callback-hell.js +53 -0
- package/scripts/gepa/generations/gen-000/baseline.md +124 -0
- package/scripts/gepa/hooks/auto-optimize.js +494 -0
- package/scripts/gepa/hooks/eval-tracker.js +203 -0
- package/scripts/gepa/hooks/reflect.js +311 -0
- package/scripts/gepa/optimize.js +611 -0
- package/scripts/gepa/state.json +14 -0
- package/scripts/test-pre-publish-quick.sh +1 -1
- package/dist/agents/core/agent-task-manager.js +0 -527
- package/dist/agents/core/agent-task-manager.js.map +0 -7
- package/dist/agents/testing-agent.js +0 -614
- package/dist/agents/testing-agent.js.map +0 -7
- package/dist/agents/verifiers/base-verifier.js +0 -133
- package/dist/agents/verifiers/base-verifier.js.map +0 -7
- package/dist/agents/verifiers/formatter-verifier.js +0 -130
- package/dist/agents/verifiers/formatter-verifier.js.map +0 -7
- package/dist/agents/verifiers/llm-judge.js +0 -252
- package/dist/agents/verifiers/llm-judge.js.map +0 -7
- package/dist/cli/auto-detect.js +0 -321
- package/dist/cli/auto-detect.js.map +0 -7
- package/dist/cli/browser-test.js +0 -33
- package/dist/cli/browser-test.js.map +0 -7
- package/dist/cli/claude-sm-danger.js +0 -21
- package/dist/cli/claude-sm-danger.js.map +0 -7
- package/dist/cli/claude-sm.js +0 -1156
- package/dist/cli/claude-sm.js.map +0 -7
- package/dist/cli/codex-sm-danger.js +0 -21
- package/dist/cli/codex-sm-danger.js.map +0 -7
- package/dist/cli/codex-sm.js +0 -349
- package/dist/cli/codex-sm.js.map +0 -7
- package/dist/cli/commands/api.js +0 -232
- package/dist/cli/commands/api.js.map +0 -7
- package/dist/cli/commands/auto-background.js +0 -180
- package/dist/cli/commands/auto-background.js.map +0 -7
- package/dist/cli/commands/cleanup-processes.js +0 -68
- package/dist/cli/commands/cleanup-processes.js.map +0 -7
- package/dist/cli/commands/clear.js +0 -202
- package/dist/cli/commands/clear.js.map +0 -7
- package/dist/cli/commands/config.js +0 -445
- package/dist/cli/commands/config.js.map +0 -7
- package/dist/cli/commands/context-rehydrate.js +0 -751
- package/dist/cli/commands/context-rehydrate.js.map +0 -7
- package/dist/cli/commands/context.js +0 -343
- package/dist/cli/commands/context.js.map +0 -7
- package/dist/cli/commands/daemon.js +0 -392
- package/dist/cli/commands/daemon.js.map +0 -7
- package/dist/cli/commands/dashboard.js +0 -210
- package/dist/cli/commands/dashboard.js.map +0 -7
- package/dist/cli/commands/db.js +0 -147
- package/dist/cli/commands/db.js.map +0 -7
- package/dist/cli/commands/decision.js +0 -266
- package/dist/cli/commands/decision.js.map +0 -7
- package/dist/cli/commands/discovery.js +0 -279
- package/dist/cli/commands/discovery.js.map +0 -7
- package/dist/cli/commands/handoff.js +0 -624
- package/dist/cli/commands/handoff.js.map +0 -7
- package/dist/cli/commands/hooks.js +0 -298
- package/dist/cli/commands/hooks.js.map +0 -7
- package/dist/cli/commands/linear-unified.js +0 -353
- package/dist/cli/commands/linear-unified.js.map +0 -7
- package/dist/cli/commands/linear.js +0 -529
- package/dist/cli/commands/linear.js.map +0 -7
- package/dist/cli/commands/log.js +0 -169
- package/dist/cli/commands/log.js.map +0 -7
- package/dist/cli/commands/login.js +0 -172
- package/dist/cli/commands/login.js.map +0 -7
- package/dist/cli/commands/migrate.js +0 -240
- package/dist/cli/commands/migrate.js.map +0 -7
- package/dist/cli/commands/model.js +0 -533
- package/dist/cli/commands/model.js.map +0 -7
- package/dist/cli/commands/monitor.js +0 -313
- package/dist/cli/commands/monitor.js.map +0 -7
- package/dist/cli/commands/onboard.js +0 -536
- package/dist/cli/commands/onboard.js.map +0 -7
- package/dist/cli/commands/projects.js +0 -199
- package/dist/cli/commands/projects.js.map +0 -7
- package/dist/cli/commands/quality.js +0 -413
- package/dist/cli/commands/quality.js.map +0 -7
- package/dist/cli/commands/ralph.js +0 -909
- package/dist/cli/commands/ralph.js.map +0 -7
- package/dist/cli/commands/retrieval.js +0 -248
- package/dist/cli/commands/retrieval.js.map +0 -7
- package/dist/cli/commands/search.js +0 -173
- package/dist/cli/commands/search.js.map +0 -7
- package/dist/cli/commands/service.js +0 -749
- package/dist/cli/commands/service.js.map +0 -7
- package/dist/cli/commands/session.js +0 -200
- package/dist/cli/commands/session.js.map +0 -7
- package/dist/cli/commands/settings.js +0 -306
- package/dist/cli/commands/settings.js.map +0 -7
- package/dist/cli/commands/setup.js +0 -701
- package/dist/cli/commands/setup.js.map +0 -7
- package/dist/cli/commands/shell.js +0 -249
- package/dist/cli/commands/shell.js.map +0 -7
- package/dist/cli/commands/signup.js +0 -50
- package/dist/cli/commands/signup.js.map +0 -7
- package/dist/cli/commands/skills.js +0 -470
- package/dist/cli/commands/skills.js.map +0 -7
- package/dist/cli/commands/sms-notify.js +0 -795
- package/dist/cli/commands/sms-notify.js.map +0 -7
- package/dist/cli/commands/storage-tier.js +0 -183
- package/dist/cli/commands/storage-tier.js.map +0 -7
- package/dist/cli/commands/storage.js +0 -360
- package/dist/cli/commands/storage.js.map +0 -7
- package/dist/cli/commands/sweep.js +0 -249
- package/dist/cli/commands/sweep.js.map +0 -7
- package/dist/cli/commands/tasks.js +0 -213
- package/dist/cli/commands/tasks.js.map +0 -7
- package/dist/cli/commands/test.js +0 -286
- package/dist/cli/commands/test.js.map +0 -7
- package/dist/cli/commands/workflow.js +0 -142
- package/dist/cli/commands/workflow.js.map +0 -7
- package/dist/cli/commands/worktree.js +0 -319
- package/dist/cli/commands/worktree.js.map +0 -7
- package/dist/cli/index.js +0 -594
- package/dist/cli/index.js.map +0 -7
- package/dist/cli/opencode-sm.js +0 -448
- package/dist/cli/opencode-sm.js.map +0 -7
- package/dist/cli/utils/viewer.js +0 -96
- package/dist/cli/utils/viewer.js.map +0 -7
- package/dist/core/analytics/team-analytics.js +0 -378
- package/dist/core/analytics/team-analytics.js.map +0 -7
- package/dist/core/config/config-manager.js +0 -398
- package/dist/core/config/config-manager.js.map +0 -7
- package/dist/core/config/feature-flags.js +0 -76
- package/dist/core/config/feature-flags.js.map +0 -7
- package/dist/core/config/storage-config.js +0 -115
- package/dist/core/config/storage-config.js.map +0 -7
- package/dist/core/config/types.js +0 -144
- package/dist/core/config/types.js.map +0 -7
- package/dist/core/context/auto-context.js +0 -80
- package/dist/core/context/auto-context.js.map +0 -7
- package/dist/core/context/dual-stack-manager.js +0 -870
- package/dist/core/context/dual-stack-manager.js.map +0 -7
- package/dist/core/context/enhanced-rehydration.js +0 -994
- package/dist/core/context/enhanced-rehydration.js.map +0 -7
- package/dist/core/context/frame-database.js +0 -479
- package/dist/core/context/frame-database.js.map +0 -7
- package/dist/core/context/frame-digest.js +0 -250
- package/dist/core/context/frame-digest.js.map +0 -7
- package/dist/core/context/frame-handoff-manager.js +0 -778
- package/dist/core/context/frame-handoff-manager.js.map +0 -7
- package/dist/core/context/frame-lifecycle-hooks.js +0 -119
- package/dist/core/context/frame-lifecycle-hooks.js.map +0 -7
- package/dist/core/context/frame-manager.js +0 -1069
- package/dist/core/context/frame-manager.js.map +0 -7
- package/dist/core/context/frame-recovery.js +0 -302
- package/dist/core/context/frame-recovery.js.map +0 -7
- package/dist/core/context/frame-stack.js +0 -314
- package/dist/core/context/frame-stack.js.map +0 -7
- package/dist/core/context/frame-types.js +0 -5
- package/dist/core/context/frame-types.js.map +0 -7
- package/dist/core/context/incremental-gc.js +0 -290
- package/dist/core/context/incremental-gc.js.map +0 -7
- package/dist/core/context/index.js +0 -25
- package/dist/core/context/index.js.map +0 -7
- package/dist/core/context/model-aware-compaction.js +0 -623
- package/dist/core/context/model-aware-compaction.js.map +0 -7
- package/dist/core/context/permission-manager.js +0 -185
- package/dist/core/context/permission-manager.js.map +0 -7
- package/dist/core/context/recursive-context-manager.js +0 -592
- package/dist/core/context/recursive-context-manager.js.map +0 -7
- package/dist/core/context/refactored-frame-manager.js +0 -754
- package/dist/core/context/refactored-frame-manager.js.map +0 -7
- package/dist/core/context/shared-context-layer.js +0 -621
- package/dist/core/context/shared-context-layer.js.map +0 -7
- package/dist/core/context/stack-merge-resolver.js +0 -749
- package/dist/core/context/stack-merge-resolver.js.map +0 -7
- package/dist/core/context/validation.js +0 -130
- package/dist/core/context/validation.js.map +0 -7
- package/dist/core/database/batch-operations.js +0 -384
- package/dist/core/database/batch-operations.js.map +0 -7
- package/dist/core/database/connection-pool.js +0 -330
- package/dist/core/database/connection-pool.js.map +0 -7
- package/dist/core/database/database-adapter.js +0 -60
- package/dist/core/database/database-adapter.js.map +0 -7
- package/dist/core/database/migration-manager.js +0 -614
- package/dist/core/database/migration-manager.js.map +0 -7
- package/dist/core/database/paradedb-adapter.js +0 -990
- package/dist/core/database/paradedb-adapter.js.map +0 -7
- package/dist/core/database/query-cache.js +0 -298
- package/dist/core/database/query-cache.js.map +0 -7
- package/dist/core/database/query-router.js +0 -430
- package/dist/core/database/query-router.js.map +0 -7
- package/dist/core/database/sqlite-adapter.js +0 -738
- package/dist/core/database/sqlite-adapter.js.map +0 -7
- package/dist/core/digest/enhanced-hybrid-digest.js +0 -277
- package/dist/core/digest/enhanced-hybrid-digest.js.map +0 -7
- package/dist/core/digest/frame-digest-integration.js +0 -176
- package/dist/core/digest/frame-digest-integration.js.map +0 -7
- package/dist/core/digest/hybrid-digest-generator.js +0 -553
- package/dist/core/digest/hybrid-digest-generator.js.map +0 -7
- package/dist/core/digest/index.js +0 -9
- package/dist/core/digest/index.js.map +0 -7
- package/dist/core/digest/types.js +0 -25
- package/dist/core/digest/types.js.map +0 -7
- package/dist/core/errors/error-utils.js +0 -208
- package/dist/core/errors/error-utils.js.map +0 -7
- package/dist/core/errors/index.js +0 -521
- package/dist/core/errors/index.js.map +0 -7
- package/dist/core/errors/recovery.js +0 -269
- package/dist/core/errors/recovery.js.map +0 -7
- package/dist/core/execution/parallel-executor.js +0 -258
- package/dist/core/execution/parallel-executor.js.map +0 -7
- package/dist/core/frame/workflow-templates.js +0 -319
- package/dist/core/frame/workflow-templates.js.map +0 -7
- package/dist/core/merge/conflict-detector.js +0 -431
- package/dist/core/merge/conflict-detector.js.map +0 -7
- package/dist/core/merge/index.js +0 -9
- package/dist/core/merge/index.js.map +0 -7
- package/dist/core/merge/resolution-engine.js +0 -558
- package/dist/core/merge/resolution-engine.js.map +0 -7
- package/dist/core/merge/stack-diff.js +0 -532
- package/dist/core/merge/stack-diff.js.map +0 -7
- package/dist/core/merge/unified-merge-resolver.js +0 -303
- package/dist/core/merge/unified-merge-resolver.js.map +0 -7
- package/dist/core/models/fallback-monitor.js +0 -232
- package/dist/core/models/fallback-monitor.js.map +0 -7
- package/dist/core/models/model-router.js +0 -340
- package/dist/core/models/model-router.js.map +0 -7
- package/dist/core/monitoring/error-handler.js +0 -49
- package/dist/core/monitoring/error-handler.js.map +0 -7
- package/dist/core/monitoring/logger.js +0 -202
- package/dist/core/monitoring/logger.js.map +0 -7
- package/dist/core/monitoring/metrics.js +0 -172
- package/dist/core/monitoring/metrics.js.map +0 -7
- package/dist/core/monitoring/progress-tracker.js +0 -189
- package/dist/core/monitoring/progress-tracker.js.map +0 -7
- package/dist/core/monitoring/session-monitor.js +0 -300
- package/dist/core/monitoring/session-monitor.js.map +0 -7
- package/dist/core/performance/context-cache.js +0 -273
- package/dist/core/performance/context-cache.js.map +0 -7
- package/dist/core/performance/index.js +0 -11
- package/dist/core/performance/index.js.map +0 -7
- package/dist/core/performance/lazy-context-loader.js +0 -327
- package/dist/core/performance/lazy-context-loader.js.map +0 -7
- package/dist/core/performance/monitor.js +0 -221
- package/dist/core/performance/monitor.js.map +0 -7
- package/dist/core/performance/optimized-frame-context.js +0 -345
- package/dist/core/performance/optimized-frame-context.js.map +0 -7
- package/dist/core/performance/performance-benchmark.js +0 -277
- package/dist/core/performance/performance-benchmark.js.map +0 -7
- package/dist/core/performance/performance-profiler.js +0 -370
- package/dist/core/performance/performance-profiler.js.map +0 -7
- package/dist/core/performance/streaming-jsonl-parser.js +0 -195
- package/dist/core/performance/streaming-jsonl-parser.js.map +0 -7
- package/dist/core/persistence/postgres-adapter.js +0 -349
- package/dist/core/persistence/postgres-adapter.js.map +0 -7
- package/dist/core/projects/project-isolation.js +0 -201
- package/dist/core/projects/project-isolation.js.map +0 -7
- package/dist/core/projects/project-manager.js +0 -697
- package/dist/core/projects/project-manager.js.map +0 -7
- package/dist/core/query/query-parser.js +0 -370
- package/dist/core/query/query-parser.js.map +0 -7
- package/dist/core/query/query-templates.js +0 -321
- package/dist/core/query/query-templates.js.map +0 -7
- package/dist/core/retrieval/context-retriever.js +0 -479
- package/dist/core/retrieval/context-retriever.js.map +0 -7
- package/dist/core/retrieval/graph-retrieval.js +0 -662
- package/dist/core/retrieval/graph-retrieval.js.map +0 -7
- package/dist/core/retrieval/hierarchical-retrieval.js +0 -656
- package/dist/core/retrieval/hierarchical-retrieval.js.map +0 -7
- package/dist/core/retrieval/index.js +0 -8
- package/dist/core/retrieval/index.js.map +0 -7
- package/dist/core/retrieval/llm-context-retrieval.js +0 -613
- package/dist/core/retrieval/llm-context-retrieval.js.map +0 -7
- package/dist/core/retrieval/llm-provider.js +0 -151
- package/dist/core/retrieval/llm-provider.js.map +0 -7
- package/dist/core/retrieval/retrieval-audit.js +0 -236
- package/dist/core/retrieval/retrieval-audit.js.map +0 -7
- package/dist/core/retrieval/retrieval-benchmarks.js +0 -521
- package/dist/core/retrieval/retrieval-benchmarks.js.map +0 -7
- package/dist/core/retrieval/summary-generator.js +0 -589
- package/dist/core/retrieval/summary-generator.js.map +0 -7
- package/dist/core/retrieval/types.js +0 -21
- package/dist/core/retrieval/types.js.map +0 -7
- package/dist/core/security/index.js +0 -35
- package/dist/core/security/index.js.map +0 -7
- package/dist/core/security/input-sanitizer.js +0 -321
- package/dist/core/security/input-sanitizer.js.map +0 -7
- package/dist/core/session/clear-survival.js +0 -465
- package/dist/core/session/clear-survival.js.map +0 -7
- package/dist/core/session/enhanced-handoff.js +0 -792
- package/dist/core/session/enhanced-handoff.js.map +0 -7
- package/dist/core/session/handoff-generator.js +0 -343
- package/dist/core/session/handoff-generator.js.map +0 -7
- package/dist/core/session/index.js +0 -15
- package/dist/core/session/index.js.map +0 -7
- package/dist/core/session/session-manager.js +0 -347
- package/dist/core/session/session-manager.js.map +0 -7
- package/dist/core/skills/index.js +0 -7
- package/dist/core/skills/index.js.map +0 -7
- package/dist/core/skills/skill-storage.js +0 -764
- package/dist/core/skills/skill-storage.js.map +0 -7
- package/dist/core/skills/types.js +0 -193
- package/dist/core/skills/types.js.map +0 -7
- package/dist/core/storage/chromadb-adapter.js +0 -354
- package/dist/core/storage/chromadb-adapter.js.map +0 -7
- package/dist/core/storage/infinite-storage.js +0 -510
- package/dist/core/storage/infinite-storage.js.map +0 -7
- package/dist/core/storage/railway-optimized-storage.js +0 -591
- package/dist/core/storage/railway-optimized-storage.js.map +0 -7
- package/dist/core/storage/remote-storage.js +0 -489
- package/dist/core/storage/remote-storage.js.map +0 -7
- package/dist/core/storage/two-tier-storage.js +0 -766
- package/dist/core/storage/two-tier-storage.js.map +0 -7
- package/dist/core/trace/cli-trace-wrapper.js +0 -132
- package/dist/core/trace/cli-trace-wrapper.js.map +0 -7
- package/dist/core/trace/db-trace-wrapper.js +0 -247
- package/dist/core/trace/db-trace-wrapper.js.map +0 -7
- package/dist/core/trace/debug-trace.js +0 -417
- package/dist/core/trace/debug-trace.js.map +0 -7
- package/dist/core/trace/index.js +0 -109
- package/dist/core/trace/index.js.map +0 -7
- package/dist/core/trace/linear-api-wrapper.js +0 -178
- package/dist/core/trace/linear-api-wrapper.js.map +0 -7
- package/dist/core/trace/trace-demo.js +0 -154
- package/dist/core/trace/trace-demo.js.map +0 -7
- package/dist/core/trace/trace-detector.demo.js +0 -142
- package/dist/core/trace/trace-detector.demo.js.map +0 -7
- package/dist/core/trace/trace-detector.js +0 -528
- package/dist/core/trace/trace-detector.js.map +0 -7
- package/dist/core/trace/trace-store.js +0 -345
- package/dist/core/trace/trace-store.js.map +0 -7
- package/dist/core/trace/types.js +0 -77
- package/dist/core/trace/types.js.map +0 -7
- package/dist/core/types.js +0 -5
- package/dist/core/types.js.map +0 -7
- package/dist/core/utils/async-mutex.js +0 -114
- package/dist/core/utils/async-mutex.js.map +0 -7
- package/dist/core/utils/compression.js +0 -83
- package/dist/core/utils/compression.js.map +0 -7
- package/dist/core/utils/update-checker.js +0 -218
- package/dist/core/utils/update-checker.js.map +0 -7
- package/dist/core/worktree/worktree-manager.js +0 -465
- package/dist/core/worktree/worktree-manager.js.map +0 -7
- package/dist/daemon/daemon-config.js +0 -149
- package/dist/daemon/daemon-config.js.map +0 -7
- package/dist/daemon/services/context-service.js +0 -122
- package/dist/daemon/services/context-service.js.map +0 -7
- package/dist/daemon/services/linear-service.js +0 -136
- package/dist/daemon/services/linear-service.js.map +0 -7
- package/dist/daemon/session-daemon.js +0 -312
- package/dist/daemon/session-daemon.js.map +0 -7
- package/dist/daemon/unified-daemon.js +0 -276
- package/dist/daemon/unified-daemon.js.map +0 -7
- package/dist/features/analytics/api/analytics-api.js +0 -287
- package/dist/features/analytics/api/analytics-api.js.map +0 -7
- package/dist/features/analytics/core/analytics-service.js +0 -282
- package/dist/features/analytics/core/analytics-service.js.map +0 -7
- package/dist/features/analytics/index.js +0 -18
- package/dist/features/analytics/index.js.map +0 -7
- package/dist/features/analytics/queries/metrics-queries.js +0 -277
- package/dist/features/analytics/queries/metrics-queries.js.map +0 -7
- package/dist/features/analytics/types/metrics.js +0 -5
- package/dist/features/analytics/types/metrics.js.map +0 -7
- package/dist/features/browser/browser-mcp.js +0 -492
- package/dist/features/browser/browser-mcp.js.map +0 -7
- package/dist/features/sweep/index.js +0 -20
- package/dist/features/sweep/index.js.map +0 -7
- package/dist/features/sweep/prediction-client.js +0 -155
- package/dist/features/sweep/prediction-client.js.map +0 -7
- package/dist/features/sweep/prompt-builder.js +0 -85
- package/dist/features/sweep/prompt-builder.js.map +0 -7
- package/dist/features/sweep/pty-wrapper.js +0 -171
- package/dist/features/sweep/pty-wrapper.js.map +0 -7
- package/dist/features/sweep/state-watcher.js +0 -87
- package/dist/features/sweep/state-watcher.js.map +0 -7
- package/dist/features/sweep/status-bar.js +0 -88
- package/dist/features/sweep/status-bar.js.map +0 -7
- package/dist/features/sweep/sweep-server-manager.js +0 -226
- package/dist/features/sweep/sweep-server-manager.js.map +0 -7
- package/dist/features/sweep/tab-interceptor.js +0 -38
- package/dist/features/sweep/tab-interceptor.js.map +0 -7
- package/dist/features/sweep/types.js +0 -18
- package/dist/features/sweep/types.js.map +0 -7
- package/dist/features/tasks/linear-task-manager.js +0 -487
- package/dist/features/tasks/linear-task-manager.js.map +0 -7
- package/dist/features/tasks/task-aware-context.js +0 -410
- package/dist/features/tasks/task-aware-context.js.map +0 -7
- package/dist/features/tui/simple-monitor.js +0 -116
- package/dist/features/tui/simple-monitor.js.map +0 -7
- package/dist/features/tui/swarm-monitor.js +0 -648
- package/dist/features/tui/swarm-monitor.js.map +0 -7
- package/dist/features/web/client/stores/task-store.js +0 -26
- package/dist/features/web/client/stores/task-store.js.map +0 -7
- package/dist/features/web/server/index.js +0 -194
- package/dist/features/web/server/index.js.map +0 -7
- package/dist/hooks/auto-background.js +0 -151
- package/dist/hooks/auto-background.js.map +0 -7
- package/dist/hooks/claude-code-whatsapp-hook.js +0 -197
- package/dist/hooks/claude-code-whatsapp-hook.js.map +0 -7
- package/dist/hooks/config.js +0 -150
- package/dist/hooks/config.js.map +0 -7
- package/dist/hooks/daemon.js +0 -364
- package/dist/hooks/daemon.js.map +0 -7
- package/dist/hooks/events.js +0 -58
- package/dist/hooks/events.js.map +0 -7
- package/dist/hooks/index.js +0 -12
- package/dist/hooks/index.js.map +0 -7
- package/dist/hooks/linear-task-picker.js +0 -186
- package/dist/hooks/linear-task-picker.js.map +0 -7
- package/dist/hooks/schemas.js +0 -197
- package/dist/hooks/schemas.js.map +0 -7
- package/dist/hooks/secure-fs.js +0 -49
- package/dist/hooks/secure-fs.js.map +0 -7
- package/dist/hooks/security-logger.js +0 -155
- package/dist/hooks/security-logger.js.map +0 -7
- package/dist/hooks/session-summary.js +0 -222
- package/dist/hooks/session-summary.js.map +0 -7
- package/dist/hooks/sms-action-runner.js +0 -371
- package/dist/hooks/sms-action-runner.js.map +0 -7
- package/dist/hooks/sms-notify.js +0 -506
- package/dist/hooks/sms-notify.js.map +0 -7
- package/dist/hooks/sms-watcher.js +0 -93
- package/dist/hooks/sms-watcher.js.map +0 -7
- package/dist/hooks/sms-webhook.js +0 -555
- package/dist/hooks/sms-webhook.js.map +0 -7
- package/dist/hooks/whatsapp-commands.js +0 -479
- package/dist/hooks/whatsapp-commands.js.map +0 -7
- package/dist/hooks/whatsapp-scheduler.js +0 -317
- package/dist/hooks/whatsapp-scheduler.js.map +0 -7
- package/dist/hooks/whatsapp-sync.js +0 -409
- package/dist/hooks/whatsapp-sync.js.map +0 -7
- package/dist/index.js +0 -25
- package/dist/index.js.map +0 -7
- package/dist/integrations/anthropic/client.js +0 -263
- package/dist/integrations/anthropic/client.js.map +0 -7
- package/dist/integrations/claude-code/agent-bridge.js +0 -768
- package/dist/integrations/claude-code/agent-bridge.js.map +0 -7
- package/dist/integrations/claude-code/enhanced-pre-clear-hooks.js +0 -459
- package/dist/integrations/claude-code/enhanced-pre-clear-hooks.js.map +0 -7
- package/dist/integrations/claude-code/lifecycle-hooks.js +0 -254
- package/dist/integrations/claude-code/lifecycle-hooks.js.map +0 -7
- package/dist/integrations/claude-code/post-task-hooks.js +0 -545
- package/dist/integrations/claude-code/post-task-hooks.js.map +0 -7
- package/dist/integrations/claude-code/subagent-client-stub.js +0 -20
- package/dist/integrations/claude-code/subagent-client-stub.js.map +0 -7
- package/dist/integrations/claude-code/subagent-client.js +0 -511
- package/dist/integrations/claude-code/subagent-client.js.map +0 -7
- package/dist/integrations/claude-code/task-coordinator.js +0 -360
- package/dist/integrations/claude-code/task-coordinator.js.map +0 -7
- package/dist/integrations/linear/auth.js +0 -337
- package/dist/integrations/linear/auth.js.map +0 -7
- package/dist/integrations/linear/auto-sync.js +0 -258
- package/dist/integrations/linear/auto-sync.js.map +0 -7
- package/dist/integrations/linear/client.js +0 -634
- package/dist/integrations/linear/client.js.map +0 -7
- package/dist/integrations/linear/config.js +0 -130
- package/dist/integrations/linear/config.js.map +0 -7
- package/dist/integrations/linear/migration.js +0 -361
- package/dist/integrations/linear/migration.js.map +0 -7
- package/dist/integrations/linear/oauth-server.js +0 -454
- package/dist/integrations/linear/oauth-server.js.map +0 -7
- package/dist/integrations/linear/rest-client.js +0 -213
- package/dist/integrations/linear/rest-client.js.map +0 -7
- package/dist/integrations/linear/sync-manager.js +0 -236
- package/dist/integrations/linear/sync-manager.js.map +0 -7
- package/dist/integrations/linear/sync-service.js +0 -231
- package/dist/integrations/linear/sync-service.js.map +0 -7
- package/dist/integrations/linear/sync.js +0 -782
- package/dist/integrations/linear/sync.js.map +0 -7
- package/dist/integrations/linear/types.js +0 -5
- package/dist/integrations/linear/types.js.map +0 -7
- package/dist/integrations/linear/unified-sync.js +0 -589
- package/dist/integrations/linear/unified-sync.js.map +0 -7
- package/dist/integrations/linear/webhook-handler.js +0 -219
- package/dist/integrations/linear/webhook-handler.js.map +0 -7
- package/dist/integrations/linear/webhook-server.js +0 -218
- package/dist/integrations/linear/webhook-server.js.map +0 -7
- package/dist/integrations/linear/webhook.js +0 -291
- package/dist/integrations/linear/webhook.js.map +0 -7
- package/dist/integrations/mcp/handlers/code-execution-handlers.js +0 -266
- package/dist/integrations/mcp/handlers/code-execution-handlers.js.map +0 -7
- package/dist/integrations/mcp/handlers/context-handlers.js +0 -257
- package/dist/integrations/mcp/handlers/context-handlers.js.map +0 -7
- package/dist/integrations/mcp/handlers/discovery-handlers.js +0 -497
- package/dist/integrations/mcp/handlers/discovery-handlers.js.map +0 -7
- package/dist/integrations/mcp/handlers/index.js +0 -166
- package/dist/integrations/mcp/handlers/index.js.map +0 -7
- package/dist/integrations/mcp/handlers/linear-handlers.js +0 -247
- package/dist/integrations/mcp/handlers/linear-handlers.js.map +0 -7
- package/dist/integrations/mcp/handlers/skill-handlers.js +0 -529
- package/dist/integrations/mcp/handlers/skill-handlers.js.map +0 -7
- package/dist/integrations/mcp/handlers/task-handlers.js +0 -239
- package/dist/integrations/mcp/handlers/task-handlers.js.map +0 -7
- package/dist/integrations/mcp/handlers/trace-handlers.js +0 -308
- package/dist/integrations/mcp/handlers/trace-handlers.js.map +0 -7
- package/dist/integrations/mcp/index.js +0 -23
- package/dist/integrations/mcp/index.js.map +0 -7
- package/dist/integrations/mcp/middleware/tool-scoring.js +0 -356
- package/dist/integrations/mcp/middleware/tool-scoring.js.map +0 -7
- package/dist/integrations/mcp/refactored-server.js +0 -374
- package/dist/integrations/mcp/refactored-server.js.map +0 -7
- package/dist/integrations/mcp/remote-server.js +0 -682
- package/dist/integrations/mcp/remote-server.js.map +0 -7
- package/dist/integrations/mcp/schemas.js +0 -147
- package/dist/integrations/mcp/schemas.js.map +0 -7
- package/dist/integrations/mcp/server.js +0 -1975
- package/dist/integrations/mcp/server.js.map +0 -7
- package/dist/integrations/mcp/tool-definitions-code.js +0 -125
- package/dist/integrations/mcp/tool-definitions-code.js.map +0 -7
- package/dist/integrations/mcp/tool-definitions.js +0 -702
- package/dist/integrations/mcp/tool-definitions.js.map +0 -7
- package/dist/integrations/mcp/trace-test.js +0 -48
- package/dist/integrations/mcp/trace-test.js.map +0 -7
- package/dist/integrations/pg-aiguide/embedding-provider.js +0 -189
- package/dist/integrations/pg-aiguide/embedding-provider.js.map +0 -7
- package/dist/integrations/pg-aiguide/semantic-search.js +0 -187
- package/dist/integrations/pg-aiguide/semantic-search.js.map +0 -7
- package/dist/integrations/pg-aiguide/timescale-analytics.js +0 -224
- package/dist/integrations/pg-aiguide/timescale-analytics.js.map +0 -7
- package/dist/integrations/ralph/bridge/ralph-stackmemory-bridge.js +0 -860
- package/dist/integrations/ralph/bridge/ralph-stackmemory-bridge.js.map +0 -7
- package/dist/integrations/ralph/context/context-budget-manager.js +0 -301
- package/dist/integrations/ralph/context/context-budget-manager.js.map +0 -7
- package/dist/integrations/ralph/context/stackmemory-context-loader.js +0 -360
- package/dist/integrations/ralph/context/stackmemory-context-loader.js.map +0 -7
- package/dist/integrations/ralph/coordination/enhanced-coordination.js +0 -410
- package/dist/integrations/ralph/coordination/enhanced-coordination.js.map +0 -7
- package/dist/integrations/ralph/index.js +0 -18
- package/dist/integrations/ralph/index.js.map +0 -7
- package/dist/integrations/ralph/learning/pattern-learner.js +0 -401
- package/dist/integrations/ralph/learning/pattern-learner.js.map +0 -7
- package/dist/integrations/ralph/lifecycle/iteration-lifecycle.js +0 -448
- package/dist/integrations/ralph/lifecycle/iteration-lifecycle.js.map +0 -7
- package/dist/integrations/ralph/monitoring/swarm-dashboard.js +0 -294
- package/dist/integrations/ralph/monitoring/swarm-dashboard.js.map +0 -7
- package/dist/integrations/ralph/monitoring/swarm-registry.js +0 -108
- package/dist/integrations/ralph/monitoring/swarm-registry.js.map +0 -7
- package/dist/integrations/ralph/orchestration/multi-loop-orchestrator.js +0 -463
- package/dist/integrations/ralph/orchestration/multi-loop-orchestrator.js.map +0 -7
- package/dist/integrations/ralph/patterns/compounding-engineering-pattern.js +0 -400
- package/dist/integrations/ralph/patterns/compounding-engineering-pattern.js.map +0 -7
- package/dist/integrations/ralph/patterns/extended-coherence-sessions.js +0 -473
- package/dist/integrations/ralph/patterns/extended-coherence-sessions.js.map +0 -7
- package/dist/integrations/ralph/patterns/oracle-worker-pattern.js +0 -388
- package/dist/integrations/ralph/patterns/oracle-worker-pattern.js.map +0 -7
- package/dist/integrations/ralph/performance/performance-optimizer.js +0 -358
- package/dist/integrations/ralph/performance/performance-optimizer.js.map +0 -7
- package/dist/integrations/ralph/ralph-integration-demo.js +0 -182
- package/dist/integrations/ralph/ralph-integration-demo.js.map +0 -7
- package/dist/integrations/ralph/recovery/crash-recovery.js +0 -462
- package/dist/integrations/ralph/recovery/crash-recovery.js.map +0 -7
- package/dist/integrations/ralph/state/state-reconciler.js +0 -404
- package/dist/integrations/ralph/state/state-reconciler.js.map +0 -7
- package/dist/integrations/ralph/swarm/git-workflow-manager.js +0 -428
- package/dist/integrations/ralph/swarm/git-workflow-manager.js.map +0 -7
- package/dist/integrations/ralph/swarm/swarm-coordinator.js +0 -996
- package/dist/integrations/ralph/swarm/swarm-coordinator.js.map +0 -7
- package/dist/integrations/ralph/types.js +0 -5
- package/dist/integrations/ralph/types.js.map +0 -7
- package/dist/integrations/ralph/visualization/ralph-debugger.js +0 -585
- package/dist/integrations/ralph/visualization/ralph-debugger.js.map +0 -7
- package/dist/mcp/stackmemory-mcp-server.js +0 -554
- package/dist/mcp/stackmemory-mcp-server.js.map +0 -7
- package/dist/middleware/exponential-rate-limiter.js +0 -289
- package/dist/middleware/exponential-rate-limiter.js.map +0 -7
- package/dist/models/user.model.js +0 -358
- package/dist/models/user.model.js.map +0 -7
- package/dist/servers/production/auth-middleware.js +0 -528
- package/dist/servers/production/auth-middleware.js.map +0 -7
- package/dist/servers/railway/config.js +0 -55
- package/dist/servers/railway/config.js.map +0 -7
- package/dist/servers/railway/index-enhanced.js +0 -160
- package/dist/servers/railway/index-enhanced.js.map +0 -7
- package/dist/servers/railway/index.js +0 -1349
- package/dist/servers/railway/index.js.map +0 -7
- package/dist/servers/railway/simple.js +0 -64
- package/dist/servers/railway/simple.js.map +0 -7
- package/dist/servers/railway/storage-test.js +0 -459
- package/dist/servers/railway/storage-test.js.map +0 -7
- package/dist/services/config-service.js +0 -65
- package/dist/services/config-service.js.map +0 -7
- package/dist/services/context-service.js +0 -194
- package/dist/services/context-service.js.map +0 -7
- package/dist/skills/api-discovery.js +0 -354
- package/dist/skills/api-discovery.js.map +0 -7
- package/dist/skills/api-skill.js +0 -475
- package/dist/skills/api-skill.js.map +0 -7
- package/dist/skills/claude-skills.js +0 -1061
- package/dist/skills/claude-skills.js.map +0 -7
- package/dist/skills/dashboard-launcher.js +0 -216
- package/dist/skills/dashboard-launcher.js.map +0 -7
- package/dist/skills/recursive-agent-orchestrator.js +0 -575
- package/dist/skills/recursive-agent-orchestrator.js.map +0 -7
- package/dist/skills/repo-ingestion-skill.js +0 -609
- package/dist/skills/repo-ingestion-skill.js.map +0 -7
- package/dist/skills/security-secrets-scanner.js +0 -284
- package/dist/skills/security-secrets-scanner.js.map +0 -7
- package/dist/skills/unified-rlm-orchestrator.js +0 -404
- package/dist/skills/unified-rlm-orchestrator.js.map +0 -7
- package/dist/types/task.js +0 -5
- package/dist/types/task.js.map +0 -7
- package/dist/utils/env.js +0 -50
- package/dist/utils/env.js.map +0 -7
- package/dist/utils/formatting.js +0 -62
- package/dist/utils/formatting.js.map +0 -7
- package/dist/utils/process-cleanup.js +0 -136
- package/dist/utils/process-cleanup.js.map +0 -7
- package/dist/validation/schemas.js +0 -222
- package/dist/validation/schemas.js.map +0 -7
- /package/dist/{core/merge → src/core/extensions}/types.js +0 -0
- /package/dist/{core/merge → src/core/extensions}/types.js.map +0 -0
|
@@ -1,358 +0,0 @@
|
|
|
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 { logger } from "../../../core/monitoring/logger.js";
|
|
6
|
-
import * as zlib from "zlib";
|
|
7
|
-
import { promisify } from "util";
|
|
8
|
-
const gzip = promisify(zlib.gzip);
|
|
9
|
-
const gunzip = promisify(zlib.gunzip);
|
|
10
|
-
class PerformanceOptimizer {
|
|
11
|
-
config;
|
|
12
|
-
saveBatch = [];
|
|
13
|
-
batchTimer;
|
|
14
|
-
cache = /* @__PURE__ */ new Map();
|
|
15
|
-
metrics = {
|
|
16
|
-
iterationTime: 0,
|
|
17
|
-
contextLoadTime: 0,
|
|
18
|
-
stateSaveTime: 0,
|
|
19
|
-
memoryUsage: 0,
|
|
20
|
-
tokenCount: 0,
|
|
21
|
-
cacheHitRate: 0
|
|
22
|
-
};
|
|
23
|
-
cacheHits = 0;
|
|
24
|
-
cacheMisses = 0;
|
|
25
|
-
strategies = [];
|
|
26
|
-
constructor(config) {
|
|
27
|
-
this.config = {
|
|
28
|
-
asyncSaves: config?.asyncSaves ?? true,
|
|
29
|
-
batchSize: config?.batchSize || 10,
|
|
30
|
-
compressionLevel: config?.compressionLevel || 2,
|
|
31
|
-
cacheEnabled: config?.cacheEnabled ?? true,
|
|
32
|
-
parallelOperations: config?.parallelOperations ?? true
|
|
33
|
-
};
|
|
34
|
-
this.initializeStrategies();
|
|
35
|
-
this.startMetricsCollection();
|
|
36
|
-
}
|
|
37
|
-
/**
|
|
38
|
-
* Save frame with optimizations
|
|
39
|
-
*/
|
|
40
|
-
async saveFrame(frame) {
|
|
41
|
-
const startTime = Date.now();
|
|
42
|
-
if (this.config.asyncSaves) {
|
|
43
|
-
this.addToBatch({
|
|
44
|
-
type: "frame",
|
|
45
|
-
data: frame,
|
|
46
|
-
timestamp: Date.now()
|
|
47
|
-
});
|
|
48
|
-
} else {
|
|
49
|
-
await this.saveFrameInternal(frame);
|
|
50
|
-
}
|
|
51
|
-
this.metrics.stateSaveTime += Date.now() - startTime;
|
|
52
|
-
}
|
|
53
|
-
/**
|
|
54
|
-
* Save iteration with optimizations
|
|
55
|
-
*/
|
|
56
|
-
async saveIteration(iteration) {
|
|
57
|
-
const startTime = Date.now();
|
|
58
|
-
const data = this.config.compressionLevel > 0 ? await this.compressData(iteration) : iteration;
|
|
59
|
-
if (this.config.asyncSaves) {
|
|
60
|
-
this.addToBatch({
|
|
61
|
-
type: "iteration",
|
|
62
|
-
data,
|
|
63
|
-
timestamp: Date.now()
|
|
64
|
-
});
|
|
65
|
-
} else {
|
|
66
|
-
await this.saveIterationInternal(data);
|
|
67
|
-
}
|
|
68
|
-
this.metrics.stateSaveTime += Date.now() - startTime;
|
|
69
|
-
}
|
|
70
|
-
/**
|
|
71
|
-
* Load frames with caching
|
|
72
|
-
*/
|
|
73
|
-
async loadFrames(query) {
|
|
74
|
-
const startTime = Date.now();
|
|
75
|
-
const cacheKey = this.generateCacheKey("frames", query);
|
|
76
|
-
if (this.config.cacheEnabled) {
|
|
77
|
-
const cached = this.getFromCache(cacheKey);
|
|
78
|
-
if (cached) {
|
|
79
|
-
this.cacheHits++;
|
|
80
|
-
this.metrics.contextLoadTime += Date.now() - startTime;
|
|
81
|
-
return cached;
|
|
82
|
-
}
|
|
83
|
-
}
|
|
84
|
-
this.cacheMisses++;
|
|
85
|
-
const frames = await this.loadFramesInternal(query);
|
|
86
|
-
if (this.config.cacheEnabled) {
|
|
87
|
-
this.setCache(cacheKey, frames, 6e4);
|
|
88
|
-
}
|
|
89
|
-
this.metrics.contextLoadTime += Date.now() - startTime;
|
|
90
|
-
return frames;
|
|
91
|
-
}
|
|
92
|
-
/**
|
|
93
|
-
* Batch save operations
|
|
94
|
-
*/
|
|
95
|
-
async flushBatch() {
|
|
96
|
-
if (this.saveBatch.length === 0) return;
|
|
97
|
-
const batch = [...this.saveBatch];
|
|
98
|
-
this.saveBatch = [];
|
|
99
|
-
logger.debug("Flushing batch", { size: batch.length });
|
|
100
|
-
if (this.config.parallelOperations) {
|
|
101
|
-
await Promise.all(batch.map((op) => this.executeSaveOperation(op)));
|
|
102
|
-
} else {
|
|
103
|
-
for (const op of batch) {
|
|
104
|
-
await this.executeSaveOperation(op);
|
|
105
|
-
}
|
|
106
|
-
}
|
|
107
|
-
}
|
|
108
|
-
/**
|
|
109
|
-
* Compress data based on compression level
|
|
110
|
-
*/
|
|
111
|
-
async compressData(data) {
|
|
112
|
-
if (this.config.compressionLevel === 0) return data;
|
|
113
|
-
const json = JSON.stringify(data);
|
|
114
|
-
const compressionOptions = {
|
|
115
|
-
level: this.config.compressionLevel * 3
|
|
116
|
-
// Map 1-3 to zlib levels 3-9
|
|
117
|
-
};
|
|
118
|
-
const compressed = await gzip(json, compressionOptions);
|
|
119
|
-
return {
|
|
120
|
-
compressed: true,
|
|
121
|
-
data: compressed.toString("base64"),
|
|
122
|
-
originalSize: json.length,
|
|
123
|
-
compressedSize: compressed.length
|
|
124
|
-
};
|
|
125
|
-
}
|
|
126
|
-
/**
|
|
127
|
-
* Decompress data
|
|
128
|
-
*/
|
|
129
|
-
async decompressData(compressed) {
|
|
130
|
-
if (!compressed.compressed) return compressed;
|
|
131
|
-
const buffer = Buffer.from(compressed.data, "base64");
|
|
132
|
-
const decompressed = await gunzip(buffer);
|
|
133
|
-
return JSON.parse(decompressed.toString());
|
|
134
|
-
}
|
|
135
|
-
/**
|
|
136
|
-
* Apply optimization strategies
|
|
137
|
-
*/
|
|
138
|
-
async optimize(operation, data) {
|
|
139
|
-
let optimized = data;
|
|
140
|
-
for (const strategy of this.strategies) {
|
|
141
|
-
if (strategy.enabled) {
|
|
142
|
-
try {
|
|
143
|
-
optimized = await strategy.apply(optimized);
|
|
144
|
-
} catch (error) {
|
|
145
|
-
logger.error("Optimization strategy failed", {
|
|
146
|
-
strategy: strategy.name,
|
|
147
|
-
error: error.message
|
|
148
|
-
});
|
|
149
|
-
}
|
|
150
|
-
}
|
|
151
|
-
}
|
|
152
|
-
return optimized;
|
|
153
|
-
}
|
|
154
|
-
/**
|
|
155
|
-
* Get performance metrics
|
|
156
|
-
*/
|
|
157
|
-
getMetrics() {
|
|
158
|
-
const totalCacheAttempts = this.cacheHits + this.cacheMisses;
|
|
159
|
-
this.metrics.cacheHitRate = totalCacheAttempts > 0 ? this.cacheHits / totalCacheAttempts : 0;
|
|
160
|
-
this.metrics.memoryUsage = process.memoryUsage().heapUsed;
|
|
161
|
-
return { ...this.metrics };
|
|
162
|
-
}
|
|
163
|
-
/**
|
|
164
|
-
* Clear cache
|
|
165
|
-
*/
|
|
166
|
-
clearCache() {
|
|
167
|
-
const size = this.cache.size;
|
|
168
|
-
this.cache.clear();
|
|
169
|
-
logger.debug("Cache cleared", { entries: size });
|
|
170
|
-
}
|
|
171
|
-
/**
|
|
172
|
-
* Enable/disable strategy
|
|
173
|
-
*/
|
|
174
|
-
setStrategyEnabled(strategyName, enabled) {
|
|
175
|
-
const strategy = this.strategies.find((s) => s.name === strategyName);
|
|
176
|
-
if (strategy) {
|
|
177
|
-
strategy.enabled = enabled;
|
|
178
|
-
logger.debug("Strategy updated", { name: strategyName, enabled });
|
|
179
|
-
}
|
|
180
|
-
}
|
|
181
|
-
/**
|
|
182
|
-
* Cleanup resources
|
|
183
|
-
*/
|
|
184
|
-
cleanup() {
|
|
185
|
-
if (this.batchTimer) {
|
|
186
|
-
clearTimeout(this.batchTimer);
|
|
187
|
-
}
|
|
188
|
-
this.clearCache();
|
|
189
|
-
this.saveBatch = [];
|
|
190
|
-
}
|
|
191
|
-
/**
|
|
192
|
-
* Initialize optimization strategies
|
|
193
|
-
*/
|
|
194
|
-
initializeStrategies() {
|
|
195
|
-
this.strategies = [
|
|
196
|
-
{
|
|
197
|
-
name: "deduplication",
|
|
198
|
-
enabled: true,
|
|
199
|
-
priority: 1,
|
|
200
|
-
apply: async (data) => this.deduplicateData(data),
|
|
201
|
-
metrics: () => this.getMetrics()
|
|
202
|
-
},
|
|
203
|
-
{
|
|
204
|
-
name: "chunking",
|
|
205
|
-
enabled: true,
|
|
206
|
-
priority: 2,
|
|
207
|
-
apply: async (data) => this.chunkLargeData(data),
|
|
208
|
-
metrics: () => this.getMetrics()
|
|
209
|
-
},
|
|
210
|
-
{
|
|
211
|
-
name: "lazy-loading",
|
|
212
|
-
enabled: this.config.cacheEnabled,
|
|
213
|
-
priority: 3,
|
|
214
|
-
apply: async (data) => this.createLazyProxy(data),
|
|
215
|
-
metrics: () => this.getMetrics()
|
|
216
|
-
}
|
|
217
|
-
];
|
|
218
|
-
this.strategies.sort((a, b) => a.priority - b.priority);
|
|
219
|
-
}
|
|
220
|
-
/**
|
|
221
|
-
* Start metrics collection
|
|
222
|
-
*/
|
|
223
|
-
startMetricsCollection() {
|
|
224
|
-
setInterval(() => {
|
|
225
|
-
const metrics = this.getMetrics();
|
|
226
|
-
logger.debug("Performance metrics", metrics);
|
|
227
|
-
}, 3e4);
|
|
228
|
-
}
|
|
229
|
-
/**
|
|
230
|
-
* Add operation to batch
|
|
231
|
-
*/
|
|
232
|
-
addToBatch(operation) {
|
|
233
|
-
this.saveBatch.push(operation);
|
|
234
|
-
if (!this.batchTimer) {
|
|
235
|
-
this.batchTimer = setTimeout(() => {
|
|
236
|
-
this.flushBatch().catch((error) => {
|
|
237
|
-
logger.error("Batch flush failed", { error: error.message });
|
|
238
|
-
});
|
|
239
|
-
this.batchTimer = void 0;
|
|
240
|
-
}, 1e3);
|
|
241
|
-
}
|
|
242
|
-
if (this.saveBatch.length >= this.config.batchSize) {
|
|
243
|
-
if (this.batchTimer) {
|
|
244
|
-
clearTimeout(this.batchTimer);
|
|
245
|
-
this.batchTimer = void 0;
|
|
246
|
-
}
|
|
247
|
-
this.flushBatch().catch((error) => {
|
|
248
|
-
logger.error("Batch flush failed", { error: error.message });
|
|
249
|
-
});
|
|
250
|
-
}
|
|
251
|
-
}
|
|
252
|
-
/**
|
|
253
|
-
* Execute save operation
|
|
254
|
-
*/
|
|
255
|
-
async executeSaveOperation(operation) {
|
|
256
|
-
switch (operation.type) {
|
|
257
|
-
case "frame":
|
|
258
|
-
await this.saveFrameInternal(operation.data);
|
|
259
|
-
break;
|
|
260
|
-
case "iteration":
|
|
261
|
-
await this.saveIterationInternal(operation.data);
|
|
262
|
-
break;
|
|
263
|
-
default:
|
|
264
|
-
logger.warn("Unknown operation type", { type: operation.type });
|
|
265
|
-
}
|
|
266
|
-
}
|
|
267
|
-
/**
|
|
268
|
-
* Internal frame save
|
|
269
|
-
*/
|
|
270
|
-
async saveFrameInternal(frame) {
|
|
271
|
-
logger.debug("Frame saved", { frameId: frame.frame_id });
|
|
272
|
-
}
|
|
273
|
-
/**
|
|
274
|
-
* Internal iteration save
|
|
275
|
-
*/
|
|
276
|
-
async saveIterationInternal(iteration) {
|
|
277
|
-
logger.debug("Iteration saved", { iteration: iteration.number });
|
|
278
|
-
}
|
|
279
|
-
/**
|
|
280
|
-
* Internal frame load
|
|
281
|
-
*/
|
|
282
|
-
async loadFramesInternal(query) {
|
|
283
|
-
return [];
|
|
284
|
-
}
|
|
285
|
-
/**
|
|
286
|
-
* Generate cache key
|
|
287
|
-
*/
|
|
288
|
-
generateCacheKey(type, params) {
|
|
289
|
-
return `${type}:${JSON.stringify(params)}`;
|
|
290
|
-
}
|
|
291
|
-
/**
|
|
292
|
-
* Get from cache
|
|
293
|
-
*/
|
|
294
|
-
getFromCache(key) {
|
|
295
|
-
const entry = this.cache.get(key);
|
|
296
|
-
if (!entry) return void 0;
|
|
297
|
-
if (entry.expiry && entry.expiry < Date.now()) {
|
|
298
|
-
this.cache.delete(key);
|
|
299
|
-
return void 0;
|
|
300
|
-
}
|
|
301
|
-
return entry.data;
|
|
302
|
-
}
|
|
303
|
-
/**
|
|
304
|
-
* Set cache entry
|
|
305
|
-
*/
|
|
306
|
-
setCache(key, data, ttl) {
|
|
307
|
-
const entry = {
|
|
308
|
-
data,
|
|
309
|
-
timestamp: Date.now(),
|
|
310
|
-
expiry: ttl ? Date.now() + ttl : void 0
|
|
311
|
-
};
|
|
312
|
-
this.cache.set(key, entry);
|
|
313
|
-
if (this.cache.size > 100) {
|
|
314
|
-
const entries = Array.from(this.cache.entries());
|
|
315
|
-
entries.sort((a, b) => a[1].timestamp - b[1].timestamp);
|
|
316
|
-
for (let i = 0; i < 20; i++) {
|
|
317
|
-
this.cache.delete(entries[i][0]);
|
|
318
|
-
}
|
|
319
|
-
}
|
|
320
|
-
}
|
|
321
|
-
/**
|
|
322
|
-
* Deduplicate data
|
|
323
|
-
*/
|
|
324
|
-
deduplicateData(data) {
|
|
325
|
-
if (Array.isArray(data)) {
|
|
326
|
-
const seen = /* @__PURE__ */ new Set();
|
|
327
|
-
return data.filter((item) => {
|
|
328
|
-
const key = JSON.stringify(item);
|
|
329
|
-
if (seen.has(key)) {
|
|
330
|
-
return false;
|
|
331
|
-
}
|
|
332
|
-
seen.add(key);
|
|
333
|
-
return true;
|
|
334
|
-
});
|
|
335
|
-
}
|
|
336
|
-
return data;
|
|
337
|
-
}
|
|
338
|
-
/**
|
|
339
|
-
* Chunk large data
|
|
340
|
-
*/
|
|
341
|
-
chunkLargeData(data) {
|
|
342
|
-
const json = JSON.stringify(data);
|
|
343
|
-
if (json.length > 1e5) {
|
|
344
|
-
logger.debug("Large data detected", { size: json.length });
|
|
345
|
-
}
|
|
346
|
-
return data;
|
|
347
|
-
}
|
|
348
|
-
/**
|
|
349
|
-
* Create lazy-loading proxy
|
|
350
|
-
*/
|
|
351
|
-
createLazyProxy(data) {
|
|
352
|
-
return data;
|
|
353
|
-
}
|
|
354
|
-
}
|
|
355
|
-
export {
|
|
356
|
-
PerformanceOptimizer
|
|
357
|
-
};
|
|
358
|
-
//# sourceMappingURL=performance-optimizer.js.map
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../../src/integrations/ralph/performance/performance-optimizer.ts"],
|
|
4
|
-
"sourcesContent": ["/**\n * Performance Optimizer for Ralph-StackMemory Integration\n * Handles async saves, batching, compression, and caching for optimal performance\n */\n\nimport { logger } from '../../../core/monitoring/logger.js';\nimport * as zlib from 'zlib';\nimport { promisify } from 'util';\nimport {\n RalphIteration,\n PerformanceMetrics,\n OptimizationStrategy,\n RalphStackMemoryConfig,\n Frame,\n} from '../types.js';\n\nconst gzip = promisify(zlib.gzip);\nconst gunzip = promisify(zlib.gunzip);\n\nexport class PerformanceOptimizer {\n private config: RalphStackMemoryConfig['performance'];\n private saveBatch: SaveOperation[] = [];\n private batchTimer?: NodeJS.Timeout;\n private cache: Map<string, CacheEntry> = new Map();\n private metrics: PerformanceMetrics = {\n iterationTime: 0,\n contextLoadTime: 0,\n stateSaveTime: 0,\n memoryUsage: 0,\n tokenCount: 0,\n cacheHitRate: 0,\n };\n private cacheHits = 0;\n private cacheMisses = 0;\n private strategies: OptimizationStrategy[] = [];\n\n constructor(config?: Partial<RalphStackMemoryConfig['performance']>) {\n this.config = {\n asyncSaves: config?.asyncSaves ?? true,\n batchSize: config?.batchSize || 10,\n compressionLevel: config?.compressionLevel || 2,\n cacheEnabled: config?.cacheEnabled ?? true,\n parallelOperations: config?.parallelOperations ?? true,\n };\n\n this.initializeStrategies();\n this.startMetricsCollection();\n }\n\n /**\n * Save frame with optimizations\n */\n async saveFrame(frame: Frame): Promise<void> {\n const startTime = Date.now();\n\n if (this.config.asyncSaves) {\n // Add to batch for async saving\n this.addToBatch({\n type: 'frame',\n data: frame,\n timestamp: Date.now(),\n });\n } else {\n // Save synchronously\n await this.saveFrameInternal(frame);\n }\n\n this.metrics.stateSaveTime += Date.now() - startTime;\n }\n\n /**\n * Save iteration with optimizations\n */\n async saveIteration(iteration: RalphIteration): Promise<void> {\n const startTime = Date.now();\n\n // Compress if enabled\n const data = this.config.compressionLevel > 0\n ? await this.compressData(iteration)\n : iteration;\n\n if (this.config.asyncSaves) {\n // Add to batch\n this.addToBatch({\n type: 'iteration',\n data,\n timestamp: Date.now(),\n });\n } else {\n // Save synchronously\n await this.saveIterationInternal(data);\n }\n\n this.metrics.stateSaveTime += Date.now() - startTime;\n }\n\n /**\n * Load frames with caching\n */\n async loadFrames(query: FrameQuery): Promise<Frame[]> {\n const startTime = Date.now();\n const cacheKey = this.generateCacheKey('frames', query);\n\n // Check cache first\n if (this.config.cacheEnabled) {\n const cached = this.getFromCache<Frame[]>(cacheKey);\n if (cached) {\n this.cacheHits++;\n this.metrics.contextLoadTime += Date.now() - startTime;\n return cached;\n }\n }\n\n this.cacheMisses++;\n\n // Load from storage\n const frames = await this.loadFramesInternal(query);\n\n // Cache the result\n if (this.config.cacheEnabled) {\n this.setCache(cacheKey, frames, 60000); // Cache for 1 minute\n }\n\n this.metrics.contextLoadTime += Date.now() - startTime;\n return frames;\n }\n\n /**\n * Batch save operations\n */\n async flushBatch(): Promise<void> {\n if (this.saveBatch.length === 0) return;\n\n const batch = [...this.saveBatch];\n this.saveBatch = [];\n\n logger.debug('Flushing batch', { size: batch.length });\n\n if (this.config.parallelOperations) {\n // Save in parallel\n await Promise.all(batch.map(op => this.executeSaveOperation(op)));\n } else {\n // Save sequentially\n for (const op of batch) {\n await this.executeSaveOperation(op);\n }\n }\n }\n\n /**\n * Compress data based on compression level\n */\n async compressData(data: any): Promise<any> {\n if (this.config.compressionLevel === 0) return data;\n\n const json = JSON.stringify(data);\n const compressionOptions: zlib.ZlibOptions = {\n level: this.config.compressionLevel * 3, // Map 1-3 to zlib levels 3-9\n };\n\n const compressed = await gzip(json, compressionOptions);\n \n return {\n compressed: true,\n data: compressed.toString('base64'),\n originalSize: json.length,\n compressedSize: compressed.length,\n };\n }\n\n /**\n * Decompress data\n */\n async decompressData(compressed: any): Promise<any> {\n if (!compressed.compressed) return compressed;\n\n const buffer = Buffer.from(compressed.data, 'base64');\n const decompressed = await gunzip(buffer);\n \n return JSON.parse(decompressed.toString());\n }\n\n /**\n * Apply optimization strategies\n */\n async optimize(operation: string, data: any): Promise<any> {\n let optimized = data;\n\n for (const strategy of this.strategies) {\n if (strategy.enabled) {\n try {\n optimized = await strategy.apply(optimized);\n } catch (error: any) {\n logger.error('Optimization strategy failed', {\n strategy: strategy.name,\n error: error.message,\n });\n }\n }\n }\n\n return optimized;\n }\n\n /**\n * Get performance metrics\n */\n getMetrics(): PerformanceMetrics {\n // Update cache hit rate\n const totalCacheAttempts = this.cacheHits + this.cacheMisses;\n this.metrics.cacheHitRate = totalCacheAttempts > 0\n ? this.cacheHits / totalCacheAttempts\n : 0;\n\n // Update memory usage\n this.metrics.memoryUsage = process.memoryUsage().heapUsed;\n\n return { ...this.metrics };\n }\n\n /**\n * Clear cache\n */\n clearCache(): void {\n const size = this.cache.size;\n this.cache.clear();\n logger.debug('Cache cleared', { entries: size });\n }\n\n /**\n * Enable/disable strategy\n */\n setStrategyEnabled(strategyName: string, enabled: boolean): void {\n const strategy = this.strategies.find(s => s.name === strategyName);\n if (strategy) {\n strategy.enabled = enabled;\n logger.debug('Strategy updated', { name: strategyName, enabled });\n }\n }\n\n /**\n * Cleanup resources\n */\n cleanup(): void {\n if (this.batchTimer) {\n clearTimeout(this.batchTimer);\n }\n this.clearCache();\n this.saveBatch = [];\n }\n\n /**\n * Initialize optimization strategies\n */\n private initializeStrategies(): void {\n this.strategies = [\n {\n name: 'deduplication',\n enabled: true,\n priority: 1,\n apply: async (data: any) => this.deduplicateData(data),\n metrics: () => this.getMetrics(),\n },\n {\n name: 'chunking',\n enabled: true,\n priority: 2,\n apply: async (data: any) => this.chunkLargeData(data),\n metrics: () => this.getMetrics(),\n },\n {\n name: 'lazy-loading',\n enabled: this.config.cacheEnabled,\n priority: 3,\n apply: async (data: any) => this.createLazyProxy(data),\n metrics: () => this.getMetrics(),\n },\n ];\n\n // Sort by priority\n this.strategies.sort((a, b) => a.priority - b.priority);\n }\n\n /**\n * Start metrics collection\n */\n private startMetricsCollection(): void {\n // Collect metrics every 30 seconds\n setInterval(() => {\n const metrics = this.getMetrics();\n logger.debug('Performance metrics', metrics);\n }, 30000);\n }\n\n /**\n * Add operation to batch\n */\n private addToBatch(operation: SaveOperation): void {\n this.saveBatch.push(operation);\n\n // Start batch timer if not already running\n if (!this.batchTimer) {\n this.batchTimer = setTimeout(() => {\n this.flushBatch().catch(error => {\n logger.error('Batch flush failed', { error: error.message });\n });\n this.batchTimer = undefined;\n }, 1000); // Flush after 1 second\n }\n\n // Flush immediately if batch is full\n if (this.saveBatch.length >= this.config.batchSize) {\n if (this.batchTimer) {\n clearTimeout(this.batchTimer);\n this.batchTimer = undefined;\n }\n this.flushBatch().catch(error => {\n logger.error('Batch flush failed', { error: error.message });\n });\n }\n }\n\n /**\n * Execute save operation\n */\n private async executeSaveOperation(operation: SaveOperation): Promise<void> {\n switch (operation.type) {\n case 'frame':\n await this.saveFrameInternal(operation.data);\n break;\n case 'iteration':\n await this.saveIterationInternal(operation.data);\n break;\n default:\n logger.warn('Unknown operation type', { type: operation.type });\n }\n }\n\n /**\n * Internal frame save\n */\n private async saveFrameInternal(frame: Frame): Promise<void> {\n // This would integrate with StackMemory's frame storage\n // Placeholder implementation\n logger.debug('Frame saved', { frameId: frame.frame_id });\n }\n\n /**\n * Internal iteration save\n */\n private async saveIterationInternal(iteration: any): Promise<void> {\n // This would save iteration data\n // Placeholder implementation\n logger.debug('Iteration saved', { iteration: iteration.number });\n }\n\n /**\n * Internal frame load\n */\n private async loadFramesInternal(query: FrameQuery): Promise<Frame[]> {\n // This would load frames from StackMemory\n // Placeholder implementation\n return [];\n }\n\n /**\n * Generate cache key\n */\n private generateCacheKey(type: string, params: any): string {\n return `${type}:${JSON.stringify(params)}`;\n }\n\n /**\n * Get from cache\n */\n private getFromCache<T>(key: string): T | undefined {\n const entry = this.cache.get(key);\n \n if (!entry) return undefined;\n \n // Check if expired\n if (entry.expiry && entry.expiry < Date.now()) {\n this.cache.delete(key);\n return undefined;\n }\n\n return entry.data as T;\n }\n\n /**\n * Set cache entry\n */\n private setCache(key: string, data: any, ttl?: number): void {\n const entry: CacheEntry = {\n data,\n timestamp: Date.now(),\n expiry: ttl ? Date.now() + ttl : undefined,\n };\n\n this.cache.set(key, entry);\n\n // Limit cache size\n if (this.cache.size > 100) {\n // Remove oldest entries\n const entries = Array.from(this.cache.entries());\n entries.sort((a, b) => a[1].timestamp - b[1].timestamp);\n \n for (let i = 0; i < 20; i++) {\n this.cache.delete(entries[i][0]);\n }\n }\n }\n\n /**\n * Deduplicate data\n */\n private deduplicateData(data: any): any {\n if (Array.isArray(data)) {\n const seen = new Set();\n return data.filter(item => {\n const key = JSON.stringify(item);\n if (seen.has(key)) {\n return false;\n }\n seen.add(key);\n return true;\n });\n }\n return data;\n }\n\n /**\n * Chunk large data\n */\n private chunkLargeData(data: any): any {\n const json = JSON.stringify(data);\n \n // If data is too large, create chunks\n if (json.length > 100000) {\n // This would implement chunking logic\n // For now, return as-is\n logger.debug('Large data detected', { size: json.length });\n }\n\n return data;\n }\n\n /**\n * Create lazy-loading proxy\n */\n private createLazyProxy(data: any): any {\n // This would create a proxy that loads data on demand\n // For now, return as-is\n return data;\n }\n}\n\n// Internal types\ninterface SaveOperation {\n type: 'frame' | 'iteration';\n data: any;\n timestamp: number;\n}\n\ninterface CacheEntry {\n data: any;\n timestamp: number;\n expiry?: number;\n}\n\ninterface FrameQuery {\n loopId?: string;\n sessionId?: string;\n limit?: number;\n since?: number;\n}"],
|
|
5
|
-
"mappings": "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",
|
|
6
|
-
"names": []
|
|
7
|
-
}
|
|
@@ -1,182 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
import { fileURLToPath as __fileURLToPath } from 'url';
|
|
3
|
-
import { dirname as __pathDirname } from 'path';
|
|
4
|
-
const __filename = __fileURLToPath(import.meta.url);
|
|
5
|
-
const __dirname = __pathDirname(__filename);
|
|
6
|
-
import { RalphStackMemoryBridge } from "./bridge/ralph-stackmemory-bridge.js";
|
|
7
|
-
class RalphIntegrationDemo {
|
|
8
|
-
bridge;
|
|
9
|
-
constructor() {
|
|
10
|
-
const config = {
|
|
11
|
-
contextBudget: {
|
|
12
|
-
maxTokens: 2e3,
|
|
13
|
-
// Smaller budget for demo
|
|
14
|
-
compressionEnabled: true,
|
|
15
|
-
adaptiveBudgeting: true
|
|
16
|
-
},
|
|
17
|
-
performance: {
|
|
18
|
-
asyncSaves: true,
|
|
19
|
-
batchSize: 5,
|
|
20
|
-
compressionLevel: 1,
|
|
21
|
-
cacheEnabled: true
|
|
22
|
-
},
|
|
23
|
-
lifecycle: {
|
|
24
|
-
checkpoints: {
|
|
25
|
-
enabled: true,
|
|
26
|
-
frequency: 3,
|
|
27
|
-
// Checkpoint every 3 iterations
|
|
28
|
-
retentionDays: 1
|
|
29
|
-
// Short retention for demo
|
|
30
|
-
}
|
|
31
|
-
}
|
|
32
|
-
};
|
|
33
|
-
this.bridge = new RalphStackMemoryBridge({
|
|
34
|
-
config,
|
|
35
|
-
debug: true
|
|
36
|
-
});
|
|
37
|
-
}
|
|
38
|
-
/**
|
|
39
|
-
* Run the integration demo
|
|
40
|
-
*/
|
|
41
|
-
async run() {
|
|
42
|
-
console.log("\n\u{1F916} Ralph-StackMemory Integration Demo\n");
|
|
43
|
-
try {
|
|
44
|
-
await this.demonstrateInitialization();
|
|
45
|
-
await this.demonstrateIterations();
|
|
46
|
-
await this.demonstrateRecovery();
|
|
47
|
-
await this.demonstrateMetrics();
|
|
48
|
-
console.log("\n\u2705 Demo completed successfully!\n");
|
|
49
|
-
} catch (error) {
|
|
50
|
-
console.error("\n\u274C Demo failed:", error.message);
|
|
51
|
-
throw error;
|
|
52
|
-
} finally {
|
|
53
|
-
await this.cleanup();
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
/**
|
|
57
|
-
* Demonstrate initialization
|
|
58
|
-
*/
|
|
59
|
-
async demonstrateInitialization() {
|
|
60
|
-
console.log("\u{1F4CB} Phase 1: Initialization");
|
|
61
|
-
console.log("==========================");
|
|
62
|
-
await this.bridge.initialize();
|
|
63
|
-
const task = "Implement user authentication system with JWT";
|
|
64
|
-
const criteria = [
|
|
65
|
-
"- User registration endpoint working",
|
|
66
|
-
"- Login endpoint returns JWT token",
|
|
67
|
-
"- Protected routes validate JWT",
|
|
68
|
-
"- Password hashing implemented",
|
|
69
|
-
"- Tests pass with >80% coverage"
|
|
70
|
-
].join("\n");
|
|
71
|
-
const loopState = await this.bridge.createNewLoop(task, criteria);
|
|
72
|
-
console.log(`\u2713 Created Ralph loop: ${loopState.loopId}`);
|
|
73
|
-
console.log(`\u2713 Task: ${task.substring(0, 50)}...`);
|
|
74
|
-
console.log(`\u2713 Status: ${loopState.status}`);
|
|
75
|
-
console.log(`\u2713 Iteration: ${loopState.iteration}`);
|
|
76
|
-
console.log();
|
|
77
|
-
}
|
|
78
|
-
/**
|
|
79
|
-
* Demonstrate iterations with context management
|
|
80
|
-
*/
|
|
81
|
-
async demonstrateIterations() {
|
|
82
|
-
console.log("\u{1F504} Phase 2: Iteration Management");
|
|
83
|
-
console.log("=================================");
|
|
84
|
-
const maxIterations = 5;
|
|
85
|
-
for (let i = 0; i < maxIterations; i++) {
|
|
86
|
-
console.log(`
|
|
87
|
-
--- Iteration ${i + 1} ---`);
|
|
88
|
-
console.log("\u{1F527} Running worker iteration...");
|
|
89
|
-
const iteration = await this.bridge.runWorkerIteration();
|
|
90
|
-
console.log(`\u2713 Analysis: ${iteration.analysis.filesCount} files, tests ${iteration.analysis.testsPass ? "pass" : "fail"}`);
|
|
91
|
-
console.log(`\u2713 Plan: ${iteration.plan.summary}`);
|
|
92
|
-
console.log(`\u2713 Changes: ${iteration.changes.length} modifications`);
|
|
93
|
-
console.log(`\u2713 Validation: ${iteration.validation.testsPass ? "pass" : "fail"}`);
|
|
94
|
-
console.log("\u{1F440} Running reviewer iteration...");
|
|
95
|
-
const review = await this.bridge.runReviewerIteration();
|
|
96
|
-
if (review.complete) {
|
|
97
|
-
console.log("\u{1F389} Task completed!");
|
|
98
|
-
break;
|
|
99
|
-
} else {
|
|
100
|
-
console.log(`\u{1F4DD} Feedback: ${review.feedback?.substring(0, 100)}...`);
|
|
101
|
-
}
|
|
102
|
-
const usage = this.bridge.getPerformanceMetrics();
|
|
103
|
-
console.log(`\u{1F4CA} Token usage: ${usage.tokenCount} / Context load: ${usage.contextLoadTime}ms`);
|
|
104
|
-
if ((i + 1) % 3 === 0) {
|
|
105
|
-
console.log("\u{1F4BE} Creating checkpoint...");
|
|
106
|
-
const checkpoint = await this.bridge.createCheckpoint();
|
|
107
|
-
console.log(`\u2713 Checkpoint: ${checkpoint.id}`);
|
|
108
|
-
}
|
|
109
|
-
await new Promise((resolve) => setTimeout(resolve, 1e3));
|
|
110
|
-
}
|
|
111
|
-
}
|
|
112
|
-
/**
|
|
113
|
-
* Demonstrate crash recovery
|
|
114
|
-
*/
|
|
115
|
-
async demonstrateRecovery() {
|
|
116
|
-
console.log("\n\u{1F691} Phase 3: Crash Recovery");
|
|
117
|
-
console.log("===========================");
|
|
118
|
-
const sessionId = "demo-session-123";
|
|
119
|
-
try {
|
|
120
|
-
console.log("\u{1F504} Simulating session rehydration...");
|
|
121
|
-
console.log("\u2713 Loading context from StackMemory...");
|
|
122
|
-
console.log("\u2713 Reconciling state from git, files, and memory...");
|
|
123
|
-
console.log("\u2713 Applying context budget constraints...");
|
|
124
|
-
console.log("\u2713 Resuming from last iteration...");
|
|
125
|
-
console.log("\u{1F4C8} Recovery successful!");
|
|
126
|
-
console.log(" - Context loaded: 2.1s");
|
|
127
|
-
console.log(" - State reconciled: 0.3s");
|
|
128
|
-
console.log(" - Memory usage: 45MB");
|
|
129
|
-
console.log(" - Cache hit rate: 78%");
|
|
130
|
-
} catch (error) {
|
|
131
|
-
console.log(`\u26A0\uFE0F Recovery simulation: ${error.message}`);
|
|
132
|
-
}
|
|
133
|
-
}
|
|
134
|
-
/**
|
|
135
|
-
* Demonstrate performance metrics
|
|
136
|
-
*/
|
|
137
|
-
async demonstrateMetrics() {
|
|
138
|
-
console.log("\n\u{1F4CA} Phase 4: Performance Metrics");
|
|
139
|
-
console.log("================================");
|
|
140
|
-
const metrics = this.bridge.getPerformanceMetrics();
|
|
141
|
-
console.log("Performance Summary:");
|
|
142
|
-
console.log(` Iteration Time: ${metrics.iterationTime}ms avg`);
|
|
143
|
-
console.log(` Context Load Time: ${metrics.contextLoadTime}ms avg`);
|
|
144
|
-
console.log(` State Save Time: ${metrics.stateSaveTime}ms avg`);
|
|
145
|
-
console.log(` Memory Usage: ${Math.round(metrics.memoryUsage / 1024 / 1024)}MB`);
|
|
146
|
-
console.log(` Token Count: ${metrics.tokenCount}`);
|
|
147
|
-
console.log(` Cache Hit Rate: ${Math.round(metrics.cacheHitRate * 100)}%`);
|
|
148
|
-
console.log("\nOptimization Features:");
|
|
149
|
-
console.log(" \u2713 Async frame saves with batching");
|
|
150
|
-
console.log(" \u2713 Context compression and budget management");
|
|
151
|
-
console.log(" \u2713 State reconciliation with conflict resolution");
|
|
152
|
-
console.log(" \u2713 Lifecycle hooks for clean integration");
|
|
153
|
-
console.log(" \u2713 Checkpoint-based recovery");
|
|
154
|
-
}
|
|
155
|
-
/**
|
|
156
|
-
* Cleanup resources
|
|
157
|
-
*/
|
|
158
|
-
async cleanup() {
|
|
159
|
-
console.log("\n\u{1F9F9} Cleaning up...");
|
|
160
|
-
await this.bridge.cleanup();
|
|
161
|
-
console.log("\u2713 Resources cleaned up");
|
|
162
|
-
}
|
|
163
|
-
}
|
|
164
|
-
async function main() {
|
|
165
|
-
const demo = new RalphIntegrationDemo();
|
|
166
|
-
try {
|
|
167
|
-
await demo.run();
|
|
168
|
-
} catch (error) {
|
|
169
|
-
console.error("Demo failed:", error.message);
|
|
170
|
-
if (process.env.DEBUG) {
|
|
171
|
-
console.error(error.stack);
|
|
172
|
-
}
|
|
173
|
-
process.exit(1);
|
|
174
|
-
}
|
|
175
|
-
}
|
|
176
|
-
if (import.meta.url === `file://${process.argv[1]}`) {
|
|
177
|
-
main().catch(console.error);
|
|
178
|
-
}
|
|
179
|
-
export {
|
|
180
|
-
RalphIntegrationDemo
|
|
181
|
-
};
|
|
182
|
-
//# sourceMappingURL=ralph-integration-demo.js.map
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../src/integrations/ralph/ralph-integration-demo.ts"],
|
|
4
|
-
"sourcesContent": ["#!/usr/bin/env node\n/**\n * Ralph-StackMemory Integration Demonstration\n * Shows how the integration works with a working example\n */\n\nimport { RalphStackMemoryBridge } from './bridge/ralph-stackmemory-bridge.js';\nimport { logger } from '../../core/monitoring/logger.js';\nimport { RalphStackMemoryConfig } from './types.js';\n\nclass RalphIntegrationDemo {\n private bridge: RalphStackMemoryBridge;\n\n constructor() {\n // Configure the bridge for demo\n const config: Partial<RalphStackMemoryConfig> = {\n contextBudget: {\n maxTokens: 2000, // Smaller budget for demo\n compressionEnabled: true,\n adaptiveBudgeting: true,\n },\n performance: {\n asyncSaves: true,\n batchSize: 5,\n compressionLevel: 1,\n cacheEnabled: true,\n },\n lifecycle: {\n checkpoints: {\n enabled: true,\n frequency: 3, // Checkpoint every 3 iterations\n retentionDays: 1, // Short retention for demo\n },\n },\n };\n\n this.bridge = new RalphStackMemoryBridge({\n config,\n debug: true,\n });\n }\n\n /**\n * Run the integration demo\n */\n async run(): Promise<void> {\n console.log('\\n\uD83E\uDD16 Ralph-StackMemory Integration Demo\\n');\n\n try {\n // Phase 1: Initialize\n await this.demonstrateInitialization();\n\n // Phase 2: Run iterations\n await this.demonstrateIterations();\n\n // Phase 3: Show recovery\n await this.demonstrateRecovery();\n\n // Phase 4: Show metrics\n await this.demonstrateMetrics();\n\n console.log('\\n\u2705 Demo completed successfully!\\n');\n } catch (error: any) {\n console.error('\\n\u274C Demo failed:', error.message);\n throw error;\n } finally {\n await this.cleanup();\n }\n }\n\n /**\n * Demonstrate initialization\n */\n private async demonstrateInitialization(): Promise<void> {\n console.log('\uD83D\uDCCB Phase 1: Initialization');\n console.log('==========================');\n\n // Initialize the bridge\n await this.bridge.initialize();\n\n // Create a new loop\n const task = 'Implement user authentication system with JWT';\n const criteria = [\n '- User registration endpoint working',\n '- Login endpoint returns JWT token',\n '- Protected routes validate JWT',\n '- Password hashing implemented',\n '- Tests pass with >80% coverage',\n ].join('\\n');\n\n const loopState = await this.bridge.createNewLoop(task, criteria);\n\n console.log(`\u2713 Created Ralph loop: ${loopState.loopId}`);\n console.log(`\u2713 Task: ${task.substring(0, 50)}...`);\n console.log(`\u2713 Status: ${loopState.status}`);\n console.log(`\u2713 Iteration: ${loopState.iteration}`);\n console.log();\n }\n\n /**\n * Demonstrate iterations with context management\n */\n private async demonstrateIterations(): Promise<void> {\n console.log('\uD83D\uDD04 Phase 2: Iteration Management');\n console.log('=================================');\n\n const maxIterations = 5;\n\n for (let i = 0; i < maxIterations; i++) {\n console.log(`\\n--- Iteration ${i + 1} ---`);\n\n // Run worker iteration\n console.log('\uD83D\uDD27 Running worker iteration...');\n const iteration = await this.bridge.runWorkerIteration();\n\n console.log(`\u2713 Analysis: ${iteration.analysis.filesCount} files, tests ${iteration.analysis.testsPass ? 'pass' : 'fail'}`);\n console.log(`\u2713 Plan: ${iteration.plan.summary}`);\n console.log(`\u2713 Changes: ${iteration.changes.length} modifications`);\n console.log(`\u2713 Validation: ${iteration.validation.testsPass ? 'pass' : 'fail'}`);\n\n // Run reviewer iteration\n console.log('\uD83D\uDC40 Running reviewer iteration...');\n const review = await this.bridge.runReviewerIteration();\n\n if (review.complete) {\n console.log('\uD83C\uDF89 Task completed!');\n break;\n } else {\n console.log(`\uD83D\uDCDD Feedback: ${review.feedback?.substring(0, 100)}...`);\n }\n\n // Show context budget usage\n const usage = this.bridge.getPerformanceMetrics();\n console.log(`\uD83D\uDCCA Token usage: ${usage.tokenCount} / Context load: ${usage.contextLoadTime}ms`);\n\n // Create checkpoint every few iterations\n if ((i + 1) % 3 === 0) {\n console.log('\uD83D\uDCBE Creating checkpoint...');\n const checkpoint = await this.bridge.createCheckpoint();\n console.log(`\u2713 Checkpoint: ${checkpoint.id}`);\n }\n\n // Small delay for demo\n await new Promise(resolve => setTimeout(resolve, 1000));\n }\n }\n\n /**\n * Demonstrate crash recovery\n */\n private async demonstrateRecovery(): Promise<void> {\n console.log('\\n\uD83D\uDE91 Phase 3: Crash Recovery');\n console.log('===========================');\n\n // Simulate getting session ID\n const sessionId = 'demo-session-123';\n\n try {\n console.log('\uD83D\uDD04 Simulating session rehydration...');\n \n // This would normally rehydrate from a real StackMemory session\n // For demo, we'll show the concept\n console.log('\u2713 Loading context from StackMemory...');\n console.log('\u2713 Reconciling state from git, files, and memory...');\n console.log('\u2713 Applying context budget constraints...');\n console.log('\u2713 Resuming from last iteration...');\n\n // Show recovery metrics\n console.log('\uD83D\uDCC8 Recovery successful!');\n console.log(' - Context loaded: 2.1s');\n console.log(' - State reconciled: 0.3s');\n console.log(' - Memory usage: 45MB');\n console.log(' - Cache hit rate: 78%');\n\n } catch (error: any) {\n console.log(`\u26A0\uFE0F Recovery simulation: ${error.message}`);\n }\n }\n\n /**\n * Demonstrate performance metrics\n */\n private async demonstrateMetrics(): Promise<void> {\n console.log('\\n\uD83D\uDCCA Phase 4: Performance Metrics');\n console.log('================================');\n\n const metrics = this.bridge.getPerformanceMetrics();\n\n console.log('Performance Summary:');\n console.log(` Iteration Time: ${metrics.iterationTime}ms avg`);\n console.log(` Context Load Time: ${metrics.contextLoadTime}ms avg`);\n console.log(` State Save Time: ${metrics.stateSaveTime}ms avg`);\n console.log(` Memory Usage: ${Math.round(metrics.memoryUsage / 1024 / 1024)}MB`);\n console.log(` Token Count: ${metrics.tokenCount}`);\n console.log(` Cache Hit Rate: ${Math.round(metrics.cacheHitRate * 100)}%`);\n\n console.log('\\nOptimization Features:');\n console.log(' \u2713 Async frame saves with batching');\n console.log(' \u2713 Context compression and budget management');\n console.log(' \u2713 State reconciliation with conflict resolution');\n console.log(' \u2713 Lifecycle hooks for clean integration');\n console.log(' \u2713 Checkpoint-based recovery');\n }\n\n /**\n * Cleanup resources\n */\n private async cleanup(): Promise<void> {\n console.log('\\n\uD83E\uDDF9 Cleaning up...');\n await this.bridge.cleanup();\n console.log('\u2713 Resources cleaned up');\n }\n}\n\n/**\n * CLI interface\n */\nasync function main() {\n const demo = new RalphIntegrationDemo();\n\n try {\n await demo.run();\n } catch (error: any) {\n console.error('Demo failed:', error.message);\n if (process.env.DEBUG) {\n console.error(error.stack);\n }\n process.exit(1);\n }\n}\n\n// Run if called directly\nif (import.meta.url === `file://${process.argv[1]}`) {\n main().catch(console.error);\n}\n\nexport { RalphIntegrationDemo };"],
|
|
5
|
-
"mappings": "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",
|
|
6
|
-
"names": []
|
|
7
|
-
}
|