@stackmemoryai/stackmemory 0.5.57 → 0.5.59

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (611) hide show
  1. package/bin/codex-smd +6 -0
  2. package/dist/cli/codex-sm-danger.js +21 -0
  3. package/dist/cli/codex-sm-danger.js.map +7 -0
  4. package/dist/cli/commands/handoff.js +33 -3
  5. package/dist/cli/commands/handoff.js.map +2 -2
  6. package/dist/cli/commands/search.js +20 -3
  7. package/dist/cli/commands/search.js.map +2 -2
  8. package/dist/core/database/sqlite-adapter.js +13 -3
  9. package/dist/core/database/sqlite-adapter.js.map +2 -2
  10. package/dist/core/errors/error-utils.js +208 -0
  11. package/dist/core/errors/error-utils.js.map +7 -0
  12. package/dist/core/errors/index.js +13 -4
  13. package/dist/core/errors/index.js.map +2 -2
  14. package/dist/core/merge/unified-merge-resolver.js +303 -0
  15. package/dist/core/merge/unified-merge-resolver.js.map +7 -0
  16. package/dist/core/monitoring/logger.js +61 -9
  17. package/dist/core/monitoring/logger.js.map +2 -2
  18. package/dist/core/security/index.js +35 -0
  19. package/dist/core/security/index.js.map +7 -0
  20. package/dist/core/security/input-sanitizer.js +321 -0
  21. package/dist/core/security/input-sanitizer.js.map +7 -0
  22. package/dist/core/session/enhanced-handoff.js +136 -2
  23. package/dist/core/session/enhanced-handoff.js.map +3 -3
  24. package/dist/integrations/linear/client.js +5 -1
  25. package/dist/integrations/linear/client.js.map +2 -2
  26. package/dist/integrations/mcp/remote-server.js +27 -36
  27. package/dist/integrations/mcp/remote-server.js.map +2 -2
  28. package/dist/integrations/mcp/server.js +44 -29
  29. package/dist/integrations/mcp/server.js.map +3 -3
  30. package/dist/scripts/benchmark-performance.js +48 -0
  31. package/dist/scripts/benchmark-performance.js.map +7 -0
  32. package/dist/scripts/check-redis.js +42 -0
  33. package/dist/scripts/check-redis.js.map +7 -0
  34. package/dist/scripts/initialize.js +116 -0
  35. package/dist/scripts/initialize.js.map +7 -0
  36. package/dist/scripts/list-linear-tasks.js +124 -0
  37. package/dist/scripts/list-linear-tasks.js.map +7 -0
  38. package/dist/scripts/measure-handoff-impact.js +340 -0
  39. package/dist/scripts/measure-handoff-impact.js.map +7 -0
  40. package/dist/scripts/query-chromadb.js +160 -0
  41. package/dist/scripts/query-chromadb.js.map +7 -0
  42. package/dist/scripts/show-linear-summary.js +119 -0
  43. package/dist/scripts/show-linear-summary.js.map +7 -0
  44. package/dist/scripts/simple-swarm-demo.js +90 -0
  45. package/dist/scripts/simple-swarm-demo.js.map +7 -0
  46. package/dist/scripts/status.js +155 -0
  47. package/dist/scripts/status.js.map +7 -0
  48. package/dist/scripts/test-chromadb-sync.js +192 -0
  49. package/dist/scripts/test-chromadb-sync.js.map +7 -0
  50. package/dist/scripts/test-ralph-iteration-fix.js +86 -0
  51. package/dist/scripts/test-ralph-iteration-fix.js.map +7 -0
  52. package/dist/scripts/test-ralph-iterations.js +121 -0
  53. package/dist/scripts/test-ralph-iterations.js.map +7 -0
  54. package/dist/scripts/test-redis-storage.js +389 -0
  55. package/dist/scripts/test-redis-storage.js.map +7 -0
  56. package/dist/scripts/test-simple-ralph-state-sync.js +115 -0
  57. package/dist/scripts/test-simple-ralph-state-sync.js.map +7 -0
  58. package/dist/scripts/test-swarm-fixes.js +125 -0
  59. package/dist/scripts/test-swarm-fixes.js.map +7 -0
  60. package/dist/scripts/test-swarm-tui.js +23 -0
  61. package/dist/scripts/test-swarm-tui.js.map +7 -0
  62. package/dist/scripts/test-tui-shortcuts.js +52 -0
  63. package/dist/scripts/test-tui-shortcuts.js.map +7 -0
  64. package/dist/scripts/validate-tui-shortcuts.js +60 -0
  65. package/dist/scripts/validate-tui-shortcuts.js.map +7 -0
  66. package/dist/src/agents/core/agent-task-manager.js +527 -0
  67. package/dist/src/agents/core/agent-task-manager.js.map +7 -0
  68. package/dist/src/agents/verifiers/base-verifier.js +133 -0
  69. package/dist/src/agents/verifiers/base-verifier.js.map +7 -0
  70. package/dist/src/agents/verifiers/formatter-verifier.js +130 -0
  71. package/dist/src/agents/verifiers/formatter-verifier.js.map +7 -0
  72. package/dist/src/agents/verifiers/llm-judge.js +252 -0
  73. package/dist/src/agents/verifiers/llm-judge.js.map +7 -0
  74. package/dist/src/cli/auto-detect.js +321 -0
  75. package/dist/src/cli/auto-detect.js.map +7 -0
  76. package/dist/src/cli/claude-sm-danger.js +21 -0
  77. package/dist/src/cli/claude-sm-danger.js.map +7 -0
  78. package/dist/src/cli/claude-sm.js +1156 -0
  79. package/dist/src/cli/claude-sm.js.map +7 -0
  80. package/dist/src/cli/codex-sm-danger.js +21 -0
  81. package/dist/src/cli/codex-sm-danger.js.map +7 -0
  82. package/dist/src/cli/codex-sm.js +349 -0
  83. package/dist/src/cli/codex-sm.js.map +7 -0
  84. package/dist/src/cli/commands/api.js +232 -0
  85. package/dist/src/cli/commands/api.js.map +7 -0
  86. package/dist/src/cli/commands/auto-background.js +180 -0
  87. package/dist/src/cli/commands/auto-background.js.map +7 -0
  88. package/dist/src/cli/commands/cleanup-processes.js +68 -0
  89. package/dist/src/cli/commands/cleanup-processes.js.map +7 -0
  90. package/dist/src/cli/commands/clear.js +202 -0
  91. package/dist/src/cli/commands/clear.js.map +7 -0
  92. package/dist/src/cli/commands/config.js +445 -0
  93. package/dist/src/cli/commands/config.js.map +7 -0
  94. package/dist/src/cli/commands/context-rehydrate.js +751 -0
  95. package/dist/src/cli/commands/context-rehydrate.js.map +7 -0
  96. package/dist/src/cli/commands/context.js +343 -0
  97. package/dist/src/cli/commands/context.js.map +7 -0
  98. package/dist/src/cli/commands/daemon.js +392 -0
  99. package/dist/src/cli/commands/daemon.js.map +7 -0
  100. package/dist/src/cli/commands/dashboard.js +210 -0
  101. package/dist/src/cli/commands/dashboard.js.map +7 -0
  102. package/dist/src/cli/commands/db.js +147 -0
  103. package/dist/src/cli/commands/db.js.map +7 -0
  104. package/dist/src/cli/commands/decision.js +266 -0
  105. package/dist/src/cli/commands/decision.js.map +7 -0
  106. package/dist/src/cli/commands/discovery.js +279 -0
  107. package/dist/src/cli/commands/discovery.js.map +7 -0
  108. package/dist/src/cli/commands/handoff.js +624 -0
  109. package/dist/src/cli/commands/handoff.js.map +7 -0
  110. package/dist/src/cli/commands/hooks.js +298 -0
  111. package/dist/src/cli/commands/hooks.js.map +7 -0
  112. package/dist/src/cli/commands/linear.js +529 -0
  113. package/dist/src/cli/commands/linear.js.map +7 -0
  114. package/dist/src/cli/commands/log.js +169 -0
  115. package/dist/src/cli/commands/log.js.map +7 -0
  116. package/dist/src/cli/commands/login.js +172 -0
  117. package/dist/src/cli/commands/login.js.map +7 -0
  118. package/dist/src/cli/commands/migrate.js +240 -0
  119. package/dist/src/cli/commands/migrate.js.map +7 -0
  120. package/dist/src/cli/commands/model.js +533 -0
  121. package/dist/src/cli/commands/model.js.map +7 -0
  122. package/dist/src/cli/commands/onboard.js +536 -0
  123. package/dist/src/cli/commands/onboard.js.map +7 -0
  124. package/dist/src/cli/commands/projects.js +199 -0
  125. package/dist/src/cli/commands/projects.js.map +7 -0
  126. package/dist/src/cli/commands/ralph.js +909 -0
  127. package/dist/src/cli/commands/ralph.js.map +7 -0
  128. package/dist/src/cli/commands/retrieval.js +248 -0
  129. package/dist/src/cli/commands/retrieval.js.map +7 -0
  130. package/dist/src/cli/commands/search.js +173 -0
  131. package/dist/src/cli/commands/search.js.map +7 -0
  132. package/dist/src/cli/commands/service.js +749 -0
  133. package/dist/src/cli/commands/service.js.map +7 -0
  134. package/dist/src/cli/commands/session.js +200 -0
  135. package/dist/src/cli/commands/session.js.map +7 -0
  136. package/dist/src/cli/commands/settings.js +306 -0
  137. package/dist/src/cli/commands/settings.js.map +7 -0
  138. package/dist/src/cli/commands/setup.js +701 -0
  139. package/dist/src/cli/commands/setup.js.map +7 -0
  140. package/dist/src/cli/commands/shell.js +249 -0
  141. package/dist/src/cli/commands/shell.js.map +7 -0
  142. package/dist/src/cli/commands/signup.js +50 -0
  143. package/dist/src/cli/commands/signup.js.map +7 -0
  144. package/dist/src/cli/commands/skills.js +470 -0
  145. package/dist/src/cli/commands/skills.js.map +7 -0
  146. package/dist/src/cli/commands/sms-notify.js +795 -0
  147. package/dist/src/cli/commands/sms-notify.js.map +7 -0
  148. package/dist/src/cli/commands/storage-tier.js +183 -0
  149. package/dist/src/cli/commands/storage-tier.js.map +7 -0
  150. package/dist/src/cli/commands/sweep.js +249 -0
  151. package/dist/src/cli/commands/sweep.js.map +7 -0
  152. package/dist/src/cli/commands/tasks.js +213 -0
  153. package/dist/src/cli/commands/tasks.js.map +7 -0
  154. package/dist/src/cli/commands/worktree.js +319 -0
  155. package/dist/src/cli/commands/worktree.js.map +7 -0
  156. package/dist/src/cli/index.js +594 -0
  157. package/dist/src/cli/index.js.map +7 -0
  158. package/dist/src/cli/opencode-sm.js +448 -0
  159. package/dist/src/cli/opencode-sm.js.map +7 -0
  160. package/dist/src/cli/utils/viewer.js +96 -0
  161. package/dist/src/cli/utils/viewer.js.map +7 -0
  162. package/dist/src/core/config/config-manager.js +398 -0
  163. package/dist/src/core/config/config-manager.js.map +7 -0
  164. package/dist/src/core/config/feature-flags.js +76 -0
  165. package/dist/src/core/config/feature-flags.js.map +7 -0
  166. package/dist/src/core/config/storage-config.js +115 -0
  167. package/dist/src/core/config/storage-config.js.map +7 -0
  168. package/dist/src/core/config/types.js +144 -0
  169. package/dist/src/core/config/types.js.map +7 -0
  170. package/dist/src/core/context/auto-context.js +80 -0
  171. package/dist/src/core/context/auto-context.js.map +7 -0
  172. package/dist/src/core/context/dual-stack-manager.js +870 -0
  173. package/dist/src/core/context/dual-stack-manager.js.map +7 -0
  174. package/dist/src/core/context/enhanced-rehydration.js +994 -0
  175. package/dist/src/core/context/enhanced-rehydration.js.map +7 -0
  176. package/dist/src/core/context/frame-database.js +479 -0
  177. package/dist/src/core/context/frame-database.js.map +7 -0
  178. package/dist/src/core/context/frame-digest.js +250 -0
  179. package/dist/src/core/context/frame-digest.js.map +7 -0
  180. package/dist/src/core/context/frame-handoff-manager.js +778 -0
  181. package/dist/src/core/context/frame-handoff-manager.js.map +7 -0
  182. package/dist/src/core/context/frame-lifecycle-hooks.js +119 -0
  183. package/dist/src/core/context/frame-lifecycle-hooks.js.map +7 -0
  184. package/dist/src/core/context/frame-recovery.js +302 -0
  185. package/dist/src/core/context/frame-recovery.js.map +7 -0
  186. package/dist/src/core/context/frame-stack.js +314 -0
  187. package/dist/src/core/context/frame-stack.js.map +7 -0
  188. package/dist/src/core/context/frame-types.js +5 -0
  189. package/dist/src/core/context/frame-types.js.map +7 -0
  190. package/dist/src/core/context/index.js +25 -0
  191. package/dist/src/core/context/index.js.map +7 -0
  192. package/dist/src/core/context/permission-manager.js +185 -0
  193. package/dist/src/core/context/permission-manager.js.map +7 -0
  194. package/dist/src/core/context/recursive-context-manager.js +592 -0
  195. package/dist/src/core/context/recursive-context-manager.js.map +7 -0
  196. package/dist/src/core/context/refactored-frame-manager.js +754 -0
  197. package/dist/src/core/context/refactored-frame-manager.js.map +7 -0
  198. package/dist/src/core/context/shared-context-layer.js +621 -0
  199. package/dist/src/core/context/shared-context-layer.js.map +7 -0
  200. package/dist/src/core/context/stack-merge-resolver.js +749 -0
  201. package/dist/src/core/context/stack-merge-resolver.js.map +7 -0
  202. package/dist/src/core/context/validation.js +130 -0
  203. package/dist/src/core/context/validation.js.map +7 -0
  204. package/dist/src/core/database/batch-operations.js +384 -0
  205. package/dist/src/core/database/batch-operations.js.map +7 -0
  206. package/dist/src/core/database/connection-pool.js +330 -0
  207. package/dist/src/core/database/connection-pool.js.map +7 -0
  208. package/dist/src/core/database/database-adapter.js +60 -0
  209. package/dist/src/core/database/database-adapter.js.map +7 -0
  210. package/dist/src/core/database/migration-manager.js +614 -0
  211. package/dist/src/core/database/migration-manager.js.map +7 -0
  212. package/dist/src/core/database/query-cache.js +298 -0
  213. package/dist/src/core/database/query-cache.js.map +7 -0
  214. package/dist/src/core/database/query-router.js +430 -0
  215. package/dist/src/core/database/query-router.js.map +7 -0
  216. package/dist/src/core/database/sqlite-adapter.js +738 -0
  217. package/dist/src/core/database/sqlite-adapter.js.map +7 -0
  218. package/dist/src/core/digest/enhanced-hybrid-digest.js +277 -0
  219. package/dist/src/core/digest/enhanced-hybrid-digest.js.map +7 -0
  220. package/dist/src/core/digest/frame-digest-integration.js +176 -0
  221. package/dist/src/core/digest/frame-digest-integration.js.map +7 -0
  222. package/dist/src/core/digest/hybrid-digest-generator.js +553 -0
  223. package/dist/src/core/digest/hybrid-digest-generator.js.map +7 -0
  224. package/dist/src/core/digest/index.js +9 -0
  225. package/dist/src/core/digest/index.js.map +7 -0
  226. package/dist/src/core/digest/types.js +25 -0
  227. package/dist/src/core/digest/types.js.map +7 -0
  228. package/dist/src/core/errors/error-utils.js +208 -0
  229. package/dist/src/core/errors/error-utils.js.map +7 -0
  230. package/dist/src/core/errors/index.js +521 -0
  231. package/dist/src/core/errors/index.js.map +7 -0
  232. package/dist/src/core/errors/recovery.js +269 -0
  233. package/dist/src/core/errors/recovery.js.map +7 -0
  234. package/dist/src/core/execution/parallel-executor.js +258 -0
  235. package/dist/src/core/execution/parallel-executor.js.map +7 -0
  236. package/dist/src/core/frame/workflow-templates.js +319 -0
  237. package/dist/src/core/frame/workflow-templates.js.map +7 -0
  238. package/dist/src/core/merge/conflict-detector.js +431 -0
  239. package/dist/src/core/merge/conflict-detector.js.map +7 -0
  240. package/dist/src/core/merge/index.js +9 -0
  241. package/dist/src/core/merge/index.js.map +7 -0
  242. package/dist/src/core/merge/resolution-engine.js +558 -0
  243. package/dist/src/core/merge/resolution-engine.js.map +7 -0
  244. package/dist/src/core/merge/stack-diff.js +532 -0
  245. package/dist/src/core/merge/stack-diff.js.map +7 -0
  246. package/dist/src/core/merge/types.js +5 -0
  247. package/dist/src/core/merge/types.js.map +7 -0
  248. package/dist/src/core/merge/unified-merge-resolver.js +303 -0
  249. package/dist/src/core/merge/unified-merge-resolver.js.map +7 -0
  250. package/dist/src/core/models/fallback-monitor.js +232 -0
  251. package/dist/src/core/models/fallback-monitor.js.map +7 -0
  252. package/dist/src/core/models/model-router.js +340 -0
  253. package/dist/src/core/models/model-router.js.map +7 -0
  254. package/dist/src/core/monitoring/error-handler.js +49 -0
  255. package/dist/src/core/monitoring/error-handler.js.map +7 -0
  256. package/dist/src/core/monitoring/logger.js +202 -0
  257. package/dist/src/core/monitoring/logger.js.map +7 -0
  258. package/dist/src/core/monitoring/metrics.js +172 -0
  259. package/dist/src/core/monitoring/metrics.js.map +7 -0
  260. package/dist/src/core/monitoring/progress-tracker.js +189 -0
  261. package/dist/src/core/monitoring/progress-tracker.js.map +7 -0
  262. package/dist/src/core/monitoring/session-monitor.js +300 -0
  263. package/dist/src/core/monitoring/session-monitor.js.map +7 -0
  264. package/dist/src/core/performance/context-cache.js +273 -0
  265. package/dist/src/core/performance/context-cache.js.map +7 -0
  266. package/dist/src/core/performance/index.js +11 -0
  267. package/dist/src/core/performance/index.js.map +7 -0
  268. package/dist/src/core/performance/lazy-context-loader.js +327 -0
  269. package/dist/src/core/performance/lazy-context-loader.js.map +7 -0
  270. package/dist/src/core/performance/monitor.js +221 -0
  271. package/dist/src/core/performance/monitor.js.map +7 -0
  272. package/dist/src/core/performance/optimized-frame-context.js +345 -0
  273. package/dist/src/core/performance/optimized-frame-context.js.map +7 -0
  274. package/dist/src/core/performance/performance-benchmark.js +277 -0
  275. package/dist/src/core/performance/performance-benchmark.js.map +7 -0
  276. package/dist/src/core/performance/performance-profiler.js +370 -0
  277. package/dist/src/core/performance/performance-profiler.js.map +7 -0
  278. package/dist/src/core/performance/streaming-jsonl-parser.js +195 -0
  279. package/dist/src/core/performance/streaming-jsonl-parser.js.map +7 -0
  280. package/dist/src/core/persistence/postgres-adapter.js +349 -0
  281. package/dist/src/core/persistence/postgres-adapter.js.map +7 -0
  282. package/dist/src/core/projects/project-isolation.js +201 -0
  283. package/dist/src/core/projects/project-isolation.js.map +7 -0
  284. package/dist/src/core/projects/project-manager.js +697 -0
  285. package/dist/src/core/projects/project-manager.js.map +7 -0
  286. package/dist/src/core/query/query-parser.js +370 -0
  287. package/dist/src/core/query/query-parser.js.map +7 -0
  288. package/dist/src/core/query/query-templates.js +321 -0
  289. package/dist/src/core/query/query-templates.js.map +7 -0
  290. package/dist/src/core/retrieval/context-retriever.js +479 -0
  291. package/dist/src/core/retrieval/context-retriever.js.map +7 -0
  292. package/dist/src/core/retrieval/index.js +8 -0
  293. package/dist/src/core/retrieval/index.js.map +7 -0
  294. package/dist/src/core/retrieval/llm-context-retrieval.js +613 -0
  295. package/dist/src/core/retrieval/llm-context-retrieval.js.map +7 -0
  296. package/dist/src/core/retrieval/llm-provider.js +151 -0
  297. package/dist/src/core/retrieval/llm-provider.js.map +7 -0
  298. package/dist/src/core/retrieval/retrieval-audit.js +236 -0
  299. package/dist/src/core/retrieval/retrieval-audit.js.map +7 -0
  300. package/dist/src/core/retrieval/summary-generator.js +589 -0
  301. package/dist/src/core/retrieval/summary-generator.js.map +7 -0
  302. package/dist/src/core/retrieval/types.js +21 -0
  303. package/dist/src/core/retrieval/types.js.map +7 -0
  304. package/dist/src/core/security/index.js +35 -0
  305. package/dist/src/core/security/index.js.map +7 -0
  306. package/dist/src/core/security/input-sanitizer.js +321 -0
  307. package/dist/src/core/security/input-sanitizer.js.map +7 -0
  308. package/dist/src/core/session/clear-survival.js +465 -0
  309. package/dist/src/core/session/clear-survival.js.map +7 -0
  310. package/dist/src/core/session/enhanced-handoff.js +792 -0
  311. package/dist/src/core/session/enhanced-handoff.js.map +7 -0
  312. package/dist/src/core/session/handoff-generator.js +343 -0
  313. package/dist/src/core/session/handoff-generator.js.map +7 -0
  314. package/dist/src/core/session/index.js +15 -0
  315. package/dist/src/core/session/index.js.map +7 -0
  316. package/dist/src/core/session/session-manager.js +347 -0
  317. package/dist/src/core/session/session-manager.js.map +7 -0
  318. package/dist/src/core/skills/index.js +7 -0
  319. package/dist/src/core/skills/index.js.map +7 -0
  320. package/dist/src/core/skills/skill-storage.js +764 -0
  321. package/dist/src/core/skills/skill-storage.js.map +7 -0
  322. package/dist/src/core/skills/types.js +193 -0
  323. package/dist/src/core/skills/types.js.map +7 -0
  324. package/dist/src/core/storage/chromadb-adapter.js +354 -0
  325. package/dist/src/core/storage/chromadb-adapter.js.map +7 -0
  326. package/dist/src/core/storage/infinite-storage.js +510 -0
  327. package/dist/src/core/storage/infinite-storage.js.map +7 -0
  328. package/dist/src/core/storage/remote-storage.js +489 -0
  329. package/dist/src/core/storage/remote-storage.js.map +7 -0
  330. package/dist/src/core/storage/two-tier-storage.js +766 -0
  331. package/dist/src/core/storage/two-tier-storage.js.map +7 -0
  332. package/dist/src/core/trace/cli-trace-wrapper.js +132 -0
  333. package/dist/src/core/trace/cli-trace-wrapper.js.map +7 -0
  334. package/dist/src/core/trace/db-trace-wrapper.js +247 -0
  335. package/dist/src/core/trace/db-trace-wrapper.js.map +7 -0
  336. package/dist/src/core/trace/debug-trace.js +417 -0
  337. package/dist/src/core/trace/debug-trace.js.map +7 -0
  338. package/dist/src/core/trace/index.js +109 -0
  339. package/dist/src/core/trace/index.js.map +7 -0
  340. package/dist/src/core/trace/linear-api-wrapper.js +178 -0
  341. package/dist/src/core/trace/linear-api-wrapper.js.map +7 -0
  342. package/dist/src/core/trace/trace-detector.js +528 -0
  343. package/dist/src/core/trace/trace-detector.js.map +7 -0
  344. package/dist/src/core/trace/trace-store.js +345 -0
  345. package/dist/src/core/trace/trace-store.js.map +7 -0
  346. package/dist/src/core/trace/types.js +77 -0
  347. package/dist/src/core/trace/types.js.map +7 -0
  348. package/dist/src/core/types.js +5 -0
  349. package/dist/src/core/types.js.map +7 -0
  350. package/dist/src/core/utils/async-mutex.js +114 -0
  351. package/dist/src/core/utils/async-mutex.js.map +7 -0
  352. package/dist/src/core/utils/compression.js +83 -0
  353. package/dist/src/core/utils/compression.js.map +7 -0
  354. package/dist/src/core/utils/update-checker.js +218 -0
  355. package/dist/src/core/utils/update-checker.js.map +7 -0
  356. package/dist/src/core/worktree/worktree-manager.js +465 -0
  357. package/dist/src/core/worktree/worktree-manager.js.map +7 -0
  358. package/dist/src/daemon/daemon-config.js +149 -0
  359. package/dist/src/daemon/daemon-config.js.map +7 -0
  360. package/dist/src/daemon/services/context-service.js +122 -0
  361. package/dist/src/daemon/services/context-service.js.map +7 -0
  362. package/dist/src/daemon/services/linear-service.js +136 -0
  363. package/dist/src/daemon/services/linear-service.js.map +7 -0
  364. package/dist/src/daemon/session-daemon.js +312 -0
  365. package/dist/src/daemon/session-daemon.js.map +7 -0
  366. package/dist/src/daemon/unified-daemon.js +276 -0
  367. package/dist/src/daemon/unified-daemon.js.map +7 -0
  368. package/dist/src/features/analytics/api/analytics-api.js +287 -0
  369. package/dist/src/features/analytics/api/analytics-api.js.map +7 -0
  370. package/dist/src/features/analytics/core/analytics-service.js +282 -0
  371. package/dist/src/features/analytics/core/analytics-service.js.map +7 -0
  372. package/dist/src/features/analytics/index.js +18 -0
  373. package/dist/src/features/analytics/index.js.map +7 -0
  374. package/dist/src/features/analytics/queries/metrics-queries.js +277 -0
  375. package/dist/src/features/analytics/queries/metrics-queries.js.map +7 -0
  376. package/dist/src/features/analytics/types/metrics.js +5 -0
  377. package/dist/src/features/analytics/types/metrics.js.map +7 -0
  378. package/dist/src/features/browser/browser-mcp.js +492 -0
  379. package/dist/src/features/browser/browser-mcp.js.map +7 -0
  380. package/dist/src/features/sweep/index.js +20 -0
  381. package/dist/src/features/sweep/index.js.map +7 -0
  382. package/dist/src/features/sweep/prediction-client.js +155 -0
  383. package/dist/src/features/sweep/prediction-client.js.map +7 -0
  384. package/dist/src/features/sweep/prompt-builder.js +85 -0
  385. package/dist/src/features/sweep/prompt-builder.js.map +7 -0
  386. package/dist/src/features/sweep/pty-wrapper.js +171 -0
  387. package/dist/src/features/sweep/pty-wrapper.js.map +7 -0
  388. package/dist/src/features/sweep/state-watcher.js +87 -0
  389. package/dist/src/features/sweep/state-watcher.js.map +7 -0
  390. package/dist/src/features/sweep/status-bar.js +88 -0
  391. package/dist/src/features/sweep/status-bar.js.map +7 -0
  392. package/dist/src/features/sweep/sweep-server-manager.js +226 -0
  393. package/dist/src/features/sweep/sweep-server-manager.js.map +7 -0
  394. package/dist/src/features/sweep/tab-interceptor.js +38 -0
  395. package/dist/src/features/sweep/tab-interceptor.js.map +7 -0
  396. package/dist/src/features/sweep/types.js +18 -0
  397. package/dist/src/features/sweep/types.js.map +7 -0
  398. package/dist/src/features/tasks/linear-task-manager.js +487 -0
  399. package/dist/src/features/tasks/linear-task-manager.js.map +7 -0
  400. package/dist/src/features/tasks/task-aware-context.js +410 -0
  401. package/dist/src/features/tasks/task-aware-context.js.map +7 -0
  402. package/dist/src/features/tui/simple-monitor.js +116 -0
  403. package/dist/src/features/tui/simple-monitor.js.map +7 -0
  404. package/dist/src/features/tui/swarm-monitor.js +648 -0
  405. package/dist/src/features/tui/swarm-monitor.js.map +7 -0
  406. package/dist/src/features/web/client/stores/task-store.js +26 -0
  407. package/dist/src/features/web/client/stores/task-store.js.map +7 -0
  408. package/dist/src/features/web/server/index.js +194 -0
  409. package/dist/src/features/web/server/index.js.map +7 -0
  410. package/dist/src/hooks/auto-background.js +151 -0
  411. package/dist/src/hooks/auto-background.js.map +7 -0
  412. package/dist/src/hooks/claude-code-whatsapp-hook.js +197 -0
  413. package/dist/src/hooks/claude-code-whatsapp-hook.js.map +7 -0
  414. package/dist/src/hooks/config.js +150 -0
  415. package/dist/src/hooks/config.js.map +7 -0
  416. package/dist/src/hooks/daemon.js +364 -0
  417. package/dist/src/hooks/daemon.js.map +7 -0
  418. package/dist/src/hooks/events.js +58 -0
  419. package/dist/src/hooks/events.js.map +7 -0
  420. package/dist/src/hooks/index.js +12 -0
  421. package/dist/src/hooks/index.js.map +7 -0
  422. package/dist/src/hooks/linear-task-picker.js +186 -0
  423. package/dist/src/hooks/linear-task-picker.js.map +7 -0
  424. package/dist/src/hooks/schemas.js +197 -0
  425. package/dist/src/hooks/schemas.js.map +7 -0
  426. package/dist/src/hooks/secure-fs.js +49 -0
  427. package/dist/src/hooks/secure-fs.js.map +7 -0
  428. package/dist/src/hooks/security-logger.js +155 -0
  429. package/dist/src/hooks/security-logger.js.map +7 -0
  430. package/dist/src/hooks/session-summary.js +222 -0
  431. package/dist/src/hooks/session-summary.js.map +7 -0
  432. package/dist/src/hooks/sms-action-runner.js +371 -0
  433. package/dist/src/hooks/sms-action-runner.js.map +7 -0
  434. package/dist/src/hooks/sms-notify.js +506 -0
  435. package/dist/src/hooks/sms-notify.js.map +7 -0
  436. package/dist/src/hooks/sms-watcher.js +93 -0
  437. package/dist/src/hooks/sms-watcher.js.map +7 -0
  438. package/dist/src/hooks/sms-webhook.js +555 -0
  439. package/dist/src/hooks/sms-webhook.js.map +7 -0
  440. package/dist/src/hooks/whatsapp-commands.js +479 -0
  441. package/dist/src/hooks/whatsapp-commands.js.map +7 -0
  442. package/dist/src/hooks/whatsapp-scheduler.js +317 -0
  443. package/dist/src/hooks/whatsapp-scheduler.js.map +7 -0
  444. package/dist/src/hooks/whatsapp-sync.js +409 -0
  445. package/dist/src/hooks/whatsapp-sync.js.map +7 -0
  446. package/dist/src/index.js +25 -0
  447. package/dist/src/index.js.map +7 -0
  448. package/dist/src/integrations/anthropic/client.js +263 -0
  449. package/dist/src/integrations/anthropic/client.js.map +7 -0
  450. package/dist/src/integrations/claude-code/agent-bridge.js +768 -0
  451. package/dist/src/integrations/claude-code/agent-bridge.js.map +7 -0
  452. package/dist/src/integrations/claude-code/enhanced-pre-clear-hooks.js +459 -0
  453. package/dist/src/integrations/claude-code/enhanced-pre-clear-hooks.js.map +7 -0
  454. package/dist/src/integrations/claude-code/lifecycle-hooks.js +254 -0
  455. package/dist/src/integrations/claude-code/lifecycle-hooks.js.map +7 -0
  456. package/dist/src/integrations/claude-code/post-task-hooks.js +545 -0
  457. package/dist/src/integrations/claude-code/post-task-hooks.js.map +7 -0
  458. package/dist/src/integrations/claude-code/subagent-client-stub.js +20 -0
  459. package/dist/src/integrations/claude-code/subagent-client-stub.js.map +7 -0
  460. package/dist/src/integrations/claude-code/subagent-client.js +511 -0
  461. package/dist/src/integrations/claude-code/subagent-client.js.map +7 -0
  462. package/dist/src/integrations/claude-code/task-coordinator.js +360 -0
  463. package/dist/src/integrations/claude-code/task-coordinator.js.map +7 -0
  464. package/dist/src/integrations/linear/auth.js +337 -0
  465. package/dist/src/integrations/linear/auth.js.map +7 -0
  466. package/dist/src/integrations/linear/auto-sync.js +258 -0
  467. package/dist/src/integrations/linear/auto-sync.js.map +7 -0
  468. package/dist/src/integrations/linear/client.js +634 -0
  469. package/dist/src/integrations/linear/client.js.map +7 -0
  470. package/dist/src/integrations/linear/config.js +130 -0
  471. package/dist/src/integrations/linear/config.js.map +7 -0
  472. package/dist/src/integrations/linear/migration.js +361 -0
  473. package/dist/src/integrations/linear/migration.js.map +7 -0
  474. package/dist/src/integrations/linear/oauth-server.js +454 -0
  475. package/dist/src/integrations/linear/oauth-server.js.map +7 -0
  476. package/dist/src/integrations/linear/rest-client.js +213 -0
  477. package/dist/src/integrations/linear/rest-client.js.map +7 -0
  478. package/dist/src/integrations/linear/sync-manager.js +236 -0
  479. package/dist/src/integrations/linear/sync-manager.js.map +7 -0
  480. package/dist/src/integrations/linear/sync-service.js +231 -0
  481. package/dist/src/integrations/linear/sync-service.js.map +7 -0
  482. package/dist/src/integrations/linear/sync.js +782 -0
  483. package/dist/src/integrations/linear/sync.js.map +7 -0
  484. package/dist/src/integrations/linear/types.js +5 -0
  485. package/dist/src/integrations/linear/types.js.map +7 -0
  486. package/dist/src/integrations/linear/unified-sync.js +589 -0
  487. package/dist/src/integrations/linear/unified-sync.js.map +7 -0
  488. package/dist/src/integrations/linear/webhook-handler.js +219 -0
  489. package/dist/src/integrations/linear/webhook-handler.js.map +7 -0
  490. package/dist/src/integrations/linear/webhook-server.js +218 -0
  491. package/dist/src/integrations/linear/webhook-server.js.map +7 -0
  492. package/dist/src/integrations/linear/webhook.js +291 -0
  493. package/dist/src/integrations/linear/webhook.js.map +7 -0
  494. package/dist/src/integrations/mcp/handlers/code-execution-handlers.js +266 -0
  495. package/dist/src/integrations/mcp/handlers/code-execution-handlers.js.map +7 -0
  496. package/dist/src/integrations/mcp/handlers/context-handlers.js +257 -0
  497. package/dist/src/integrations/mcp/handlers/context-handlers.js.map +7 -0
  498. package/dist/src/integrations/mcp/handlers/discovery-handlers.js +497 -0
  499. package/dist/src/integrations/mcp/handlers/discovery-handlers.js.map +7 -0
  500. package/dist/src/integrations/mcp/handlers/index.js +166 -0
  501. package/dist/src/integrations/mcp/handlers/index.js.map +7 -0
  502. package/dist/src/integrations/mcp/handlers/linear-handlers.js +247 -0
  503. package/dist/src/integrations/mcp/handlers/linear-handlers.js.map +7 -0
  504. package/dist/src/integrations/mcp/handlers/skill-handlers.js +529 -0
  505. package/dist/src/integrations/mcp/handlers/skill-handlers.js.map +7 -0
  506. package/dist/src/integrations/mcp/handlers/task-handlers.js +239 -0
  507. package/dist/src/integrations/mcp/handlers/task-handlers.js.map +7 -0
  508. package/dist/src/integrations/mcp/handlers/trace-handlers.js +308 -0
  509. package/dist/src/integrations/mcp/handlers/trace-handlers.js.map +7 -0
  510. package/dist/src/integrations/mcp/index.js +23 -0
  511. package/dist/src/integrations/mcp/index.js.map +7 -0
  512. package/dist/src/integrations/mcp/middleware/tool-scoring.js +356 -0
  513. package/dist/src/integrations/mcp/middleware/tool-scoring.js.map +7 -0
  514. package/dist/src/integrations/mcp/refactored-server.js +374 -0
  515. package/dist/src/integrations/mcp/refactored-server.js.map +7 -0
  516. package/dist/src/integrations/mcp/remote-server.js +682 -0
  517. package/dist/src/integrations/mcp/remote-server.js.map +7 -0
  518. package/dist/src/integrations/mcp/schemas.js +147 -0
  519. package/dist/src/integrations/mcp/schemas.js.map +7 -0
  520. package/dist/src/integrations/mcp/server.js +1975 -0
  521. package/dist/src/integrations/mcp/server.js.map +7 -0
  522. package/dist/src/integrations/mcp/tool-definitions-code.js +125 -0
  523. package/dist/src/integrations/mcp/tool-definitions-code.js.map +7 -0
  524. package/dist/src/integrations/mcp/tool-definitions.js +702 -0
  525. package/dist/src/integrations/mcp/tool-definitions.js.map +7 -0
  526. package/dist/src/integrations/ralph/bridge/ralph-stackmemory-bridge.js +860 -0
  527. package/dist/src/integrations/ralph/bridge/ralph-stackmemory-bridge.js.map +7 -0
  528. package/dist/src/integrations/ralph/context/context-budget-manager.js +301 -0
  529. package/dist/src/integrations/ralph/context/context-budget-manager.js.map +7 -0
  530. package/dist/src/integrations/ralph/context/stackmemory-context-loader.js +360 -0
  531. package/dist/src/integrations/ralph/context/stackmemory-context-loader.js.map +7 -0
  532. package/dist/src/integrations/ralph/coordination/enhanced-coordination.js +410 -0
  533. package/dist/src/integrations/ralph/coordination/enhanced-coordination.js.map +7 -0
  534. package/dist/src/integrations/ralph/index.js +18 -0
  535. package/dist/src/integrations/ralph/index.js.map +7 -0
  536. package/dist/src/integrations/ralph/learning/pattern-learner.js +401 -0
  537. package/dist/src/integrations/ralph/learning/pattern-learner.js.map +7 -0
  538. package/dist/src/integrations/ralph/lifecycle/iteration-lifecycle.js +448 -0
  539. package/dist/src/integrations/ralph/lifecycle/iteration-lifecycle.js.map +7 -0
  540. package/dist/src/integrations/ralph/monitoring/swarm-dashboard.js +294 -0
  541. package/dist/src/integrations/ralph/monitoring/swarm-dashboard.js.map +7 -0
  542. package/dist/src/integrations/ralph/monitoring/swarm-registry.js +108 -0
  543. package/dist/src/integrations/ralph/monitoring/swarm-registry.js.map +7 -0
  544. package/dist/src/integrations/ralph/orchestration/multi-loop-orchestrator.js +463 -0
  545. package/dist/src/integrations/ralph/orchestration/multi-loop-orchestrator.js.map +7 -0
  546. package/dist/src/integrations/ralph/patterns/compounding-engineering-pattern.js +400 -0
  547. package/dist/src/integrations/ralph/patterns/compounding-engineering-pattern.js.map +7 -0
  548. package/dist/src/integrations/ralph/patterns/extended-coherence-sessions.js +473 -0
  549. package/dist/src/integrations/ralph/patterns/extended-coherence-sessions.js.map +7 -0
  550. package/dist/src/integrations/ralph/patterns/oracle-worker-pattern.js +388 -0
  551. package/dist/src/integrations/ralph/patterns/oracle-worker-pattern.js.map +7 -0
  552. package/dist/src/integrations/ralph/performance/performance-optimizer.js +358 -0
  553. package/dist/src/integrations/ralph/performance/performance-optimizer.js.map +7 -0
  554. package/dist/src/integrations/ralph/recovery/crash-recovery.js +462 -0
  555. package/dist/src/integrations/ralph/recovery/crash-recovery.js.map +7 -0
  556. package/dist/src/integrations/ralph/state/state-reconciler.js +404 -0
  557. package/dist/src/integrations/ralph/state/state-reconciler.js.map +7 -0
  558. package/dist/src/integrations/ralph/swarm/git-workflow-manager.js +428 -0
  559. package/dist/src/integrations/ralph/swarm/git-workflow-manager.js.map +7 -0
  560. package/dist/src/integrations/ralph/swarm/swarm-coordinator.js +996 -0
  561. package/dist/src/integrations/ralph/swarm/swarm-coordinator.js.map +7 -0
  562. package/dist/src/integrations/ralph/types.js +5 -0
  563. package/dist/src/integrations/ralph/types.js.map +7 -0
  564. package/dist/src/integrations/ralph/visualization/ralph-debugger.js +585 -0
  565. package/dist/src/integrations/ralph/visualization/ralph-debugger.js.map +7 -0
  566. package/dist/src/mcp/stackmemory-mcp-server.js +554 -0
  567. package/dist/src/mcp/stackmemory-mcp-server.js.map +7 -0
  568. package/dist/src/middleware/exponential-rate-limiter.js +289 -0
  569. package/dist/src/middleware/exponential-rate-limiter.js.map +7 -0
  570. package/dist/src/models/user.model.js +358 -0
  571. package/dist/src/models/user.model.js.map +7 -0
  572. package/dist/src/servers/production/auth-middleware.js +528 -0
  573. package/dist/src/servers/production/auth-middleware.js.map +7 -0
  574. package/dist/src/services/config-service.js +65 -0
  575. package/dist/src/services/config-service.js.map +7 -0
  576. package/dist/src/services/context-service.js +194 -0
  577. package/dist/src/services/context-service.js.map +7 -0
  578. package/dist/src/skills/api-discovery.js +354 -0
  579. package/dist/src/skills/api-discovery.js.map +7 -0
  580. package/dist/src/skills/api-skill.js +475 -0
  581. package/dist/src/skills/api-skill.js.map +7 -0
  582. package/dist/src/skills/claude-skills.js +1061 -0
  583. package/dist/src/skills/claude-skills.js.map +7 -0
  584. package/dist/src/skills/dashboard-launcher.js +216 -0
  585. package/dist/src/skills/dashboard-launcher.js.map +7 -0
  586. package/dist/src/skills/recursive-agent-orchestrator.js +575 -0
  587. package/dist/src/skills/recursive-agent-orchestrator.js.map +7 -0
  588. package/dist/src/skills/repo-ingestion-skill.js +609 -0
  589. package/dist/src/skills/repo-ingestion-skill.js.map +7 -0
  590. package/dist/src/skills/unified-rlm-orchestrator.js +404 -0
  591. package/dist/src/skills/unified-rlm-orchestrator.js.map +7 -0
  592. package/dist/src/types/task.js +5 -0
  593. package/dist/src/types/task.js.map +7 -0
  594. package/dist/src/utils/env.js +50 -0
  595. package/dist/src/utils/env.js.map +7 -0
  596. package/dist/src/utils/formatting.js +62 -0
  597. package/dist/src/utils/formatting.js.map +7 -0
  598. package/dist/src/utils/process-cleanup.js +136 -0
  599. package/dist/src/utils/process-cleanup.js.map +7 -0
  600. package/package.json +4 -3
  601. package/scripts/create-cleanup-issues.js +302 -0
  602. package/scripts/demos/browser-test.ts +39 -0
  603. package/scripts/demos/ralph-integration-demo.ts +244 -0
  604. package/scripts/demos/trace-demo.ts +214 -0
  605. package/scripts/demos/trace-detector.demo.ts +171 -0
  606. package/scripts/demos/trace-test.ts +67 -0
  607. package/scripts/initialize.ts +16 -7
  608. package/scripts/install.sh +14 -62
  609. package/scripts/status.ts +111 -46
  610. package/scripts/test-claude-config.sh +123 -0
  611. package/scripts/validate-claude-config.sh +155 -0
@@ -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
+ }