@stackmemoryai/stackmemory 0.5.4 → 0.5.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bin/claude-sm +6 -0
- package/bin/claude-smd +6 -0
- package/dist/agents/core/agent-task-manager.js +4 -0
- package/dist/agents/core/agent-task-manager.js.map +1 -1
- package/dist/agents/testing-agent.js +4 -0
- package/dist/agents/testing-agent.js.map +1 -1
- package/dist/agents/verifiers/base-verifier.js +4 -0
- package/dist/agents/verifiers/base-verifier.js.map +1 -1
- package/dist/agents/verifiers/formatter-verifier.js +4 -0
- package/dist/agents/verifiers/formatter-verifier.js.map +1 -1
- package/dist/agents/verifiers/llm-judge.js +4 -0
- package/dist/agents/verifiers/llm-judge.js.map +1 -1
- package/dist/cli/auto-detect.js +4 -0
- package/dist/cli/auto-detect.js.map +1 -1
- package/dist/cli/browser-test.js +4 -0
- package/dist/cli/browser-test.js.map +1 -1
- package/dist/cli/claude-sm-danger.js +21 -0
- package/dist/cli/claude-sm-danger.js.map +7 -0
- package/dist/cli/claude-sm.js +4 -0
- package/dist/cli/claude-sm.js.map +2 -2
- package/dist/cli/codex-sm.js +4 -0
- package/dist/cli/codex-sm.js.map +1 -1
- package/dist/cli/commands/api.js +232 -0
- package/dist/cli/commands/api.js.map +7 -0
- package/dist/cli/commands/cleanup-processes.js +68 -0
- package/dist/cli/commands/cleanup-processes.js.map +7 -0
- package/dist/cli/commands/clear.js +4 -0
- package/dist/cli/commands/clear.js.map +1 -1
- package/dist/cli/commands/config.js +4 -0
- package/dist/cli/commands/config.js.map +1 -1
- package/dist/cli/commands/context-rehydrate.js +4 -0
- package/dist/cli/commands/context-rehydrate.js.map +1 -1
- package/dist/cli/commands/context.js +4 -0
- package/dist/cli/commands/context.js.map +1 -1
- package/dist/cli/commands/dashboard.js +4 -0
- package/dist/cli/commands/dashboard.js.map +1 -1
- package/dist/cli/commands/db.js +4 -0
- package/dist/cli/commands/db.js.map +1 -1
- package/dist/cli/commands/decision.js +4 -0
- package/dist/cli/commands/decision.js.map +1 -1
- package/dist/cli/commands/handoff.js +4 -0
- package/dist/cli/commands/handoff.js.map +1 -1
- package/dist/cli/commands/hooks.js +298 -0
- package/dist/cli/commands/hooks.js.map +7 -0
- package/dist/cli/commands/linear-unified.js +4 -0
- package/dist/cli/commands/linear-unified.js.map +1 -1
- package/dist/cli/commands/linear.js +4 -0
- package/dist/cli/commands/linear.js.map +1 -1
- package/dist/cli/commands/log.js +4 -0
- package/dist/cli/commands/log.js.map +1 -1
- package/dist/cli/commands/login.js +4 -0
- package/dist/cli/commands/login.js.map +1 -1
- package/dist/cli/commands/migrate.js +4 -0
- package/dist/cli/commands/migrate.js.map +1 -1
- package/dist/cli/commands/monitor.js +4 -0
- package/dist/cli/commands/monitor.js.map +1 -1
- package/dist/cli/commands/onboard.js +4 -0
- package/dist/cli/commands/onboard.js.map +1 -1
- package/dist/cli/commands/projects.js +4 -0
- package/dist/cli/commands/projects.js.map +1 -1
- package/dist/cli/commands/quality.js +4 -0
- package/dist/cli/commands/quality.js.map +1 -1
- package/dist/cli/commands/ralph.js +4 -0
- package/dist/cli/commands/ralph.js.map +1 -1
- package/dist/cli/commands/search.js +4 -0
- package/dist/cli/commands/search.js.map +1 -1
- package/dist/cli/commands/service.js +4 -0
- package/dist/cli/commands/service.js.map +1 -1
- package/dist/cli/commands/session.js +4 -0
- package/dist/cli/commands/session.js.map +1 -1
- package/dist/cli/commands/shell.js +249 -0
- package/dist/cli/commands/shell.js.map +7 -0
- package/dist/cli/commands/signup.js +4 -0
- package/dist/cli/commands/signup.js.map +1 -1
- package/dist/cli/commands/skills.js +4 -0
- package/dist/cli/commands/skills.js.map +1 -1
- package/dist/cli/commands/storage-tier.js +4 -0
- package/dist/cli/commands/storage-tier.js.map +1 -1
- package/dist/cli/commands/storage.js +4 -0
- package/dist/cli/commands/storage.js.map +1 -1
- package/dist/cli/commands/sweep.js +5 -4
- package/dist/cli/commands/sweep.js.map +2 -2
- package/dist/cli/commands/tasks.js +4 -0
- package/dist/cli/commands/tasks.js.map +1 -1
- package/dist/cli/commands/test.js +4 -0
- package/dist/cli/commands/test.js.map +1 -1
- package/dist/cli/commands/workflow.js +4 -0
- package/dist/cli/commands/workflow.js.map +1 -1
- package/dist/cli/commands/worktree.js +4 -0
- package/dist/cli/commands/worktree.js.map +1 -1
- package/dist/cli/index.js +13 -1
- package/dist/cli/index.js.map +2 -2
- package/dist/cli/utils/viewer.js +4 -0
- package/dist/cli/utils/viewer.js.map +1 -1
- package/dist/core/analytics/team-analytics.js +4 -0
- package/dist/core/analytics/team-analytics.js.map +1 -1
- package/dist/core/config/config-manager.js +4 -0
- package/dist/core/config/config-manager.js.map +1 -1
- package/dist/core/config/storage-config.js +4 -0
- package/dist/core/config/storage-config.js.map +1 -1
- package/dist/core/config/types.js +4 -0
- package/dist/core/config/types.js.map +1 -1
- package/dist/core/context/auto-context.js +4 -0
- package/dist/core/context/auto-context.js.map +1 -1
- package/dist/core/context/compaction-handler.js +4 -0
- package/dist/core/context/compaction-handler.js.map +1 -1
- package/dist/core/context/context-bridge.js +4 -0
- package/dist/core/context/context-bridge.js.map +1 -1
- package/dist/core/context/dual-stack-manager.js +4 -0
- package/dist/core/context/dual-stack-manager.js.map +1 -1
- package/dist/core/context/enhanced-rehydration.js +4 -0
- package/dist/core/context/enhanced-rehydration.js.map +1 -1
- package/dist/core/context/frame-database.js +4 -0
- package/dist/core/context/frame-database.js.map +1 -1
- package/dist/core/context/frame-digest.js +4 -0
- package/dist/core/context/frame-digest.js.map +1 -1
- package/dist/core/context/frame-handoff-manager.js +4 -0
- package/dist/core/context/frame-handoff-manager.js.map +1 -1
- package/dist/core/context/frame-manager.js +4 -0
- package/dist/core/context/frame-manager.js.map +1 -1
- package/dist/core/context/frame-stack.js +4 -0
- package/dist/core/context/frame-stack.js.map +1 -1
- package/dist/core/context/frame-types.js +4 -0
- package/dist/core/context/incremental-gc.js +4 -0
- package/dist/core/context/incremental-gc.js.map +1 -1
- package/dist/core/context/index.js +4 -0
- package/dist/core/context/index.js.map +1 -1
- package/dist/core/context/model-aware-compaction.js +4 -0
- package/dist/core/context/model-aware-compaction.js.map +1 -1
- package/dist/core/context/permission-manager.js +4 -0
- package/dist/core/context/permission-manager.js.map +1 -1
- package/dist/core/context/recursive-context-manager.js +4 -0
- package/dist/core/context/recursive-context-manager.js.map +1 -1
- package/dist/core/context/refactored-frame-manager.js +4 -0
- package/dist/core/context/refactored-frame-manager.js.map +1 -1
- package/dist/core/context/shared-context-layer.js +4 -0
- package/dist/core/context/shared-context-layer.js.map +1 -1
- package/dist/core/context/stack-merge-resolver.js +4 -0
- package/dist/core/context/stack-merge-resolver.js.map +1 -1
- package/dist/core/context/validation.js +4 -0
- package/dist/core/context/validation.js.map +1 -1
- package/dist/core/database/batch-operations.js +4 -0
- package/dist/core/database/batch-operations.js.map +1 -1
- package/dist/core/database/connection-pool.js +4 -0
- package/dist/core/database/connection-pool.js.map +1 -1
- package/dist/core/database/database-adapter.js +4 -0
- package/dist/core/database/database-adapter.js.map +1 -1
- package/dist/core/database/migration-manager.js +4 -0
- package/dist/core/database/migration-manager.js.map +1 -1
- package/dist/core/database/paradedb-adapter.js +4 -0
- package/dist/core/database/paradedb-adapter.js.map +1 -1
- package/dist/core/database/query-cache.js +4 -0
- package/dist/core/database/query-cache.js.map +1 -1
- package/dist/core/database/query-router.js +4 -0
- package/dist/core/database/query-router.js.map +1 -1
- package/dist/core/database/sqlite-adapter.js +4 -0
- package/dist/core/database/sqlite-adapter.js.map +1 -1
- package/dist/core/digest/enhanced-hybrid-digest.js +4 -0
- package/dist/core/digest/enhanced-hybrid-digest.js.map +1 -1
- package/dist/core/digest/frame-digest-integration.js +4 -0
- package/dist/core/digest/frame-digest-integration.js.map +1 -1
- package/dist/core/digest/hybrid-digest-generator.js +4 -0
- package/dist/core/digest/hybrid-digest-generator.js.map +1 -1
- package/dist/core/digest/index.js +4 -0
- package/dist/core/digest/index.js.map +1 -1
- package/dist/core/digest/types.js +4 -0
- package/dist/core/digest/types.js.map +1 -1
- package/dist/core/errors/index.js +4 -0
- package/dist/core/errors/index.js.map +1 -1
- package/dist/core/errors/recovery.js +4 -0
- package/dist/core/errors/recovery.js.map +1 -1
- package/dist/core/execution/parallel-executor.js +4 -0
- package/dist/core/execution/parallel-executor.js.map +1 -1
- package/dist/core/frame/workflow-templates.js +4 -0
- package/dist/core/frame/workflow-templates.js.map +1 -1
- package/dist/core/merge/conflict-detector.js +4 -0
- package/dist/core/merge/conflict-detector.js.map +1 -1
- package/dist/core/merge/index.js +4 -0
- package/dist/core/merge/index.js.map +1 -1
- package/dist/core/merge/resolution-engine.js +4 -0
- package/dist/core/merge/resolution-engine.js.map +1 -1
- package/dist/core/merge/stack-diff.js +4 -0
- package/dist/core/merge/stack-diff.js.map +1 -1
- package/dist/core/merge/types.js +4 -0
- package/dist/core/monitoring/error-handler.js +4 -0
- package/dist/core/monitoring/error-handler.js.map +1 -1
- package/dist/core/monitoring/logger.js +4 -0
- package/dist/core/monitoring/logger.js.map +1 -1
- package/dist/core/monitoring/metrics.js +4 -0
- package/dist/core/monitoring/metrics.js.map +1 -1
- package/dist/core/monitoring/progress-tracker.js +4 -0
- package/dist/core/monitoring/progress-tracker.js.map +1 -1
- package/dist/core/monitoring/session-monitor.js +4 -0
- package/dist/core/monitoring/session-monitor.js.map +1 -1
- package/dist/core/performance/context-cache.js +4 -0
- package/dist/core/performance/context-cache.js.map +1 -1
- package/dist/core/performance/index.js +4 -0
- package/dist/core/performance/index.js.map +1 -1
- package/dist/core/performance/lazy-context-loader.js +4 -0
- package/dist/core/performance/lazy-context-loader.js.map +1 -1
- package/dist/core/performance/monitor.js +4 -0
- package/dist/core/performance/monitor.js.map +1 -1
- package/dist/core/performance/optimized-frame-context.js +4 -0
- package/dist/core/performance/optimized-frame-context.js.map +1 -1
- package/dist/core/performance/performance-benchmark.js +4 -0
- package/dist/core/performance/performance-benchmark.js.map +1 -1
- package/dist/core/performance/performance-profiler.js +4 -0
- package/dist/core/performance/performance-profiler.js.map +1 -1
- package/dist/core/performance/streaming-jsonl-parser.js +4 -0
- package/dist/core/performance/streaming-jsonl-parser.js.map +1 -1
- package/dist/core/persistence/postgres-adapter.js +4 -0
- package/dist/core/persistence/postgres-adapter.js.map +1 -1
- package/dist/core/projects/project-isolation.js +4 -0
- package/dist/core/projects/project-isolation.js.map +1 -1
- package/dist/core/projects/project-manager.js +4 -0
- package/dist/core/projects/project-manager.js.map +1 -1
- package/dist/core/query/query-parser.js +4 -0
- package/dist/core/query/query-parser.js.map +1 -1
- package/dist/core/query/query-templates.js +4 -0
- package/dist/core/query/query-templates.js.map +1 -1
- package/dist/core/retrieval/context-retriever.js +4 -0
- package/dist/core/retrieval/context-retriever.js.map +1 -1
- package/dist/core/retrieval/graph-retrieval.js +4 -0
- package/dist/core/retrieval/graph-retrieval.js.map +1 -1
- package/dist/core/retrieval/hierarchical-retrieval.js +4 -0
- package/dist/core/retrieval/hierarchical-retrieval.js.map +1 -1
- package/dist/core/retrieval/index.js +4 -0
- package/dist/core/retrieval/index.js.map +1 -1
- package/dist/core/retrieval/llm-context-retrieval.js +4 -0
- package/dist/core/retrieval/llm-context-retrieval.js.map +1 -1
- package/dist/core/retrieval/retrieval-benchmarks.js +4 -0
- package/dist/core/retrieval/retrieval-benchmarks.js.map +1 -1
- package/dist/core/retrieval/summary-generator.js +4 -0
- package/dist/core/retrieval/summary-generator.js.map +1 -1
- package/dist/core/retrieval/types.js +4 -0
- package/dist/core/retrieval/types.js.map +1 -1
- package/dist/core/session/clear-survival.js +4 -0
- package/dist/core/session/clear-survival.js.map +1 -1
- package/dist/core/session/enhanced-handoff.js +4 -0
- package/dist/core/session/enhanced-handoff.js.map +1 -1
- package/dist/core/session/handoff-generator.js +4 -0
- package/dist/core/session/handoff-generator.js.map +1 -1
- package/dist/core/session/index.js +4 -0
- package/dist/core/session/index.js.map +1 -1
- package/dist/core/session/session-manager.js +4 -0
- package/dist/core/session/session-manager.js.map +1 -1
- package/dist/core/skills/index.js +4 -0
- package/dist/core/skills/index.js.map +1 -1
- package/dist/core/skills/skill-storage.js +4 -0
- package/dist/core/skills/skill-storage.js.map +1 -1
- package/dist/core/skills/types.js +4 -0
- package/dist/core/skills/types.js.map +1 -1
- package/dist/core/storage/chromadb-adapter.js +4 -0
- package/dist/core/storage/chromadb-adapter.js.map +1 -1
- package/dist/core/storage/infinite-storage.js +4 -0
- package/dist/core/storage/infinite-storage.js.map +1 -1
- package/dist/core/storage/railway-optimized-storage.js +4 -0
- package/dist/core/storage/railway-optimized-storage.js.map +1 -1
- package/dist/core/storage/remote-storage.js +4 -0
- package/dist/core/storage/remote-storage.js.map +1 -1
- package/dist/core/storage/two-tier-storage.js +4 -0
- package/dist/core/storage/two-tier-storage.js.map +1 -1
- package/dist/core/trace/cli-trace-wrapper.js +4 -0
- package/dist/core/trace/cli-trace-wrapper.js.map +1 -1
- package/dist/core/trace/db-trace-wrapper.js +4 -0
- package/dist/core/trace/db-trace-wrapper.js.map +1 -1
- package/dist/core/trace/debug-trace.js +4 -0
- package/dist/core/trace/debug-trace.js.map +1 -1
- package/dist/core/trace/index.js +4 -0
- package/dist/core/trace/index.js.map +1 -1
- package/dist/core/trace/linear-api-wrapper.js +4 -0
- package/dist/core/trace/linear-api-wrapper.js.map +1 -1
- package/dist/core/trace/trace-demo.js +4 -0
- package/dist/core/trace/trace-demo.js.map +1 -1
- package/dist/core/trace/trace-detector.demo.js +4 -0
- package/dist/core/trace/trace-detector.demo.js.map +1 -1
- package/dist/core/trace/trace-detector.js +4 -0
- package/dist/core/trace/trace-detector.js.map +1 -1
- package/dist/core/trace/trace-store.js +4 -0
- package/dist/core/trace/trace-store.js.map +1 -1
- package/dist/core/trace/types.js +4 -0
- package/dist/core/trace/types.js.map +1 -1
- package/dist/core/types.js +4 -0
- package/dist/core/utils/compression.js +4 -0
- package/dist/core/utils/compression.js.map +1 -1
- package/dist/core/utils/update-checker.js +4 -0
- package/dist/core/utils/update-checker.js.map +1 -1
- package/dist/core/worktree/worktree-manager.js +4 -0
- package/dist/core/worktree/worktree-manager.js.map +1 -1
- package/dist/daemon/session-daemon.js +4 -0
- package/dist/daemon/session-daemon.js.map +1 -1
- package/dist/features/analytics/api/analytics-api.js +4 -0
- package/dist/features/analytics/api/analytics-api.js.map +1 -1
- package/dist/features/analytics/core/analytics-service.js +4 -0
- package/dist/features/analytics/core/analytics-service.js.map +1 -1
- package/dist/features/analytics/index.js +4 -0
- package/dist/features/analytics/index.js.map +1 -1
- package/dist/features/analytics/queries/metrics-queries.js +4 -0
- package/dist/features/analytics/queries/metrics-queries.js.map +1 -1
- package/dist/features/analytics/types/metrics.js +4 -0
- package/dist/features/browser/browser-mcp.js +4 -0
- package/dist/features/browser/browser-mcp.js.map +1 -1
- package/dist/features/tasks/linear-task-manager.js +4 -0
- package/dist/features/tasks/linear-task-manager.js.map +1 -1
- package/dist/features/tasks/task-aware-context.js +4 -0
- package/dist/features/tasks/task-aware-context.js.map +1 -1
- package/dist/features/tui/simple-monitor.js +4 -0
- package/dist/features/tui/simple-monitor.js.map +1 -1
- package/dist/features/tui/swarm-monitor.js +4 -0
- package/dist/features/tui/swarm-monitor.js.map +1 -1
- package/dist/features/web/client/stores/task-store.js +4 -0
- package/dist/features/web/client/stores/task-store.js.map +1 -1
- package/dist/features/web/server/index.js +4 -0
- package/dist/features/web/server/index.js.map +1 -1
- package/dist/hooks/config.js +150 -0
- package/dist/hooks/config.js.map +7 -0
- package/dist/hooks/daemon.js +364 -0
- package/dist/hooks/daemon.js.map +7 -0
- package/dist/hooks/events.js +55 -0
- package/dist/hooks/events.js.map +7 -0
- package/dist/hooks/index.js +8 -0
- package/dist/hooks/index.js.map +7 -0
- package/dist/index.js +4 -0
- package/dist/index.js.map +1 -1
- package/dist/integrations/anthropic/client.js +4 -0
- package/dist/integrations/anthropic/client.js.map +1 -1
- package/dist/integrations/claude-code/agent-bridge.js +4 -0
- package/dist/integrations/claude-code/agent-bridge.js.map +1 -1
- package/dist/integrations/claude-code/enhanced-pre-clear-hooks.js +4 -0
- package/dist/integrations/claude-code/enhanced-pre-clear-hooks.js.map +1 -1
- package/dist/integrations/claude-code/lifecycle-hooks.js +4 -0
- package/dist/integrations/claude-code/lifecycle-hooks.js.map +1 -1
- package/dist/integrations/claude-code/post-task-hooks.js +4 -0
- package/dist/integrations/claude-code/post-task-hooks.js.map +1 -1
- package/dist/integrations/claude-code/subagent-client-stub.js +4 -0
- package/dist/integrations/claude-code/subagent-client-stub.js.map +1 -1
- package/dist/integrations/claude-code/subagent-client.js +4 -0
- package/dist/integrations/claude-code/subagent-client.js.map +1 -1
- package/dist/integrations/claude-code/task-coordinator.js +4 -0
- package/dist/integrations/claude-code/task-coordinator.js.map +1 -1
- package/dist/integrations/linear/auth.js +4 -0
- package/dist/integrations/linear/auth.js.map +1 -1
- package/dist/integrations/linear/auto-sync.js +4 -0
- package/dist/integrations/linear/auto-sync.js.map +1 -1
- package/dist/integrations/linear/client.js +4 -0
- package/dist/integrations/linear/client.js.map +1 -1
- package/dist/integrations/linear/config.js +4 -0
- package/dist/integrations/linear/config.js.map +1 -1
- package/dist/integrations/linear/migration.js +4 -0
- package/dist/integrations/linear/migration.js.map +1 -1
- package/dist/integrations/linear/oauth-server.js +4 -0
- package/dist/integrations/linear/oauth-server.js.map +1 -1
- package/dist/integrations/linear/rest-client.js +4 -0
- package/dist/integrations/linear/rest-client.js.map +1 -1
- package/dist/integrations/linear/sync-manager.js +4 -0
- package/dist/integrations/linear/sync-manager.js.map +1 -1
- package/dist/integrations/linear/sync-service.js +4 -0
- package/dist/integrations/linear/sync-service.js.map +1 -1
- package/dist/integrations/linear/sync.js +4 -0
- package/dist/integrations/linear/sync.js.map +1 -1
- package/dist/integrations/linear/types.js +4 -0
- package/dist/integrations/linear/unified-sync.js +4 -0
- package/dist/integrations/linear/unified-sync.js.map +1 -1
- package/dist/integrations/linear/webhook-handler.js +4 -0
- package/dist/integrations/linear/webhook-handler.js.map +1 -1
- package/dist/integrations/linear/webhook-server.js +4 -0
- package/dist/integrations/linear/webhook-server.js.map +1 -1
- package/dist/integrations/linear/webhook.js +4 -0
- package/dist/integrations/linear/webhook.js.map +1 -1
- package/dist/integrations/mcp/handlers/code-execution-handlers.js +4 -0
- package/dist/integrations/mcp/handlers/code-execution-handlers.js.map +1 -1
- package/dist/integrations/mcp/handlers/context-handlers.js +4 -0
- package/dist/integrations/mcp/handlers/context-handlers.js.map +1 -1
- package/dist/integrations/mcp/handlers/index.js +4 -0
- package/dist/integrations/mcp/handlers/index.js.map +1 -1
- package/dist/integrations/mcp/handlers/linear-handlers.js +4 -0
- package/dist/integrations/mcp/handlers/linear-handlers.js.map +1 -1
- package/dist/integrations/mcp/handlers/skill-handlers.js +4 -0
- package/dist/integrations/mcp/handlers/skill-handlers.js.map +1 -1
- package/dist/integrations/mcp/handlers/task-handlers.js +4 -0
- package/dist/integrations/mcp/handlers/task-handlers.js.map +1 -1
- package/dist/integrations/mcp/handlers/trace-handlers.js +4 -0
- package/dist/integrations/mcp/handlers/trace-handlers.js.map +1 -1
- package/dist/integrations/mcp/index.js +4 -0
- package/dist/integrations/mcp/index.js.map +1 -1
- package/dist/integrations/mcp/middleware/tool-scoring.js +4 -0
- package/dist/integrations/mcp/middleware/tool-scoring.js.map +1 -1
- package/dist/integrations/mcp/refactored-server.js +4 -0
- package/dist/integrations/mcp/refactored-server.js.map +1 -1
- package/dist/integrations/mcp/server.js +4 -0
- package/dist/integrations/mcp/server.js.map +1 -1
- package/dist/integrations/mcp/tool-definitions-code.js +4 -0
- package/dist/integrations/mcp/tool-definitions-code.js.map +1 -1
- package/dist/integrations/mcp/tool-definitions.js +4 -0
- package/dist/integrations/mcp/tool-definitions.js.map +1 -1
- package/dist/integrations/mcp/trace-test.js +4 -0
- package/dist/integrations/mcp/trace-test.js.map +1 -1
- package/dist/integrations/pg-aiguide/embedding-provider.js +4 -0
- package/dist/integrations/pg-aiguide/embedding-provider.js.map +1 -1
- package/dist/integrations/pg-aiguide/semantic-search.js +4 -0
- package/dist/integrations/pg-aiguide/semantic-search.js.map +1 -1
- package/dist/integrations/pg-aiguide/timescale-analytics.js +4 -0
- package/dist/integrations/pg-aiguide/timescale-analytics.js.map +1 -1
- package/dist/integrations/ralph/bridge/ralph-stackmemory-bridge.js +4 -0
- package/dist/integrations/ralph/bridge/ralph-stackmemory-bridge.js.map +1 -1
- package/dist/integrations/ralph/context/context-budget-manager.js +4 -0
- package/dist/integrations/ralph/context/context-budget-manager.js.map +1 -1
- package/dist/integrations/ralph/context/stackmemory-context-loader.js +4 -0
- package/dist/integrations/ralph/context/stackmemory-context-loader.js.map +1 -1
- package/dist/integrations/ralph/coordination/enhanced-coordination.js +4 -0
- package/dist/integrations/ralph/coordination/enhanced-coordination.js.map +1 -1
- package/dist/integrations/ralph/index.js +4 -0
- package/dist/integrations/ralph/index.js.map +1 -1
- package/dist/integrations/ralph/learning/pattern-learner.js +4 -0
- package/dist/integrations/ralph/learning/pattern-learner.js.map +1 -1
- package/dist/integrations/ralph/lifecycle/iteration-lifecycle.js +4 -0
- package/dist/integrations/ralph/lifecycle/iteration-lifecycle.js.map +1 -1
- package/dist/integrations/ralph/monitoring/swarm-dashboard.js +4 -0
- package/dist/integrations/ralph/monitoring/swarm-dashboard.js.map +1 -1
- package/dist/integrations/ralph/monitoring/swarm-registry.js +4 -0
- package/dist/integrations/ralph/monitoring/swarm-registry.js.map +1 -1
- package/dist/integrations/ralph/orchestration/multi-loop-orchestrator.js +4 -0
- package/dist/integrations/ralph/orchestration/multi-loop-orchestrator.js.map +1 -1
- package/dist/integrations/ralph/patterns/compounding-engineering-pattern.js +4 -0
- package/dist/integrations/ralph/patterns/compounding-engineering-pattern.js.map +1 -1
- package/dist/integrations/ralph/patterns/extended-coherence-sessions.js +4 -0
- package/dist/integrations/ralph/patterns/extended-coherence-sessions.js.map +1 -1
- package/dist/integrations/ralph/patterns/oracle-worker-pattern.js +4 -0
- package/dist/integrations/ralph/patterns/oracle-worker-pattern.js.map +1 -1
- package/dist/integrations/ralph/performance/performance-optimizer.js +4 -0
- package/dist/integrations/ralph/performance/performance-optimizer.js.map +1 -1
- package/dist/integrations/ralph/ralph-integration-demo.js +4 -0
- package/dist/integrations/ralph/ralph-integration-demo.js.map +1 -1
- package/dist/integrations/ralph/recovery/crash-recovery.js +4 -0
- package/dist/integrations/ralph/recovery/crash-recovery.js.map +1 -1
- package/dist/integrations/ralph/state/state-reconciler.js +4 -0
- package/dist/integrations/ralph/state/state-reconciler.js.map +1 -1
- package/dist/integrations/ralph/swarm/git-workflow-manager.js +4 -0
- package/dist/integrations/ralph/swarm/git-workflow-manager.js.map +1 -1
- package/dist/integrations/ralph/swarm/swarm-coordinator.js +4 -0
- package/dist/integrations/ralph/swarm/swarm-coordinator.js.map +1 -1
- package/dist/integrations/ralph/types.js +4 -0
- package/dist/integrations/ralph/visualization/ralph-debugger.js +4 -0
- package/dist/integrations/ralph/visualization/ralph-debugger.js.map +1 -1
- package/dist/mcp/stackmemory-mcp-server.js +4 -0
- package/dist/mcp/stackmemory-mcp-server.js.map +1 -1
- package/dist/middleware/exponential-rate-limiter.js +4 -0
- package/dist/middleware/exponential-rate-limiter.js.map +1 -1
- package/dist/models/user.model.js +4 -0
- package/dist/models/user.model.js.map +1 -1
- package/dist/servers/production/auth-middleware.js +4 -0
- package/dist/servers/production/auth-middleware.js.map +1 -1
- package/dist/servers/railway/config.js +4 -0
- package/dist/servers/railway/config.js.map +1 -1
- package/dist/servers/railway/index-enhanced.js +4 -0
- package/dist/servers/railway/index-enhanced.js.map +1 -1
- package/dist/servers/railway/index.js +4 -0
- package/dist/servers/railway/index.js.map +1 -1
- package/dist/servers/railway/simple.js +4 -0
- package/dist/servers/railway/simple.js.map +1 -1
- package/dist/servers/railway/storage-test.js +4 -0
- package/dist/servers/railway/storage-test.js.map +1 -1
- package/dist/services/config-service.js +4 -0
- package/dist/services/config-service.js.map +1 -1
- package/dist/services/context-service.js +4 -0
- package/dist/services/context-service.js.map +1 -1
- package/dist/skills/api-discovery.js +353 -0
- package/dist/skills/api-discovery.js.map +7 -0
- package/dist/skills/api-skill.js +475 -0
- package/dist/skills/api-skill.js.map +7 -0
- package/dist/skills/claude-skills.js +53 -1
- package/dist/skills/claude-skills.js.map +2 -2
- package/dist/skills/dashboard-launcher.js +4 -0
- package/dist/skills/dashboard-launcher.js.map +1 -1
- package/dist/skills/recursive-agent-orchestrator.js +4 -0
- package/dist/skills/recursive-agent-orchestrator.js.map +1 -1
- package/dist/skills/repo-ingestion-skill.js +4 -0
- package/dist/skills/repo-ingestion-skill.js.map +1 -1
- package/dist/skills/security-secrets-scanner.js +4 -0
- package/dist/skills/security-secrets-scanner.js.map +1 -1
- package/dist/skills/unified-rlm-orchestrator.js +4 -0
- package/dist/skills/unified-rlm-orchestrator.js.map +1 -1
- package/dist/types/task.js +4 -0
- package/dist/utils/env.js +4 -0
- package/dist/utils/env.js.map +1 -1
- package/dist/utils/formatting.js +4 -0
- package/dist/utils/formatting.js.map +1 -1
- package/dist/utils/process-cleanup.js +136 -0
- package/dist/utils/process-cleanup.js.map +7 -0
- package/dist/validation/schemas.js +4 -0
- package/dist/validation/schemas.js.map +1 -1
- package/package.json +4 -2
- package/templates/shell/sweep-complete.zsh +116 -0
- package/templates/shell/sweep-suggest.js +161 -0
|
@@ -2,6 +2,6 @@
|
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../src/integrations/ralph/swarm/git-workflow-manager.ts"],
|
|
4
4
|
"sourcesContent": ["/**\n * Git Workflow Manager for Swarm Agents\n * Manages git operations, branching, and commits for each agent\n */\n\nimport { execSync } from 'child_process';\nimport { logger } from '../../../core/monitoring/logger.js';\nimport { Agent, SwarmTask } from '../types.js';\n\nexport interface GitConfig {\n enableGitWorkflow: boolean;\n branchStrategy: 'feature' | 'agent' | 'task';\n autoCommit: boolean;\n commitFrequency: number; // minutes\n mergStrategy: 'squash' | 'merge' | 'rebase';\n requirePR: boolean;\n}\n\nexport class GitWorkflowManager {\n private config: GitConfig;\n private agentBranches: Map<string, string> = new Map();\n private baselineBranch: string;\n private mainBranch: string;\n\n constructor(config?: Partial<GitConfig>) {\n this.config = {\n enableGitWorkflow: true,\n branchStrategy: 'agent',\n autoCommit: true,\n commitFrequency: 5,\n mergStrategy: 'squash',\n requirePR: false,\n ...config,\n };\n\n // Get current branch as baseline\n try {\n this.baselineBranch = this.getCurrentBranch();\n this.mainBranch = this.getMainBranch();\n } catch (error) {\n logger.warn('Git not initialized, workflow features disabled');\n this.config.enableGitWorkflow = false;\n }\n }\n\n /**\n * Initialize git workflow for an agent\n */\n async initializeAgentWorkflow(agent: Agent, task: SwarmTask): Promise<void> {\n if (!this.config.enableGitWorkflow) return;\n\n let branchName = this.generateBranchName(agent, task);\n\n try {\n // Check if branch already exists and handle accordingly\n if (this.branchExists(branchName)) {\n // Branch exists, either reuse or create unique name\n const existingHasChanges = this.branchHasUnmergedChanges(branchName);\n\n if (existingHasChanges) {\n // Create a unique branch name by adding timestamp\n const timestamp = Date.now();\n branchName = `${branchName}-${timestamp}`;\n logger.info(\n `Branch already exists with changes, creating unique branch: ${branchName}`\n );\n this.createBranch(branchName);\n } else {\n // Reuse existing branch\n logger.info(\n `Reusing existing branch for agent ${agent.role}: ${branchName}`\n );\n this.checkoutBranch(branchName);\n }\n } else {\n // Create new branch\n this.createBranch(branchName);\n logger.info(\n `Created git branch for agent ${agent.role}: ${branchName}`\n );\n }\n\n this.agentBranches.set(agent.id, branchName);\n\n // Set up commit timer if auto-commit enabled\n if (this.config.autoCommit) {\n this.scheduleAutoCommit(agent, task);\n }\n } catch (error: unknown) {\n logger.error(\n `Failed to initialize git workflow for agent ${agent.role}`,\n error as Error\n );\n }\n }\n\n /**\n * Commit agent work\n */\n async commitAgentWork(\n agent: Agent,\n task: SwarmTask,\n message?: string\n ): Promise<void> {\n if (!this.config.enableGitWorkflow) return;\n\n const branchName = this.agentBranches.get(agent.id);\n if (!branchName) {\n logger.warn(`No branch found for agent ${agent.id}`);\n return;\n }\n\n try {\n // Ensure we're on the agent's branch\n this.checkoutBranch(branchName);\n\n // Check for changes\n const hasChanges = this.hasUncommittedChanges();\n if (!hasChanges) {\n logger.debug(`No changes to commit for agent ${agent.role}`);\n return;\n }\n\n // Stage all changes\n execSync('git add -A', { encoding: 'utf8' });\n\n // Generate commit message\n const commitMessage = message || this.generateCommitMessage(agent, task);\n\n // Commit changes\n execSync(`git commit -m \"${commitMessage}\"`, { encoding: 'utf8' });\n\n logger.info(`Agent ${agent.role} committed: ${commitMessage}`);\n\n // Push if remote exists\n if (this.hasRemote()) {\n try {\n execSync(`git push origin ${branchName}`, { encoding: 'utf8' });\n logger.info(`Pushed branch ${branchName} to remote`);\n } catch (error) {\n logger.warn(`Could not push to remote: ${error}`);\n }\n }\n } catch (error: unknown) {\n logger.error(`Failed to commit agent work`, error as Error);\n }\n }\n\n /**\n * Merge agent work back to baseline\n */\n async mergeAgentWork(agent: Agent, task: SwarmTask): Promise<void> {\n if (!this.config.enableGitWorkflow) return;\n\n const branchName = this.agentBranches.get(agent.id);\n if (!branchName) {\n logger.warn(`No branch found for agent ${agent.id}`);\n return;\n }\n\n try {\n // Switch to baseline branch\n this.checkoutBranch(this.baselineBranch);\n\n if (this.config.requirePR) {\n // Create pull request\n await this.createPullRequest(agent, task, branchName);\n } else {\n // Direct merge based on strategy\n this.mergeBranch(branchName);\n logger.info(`Merged agent ${agent.role} work from ${branchName}`);\n }\n\n // Clean up branch\n this.deleteBranch(branchName);\n this.agentBranches.delete(agent.id);\n } catch (error: unknown) {\n logger.error(`Failed to merge agent work`, error as Error);\n }\n }\n\n /**\n * Coordinate merges between multiple agents\n */\n async coordinateMerges(agents: Agent[]): Promise<void> {\n if (!this.config.enableGitWorkflow) return;\n\n logger.info('Coordinating merges from all agents');\n\n // Create integration branch\n const integrationBranch = `swarm-integration-${Date.now()}`;\n this.createBranch(integrationBranch);\n\n // Merge each agent's work\n for (const agent of agents) {\n const branchName = this.agentBranches.get(agent.id);\n if (branchName && this.branchExists(branchName)) {\n try {\n this.mergeBranch(branchName);\n logger.info(`Integrated ${agent.role} work`);\n } catch (error) {\n logger.error(`Failed to integrate ${agent.role} work: ${error}`);\n }\n }\n }\n\n // Run tests on integration branch\n const testsPass = await this.runIntegrationTests();\n\n if (testsPass) {\n // Merge to baseline\n this.checkoutBranch(this.baselineBranch);\n this.mergeBranch(integrationBranch);\n logger.info('Successfully integrated all agent work');\n } else {\n logger.warn(\n 'Integration tests failed, keeping changes in branch: ' +\n integrationBranch\n );\n }\n }\n\n /**\n * Handle merge conflicts\n */\n async resolveConflicts(agent: Agent): Promise<void> {\n const conflicts = this.getConflictedFiles();\n\n if (conflicts.length === 0) return;\n\n logger.warn(\n `Agent ${agent.role} encountering merge conflicts: ${conflicts.join(', ')}`\n );\n\n // Strategy 1: Try to auto-resolve\n for (const file of conflicts) {\n try {\n // Accept current changes for agent's own files\n if (this.isAgentFile(file, agent)) {\n execSync(`git checkout --ours ${file}`, { encoding: 'utf8' });\n execSync(`git add ${file}`, { encoding: 'utf8' });\n } else {\n // Accept incoming changes for other files\n execSync(`git checkout --theirs ${file}`, { encoding: 'utf8' });\n execSync(`git add ${file}`, { encoding: 'utf8' });\n }\n } catch (error) {\n logger.error(`Could not auto-resolve conflict in ${file}`);\n }\n }\n\n // Complete merge if all conflicts resolved\n const remainingConflicts = this.getConflictedFiles();\n if (remainingConflicts.length === 0) {\n execSync('git commit --no-edit', { encoding: 'utf8' });\n logger.info('All conflicts resolved automatically');\n } else {\n logger.error(\n `Manual intervention needed for: ${remainingConflicts.join(', ')}`\n );\n }\n }\n\n // Private helper methods\n private getCurrentBranch(): string {\n return execSync('git rev-parse --abbrev-ref HEAD', {\n encoding: 'utf8',\n }).trim();\n }\n\n private getMainBranch(): string {\n try {\n // Try to detect main branch\n const branches = execSync('git branch -r', { encoding: 'utf8' });\n if (branches.includes('origin/main')) return 'main';\n if (branches.includes('origin/master')) return 'master';\n } catch (error) {\n // Fallback to current branch\n }\n return this.getCurrentBranch();\n }\n\n private generateBranchName(agent: Agent, task: SwarmTask): string {\n const sanitizedTitle = task.title\n .toLowerCase()\n .replace(/\\s+/g, '-')\n .replace(/[^a-z0-9-]/g, '')\n .substring(0, 30);\n\n switch (this.config.branchStrategy) {\n case 'feature':\n return `feature/${sanitizedTitle}`;\n case 'task':\n return `task/${task.id}`;\n case 'agent':\n default:\n return `swarm/${agent.role}-${sanitizedTitle}`;\n }\n }\n\n private createBranch(branchName: string): void {\n execSync(`git checkout -b ${branchName}`, { encoding: 'utf8' });\n }\n\n private checkoutBranch(branchName: string): void {\n execSync(`git checkout ${branchName}`, { encoding: 'utf8' });\n }\n\n private branchExists(branchName: string): boolean {\n try {\n execSync(`git rev-parse --verify ${branchName}`, {\n encoding: 'utf8',\n stdio: 'pipe',\n });\n return true;\n } catch {\n return false;\n }\n }\n\n private deleteBranch(branchName: string): void {\n try {\n execSync(`git branch -d ${branchName}`, { encoding: 'utf8' });\n } catch (error) {\n // Force delete if needed\n execSync(`git branch -D ${branchName}`, { encoding: 'utf8' });\n }\n }\n\n private mergeBranch(branchName: string): void {\n const strategy = this.config.mergStrategy;\n\n switch (strategy) {\n case 'squash':\n execSync(`git merge --squash ${branchName}`, { encoding: 'utf8' });\n execSync('git commit -m \"Squashed agent changes\"', {\n encoding: 'utf8',\n });\n break;\n case 'rebase':\n execSync(`git rebase ${branchName}`, { encoding: 'utf8' });\n break;\n case 'merge':\n default:\n execSync(`git merge ${branchName}`, { encoding: 'utf8' });\n break;\n }\n }\n\n private hasUncommittedChanges(): boolean {\n const status = execSync('git status --porcelain', { encoding: 'utf8' });\n return status.trim().length > 0;\n }\n\n private hasRemote(): boolean {\n try {\n execSync('git remote get-url origin', { encoding: 'utf8' });\n return true;\n } catch {\n return false;\n }\n }\n\n private getConflictedFiles(): string[] {\n try {\n const conflicts = execSync('git diff --name-only --diff-filter=U', {\n encoding: 'utf8',\n });\n return conflicts\n .trim()\n .split('\\n')\n .filter((f) => f.length > 0);\n } catch {\n return [];\n }\n }\n\n private isAgentFile(file: string, agent: Agent): boolean {\n // Simple heuristic: check if file is in agent's working directory\n return file.includes(agent.role) || file.includes(agent.id);\n }\n\n private generateCommitMessage(agent: Agent, task: SwarmTask): string {\n return `[${agent.role}] ${task.title} - Iteration ${agent.performance?.tasksCompleted || 1}`;\n }\n\n private scheduleAutoCommit(agent: Agent, task: SwarmTask): void {\n const intervalMs = this.config.commitFrequency * 60 * 1000;\n\n setInterval(async () => {\n await this.commitAgentWork(\n agent,\n task,\n `[${agent.role}] Auto-commit: ${task.title}`\n );\n }, intervalMs);\n }\n\n private async createPullRequest(\n agent: Agent,\n task: SwarmTask,\n branchName: string\n ): Promise<void> {\n try {\n const title = `[Swarm ${agent.role}] ${task.title}`;\n const body = `\n## Agent: ${agent.role}\n## Task: ${task.title}\n\n### Acceptance Criteria:\n${task.acceptanceCriteria.map((c) => `- ${c}`).join('\\n')}\n\n### Status:\n- Tasks Completed: ${agent.performance?.tasksCompleted || 0}\n- Success Rate: ${agent.performance?.successRate || 0}%\n\nGenerated by Swarm Coordinator\n `;\n\n execSync(\n `gh pr create --title \"${title}\" --body \"${body}\" --base ${this.baselineBranch}`,\n {\n encoding: 'utf8',\n }\n );\n\n logger.info(`Created PR for agent ${agent.role}`);\n } catch (error) {\n logger.warn(`Could not create PR: ${error}`);\n }\n }\n\n private async runIntegrationTests(): Promise<boolean> {\n try {\n // Try to run tests\n execSync('npm test', { encoding: 'utf8' });\n return true;\n } catch {\n // Tests failed or not available\n return false;\n }\n }\n\n private branchHasUnmergedChanges(branchName: string): boolean {\n try {\n // Check if branch has commits not in the current branch\n const currentBranch = this.getCurrentBranch();\n const unmerged = execSync(\n `git log ${currentBranch}..${branchName} --oneline`,\n { encoding: 'utf8', stdio: 'pipe' }\n );\n return unmerged.trim().length > 0;\n } catch {\n // If we can't determine, assume it has changes to be safe\n return true;\n }\n }\n\n /**\n * Get status of all agent branches\n */\n getGitStatus(): object {\n const status: any = {\n enabled: this.config.enableGitWorkflow,\n currentBranch: this.getCurrentBranch(),\n agentBranches: Array.from(this.agentBranches.entries()).map(\n ([agentId, branch]) => ({\n agentId,\n branch,\n exists: this.branchExists(branch),\n })\n ),\n hasUncommittedChanges: this.hasUncommittedChanges(),\n };\n\n return status;\n }\n}\n\nexport const gitWorkflowManager = new GitWorkflowManager();\n"],
|
|
5
|
-
"mappings": "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",
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -1,3 +1,7 @@
|
|
|
1
|
+
import { fileURLToPath as __fileURLToPath } from 'url';
|
|
2
|
+
import { dirname as __pathDirname } from 'path';
|
|
3
|
+
const __filename = __fileURLToPath(import.meta.url);
|
|
4
|
+
const __dirname = __pathDirname(__filename);
|
|
1
5
|
import { v4 as uuidv4 } from "uuid";
|
|
2
6
|
import * as fs from "fs/promises";
|
|
3
7
|
import * as path from "path";
|
|
@@ -2,6 +2,6 @@
|
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../src/integrations/ralph/swarm/swarm-coordinator.ts"],
|
|
4
4
|
"sourcesContent": ["/**\n * Swarm Coordination System for StackMemory\n * Orchestrates multiple specialized agents working together on the same codebase\n * Addresses multi-agent coordination challenges with role specialization and dynamic planning\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 { FrameManager } from '../../../core/context/frame-manager.js';\nimport { sessionManager } from '../../../core/session/index.js';\nimport { sharedContextLayer } from '../../../core/context/shared-context-layer.js';\nimport { RalphStackMemoryBridge } from '../bridge/ralph-stackmemory-bridge.js';\nimport { GitWorkflowManager } from './git-workflow-manager.js';\nimport { SwarmRegistry } from '../monitoring/swarm-registry.js';\nimport {\n SwarmConfiguration,\n Agent,\n AgentRole,\n SwarmTask,\n CoordinationEvent,\n SwarmState,\n TaskAllocation,\n AgentSpecialization,\n} from '../types.js';\n\nexport interface SwarmCoordinatorConfig {\n maxAgents: number;\n coordinationInterval: number;\n driftDetectionThreshold: number;\n freshStartInterval: number;\n conflictResolutionStrategy: 'democratic' | 'hierarchical' | 'expertise';\n enableDynamicPlanning: boolean;\n pathologicalBehaviorDetection: boolean;\n}\n\nexport class SwarmCoordinator {\n private frameManager?: FrameManager;\n private activeAgents: Map<string, Agent> = new Map();\n private swarmState: SwarmState;\n private config: SwarmCoordinatorConfig;\n private coordinationTimer?: NodeJS.Timeout;\n private plannerWakeupQueue: Map<string, () => void> = new Map();\n private gitWorkflowManager: GitWorkflowManager;\n private registeredSwarmId?: string;\n\n get swarmId(): string | undefined {\n return this.registeredSwarmId;\n }\n\n get agents(): Agent[] {\n return Array.from(this.activeAgents.values());\n }\n\n constructor(config?: Partial<SwarmCoordinatorConfig>) {\n this.config = {\n maxAgents: 10,\n coordinationInterval: 30000, // 30 seconds\n driftDetectionThreshold: 5, // 5 failed iterations before considering drift\n freshStartInterval: 3600000, // 1 hour\n conflictResolutionStrategy: 'expertise',\n enableDynamicPlanning: true,\n pathologicalBehaviorDetection: true,\n ...config,\n };\n\n this.swarmState = {\n id: uuidv4(),\n status: 'idle',\n startTime: Date.now(),\n activeTaskCount: 0,\n completedTaskCount: 0,\n coordination: {\n events: [],\n conflicts: [],\n resolutions: [],\n },\n performance: {\n throughput: 0,\n efficiency: 0,\n coordination_overhead: 0,\n },\n };\n\n // Initialize git workflow manager\n this.gitWorkflowManager = new GitWorkflowManager({\n enableGitWorkflow: true,\n branchStrategy: 'agent',\n autoCommit: true,\n commitFrequency: 5,\n mergStrategy: 'squash',\n });\n\n logger.info('Swarm coordinator initialized', this.config);\n }\n\n async initialize(): Promise<void> {\n try {\n await sessionManager.initialize();\n await sharedContextLayer.initialize();\n\n const session = await sessionManager.getOrCreateSession({});\n if (session.database) {\n this.frameManager = new FrameManager(\n session.database,\n session.projectId\n );\n }\n\n // Start coordination monitoring\n this.startCoordinationLoop();\n\n // Register with global swarm registry for TUI monitoring\n const registry = SwarmRegistry.getInstance();\n this.registeredSwarmId = registry.registerSwarm(\n this,\n `Swarm ${this.swarmState.id.substring(0, 8)}`\n );\n\n logger.info('Swarm coordinator initialized successfully');\n } catch (error: unknown) {\n logger.error('Failed to initialize swarm coordinator', error as Error);\n throw error;\n }\n }\n\n /**\n * Launch a swarm of agents to work on a complex project\n */\n async launchSwarm(\n projectDescription: string,\n agents: AgentSpecialization[],\n coordination?: SwarmConfiguration\n ): Promise<string> {\n logger.info('Launching swarm', {\n project: projectDescription.substring(0, 100),\n agentCount: agents.length,\n });\n\n const swarmId = uuidv4();\n\n try {\n // 1. Validate swarm configuration\n if (agents.length > this.config.maxAgents) {\n throw new Error(\n `Too many agents requested: ${agents.length} > ${this.config.maxAgents}`\n );\n }\n\n // 2. Break down project into swarm tasks\n const swarmTasks =\n await this.decomposeProjectIntoSwarmTasks(projectDescription);\n\n // 3. Initialize specialized agents\n const initializedAgents = await this.initializeSpecializedAgents(\n agents,\n swarmTasks\n );\n\n // 4. Create task allocation plan\n const allocation = await this.allocateTasksToAgents(\n swarmTasks,\n initializedAgents\n );\n\n // 5. Begin swarm execution\n this.swarmState = {\n ...this.swarmState,\n id: swarmId,\n status: 'active',\n activeTaskCount: swarmTasks.length,\n project: projectDescription,\n agents: initializedAgents,\n tasks: swarmTasks,\n allocation,\n };\n\n // 6. Start agent execution\n await this.executeSwarmTasks(allocation);\n\n logger.info('Swarm launched successfully', {\n swarmId,\n agentCount: initializedAgents.length,\n });\n return swarmId;\n } catch (error: unknown) {\n logger.error('Failed to launch swarm', error as Error);\n throw error;\n }\n }\n\n /**\n * Decompose project into tasks suitable for swarm execution\n */\n private async decomposeProjectIntoSwarmTasks(\n projectDescription: string\n ): Promise<SwarmTask[]> {\n const tasks: SwarmTask[] = [];\n\n // Analyze project complexity and decompose based on patterns\n const complexity = this.analyzeProjectComplexity(projectDescription);\n\n // Pattern 1: Architecture and Planning\n if (complexity.needsArchitecture) {\n tasks.push({\n id: uuidv4(),\n type: 'architecture',\n title: 'System Architecture Design',\n description:\n 'Design overall system architecture and component relationships',\n priority: 1,\n estimatedEffort: 'high',\n requiredRoles: ['architect', 'system_designer'],\n dependencies: [],\n acceptanceCriteria: [\n 'Architecture diagram created',\n 'Component interfaces defined',\n 'Data flow documented',\n ],\n });\n }\n\n // Pattern 2: Core Implementation Tasks\n const coreFeatures = this.extractCoreFeatures(projectDescription);\n for (const feature of coreFeatures) {\n tasks.push({\n id: uuidv4(),\n type: 'implementation',\n title: `Implement ${feature.name}`,\n description: feature.description,\n priority: 2,\n estimatedEffort: feature.complexity,\n requiredRoles: ['developer', feature.specialization || 'fullstack'],\n dependencies: complexity.needsArchitecture ? [tasks[0].id] : [],\n acceptanceCriteria: feature.criteria,\n });\n }\n\n // Pattern 3: Testing and Validation\n if (complexity.needsTesting) {\n tasks.push({\n id: uuidv4(),\n type: 'testing',\n title: 'Comprehensive Testing Suite',\n description: 'Create unit, integration, and end-to-end tests',\n priority: 3,\n estimatedEffort: 'medium',\n requiredRoles: ['qa_engineer', 'test_automation'],\n dependencies: tasks\n .filter((t) => t.type === 'implementation')\n .map((t) => t.id),\n acceptanceCriteria: [\n 'Unit tests achieve >90% coverage',\n 'Integration tests pass',\n 'Performance benchmarks met',\n ],\n });\n }\n\n // Pattern 4: Documentation and Polish\n if (complexity.needsDocumentation) {\n tasks.push({\n id: uuidv4(),\n type: 'documentation',\n title: 'Documentation and Examples',\n description: 'Create user documentation, API docs, and usage examples',\n priority: 4,\n estimatedEffort: 'low',\n requiredRoles: ['technical_writer', 'developer'],\n dependencies: [], // Can run in parallel\n acceptanceCriteria: [\n 'README with setup instructions',\n 'API documentation complete',\n 'Usage examples provided',\n ],\n });\n }\n\n return tasks;\n }\n\n /**\n * Initialize specialized agents with role-specific configurations\n */\n private async initializeSpecializedAgents(\n specifications: AgentSpecialization[],\n tasks: SwarmTask[]\n ): Promise<Agent[]> {\n const agents: Agent[] = [];\n\n for (const spec of specifications) {\n const agent: Agent = {\n id: uuidv4(),\n role: spec.role,\n specialization: spec,\n status: 'initializing',\n capabilities: this.defineCapabilities(spec.role),\n workingDirectory: `.swarm/${spec.role}-${Date.now()}`,\n currentTask: null,\n performance: {\n tasksCompleted: 0,\n successRate: 1.0,\n averageTaskTime: 0,\n driftDetected: false,\n lastFreshStart: Date.now(),\n },\n coordination: {\n communicationStyle: this.defineCommuncationStyle(spec.role),\n conflictResolution: spec.conflictResolution || 'defer_to_expertise',\n collaborationPreferences: spec.collaborationPreferences || [],\n },\n };\n\n // Initialize agent's working environment\n await this.setupAgentEnvironment(agent);\n\n // Configure role-specific prompting strategies\n await this.configureAgentPrompts(agent);\n\n agents.push(agent);\n this.activeAgents.set(agent.id, agent);\n }\n\n logger.info(`Initialized ${agents.length} specialized agents`);\n return agents;\n }\n\n /**\n * Allocate tasks to agents based on specialization and workload\n */\n private async allocateTasksToAgents(\n tasks: SwarmTask[],\n agents: Agent[]\n ): Promise<TaskAllocation> {\n const allocation: TaskAllocation = {\n assignments: new Map(),\n loadBalancing: 'capability_based',\n conflictResolution: this.config.conflictResolutionStrategy,\n };\n\n // Sort tasks by priority and dependencies\n const sortedTasks = this.topologicalSort(tasks);\n\n for (const task of sortedTasks) {\n // Find best-suited agents for this task\n const suitableAgents = agents.filter((agent) =>\n task.requiredRoles.some((role) => this.agentCanHandle(agent, role))\n );\n\n if (suitableAgents.length === 0) {\n logger.warn(`No suitable agents found for task: ${task.title}`);\n continue;\n }\n\n // Select agent based on workload and expertise\n const selectedAgent = this.selectOptimalAgent(suitableAgents, task);\n\n allocation.assignments.set(task.id, {\n agentId: selectedAgent.id,\n taskId: task.id,\n assignedAt: Date.now(),\n estimatedCompletion: Date.now() + this.estimateTaskDuration(task),\n coordination: {\n collaborators: this.findCollaborators(selectedAgent, task, agents),\n reviewers: this.findReviewers(selectedAgent, task, agents),\n },\n });\n\n // Update agent workload\n selectedAgent.currentTask = task.id;\n }\n\n return allocation;\n }\n\n /**\n * Execute swarm tasks with coordination\n */\n private async executeSwarmTasks(allocation: TaskAllocation): Promise<void> {\n const executionPromises: Promise<void>[] = [];\n\n for (const [taskId, assignment] of allocation.assignments) {\n const agent = this.activeAgents.get(assignment.agentId);\n const task = this.swarmState.tasks?.find((t) => t.id === taskId);\n\n if (!agent || !task) continue;\n\n // Create execution promise for each agent\n const executionPromise = this.executeAgentTask(agent, task, assignment);\n executionPromises.push(executionPromise);\n }\n\n // Monitor all executions\n await Promise.allSettled(executionPromises);\n }\n\n /**\n * Execute a single agent task with coordination\n */\n private async executeAgentTask(\n agent: Agent,\n task: SwarmTask,\n assignment: any\n ): Promise<void> {\n logger.info(`Agent ${agent.role} starting task: ${task.title}`);\n\n try {\n agent.status = 'active';\n\n // Initialize git workflow for this agent\n await this.gitWorkflowManager.initializeAgentWorkflow(agent, task);\n\n // Create Ralph loop for this agent/task\n const ralph = new RalphStackMemoryBridge({\n baseDir: path.join(agent.workingDirectory, task.id),\n maxIterations: this.calculateMaxIterations(task),\n useStackMemory: true,\n });\n\n // Initialize with context from other agents\n const contextualPrompt = await this.synthesizeContextualPrompt(\n agent,\n task\n );\n\n await ralph.initialize({\n task: contextualPrompt,\n criteria: task.acceptanceCriteria.join('\\n'),\n });\n\n // Set up coordination hooks\n this.setupAgentCoordination(agent, ralph, assignment);\n\n // Run the task\n await ralph.run();\n\n // Commit agent's work\n await this.gitWorkflowManager.commitAgentWork(agent, task);\n\n // Update performance metrics\n this.updateAgentPerformance(agent, true);\n\n // Merge agent's work back\n await this.gitWorkflowManager.mergeAgentWork(agent, task);\n\n // Notify planners and collaborators\n await this.notifyTaskCompletion(agent, task, true);\n\n agent.status = 'idle';\n logger.info(`Agent ${agent.role} completed task: ${task.title}`);\n } catch (error: unknown) {\n logger.error(\n `Agent ${agent.role} failed task: ${task.title}`,\n error as Error\n );\n\n // Update performance metrics\n this.updateAgentPerformance(agent, false);\n\n // Trigger conflict resolution or reassignment\n await this.handleTaskFailure(agent, task, error as Error);\n\n agent.status = 'error';\n }\n }\n\n /**\n * Synthesize contextual prompt incorporating swarm knowledge\n */\n private async synthesizeContextualPrompt(\n agent: Agent,\n task: SwarmTask\n ): Promise<string> {\n const basePrompt = task.description;\n const roleSpecificInstructions = this.getRoleSpecificInstructions(\n agent.role\n );\n const swarmContext = await this.getSwarmContext(task);\n const coordinationInstructions = this.getCoordinationInstructions(agent);\n\n return `\n${roleSpecificInstructions}\n\nTASK: ${basePrompt}\n\nSWARM CONTEXT:\n${swarmContext}\n\nCOORDINATION GUIDELINES:\n${coordinationInstructions}\n\nRemember:\n- You are part of a swarm working on: ${this.swarmState.project}\n- Other agents are working on related tasks\n- Communicate findings through StackMemory shared context\n- Focus on your specialization while being aware of the bigger picture\n- Detect and avoid pathological behaviors (infinite loops, tunnel vision)\n- Request fresh starts if you detect drift in your approach\n\nACCEPTANCE CRITERIA:\n${task.acceptanceCriteria.map((c) => `- ${c}`).join('\\n')}\n`;\n }\n\n /**\n * Start coordination monitoring loop\n */\n private startCoordinationLoop(): void {\n this.coordinationTimer = setInterval(() => {\n this.performCoordinationCycle().catch((error) => {\n logger.error('Coordination cycle failed', error as Error);\n });\n }, this.config.coordinationInterval);\n }\n\n /**\n * Perform coordination cycle\n */\n private async performCoordinationCycle(): Promise<void> {\n if (this.swarmState.status !== 'active') return;\n\n logger.debug('Performing coordination cycle');\n\n // 1. Detect pathological behaviors\n if (this.config.pathologicalBehaviorDetection) {\n await this.detectPathologicalBehaviors();\n }\n\n // 2. Check for task completion and wake planners\n if (this.config.enableDynamicPlanning) {\n await this.wakeUpPlanners();\n }\n\n // 3. Resolve conflicts\n await this.resolveActiveConflicts();\n\n // 4. Rebalance workload if needed\n await this.rebalanceWorkload();\n\n // 5. Trigger fresh starts if needed\n await this.triggerFreshStartsIfNeeded();\n\n // 6. Update swarm performance metrics\n this.updateSwarmMetrics();\n }\n\n /**\n * Detect pathological behaviors in agents\n */\n private async detectPathologicalBehaviors(): Promise<void> {\n for (const agent of this.activeAgents.values()) {\n if (agent.status !== 'active') continue;\n\n // Check for drift (repeated failures)\n if (agent.performance.driftDetected) {\n logger.warn(\n `Drift detected in agent ${agent.role}, triggering fresh start`\n );\n await this.triggerFreshStart(agent);\n continue;\n }\n\n // Check for tunnel vision (same approach repeated)\n if (await this.detectTunnelVision(agent)) {\n logger.warn(\n `Tunnel vision detected in agent ${agent.role}, providing alternative approach`\n );\n await this.provideAlternativeApproach(agent);\n }\n\n // Check for excessive runtime (running too long)\n if (await this.detectExcessiveRuntime(agent)) {\n logger.warn(\n `Excessive runtime detected in agent ${agent.role}, requesting checkpoint`\n );\n await this.requestCheckpoint(agent);\n }\n }\n }\n\n /**\n * Wake up planners when their tasks complete\n */\n private async wakeUpPlanners(): Promise<void> {\n for (const [agentId, wakeupCallback] of this.plannerWakeupQueue) {\n const agent = this.activeAgents.get(agentId);\n if (!agent || agent.status !== 'idle') continue;\n\n logger.info(`Waking up planner agent: ${agent.role}`);\n wakeupCallback();\n this.plannerWakeupQueue.delete(agentId);\n }\n }\n\n /**\n * Get status of a specific swarm\n */\n getSwarmStatus(swarmId: string): any {\n const registry = SwarmRegistry.getInstance();\n const swarm = registry.getSwarm(swarmId);\n\n if (!swarm) {\n return null;\n }\n\n return {\n id: swarmId,\n state: swarm.status || 'running',\n activeAgents: swarm.agents?.length || 0,\n startTime: swarm.startTime || Date.now(),\n agents: swarm.agents?.map((agent: any) => ({\n role: agent.role,\n status: agent.status || 'active',\n task: agent.task || 'Working',\n })),\n };\n }\n\n /**\n * Get all active swarms\n */\n getAllActiveSwarms(): any[] {\n const registry = SwarmRegistry.getInstance();\n const activeSwarms = registry.listActiveSwarms();\n\n return activeSwarms.map((swarm) => ({\n id: swarm.id,\n description: swarm.description,\n agentCount: swarm.agents?.length || 0,\n status: swarm.status || 'running',\n startTime: swarm.startTime || Date.now(),\n }));\n }\n\n /**\n * Stop a specific swarm gracefully\n */\n async stopSwarm(swarmId?: string): Promise<void> {\n const targetId = swarmId || this.swarmId;\n\n if (!targetId) {\n throw new Error('No swarm ID provided');\n }\n\n logger.info('Stopping swarm', { swarmId: targetId });\n\n // Stop all agents\n for (const agent of this.agents) {\n try {\n await this.stopAgent(agent);\n } catch (error: any) {\n logger.error('Failed to stop agent', {\n agent: agent.id,\n error: error.message,\n });\n }\n }\n\n // Cleanup git workflow if enabled\n if (this.gitWorkflowManager) {\n try {\n await this.gitWorkflowManager.cleanup();\n } catch (error: any) {\n logger.error('Git cleanup failed', { error: error.message });\n }\n }\n\n // Unregister from registry\n const registry = SwarmRegistry.getInstance();\n registry.unregisterSwarm(targetId);\n\n logger.info('Swarm stopped', { swarmId: targetId });\n }\n\n /**\n * Force stop a swarm without saving state\n */\n async forceStopSwarm(swarmId: string): Promise<void> {\n logger.info('Force stopping swarm', { swarmId });\n\n const registry = SwarmRegistry.getInstance();\n\n // Force unregister\n registry.unregisterSwarm(swarmId);\n\n // Kill all agent processes if any\n this.activeAgents.clear();\n\n logger.info('Swarm force stopped', { swarmId });\n }\n\n /**\n * Cleanup all resources\n */\n async cleanup(): Promise<void> {\n logger.info('Cleaning up SwarmCoordinator resources');\n\n // Stop all active swarms\n const activeSwarms = this.getAllActiveSwarms();\n for (const swarm of activeSwarms) {\n try {\n await this.stopSwarm(swarm.id);\n } catch (error: any) {\n logger.error('Failed to stop swarm during cleanup', {\n swarmId: swarm.id,\n error: error.message,\n });\n }\n }\n\n // Clear registries\n const registry = SwarmRegistry.getInstance();\n registry.cleanup();\n\n // Clear agent list\n this.activeAgents.clear();\n\n logger.info('SwarmCoordinator cleanup completed');\n }\n\n /**\n * Stop an individual agent\n */\n private async stopAgent(agent: any): Promise<void> {\n logger.debug('Stopping agent', { agentId: agent.id, role: agent.role });\n\n // Mark agent as stopped\n agent.status = 'stopped';\n\n // Clean up any agent-specific resources\n if (agent.ralphBridge) {\n try {\n await agent.ralphBridge.cleanup();\n } catch (error: any) {\n logger.error('Failed to cleanup agent bridge', {\n error: error.message,\n });\n }\n }\n }\n\n // Helper methods for role specialization and coordination\n private defineCapabilities(role: AgentRole): string[] {\n const capabilityMap: Record<AgentRole, string[]> = {\n architect: [\n 'system_design',\n 'component_modeling',\n 'architecture_validation',\n ],\n planner: [\n 'task_decomposition',\n 'dependency_analysis',\n 'resource_planning',\n ],\n developer: ['code_implementation', 'debugging', 'refactoring'],\n reviewer: [\n 'code_review',\n 'quality_assessment',\n 'best_practice_enforcement',\n ],\n tester: ['test_design', 'automation', 'validation'],\n optimizer: [\n 'performance_analysis',\n 'resource_optimization',\n 'bottleneck_identification',\n ],\n documenter: [\n 'technical_writing',\n 'api_documentation',\n 'example_creation',\n ],\n coordinator: [\n 'task_coordination',\n 'conflict_resolution',\n 'progress_tracking',\n ],\n };\n\n return capabilityMap[role] || [];\n }\n\n private defineCommuncationStyle(role: AgentRole): string {\n const styleMap: Record<AgentRole, string> = {\n architect: 'high_level_design_focused',\n planner: 'structured_and_methodical',\n developer: 'implementation_focused',\n reviewer: 'quality_focused_constructive',\n tester: 'validation_focused',\n optimizer: 'performance_metrics_focused',\n documenter: 'clarity_focused',\n coordinator: 'facilitative_and_diplomatic',\n };\n\n return styleMap[role] || 'collaborative';\n }\n\n private getRoleSpecificInstructions(role: AgentRole): string {\n const instructionMap: Record<AgentRole, string> = {\n architect: `\nYou are a SYSTEM ARCHITECT. Your role is to:\n- Design high-level system architecture\n- Define component interfaces and relationships\n- Ensure architectural consistency across the project\n- Think in terms of scalability, maintainability, and extensibility\n- Collaborate with developers to validate feasibility`,\n\n planner: `\nYou are a PROJECT PLANNER. Your role is to:\n- Break down complex tasks into manageable steps\n- Identify dependencies and critical path\n- Coordinate with other agents on sequencing\n- Wake up when tasks complete to plan next steps\n- Adapt plans based on actual progress`,\n\n developer: `\nYou are a SPECIALIZED DEVELOPER. Your role is to:\n- Implement features according to specifications\n- Write clean, maintainable code\n- Follow established patterns and conventions\n- Integrate with other components\n- Communicate implementation details clearly`,\n\n reviewer: `\nYou are a CODE REVIEWER. Your role is to:\n- Review code for quality, correctness, and best practices\n- Provide constructive feedback\n- Ensure consistency with project standards\n- Identify potential issues before they become problems\n- Approve or request changes`,\n\n tester: `\nYou are a QA ENGINEER. Your role is to:\n- Design comprehensive test strategies\n- Implement automated tests\n- Validate functionality and performance\n- Report bugs clearly and reproducibly\n- Ensure quality gates are met`,\n\n optimizer: `\nYou are a PERFORMANCE OPTIMIZER. Your role is to:\n- Analyze system performance and identify bottlenecks\n- Implement optimizations\n- Monitor resource usage\n- Establish performance benchmarks\n- Ensure scalability requirements are met`,\n\n documenter: `\nYou are a TECHNICAL WRITER. Your role is to:\n- Create clear, comprehensive documentation\n- Write API documentation and usage examples\n- Ensure documentation stays up-to-date\n- Focus on user experience and clarity\n- Collaborate with developers to understand features`,\n\n coordinator: `\nYou are a PROJECT COORDINATOR. Your role is to:\n- Facilitate communication between agents\n- Resolve conflicts and blockers\n- Track overall project progress\n- Ensure no tasks fall through cracks\n- Maintain project timeline and quality`,\n };\n\n return (\n instructionMap[role] ||\n 'You are a specialized agent contributing to a larger project.'\n );\n }\n\n // Additional helper methods would be implemented here...\n private analyzeProjectComplexity(description: string): any {\n // Analyze project description to determine decomposition strategy\n return {\n needsArchitecture:\n description.length > 500 ||\n description.includes('system') ||\n description.includes('platform'),\n needsTesting: true, // Almost all projects need testing\n needsDocumentation:\n description.includes('API') || description.includes('library'),\n complexity: 'medium',\n };\n }\n\n private extractCoreFeatures(description: string): any[] {\n // Extract core features from project description\n // This would use NLP in a real implementation\n return [\n {\n name: 'Core Feature',\n description: 'Main functionality implementation',\n complexity: 'medium',\n criteria: [\n 'Feature works correctly',\n 'Handles edge cases',\n 'Follows coding standards',\n ],\n },\n ];\n }\n\n // Implement remaining helper methods...\n private async setupAgentEnvironment(agent: Agent): Promise<void> {\n // Create working directory for agent\n try {\n await fs.mkdir(agent.workingDirectory, { recursive: true });\n logger.debug(\n `Created working directory for agent ${agent.id}: ${agent.workingDirectory}`\n );\n } catch (error: unknown) {\n logger.warn(\n `Could not create working directory for agent ${agent.id}`,\n error as Error\n );\n }\n }\n\n private async configureAgentPrompts(agent: Agent): Promise<void> {\n // Configure agent with role-specific prompts\n // This would be expanded with actual prompt templates\n logger.debug(`Configured prompts for agent ${agent.role}`);\n }\n\n private topologicalSort(tasks: SwarmTask[]): SwarmTask[] {\n // Simple topological sort for task dependencies\n const sorted: SwarmTask[] = [];\n const visited = new Set<string>();\n const visiting = new Set<string>();\n\n const visit = (task: SwarmTask) => {\n if (visited.has(task.id)) return;\n if (visiting.has(task.id)) {\n logger.warn(`Circular dependency detected for task: ${task.id}`);\n return;\n }\n\n visiting.add(task.id);\n\n for (const depId of task.dependencies) {\n const depTask = tasks.find((t) => t.id === depId);\n if (depTask) visit(depTask);\n }\n\n visiting.delete(task.id);\n visited.add(task.id);\n sorted.push(task);\n };\n\n tasks.forEach(visit);\n return sorted;\n }\n\n private agentCanHandle(agent: Agent, role: string): boolean {\n return agent.role === role || agent.capabilities.includes(role);\n }\n\n private selectOptimalAgent(agents: Agent[], task: SwarmTask): Agent {\n // Select agent with lowest workload\n return agents.reduce((best, current) => {\n const bestLoad = best.currentTask ? 1 : 0;\n const currentLoad = current.currentTask ? 1 : 0;\n return currentLoad < bestLoad ? current : best;\n });\n }\n\n private estimateTaskDuration(task: SwarmTask): number {\n // Estimate based on complexity\n const durations: Record<string, number> = {\n low: 60000, // 1 minute\n medium: 300000, // 5 minutes\n high: 900000, // 15 minutes\n };\n return durations[task.estimatedEffort] || 300000;\n }\n\n private findCollaborators(\n agent: Agent,\n task: SwarmTask,\n agents: Agent[]\n ): string[] {\n // Find other agents working on related tasks\n return agents\n .filter((a) => a.id !== agent.id && a.currentTask)\n .map((a) => a.id)\n .slice(0, 2); // Limit to 2 collaborators\n }\n\n private findReviewers(\n agent: Agent,\n task: SwarmTask,\n agents: Agent[]\n ): string[] {\n // Find agents with reviewer role\n return agents\n .filter((a) => a.role === 'reviewer' && a.id !== agent.id)\n .map((a) => a.id);\n }\n\n private calculateMaxIterations(task: SwarmTask): number {\n // Calculate based on task complexity\n const iterations: Record<string, number> = {\n low: 5,\n medium: 10,\n high: 20,\n };\n return iterations[task.estimatedEffort] || 10;\n }\n\n private async getSwarmContext(task: SwarmTask): Promise<string> {\n // Get relevant context from other swarm members\n const relatedTasks = Array.from(this.activeAgents.values())\n .filter((a) => a.currentTask)\n .map((a) => `- Agent ${a.role} is working on task ${a.currentTask}`)\n .join('\\n');\n\n return relatedTasks || 'No other agents currently active';\n }\n\n private getCoordinationInstructions(agent: Agent): string {\n return `\n- Save progress to shared context regularly\n- Check for updates from collaborators\n- Request help if blocked for more than 2 iterations\n- Report completion immediately`;\n }\n\n private setupAgentCoordination(\n agent: Agent,\n ralph: any,\n assignment: any\n ): void {\n // Setup coordination hooks\n logger.debug(`Setting up coordination for agent ${agent.id}`);\n }\n\n private updateAgentPerformance(agent: Agent, success: boolean): void {\n agent.performance.tasksCompleted++;\n if (!success) {\n agent.performance.successRate =\n (agent.performance.successRate *\n (agent.performance.tasksCompleted - 1)) /\n agent.performance.tasksCompleted;\n }\n }\n\n private async notifyTaskCompletion(\n agent: Agent,\n task: SwarmTask,\n success: boolean\n ): Promise<void> {\n const event: CoordinationEvent = {\n type: 'task_completion',\n agentId: agent.id,\n timestamp: Date.now(),\n data: {\n taskId: task.id,\n success,\n agent: agent.role,\n },\n };\n\n this.swarmState.coordination?.events.push(event);\n logger.info(\n `Task ${task.id} completed by agent ${agent.role}: ${success ? 'SUCCESS' : 'FAILED'}`\n );\n }\n\n private async handleTaskFailure(\n agent: Agent,\n task: SwarmTask,\n error: Error\n ): Promise<void> {\n logger.error(`Agent ${agent.role} failed task ${task.id}`, error);\n\n // Record conflict\n if (this.swarmState.coordination) {\n this.swarmState.coordination.conflicts.push({\n type: 'task_failure',\n agents: [agent.id],\n timestamp: Date.now(),\n description: error.message,\n });\n }\n }\n\n private async detectTunnelVision(agent: Agent): Promise<boolean> {\n // Check if agent is stuck in same approach\n // Simplified implementation\n return false;\n }\n\n private async provideAlternativeApproach(agent: Agent): Promise<void> {\n logger.info(`Providing alternative approach to agent ${agent.role}`);\n }\n\n private async detectExcessiveRuntime(agent: Agent): Promise<boolean> {\n // Check if agent has been running too long\n if (!agent.performance.lastFreshStart) return false;\n return Date.now() - agent.performance.lastFreshStart > 3600000; // 1 hour\n }\n\n private async requestCheckpoint(agent: Agent): Promise<void> {\n logger.info(`Requesting checkpoint from agent ${agent.role}`);\n }\n\n private async triggerFreshStart(agent: Agent): Promise<void> {\n logger.info(`Triggering fresh start for agent ${agent.role}`);\n agent.performance.lastFreshStart = Date.now();\n agent.performance.driftDetected = false;\n }\n\n private async resolveActiveConflicts(): Promise<void> {\n // Resolve any active conflicts\n if (this.swarmState.coordination?.conflicts.length) {\n logger.debug(\n `Resolving ${this.swarmState.coordination.conflicts.length} conflicts`\n );\n }\n }\n\n private async rebalanceWorkload(): Promise<void> {\n // Rebalance workload among agents\n const activeAgents = Array.from(this.activeAgents.values()).filter(\n (a) => a.status === 'active'\n );\n if (activeAgents.length > 0) {\n logger.debug(\n `Rebalancing workload among ${activeAgents.length} active agents`\n );\n }\n }\n\n private async triggerFreshStartsIfNeeded(): Promise<void> {\n for (const agent of this.activeAgents.values()) {\n if (agent.performance.driftDetected) {\n await this.triggerFreshStart(agent);\n }\n }\n }\n\n private updateSwarmMetrics(): void {\n if (!this.swarmState.performance) return;\n\n const activeCount = Array.from(this.activeAgents.values()).filter(\n (a) => a.status === 'active'\n ).length;\n\n this.swarmState.performance.throughput =\n this.swarmState.completedTaskCount /\n ((Date.now() - this.swarmState.startTime) / 1000);\n\n this.swarmState.performance.efficiency =\n activeCount > 0 ? this.swarmState.completedTaskCount / activeCount : 0;\n }\n\n [Symbol.toStringTag] = 'SwarmCoordinator';\n}\n\n// Export default instance\nexport const swarmCoordinator = new SwarmCoordinator();\n"],
|
|
5
|
-
"mappings": "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",
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -1,3 +1,7 @@
|
|
|
1
|
+
import { fileURLToPath as __fileURLToPath } from 'url';
|
|
2
|
+
import { dirname as __pathDirname } from 'path';
|
|
3
|
+
const __filename = __fileURLToPath(import.meta.url);
|
|
4
|
+
const __dirname = __pathDirname(__filename);
|
|
1
5
|
import * as fs from "fs/promises";
|
|
2
6
|
import * as path from "path";
|
|
3
7
|
import { logger } from "../../../core/monitoring/logger.js";
|
|
@@ -2,6 +2,6 @@
|
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../src/integrations/ralph/visualization/ralph-debugger.ts"],
|
|
4
4
|
"sourcesContent": ["/**\n * Advanced Ralph Loop Debugger and Visualizer\n * Provides detailed debugging, monitoring, and visualization for Ralph loops\n */\n\nimport * as fs from 'fs/promises';\nimport * as path from 'path';\nimport { logger } from '../../../core/monitoring/logger.js';\nimport { FrameManager } from '../../../core/context/frame-manager.js';\nimport { sessionManager } from '../../../core/session/index.js';\nimport {\n DebugSession,\n LoopVisualization,\n IterationTrace,\n ContextFlowDiagram,\n PerformanceMetrics,\n DebugReport\n} from '../types.js';\n\nexport interface DebuggerConfig {\n enableRealTimeMonitoring: boolean;\n captureDetailedTrace: boolean;\n generateVisualization: boolean;\n exportFormat: 'json' | 'html' | 'markdown';\n maxTraceDepth: number;\n}\n\nexport class RalphDebugger {\n private frameManager?: FrameManager;\n private activeSessions: Map<string, DebugSession> = new Map();\n private config: DebuggerConfig;\n\n constructor(config?: Partial<DebuggerConfig>) {\n this.config = {\n enableRealTimeMonitoring: true,\n captureDetailedTrace: true,\n generateVisualization: true,\n exportFormat: 'html',\n maxTraceDepth: 50,\n ...config\n };\n\n logger.info('Ralph debugger initialized', this.config);\n }\n\n async initialize(): Promise<void> {\n try {\n await sessionManager.initialize();\n \n const session = await sessionManager.getOrCreateSession({});\n if (session.database) {\n this.frameManager = new FrameManager(session.database, session.projectId);\n }\n\n logger.info('Debugger initialized successfully');\n } catch (error: unknown) {\n logger.error('Failed to initialize debugger', error as Error);\n throw error;\n }\n }\n\n /**\n * Start debugging a Ralph loop\n */\n async startDebugSession(loopId: string, ralphDir: string): Promise<DebugSession> {\n logger.info('Starting debug session', { loopId, ralphDir });\n\n const session: DebugSession = {\n id: `debug-${Date.now()}`,\n loopId,\n ralphDir,\n startTime: Date.now(),\n iterations: [],\n contextFlow: [],\n performance: {\n iterationTimes: [],\n memoryUsage: [],\n contextSizes: [],\n averageIterationTime: 0,\n peakMemory: 0,\n contextEfficiency: 0\n },\n realTimeMonitoring: this.config.enableRealTimeMonitoring\n };\n\n this.activeSessions.set(loopId, session);\n\n if (this.config.enableRealTimeMonitoring) {\n await this.startRealTimeMonitoring(session);\n }\n\n return session;\n }\n\n /**\n * Generate comprehensive debug report\n */\n async generateDebugReport(loopId: string): Promise<DebugReport> {\n const session = this.activeSessions.get(loopId);\n if (!session) {\n throw new Error(`No debug session found for loop ${loopId}`);\n }\n\n logger.info('Generating debug report', { loopId });\n\n const report: DebugReport = {\n sessionId: session.id,\n loopId,\n generatedAt: Date.now(),\n summary: await this.generateSummary(session),\n iterationAnalysis: await this.analyzeIterations(session),\n contextAnalysis: await this.analyzeContextFlow(session),\n performanceAnalysis: await this.analyzePerformance(session),\n visualization: this.config.generateVisualization ? await this.generateVisualization(session) : undefined,\n recommendations: await this.generateRecommendations(session),\n exportPath: ''\n };\n\n // Export report\n const exportPath = await this.exportReport(report);\n report.exportPath = exportPath;\n\n logger.info('Debug report generated', { loopId, exportPath });\n return report;\n }\n\n /**\n * Create visual timeline of loop execution\n */\n async generateLoopTimeline(loopId: string): Promise<string> {\n const session = this.activeSessions.get(loopId);\n if (!session) {\n throw new Error(`No debug session found for loop ${loopId}`);\n }\n\n const timeline = {\n title: `Ralph Loop Timeline: ${loopId}`,\n startTime: session.startTime,\n iterations: session.iterations.map(iter => ({\n iteration: iter.iteration,\n startTime: iter.startTime,\n endTime: iter.endTime,\n duration: iter.endTime - iter.startTime,\n success: iter.success,\n changes: iter.changes?.length || 0,\n errors: iter.errors?.length || 0,\n contextSize: iter.contextSize,\n phase: iter.phase\n })),\n totalDuration: session.performance.iterationTimes.reduce((sum, time) => sum + time, 0)\n };\n\n // Generate HTML visualization\n const html = await this.generateTimelineHTML(timeline);\n \n const timelinePath = path.join('.ralph-debug', `timeline-${loopId}.html`);\n await fs.mkdir(path.dirname(timelinePath), { recursive: true });\n await fs.writeFile(timelinePath, html);\n\n return timelinePath;\n }\n\n /**\n * Create context flow diagram\n */\n async generateContextFlowDiagram(loopId: string): Promise<ContextFlowDiagram> {\n const session = this.activeSessions.get(loopId);\n if (!session) {\n throw new Error(`No debug session found for loop ${loopId}`);\n }\n\n const diagram: ContextFlowDiagram = {\n id: `context-flow-${loopId}`,\n nodes: [],\n edges: [],\n metrics: {\n totalNodes: 0,\n totalEdges: 0,\n avgContextSize: 0,\n maxContextSize: 0\n }\n };\n\n // Build context flow graph\n for (let i = 0; i < session.iterations.length; i++) {\n const iteration = session.iterations[i];\n \n // Add iteration node\n diagram.nodes.push({\n id: `iter-${iteration.iteration}`,\n type: 'iteration',\n label: `Iteration ${iteration.iteration}`,\n size: iteration.contextSize || 100,\n color: iteration.success ? '#4CAF50' : '#F44336',\n metadata: {\n duration: iteration.endTime - iteration.startTime,\n changes: iteration.changes?.length || 0,\n errors: iteration.errors?.length || 0\n }\n });\n\n // Add edge to next iteration\n if (i < session.iterations.length - 1) {\n diagram.edges.push({\n id: `edge-${i}-${i + 1}`,\n from: `iter-${iteration.iteration}`,\n to: `iter-${session.iterations[i + 1].iteration}`,\n type: 'sequence',\n weight: iteration.contextSize || 1\n });\n }\n }\n\n diagram.metrics = {\n totalNodes: diagram.nodes.length,\n totalEdges: diagram.edges.length,\n avgContextSize: session.performance.contextSizes.length > 0 ? \n session.performance.contextSizes.reduce((sum, size) => sum + size, 0) / session.performance.contextSizes.length : 0,\n maxContextSize: Math.max(...session.performance.contextSizes)\n };\n\n return diagram;\n }\n\n /**\n * Real-time monitoring of loop execution\n */\n private async startRealTimeMonitoring(session: DebugSession): Promise<void> {\n const monitoringInterval = setInterval(async () => {\n try {\n await this.captureIterationTrace(session);\n await this.updatePerformanceMetrics(session);\n } catch (error: unknown) {\n logger.error('Monitoring error', error as Error);\n }\n }, 1000); // Monitor every second\n\n // Store interval reference for cleanup\n (session as any).monitoringInterval = monitoringInterval;\n }\n\n /**\n * Capture detailed trace of current iteration\n */\n private async captureIterationTrace(session: DebugSession): Promise<void> {\n try {\n // Read current Ralph state\n const statePath = path.join(session.ralphDir, 'state.json');\n const iterationPath = path.join(session.ralphDir, 'iteration.txt');\n \n let currentState: any = {};\n let currentIteration = 0;\n\n try {\n const stateData = await fs.readFile(statePath, 'utf8');\n currentState = JSON.parse(stateData);\n \n const iterData = await fs.readFile(iterationPath, 'utf8');\n currentIteration = parseInt(iterData.trim()) || 0;\n } catch {\n // Files might not exist yet\n return;\n }\n\n // Check if this is a new iteration\n const lastTrace = session.iterations[session.iterations.length - 1];\n if (lastTrace?.iteration === currentIteration) {\n return; // Same iteration, update existing trace\n }\n\n // Create new iteration trace\n const trace: IterationTrace = {\n iteration: currentIteration,\n startTime: Date.now(),\n endTime: Date.now(), // Will be updated when iteration completes\n phase: this.determineIterationPhase(session.ralphDir),\n contextSize: await this.calculateContextSize(session.ralphDir),\n success: false, // Will be updated\n changes: [],\n errors: [],\n memoryUsage: process.memoryUsage().heapUsed,\n stackTrace: this.captureStackTrace()\n };\n\n session.iterations.push(trace);\n\n } catch (error: unknown) {\n logger.debug('Failed to capture iteration trace', error as Error);\n }\n }\n\n /**\n * Update performance metrics\n */\n private async updatePerformanceMetrics(session: DebugSession): Promise<void> {\n const currentMemory = process.memoryUsage().heapUsed;\n session.performance.memoryUsage.push(currentMemory);\n session.performance.peakMemory = Math.max(session.performance.peakMemory, currentMemory);\n\n // Update context sizes\n const contextSize = await this.calculateContextSize(session.ralphDir);\n session.performance.contextSizes.push(contextSize);\n\n // Calculate averages\n if (session.performance.iterationTimes.length > 0) {\n session.performance.averageIterationTime = \n session.performance.iterationTimes.reduce((sum, time) => sum + time, 0) / \n session.performance.iterationTimes.length;\n }\n\n // Calculate context efficiency\n if (session.performance.contextSizes.length > 0) {\n const avgContextSize = session.performance.contextSizes.reduce((sum, size) => sum + size, 0) / \n session.performance.contextSizes.length;\n session.performance.contextEfficiency = Math.max(0, 1 - (avgContextSize / 10000)); // Assume 10K is max context\n }\n }\n\n /**\n * Generate executive summary\n */\n private async generateSummary(session: DebugSession): Promise<any> {\n const totalIterations = session.iterations.length;\n const successfulIterations = session.iterations.filter(i => i.success).length;\n const totalDuration = session.performance.iterationTimes.reduce((sum, time) => sum + time, 0);\n\n return {\n loopId: session.loopId,\n totalIterations,\n successfulIterations,\n successRate: totalIterations > 0 ? successfulIterations / totalIterations : 0,\n totalDuration,\n averageIterationTime: session.performance.averageIterationTime,\n peakMemoryUsage: session.performance.peakMemory,\n contextEfficiency: session.performance.contextEfficiency,\n status: totalIterations > 0 && session.iterations[session.iterations.length - 1].success ? 'completed' : 'in_progress'\n };\n }\n\n /**\n * Analyze iteration patterns\n */\n private async analyzeIterations(session: DebugSession): Promise<any> {\n if (session.iterations.length === 0) return { patterns: [], insights: [] };\n\n const patterns: string[] = [];\n const insights: string[] = [];\n\n // Analyze iteration durations\n const durations = session.iterations.map(i => i.endTime - i.startTime);\n const avgDuration = durations.reduce((sum, d) => sum + d, 0) / durations.length;\n\n if (durations.some(d => d > avgDuration * 2)) {\n patterns.push('Variable iteration times detected');\n insights.push('Some iterations took significantly longer than average - investigate bottlenecks');\n }\n\n // Analyze success patterns\n const consecutiveFailures = this.findConsecutiveFailures(session.iterations);\n if (consecutiveFailures.length > 2) {\n patterns.push('Multiple consecutive failures detected');\n insights.push('Consider adjusting approach or criteria after consecutive failures');\n }\n\n // Analyze context growth\n if (session.performance.contextSizes.length > 1) {\n const contextGrowth = session.performance.contextSizes[session.performance.contextSizes.length - 1] - \n session.performance.contextSizes[0];\n \n if (contextGrowth > 1000) {\n patterns.push('Significant context growth');\n insights.push('Context is growing rapidly - consider context pruning strategies');\n }\n }\n\n return { patterns, insights };\n }\n\n /**\n * Analyze context flow\n */\n private async analyzeContextFlow(session: DebugSession): Promise<any> {\n return {\n avgContextSize: session.performance.contextSizes.length > 0 ? \n session.performance.contextSizes.reduce((sum, size) => sum + size, 0) / session.performance.contextSizes.length : 0,\n maxContextSize: Math.max(...session.performance.contextSizes),\n contextGrowthRate: this.calculateGrowthRate(session.performance.contextSizes),\n efficiency: session.performance.contextEfficiency\n };\n }\n\n /**\n * Analyze performance metrics\n */\n private async analyzePerformance(session: DebugSession): Promise<any> {\n return {\n memoryEfficiency: this.calculateMemoryEfficiency(session.performance.memoryUsage),\n iterationEfficiency: session.performance.averageIterationTime,\n resourceUtilization: {\n cpu: 'N/A', // Would need CPU monitoring\n memory: session.performance.peakMemory,\n context: session.performance.contextEfficiency\n }\n };\n }\n\n /**\n * Generate visualization HTML\n */\n private async generateVisualization(session: DebugSession): Promise<LoopVisualization> {\n const htmlContent = await this.generateVisualizationHTML(session);\n \n const vizPath = path.join('.ralph-debug', `visualization-${session.loopId}.html`);\n await fs.mkdir(path.dirname(vizPath), { recursive: true });\n await fs.writeFile(vizPath, htmlContent);\n\n return {\n id: `viz-${session.loopId}`,\n type: 'interactive_timeline',\n htmlPath: vizPath,\n data: {\n iterations: session.iterations,\n performance: session.performance,\n contextFlow: session.contextFlow\n },\n metadata: {\n generatedAt: Date.now(),\n format: 'html',\n interactive: true\n }\n };\n }\n\n /**\n * Generate recommendations\n */\n private async generateRecommendations(session: DebugSession): Promise<string[]> {\n const recommendations: string[] = [];\n\n // Performance recommendations\n if (session.performance.averageIterationTime > 30000) { // > 30 seconds\n recommendations.push('Consider breaking down complex tasks into smaller iterations');\n }\n\n if (session.performance.contextEfficiency < 0.7) {\n recommendations.push('Optimize context management - consider using context budgeting');\n }\n\n // Success rate recommendations\n const successRate = session.iterations.filter(i => i.success).length / Math.max(1, session.iterations.length);\n if (successRate < 0.5) {\n recommendations.push('Low success rate detected - review task criteria and approach');\n }\n\n // Memory recommendations\n if (session.performance.peakMemory > 500 * 1024 * 1024) { // > 500MB\n recommendations.push('High memory usage detected - investigate memory leaks');\n }\n\n return recommendations;\n }\n\n /**\n * Export report in specified format\n */\n private async exportReport(report: DebugReport): Promise<string> {\n const timestamp = new Date().toISOString().replace(/[:.]/g, '-');\n const filename = `ralph-debug-${report.loopId}-${timestamp}`;\n \n let content: string;\n let extension: string;\n\n switch (this.config.exportFormat) {\n case 'json':\n content = JSON.stringify(report, null, 2);\n extension = 'json';\n break;\n case 'markdown':\n content = this.generateMarkdownReport(report);\n extension = 'md';\n break;\n case 'html':\n default:\n content = this.generateHTMLReport(report);\n extension = 'html';\n break;\n }\n\n const exportPath = path.join('.ralph-debug', `${filename}.${extension}`);\n await fs.mkdir(path.dirname(exportPath), { recursive: true });\n await fs.writeFile(exportPath, content);\n\n return exportPath;\n }\n\n // Helper methods\n private determineIterationPhase(ralphDir: string): 'starting' | 'working' | 'reviewing' | 'completed' {\n // Determine current phase based on file states\n return 'working'; // Simplified implementation\n }\n\n private async calculateContextSize(ralphDir: string): Promise<number> {\n try {\n const feedbackPath = path.join(ralphDir, 'feedback.txt');\n const feedback = await fs.readFile(feedbackPath, 'utf8');\n return feedback.length;\n } catch {\n return 0;\n }\n }\n\n private captureStackTrace(): string {\n const stack = new Error().stack || '';\n return stack.split('\\n').slice(1, 6).join('\\n'); // First 5 stack frames\n }\n\n private findConsecutiveFailures(iterations: IterationTrace[]): number[] {\n const failures: number[] = [];\n let currentStreak = 0;\n\n for (const iteration of iterations) {\n if (!iteration.success) {\n currentStreak++;\n } else {\n if (currentStreak > 0) {\n failures.push(currentStreak);\n }\n currentStreak = 0;\n }\n }\n\n if (currentStreak > 0) {\n failures.push(currentStreak);\n }\n\n return failures;\n }\n\n private calculateGrowthRate(sizes: number[]): number {\n if (sizes.length < 2) return 0;\n \n const first = sizes[0];\n const last = sizes[sizes.length - 1];\n \n return first > 0 ? (last - first) / first : 0;\n }\n\n private calculateMemoryEfficiency(memoryUsage: number[]): number {\n if (memoryUsage.length < 2) return 1;\n \n const min = Math.min(...memoryUsage);\n const max = Math.max(...memoryUsage);\n \n return max > 0 ? min / max : 1;\n }\n\n private generateTimelineHTML(timeline: any): string {\n // Generate interactive HTML timeline\n return `\n<!DOCTYPE html>\n<html>\n<head>\n <title>${timeline.title}</title>\n <script src=\"https://d3js.org/d3.v7.min.js\"></script>\n <style>\n body { font-family: Arial, sans-serif; margin: 20px; }\n .timeline { margin: 20px 0; }\n .iteration { margin: 10px 0; padding: 10px; border-left: 4px solid #ccc; }\n .success { border-left-color: #4CAF50; }\n .failure { border-left-color: #F44336; }\n </style>\n</head>\n<body>\n <h1>${timeline.title}</h1>\n <div class=\"timeline\">\n ${timeline.iterations.map((iter: any) => `\n <div class=\"iteration ${iter.success ? 'success' : 'failure'}\">\n <h3>Iteration ${iter.iteration}</h3>\n <p>Duration: ${iter.duration}ms</p>\n <p>Changes: ${iter.changes} | Errors: ${iter.errors}</p>\n <p>Context Size: ${iter.contextSize}</p>\n </div>\n `).join('')}\n </div>\n</body>\n</html>\n `;\n }\n\n private generateVisualizationHTML(session: DebugSession): string {\n // Generate comprehensive visualization\n return `\n<!DOCTYPE html>\n<html>\n<head>\n <title>Ralph Loop Visualization - ${session.loopId}</title>\n <script src=\"https://d3js.org/d3.v7.min.js\"></script>\n <style>\n body { font-family: Arial, sans-serif; margin: 20px; }\n .chart { margin: 20px 0; }\n .metric { display: inline-block; margin: 10px; padding: 10px; border: 1px solid #ccc; }\n </style>\n</head>\n<body>\n <h1>Ralph Loop Debug Visualization</h1>\n <div id=\"metrics\">\n <div class=\"metric\">\n <h3>Iterations</h3>\n <p>${session.iterations.length}</p>\n </div>\n <div class=\"metric\">\n <h3>Avg Time</h3>\n <p>${Math.round(session.performance.averageIterationTime)}ms</p>\n </div>\n <div class=\"metric\">\n <h3>Context Efficiency</h3>\n <p>${Math.round(session.performance.contextEfficiency * 100)}%</p>\n </div>\n </div>\n <div id=\"timeline\" class=\"chart\"></div>\n <script>\n // D3.js visualization code would go here\n console.log('Visualization data:', ${JSON.stringify(session)});\n </script>\n</body>\n</html>\n `;\n }\n\n private generateMarkdownReport(report: DebugReport): string {\n return `\n# Ralph Loop Debug Report\n\n**Loop ID:** ${report.loopId}\n**Generated:** ${new Date(report.generatedAt).toLocaleString()}\n\n## Summary\n- **Total Iterations:** ${report.summary.totalIterations}\n- **Success Rate:** ${Math.round(report.summary.successRate * 100)}%\n- **Total Duration:** ${report.summary.totalDuration}ms\n- **Average Iteration Time:** ${Math.round(report.summary.averageIterationTime)}ms\n\n## Performance Analysis\n- **Peak Memory:** ${Math.round(report.performanceAnalysis.resourceUtilization.memory / 1024 / 1024)}MB\n- **Context Efficiency:** ${Math.round(report.performanceAnalysis.resourceUtilization.context * 100)}%\n\n## Recommendations\n${report.recommendations.map(r => `- ${r}`).join('\\n')}\n `;\n }\n\n private generateHTMLReport(report: DebugReport): string {\n return `\n<!DOCTYPE html>\n<html>\n<head>\n <title>Ralph Debug Report - ${report.loopId}</title>\n <style>\n body { font-family: Arial, sans-serif; max-width: 1200px; margin: 0 auto; padding: 20px; }\n .summary { background: #f5f5f5; padding: 20px; border-radius: 8px; margin: 20px 0; }\n .metric { display: inline-block; margin: 10px; padding: 15px; background: white; border-radius: 4px; }\n .recommendations { background: #e3f2fd; padding: 15px; border-radius: 4px; }\n </style>\n</head>\n<body>\n <h1>Ralph Loop Debug Report</h1>\n <div class=\"summary\">\n <h2>Executive Summary</h2>\n <div class=\"metric\">\n <h3>${report.summary.totalIterations}</h3>\n <p>Total Iterations</p>\n </div>\n <div class=\"metric\">\n <h3>${Math.round(report.summary.successRate * 100)}%</h3>\n <p>Success Rate</p>\n </div>\n <div class=\"metric\">\n <h3>${Math.round(report.summary.averageIterationTime)}ms</h3>\n <p>Avg Iteration Time</p>\n </div>\n </div>\n \n <div class=\"recommendations\">\n <h2>Recommendations</h2>\n <ul>\n ${report.recommendations.map(r => `<li>${r}</li>`).join('')}\n </ul>\n </div>\n</body>\n</html>\n `;\n }\n\n /**\n * Stop debug session and cleanup\n */\n async stopDebugSession(loopId: string): Promise<void> {\n const session = this.activeSessions.get(loopId);\n if (!session) return;\n\n // Stop real-time monitoring\n if ((session as any).monitoringInterval) {\n clearInterval((session as any).monitoringInterval);\n }\n\n // Generate final report\n await this.generateDebugReport(loopId);\n\n this.activeSessions.delete(loopId);\n logger.info('Debug session stopped', { loopId });\n }\n}\n\n// Export default instance\nexport const ralphDebugger = new RalphDebugger();"],
|
|
5
|
-
"mappings": "AAKA,YAAY,QAAQ;AACpB,YAAY,UAAU;AACtB,SAAS,cAAc;AACvB,SAAS,oBAAoB;AAC7B,SAAS,sBAAsB;AAkBxB,MAAM,cAAc;AAAA,EACjB;AAAA,EACA,iBAA4C,oBAAI,IAAI;AAAA,EACpD;AAAA,EAER,YAAY,QAAkC;AAC5C,SAAK,SAAS;AAAA,MACZ,0BAA0B;AAAA,MAC1B,sBAAsB;AAAA,MACtB,uBAAuB;AAAA,MACvB,cAAc;AAAA,MACd,eAAe;AAAA,MACf,GAAG;AAAA,IACL;AAEA,WAAO,KAAK,8BAA8B,KAAK,MAAM;AAAA,EACvD;AAAA,EAEA,MAAM,aAA4B;AAChC,QAAI;AACF,YAAM,eAAe,WAAW;AAEhC,YAAM,UAAU,MAAM,eAAe,mBAAmB,CAAC,CAAC;AAC1D,UAAI,QAAQ,UAAU;AACpB,aAAK,eAAe,IAAI,aAAa,QAAQ,UAAU,QAAQ,SAAS;AAAA,MAC1E;AAEA,aAAO,KAAK,mCAAmC;AAAA,IACjD,SAAS,OAAgB;AACvB,aAAO,MAAM,iCAAiC,KAAc;AAC5D,YAAM;AAAA,IACR;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,kBAAkB,QAAgB,UAAyC;AAC/E,WAAO,KAAK,0BAA0B,EAAE,QAAQ,SAAS,CAAC;AAE1D,UAAM,UAAwB;AAAA,MAC5B,IAAI,SAAS,KAAK,IAAI,CAAC;AAAA,MACvB;AAAA,MACA;AAAA,MACA,WAAW,KAAK,IAAI;AAAA,MACpB,YAAY,CAAC;AAAA,MACb,aAAa,CAAC;AAAA,MACd,aAAa;AAAA,QACX,gBAAgB,CAAC;AAAA,QACjB,aAAa,CAAC;AAAA,QACd,cAAc,CAAC;AAAA,QACf,sBAAsB;AAAA,QACtB,YAAY;AAAA,QACZ,mBAAmB;AAAA,MACrB;AAAA,MACA,oBAAoB,KAAK,OAAO;AAAA,IAClC;AAEA,SAAK,eAAe,IAAI,QAAQ,OAAO;AAEvC,QAAI,KAAK,OAAO,0BAA0B;AACxC,YAAM,KAAK,wBAAwB,OAAO;AAAA,IAC5C;AAEA,WAAO;AAAA,EACT;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,oBAAoB,QAAsC;AAC9D,UAAM,UAAU,KAAK,eAAe,IAAI,MAAM;AAC9C,QAAI,CAAC,SAAS;AACZ,YAAM,IAAI,MAAM,mCAAmC,MAAM,EAAE;AAAA,IAC7D;AAEA,WAAO,KAAK,2BAA2B,EAAE,OAAO,CAAC;AAEjD,UAAM,SAAsB;AAAA,MAC1B,WAAW,QAAQ;AAAA,MACnB;AAAA,MACA,aAAa,KAAK,IAAI;AAAA,MACtB,SAAS,MAAM,KAAK,gBAAgB,OAAO;AAAA,MAC3C,mBAAmB,MAAM,KAAK,kBAAkB,OAAO;AAAA,MACvD,iBAAiB,MAAM,KAAK,mBAAmB,OAAO;AAAA,MACtD,qBAAqB,MAAM,KAAK,mBAAmB,OAAO;AAAA,MAC1D,eAAe,KAAK,OAAO,wBAAwB,MAAM,KAAK,sBAAsB,OAAO,IAAI;AAAA,MAC/F,iBAAiB,MAAM,KAAK,wBAAwB,OAAO;AAAA,MAC3D,YAAY;AAAA,IACd;AAGA,UAAM,aAAa,MAAM,KAAK,aAAa,MAAM;AACjD,WAAO,aAAa;AAEpB,WAAO,KAAK,0BAA0B,EAAE,QAAQ,WAAW,CAAC;AAC5D,WAAO;AAAA,EACT;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,qBAAqB,QAAiC;AAC1D,UAAM,UAAU,KAAK,eAAe,IAAI,MAAM;AAC9C,QAAI,CAAC,SAAS;AACZ,YAAM,IAAI,MAAM,mCAAmC,MAAM,EAAE;AAAA,IAC7D;AAEA,UAAM,WAAW;AAAA,MACf,OAAO,wBAAwB,MAAM;AAAA,MACrC,WAAW,QAAQ;AAAA,MACnB,YAAY,QAAQ,WAAW,IAAI,WAAS;AAAA,QAC1C,WAAW,KAAK;AAAA,QAChB,WAAW,KAAK;AAAA,QAChB,SAAS,KAAK;AAAA,QACd,UAAU,KAAK,UAAU,KAAK;AAAA,QAC9B,SAAS,KAAK;AAAA,QACd,SAAS,KAAK,SAAS,UAAU;AAAA,QACjC,QAAQ,KAAK,QAAQ,UAAU;AAAA,QAC/B,aAAa,KAAK;AAAA,QAClB,OAAO,KAAK;AAAA,MACd,EAAE;AAAA,MACF,eAAe,QAAQ,YAAY,eAAe,OAAO,CAAC,KAAK,SAAS,MAAM,MAAM,CAAC;AAAA,IACvF;AAGA,UAAM,OAAO,MAAM,KAAK,qBAAqB,QAAQ;AAErD,UAAM,eAAe,KAAK,KAAK,gBAAgB,YAAY,MAAM,OAAO;AACxE,UAAM,GAAG,MAAM,KAAK,QAAQ,YAAY,GAAG,EAAE,WAAW,KAAK,CAAC;AAC9D,UAAM,GAAG,UAAU,cAAc,IAAI;AAErC,WAAO;AAAA,EACT;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,2BAA2B,QAA6C;AAC5E,UAAM,UAAU,KAAK,eAAe,IAAI,MAAM;AAC9C,QAAI,CAAC,SAAS;AACZ,YAAM,IAAI,MAAM,mCAAmC,MAAM,EAAE;AAAA,IAC7D;AAEA,UAAM,UAA8B;AAAA,MAClC,IAAI,gBAAgB,MAAM;AAAA,MAC1B,OAAO,CAAC;AAAA,MACR,OAAO,CAAC;AAAA,MACR,SAAS;AAAA,QACP,YAAY;AAAA,QACZ,YAAY;AAAA,QACZ,gBAAgB;AAAA,QAChB,gBAAgB;AAAA,MAClB;AAAA,IACF;AAGA,aAAS,IAAI,GAAG,IAAI,QAAQ,WAAW,QAAQ,KAAK;AAClD,YAAM,YAAY,QAAQ,WAAW,CAAC;AAGtC,cAAQ,MAAM,KAAK;AAAA,QACjB,IAAI,QAAQ,UAAU,SAAS;AAAA,QAC/B,MAAM;AAAA,QACN,OAAO,aAAa,UAAU,SAAS;AAAA,QACvC,MAAM,UAAU,eAAe;AAAA,QAC/B,OAAO,UAAU,UAAU,YAAY;AAAA,QACvC,UAAU;AAAA,UACR,UAAU,UAAU,UAAU,UAAU;AAAA,UACxC,SAAS,UAAU,SAAS,UAAU;AAAA,UACtC,QAAQ,UAAU,QAAQ,UAAU;AAAA,QACtC;AAAA,MACF,CAAC;AAGD,UAAI,IAAI,QAAQ,WAAW,SAAS,GAAG;AACrC,gBAAQ,MAAM,KAAK;AAAA,UACjB,IAAI,QAAQ,CAAC,IAAI,IAAI,CAAC;AAAA,UACtB,MAAM,QAAQ,UAAU,SAAS;AAAA,UACjC,IAAI,QAAQ,QAAQ,WAAW,IAAI,CAAC,EAAE,SAAS;AAAA,UAC/C,MAAM;AAAA,UACN,QAAQ,UAAU,eAAe;AAAA,QACnC,CAAC;AAAA,MACH;AAAA,IACF;AAEA,YAAQ,UAAU;AAAA,MAChB,YAAY,QAAQ,MAAM;AAAA,MAC1B,YAAY,QAAQ,MAAM;AAAA,MAC1B,gBAAgB,QAAQ,YAAY,aAAa,SAAS,IACxD,QAAQ,YAAY,aAAa,OAAO,CAAC,KAAK,SAAS,MAAM,MAAM,CAAC,IAAI,QAAQ,YAAY,aAAa,SAAS;AAAA,MACpH,gBAAgB,KAAK,IAAI,GAAG,QAAQ,YAAY,YAAY;AAAA,IAC9D;AAEA,WAAO;AAAA,EACT;AAAA;AAAA;AAAA;AAAA,EAKA,MAAc,wBAAwB,SAAsC;AAC1E,UAAM,qBAAqB,YAAY,YAAY;AACjD,UAAI;AACF,cAAM,KAAK,sBAAsB,OAAO;AACxC,cAAM,KAAK,yBAAyB,OAAO;AAAA,MAC7C,SAAS,OAAgB;AACvB,eAAO,MAAM,oBAAoB,KAAc;AAAA,MACjD;AAAA,IACF,GAAG,GAAI;AAGP,IAAC,QAAgB,qBAAqB;AAAA,EACxC;AAAA;AAAA;AAAA;AAAA,EAKA,MAAc,sBAAsB,SAAsC;AACxE,QAAI;AAEF,YAAM,YAAY,KAAK,KAAK,QAAQ,UAAU,YAAY;AAC1D,YAAM,gBAAgB,KAAK,KAAK,QAAQ,UAAU,eAAe;AAEjE,UAAI,eAAoB,CAAC;AACzB,UAAI,mBAAmB;AAEvB,UAAI;AACF,cAAM,YAAY,MAAM,GAAG,SAAS,WAAW,MAAM;AACrD,uBAAe,KAAK,MAAM,SAAS;AAEnC,cAAM,WAAW,MAAM,GAAG,SAAS,eAAe,MAAM;AACxD,2BAAmB,SAAS,SAAS,KAAK,CAAC,KAAK;AAAA,MAClD,QAAQ;AAEN;AAAA,MACF;AAGA,YAAM,YAAY,QAAQ,WAAW,QAAQ,WAAW,SAAS,CAAC;AAClE,UAAI,WAAW,cAAc,kBAAkB;AAC7C;AAAA,MACF;AAGA,YAAM,QAAwB;AAAA,QAC5B,WAAW;AAAA,QACX,WAAW,KAAK,IAAI;AAAA,QACpB,SAAS,KAAK,IAAI;AAAA;AAAA,QAClB,OAAO,KAAK,wBAAwB,QAAQ,QAAQ;AAAA,QACpD,aAAa,MAAM,KAAK,qBAAqB,QAAQ,QAAQ;AAAA,QAC7D,SAAS;AAAA;AAAA,QACT,SAAS,CAAC;AAAA,QACV,QAAQ,CAAC;AAAA,QACT,aAAa,QAAQ,YAAY,EAAE;AAAA,QACnC,YAAY,KAAK,kBAAkB;AAAA,MACrC;AAEA,cAAQ,WAAW,KAAK,KAAK;AAAA,IAE/B,SAAS,OAAgB;AACvB,aAAO,MAAM,qCAAqC,KAAc;AAAA,IAClE;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAKA,MAAc,yBAAyB,SAAsC;AAC3E,UAAM,gBAAgB,QAAQ,YAAY,EAAE;AAC5C,YAAQ,YAAY,YAAY,KAAK,aAAa;AAClD,YAAQ,YAAY,aAAa,KAAK,IAAI,QAAQ,YAAY,YAAY,aAAa;AAGvF,UAAM,cAAc,MAAM,KAAK,qBAAqB,QAAQ,QAAQ;AACpE,YAAQ,YAAY,aAAa,KAAK,WAAW;AAGjD,QAAI,QAAQ,YAAY,eAAe,SAAS,GAAG;AACjD,cAAQ,YAAY,uBAClB,QAAQ,YAAY,eAAe,OAAO,CAAC,KAAK,SAAS,MAAM,MAAM,CAAC,IACtE,QAAQ,YAAY,eAAe;AAAA,IACvC;AAGA,QAAI,QAAQ,YAAY,aAAa,SAAS,GAAG;AAC/C,YAAM,iBAAiB,QAAQ,YAAY,aAAa,OAAO,CAAC,KAAK,SAAS,MAAM,MAAM,CAAC,IACzF,QAAQ,YAAY,aAAa;AACnC,cAAQ,YAAY,oBAAoB,KAAK,IAAI,GAAG,IAAK,iBAAiB,GAAM;AAAA,IAClF;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAKA,MAAc,gBAAgB,SAAqC;AACjE,UAAM,kBAAkB,QAAQ,WAAW;AAC3C,UAAM,uBAAuB,QAAQ,WAAW,OAAO,OAAK,EAAE,OAAO,EAAE;AACvE,UAAM,gBAAgB,QAAQ,YAAY,eAAe,OAAO,CAAC,KAAK,SAAS,MAAM,MAAM,CAAC;AAE5F,WAAO;AAAA,MACL,QAAQ,QAAQ;AAAA,MAChB;AAAA,MACA;AAAA,MACA,aAAa,kBAAkB,IAAI,uBAAuB,kBAAkB;AAAA,MAC5E;AAAA,MACA,sBAAsB,QAAQ,YAAY;AAAA,MAC1C,iBAAiB,QAAQ,YAAY;AAAA,MACrC,mBAAmB,QAAQ,YAAY;AAAA,MACvC,QAAQ,kBAAkB,KAAK,QAAQ,WAAW,QAAQ,WAAW,SAAS,CAAC,EAAE,UAAU,cAAc;AAAA,IAC3G;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAKA,MAAc,kBAAkB,SAAqC;AACnE,QAAI,QAAQ,WAAW,WAAW,EAAG,QAAO,EAAE,UAAU,CAAC,GAAG,UAAU,CAAC,EAAE;AAEzE,UAAM,WAAqB,CAAC;AAC5B,UAAM,WAAqB,CAAC;AAG5B,UAAM,YAAY,QAAQ,WAAW,IAAI,OAAK,EAAE,UAAU,EAAE,SAAS;AACrE,UAAM,cAAc,UAAU,OAAO,CAAC,KAAK,MAAM,MAAM,GAAG,CAAC,IAAI,UAAU;AAEzE,QAAI,UAAU,KAAK,OAAK,IAAI,cAAc,CAAC,GAAG;AAC5C,eAAS,KAAK,mCAAmC;AACjD,eAAS,KAAK,kFAAkF;AAAA,IAClG;AAGA,UAAM,sBAAsB,KAAK,wBAAwB,QAAQ,UAAU;AAC3E,QAAI,oBAAoB,SAAS,GAAG;AAClC,eAAS,KAAK,wCAAwC;AACtD,eAAS,KAAK,oEAAoE;AAAA,IACpF;AAGA,QAAI,QAAQ,YAAY,aAAa,SAAS,GAAG;AAC/C,YAAM,gBAAgB,QAAQ,YAAY,aAAa,QAAQ,YAAY,aAAa,SAAS,CAAC,IAChG,QAAQ,YAAY,aAAa,CAAC;AAEpC,UAAI,gBAAgB,KAAM;AACxB,iBAAS,KAAK,4BAA4B;AAC1C,iBAAS,KAAK,kEAAkE;AAAA,MAClF;AAAA,IACF;AAEA,WAAO,EAAE,UAAU,SAAS;AAAA,EAC9B;AAAA;AAAA;AAAA;AAAA,EAKA,MAAc,mBAAmB,SAAqC;AACpE,WAAO;AAAA,MACL,gBAAgB,QAAQ,YAAY,aAAa,SAAS,IACxD,QAAQ,YAAY,aAAa,OAAO,CAAC,KAAK,SAAS,MAAM,MAAM,CAAC,IAAI,QAAQ,YAAY,aAAa,SAAS;AAAA,MACpH,gBAAgB,KAAK,IAAI,GAAG,QAAQ,YAAY,YAAY;AAAA,MAC5D,mBAAmB,KAAK,oBAAoB,QAAQ,YAAY,YAAY;AAAA,MAC5E,YAAY,QAAQ,YAAY;AAAA,IAClC;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAKA,MAAc,mBAAmB,SAAqC;AACpE,WAAO;AAAA,MACL,kBAAkB,KAAK,0BAA0B,QAAQ,YAAY,WAAW;AAAA,MAChF,qBAAqB,QAAQ,YAAY;AAAA,MACzC,qBAAqB;AAAA,QACnB,KAAK;AAAA;AAAA,QACL,QAAQ,QAAQ,YAAY;AAAA,QAC5B,SAAS,QAAQ,YAAY;AAAA,MAC/B;AAAA,IACF;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAKA,MAAc,sBAAsB,SAAmD;AACrF,UAAM,cAAc,MAAM,KAAK,0BAA0B,OAAO;AAEhE,UAAM,UAAU,KAAK,KAAK,gBAAgB,iBAAiB,QAAQ,MAAM,OAAO;AAChF,UAAM,GAAG,MAAM,KAAK,QAAQ,OAAO,GAAG,EAAE,WAAW,KAAK,CAAC;AACzD,UAAM,GAAG,UAAU,SAAS,WAAW;AAEvC,WAAO;AAAA,MACL,IAAI,OAAO,QAAQ,MAAM;AAAA,MACzB,MAAM;AAAA,MACN,UAAU;AAAA,MACV,MAAM;AAAA,QACJ,YAAY,QAAQ;AAAA,QACpB,aAAa,QAAQ;AAAA,QACrB,aAAa,QAAQ;AAAA,MACvB;AAAA,MACA,UAAU;AAAA,QACR,aAAa,KAAK,IAAI;AAAA,QACtB,QAAQ;AAAA,QACR,aAAa;AAAA,MACf;AAAA,IACF;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAKA,MAAc,wBAAwB,SAA0C;AAC9E,UAAM,kBAA4B,CAAC;AAGnC,QAAI,QAAQ,YAAY,uBAAuB,KAAO;AACpD,sBAAgB,KAAK,8DAA8D;AAAA,IACrF;AAEA,QAAI,QAAQ,YAAY,oBAAoB,KAAK;AAC/C,sBAAgB,KAAK,gEAAgE;AAAA,IACvF;AAGA,UAAM,cAAc,QAAQ,WAAW,OAAO,OAAK,EAAE,OAAO,EAAE,SAAS,KAAK,IAAI,GAAG,QAAQ,WAAW,MAAM;AAC5G,QAAI,cAAc,KAAK;AACrB,sBAAgB,KAAK,+DAA+D;AAAA,IACtF;AAGA,QAAI,QAAQ,YAAY,aAAa,MAAM,OAAO,MAAM;AACtD,sBAAgB,KAAK,uDAAuD;AAAA,IAC9E;AAEA,WAAO;AAAA,EACT;AAAA;AAAA;AAAA;AAAA,EAKA,MAAc,aAAa,QAAsC;AAC/D,UAAM,aAAY,oBAAI,KAAK,GAAE,YAAY,EAAE,QAAQ,SAAS,GAAG;AAC/D,UAAM,WAAW,eAAe,OAAO,MAAM,IAAI,SAAS;AAE1D,QAAI;AACJ,QAAI;AAEJ,YAAQ,KAAK,OAAO,cAAc;AAAA,MAChC,KAAK;AACH,kBAAU,KAAK,UAAU,QAAQ,MAAM,CAAC;AACxC,oBAAY;AACZ;AAAA,MACF,KAAK;AACH,kBAAU,KAAK,uBAAuB,MAAM;AAC5C,oBAAY;AACZ;AAAA,MACF,KAAK;AAAA,MACL;AACE,kBAAU,KAAK,mBAAmB,MAAM;AACxC,oBAAY;AACZ;AAAA,IACJ;AAEA,UAAM,aAAa,KAAK,KAAK,gBAAgB,GAAG,QAAQ,IAAI,SAAS,EAAE;AACvE,UAAM,GAAG,MAAM,KAAK,QAAQ,UAAU,GAAG,EAAE,WAAW,KAAK,CAAC;AAC5D,UAAM,GAAG,UAAU,YAAY,OAAO;AAEtC,WAAO;AAAA,EACT;AAAA;AAAA,EAGQ,wBAAwB,UAAsE;AAEpG,WAAO;AAAA,EACT;AAAA,EAEA,MAAc,qBAAqB,UAAmC;AACpE,QAAI;AACF,YAAM,eAAe,KAAK,KAAK,UAAU,cAAc;AACvD,YAAM,WAAW,MAAM,GAAG,SAAS,cAAc,MAAM;AACvD,aAAO,SAAS;AAAA,IAClB,QAAQ;AACN,aAAO;AAAA,IACT;AAAA,EACF;AAAA,EAEQ,oBAA4B;AAClC,UAAM,QAAQ,IAAI,MAAM,EAAE,SAAS;AACnC,WAAO,MAAM,MAAM,IAAI,EAAE,MAAM,GAAG,CAAC,EAAE,KAAK,IAAI;AAAA,EAChD;AAAA,EAEQ,wBAAwB,YAAwC;AACtE,UAAM,WAAqB,CAAC;AAC5B,QAAI,gBAAgB;AAEpB,eAAW,aAAa,YAAY;AAClC,UAAI,CAAC,UAAU,SAAS;AACtB;AAAA,MACF,OAAO;AACL,YAAI,gBAAgB,GAAG;AACrB,mBAAS,KAAK,aAAa;AAAA,QAC7B;AACA,wBAAgB;AAAA,MAClB;AAAA,IACF;AAEA,QAAI,gBAAgB,GAAG;AACrB,eAAS,KAAK,aAAa;AAAA,IAC7B;AAEA,WAAO;AAAA,EACT;AAAA,EAEQ,oBAAoB,OAAyB;AACnD,QAAI,MAAM,SAAS,EAAG,QAAO;AAE7B,UAAM,QAAQ,MAAM,CAAC;AACrB,UAAM,OAAO,MAAM,MAAM,SAAS,CAAC;AAEnC,WAAO,QAAQ,KAAK,OAAO,SAAS,QAAQ;AAAA,EAC9C;AAAA,EAEQ,0BAA0B,aAA+B;AAC/D,QAAI,YAAY,SAAS,EAAG,QAAO;AAEnC,UAAM,MAAM,KAAK,IAAI,GAAG,WAAW;AACnC,UAAM,MAAM,KAAK,IAAI,GAAG,WAAW;AAEnC,WAAO,MAAM,IAAI,MAAM,MAAM;AAAA,EAC/B;AAAA,EAEQ,qBAAqB,UAAuB;AAElD,WAAO;AAAA;AAAA;AAAA;AAAA,aAIE,SAAS,KAAK;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UAWjB,SAAS,KAAK;AAAA;AAAA,UAEd,SAAS,WAAW,IAAI,CAAC,SAAc;AAAA,oCACb,KAAK,UAAU,YAAY,SAAS;AAAA,gCACxC,KAAK,SAAS;AAAA,+BACf,KAAK,QAAQ;AAAA,8BACd,KAAK,OAAO,cAAc,KAAK,MAAM;AAAA,mCAChC,KAAK,WAAW;AAAA;AAAA,SAE1C,EAAE,KAAK,EAAE,CAAC;AAAA;AAAA;AAAA;AAAA;AAAA,EAKjB;AAAA,EAEQ,0BAA0B,SAA+B;AAE/D,WAAO;AAAA;AAAA;AAAA;AAAA,wCAI6B,QAAQ,MAAM;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,iBAarC,QAAQ,WAAW,MAAM;AAAA;AAAA;AAAA;AAAA,iBAIzB,KAAK,MAAM,QAAQ,YAAY,oBAAoB,CAAC;AAAA;AAAA;AAAA;AAAA,iBAIpD,KAAK,MAAM,QAAQ,YAAY,oBAAoB,GAAG,CAAC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,6CAM3B,KAAK,UAAU,OAAO,CAAC;AAAA;AAAA;AAAA;AAAA;AAAA,EAKlE;AAAA,EAEQ,uBAAuB,QAA6B;AAC1D,WAAO;AAAA;AAAA;AAAA,eAGI,OAAO,MAAM;AAAA,iBACX,IAAI,KAAK,OAAO,WAAW,EAAE,eAAe,CAAC;AAAA;AAAA;AAAA,0BAGpC,OAAO,QAAQ,eAAe;AAAA,sBAClC,KAAK,MAAM,OAAO,QAAQ,cAAc,GAAG,CAAC;AAAA,wBAC1C,OAAO,QAAQ,aAAa;AAAA,gCACpB,KAAK,MAAM,OAAO,QAAQ,oBAAoB,CAAC;AAAA;AAAA;AAAA,qBAG1D,KAAK,MAAM,OAAO,oBAAoB,oBAAoB,SAAS,OAAO,IAAI,CAAC;AAAA,4BACxE,KAAK,MAAM,OAAO,oBAAoB,oBAAoB,UAAU,GAAG,CAAC;AAAA;AAAA;AAAA,EAGlG,OAAO,gBAAgB,IAAI,OAAK,KAAK,CAAC,EAAE,EAAE,KAAK,IAAI,CAAC;AAAA;AAAA,EAEpD;AAAA,EAEQ,mBAAmB,QAA6B;AACtD,WAAO;AAAA;AAAA;AAAA;AAAA,kCAIuB,OAAO,MAAM;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,kBAa7B,OAAO,QAAQ,eAAe;AAAA;AAAA;AAAA;AAAA,kBAI9B,KAAK,MAAM,OAAO,QAAQ,cAAc,GAAG,CAAC;AAAA;AAAA;AAAA;AAAA,kBAI5C,KAAK,MAAM,OAAO,QAAQ,oBAAoB,CAAC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,cAQnD,OAAO,gBAAgB,IAAI,OAAK,OAAO,CAAC,OAAO,EAAE,KAAK,EAAE,CAAC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAMrE;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,iBAAiB,QAA+B;AACpD,UAAM,UAAU,KAAK,eAAe,IAAI,MAAM;AAC9C,QAAI,CAAC,QAAS;AAGd,QAAK,QAAgB,oBAAoB;AACvC,oBAAe,QAAgB,kBAAkB;AAAA,IACnD;AAGA,UAAM,KAAK,oBAAoB,MAAM;AAErC,SAAK,eAAe,OAAO,MAAM;AACjC,WAAO,KAAK,yBAAyB,EAAE,OAAO,CAAC;AAAA,EACjD;AACF;AAGO,MAAM,gBAAgB,IAAI,cAAc;",
|
|
5
|
+
"mappings": ";;;;AAKA,YAAY,QAAQ;AACpB,YAAY,UAAU;AACtB,SAAS,cAAc;AACvB,SAAS,oBAAoB;AAC7B,SAAS,sBAAsB;AAkBxB,MAAM,cAAc;AAAA,EACjB;AAAA,EACA,iBAA4C,oBAAI,IAAI;AAAA,EACpD;AAAA,EAER,YAAY,QAAkC;AAC5C,SAAK,SAAS;AAAA,MACZ,0BAA0B;AAAA,MAC1B,sBAAsB;AAAA,MACtB,uBAAuB;AAAA,MACvB,cAAc;AAAA,MACd,eAAe;AAAA,MACf,GAAG;AAAA,IACL;AAEA,WAAO,KAAK,8BAA8B,KAAK,MAAM;AAAA,EACvD;AAAA,EAEA,MAAM,aAA4B;AAChC,QAAI;AACF,YAAM,eAAe,WAAW;AAEhC,YAAM,UAAU,MAAM,eAAe,mBAAmB,CAAC,CAAC;AAC1D,UAAI,QAAQ,UAAU;AACpB,aAAK,eAAe,IAAI,aAAa,QAAQ,UAAU,QAAQ,SAAS;AAAA,MAC1E;AAEA,aAAO,KAAK,mCAAmC;AAAA,IACjD,SAAS,OAAgB;AACvB,aAAO,MAAM,iCAAiC,KAAc;AAC5D,YAAM;AAAA,IACR;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,kBAAkB,QAAgB,UAAyC;AAC/E,WAAO,KAAK,0BAA0B,EAAE,QAAQ,SAAS,CAAC;AAE1D,UAAM,UAAwB;AAAA,MAC5B,IAAI,SAAS,KAAK,IAAI,CAAC;AAAA,MACvB;AAAA,MACA;AAAA,MACA,WAAW,KAAK,IAAI;AAAA,MACpB,YAAY,CAAC;AAAA,MACb,aAAa,CAAC;AAAA,MACd,aAAa;AAAA,QACX,gBAAgB,CAAC;AAAA,QACjB,aAAa,CAAC;AAAA,QACd,cAAc,CAAC;AAAA,QACf,sBAAsB;AAAA,QACtB,YAAY;AAAA,QACZ,mBAAmB;AAAA,MACrB;AAAA,MACA,oBAAoB,KAAK,OAAO;AAAA,IAClC;AAEA,SAAK,eAAe,IAAI,QAAQ,OAAO;AAEvC,QAAI,KAAK,OAAO,0BAA0B;AACxC,YAAM,KAAK,wBAAwB,OAAO;AAAA,IAC5C;AAEA,WAAO;AAAA,EACT;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,oBAAoB,QAAsC;AAC9D,UAAM,UAAU,KAAK,eAAe,IAAI,MAAM;AAC9C,QAAI,CAAC,SAAS;AACZ,YAAM,IAAI,MAAM,mCAAmC,MAAM,EAAE;AAAA,IAC7D;AAEA,WAAO,KAAK,2BAA2B,EAAE,OAAO,CAAC;AAEjD,UAAM,SAAsB;AAAA,MAC1B,WAAW,QAAQ;AAAA,MACnB;AAAA,MACA,aAAa,KAAK,IAAI;AAAA,MACtB,SAAS,MAAM,KAAK,gBAAgB,OAAO;AAAA,MAC3C,mBAAmB,MAAM,KAAK,kBAAkB,OAAO;AAAA,MACvD,iBAAiB,MAAM,KAAK,mBAAmB,OAAO;AAAA,MACtD,qBAAqB,MAAM,KAAK,mBAAmB,OAAO;AAAA,MAC1D,eAAe,KAAK,OAAO,wBAAwB,MAAM,KAAK,sBAAsB,OAAO,IAAI;AAAA,MAC/F,iBAAiB,MAAM,KAAK,wBAAwB,OAAO;AAAA,MAC3D,YAAY;AAAA,IACd;AAGA,UAAM,aAAa,MAAM,KAAK,aAAa,MAAM;AACjD,WAAO,aAAa;AAEpB,WAAO,KAAK,0BAA0B,EAAE,QAAQ,WAAW,CAAC;AAC5D,WAAO;AAAA,EACT;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,qBAAqB,QAAiC;AAC1D,UAAM,UAAU,KAAK,eAAe,IAAI,MAAM;AAC9C,QAAI,CAAC,SAAS;AACZ,YAAM,IAAI,MAAM,mCAAmC,MAAM,EAAE;AAAA,IAC7D;AAEA,UAAM,WAAW;AAAA,MACf,OAAO,wBAAwB,MAAM;AAAA,MACrC,WAAW,QAAQ;AAAA,MACnB,YAAY,QAAQ,WAAW,IAAI,WAAS;AAAA,QAC1C,WAAW,KAAK;AAAA,QAChB,WAAW,KAAK;AAAA,QAChB,SAAS,KAAK;AAAA,QACd,UAAU,KAAK,UAAU,KAAK;AAAA,QAC9B,SAAS,KAAK;AAAA,QACd,SAAS,KAAK,SAAS,UAAU;AAAA,QACjC,QAAQ,KAAK,QAAQ,UAAU;AAAA,QAC/B,aAAa,KAAK;AAAA,QAClB,OAAO,KAAK;AAAA,MACd,EAAE;AAAA,MACF,eAAe,QAAQ,YAAY,eAAe,OAAO,CAAC,KAAK,SAAS,MAAM,MAAM,CAAC;AAAA,IACvF;AAGA,UAAM,OAAO,MAAM,KAAK,qBAAqB,QAAQ;AAErD,UAAM,eAAe,KAAK,KAAK,gBAAgB,YAAY,MAAM,OAAO;AACxE,UAAM,GAAG,MAAM,KAAK,QAAQ,YAAY,GAAG,EAAE,WAAW,KAAK,CAAC;AAC9D,UAAM,GAAG,UAAU,cAAc,IAAI;AAErC,WAAO;AAAA,EACT;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,2BAA2B,QAA6C;AAC5E,UAAM,UAAU,KAAK,eAAe,IAAI,MAAM;AAC9C,QAAI,CAAC,SAAS;AACZ,YAAM,IAAI,MAAM,mCAAmC,MAAM,EAAE;AAAA,IAC7D;AAEA,UAAM,UAA8B;AAAA,MAClC,IAAI,gBAAgB,MAAM;AAAA,MAC1B,OAAO,CAAC;AAAA,MACR,OAAO,CAAC;AAAA,MACR,SAAS;AAAA,QACP,YAAY;AAAA,QACZ,YAAY;AAAA,QACZ,gBAAgB;AAAA,QAChB,gBAAgB;AAAA,MAClB;AAAA,IACF;AAGA,aAAS,IAAI,GAAG,IAAI,QAAQ,WAAW,QAAQ,KAAK;AAClD,YAAM,YAAY,QAAQ,WAAW,CAAC;AAGtC,cAAQ,MAAM,KAAK;AAAA,QACjB,IAAI,QAAQ,UAAU,SAAS;AAAA,QAC/B,MAAM;AAAA,QACN,OAAO,aAAa,UAAU,SAAS;AAAA,QACvC,MAAM,UAAU,eAAe;AAAA,QAC/B,OAAO,UAAU,UAAU,YAAY;AAAA,QACvC,UAAU;AAAA,UACR,UAAU,UAAU,UAAU,UAAU;AAAA,UACxC,SAAS,UAAU,SAAS,UAAU;AAAA,UACtC,QAAQ,UAAU,QAAQ,UAAU;AAAA,QACtC;AAAA,MACF,CAAC;AAGD,UAAI,IAAI,QAAQ,WAAW,SAAS,GAAG;AACrC,gBAAQ,MAAM,KAAK;AAAA,UACjB,IAAI,QAAQ,CAAC,IAAI,IAAI,CAAC;AAAA,UACtB,MAAM,QAAQ,UAAU,SAAS;AAAA,UACjC,IAAI,QAAQ,QAAQ,WAAW,IAAI,CAAC,EAAE,SAAS;AAAA,UAC/C,MAAM;AAAA,UACN,QAAQ,UAAU,eAAe;AAAA,QACnC,CAAC;AAAA,MACH;AAAA,IACF;AAEA,YAAQ,UAAU;AAAA,MAChB,YAAY,QAAQ,MAAM;AAAA,MAC1B,YAAY,QAAQ,MAAM;AAAA,MAC1B,gBAAgB,QAAQ,YAAY,aAAa,SAAS,IACxD,QAAQ,YAAY,aAAa,OAAO,CAAC,KAAK,SAAS,MAAM,MAAM,CAAC,IAAI,QAAQ,YAAY,aAAa,SAAS;AAAA,MACpH,gBAAgB,KAAK,IAAI,GAAG,QAAQ,YAAY,YAAY;AAAA,IAC9D;AAEA,WAAO;AAAA,EACT;AAAA;AAAA;AAAA;AAAA,EAKA,MAAc,wBAAwB,SAAsC;AAC1E,UAAM,qBAAqB,YAAY,YAAY;AACjD,UAAI;AACF,cAAM,KAAK,sBAAsB,OAAO;AACxC,cAAM,KAAK,yBAAyB,OAAO;AAAA,MAC7C,SAAS,OAAgB;AACvB,eAAO,MAAM,oBAAoB,KAAc;AAAA,MACjD;AAAA,IACF,GAAG,GAAI;AAGP,IAAC,QAAgB,qBAAqB;AAAA,EACxC;AAAA;AAAA;AAAA;AAAA,EAKA,MAAc,sBAAsB,SAAsC;AACxE,QAAI;AAEF,YAAM,YAAY,KAAK,KAAK,QAAQ,UAAU,YAAY;AAC1D,YAAM,gBAAgB,KAAK,KAAK,QAAQ,UAAU,eAAe;AAEjE,UAAI,eAAoB,CAAC;AACzB,UAAI,mBAAmB;AAEvB,UAAI;AACF,cAAM,YAAY,MAAM,GAAG,SAAS,WAAW,MAAM;AACrD,uBAAe,KAAK,MAAM,SAAS;AAEnC,cAAM,WAAW,MAAM,GAAG,SAAS,eAAe,MAAM;AACxD,2BAAmB,SAAS,SAAS,KAAK,CAAC,KAAK;AAAA,MAClD,QAAQ;AAEN;AAAA,MACF;AAGA,YAAM,YAAY,QAAQ,WAAW,QAAQ,WAAW,SAAS,CAAC;AAClE,UAAI,WAAW,cAAc,kBAAkB;AAC7C;AAAA,MACF;AAGA,YAAM,QAAwB;AAAA,QAC5B,WAAW;AAAA,QACX,WAAW,KAAK,IAAI;AAAA,QACpB,SAAS,KAAK,IAAI;AAAA;AAAA,QAClB,OAAO,KAAK,wBAAwB,QAAQ,QAAQ;AAAA,QACpD,aAAa,MAAM,KAAK,qBAAqB,QAAQ,QAAQ;AAAA,QAC7D,SAAS;AAAA;AAAA,QACT,SAAS,CAAC;AAAA,QACV,QAAQ,CAAC;AAAA,QACT,aAAa,QAAQ,YAAY,EAAE;AAAA,QACnC,YAAY,KAAK,kBAAkB;AAAA,MACrC;AAEA,cAAQ,WAAW,KAAK,KAAK;AAAA,IAE/B,SAAS,OAAgB;AACvB,aAAO,MAAM,qCAAqC,KAAc;AAAA,IAClE;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAKA,MAAc,yBAAyB,SAAsC;AAC3E,UAAM,gBAAgB,QAAQ,YAAY,EAAE;AAC5C,YAAQ,YAAY,YAAY,KAAK,aAAa;AAClD,YAAQ,YAAY,aAAa,KAAK,IAAI,QAAQ,YAAY,YAAY,aAAa;AAGvF,UAAM,cAAc,MAAM,KAAK,qBAAqB,QAAQ,QAAQ;AACpE,YAAQ,YAAY,aAAa,KAAK,WAAW;AAGjD,QAAI,QAAQ,YAAY,eAAe,SAAS,GAAG;AACjD,cAAQ,YAAY,uBAClB,QAAQ,YAAY,eAAe,OAAO,CAAC,KAAK,SAAS,MAAM,MAAM,CAAC,IACtE,QAAQ,YAAY,eAAe;AAAA,IACvC;AAGA,QAAI,QAAQ,YAAY,aAAa,SAAS,GAAG;AAC/C,YAAM,iBAAiB,QAAQ,YAAY,aAAa,OAAO,CAAC,KAAK,SAAS,MAAM,MAAM,CAAC,IACzF,QAAQ,YAAY,aAAa;AACnC,cAAQ,YAAY,oBAAoB,KAAK,IAAI,GAAG,IAAK,iBAAiB,GAAM;AAAA,IAClF;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAKA,MAAc,gBAAgB,SAAqC;AACjE,UAAM,kBAAkB,QAAQ,WAAW;AAC3C,UAAM,uBAAuB,QAAQ,WAAW,OAAO,OAAK,EAAE,OAAO,EAAE;AACvE,UAAM,gBAAgB,QAAQ,YAAY,eAAe,OAAO,CAAC,KAAK,SAAS,MAAM,MAAM,CAAC;AAE5F,WAAO;AAAA,MACL,QAAQ,QAAQ;AAAA,MAChB;AAAA,MACA;AAAA,MACA,aAAa,kBAAkB,IAAI,uBAAuB,kBAAkB;AAAA,MAC5E;AAAA,MACA,sBAAsB,QAAQ,YAAY;AAAA,MAC1C,iBAAiB,QAAQ,YAAY;AAAA,MACrC,mBAAmB,QAAQ,YAAY;AAAA,MACvC,QAAQ,kBAAkB,KAAK,QAAQ,WAAW,QAAQ,WAAW,SAAS,CAAC,EAAE,UAAU,cAAc;AAAA,IAC3G;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAKA,MAAc,kBAAkB,SAAqC;AACnE,QAAI,QAAQ,WAAW,WAAW,EAAG,QAAO,EAAE,UAAU,CAAC,GAAG,UAAU,CAAC,EAAE;AAEzE,UAAM,WAAqB,CAAC;AAC5B,UAAM,WAAqB,CAAC;AAG5B,UAAM,YAAY,QAAQ,WAAW,IAAI,OAAK,EAAE,UAAU,EAAE,SAAS;AACrE,UAAM,cAAc,UAAU,OAAO,CAAC,KAAK,MAAM,MAAM,GAAG,CAAC,IAAI,UAAU;AAEzE,QAAI,UAAU,KAAK,OAAK,IAAI,cAAc,CAAC,GAAG;AAC5C,eAAS,KAAK,mCAAmC;AACjD,eAAS,KAAK,kFAAkF;AAAA,IAClG;AAGA,UAAM,sBAAsB,KAAK,wBAAwB,QAAQ,UAAU;AAC3E,QAAI,oBAAoB,SAAS,GAAG;AAClC,eAAS,KAAK,wCAAwC;AACtD,eAAS,KAAK,oEAAoE;AAAA,IACpF;AAGA,QAAI,QAAQ,YAAY,aAAa,SAAS,GAAG;AAC/C,YAAM,gBAAgB,QAAQ,YAAY,aAAa,QAAQ,YAAY,aAAa,SAAS,CAAC,IAChG,QAAQ,YAAY,aAAa,CAAC;AAEpC,UAAI,gBAAgB,KAAM;AACxB,iBAAS,KAAK,4BAA4B;AAC1C,iBAAS,KAAK,kEAAkE;AAAA,MAClF;AAAA,IACF;AAEA,WAAO,EAAE,UAAU,SAAS;AAAA,EAC9B;AAAA;AAAA;AAAA;AAAA,EAKA,MAAc,mBAAmB,SAAqC;AACpE,WAAO;AAAA,MACL,gBAAgB,QAAQ,YAAY,aAAa,SAAS,IACxD,QAAQ,YAAY,aAAa,OAAO,CAAC,KAAK,SAAS,MAAM,MAAM,CAAC,IAAI,QAAQ,YAAY,aAAa,SAAS;AAAA,MACpH,gBAAgB,KAAK,IAAI,GAAG,QAAQ,YAAY,YAAY;AAAA,MAC5D,mBAAmB,KAAK,oBAAoB,QAAQ,YAAY,YAAY;AAAA,MAC5E,YAAY,QAAQ,YAAY;AAAA,IAClC;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAKA,MAAc,mBAAmB,SAAqC;AACpE,WAAO;AAAA,MACL,kBAAkB,KAAK,0BAA0B,QAAQ,YAAY,WAAW;AAAA,MAChF,qBAAqB,QAAQ,YAAY;AAAA,MACzC,qBAAqB;AAAA,QACnB,KAAK;AAAA;AAAA,QACL,QAAQ,QAAQ,YAAY;AAAA,QAC5B,SAAS,QAAQ,YAAY;AAAA,MAC/B;AAAA,IACF;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAKA,MAAc,sBAAsB,SAAmD;AACrF,UAAM,cAAc,MAAM,KAAK,0BAA0B,OAAO;AAEhE,UAAM,UAAU,KAAK,KAAK,gBAAgB,iBAAiB,QAAQ,MAAM,OAAO;AAChF,UAAM,GAAG,MAAM,KAAK,QAAQ,OAAO,GAAG,EAAE,WAAW,KAAK,CAAC;AACzD,UAAM,GAAG,UAAU,SAAS,WAAW;AAEvC,WAAO;AAAA,MACL,IAAI,OAAO,QAAQ,MAAM;AAAA,MACzB,MAAM;AAAA,MACN,UAAU;AAAA,MACV,MAAM;AAAA,QACJ,YAAY,QAAQ;AAAA,QACpB,aAAa,QAAQ;AAAA,QACrB,aAAa,QAAQ;AAAA,MACvB;AAAA,MACA,UAAU;AAAA,QACR,aAAa,KAAK,IAAI;AAAA,QACtB,QAAQ;AAAA,QACR,aAAa;AAAA,MACf;AAAA,IACF;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAKA,MAAc,wBAAwB,SAA0C;AAC9E,UAAM,kBAA4B,CAAC;AAGnC,QAAI,QAAQ,YAAY,uBAAuB,KAAO;AACpD,sBAAgB,KAAK,8DAA8D;AAAA,IACrF;AAEA,QAAI,QAAQ,YAAY,oBAAoB,KAAK;AAC/C,sBAAgB,KAAK,gEAAgE;AAAA,IACvF;AAGA,UAAM,cAAc,QAAQ,WAAW,OAAO,OAAK,EAAE,OAAO,EAAE,SAAS,KAAK,IAAI,GAAG,QAAQ,WAAW,MAAM;AAC5G,QAAI,cAAc,KAAK;AACrB,sBAAgB,KAAK,+DAA+D;AAAA,IACtF;AAGA,QAAI,QAAQ,YAAY,aAAa,MAAM,OAAO,MAAM;AACtD,sBAAgB,KAAK,uDAAuD;AAAA,IAC9E;AAEA,WAAO;AAAA,EACT;AAAA;AAAA;AAAA;AAAA,EAKA,MAAc,aAAa,QAAsC;AAC/D,UAAM,aAAY,oBAAI,KAAK,GAAE,YAAY,EAAE,QAAQ,SAAS,GAAG;AAC/D,UAAM,WAAW,eAAe,OAAO,MAAM,IAAI,SAAS;AAE1D,QAAI;AACJ,QAAI;AAEJ,YAAQ,KAAK,OAAO,cAAc;AAAA,MAChC,KAAK;AACH,kBAAU,KAAK,UAAU,QAAQ,MAAM,CAAC;AACxC,oBAAY;AACZ;AAAA,MACF,KAAK;AACH,kBAAU,KAAK,uBAAuB,MAAM;AAC5C,oBAAY;AACZ;AAAA,MACF,KAAK;AAAA,MACL;AACE,kBAAU,KAAK,mBAAmB,MAAM;AACxC,oBAAY;AACZ;AAAA,IACJ;AAEA,UAAM,aAAa,KAAK,KAAK,gBAAgB,GAAG,QAAQ,IAAI,SAAS,EAAE;AACvE,UAAM,GAAG,MAAM,KAAK,QAAQ,UAAU,GAAG,EAAE,WAAW,KAAK,CAAC;AAC5D,UAAM,GAAG,UAAU,YAAY,OAAO;AAEtC,WAAO;AAAA,EACT;AAAA;AAAA,EAGQ,wBAAwB,UAAsE;AAEpG,WAAO;AAAA,EACT;AAAA,EAEA,MAAc,qBAAqB,UAAmC;AACpE,QAAI;AACF,YAAM,eAAe,KAAK,KAAK,UAAU,cAAc;AACvD,YAAM,WAAW,MAAM,GAAG,SAAS,cAAc,MAAM;AACvD,aAAO,SAAS;AAAA,IAClB,QAAQ;AACN,aAAO;AAAA,IACT;AAAA,EACF;AAAA,EAEQ,oBAA4B;AAClC,UAAM,QAAQ,IAAI,MAAM,EAAE,SAAS;AACnC,WAAO,MAAM,MAAM,IAAI,EAAE,MAAM,GAAG,CAAC,EAAE,KAAK,IAAI;AAAA,EAChD;AAAA,EAEQ,wBAAwB,YAAwC;AACtE,UAAM,WAAqB,CAAC;AAC5B,QAAI,gBAAgB;AAEpB,eAAW,aAAa,YAAY;AAClC,UAAI,CAAC,UAAU,SAAS;AACtB;AAAA,MACF,OAAO;AACL,YAAI,gBAAgB,GAAG;AACrB,mBAAS,KAAK,aAAa;AAAA,QAC7B;AACA,wBAAgB;AAAA,MAClB;AAAA,IACF;AAEA,QAAI,gBAAgB,GAAG;AACrB,eAAS,KAAK,aAAa;AAAA,IAC7B;AAEA,WAAO;AAAA,EACT;AAAA,EAEQ,oBAAoB,OAAyB;AACnD,QAAI,MAAM,SAAS,EAAG,QAAO;AAE7B,UAAM,QAAQ,MAAM,CAAC;AACrB,UAAM,OAAO,MAAM,MAAM,SAAS,CAAC;AAEnC,WAAO,QAAQ,KAAK,OAAO,SAAS,QAAQ;AAAA,EAC9C;AAAA,EAEQ,0BAA0B,aAA+B;AAC/D,QAAI,YAAY,SAAS,EAAG,QAAO;AAEnC,UAAM,MAAM,KAAK,IAAI,GAAG,WAAW;AACnC,UAAM,MAAM,KAAK,IAAI,GAAG,WAAW;AAEnC,WAAO,MAAM,IAAI,MAAM,MAAM;AAAA,EAC/B;AAAA,EAEQ,qBAAqB,UAAuB;AAElD,WAAO;AAAA;AAAA;AAAA;AAAA,aAIE,SAAS,KAAK;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UAWjB,SAAS,KAAK;AAAA;AAAA,UAEd,SAAS,WAAW,IAAI,CAAC,SAAc;AAAA,oCACb,KAAK,UAAU,YAAY,SAAS;AAAA,gCACxC,KAAK,SAAS;AAAA,+BACf,KAAK,QAAQ;AAAA,8BACd,KAAK,OAAO,cAAc,KAAK,MAAM;AAAA,mCAChC,KAAK,WAAW;AAAA;AAAA,SAE1C,EAAE,KAAK,EAAE,CAAC;AAAA;AAAA;AAAA;AAAA;AAAA,EAKjB;AAAA,EAEQ,0BAA0B,SAA+B;AAE/D,WAAO;AAAA;AAAA;AAAA;AAAA,wCAI6B,QAAQ,MAAM;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,iBAarC,QAAQ,WAAW,MAAM;AAAA;AAAA;AAAA;AAAA,iBAIzB,KAAK,MAAM,QAAQ,YAAY,oBAAoB,CAAC;AAAA;AAAA;AAAA;AAAA,iBAIpD,KAAK,MAAM,QAAQ,YAAY,oBAAoB,GAAG,CAAC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,6CAM3B,KAAK,UAAU,OAAO,CAAC;AAAA;AAAA;AAAA;AAAA;AAAA,EAKlE;AAAA,EAEQ,uBAAuB,QAA6B;AAC1D,WAAO;AAAA;AAAA;AAAA,eAGI,OAAO,MAAM;AAAA,iBACX,IAAI,KAAK,OAAO,WAAW,EAAE,eAAe,CAAC;AAAA;AAAA;AAAA,0BAGpC,OAAO,QAAQ,eAAe;AAAA,sBAClC,KAAK,MAAM,OAAO,QAAQ,cAAc,GAAG,CAAC;AAAA,wBAC1C,OAAO,QAAQ,aAAa;AAAA,gCACpB,KAAK,MAAM,OAAO,QAAQ,oBAAoB,CAAC;AAAA;AAAA;AAAA,qBAG1D,KAAK,MAAM,OAAO,oBAAoB,oBAAoB,SAAS,OAAO,IAAI,CAAC;AAAA,4BACxE,KAAK,MAAM,OAAO,oBAAoB,oBAAoB,UAAU,GAAG,CAAC;AAAA;AAAA;AAAA,EAGlG,OAAO,gBAAgB,IAAI,OAAK,KAAK,CAAC,EAAE,EAAE,KAAK,IAAI,CAAC;AAAA;AAAA,EAEpD;AAAA,EAEQ,mBAAmB,QAA6B;AACtD,WAAO;AAAA;AAAA;AAAA;AAAA,kCAIuB,OAAO,MAAM;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,kBAa7B,OAAO,QAAQ,eAAe;AAAA;AAAA;AAAA;AAAA,kBAI9B,KAAK,MAAM,OAAO,QAAQ,cAAc,GAAG,CAAC;AAAA;AAAA;AAAA;AAAA,kBAI5C,KAAK,MAAM,OAAO,QAAQ,oBAAoB,CAAC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,cAQnD,OAAO,gBAAgB,IAAI,OAAK,OAAO,CAAC,OAAO,EAAE,KAAK,EAAE,CAAC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAMrE;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,iBAAiB,QAA+B;AACpD,UAAM,UAAU,KAAK,eAAe,IAAI,MAAM;AAC9C,QAAI,CAAC,QAAS;AAGd,QAAK,QAAgB,oBAAoB;AACvC,oBAAe,QAAgB,kBAAkB;AAAA,IACnD;AAGA,UAAM,KAAK,oBAAoB,MAAM;AAErC,SAAK,eAAe,OAAO,MAAM;AACjC,WAAO,KAAK,yBAAyB,EAAE,OAAO,CAAC;AAAA,EACjD;AACF;AAGO,MAAM,gBAAgB,IAAI,cAAc;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -1,4 +1,8 @@
|
|
|
1
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);
|
|
2
6
|
import { Server } from "@modelcontextprotocol/sdk/server/index.js";
|
|
3
7
|
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
|
|
4
8
|
import {
|
|
@@ -2,6 +2,6 @@
|
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/mcp/stackmemory-mcp-server.ts"],
|
|
4
4
|
"sourcesContent": ["#!/usr/bin/env node\n/**\n * StackMemory MCP Server - Integrates with Claude Desktop\n *\n * This MCP server exposes StackMemory's agent task management\n * and context persistence to Claude sessions automatically.\n */\n\nimport { Server } from '@modelcontextprotocol/sdk/server/index.js';\nimport { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';\nimport {\n CallToolRequestSchema,\n ListToolsRequestSchema,\n Tool,\n} from '@modelcontextprotocol/sdk/types.js';\nimport Database from 'better-sqlite3';\nimport { join } from 'path';\nimport { existsSync, mkdirSync } from 'fs';\nimport {\n LinearTaskManager,\n TaskPriority,\n} from '../features/tasks/linear-task-manager.js';\nimport { FrameManager } from '../core/context/frame-manager.js';\nimport { AgentTaskManager } from '../agents/core/agent-task-manager.js';\nimport { logger } from '../core/monitoring/logger.js';\n\n// Initialize project root (can be overridden by environment variable)\nconst PROJECT_ROOT = process.env['STACKMEMORY_PROJECT'] || process.cwd();\n\n// Ensure StackMemory directory exists\nconst stackmemoryDir = join(PROJECT_ROOT, '.stackmemory');\nif (!existsSync(stackmemoryDir)) {\n mkdirSync(stackmemoryDir, { recursive: true });\n}\n\n// Initialize database and managers\nconst db = new Database(join(stackmemoryDir, 'cache.db'));\nconst taskStore = new LinearTaskManager(PROJECT_ROOT, db);\nconst frameManager = new FrameManager(db, PROJECT_ROOT, undefined);\nconst agentTaskManager = new AgentTaskManager(taskStore, frameManager);\n\n// Track active Claude session\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nlet _claudeSessionId: string | null = null;\nlet claudeFrameId: string | null = null;\n\n// Type definitions for tool arguments\ninterface CreateTaskArgs {\n title: string;\n description?: string;\n priority?: TaskPriority;\n tags?: string[];\n autoExecute?: boolean;\n}\n\ninterface ExecuteTaskArgs {\n taskId: string;\n maxTurns?: number;\n}\n\ninterface AgentTurnArgs {\n sessionId: string;\n action: string;\n context?: Record<string, unknown>;\n}\n\ninterface TaskStatusArgs {\n taskId?: string;\n}\n\ninterface SaveContextArgs {\n content: string;\n type: 'decision' | 'constraint' | 'learning' | 'code' | 'error';\n importance?: number;\n}\n\ninterface LoadContextArgs {\n query: string;\n limit?: number;\n frameId?: string;\n}\n\ninterface SessionArgs {\n sessionId: string;\n}\n\ninterface TaskArgs {\n taskId: string;\n}\n\n/**\n * Available tools for Claude\n */\nconst TOOLS: Tool[] = [\n {\n name: 'create_task',\n description:\n 'Create a new task in StackMemory with automatic agent assistance',\n inputSchema: {\n type: 'object',\n properties: {\n title: { type: 'string', description: 'Task title' },\n description: {\n type: 'string',\n description: 'Detailed task description',\n },\n priority: {\n type: 'string',\n enum: ['low', 'medium', 'high', 'urgent'],\n description: 'Task priority',\n },\n tags: {\n type: 'array',\n items: { type: 'string' },\n description: 'Tags for categorization',\n },\n autoExecute: {\n type: 'boolean',\n description: 'Automatically start agent execution',\n },\n },\n required: ['title'],\n },\n },\n {\n name: 'execute_task',\n description: 'Execute a task using AI agent with verification loops',\n inputSchema: {\n type: 'object',\n properties: {\n taskId: { type: 'string', description: 'Task ID to execute' },\n maxTurns: {\n type: 'number',\n description: 'Maximum turns (default 10)',\n minimum: 1,\n maximum: 20,\n },\n },\n required: ['taskId'],\n },\n },\n {\n name: 'task_status',\n description: 'Get status of a task or all active tasks',\n inputSchema: {\n type: 'object',\n properties: {\n taskId: { type: 'string', description: 'Optional specific task ID' },\n },\n },\n },\n {\n name: 'save_context',\n description: 'Save important context from current Claude conversation',\n inputSchema: {\n type: 'object',\n properties: {\n content: { type: 'string', description: 'Context to save' },\n type: {\n type: 'string',\n enum: ['decision', 'constraint', 'learning', 'code', 'error'],\n description: 'Type of context',\n },\n importance: {\n type: 'number',\n minimum: 0,\n maximum: 1,\n description: 'Importance score (0-1)',\n },\n },\n required: ['content', 'type'],\n },\n },\n {\n name: 'load_context',\n description: 'Load relevant context from StackMemory',\n inputSchema: {\n type: 'object',\n properties: {\n query: { type: 'string', description: 'Search query for context' },\n limit: {\n type: 'number',\n description: 'Maximum results',\n minimum: 1,\n maximum: 20,\n },\n frameId: { type: 'string', description: 'Optional specific frame ID' },\n },\n required: ['query'],\n },\n },\n {\n name: 'agent_turn',\n description: 'Execute a single turn in an active agent session',\n inputSchema: {\n type: 'object',\n properties: {\n sessionId: { type: 'string', description: 'Active session ID' },\n action: { type: 'string', description: 'Action to perform' },\n context: {\n type: 'object',\n description: 'Additional context for the action',\n },\n },\n required: ['sessionId', 'action'],\n },\n },\n {\n name: 'session_feedback',\n description: 'Get feedback from the last agent turn',\n inputSchema: {\n type: 'object',\n properties: {\n sessionId: { type: 'string', description: 'Session ID' },\n },\n required: ['sessionId'],\n },\n },\n {\n name: 'breakdown_task',\n description: 'Break down a complex task into subtasks',\n inputSchema: {\n type: 'object',\n properties: {\n taskId: { type: 'string', description: 'Task ID to break down' },\n },\n required: ['taskId'],\n },\n },\n {\n name: 'list_active_sessions',\n description: 'List all active agent sessions',\n inputSchema: {\n type: 'object',\n properties: {},\n },\n },\n {\n name: 'retry_session',\n description: 'Retry a failed session with learned context',\n inputSchema: {\n type: 'object',\n properties: {\n sessionId: { type: 'string', description: 'Session ID to retry' },\n },\n required: ['sessionId'],\n },\n },\n];\n\n/**\n * Create MCP server\n */\nconst server = new Server(\n {\n name: 'stackmemory',\n version: '1.0.0',\n },\n {\n capabilities: {\n tools: {},\n },\n }\n);\n\n/**\n * Handle tool listing\n */\nserver.setRequestHandler(ListToolsRequestSchema, async () => ({\n tools: TOOLS,\n}));\n\n/**\n * Handle tool execution\n */\nserver.setRequestHandler(CallToolRequestSchema, async (request) => {\n const { name, arguments: args } = request.params;\n\n if (!args) {\n return {\n content: [\n {\n type: 'text',\n text: 'Error: No arguments provided',\n },\n ],\n };\n }\n\n try {\n switch (name) {\n case 'create_task': {\n const taskArgs = args as unknown as CreateTaskArgs;\n\n // Initialize Claude session frame if needed\n if (!claudeFrameId) {\n claudeFrameId = frameManager.createFrame({\n type: 'task',\n name: 'Claude AI Session',\n inputs: { source: 'mcp', timestamp: new Date().toISOString() },\n });\n }\n\n const taskId = taskStore.createTask({\n title: taskArgs.title,\n description: taskArgs.description,\n priority: taskArgs.priority || 'medium',\n frameId: claudeFrameId,\n tags: taskArgs.tags || ['claude-generated'],\n });\n\n // Auto-execute if requested\n if (taskArgs.autoExecute) {\n const session = await agentTaskManager.startTaskSession(\n taskId,\n claudeFrameId\n );\n _claudeSessionId = session.id;\n\n return {\n content: [\n {\n type: 'text',\n text: `Task created: ${taskId}\\nAgent session started: ${session.id}\\nReady for execution with ${session.maxTurns} turns available.`,\n },\n ],\n };\n }\n\n return {\n content: [\n {\n type: 'text',\n text: `Task created successfully: ${taskId}`,\n },\n ],\n };\n }\n\n case 'execute_task': {\n const execArgs = args as unknown as ExecuteTaskArgs;\n\n if (!claudeFrameId) {\n claudeFrameId = frameManager.createFrame({\n type: 'task',\n name: 'Claude Task Execution',\n inputs: { taskId: execArgs.taskId },\n });\n }\n\n const session = await agentTaskManager.startTaskSession(\n execArgs.taskId,\n claudeFrameId\n );\n\n if (execArgs.maxTurns) {\n session.maxTurns = execArgs.maxTurns;\n }\n\n _claudeSessionId = session.id;\n\n return {\n content: [\n {\n type: 'text',\n text: `Started agent session: ${session.id}\\nTask: ${execArgs.taskId}\\nMax turns: ${session.maxTurns}\\nUse 'agent_turn' to execute actions.`,\n },\n ],\n };\n }\n\n case 'agent_turn': {\n const turnArgs = args as unknown as AgentTurnArgs;\n\n const result = await agentTaskManager.executeTurn(\n turnArgs.sessionId,\n turnArgs.action,\n turnArgs.context || {}\n );\n\n const verificationSummary = result.verificationResults\n .map((v) => `${v.passed ? '\u2713' : '\u2717'} ${v.verifierId}: ${v.message}`)\n .join('\\n');\n\n return {\n content: [\n {\n type: 'text',\n text: `Turn executed:\\nSuccess: ${result.success}\\nShould Continue: ${result.shouldContinue}\\n\\nFeedback:\\n${result.feedback}\\n\\nVerifications:\\n${verificationSummary}`,\n },\n ],\n };\n }\n\n case 'task_status': {\n const statusArgs = args as TaskStatusArgs;\n\n if (statusArgs.taskId) {\n const task = taskStore.getTask(statusArgs.taskId);\n if (!task) {\n return {\n content: [\n { type: 'text', text: `Task ${statusArgs.taskId} not found` },\n ],\n };\n }\n\n return {\n content: [\n {\n type: 'text',\n text: `Task: ${task.title}\\nStatus: ${task.status}\\nPriority: ${task.priority}\\nCreated: ${new Date(task.created_at * 1000).toLocaleString()}\\nDescription: ${task.description || 'N/A'}`,\n },\n ],\n };\n }\n\n const activeTasks = taskStore.getActiveTasks();\n const taskList = activeTasks\n .map((t) => `- ${t.id}: ${t.title} (${t.status}, ${t.priority})`)\n .join('\\n');\n\n return {\n content: [\n {\n type: 'text',\n text: `Active tasks (${activeTasks.length}):\\n${taskList || 'No active tasks'}`,\n },\n ],\n };\n }\n\n case 'save_context': {\n const saveArgs = args as unknown as SaveContextArgs;\n\n if (!claudeFrameId) {\n claudeFrameId = frameManager.createFrame({\n type: 'task',\n name: 'Claude Context',\n inputs: { source: 'mcp' },\n });\n }\n\n const eventId = frameManager.addEvent(\n 'observation',\n {\n type: saveArgs.type,\n content: saveArgs.content,\n importance: saveArgs.importance || 0.5,\n source: 'claude-mcp',\n timestamp: new Date().toISOString(),\n },\n claudeFrameId\n );\n\n return {\n content: [\n {\n type: 'text',\n text: `Context saved to frame ${claudeFrameId} as event ${eventId}`,\n },\n ],\n };\n }\n\n case 'load_context': {\n const loadArgs = args as unknown as LoadContextArgs;\n\n // Get active frame path and recent events as context\n const frames = frameManager.getActiveFramePath();\n const limit = loadArgs.limit || 10;\n const events = loadArgs.frameId\n ? frameManager.getFrameEvents(loadArgs.frameId, limit)\n : [];\n\n const contextText = frames\n .map(\n (frame) =>\n `[Frame ${frame.type}] ${frame.name}: ${frame.digest_text || 'No digest'}`\n )\n .concat(\n events.map(\n (event) =>\n `[Event ${event.event_type}] ${new Date(event.ts).toLocaleString()}: ${JSON.stringify(\n event.payload\n ).substring(0, 100)}...`\n )\n )\n .join('\\n\\n');\n\n return {\n content: [\n {\n type: 'text',\n text: `Query: ${loadArgs.query}\\nFound ${frames.length} frames and ${events.length} events:\\n\\n${contextText || 'No matching context found'}`,\n },\n ],\n };\n }\n\n case 'breakdown_task': {\n const breakdownArgs = args as unknown as TaskArgs;\n\n const task = taskStore.getTask(breakdownArgs.taskId);\n if (!task) {\n return {\n content: [\n { type: 'text', text: `Task ${breakdownArgs.taskId} not found` },\n ],\n };\n }\n\n // This would use LLM in production, for now return structured breakdown\n const subtasks = [\n `1. Analyze: ${task.title} - Understand requirements (2 turns)`,\n `2. Design: ${task.title} - Create implementation plan (2 turns)`,\n `3. Implement: ${task.title} - Build core functionality (5 turns)`,\n `4. Test: ${task.title} - Validate and verify (3 turns)`,\n `5. Polish: ${task.title} - Documentation and cleanup (1 turn)`,\n ].join('\\n');\n\n return {\n content: [\n {\n type: 'text',\n text: `Task breakdown for: ${task.title}\\n\\n${subtasks}\\n\\nTotal estimated turns: 13`,\n },\n ],\n };\n }\n\n case 'list_active_sessions': {\n const sessions = agentTaskManager.getActiveSessions();\n const sessionList = sessions\n .map(\n (s) =>\n `- ${s.sessionId}: Task ${s.taskId} (Turn ${s.turnCount}, ${s.status})`\n )\n .join('\\n');\n\n return {\n content: [\n {\n type: 'text',\n text: `Active sessions (${sessions.length}):\\n${sessionList || 'No active sessions'}`,\n },\n ],\n };\n }\n\n case 'retry_session': {\n const retryArgs = args as unknown as SessionArgs;\n\n const newSession = await agentTaskManager.retrySession(\n retryArgs.sessionId\n );\n\n if (!newSession) {\n return {\n content: [\n {\n type: 'text',\n text: 'Cannot retry session (max retries reached or session is still active)',\n },\n ],\n };\n }\n\n _claudeSessionId = newSession.id;\n\n return {\n content: [\n {\n type: 'text',\n text: `Retry session started: ${newSession.id}\\nTask: ${newSession.taskId}\\nIncorporating learned context from previous attempts.`,\n },\n ],\n };\n }\n\n case 'session_feedback': {\n const feedbackArgs = args as unknown as SessionArgs;\n\n // Get the session to access feedback\n const sessions = agentTaskManager.getActiveSessions();\n const session = sessions.find(\n (s) => s.sessionId === feedbackArgs.sessionId\n );\n\n if (!session) {\n return {\n content: [\n {\n type: 'text',\n text: `Session ${feedbackArgs.sessionId} not found or not active`,\n },\n ],\n };\n }\n\n return {\n content: [\n {\n type: 'text',\n text: `Session ${feedbackArgs.sessionId}:\\nTurn: ${session.turnCount}\\nStatus: ${session.status}\\n\\nReady for next action.`,\n },\n ],\n };\n }\n\n default:\n throw new Error(`Unknown tool: ${name}`);\n }\n } catch (error: unknown) {\n logger.error(\n 'MCP tool execution failed',\n error instanceof Error ? error : undefined\n );\n return {\n content: [\n {\n type: 'text',\n text: `Error: ${error instanceof Error ? error.message : String(error)}`,\n },\n ],\n };\n }\n});\n\n/**\n * Start the server\n */\nasync function main() {\n const transport = new StdioServerTransport();\n await server.connect(transport);\n\n logger.info('StackMemory MCP Server started', {\n projectRoot: PROJECT_ROOT,\n tools: TOOLS.map((t) => t.name),\n });\n}\n\n// Handle graceful shutdown\nprocess.on('SIGINT', async () => {\n logger.info('Shutting down StackMemory MCP Server');\n\n // Close frame if open\n if (claudeFrameId) {\n try {\n frameManager.closeFrame(claudeFrameId, {\n summary: 'Claude session ended',\n timestamp: new Date().toISOString(),\n });\n } catch (error: unknown) {\n logger.error(\n 'Error closing frame',\n error instanceof Error ? error : undefined\n );\n }\n }\n\n db.close();\n process.exit(0);\n});\n\nmain().catch((error) => {\n logger.error(\n 'Failed to start MCP server',\n error instanceof Error ? error : undefined\n );\n process.exit(1);\n});\n"],
|
|
5
|
-
"mappings": "
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -1,3 +1,7 @@
|
|
|
1
|
+
import { fileURLToPath as __fileURLToPath } from 'url';
|
|
2
|
+
import { dirname as __pathDirname } from 'path';
|
|
3
|
+
const __filename = __fileURLToPath(import.meta.url);
|
|
4
|
+
const __dirname = __pathDirname(__filename);
|
|
1
5
|
import { logger } from "../core/monitoring/logger.js";
|
|
2
6
|
import { metrics } from "../core/monitoring/metrics.js";
|
|
3
7
|
class ExponentialRateLimiter {
|
|
@@ -2,6 +2,6 @@
|
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/middleware/exponential-rate-limiter.ts"],
|
|
4
4
|
"sourcesContent": ["import { Request, Response, NextFunction } from 'express';\nimport Redis from 'ioredis';\nimport { logger } from '../core/monitoring/logger.js';\nimport { metrics } from '../core/monitoring/metrics.js';\n\ninterface RateLimitConfig {\n baseLimit: number; // Initial requests allowed\n windowMs: number; // Time window in milliseconds\n maxBackoff: number; // Maximum backoff multiplier (e.g., 32 = 2^5)\n backoffMultiplier: number; // Multiplier for each violation (typically 2)\n localCacheSize: number; // Max IPs to cache locally\n localCacheTTL: number; // Local cache TTL in ms\n whitelistIPs?: string[]; // IPs to bypass rate limiting\n blacklistIPs?: string[]; // IPs to block immediately\n customKeyGenerator?: (req: Request) => string;\n}\n\ninterface RateLimitEntry {\n requests: number;\n violations: number;\n backoffLevel: number;\n firstRequest: number;\n lastRequest: number;\n blockedUntil?: number;\n}\n\nexport class ExponentialRateLimiter {\n private redis: Redis;\n private localCache: Map<string, RateLimitEntry> = new Map();\n private localCacheOrder: string[] = [];\n private config: Required<RateLimitConfig>;\n\n constructor(redis: Redis, config: Partial<RateLimitConfig> = {}) {\n this.redis = redis;\n this.config = {\n baseLimit: 10,\n windowMs: 60 * 1000, // 1 minute\n maxBackoff: 32,\n backoffMultiplier: 2,\n localCacheSize: 10000,\n localCacheTTL: 5 * 60 * 1000, // 5 minutes\n whitelistIPs: [],\n blacklistIPs: [],\n customKeyGenerator: (req) => this.getClientIdentifier(req),\n ...config,\n };\n\n // Clean up local cache periodically\n setInterval(() => this.cleanupLocalCache(), this.config.localCacheTTL);\n }\n\n /**\n * Main middleware function with exponential backoff\n */\n middleware() {\n return async (\n req: Request,\n res: Response,\n next: NextFunction\n ): Promise<void> => {\n const clientId = this.config.customKeyGenerator(req);\n\n // Check whitelist/blacklist\n if (this.isWhitelisted(clientId)) {\n return next();\n }\n\n if (this.isBlacklisted(clientId)) {\n metrics.increment('rate_limit.blacklisted', { ip: clientId });\n res.status(403).json({\n error: 'Access denied',\n code: 'BLACKLISTED_IP',\n });\n return;\n }\n\n try {\n // Try local cache first for performance\n let entry = this.getFromLocalCache(clientId);\n\n if (!entry) {\n // Fallback to Redis\n entry = await this.getFromRedis(clientId);\n }\n\n const now = Date.now();\n\n // Check if client is in backoff period\n if (entry.blockedUntil && entry.blockedUntil > now) {\n const retryAfter = Math.ceil((entry.blockedUntil - now) / 1000);\n metrics.increment('rate_limit.blocked', {\n ip: clientId,\n backoffLevel: String(entry.backoffLevel),\n });\n\n res.status(429).json({\n error: 'Too many requests - exponential backoff applied',\n code: 'RATE_LIMIT_BACKOFF',\n retryAfter,\n backoffLevel: entry.backoffLevel,\n });\n res.setHeader('Retry-After', String(retryAfter));\n res.setHeader('X-RateLimit-BackoffLevel', String(entry.backoffLevel));\n return;\n }\n\n // Check if window has expired\n if (now - entry.firstRequest > this.config.windowMs) {\n // Reset window\n entry = {\n requests: 1,\n violations: Math.max(0, entry.violations - 1), // Decay violations\n backoffLevel: Math.max(0, entry.backoffLevel - 1), // Decay backoff\n firstRequest: now,\n lastRequest: now,\n };\n } else {\n entry.requests++;\n entry.lastRequest = now;\n }\n\n // Calculate current limit with exponential backoff reduction\n const currentLimit = Math.max(\n 1,\n Math.floor(\n this.config.baseLimit /\n Math.pow(this.config.backoffMultiplier, entry.backoffLevel)\n )\n );\n\n // Check if limit exceeded\n if (entry.requests > currentLimit) {\n entry.violations++;\n\n // Increase backoff level\n if (entry.backoffLevel < Math.log2(this.config.maxBackoff)) {\n entry.backoffLevel++;\n }\n\n // Calculate backoff duration with exponential increase\n const backoffDuration =\n this.config.windowMs *\n Math.pow(this.config.backoffMultiplier, entry.backoffLevel);\n entry.blockedUntil = now + backoffDuration;\n\n // Update caches\n await this.updateCaches(clientId, entry);\n\n const retryAfter = Math.ceil(backoffDuration / 1000);\n metrics.increment('rate_limit.exceeded', {\n ip: clientId,\n violations: String(entry.violations),\n backoffLevel: String(entry.backoffLevel),\n });\n\n res.status(429).json({\n error: 'Rate limit exceeded - entering exponential backoff',\n code: 'RATE_LIMIT_EXCEEDED',\n retryAfter,\n violations: entry.violations,\n backoffLevel: entry.backoffLevel,\n currentLimit,\n });\n res.setHeader('Retry-After', String(retryAfter));\n res.setHeader('X-RateLimit-Limit', String(currentLimit));\n res.setHeader('X-RateLimit-Remaining', '0');\n res.setHeader('X-RateLimit-BackoffLevel', String(entry.backoffLevel));\n return;\n }\n\n // Update successful request\n await this.updateCaches(clientId, entry);\n\n // Add rate limit headers\n res.setHeader('X-RateLimit-Limit', String(currentLimit));\n res.setHeader(\n 'X-RateLimit-Remaining',\n String(currentLimit - entry.requests)\n );\n res.setHeader(\n 'X-RateLimit-Reset',\n String(new Date(entry.firstRequest + this.config.windowMs).getTime())\n );\n\n if (entry.backoffLevel > 0) {\n res.setHeader('X-RateLimit-BackoffLevel', String(entry.backoffLevel));\n }\n\n next();\n } catch (error: unknown) {\n logger.error(\n 'Rate limiter error',\n error instanceof Error ? error : new Error(String(error))\n );\n // Fail open - allow request on error\n next();\n }\n };\n }\n\n /**\n * Get client identifier from request\n */\n private getClientIdentifier(req: Request): string {\n // Try various methods to identify the client\n const forwarded = req.headers['x-forwarded-for'];\n const realIp = req.headers['x-real-ip'];\n const cfIp = req.headers['cf-connecting-ip']; // Cloudflare\n\n if (typeof forwarded === 'string') {\n return forwarded.split(',')[0].trim();\n }\n if (typeof realIp === 'string') {\n return realIp;\n }\n if (typeof cfIp === 'string') {\n return cfIp;\n }\n\n return req.ip || req.socket.remoteAddress || 'unknown';\n }\n\n /**\n * Check if IP is whitelisted\n */\n private isWhitelisted(ip: string): boolean {\n return (\n this.config.whitelistIPs.includes(ip) ||\n ip === '127.0.0.1' ||\n ip === '::1' ||\n ip.startsWith('192.168.') ||\n ip.startsWith('10.')\n );\n }\n\n /**\n * Check if IP is blacklisted\n */\n private isBlacklisted(ip: string): boolean {\n return this.config.blacklistIPs.includes(ip);\n }\n\n /**\n * Get rate limit entry from local cache\n */\n private getFromLocalCache(clientId: string): RateLimitEntry | null {\n const cached = this.localCache.get(clientId);\n if (cached) {\n const now = Date.now();\n // Check if cache entry is still valid\n if (now - cached.lastRequest < this.config.localCacheTTL) {\n return cached;\n }\n // Remove stale entry\n this.localCache.delete(clientId);\n const index = this.localCacheOrder.indexOf(clientId);\n if (index > -1) {\n this.localCacheOrder.splice(index, 1);\n }\n }\n return null;\n }\n\n /**\n * Get rate limit entry from Redis\n */\n private async getFromRedis(clientId: string): Promise<RateLimitEntry> {\n const key = `rate_limit:${clientId}`;\n const data = await this.redis.get(key);\n\n if (data) {\n return JSON.parse(data);\n }\n\n // Return new entry\n return {\n requests: 0,\n violations: 0,\n backoffLevel: 0,\n firstRequest: Date.now(),\n lastRequest: Date.now(),\n };\n }\n\n /**\n * Update both local cache and Redis\n */\n private async updateCaches(\n clientId: string,\n entry: RateLimitEntry\n ): Promise<void> {\n // Update local cache with LRU eviction\n if (!this.localCache.has(clientId)) {\n // Check cache size limit\n if (this.localCache.size >= this.config.localCacheSize) {\n // Remove oldest entry\n const oldest = this.localCacheOrder.shift();\n if (oldest) {\n this.localCache.delete(oldest);\n }\n }\n this.localCacheOrder.push(clientId);\n }\n this.localCache.set(clientId, entry);\n\n // Update Redis with TTL\n const key = `rate_limit:${clientId}`;\n const ttl = Math.ceil(\n (this.config.windowMs * Math.pow(2, entry.backoffLevel)) / 1000\n );\n await this.redis.setex(key, ttl, JSON.stringify(entry));\n }\n\n /**\n * Clean up stale entries from local cache\n */\n private cleanupLocalCache(): void {\n const now = Date.now();\n const staleThreshold = now - this.config.localCacheTTL;\n\n for (const [clientId, entry] of this.localCache.entries()) {\n if (entry.lastRequest < staleThreshold) {\n this.localCache.delete(clientId);\n const index = this.localCacheOrder.indexOf(clientId);\n if (index > -1) {\n this.localCacheOrder.splice(index, 1);\n }\n }\n }\n\n metrics.record('rate_limit.local_cache_size', this.localCache.size);\n }\n\n /**\n * Reset rate limit for a specific client\n */\n async reset(clientId: string): Promise<void> {\n this.localCache.delete(clientId);\n const index = this.localCacheOrder.indexOf(clientId);\n if (index > -1) {\n this.localCacheOrder.splice(index, 1);\n }\n await this.redis.del(`rate_limit:${clientId}`);\n }\n\n /**\n * Get current rate limit status for a client\n */\n async getStatus(clientId: string): Promise<RateLimitEntry | null> {\n let entry = this.getFromLocalCache(clientId);\n if (!entry) {\n const data = await this.redis.get(`rate_limit:${clientId}`);\n if (data) {\n entry = JSON.parse(data);\n }\n }\n return entry;\n }\n\n /**\n * Add IP to blacklist\n */\n blacklistIP(ip: string): void {\n if (!this.config.blacklistIPs.includes(ip)) {\n this.config.blacklistIPs.push(ip);\n logger.warn('IP blacklisted', { ip });\n }\n }\n\n /**\n * Remove IP from blacklist\n */\n unblacklistIP(ip: string): void {\n const index = this.config.blacklistIPs.indexOf(ip);\n if (index > -1) {\n this.config.blacklistIPs.splice(index, 1);\n logger.info('IP unblacklisted', { ip });\n }\n }\n}\n"],
|
|
5
|
-
"mappings": "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",
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -1,3 +1,7 @@
|
|
|
1
|
+
import { fileURLToPath as __fileURLToPath } from 'url';
|
|
2
|
+
import { dirname as __pathDirname } from 'path';
|
|
3
|
+
const __filename = __fileURLToPath(import.meta.url);
|
|
4
|
+
const __dirname = __pathDirname(__filename);
|
|
1
5
|
import { v4 as uuidv4 } from "uuid";
|
|
2
6
|
import * as bcrypt from "bcryptjs";
|
|
3
7
|
import { logger } from "../core/monitoring/logger.js";
|