@stackmemoryai/stackmemory 0.5.58 → 0.5.59
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cli/commands/search.js +20 -3
- package/dist/cli/commands/search.js.map +2 -2
- package/dist/core/database/sqlite-adapter.js +13 -3
- package/dist/core/database/sqlite-adapter.js.map +2 -2
- package/dist/core/errors/error-utils.js +208 -0
- package/dist/core/errors/error-utils.js.map +7 -0
- package/dist/core/errors/index.js +13 -4
- package/dist/core/errors/index.js.map +2 -2
- package/dist/core/merge/unified-merge-resolver.js +303 -0
- package/dist/core/merge/unified-merge-resolver.js.map +7 -0
- package/dist/core/monitoring/logger.js +61 -9
- package/dist/core/monitoring/logger.js.map +2 -2
- package/dist/core/security/index.js +35 -0
- package/dist/core/security/index.js.map +7 -0
- package/dist/core/security/input-sanitizer.js +321 -0
- package/dist/core/security/input-sanitizer.js.map +7 -0
- package/dist/integrations/linear/client.js +5 -1
- package/dist/integrations/linear/client.js.map +2 -2
- package/dist/integrations/mcp/remote-server.js +27 -36
- package/dist/integrations/mcp/remote-server.js.map +2 -2
- package/dist/integrations/mcp/server.js +44 -29
- package/dist/integrations/mcp/server.js.map +3 -3
- package/dist/scripts/benchmark-performance.js +48 -0
- package/dist/scripts/benchmark-performance.js.map +7 -0
- package/dist/scripts/check-redis.js +42 -0
- package/dist/scripts/check-redis.js.map +7 -0
- package/dist/scripts/initialize.js +116 -0
- package/dist/scripts/initialize.js.map +7 -0
- package/dist/scripts/list-linear-tasks.js +124 -0
- package/dist/scripts/list-linear-tasks.js.map +7 -0
- package/dist/scripts/measure-handoff-impact.js +340 -0
- package/dist/scripts/measure-handoff-impact.js.map +7 -0
- package/dist/scripts/query-chromadb.js +160 -0
- package/dist/scripts/query-chromadb.js.map +7 -0
- package/dist/scripts/show-linear-summary.js +119 -0
- package/dist/scripts/show-linear-summary.js.map +7 -0
- package/dist/scripts/simple-swarm-demo.js +90 -0
- package/dist/scripts/simple-swarm-demo.js.map +7 -0
- package/dist/scripts/status.js +155 -0
- package/dist/scripts/status.js.map +7 -0
- package/dist/scripts/test-chromadb-sync.js +192 -0
- package/dist/scripts/test-chromadb-sync.js.map +7 -0
- package/dist/scripts/test-ralph-iteration-fix.js +86 -0
- package/dist/scripts/test-ralph-iteration-fix.js.map +7 -0
- package/dist/scripts/test-ralph-iterations.js +121 -0
- package/dist/scripts/test-ralph-iterations.js.map +7 -0
- package/dist/scripts/test-redis-storage.js +389 -0
- package/dist/scripts/test-redis-storage.js.map +7 -0
- package/dist/scripts/test-simple-ralph-state-sync.js +115 -0
- package/dist/scripts/test-simple-ralph-state-sync.js.map +7 -0
- package/dist/scripts/test-swarm-fixes.js +125 -0
- package/dist/scripts/test-swarm-fixes.js.map +7 -0
- package/dist/scripts/test-swarm-tui.js +23 -0
- package/dist/scripts/test-swarm-tui.js.map +7 -0
- package/dist/scripts/test-tui-shortcuts.js +52 -0
- package/dist/scripts/test-tui-shortcuts.js.map +7 -0
- package/dist/scripts/validate-tui-shortcuts.js +60 -0
- package/dist/scripts/validate-tui-shortcuts.js.map +7 -0
- package/dist/src/agents/core/agent-task-manager.js +527 -0
- package/dist/src/agents/core/agent-task-manager.js.map +7 -0
- package/dist/src/agents/verifiers/base-verifier.js +133 -0
- package/dist/src/agents/verifiers/base-verifier.js.map +7 -0
- package/dist/src/agents/verifiers/formatter-verifier.js +130 -0
- package/dist/src/agents/verifiers/formatter-verifier.js.map +7 -0
- package/dist/src/agents/verifiers/llm-judge.js +252 -0
- package/dist/src/agents/verifiers/llm-judge.js.map +7 -0
- package/dist/src/cli/auto-detect.js +321 -0
- package/dist/src/cli/auto-detect.js.map +7 -0
- package/dist/src/cli/claude-sm-danger.js +21 -0
- package/dist/src/cli/claude-sm-danger.js.map +7 -0
- package/dist/src/cli/claude-sm.js +1156 -0
- package/dist/src/cli/claude-sm.js.map +7 -0
- package/dist/src/cli/codex-sm-danger.js +21 -0
- package/dist/src/cli/codex-sm-danger.js.map +7 -0
- package/dist/src/cli/codex-sm.js +349 -0
- package/dist/src/cli/codex-sm.js.map +7 -0
- package/dist/src/cli/commands/api.js +232 -0
- package/dist/src/cli/commands/api.js.map +7 -0
- package/dist/src/cli/commands/auto-background.js +180 -0
- package/dist/src/cli/commands/auto-background.js.map +7 -0
- package/dist/src/cli/commands/cleanup-processes.js +68 -0
- package/dist/src/cli/commands/cleanup-processes.js.map +7 -0
- package/dist/src/cli/commands/clear.js +202 -0
- package/dist/src/cli/commands/clear.js.map +7 -0
- package/dist/src/cli/commands/config.js +445 -0
- package/dist/src/cli/commands/config.js.map +7 -0
- package/dist/src/cli/commands/context-rehydrate.js +751 -0
- package/dist/src/cli/commands/context-rehydrate.js.map +7 -0
- package/dist/src/cli/commands/context.js +343 -0
- package/dist/src/cli/commands/context.js.map +7 -0
- package/dist/src/cli/commands/daemon.js +392 -0
- package/dist/src/cli/commands/daemon.js.map +7 -0
- package/dist/src/cli/commands/dashboard.js +210 -0
- package/dist/src/cli/commands/dashboard.js.map +7 -0
- package/dist/src/cli/commands/db.js +147 -0
- package/dist/src/cli/commands/db.js.map +7 -0
- package/dist/src/cli/commands/decision.js +266 -0
- package/dist/src/cli/commands/decision.js.map +7 -0
- package/dist/src/cli/commands/discovery.js +279 -0
- package/dist/src/cli/commands/discovery.js.map +7 -0
- package/dist/src/cli/commands/handoff.js +624 -0
- package/dist/src/cli/commands/handoff.js.map +7 -0
- package/dist/src/cli/commands/hooks.js +298 -0
- package/dist/src/cli/commands/hooks.js.map +7 -0
- package/dist/src/cli/commands/linear.js +529 -0
- package/dist/src/cli/commands/linear.js.map +7 -0
- package/dist/src/cli/commands/log.js +169 -0
- package/dist/src/cli/commands/log.js.map +7 -0
- package/dist/src/cli/commands/login.js +172 -0
- package/dist/src/cli/commands/login.js.map +7 -0
- package/dist/src/cli/commands/migrate.js +240 -0
- package/dist/src/cli/commands/migrate.js.map +7 -0
- package/dist/src/cli/commands/model.js +533 -0
- package/dist/src/cli/commands/model.js.map +7 -0
- package/dist/src/cli/commands/onboard.js +536 -0
- package/dist/src/cli/commands/onboard.js.map +7 -0
- package/dist/src/cli/commands/projects.js +199 -0
- package/dist/src/cli/commands/projects.js.map +7 -0
- package/dist/src/cli/commands/ralph.js +909 -0
- package/dist/src/cli/commands/ralph.js.map +7 -0
- package/dist/src/cli/commands/retrieval.js +248 -0
- package/dist/src/cli/commands/retrieval.js.map +7 -0
- package/dist/src/cli/commands/search.js +173 -0
- package/dist/src/cli/commands/search.js.map +7 -0
- package/dist/src/cli/commands/service.js +749 -0
- package/dist/src/cli/commands/service.js.map +7 -0
- package/dist/src/cli/commands/session.js +200 -0
- package/dist/src/cli/commands/session.js.map +7 -0
- package/dist/src/cli/commands/settings.js +306 -0
- package/dist/src/cli/commands/settings.js.map +7 -0
- package/dist/src/cli/commands/setup.js +701 -0
- package/dist/src/cli/commands/setup.js.map +7 -0
- package/dist/src/cli/commands/shell.js +249 -0
- package/dist/src/cli/commands/shell.js.map +7 -0
- package/dist/src/cli/commands/signup.js +50 -0
- package/dist/src/cli/commands/signup.js.map +7 -0
- package/dist/src/cli/commands/skills.js +470 -0
- package/dist/src/cli/commands/skills.js.map +7 -0
- package/dist/src/cli/commands/sms-notify.js +795 -0
- package/dist/src/cli/commands/sms-notify.js.map +7 -0
- package/dist/src/cli/commands/storage-tier.js +183 -0
- package/dist/src/cli/commands/storage-tier.js.map +7 -0
- package/dist/src/cli/commands/sweep.js +249 -0
- package/dist/src/cli/commands/sweep.js.map +7 -0
- package/dist/src/cli/commands/tasks.js +213 -0
- package/dist/src/cli/commands/tasks.js.map +7 -0
- package/dist/src/cli/commands/worktree.js +319 -0
- package/dist/src/cli/commands/worktree.js.map +7 -0
- package/dist/src/cli/index.js +594 -0
- package/dist/src/cli/index.js.map +7 -0
- package/dist/src/cli/opencode-sm.js +448 -0
- package/dist/src/cli/opencode-sm.js.map +7 -0
- package/dist/src/cli/utils/viewer.js +96 -0
- package/dist/src/cli/utils/viewer.js.map +7 -0
- package/dist/src/core/config/config-manager.js +398 -0
- package/dist/src/core/config/config-manager.js.map +7 -0
- package/dist/src/core/config/feature-flags.js +76 -0
- package/dist/src/core/config/feature-flags.js.map +7 -0
- package/dist/src/core/config/storage-config.js +115 -0
- package/dist/src/core/config/storage-config.js.map +7 -0
- package/dist/src/core/config/types.js +144 -0
- package/dist/src/core/config/types.js.map +7 -0
- package/dist/src/core/context/auto-context.js +80 -0
- package/dist/src/core/context/auto-context.js.map +7 -0
- package/dist/src/core/context/dual-stack-manager.js +870 -0
- package/dist/src/core/context/dual-stack-manager.js.map +7 -0
- package/dist/src/core/context/enhanced-rehydration.js +994 -0
- package/dist/src/core/context/enhanced-rehydration.js.map +7 -0
- package/dist/src/core/context/frame-database.js +479 -0
- package/dist/src/core/context/frame-database.js.map +7 -0
- package/dist/src/core/context/frame-digest.js +250 -0
- package/dist/src/core/context/frame-digest.js.map +7 -0
- package/dist/src/core/context/frame-handoff-manager.js +778 -0
- package/dist/src/core/context/frame-handoff-manager.js.map +7 -0
- package/dist/src/core/context/frame-lifecycle-hooks.js +119 -0
- package/dist/src/core/context/frame-lifecycle-hooks.js.map +7 -0
- package/dist/src/core/context/frame-recovery.js +302 -0
- package/dist/src/core/context/frame-recovery.js.map +7 -0
- package/dist/src/core/context/frame-stack.js +314 -0
- package/dist/src/core/context/frame-stack.js.map +7 -0
- package/dist/src/core/context/frame-types.js +5 -0
- package/dist/src/core/context/frame-types.js.map +7 -0
- package/dist/src/core/context/index.js +25 -0
- package/dist/src/core/context/index.js.map +7 -0
- package/dist/src/core/context/permission-manager.js +185 -0
- package/dist/src/core/context/permission-manager.js.map +7 -0
- package/dist/src/core/context/recursive-context-manager.js +592 -0
- package/dist/src/core/context/recursive-context-manager.js.map +7 -0
- package/dist/src/core/context/refactored-frame-manager.js +754 -0
- package/dist/src/core/context/refactored-frame-manager.js.map +7 -0
- package/dist/src/core/context/shared-context-layer.js +621 -0
- package/dist/src/core/context/shared-context-layer.js.map +7 -0
- package/dist/src/core/context/stack-merge-resolver.js +749 -0
- package/dist/src/core/context/stack-merge-resolver.js.map +7 -0
- package/dist/src/core/context/validation.js +130 -0
- package/dist/src/core/context/validation.js.map +7 -0
- package/dist/src/core/database/batch-operations.js +384 -0
- package/dist/src/core/database/batch-operations.js.map +7 -0
- package/dist/src/core/database/connection-pool.js +330 -0
- package/dist/src/core/database/connection-pool.js.map +7 -0
- package/dist/src/core/database/database-adapter.js +60 -0
- package/dist/src/core/database/database-adapter.js.map +7 -0
- package/dist/src/core/database/migration-manager.js +614 -0
- package/dist/src/core/database/migration-manager.js.map +7 -0
- package/dist/src/core/database/query-cache.js +298 -0
- package/dist/src/core/database/query-cache.js.map +7 -0
- package/dist/src/core/database/query-router.js +430 -0
- package/dist/src/core/database/query-router.js.map +7 -0
- package/dist/src/core/database/sqlite-adapter.js +738 -0
- package/dist/src/core/database/sqlite-adapter.js.map +7 -0
- package/dist/src/core/digest/enhanced-hybrid-digest.js +277 -0
- package/dist/src/core/digest/enhanced-hybrid-digest.js.map +7 -0
- package/dist/src/core/digest/frame-digest-integration.js +176 -0
- package/dist/src/core/digest/frame-digest-integration.js.map +7 -0
- package/dist/src/core/digest/hybrid-digest-generator.js +553 -0
- package/dist/src/core/digest/hybrid-digest-generator.js.map +7 -0
- package/dist/src/core/digest/index.js +9 -0
- package/dist/src/core/digest/index.js.map +7 -0
- package/dist/src/core/digest/types.js +25 -0
- package/dist/src/core/digest/types.js.map +7 -0
- package/dist/src/core/errors/error-utils.js +208 -0
- package/dist/src/core/errors/error-utils.js.map +7 -0
- package/dist/src/core/errors/index.js +521 -0
- package/dist/src/core/errors/index.js.map +7 -0
- package/dist/src/core/errors/recovery.js +269 -0
- package/dist/src/core/errors/recovery.js.map +7 -0
- package/dist/src/core/execution/parallel-executor.js +258 -0
- package/dist/src/core/execution/parallel-executor.js.map +7 -0
- package/dist/src/core/frame/workflow-templates.js +319 -0
- package/dist/src/core/frame/workflow-templates.js.map +7 -0
- package/dist/src/core/merge/conflict-detector.js +431 -0
- package/dist/src/core/merge/conflict-detector.js.map +7 -0
- package/dist/src/core/merge/index.js +9 -0
- package/dist/src/core/merge/index.js.map +7 -0
- package/dist/src/core/merge/resolution-engine.js +558 -0
- package/dist/src/core/merge/resolution-engine.js.map +7 -0
- package/dist/src/core/merge/stack-diff.js +532 -0
- package/dist/src/core/merge/stack-diff.js.map +7 -0
- package/dist/src/core/merge/types.js +5 -0
- package/dist/src/core/merge/types.js.map +7 -0
- package/dist/src/core/merge/unified-merge-resolver.js +303 -0
- package/dist/src/core/merge/unified-merge-resolver.js.map +7 -0
- package/dist/src/core/models/fallback-monitor.js +232 -0
- package/dist/src/core/models/fallback-monitor.js.map +7 -0
- package/dist/src/core/models/model-router.js +340 -0
- package/dist/src/core/models/model-router.js.map +7 -0
- package/dist/src/core/monitoring/error-handler.js +49 -0
- package/dist/src/core/monitoring/error-handler.js.map +7 -0
- package/dist/src/core/monitoring/logger.js +202 -0
- package/dist/src/core/monitoring/logger.js.map +7 -0
- package/dist/src/core/monitoring/metrics.js +172 -0
- package/dist/src/core/monitoring/metrics.js.map +7 -0
- package/dist/src/core/monitoring/progress-tracker.js +189 -0
- package/dist/src/core/monitoring/progress-tracker.js.map +7 -0
- package/dist/src/core/monitoring/session-monitor.js +300 -0
- package/dist/src/core/monitoring/session-monitor.js.map +7 -0
- package/dist/src/core/performance/context-cache.js +273 -0
- package/dist/src/core/performance/context-cache.js.map +7 -0
- package/dist/src/core/performance/index.js +11 -0
- package/dist/src/core/performance/index.js.map +7 -0
- package/dist/src/core/performance/lazy-context-loader.js +327 -0
- package/dist/src/core/performance/lazy-context-loader.js.map +7 -0
- package/dist/src/core/performance/monitor.js +221 -0
- package/dist/src/core/performance/monitor.js.map +7 -0
- package/dist/src/core/performance/optimized-frame-context.js +345 -0
- package/dist/src/core/performance/optimized-frame-context.js.map +7 -0
- package/dist/src/core/performance/performance-benchmark.js +277 -0
- package/dist/src/core/performance/performance-benchmark.js.map +7 -0
- package/dist/src/core/performance/performance-profiler.js +370 -0
- package/dist/src/core/performance/performance-profiler.js.map +7 -0
- package/dist/src/core/performance/streaming-jsonl-parser.js +195 -0
- package/dist/src/core/performance/streaming-jsonl-parser.js.map +7 -0
- package/dist/src/core/persistence/postgres-adapter.js +349 -0
- package/dist/src/core/persistence/postgres-adapter.js.map +7 -0
- package/dist/src/core/projects/project-isolation.js +201 -0
- package/dist/src/core/projects/project-isolation.js.map +7 -0
- package/dist/src/core/projects/project-manager.js +697 -0
- package/dist/src/core/projects/project-manager.js.map +7 -0
- package/dist/src/core/query/query-parser.js +370 -0
- package/dist/src/core/query/query-parser.js.map +7 -0
- package/dist/src/core/query/query-templates.js +321 -0
- package/dist/src/core/query/query-templates.js.map +7 -0
- package/dist/src/core/retrieval/context-retriever.js +479 -0
- package/dist/src/core/retrieval/context-retriever.js.map +7 -0
- package/dist/src/core/retrieval/index.js +8 -0
- package/dist/src/core/retrieval/index.js.map +7 -0
- package/dist/src/core/retrieval/llm-context-retrieval.js +613 -0
- package/dist/src/core/retrieval/llm-context-retrieval.js.map +7 -0
- package/dist/src/core/retrieval/llm-provider.js +151 -0
- package/dist/src/core/retrieval/llm-provider.js.map +7 -0
- package/dist/src/core/retrieval/retrieval-audit.js +236 -0
- package/dist/src/core/retrieval/retrieval-audit.js.map +7 -0
- package/dist/src/core/retrieval/summary-generator.js +589 -0
- package/dist/src/core/retrieval/summary-generator.js.map +7 -0
- package/dist/src/core/retrieval/types.js +21 -0
- package/dist/src/core/retrieval/types.js.map +7 -0
- package/dist/src/core/security/index.js +35 -0
- package/dist/src/core/security/index.js.map +7 -0
- package/dist/src/core/security/input-sanitizer.js +321 -0
- package/dist/src/core/security/input-sanitizer.js.map +7 -0
- package/dist/src/core/session/clear-survival.js +465 -0
- package/dist/src/core/session/clear-survival.js.map +7 -0
- package/dist/src/core/session/enhanced-handoff.js +792 -0
- package/dist/src/core/session/enhanced-handoff.js.map +7 -0
- package/dist/src/core/session/handoff-generator.js +343 -0
- package/dist/src/core/session/handoff-generator.js.map +7 -0
- package/dist/src/core/session/index.js +15 -0
- package/dist/src/core/session/index.js.map +7 -0
- package/dist/src/core/session/session-manager.js +347 -0
- package/dist/src/core/session/session-manager.js.map +7 -0
- package/dist/src/core/skills/index.js +7 -0
- package/dist/src/core/skills/index.js.map +7 -0
- package/dist/src/core/skills/skill-storage.js +764 -0
- package/dist/src/core/skills/skill-storage.js.map +7 -0
- package/dist/src/core/skills/types.js +193 -0
- package/dist/src/core/skills/types.js.map +7 -0
- package/dist/src/core/storage/chromadb-adapter.js +354 -0
- package/dist/src/core/storage/chromadb-adapter.js.map +7 -0
- package/dist/src/core/storage/infinite-storage.js +510 -0
- package/dist/src/core/storage/infinite-storage.js.map +7 -0
- package/dist/src/core/storage/remote-storage.js +489 -0
- package/dist/src/core/storage/remote-storage.js.map +7 -0
- package/dist/src/core/storage/two-tier-storage.js +766 -0
- package/dist/src/core/storage/two-tier-storage.js.map +7 -0
- package/dist/src/core/trace/cli-trace-wrapper.js +132 -0
- package/dist/src/core/trace/cli-trace-wrapper.js.map +7 -0
- package/dist/src/core/trace/db-trace-wrapper.js +247 -0
- package/dist/src/core/trace/db-trace-wrapper.js.map +7 -0
- package/dist/src/core/trace/debug-trace.js +417 -0
- package/dist/src/core/trace/debug-trace.js.map +7 -0
- package/dist/src/core/trace/index.js +109 -0
- package/dist/src/core/trace/index.js.map +7 -0
- package/dist/src/core/trace/linear-api-wrapper.js +178 -0
- package/dist/src/core/trace/linear-api-wrapper.js.map +7 -0
- package/dist/src/core/trace/trace-detector.js +528 -0
- package/dist/src/core/trace/trace-detector.js.map +7 -0
- package/dist/src/core/trace/trace-store.js +345 -0
- package/dist/src/core/trace/trace-store.js.map +7 -0
- package/dist/src/core/trace/types.js +77 -0
- package/dist/src/core/trace/types.js.map +7 -0
- package/dist/src/core/types.js +5 -0
- package/dist/src/core/types.js.map +7 -0
- package/dist/src/core/utils/async-mutex.js +114 -0
- package/dist/src/core/utils/async-mutex.js.map +7 -0
- package/dist/src/core/utils/compression.js +83 -0
- package/dist/src/core/utils/compression.js.map +7 -0
- package/dist/src/core/utils/update-checker.js +218 -0
- package/dist/src/core/utils/update-checker.js.map +7 -0
- package/dist/src/core/worktree/worktree-manager.js +465 -0
- package/dist/src/core/worktree/worktree-manager.js.map +7 -0
- package/dist/src/daemon/daemon-config.js +149 -0
- package/dist/src/daemon/daemon-config.js.map +7 -0
- package/dist/src/daemon/services/context-service.js +122 -0
- package/dist/src/daemon/services/context-service.js.map +7 -0
- package/dist/src/daemon/services/linear-service.js +136 -0
- package/dist/src/daemon/services/linear-service.js.map +7 -0
- package/dist/src/daemon/session-daemon.js +312 -0
- package/dist/src/daemon/session-daemon.js.map +7 -0
- package/dist/src/daemon/unified-daemon.js +276 -0
- package/dist/src/daemon/unified-daemon.js.map +7 -0
- package/dist/src/features/analytics/api/analytics-api.js +287 -0
- package/dist/src/features/analytics/api/analytics-api.js.map +7 -0
- package/dist/src/features/analytics/core/analytics-service.js +282 -0
- package/dist/src/features/analytics/core/analytics-service.js.map +7 -0
- package/dist/src/features/analytics/index.js +18 -0
- package/dist/src/features/analytics/index.js.map +7 -0
- package/dist/src/features/analytics/queries/metrics-queries.js +277 -0
- package/dist/src/features/analytics/queries/metrics-queries.js.map +7 -0
- package/dist/src/features/analytics/types/metrics.js +5 -0
- package/dist/src/features/analytics/types/metrics.js.map +7 -0
- package/dist/src/features/browser/browser-mcp.js +492 -0
- package/dist/src/features/browser/browser-mcp.js.map +7 -0
- package/dist/src/features/sweep/index.js +20 -0
- package/dist/src/features/sweep/index.js.map +7 -0
- package/dist/src/features/sweep/prediction-client.js +155 -0
- package/dist/src/features/sweep/prediction-client.js.map +7 -0
- package/dist/src/features/sweep/prompt-builder.js +85 -0
- package/dist/src/features/sweep/prompt-builder.js.map +7 -0
- package/dist/src/features/sweep/pty-wrapper.js +171 -0
- package/dist/src/features/sweep/pty-wrapper.js.map +7 -0
- package/dist/src/features/sweep/state-watcher.js +87 -0
- package/dist/src/features/sweep/state-watcher.js.map +7 -0
- package/dist/src/features/sweep/status-bar.js +88 -0
- package/dist/src/features/sweep/status-bar.js.map +7 -0
- package/dist/src/features/sweep/sweep-server-manager.js +226 -0
- package/dist/src/features/sweep/sweep-server-manager.js.map +7 -0
- package/dist/src/features/sweep/tab-interceptor.js +38 -0
- package/dist/src/features/sweep/tab-interceptor.js.map +7 -0
- package/dist/src/features/sweep/types.js +18 -0
- package/dist/src/features/sweep/types.js.map +7 -0
- package/dist/src/features/tasks/linear-task-manager.js +487 -0
- package/dist/src/features/tasks/linear-task-manager.js.map +7 -0
- package/dist/src/features/tasks/task-aware-context.js +410 -0
- package/dist/src/features/tasks/task-aware-context.js.map +7 -0
- package/dist/src/features/tui/simple-monitor.js +116 -0
- package/dist/src/features/tui/simple-monitor.js.map +7 -0
- package/dist/src/features/tui/swarm-monitor.js +648 -0
- package/dist/src/features/tui/swarm-monitor.js.map +7 -0
- package/dist/src/features/web/client/stores/task-store.js +26 -0
- package/dist/src/features/web/client/stores/task-store.js.map +7 -0
- package/dist/src/features/web/server/index.js +194 -0
- package/dist/src/features/web/server/index.js.map +7 -0
- package/dist/src/hooks/auto-background.js +151 -0
- package/dist/src/hooks/auto-background.js.map +7 -0
- package/dist/src/hooks/claude-code-whatsapp-hook.js +197 -0
- package/dist/src/hooks/claude-code-whatsapp-hook.js.map +7 -0
- package/dist/src/hooks/config.js +150 -0
- package/dist/src/hooks/config.js.map +7 -0
- package/dist/src/hooks/daemon.js +364 -0
- package/dist/src/hooks/daemon.js.map +7 -0
- package/dist/src/hooks/events.js +58 -0
- package/dist/src/hooks/events.js.map +7 -0
- package/dist/src/hooks/index.js +12 -0
- package/dist/src/hooks/index.js.map +7 -0
- package/dist/src/hooks/linear-task-picker.js +186 -0
- package/dist/src/hooks/linear-task-picker.js.map +7 -0
- package/dist/src/hooks/schemas.js +197 -0
- package/dist/src/hooks/schemas.js.map +7 -0
- package/dist/src/hooks/secure-fs.js +49 -0
- package/dist/src/hooks/secure-fs.js.map +7 -0
- package/dist/src/hooks/security-logger.js +155 -0
- package/dist/src/hooks/security-logger.js.map +7 -0
- package/dist/src/hooks/session-summary.js +222 -0
- package/dist/src/hooks/session-summary.js.map +7 -0
- package/dist/src/hooks/sms-action-runner.js +371 -0
- package/dist/src/hooks/sms-action-runner.js.map +7 -0
- package/dist/src/hooks/sms-notify.js +506 -0
- package/dist/src/hooks/sms-notify.js.map +7 -0
- package/dist/src/hooks/sms-watcher.js +93 -0
- package/dist/src/hooks/sms-watcher.js.map +7 -0
- package/dist/src/hooks/sms-webhook.js +555 -0
- package/dist/src/hooks/sms-webhook.js.map +7 -0
- package/dist/src/hooks/whatsapp-commands.js +479 -0
- package/dist/src/hooks/whatsapp-commands.js.map +7 -0
- package/dist/src/hooks/whatsapp-scheduler.js +317 -0
- package/dist/src/hooks/whatsapp-scheduler.js.map +7 -0
- package/dist/src/hooks/whatsapp-sync.js +409 -0
- package/dist/src/hooks/whatsapp-sync.js.map +7 -0
- package/dist/src/index.js +25 -0
- package/dist/src/index.js.map +7 -0
- package/dist/src/integrations/anthropic/client.js +263 -0
- package/dist/src/integrations/anthropic/client.js.map +7 -0
- package/dist/src/integrations/claude-code/agent-bridge.js +768 -0
- package/dist/src/integrations/claude-code/agent-bridge.js.map +7 -0
- package/dist/src/integrations/claude-code/enhanced-pre-clear-hooks.js +459 -0
- package/dist/src/integrations/claude-code/enhanced-pre-clear-hooks.js.map +7 -0
- package/dist/src/integrations/claude-code/lifecycle-hooks.js +254 -0
- package/dist/src/integrations/claude-code/lifecycle-hooks.js.map +7 -0
- package/dist/src/integrations/claude-code/post-task-hooks.js +545 -0
- package/dist/src/integrations/claude-code/post-task-hooks.js.map +7 -0
- package/dist/src/integrations/claude-code/subagent-client-stub.js +20 -0
- package/dist/src/integrations/claude-code/subagent-client-stub.js.map +7 -0
- package/dist/src/integrations/claude-code/subagent-client.js +511 -0
- package/dist/src/integrations/claude-code/subagent-client.js.map +7 -0
- package/dist/src/integrations/claude-code/task-coordinator.js +360 -0
- package/dist/src/integrations/claude-code/task-coordinator.js.map +7 -0
- package/dist/src/integrations/linear/auth.js +337 -0
- package/dist/src/integrations/linear/auth.js.map +7 -0
- package/dist/src/integrations/linear/auto-sync.js +258 -0
- package/dist/src/integrations/linear/auto-sync.js.map +7 -0
- package/dist/src/integrations/linear/client.js +634 -0
- package/dist/src/integrations/linear/client.js.map +7 -0
- package/dist/src/integrations/linear/config.js +130 -0
- package/dist/src/integrations/linear/config.js.map +7 -0
- package/dist/src/integrations/linear/migration.js +361 -0
- package/dist/src/integrations/linear/migration.js.map +7 -0
- package/dist/src/integrations/linear/oauth-server.js +454 -0
- package/dist/src/integrations/linear/oauth-server.js.map +7 -0
- package/dist/src/integrations/linear/rest-client.js +213 -0
- package/dist/src/integrations/linear/rest-client.js.map +7 -0
- package/dist/src/integrations/linear/sync-manager.js +236 -0
- package/dist/src/integrations/linear/sync-manager.js.map +7 -0
- package/dist/src/integrations/linear/sync-service.js +231 -0
- package/dist/src/integrations/linear/sync-service.js.map +7 -0
- package/dist/src/integrations/linear/sync.js +782 -0
- package/dist/src/integrations/linear/sync.js.map +7 -0
- package/dist/src/integrations/linear/types.js +5 -0
- package/dist/src/integrations/linear/types.js.map +7 -0
- package/dist/src/integrations/linear/unified-sync.js +589 -0
- package/dist/src/integrations/linear/unified-sync.js.map +7 -0
- package/dist/src/integrations/linear/webhook-handler.js +219 -0
- package/dist/src/integrations/linear/webhook-handler.js.map +7 -0
- package/dist/src/integrations/linear/webhook-server.js +218 -0
- package/dist/src/integrations/linear/webhook-server.js.map +7 -0
- package/dist/src/integrations/linear/webhook.js +291 -0
- package/dist/src/integrations/linear/webhook.js.map +7 -0
- package/dist/src/integrations/mcp/handlers/code-execution-handlers.js +266 -0
- package/dist/src/integrations/mcp/handlers/code-execution-handlers.js.map +7 -0
- package/dist/src/integrations/mcp/handlers/context-handlers.js +257 -0
- package/dist/src/integrations/mcp/handlers/context-handlers.js.map +7 -0
- package/dist/src/integrations/mcp/handlers/discovery-handlers.js +497 -0
- package/dist/src/integrations/mcp/handlers/discovery-handlers.js.map +7 -0
- package/dist/src/integrations/mcp/handlers/index.js +166 -0
- package/dist/src/integrations/mcp/handlers/index.js.map +7 -0
- package/dist/src/integrations/mcp/handlers/linear-handlers.js +247 -0
- package/dist/src/integrations/mcp/handlers/linear-handlers.js.map +7 -0
- package/dist/src/integrations/mcp/handlers/skill-handlers.js +529 -0
- package/dist/src/integrations/mcp/handlers/skill-handlers.js.map +7 -0
- package/dist/src/integrations/mcp/handlers/task-handlers.js +239 -0
- package/dist/src/integrations/mcp/handlers/task-handlers.js.map +7 -0
- package/dist/src/integrations/mcp/handlers/trace-handlers.js +308 -0
- package/dist/src/integrations/mcp/handlers/trace-handlers.js.map +7 -0
- package/dist/src/integrations/mcp/index.js +23 -0
- package/dist/src/integrations/mcp/index.js.map +7 -0
- package/dist/src/integrations/mcp/middleware/tool-scoring.js +356 -0
- package/dist/src/integrations/mcp/middleware/tool-scoring.js.map +7 -0
- package/dist/src/integrations/mcp/refactored-server.js +374 -0
- package/dist/src/integrations/mcp/refactored-server.js.map +7 -0
- package/dist/src/integrations/mcp/remote-server.js +682 -0
- package/dist/src/integrations/mcp/remote-server.js.map +7 -0
- package/dist/src/integrations/mcp/schemas.js +147 -0
- package/dist/src/integrations/mcp/schemas.js.map +7 -0
- package/dist/src/integrations/mcp/server.js +1975 -0
- package/dist/src/integrations/mcp/server.js.map +7 -0
- package/dist/src/integrations/mcp/tool-definitions-code.js +125 -0
- package/dist/src/integrations/mcp/tool-definitions-code.js.map +7 -0
- package/dist/src/integrations/mcp/tool-definitions.js +702 -0
- package/dist/src/integrations/mcp/tool-definitions.js.map +7 -0
- package/dist/src/integrations/ralph/bridge/ralph-stackmemory-bridge.js +860 -0
- package/dist/src/integrations/ralph/bridge/ralph-stackmemory-bridge.js.map +7 -0
- package/dist/src/integrations/ralph/context/context-budget-manager.js +301 -0
- package/dist/src/integrations/ralph/context/context-budget-manager.js.map +7 -0
- package/dist/src/integrations/ralph/context/stackmemory-context-loader.js +360 -0
- package/dist/src/integrations/ralph/context/stackmemory-context-loader.js.map +7 -0
- package/dist/src/integrations/ralph/coordination/enhanced-coordination.js +410 -0
- package/dist/src/integrations/ralph/coordination/enhanced-coordination.js.map +7 -0
- package/dist/src/integrations/ralph/index.js +18 -0
- package/dist/src/integrations/ralph/index.js.map +7 -0
- package/dist/src/integrations/ralph/learning/pattern-learner.js +401 -0
- package/dist/src/integrations/ralph/learning/pattern-learner.js.map +7 -0
- package/dist/src/integrations/ralph/lifecycle/iteration-lifecycle.js +448 -0
- package/dist/src/integrations/ralph/lifecycle/iteration-lifecycle.js.map +7 -0
- package/dist/src/integrations/ralph/monitoring/swarm-dashboard.js +294 -0
- package/dist/src/integrations/ralph/monitoring/swarm-dashboard.js.map +7 -0
- package/dist/src/integrations/ralph/monitoring/swarm-registry.js +108 -0
- package/dist/src/integrations/ralph/monitoring/swarm-registry.js.map +7 -0
- package/dist/src/integrations/ralph/orchestration/multi-loop-orchestrator.js +463 -0
- package/dist/src/integrations/ralph/orchestration/multi-loop-orchestrator.js.map +7 -0
- package/dist/src/integrations/ralph/patterns/compounding-engineering-pattern.js +400 -0
- package/dist/src/integrations/ralph/patterns/compounding-engineering-pattern.js.map +7 -0
- package/dist/src/integrations/ralph/patterns/extended-coherence-sessions.js +473 -0
- package/dist/src/integrations/ralph/patterns/extended-coherence-sessions.js.map +7 -0
- package/dist/src/integrations/ralph/patterns/oracle-worker-pattern.js +388 -0
- package/dist/src/integrations/ralph/patterns/oracle-worker-pattern.js.map +7 -0
- package/dist/src/integrations/ralph/performance/performance-optimizer.js +358 -0
- package/dist/src/integrations/ralph/performance/performance-optimizer.js.map +7 -0
- package/dist/src/integrations/ralph/recovery/crash-recovery.js +462 -0
- package/dist/src/integrations/ralph/recovery/crash-recovery.js.map +7 -0
- package/dist/src/integrations/ralph/state/state-reconciler.js +404 -0
- package/dist/src/integrations/ralph/state/state-reconciler.js.map +7 -0
- package/dist/src/integrations/ralph/swarm/git-workflow-manager.js +428 -0
- package/dist/src/integrations/ralph/swarm/git-workflow-manager.js.map +7 -0
- package/dist/src/integrations/ralph/swarm/swarm-coordinator.js +996 -0
- package/dist/src/integrations/ralph/swarm/swarm-coordinator.js.map +7 -0
- package/dist/src/integrations/ralph/types.js +5 -0
- package/dist/src/integrations/ralph/types.js.map +7 -0
- package/dist/src/integrations/ralph/visualization/ralph-debugger.js +585 -0
- package/dist/src/integrations/ralph/visualization/ralph-debugger.js.map +7 -0
- package/dist/src/mcp/stackmemory-mcp-server.js +554 -0
- package/dist/src/mcp/stackmemory-mcp-server.js.map +7 -0
- package/dist/src/middleware/exponential-rate-limiter.js +289 -0
- package/dist/src/middleware/exponential-rate-limiter.js.map +7 -0
- package/dist/src/models/user.model.js +358 -0
- package/dist/src/models/user.model.js.map +7 -0
- package/dist/src/servers/production/auth-middleware.js +528 -0
- package/dist/src/servers/production/auth-middleware.js.map +7 -0
- package/dist/src/services/config-service.js +65 -0
- package/dist/src/services/config-service.js.map +7 -0
- package/dist/src/services/context-service.js +194 -0
- package/dist/src/services/context-service.js.map +7 -0
- package/dist/src/skills/api-discovery.js +354 -0
- package/dist/src/skills/api-discovery.js.map +7 -0
- package/dist/src/skills/api-skill.js +475 -0
- package/dist/src/skills/api-skill.js.map +7 -0
- package/dist/src/skills/claude-skills.js +1061 -0
- package/dist/src/skills/claude-skills.js.map +7 -0
- package/dist/src/skills/dashboard-launcher.js +216 -0
- package/dist/src/skills/dashboard-launcher.js.map +7 -0
- package/dist/src/skills/recursive-agent-orchestrator.js +575 -0
- package/dist/src/skills/recursive-agent-orchestrator.js.map +7 -0
- package/dist/src/skills/repo-ingestion-skill.js +609 -0
- package/dist/src/skills/repo-ingestion-skill.js.map +7 -0
- package/dist/src/skills/unified-rlm-orchestrator.js +404 -0
- package/dist/src/skills/unified-rlm-orchestrator.js.map +7 -0
- package/dist/src/types/task.js +5 -0
- package/dist/src/types/task.js.map +7 -0
- package/dist/src/utils/env.js +50 -0
- package/dist/src/utils/env.js.map +7 -0
- package/dist/src/utils/formatting.js +62 -0
- package/dist/src/utils/formatting.js.map +7 -0
- package/dist/src/utils/process-cleanup.js +136 -0
- package/dist/src/utils/process-cleanup.js.map +7 -0
- package/package.json +3 -3
- package/scripts/initialize.ts +16 -7
- package/scripts/install.sh +14 -62
- package/scripts/status.ts +111 -46
|
@@ -0,0 +1,529 @@
|
|
|
1
|
+
import { fileURLToPath as __fileURLToPath } from 'url';
|
|
2
|
+
import { dirname as __pathDirname } from 'path';
|
|
3
|
+
const __filename = __fileURLToPath(import.meta.url);
|
|
4
|
+
const __dirname = __pathDirname(__filename);
|
|
5
|
+
import { logger } from "../../../core/monitoring/logger.js";
|
|
6
|
+
function getEnv(key, defaultValue) {
|
|
7
|
+
const value = process.env[key];
|
|
8
|
+
if (value === void 0) {
|
|
9
|
+
if (defaultValue !== void 0) return defaultValue;
|
|
10
|
+
throw new Error(`Environment variable ${key} is required`);
|
|
11
|
+
}
|
|
12
|
+
return value;
|
|
13
|
+
}
|
|
14
|
+
function getOptionalEnv(key) {
|
|
15
|
+
return process.env[key];
|
|
16
|
+
}
|
|
17
|
+
import {
|
|
18
|
+
getSkillStorage,
|
|
19
|
+
getDefaultUserId
|
|
20
|
+
} from "../../../core/skills/index.js";
|
|
21
|
+
class SkillHandlers {
|
|
22
|
+
constructor(redisUrl, userId) {
|
|
23
|
+
this.redisUrl = redisUrl;
|
|
24
|
+
this.userId = userId || getDefaultUserId();
|
|
25
|
+
}
|
|
26
|
+
skillStorage = null;
|
|
27
|
+
userId;
|
|
28
|
+
/**
|
|
29
|
+
* Lazy initialization of skill storage
|
|
30
|
+
*/
|
|
31
|
+
getStorage() {
|
|
32
|
+
if (!this.skillStorage) {
|
|
33
|
+
const url = this.redisUrl || process.env["REDIS_URL"];
|
|
34
|
+
if (!url) {
|
|
35
|
+
throw new Error("REDIS_URL not configured for skill storage");
|
|
36
|
+
}
|
|
37
|
+
this.skillStorage = getSkillStorage({
|
|
38
|
+
redisUrl: url,
|
|
39
|
+
userId: this.userId
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
return this.skillStorage;
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Get current user ID
|
|
46
|
+
*/
|
|
47
|
+
getUserId() {
|
|
48
|
+
return this.userId;
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Check if skill storage is available
|
|
52
|
+
*/
|
|
53
|
+
isAvailable() {
|
|
54
|
+
return !!(this.redisUrl || process.env["REDIS_URL"]);
|
|
55
|
+
}
|
|
56
|
+
// ============================================================
|
|
57
|
+
// SKILL OPERATIONS
|
|
58
|
+
// ============================================================
|
|
59
|
+
/**
|
|
60
|
+
* Record a new skill/learning
|
|
61
|
+
*/
|
|
62
|
+
async recordSkill(args, context) {
|
|
63
|
+
try {
|
|
64
|
+
const storage = this.getStorage();
|
|
65
|
+
const skill = await storage.createSkill({
|
|
66
|
+
content: args.content,
|
|
67
|
+
category: args.category,
|
|
68
|
+
priority: args.priority || "medium",
|
|
69
|
+
tool: args.tool,
|
|
70
|
+
tags: args.tags || [],
|
|
71
|
+
source: args.source || "observation",
|
|
72
|
+
sessionId: context.sessionId
|
|
73
|
+
});
|
|
74
|
+
logger.info("Recorded skill via MCP", {
|
|
75
|
+
skillId: skill.id,
|
|
76
|
+
category: skill.category
|
|
77
|
+
});
|
|
78
|
+
return { success: true, skill };
|
|
79
|
+
} catch (error) {
|
|
80
|
+
const message = error instanceof Error ? error.message : "Unknown error";
|
|
81
|
+
logger.error("Failed to record skill", { error: message });
|
|
82
|
+
return { success: false, error: message };
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Get relevant skills for current context
|
|
87
|
+
*/
|
|
88
|
+
async getRelevantSkills(args) {
|
|
89
|
+
try {
|
|
90
|
+
const storage = this.getStorage();
|
|
91
|
+
const skills = await storage.getRelevantSkills({
|
|
92
|
+
tool: args.tool,
|
|
93
|
+
language: args.language,
|
|
94
|
+
framework: args.framework,
|
|
95
|
+
tags: args.tags
|
|
96
|
+
});
|
|
97
|
+
const limited = args.limit ? skills.slice(0, args.limit) : skills;
|
|
98
|
+
return { success: true, skills: limited };
|
|
99
|
+
} catch (error) {
|
|
100
|
+
const message = error instanceof Error ? error.message : "Unknown error";
|
|
101
|
+
logger.error("Failed to get relevant skills", { error: message });
|
|
102
|
+
return { success: false, error: message };
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* Query skills with filters
|
|
107
|
+
*/
|
|
108
|
+
async querySkills(args) {
|
|
109
|
+
try {
|
|
110
|
+
const storage = this.getStorage();
|
|
111
|
+
const query = {
|
|
112
|
+
categories: args.categories,
|
|
113
|
+
priorities: args.priorities,
|
|
114
|
+
tool: args.tool,
|
|
115
|
+
tags: args.tags,
|
|
116
|
+
minValidatedCount: args.minValidatedCount,
|
|
117
|
+
limit: args.limit || 50,
|
|
118
|
+
offset: 0,
|
|
119
|
+
sortBy: args.sortBy || "priority",
|
|
120
|
+
sortOrder: "desc"
|
|
121
|
+
};
|
|
122
|
+
const skills = await storage.querySkills(query);
|
|
123
|
+
return { success: true, skills, total: skills.length };
|
|
124
|
+
} catch (error) {
|
|
125
|
+
const message = error instanceof Error ? error.message : "Unknown error";
|
|
126
|
+
logger.error("Failed to query skills", { error: message });
|
|
127
|
+
return { success: false, error: message };
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
/**
|
|
131
|
+
* Validate/reinforce a skill
|
|
132
|
+
*/
|
|
133
|
+
async validateSkill(args) {
|
|
134
|
+
try {
|
|
135
|
+
const storage = this.getStorage();
|
|
136
|
+
const skill = await storage.validateSkill(args.skill_id);
|
|
137
|
+
if (!skill) {
|
|
138
|
+
return { success: false, error: "Skill not found" };
|
|
139
|
+
}
|
|
140
|
+
return { success: true, skill };
|
|
141
|
+
} catch (error) {
|
|
142
|
+
const message = error instanceof Error ? error.message : "Unknown error";
|
|
143
|
+
logger.error("Failed to validate skill", { error: message });
|
|
144
|
+
return { success: false, error: message };
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
/**
|
|
148
|
+
* Update a skill
|
|
149
|
+
*/
|
|
150
|
+
async updateSkill(args) {
|
|
151
|
+
try {
|
|
152
|
+
const storage = this.getStorage();
|
|
153
|
+
const skill = await storage.updateSkill({
|
|
154
|
+
id: args.skill_id,
|
|
155
|
+
content: args.content,
|
|
156
|
+
priority: args.priority,
|
|
157
|
+
tags: args.tags
|
|
158
|
+
});
|
|
159
|
+
if (!skill) {
|
|
160
|
+
return { success: false, error: "Skill not found" };
|
|
161
|
+
}
|
|
162
|
+
return { success: true, skill };
|
|
163
|
+
} catch (error) {
|
|
164
|
+
const message = error instanceof Error ? error.message : "Unknown error";
|
|
165
|
+
logger.error("Failed to update skill", { error: message });
|
|
166
|
+
return { success: false, error: message };
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
/**
|
|
170
|
+
* Delete a skill
|
|
171
|
+
*/
|
|
172
|
+
async deleteSkill(args) {
|
|
173
|
+
try {
|
|
174
|
+
const storage = this.getStorage();
|
|
175
|
+
const deleted = await storage.deleteSkill(args.skill_id);
|
|
176
|
+
if (!deleted) {
|
|
177
|
+
return { success: false, error: "Skill not found" };
|
|
178
|
+
}
|
|
179
|
+
return { success: true };
|
|
180
|
+
} catch (error) {
|
|
181
|
+
const message = error instanceof Error ? error.message : "Unknown error";
|
|
182
|
+
logger.error("Failed to delete skill", { error: message });
|
|
183
|
+
return { success: false, error: message };
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
// ============================================================
|
|
187
|
+
// SESSION JOURNAL OPERATIONS
|
|
188
|
+
// ============================================================
|
|
189
|
+
/**
|
|
190
|
+
* Record a journal entry
|
|
191
|
+
*/
|
|
192
|
+
async recordJournalEntry(args, context) {
|
|
193
|
+
try {
|
|
194
|
+
const storage = this.getStorage();
|
|
195
|
+
const sessionId = context.sessionId || "default";
|
|
196
|
+
const entry = await storage.createJournalEntry(
|
|
197
|
+
sessionId,
|
|
198
|
+
args.type,
|
|
199
|
+
args.title,
|
|
200
|
+
args.content,
|
|
201
|
+
{ tool: args.tool, file: args.file }
|
|
202
|
+
);
|
|
203
|
+
return { success: true, entryId: entry.id };
|
|
204
|
+
} catch (error) {
|
|
205
|
+
const message = error instanceof Error ? error.message : "Unknown error";
|
|
206
|
+
logger.error("Failed to record journal entry", { error: message });
|
|
207
|
+
return { success: false, error: message };
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
/**
|
|
211
|
+
* Get session journal
|
|
212
|
+
*/
|
|
213
|
+
async getSessionJournal(args, context) {
|
|
214
|
+
try {
|
|
215
|
+
const storage = this.getStorage();
|
|
216
|
+
const sessionId = args.session_id || context.sessionId || "default";
|
|
217
|
+
const entries = await storage.getSessionJournal(sessionId);
|
|
218
|
+
return { success: true, entries };
|
|
219
|
+
} catch (error) {
|
|
220
|
+
const message = error instanceof Error ? error.message : "Unknown error";
|
|
221
|
+
logger.error("Failed to get session journal", { error: message });
|
|
222
|
+
return { success: false, error: message };
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
/**
|
|
226
|
+
* Promote a journal entry to a skill
|
|
227
|
+
*/
|
|
228
|
+
async promoteToSkill(args) {
|
|
229
|
+
try {
|
|
230
|
+
const storage = this.getStorage();
|
|
231
|
+
const skill = await storage.promoteToSkill(
|
|
232
|
+
args.entry_id,
|
|
233
|
+
args.category,
|
|
234
|
+
args.priority || "medium"
|
|
235
|
+
);
|
|
236
|
+
if (!skill) {
|
|
237
|
+
return { success: false, error: "Journal entry not found" };
|
|
238
|
+
}
|
|
239
|
+
return { success: true, skill };
|
|
240
|
+
} catch (error) {
|
|
241
|
+
const message = error instanceof Error ? error.message : "Unknown error";
|
|
242
|
+
logger.error("Failed to promote journal entry", { error: message });
|
|
243
|
+
return { success: false, error: message };
|
|
244
|
+
}
|
|
245
|
+
}
|
|
246
|
+
// ============================================================
|
|
247
|
+
// SESSION MANAGEMENT
|
|
248
|
+
// ============================================================
|
|
249
|
+
/**
|
|
250
|
+
* Start session tracking
|
|
251
|
+
*/
|
|
252
|
+
async startSession(args) {
|
|
253
|
+
try {
|
|
254
|
+
const storage = this.getStorage();
|
|
255
|
+
await storage.startSession(args.session_id);
|
|
256
|
+
return { success: true };
|
|
257
|
+
} catch (error) {
|
|
258
|
+
const message = error instanceof Error ? error.message : "Unknown error";
|
|
259
|
+
logger.error("Failed to start session", { error: message });
|
|
260
|
+
return { success: false, error: message };
|
|
261
|
+
}
|
|
262
|
+
}
|
|
263
|
+
/**
|
|
264
|
+
* End session and get summary
|
|
265
|
+
*/
|
|
266
|
+
async endSession(args) {
|
|
267
|
+
try {
|
|
268
|
+
const storage = this.getStorage();
|
|
269
|
+
const summary = await storage.endSession(args.session_id);
|
|
270
|
+
if (!summary) {
|
|
271
|
+
return { success: false, error: "Session not found" };
|
|
272
|
+
}
|
|
273
|
+
return { success: true, summary };
|
|
274
|
+
} catch (error) {
|
|
275
|
+
const message = error instanceof Error ? error.message : "Unknown error";
|
|
276
|
+
logger.error("Failed to end session", { error: message });
|
|
277
|
+
return { success: false, error: message };
|
|
278
|
+
}
|
|
279
|
+
}
|
|
280
|
+
// ============================================================
|
|
281
|
+
// KNOWLEDGE MANAGEMENT
|
|
282
|
+
// ============================================================
|
|
283
|
+
/**
|
|
284
|
+
* Get promotion candidates
|
|
285
|
+
*/
|
|
286
|
+
async getPromotionCandidates() {
|
|
287
|
+
try {
|
|
288
|
+
const storage = this.getStorage();
|
|
289
|
+
const skills = await storage.getPromotionCandidates();
|
|
290
|
+
return { success: true, skills };
|
|
291
|
+
} catch (error) {
|
|
292
|
+
const message = error instanceof Error ? error.message : "Unknown error";
|
|
293
|
+
logger.error("Failed to get promotion candidates", { error: message });
|
|
294
|
+
return { success: false, error: message };
|
|
295
|
+
}
|
|
296
|
+
}
|
|
297
|
+
/**
|
|
298
|
+
* Promote skill priority
|
|
299
|
+
*/
|
|
300
|
+
async promoteSkillPriority(args) {
|
|
301
|
+
try {
|
|
302
|
+
const storage = this.getStorage();
|
|
303
|
+
const skill = await storage.promoteSkill(args.skill_id);
|
|
304
|
+
if (!skill) {
|
|
305
|
+
return { success: false, error: "Skill not found" };
|
|
306
|
+
}
|
|
307
|
+
return { success: true, skill };
|
|
308
|
+
} catch (error) {
|
|
309
|
+
const message = error instanceof Error ? error.message : "Unknown error";
|
|
310
|
+
logger.error("Failed to promote skill priority", { error: message });
|
|
311
|
+
return { success: false, error: message };
|
|
312
|
+
}
|
|
313
|
+
}
|
|
314
|
+
/**
|
|
315
|
+
* Archive stale skills
|
|
316
|
+
*/
|
|
317
|
+
async archiveStaleSkills(args) {
|
|
318
|
+
try {
|
|
319
|
+
const storage = this.getStorage();
|
|
320
|
+
const count = await storage.archiveStaleSkills(args.days_threshold || 90);
|
|
321
|
+
return { success: true, archivedCount: count };
|
|
322
|
+
} catch (error) {
|
|
323
|
+
const message = error instanceof Error ? error.message : "Unknown error";
|
|
324
|
+
logger.error("Failed to archive stale skills", { error: message });
|
|
325
|
+
return { success: false, error: message };
|
|
326
|
+
}
|
|
327
|
+
}
|
|
328
|
+
/**
|
|
329
|
+
* Get skill storage metrics
|
|
330
|
+
*/
|
|
331
|
+
async getSkillMetrics() {
|
|
332
|
+
try {
|
|
333
|
+
const storage = this.getStorage();
|
|
334
|
+
const metrics = await storage.getMetrics();
|
|
335
|
+
return { success: true, metrics };
|
|
336
|
+
} catch (error) {
|
|
337
|
+
const message = error instanceof Error ? error.message : "Unknown error";
|
|
338
|
+
logger.error("Failed to get skill metrics", { error: message });
|
|
339
|
+
return { success: false, error: message };
|
|
340
|
+
}
|
|
341
|
+
}
|
|
342
|
+
}
|
|
343
|
+
const SKILL_TOOL_DEFINITIONS = [
|
|
344
|
+
{
|
|
345
|
+
name: "record_skill",
|
|
346
|
+
description: "Record a new learning, pattern, or skill to remember across sessions",
|
|
347
|
+
inputSchema: {
|
|
348
|
+
type: "object",
|
|
349
|
+
properties: {
|
|
350
|
+
content: {
|
|
351
|
+
type: "string",
|
|
352
|
+
description: "The skill/learning content to remember"
|
|
353
|
+
},
|
|
354
|
+
category: {
|
|
355
|
+
type: "string",
|
|
356
|
+
enum: [
|
|
357
|
+
"tool",
|
|
358
|
+
"workflow",
|
|
359
|
+
"correction",
|
|
360
|
+
"pattern",
|
|
361
|
+
"preference",
|
|
362
|
+
"pitfall",
|
|
363
|
+
"optimization"
|
|
364
|
+
],
|
|
365
|
+
description: "Category of the skill"
|
|
366
|
+
},
|
|
367
|
+
priority: {
|
|
368
|
+
type: "string",
|
|
369
|
+
enum: ["critical", "high", "medium", "low"],
|
|
370
|
+
default: "medium",
|
|
371
|
+
description: "How important this skill is"
|
|
372
|
+
},
|
|
373
|
+
tool: {
|
|
374
|
+
type: "string",
|
|
375
|
+
description: "Related tool name (if applicable)"
|
|
376
|
+
},
|
|
377
|
+
tags: {
|
|
378
|
+
type: "array",
|
|
379
|
+
items: { type: "string" },
|
|
380
|
+
description: "Tags for categorization"
|
|
381
|
+
}
|
|
382
|
+
},
|
|
383
|
+
required: ["content", "category"]
|
|
384
|
+
}
|
|
385
|
+
},
|
|
386
|
+
{
|
|
387
|
+
name: "get_relevant_skills",
|
|
388
|
+
description: "Get skills relevant to current context (tool, language, etc.)",
|
|
389
|
+
inputSchema: {
|
|
390
|
+
type: "object",
|
|
391
|
+
properties: {
|
|
392
|
+
tool: {
|
|
393
|
+
type: "string",
|
|
394
|
+
description: "Filter by tool name"
|
|
395
|
+
},
|
|
396
|
+
language: {
|
|
397
|
+
type: "string",
|
|
398
|
+
description: "Filter by programming language"
|
|
399
|
+
},
|
|
400
|
+
framework: {
|
|
401
|
+
type: "string",
|
|
402
|
+
description: "Filter by framework"
|
|
403
|
+
},
|
|
404
|
+
limit: {
|
|
405
|
+
type: "number",
|
|
406
|
+
default: 20,
|
|
407
|
+
description: "Maximum skills to return"
|
|
408
|
+
}
|
|
409
|
+
}
|
|
410
|
+
}
|
|
411
|
+
},
|
|
412
|
+
{
|
|
413
|
+
name: "validate_skill",
|
|
414
|
+
description: "Mark a skill as validated/reinforced (increases its importance)",
|
|
415
|
+
inputSchema: {
|
|
416
|
+
type: "object",
|
|
417
|
+
properties: {
|
|
418
|
+
skill_id: {
|
|
419
|
+
type: "string",
|
|
420
|
+
description: "ID of the skill to validate"
|
|
421
|
+
}
|
|
422
|
+
},
|
|
423
|
+
required: ["skill_id"]
|
|
424
|
+
}
|
|
425
|
+
},
|
|
426
|
+
{
|
|
427
|
+
name: "record_correction",
|
|
428
|
+
description: "Record a user correction to remember and apply in future sessions",
|
|
429
|
+
inputSchema: {
|
|
430
|
+
type: "object",
|
|
431
|
+
properties: {
|
|
432
|
+
title: {
|
|
433
|
+
type: "string",
|
|
434
|
+
description: "Brief title of the correction"
|
|
435
|
+
},
|
|
436
|
+
content: {
|
|
437
|
+
type: "string",
|
|
438
|
+
description: "What was corrected and how to do it correctly"
|
|
439
|
+
},
|
|
440
|
+
tool: {
|
|
441
|
+
type: "string",
|
|
442
|
+
description: "Related tool (if applicable)"
|
|
443
|
+
}
|
|
444
|
+
},
|
|
445
|
+
required: ["title", "content"]
|
|
446
|
+
}
|
|
447
|
+
},
|
|
448
|
+
{
|
|
449
|
+
name: "record_decision",
|
|
450
|
+
description: "Record an important decision made during this session",
|
|
451
|
+
inputSchema: {
|
|
452
|
+
type: "object",
|
|
453
|
+
properties: {
|
|
454
|
+
title: {
|
|
455
|
+
type: "string",
|
|
456
|
+
description: "Brief title of the decision"
|
|
457
|
+
},
|
|
458
|
+
content: {
|
|
459
|
+
type: "string",
|
|
460
|
+
description: "The decision and its reasoning"
|
|
461
|
+
},
|
|
462
|
+
file: {
|
|
463
|
+
type: "string",
|
|
464
|
+
description: "Related file path (if applicable)"
|
|
465
|
+
}
|
|
466
|
+
},
|
|
467
|
+
required: ["title", "content"]
|
|
468
|
+
}
|
|
469
|
+
},
|
|
470
|
+
{
|
|
471
|
+
name: "get_session_learnings",
|
|
472
|
+
description: "Get all learnings and corrections from current or specified session",
|
|
473
|
+
inputSchema: {
|
|
474
|
+
type: "object",
|
|
475
|
+
properties: {
|
|
476
|
+
session_id: {
|
|
477
|
+
type: "string",
|
|
478
|
+
description: "Session ID (defaults to current)"
|
|
479
|
+
}
|
|
480
|
+
}
|
|
481
|
+
}
|
|
482
|
+
},
|
|
483
|
+
{
|
|
484
|
+
name: "promote_learning",
|
|
485
|
+
description: "Promote a session learning to a permanent skill",
|
|
486
|
+
inputSchema: {
|
|
487
|
+
type: "object",
|
|
488
|
+
properties: {
|
|
489
|
+
entry_id: {
|
|
490
|
+
type: "string",
|
|
491
|
+
description: "Journal entry ID to promote"
|
|
492
|
+
},
|
|
493
|
+
category: {
|
|
494
|
+
type: "string",
|
|
495
|
+
enum: [
|
|
496
|
+
"tool",
|
|
497
|
+
"workflow",
|
|
498
|
+
"correction",
|
|
499
|
+
"pattern",
|
|
500
|
+
"preference",
|
|
501
|
+
"pitfall",
|
|
502
|
+
"optimization"
|
|
503
|
+
],
|
|
504
|
+
description: "Skill category"
|
|
505
|
+
},
|
|
506
|
+
priority: {
|
|
507
|
+
type: "string",
|
|
508
|
+
enum: ["critical", "high", "medium", "low"],
|
|
509
|
+
default: "medium",
|
|
510
|
+
description: "Skill priority"
|
|
511
|
+
}
|
|
512
|
+
},
|
|
513
|
+
required: ["entry_id", "category"]
|
|
514
|
+
}
|
|
515
|
+
},
|
|
516
|
+
{
|
|
517
|
+
name: "get_skill_metrics",
|
|
518
|
+
description: "Get metrics about stored skills and learnings",
|
|
519
|
+
inputSchema: {
|
|
520
|
+
type: "object",
|
|
521
|
+
properties: {}
|
|
522
|
+
}
|
|
523
|
+
}
|
|
524
|
+
];
|
|
525
|
+
export {
|
|
526
|
+
SKILL_TOOL_DEFINITIONS,
|
|
527
|
+
SkillHandlers
|
|
528
|
+
};
|
|
529
|
+
//# sourceMappingURL=skill-handlers.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../../src/integrations/mcp/handlers/skill-handlers.ts"],
|
|
4
|
+
"sourcesContent": ["/**\n * MCP Skill Handlers\n * Handlers for persistent agent learning and skill operations\n */\n\nimport { logger } from '../../../core/monitoring/logger.js';\n\n// Type-safe environment variable access\nfunction getEnv(key: string, defaultValue?: string): string {\n const value = process.env[key];\n if (value === undefined) {\n if (defaultValue !== undefined) return defaultValue;\n throw new Error(`Environment variable ${key} is required`);\n }\n return value;\n}\n\nfunction getOptionalEnv(key: string): string | undefined {\n return process.env[key];\n}\n\nimport {\n SkillStorageService,\n getSkillStorage,\n getDefaultUserId,\n Skill,\n SkillCategory,\n SkillPriority,\n JournalEntryType,\n SkillQuery,\n} from '../../../core/skills/index.js';\n\nexport interface SkillHandlerContext {\n sessionId?: string;\n projectId?: string;\n userId?: string;\n}\n\nexport class SkillHandlers {\n private skillStorage: SkillStorageService | null = null;\n private userId: string;\n\n constructor(\n private redisUrl?: string,\n userId?: string\n ) {\n this.userId = userId || getDefaultUserId();\n }\n\n /**\n * Lazy initialization of skill storage\n */\n private getStorage(): SkillStorageService {\n if (!this.skillStorage) {\n const url = this.redisUrl || process.env['REDIS_URL'];\n if (!url) {\n throw new Error('REDIS_URL not configured for skill storage');\n }\n this.skillStorage = getSkillStorage({\n redisUrl: url,\n userId: this.userId,\n });\n }\n return this.skillStorage;\n }\n\n /**\n * Get current user ID\n */\n getUserId(): string {\n return this.userId;\n }\n\n /**\n * Check if skill storage is available\n */\n isAvailable(): boolean {\n return !!(this.redisUrl || process.env['REDIS_URL']);\n }\n\n // ============================================================\n // SKILL OPERATIONS\n // ============================================================\n\n /**\n * Record a new skill/learning\n */\n async recordSkill(\n args: {\n content: string;\n category: string;\n priority?: string;\n tool?: string;\n tags?: string[];\n source?: string;\n },\n context: SkillHandlerContext\n ): Promise<{ success: boolean; skill?: Skill; error?: string }> {\n try {\n const storage = this.getStorage();\n\n const skill = await storage.createSkill({\n content: args.content,\n category: args.category as SkillCategory,\n priority: (args.priority || 'medium') as SkillPriority,\n tool: args.tool,\n tags: args.tags || [],\n source: (args.source || 'observation') as Skill['source'],\n sessionId: context.sessionId,\n });\n\n logger.info('Recorded skill via MCP', {\n skillId: skill.id,\n category: skill.category,\n });\n\n return { success: true, skill };\n } catch (error: unknown) {\n const message = error instanceof Error ? error.message : 'Unknown error';\n logger.error('Failed to record skill', { error: message });\n return { success: false, error: message };\n }\n }\n\n /**\n * Get relevant skills for current context\n */\n async getRelevantSkills(args: {\n tool?: string;\n language?: string;\n framework?: string;\n tags?: string[];\n limit?: number;\n }): Promise<{ success: boolean; skills?: Skill[]; error?: string }> {\n try {\n const storage = this.getStorage();\n\n const skills = await storage.getRelevantSkills({\n tool: args.tool,\n language: args.language,\n framework: args.framework,\n tags: args.tags,\n });\n\n const limited = args.limit ? skills.slice(0, args.limit) : skills;\n\n return { success: true, skills: limited };\n } catch (error: unknown) {\n const message = error instanceof Error ? error.message : 'Unknown error';\n logger.error('Failed to get relevant skills', { error: message });\n return { success: false, error: message };\n }\n }\n\n /**\n * Query skills with filters\n */\n async querySkills(args: {\n categories?: string[];\n priorities?: string[];\n tool?: string;\n tags?: string[];\n minValidatedCount?: number;\n limit?: number;\n sortBy?: string;\n }): Promise<{\n success: boolean;\n skills?: Skill[];\n total?: number;\n error?: string;\n }> {\n try {\n const storage = this.getStorage();\n\n const query: SkillQuery = {\n categories: args.categories as SkillCategory[],\n priorities: args.priorities as SkillPriority[],\n tool: args.tool,\n tags: args.tags,\n minValidatedCount: args.minValidatedCount,\n limit: args.limit || 50,\n offset: 0,\n sortBy: (args.sortBy || 'priority') as SkillQuery['sortBy'],\n sortOrder: 'desc',\n };\n\n const skills = await storage.querySkills(query);\n\n return { success: true, skills, total: skills.length };\n } catch (error: unknown) {\n const message = error instanceof Error ? error.message : 'Unknown error';\n logger.error('Failed to query skills', { error: message });\n return { success: false, error: message };\n }\n }\n\n /**\n * Validate/reinforce a skill\n */\n async validateSkill(args: {\n skill_id: string;\n }): Promise<{ success: boolean; skill?: Skill; error?: string }> {\n try {\n const storage = this.getStorage();\n\n const skill = await storage.validateSkill(args.skill_id);\n if (!skill) {\n return { success: false, error: 'Skill not found' };\n }\n\n return { success: true, skill };\n } catch (error: unknown) {\n const message = error instanceof Error ? error.message : 'Unknown error';\n logger.error('Failed to validate skill', { error: message });\n return { success: false, error: message };\n }\n }\n\n /**\n * Update a skill\n */\n async updateSkill(args: {\n skill_id: string;\n content?: string;\n priority?: string;\n tags?: string[];\n }): Promise<{ success: boolean; skill?: Skill; error?: string }> {\n try {\n const storage = this.getStorage();\n\n const skill = await storage.updateSkill({\n id: args.skill_id,\n content: args.content,\n priority: args.priority as SkillPriority,\n tags: args.tags,\n });\n\n if (!skill) {\n return { success: false, error: 'Skill not found' };\n }\n\n return { success: true, skill };\n } catch (error: unknown) {\n const message = error instanceof Error ? error.message : 'Unknown error';\n logger.error('Failed to update skill', { error: message });\n return { success: false, error: message };\n }\n }\n\n /**\n * Delete a skill\n */\n async deleteSkill(args: {\n skill_id: string;\n }): Promise<{ success: boolean; error?: string }> {\n try {\n const storage = this.getStorage();\n\n const deleted = await storage.deleteSkill(args.skill_id);\n if (!deleted) {\n return { success: false, error: 'Skill not found' };\n }\n\n return { success: true };\n } catch (error: unknown) {\n const message = error instanceof Error ? error.message : 'Unknown error';\n logger.error('Failed to delete skill', { error: message });\n return { success: false, error: message };\n }\n }\n\n // ============================================================\n // SESSION JOURNAL OPERATIONS\n // ============================================================\n\n /**\n * Record a journal entry\n */\n async recordJournalEntry(\n args: {\n type: string;\n title: string;\n content: string;\n tool?: string;\n file?: string;\n },\n context: SkillHandlerContext\n ): Promise<{ success: boolean; entryId?: string; error?: string }> {\n try {\n const storage = this.getStorage();\n const sessionId = context.sessionId || 'default';\n\n const entry = await storage.createJournalEntry(\n sessionId,\n args.type as JournalEntryType,\n args.title,\n args.content,\n { tool: args.tool, file: args.file }\n );\n\n return { success: true, entryId: entry.id };\n } catch (error: unknown) {\n const message = error instanceof Error ? error.message : 'Unknown error';\n logger.error('Failed to record journal entry', { error: message });\n return { success: false, error: message };\n }\n }\n\n /**\n * Get session journal\n */\n async getSessionJournal(\n args: {\n session_id?: string;\n },\n context: SkillHandlerContext\n ): Promise<{ success: boolean; entries?: any[]; error?: string }> {\n try {\n const storage = this.getStorage();\n const sessionId = args.session_id || context.sessionId || 'default';\n\n const entries = await storage.getSessionJournal(sessionId);\n\n return { success: true, entries };\n } catch (error: unknown) {\n const message = error instanceof Error ? error.message : 'Unknown error';\n logger.error('Failed to get session journal', { error: message });\n return { success: false, error: message };\n }\n }\n\n /**\n * Promote a journal entry to a skill\n */\n async promoteToSkill(args: {\n entry_id: string;\n category: string;\n priority?: string;\n }): Promise<{ success: boolean; skill?: Skill; error?: string }> {\n try {\n const storage = this.getStorage();\n\n const skill = await storage.promoteToSkill(\n args.entry_id,\n args.category as SkillCategory,\n (args.priority || 'medium') as SkillPriority\n );\n\n if (!skill) {\n return { success: false, error: 'Journal entry not found' };\n }\n\n return { success: true, skill };\n } catch (error: unknown) {\n const message = error instanceof Error ? error.message : 'Unknown error';\n logger.error('Failed to promote journal entry', { error: message });\n return { success: false, error: message };\n }\n }\n\n // ============================================================\n // SESSION MANAGEMENT\n // ============================================================\n\n /**\n * Start session tracking\n */\n async startSession(args: {\n session_id: string;\n }): Promise<{ success: boolean; error?: string }> {\n try {\n const storage = this.getStorage();\n await storage.startSession(args.session_id);\n return { success: true };\n } catch (error: unknown) {\n const message = error instanceof Error ? error.message : 'Unknown error';\n logger.error('Failed to start session', { error: message });\n return { success: false, error: message };\n }\n }\n\n /**\n * End session and get summary\n */\n async endSession(args: {\n session_id: string;\n }): Promise<{ success: boolean; summary?: any; error?: string }> {\n try {\n const storage = this.getStorage();\n const summary = await storage.endSession(args.session_id);\n\n if (!summary) {\n return { success: false, error: 'Session not found' };\n }\n\n return { success: true, summary };\n } catch (error: unknown) {\n const message = error instanceof Error ? error.message : 'Unknown error';\n logger.error('Failed to end session', { error: message });\n return { success: false, error: message };\n }\n }\n\n // ============================================================\n // KNOWLEDGE MANAGEMENT\n // ============================================================\n\n /**\n * Get promotion candidates\n */\n async getPromotionCandidates(): Promise<{\n success: boolean;\n skills?: Skill[];\n error?: string;\n }> {\n try {\n const storage = this.getStorage();\n const skills = await storage.getPromotionCandidates();\n return { success: true, skills };\n } catch (error: unknown) {\n const message = error instanceof Error ? error.message : 'Unknown error';\n logger.error('Failed to get promotion candidates', { error: message });\n return { success: false, error: message };\n }\n }\n\n /**\n * Promote skill priority\n */\n async promoteSkillPriority(args: {\n skill_id: string;\n }): Promise<{ success: boolean; skill?: Skill; error?: string }> {\n try {\n const storage = this.getStorage();\n const skill = await storage.promoteSkill(args.skill_id);\n\n if (!skill) {\n return { success: false, error: 'Skill not found' };\n }\n\n return { success: true, skill };\n } catch (error: unknown) {\n const message = error instanceof Error ? error.message : 'Unknown error';\n logger.error('Failed to promote skill priority', { error: message });\n return { success: false, error: message };\n }\n }\n\n /**\n * Archive stale skills\n */\n async archiveStaleSkills(args: {\n days_threshold?: number;\n }): Promise<{ success: boolean; archivedCount?: number; error?: string }> {\n try {\n const storage = this.getStorage();\n const count = await storage.archiveStaleSkills(args.days_threshold || 90);\n return { success: true, archivedCount: count };\n } catch (error: unknown) {\n const message = error instanceof Error ? error.message : 'Unknown error';\n logger.error('Failed to archive stale skills', { error: message });\n return { success: false, error: message };\n }\n }\n\n /**\n * Get skill storage metrics\n */\n async getSkillMetrics(): Promise<{\n success: boolean;\n metrics?: any;\n error?: string;\n }> {\n try {\n const storage = this.getStorage();\n const metrics = await storage.getMetrics();\n return { success: true, metrics };\n } catch (error: unknown) {\n const message = error instanceof Error ? error.message : 'Unknown error';\n logger.error('Failed to get skill metrics', { error: message });\n return { success: false, error: message };\n }\n }\n}\n\n// ============================================================\n// TOOL DEFINITIONS FOR SKILLS\n// ============================================================\n\nexport const SKILL_TOOL_DEFINITIONS = [\n {\n name: 'record_skill',\n description:\n 'Record a new learning, pattern, or skill to remember across sessions',\n inputSchema: {\n type: 'object' as const,\n properties: {\n content: {\n type: 'string',\n description: 'The skill/learning content to remember',\n },\n category: {\n type: 'string',\n enum: [\n 'tool',\n 'workflow',\n 'correction',\n 'pattern',\n 'preference',\n 'pitfall',\n 'optimization',\n ],\n description: 'Category of the skill',\n },\n priority: {\n type: 'string',\n enum: ['critical', 'high', 'medium', 'low'],\n default: 'medium',\n description: 'How important this skill is',\n },\n tool: {\n type: 'string',\n description: 'Related tool name (if applicable)',\n },\n tags: {\n type: 'array',\n items: { type: 'string' },\n description: 'Tags for categorization',\n },\n },\n required: ['content', 'category'],\n },\n },\n {\n name: 'get_relevant_skills',\n description:\n 'Get skills relevant to current context (tool, language, etc.)',\n inputSchema: {\n type: 'object' as const,\n properties: {\n tool: {\n type: 'string',\n description: 'Filter by tool name',\n },\n language: {\n type: 'string',\n description: 'Filter by programming language',\n },\n framework: {\n type: 'string',\n description: 'Filter by framework',\n },\n limit: {\n type: 'number',\n default: 20,\n description: 'Maximum skills to return',\n },\n },\n },\n },\n {\n name: 'validate_skill',\n description:\n 'Mark a skill as validated/reinforced (increases its importance)',\n inputSchema: {\n type: 'object' as const,\n properties: {\n skill_id: {\n type: 'string',\n description: 'ID of the skill to validate',\n },\n },\n required: ['skill_id'],\n },\n },\n {\n name: 'record_correction',\n description:\n 'Record a user correction to remember and apply in future sessions',\n inputSchema: {\n type: 'object' as const,\n properties: {\n title: {\n type: 'string',\n description: 'Brief title of the correction',\n },\n content: {\n type: 'string',\n description: 'What was corrected and how to do it correctly',\n },\n tool: {\n type: 'string',\n description: 'Related tool (if applicable)',\n },\n },\n required: ['title', 'content'],\n },\n },\n {\n name: 'record_decision',\n description: 'Record an important decision made during this session',\n inputSchema: {\n type: 'object' as const,\n properties: {\n title: {\n type: 'string',\n description: 'Brief title of the decision',\n },\n content: {\n type: 'string',\n description: 'The decision and its reasoning',\n },\n file: {\n type: 'string',\n description: 'Related file path (if applicable)',\n },\n },\n required: ['title', 'content'],\n },\n },\n {\n name: 'get_session_learnings',\n description:\n 'Get all learnings and corrections from current or specified session',\n inputSchema: {\n type: 'object' as const,\n properties: {\n session_id: {\n type: 'string',\n description: 'Session ID (defaults to current)',\n },\n },\n },\n },\n {\n name: 'promote_learning',\n description: 'Promote a session learning to a permanent skill',\n inputSchema: {\n type: 'object' as const,\n properties: {\n entry_id: {\n type: 'string',\n description: 'Journal entry ID to promote',\n },\n category: {\n type: 'string',\n enum: [\n 'tool',\n 'workflow',\n 'correction',\n 'pattern',\n 'preference',\n 'pitfall',\n 'optimization',\n ],\n description: 'Skill category',\n },\n priority: {\n type: 'string',\n enum: ['critical', 'high', 'medium', 'low'],\n default: 'medium',\n description: 'Skill priority',\n },\n },\n required: ['entry_id', 'category'],\n },\n },\n {\n name: 'get_skill_metrics',\n description: 'Get metrics about stored skills and learnings',\n inputSchema: {\n type: 'object' as const,\n properties: {},\n },\n },\n];\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|