oh-my-claude-sisyphus 3.7.6 → 3.7.9

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 (428) hide show
  1. package/.claude-plugin/marketplace.json +24 -0
  2. package/.claude-plugin/plugin.json +7 -0
  3. package/.mcp.json +8 -0
  4. package/agents/AGENTS.md +144 -0
  5. package/dist/__tests__/analytics/analytics-summary.test.d.ts +2 -0
  6. package/dist/__tests__/analytics/analytics-summary.test.d.ts.map +1 -0
  7. package/dist/__tests__/analytics/analytics-summary.test.js +267 -0
  8. package/dist/__tests__/analytics/analytics-summary.test.js.map +1 -0
  9. package/dist/__tests__/analytics/cost-estimator.test.d.ts +2 -0
  10. package/dist/__tests__/analytics/cost-estimator.test.d.ts.map +1 -0
  11. package/dist/__tests__/analytics/cost-estimator.test.js +212 -0
  12. package/dist/__tests__/analytics/cost-estimator.test.js.map +1 -0
  13. package/dist/__tests__/hooks/auto-slash-command/executor.test.d.ts +7 -0
  14. package/dist/__tests__/hooks/auto-slash-command/executor.test.d.ts.map +1 -0
  15. package/dist/__tests__/hooks/auto-slash-command/executor.test.js +374 -0
  16. package/dist/__tests__/hooks/auto-slash-command/executor.test.js.map +1 -0
  17. package/dist/__tests__/hud/auto-tracking.integration.test.d.ts +2 -0
  18. package/dist/__tests__/hud/auto-tracking.integration.test.d.ts.map +1 -0
  19. package/dist/__tests__/hud/auto-tracking.integration.test.js +12 -0
  20. package/dist/__tests__/hud/auto-tracking.integration.test.js.map +1 -0
  21. package/dist/__tests__/learned-skills/config.test.d.ts +2 -0
  22. package/dist/__tests__/learned-skills/config.test.d.ts.map +1 -0
  23. package/dist/__tests__/learned-skills/config.test.js +37 -0
  24. package/dist/__tests__/learned-skills/config.test.js.map +1 -0
  25. package/dist/__tests__/learned-skills/detector.test.d.ts +2 -0
  26. package/dist/__tests__/learned-skills/detector.test.d.ts.map +1 -0
  27. package/dist/__tests__/learned-skills/detector.test.js +99 -0
  28. package/dist/__tests__/learned-skills/detector.test.js.map +1 -0
  29. package/dist/__tests__/learned-skills/finder.test.d.ts +2 -0
  30. package/dist/__tests__/learned-skills/finder.test.d.ts.map +1 -0
  31. package/dist/__tests__/learned-skills/finder.test.js +59 -0
  32. package/dist/__tests__/learned-skills/finder.test.js.map +1 -0
  33. package/dist/__tests__/learned-skills/loader.test.d.ts +2 -0
  34. package/dist/__tests__/learned-skills/loader.test.d.ts.map +1 -0
  35. package/dist/__tests__/learned-skills/loader.test.js +69 -0
  36. package/dist/__tests__/learned-skills/loader.test.js.map +1 -0
  37. package/dist/__tests__/learned-skills/parser.test.d.ts +2 -0
  38. package/dist/__tests__/learned-skills/parser.test.d.ts.map +1 -0
  39. package/dist/__tests__/learned-skills/parser.test.js +81 -0
  40. package/dist/__tests__/learned-skills/parser.test.js.map +1 -0
  41. package/dist/__tests__/learned-skills/validator.test.d.ts +2 -0
  42. package/dist/__tests__/learned-skills/validator.test.d.ts.map +1 -0
  43. package/dist/__tests__/learned-skills/validator.test.js +85 -0
  44. package/dist/__tests__/learned-skills/validator.test.js.map +1 -0
  45. package/dist/__tests__/omc-tools-server.test.d.ts +2 -0
  46. package/dist/__tests__/omc-tools-server.test.d.ts.map +1 -0
  47. package/dist/__tests__/omc-tools-server.test.js +52 -0
  48. package/dist/__tests__/omc-tools-server.test.js.map +1 -0
  49. package/dist/agents/architect.js +1 -1
  50. package/dist/agents/architect.js.map +1 -1
  51. package/dist/agents/codex-agents.d.ts +20 -0
  52. package/dist/agents/codex-agents.d.ts.map +1 -0
  53. package/dist/agents/codex-agents.js +36 -0
  54. package/dist/agents/codex-agents.js.map +1 -0
  55. package/dist/agents/definitions.js +13 -13
  56. package/dist/agents/definitions.js.map +1 -1
  57. package/dist/agents/document-writer.d.ts +11 -0
  58. package/dist/agents/document-writer.d.ts.map +1 -0
  59. package/dist/agents/document-writer.js +209 -0
  60. package/dist/agents/document-writer.js.map +1 -0
  61. package/dist/agents/executor.js +1 -1
  62. package/dist/agents/executor.js.map +1 -1
  63. package/dist/agents/explore.js +1 -1
  64. package/dist/agents/explore.js.map +1 -1
  65. package/dist/agents/frontend-engineer.d.ts +11 -0
  66. package/dist/agents/frontend-engineer.d.ts.map +1 -0
  67. package/dist/agents/frontend-engineer.js +115 -0
  68. package/dist/agents/frontend-engineer.js.map +1 -0
  69. package/dist/agents/librarian.d.ts +12 -0
  70. package/dist/agents/librarian.d.ts.map +1 -0
  71. package/dist/agents/librarian.js +103 -0
  72. package/dist/agents/librarian.js.map +1 -0
  73. package/dist/agents/metis.d.ts +12 -0
  74. package/dist/agents/metis.d.ts.map +1 -0
  75. package/dist/agents/metis.js +117 -0
  76. package/dist/agents/metis.js.map +1 -0
  77. package/dist/agents/momus.d.ts +12 -0
  78. package/dist/agents/momus.d.ts.map +1 -0
  79. package/dist/agents/momus.js +128 -0
  80. package/dist/agents/momus.js.map +1 -0
  81. package/dist/agents/multimodal-looker.d.ts +11 -0
  82. package/dist/agents/multimodal-looker.d.ts.map +1 -0
  83. package/dist/agents/multimodal-looker.js +70 -0
  84. package/dist/agents/multimodal-looker.js.map +1 -0
  85. package/dist/agents/oracle.d.ts +13 -0
  86. package/dist/agents/oracle.d.ts.map +1 -0
  87. package/dist/agents/oracle.js +191 -0
  88. package/dist/agents/oracle.js.map +1 -0
  89. package/dist/agents/orchestrator-sisyphus.d.ts +11 -0
  90. package/dist/agents/orchestrator-sisyphus.d.ts.map +1 -0
  91. package/dist/agents/orchestrator-sisyphus.js +115 -0
  92. package/dist/agents/orchestrator-sisyphus.js.map +1 -0
  93. package/dist/agents/prometheus.d.ts +12 -0
  94. package/dist/agents/prometheus.d.ts.map +1 -0
  95. package/dist/agents/prometheus.js +195 -0
  96. package/dist/agents/prometheus.js.map +1 -0
  97. package/dist/agents/qa-tester.js +1 -1
  98. package/dist/agents/qa-tester.js.map +1 -1
  99. package/dist/agents/sisyphus-junior.d.ts +12 -0
  100. package/dist/agents/sisyphus-junior.d.ts.map +1 -0
  101. package/dist/agents/sisyphus-junior.js +93 -0
  102. package/dist/agents/sisyphus-junior.js.map +1 -0
  103. package/dist/cli/analytics.js +0 -0
  104. package/dist/cli/components/CostDashboard.d.ts +15 -0
  105. package/dist/cli/components/CostDashboard.d.ts.map +1 -0
  106. package/dist/cli/components/CostDashboard.js +15 -0
  107. package/dist/cli/components/CostDashboard.js.map +1 -0
  108. package/dist/cli/components/LiveStats.d.ts +16 -0
  109. package/dist/cli/components/LiveStats.d.ts.map +1 -0
  110. package/dist/cli/components/LiveStats.js +16 -0
  111. package/dist/cli/components/LiveStats.js.map +1 -0
  112. package/dist/cli/components/SessionBrowser.d.ts +14 -0
  113. package/dist/cli/components/SessionBrowser.d.ts.map +1 -0
  114. package/dist/cli/components/SessionBrowser.js +14 -0
  115. package/dist/cli/components/SessionBrowser.js.map +1 -0
  116. package/dist/cli/index.js +0 -0
  117. package/dist/cli/tui.d.ts +21 -0
  118. package/dist/cli/tui.d.ts.map +1 -0
  119. package/dist/cli/tui.js +21 -0
  120. package/dist/cli/tui.js.map +1 -0
  121. package/dist/hooks/autopilot/signals.d.ts +20 -0
  122. package/dist/hooks/autopilot/signals.d.ts.map +1 -0
  123. package/dist/hooks/autopilot/signals.js +75 -0
  124. package/dist/hooks/autopilot/signals.js.map +1 -0
  125. package/dist/hooks/autopilot/summary.d.ts +27 -0
  126. package/dist/hooks/autopilot/summary.d.ts.map +1 -0
  127. package/dist/hooks/autopilot/summary.js +160 -0
  128. package/dist/hooks/autopilot/summary.js.map +1 -0
  129. package/dist/hooks/autopilot/transition.d.ts +39 -0
  130. package/dist/hooks/autopilot/transition.d.ts.map +1 -0
  131. package/dist/hooks/autopilot/transition.js +216 -0
  132. package/dist/hooks/autopilot/transition.js.map +1 -0
  133. package/dist/hooks/context-window-limit-recovery/constants.d.ts +28 -0
  134. package/dist/hooks/context-window-limit-recovery/constants.d.ts.map +1 -0
  135. package/dist/hooks/context-window-limit-recovery/constants.js +85 -0
  136. package/dist/hooks/context-window-limit-recovery/constants.js.map +1 -0
  137. package/dist/hooks/context-window-limit-recovery/index.d.ts +62 -0
  138. package/dist/hooks/context-window-limit-recovery/index.d.ts.map +1 -0
  139. package/dist/hooks/context-window-limit-recovery/index.js +201 -0
  140. package/dist/hooks/context-window-limit-recovery/index.js.map +1 -0
  141. package/dist/hooks/context-window-limit-recovery/parser.d.ts +31 -0
  142. package/dist/hooks/context-window-limit-recovery/parser.d.ts.map +1 -0
  143. package/dist/hooks/context-window-limit-recovery/parser.js +241 -0
  144. package/dist/hooks/context-window-limit-recovery/parser.js.map +1 -0
  145. package/dist/hooks/context-window-limit-recovery/types.d.ts +84 -0
  146. package/dist/hooks/context-window-limit-recovery/types.d.ts.map +1 -0
  147. package/dist/hooks/context-window-limit-recovery/types.js +34 -0
  148. package/dist/hooks/context-window-limit-recovery/types.js.map +1 -0
  149. package/dist/hooks/edit-error-recovery/index.d.ts +62 -0
  150. package/dist/hooks/edit-error-recovery/index.d.ts.map +1 -0
  151. package/dist/hooks/edit-error-recovery/index.js +89 -0
  152. package/dist/hooks/edit-error-recovery/index.js.map +1 -0
  153. package/dist/hooks/github-auto-responder/classifier.d.ts +43 -0
  154. package/dist/hooks/github-auto-responder/classifier.d.ts.map +1 -0
  155. package/dist/hooks/github-auto-responder/classifier.js +150 -0
  156. package/dist/hooks/github-auto-responder/classifier.js.map +1 -0
  157. package/dist/hooks/github-auto-responder/config.d.ts +109 -0
  158. package/dist/hooks/github-auto-responder/config.d.ts.map +1 -0
  159. package/dist/hooks/github-auto-responder/config.js +69 -0
  160. package/dist/hooks/github-auto-responder/config.js.map +1 -0
  161. package/dist/hooks/github-auto-responder/constants.d.ts +45 -0
  162. package/dist/hooks/github-auto-responder/constants.d.ts.map +1 -0
  163. package/dist/hooks/github-auto-responder/constants.js +60 -0
  164. package/dist/hooks/github-auto-responder/constants.js.map +1 -0
  165. package/dist/hooks/github-auto-responder/filters.d.ts +95 -0
  166. package/dist/hooks/github-auto-responder/filters.d.ts.map +1 -0
  167. package/dist/hooks/github-auto-responder/filters.js +174 -0
  168. package/dist/hooks/github-auto-responder/filters.js.map +1 -0
  169. package/dist/hooks/github-auto-responder/github-client.d.ts +65 -0
  170. package/dist/hooks/github-auto-responder/github-client.d.ts.map +1 -0
  171. package/dist/hooks/github-auto-responder/github-client.js +128 -0
  172. package/dist/hooks/github-auto-responder/github-client.js.map +1 -0
  173. package/dist/hooks/github-auto-responder/idempotency.d.ts +68 -0
  174. package/dist/hooks/github-auto-responder/idempotency.d.ts.map +1 -0
  175. package/dist/hooks/github-auto-responder/idempotency.js +147 -0
  176. package/dist/hooks/github-auto-responder/idempotency.js.map +1 -0
  177. package/dist/hooks/github-auto-responder/index.d.ts +140 -0
  178. package/dist/hooks/github-auto-responder/index.d.ts.map +1 -0
  179. package/dist/hooks/github-auto-responder/index.js +145 -0
  180. package/dist/hooks/github-auto-responder/index.js.map +1 -0
  181. package/dist/hooks/github-auto-responder/persona.d.ts +40 -0
  182. package/dist/hooks/github-auto-responder/persona.d.ts.map +1 -0
  183. package/dist/hooks/github-auto-responder/persona.js +99 -0
  184. package/dist/hooks/github-auto-responder/persona.js.map +1 -0
  185. package/dist/hooks/github-auto-responder/responder.d.ts +122 -0
  186. package/dist/hooks/github-auto-responder/responder.d.ts.map +1 -0
  187. package/dist/hooks/github-auto-responder/responder.js +264 -0
  188. package/dist/hooks/github-auto-responder/responder.js.map +1 -0
  189. package/dist/hooks/github-auto-responder/server.d.ts +140 -0
  190. package/dist/hooks/github-auto-responder/server.d.ts.map +1 -0
  191. package/dist/hooks/github-auto-responder/server.js +301 -0
  192. package/dist/hooks/github-auto-responder/server.js.map +1 -0
  193. package/dist/hooks/github-auto-responder/signature.d.ts +34 -0
  194. package/dist/hooks/github-auto-responder/signature.d.ts.map +1 -0
  195. package/dist/hooks/github-auto-responder/signature.js +79 -0
  196. package/dist/hooks/github-auto-responder/signature.js.map +1 -0
  197. package/dist/hooks/github-auto-responder/templates.d.ts +16 -0
  198. package/dist/hooks/github-auto-responder/templates.d.ts.map +1 -0
  199. package/dist/hooks/github-auto-responder/templates.js +93 -0
  200. package/dist/hooks/github-auto-responder/templates.js.map +1 -0
  201. package/dist/hooks/github-auto-responder/types.d.ts +246 -0
  202. package/dist/hooks/github-auto-responder/types.d.ts.map +1 -0
  203. package/dist/hooks/github-auto-responder/types.js +7 -0
  204. package/dist/hooks/github-auto-responder/types.js.map +1 -0
  205. package/dist/hooks/learned-skills/config.d.ts +53 -0
  206. package/dist/hooks/learned-skills/config.d.ts.map +1 -0
  207. package/dist/hooks/learned-skills/config.js +103 -0
  208. package/dist/hooks/learned-skills/config.js.map +1 -0
  209. package/dist/hooks/learned-skills/constants.d.ts +24 -0
  210. package/dist/hooks/learned-skills/constants.d.ts.map +1 -0
  211. package/dist/hooks/learned-skills/constants.js +26 -0
  212. package/dist/hooks/learned-skills/constants.js.map +1 -0
  213. package/dist/hooks/learned-skills/detection-hook.d.ts +39 -0
  214. package/dist/hooks/learned-skills/detection-hook.d.ts.map +1 -0
  215. package/dist/hooks/learned-skills/detection-hook.js +83 -0
  216. package/dist/hooks/learned-skills/detection-hook.js.map +1 -0
  217. package/dist/hooks/learned-skills/detector.d.ts +30 -0
  218. package/dist/hooks/learned-skills/detector.d.ts.map +1 -0
  219. package/dist/hooks/learned-skills/detector.js +150 -0
  220. package/dist/hooks/learned-skills/detector.js.map +1 -0
  221. package/dist/hooks/learned-skills/finder.d.ts +21 -0
  222. package/dist/hooks/learned-skills/finder.d.ts.map +1 -0
  223. package/dist/hooks/learned-skills/finder.js +117 -0
  224. package/dist/hooks/learned-skills/finder.js.map +1 -0
  225. package/dist/hooks/learned-skills/index.d.ts +62 -0
  226. package/dist/hooks/learned-skills/index.d.ts.map +1 -0
  227. package/dist/hooks/learned-skills/index.js +137 -0
  228. package/dist/hooks/learned-skills/index.js.map +1 -0
  229. package/dist/hooks/learned-skills/loader.d.ts +20 -0
  230. package/dist/hooks/learned-skills/loader.d.ts.map +1 -0
  231. package/dist/hooks/learned-skills/loader.js +107 -0
  232. package/dist/hooks/learned-skills/loader.js.map +1 -0
  233. package/dist/hooks/learned-skills/parser.d.ts +21 -0
  234. package/dist/hooks/learned-skills/parser.d.ts.map +1 -0
  235. package/dist/hooks/learned-skills/parser.js +190 -0
  236. package/dist/hooks/learned-skills/parser.js.map +1 -0
  237. package/dist/hooks/learned-skills/promotion.d.ts +29 -0
  238. package/dist/hooks/learned-skills/promotion.d.ts.map +1 -0
  239. package/dist/hooks/learned-skills/promotion.js +87 -0
  240. package/dist/hooks/learned-skills/promotion.js.map +1 -0
  241. package/dist/hooks/learned-skills/types.d.ts +109 -0
  242. package/dist/hooks/learned-skills/types.d.ts.map +1 -0
  243. package/dist/hooks/learned-skills/types.js +8 -0
  244. package/dist/hooks/learned-skills/types.js.map +1 -0
  245. package/dist/hooks/learned-skills/validator.d.ts +15 -0
  246. package/dist/hooks/learned-skills/validator.d.ts.map +1 -0
  247. package/dist/hooks/learned-skills/validator.js +87 -0
  248. package/dist/hooks/learned-skills/validator.js.map +1 -0
  249. package/dist/hooks/learned-skills/writer.d.ts +27 -0
  250. package/dist/hooks/learned-skills/writer.d.ts.map +1 -0
  251. package/dist/hooks/learned-skills/writer.js +126 -0
  252. package/dist/hooks/learned-skills/writer.js.map +1 -0
  253. package/dist/hooks/mnemosyne/config.d.ts +53 -0
  254. package/dist/hooks/mnemosyne/config.d.ts.map +1 -0
  255. package/dist/hooks/mnemosyne/config.js +103 -0
  256. package/dist/hooks/mnemosyne/config.js.map +1 -0
  257. package/dist/hooks/mnemosyne/constants.d.ts +24 -0
  258. package/dist/hooks/mnemosyne/constants.d.ts.map +1 -0
  259. package/dist/hooks/mnemosyne/constants.js +26 -0
  260. package/dist/hooks/mnemosyne/constants.js.map +1 -0
  261. package/dist/hooks/mnemosyne/detection-hook.d.ts +39 -0
  262. package/dist/hooks/mnemosyne/detection-hook.d.ts.map +1 -0
  263. package/dist/hooks/mnemosyne/detection-hook.js +83 -0
  264. package/dist/hooks/mnemosyne/detection-hook.js.map +1 -0
  265. package/dist/hooks/mnemosyne/detector.d.ts +30 -0
  266. package/dist/hooks/mnemosyne/detector.d.ts.map +1 -0
  267. package/dist/hooks/mnemosyne/detector.js +150 -0
  268. package/dist/hooks/mnemosyne/detector.js.map +1 -0
  269. package/dist/hooks/mnemosyne/finder.d.ts +21 -0
  270. package/dist/hooks/mnemosyne/finder.d.ts.map +1 -0
  271. package/dist/hooks/mnemosyne/finder.js +117 -0
  272. package/dist/hooks/mnemosyne/finder.js.map +1 -0
  273. package/dist/hooks/mnemosyne/index.d.ts +62 -0
  274. package/dist/hooks/mnemosyne/index.d.ts.map +1 -0
  275. package/dist/hooks/mnemosyne/index.js +137 -0
  276. package/dist/hooks/mnemosyne/index.js.map +1 -0
  277. package/dist/hooks/mnemosyne/loader.d.ts +20 -0
  278. package/dist/hooks/mnemosyne/loader.d.ts.map +1 -0
  279. package/dist/hooks/mnemosyne/loader.js +113 -0
  280. package/dist/hooks/mnemosyne/loader.js.map +1 -0
  281. package/dist/hooks/mnemosyne/parser.d.ts +21 -0
  282. package/dist/hooks/mnemosyne/parser.d.ts.map +1 -0
  283. package/dist/hooks/mnemosyne/parser.js +190 -0
  284. package/dist/hooks/mnemosyne/parser.js.map +1 -0
  285. package/dist/hooks/mnemosyne/promotion.d.ts +29 -0
  286. package/dist/hooks/mnemosyne/promotion.d.ts.map +1 -0
  287. package/dist/hooks/mnemosyne/promotion.js +87 -0
  288. package/dist/hooks/mnemosyne/promotion.js.map +1 -0
  289. package/dist/hooks/mnemosyne/types.d.ts +109 -0
  290. package/dist/hooks/mnemosyne/types.d.ts.map +1 -0
  291. package/dist/hooks/mnemosyne/types.js +8 -0
  292. package/dist/hooks/mnemosyne/types.js.map +1 -0
  293. package/dist/hooks/mnemosyne/validator.d.ts +15 -0
  294. package/dist/hooks/mnemosyne/validator.d.ts.map +1 -0
  295. package/dist/hooks/mnemosyne/validator.js +87 -0
  296. package/dist/hooks/mnemosyne/validator.js.map +1 -0
  297. package/dist/hooks/mnemosyne/writer.d.ts +27 -0
  298. package/dist/hooks/mnemosyne/writer.d.ts.map +1 -0
  299. package/dist/hooks/mnemosyne/writer.js +126 -0
  300. package/dist/hooks/mnemosyne/writer.js.map +1 -0
  301. package/dist/hooks/ralph-loop/index.d.ts +116 -0
  302. package/dist/hooks/ralph-loop/index.d.ts.map +1 -0
  303. package/dist/hooks/ralph-loop/index.js +322 -0
  304. package/dist/hooks/ralph-loop/index.js.map +1 -0
  305. package/dist/hooks/ralph-prd/index.d.ts +130 -0
  306. package/dist/hooks/ralph-prd/index.d.ts.map +1 -0
  307. package/dist/hooks/ralph-prd/index.js +310 -0
  308. package/dist/hooks/ralph-prd/index.js.map +1 -0
  309. package/dist/hooks/ralph-progress/index.d.ts +102 -0
  310. package/dist/hooks/ralph-progress/index.d.ts.map +1 -0
  311. package/dist/hooks/ralph-progress/index.js +408 -0
  312. package/dist/hooks/ralph-progress/index.js.map +1 -0
  313. package/dist/hooks/ralph-verifier/index.d.ts +72 -0
  314. package/dist/hooks/ralph-verifier/index.d.ts.map +1 -0
  315. package/dist/hooks/ralph-verifier/index.js +223 -0
  316. package/dist/hooks/ralph-verifier/index.js.map +1 -0
  317. package/dist/hooks/session-recovery/constants.d.ts +56 -0
  318. package/dist/hooks/session-recovery/constants.d.ts.map +1 -0
  319. package/dist/hooks/session-recovery/constants.js +78 -0
  320. package/dist/hooks/session-recovery/constants.js.map +1 -0
  321. package/dist/hooks/session-recovery/index.d.ts +53 -0
  322. package/dist/hooks/session-recovery/index.d.ts.map +1 -0
  323. package/dist/hooks/session-recovery/index.js +321 -0
  324. package/dist/hooks/session-recovery/index.js.map +1 -0
  325. package/dist/hooks/session-recovery/storage.d.ts +76 -0
  326. package/dist/hooks/session-recovery/storage.d.ts.map +1 -0
  327. package/dist/hooks/session-recovery/storage.js +383 -0
  328. package/dist/hooks/session-recovery/storage.js.map +1 -0
  329. package/dist/hooks/session-recovery/types.d.ts +145 -0
  330. package/dist/hooks/session-recovery/types.d.ts.map +1 -0
  331. package/dist/hooks/session-recovery/types.js +8 -0
  332. package/dist/hooks/session-recovery/types.js.map +1 -0
  333. package/dist/hooks/sisyphus-orchestrator/constants.d.ts +23 -0
  334. package/dist/hooks/sisyphus-orchestrator/constants.d.ts.map +1 -0
  335. package/dist/hooks/sisyphus-orchestrator/constants.js +142 -0
  336. package/dist/hooks/sisyphus-orchestrator/constants.js.map +1 -0
  337. package/dist/hooks/sisyphus-orchestrator/index.d.ts +113 -0
  338. package/dist/hooks/sisyphus-orchestrator/index.d.ts.map +1 -0
  339. package/dist/hooks/sisyphus-orchestrator/index.js +309 -0
  340. package/dist/hooks/sisyphus-orchestrator/index.js.map +1 -0
  341. package/dist/hooks/ultraqa-loop/index.d.ts +94 -0
  342. package/dist/hooks/ultraqa-loop/index.d.ts.map +1 -0
  343. package/dist/hooks/ultraqa-loop/index.js +216 -0
  344. package/dist/hooks/ultraqa-loop/index.js.map +1 -0
  345. package/dist/hooks/ultrawork-state/index.d.ts +62 -0
  346. package/dist/hooks/ultrawork-state/index.d.ts.map +1 -0
  347. package/dist/hooks/ultrawork-state/index.js +208 -0
  348. package/dist/hooks/ultrawork-state/index.js.map +1 -0
  349. package/dist/hud/sisyphus-state.d.ts +31 -0
  350. package/dist/hud/sisyphus-state.d.ts.map +1 -0
  351. package/dist/hud/sisyphus-state.js +163 -0
  352. package/dist/hud/sisyphus-state.js.map +1 -0
  353. package/dist/index.d.ts +1 -0
  354. package/dist/index.d.ts.map +1 -1
  355. package/dist/index.js +15 -3
  356. package/dist/index.js.map +1 -1
  357. package/dist/mcp/index.d.ts +1 -0
  358. package/dist/mcp/index.d.ts.map +1 -1
  359. package/dist/mcp/index.js +2 -0
  360. package/dist/mcp/index.js.map +1 -1
  361. package/dist/mcp/omc-tools-server.d.ts +25 -0
  362. package/dist/mcp/omc-tools-server.d.ts.map +1 -0
  363. package/dist/mcp/omc-tools-server.js +49 -0
  364. package/dist/mcp/omc-tools-server.js.map +1 -0
  365. package/dist/mcp/standalone-server.d.ts +11 -0
  366. package/dist/mcp/standalone-server.d.ts.map +1 -0
  367. package/dist/mcp/standalone-server.js +139 -0
  368. package/dist/mcp/standalone-server.js.map +1 -0
  369. package/dist/tools/ast-tools.d.ts.map +1 -1
  370. package/dist/tools/ast-tools.js +19 -39
  371. package/dist/tools/ast-tools.js.map +1 -1
  372. package/dist/tools/diagnostics/index.d.ts +7 -32
  373. package/dist/tools/diagnostics/index.d.ts.map +1 -1
  374. package/dist/tools/diagnostics/index.js +41 -171
  375. package/dist/tools/diagnostics/index.js.map +1 -1
  376. package/dist/tools/diagnostics/lsp-aggregator.d.ts +1 -13
  377. package/dist/tools/diagnostics/lsp-aggregator.d.ts.map +1 -1
  378. package/dist/tools/diagnostics/lsp-aggregator.js +4 -32
  379. package/dist/tools/diagnostics/lsp-aggregator.js.map +1 -1
  380. package/dist/tools/diagnostics/tsc-runner.d.ts +0 -6
  381. package/dist/tools/diagnostics/tsc-runner.d.ts.map +1 -1
  382. package/dist/tools/diagnostics/tsc-runner.js +5 -32
  383. package/dist/tools/diagnostics/tsc-runner.js.map +1 -1
  384. package/dist/tools/lsp/client.d.ts.map +1 -1
  385. package/dist/tools/lsp/client.js +1 -26
  386. package/dist/tools/lsp/client.js.map +1 -1
  387. package/dist/tools/lsp/servers.d.ts +0 -3
  388. package/dist/tools/lsp/servers.d.ts.map +1 -1
  389. package/dist/tools/lsp/servers.js +4 -111
  390. package/dist/tools/lsp/servers.js.map +1 -1
  391. package/dist/tools/lsp-tools.d.ts +2 -2
  392. package/dist/tools/lsp-tools.d.ts.map +1 -1
  393. package/dist/tools/lsp-tools.js +2 -2
  394. package/dist/tools/lsp-tools.js.map +1 -1
  395. package/package.json +4 -2
  396. package/skills/AGENTS.md +187 -0
  397. package/dist/tools/diagnostics/__tests__/detectProjectType.test.d.ts +0 -5
  398. package/dist/tools/diagnostics/__tests__/detectProjectType.test.d.ts.map +0 -1
  399. package/dist/tools/diagnostics/__tests__/detectProjectType.test.js +0 -42
  400. package/dist/tools/diagnostics/__tests__/detectProjectType.test.js.map +0 -1
  401. package/dist/tools/diagnostics/__tests__/integration.test.d.ts +0 -5
  402. package/dist/tools/diagnostics/__tests__/integration.test.d.ts.map +0 -1
  403. package/dist/tools/diagnostics/__tests__/integration.test.js +0 -66
  404. package/dist/tools/diagnostics/__tests__/integration.test.js.map +0 -1
  405. package/dist/tools/diagnostics/__tests__/parser-tests.d.ts +0 -5
  406. package/dist/tools/diagnostics/__tests__/parser-tests.d.ts.map +0 -1
  407. package/dist/tools/diagnostics/__tests__/parser-tests.js +0 -86
  408. package/dist/tools/diagnostics/__tests__/parser-tests.js.map +0 -1
  409. package/dist/tools/diagnostics/__tests__/parsers.test.d.ts +0 -5
  410. package/dist/tools/diagnostics/__tests__/parsers.test.d.ts.map +0 -1
  411. package/dist/tools/diagnostics/__tests__/parsers.test.js +0 -199
  412. package/dist/tools/diagnostics/__tests__/parsers.test.js.map +0 -1
  413. package/dist/tools/diagnostics/constants.d.ts +0 -9
  414. package/dist/tools/diagnostics/constants.d.ts.map +0 -1
  415. package/dist/tools/diagnostics/constants.js +0 -9
  416. package/dist/tools/diagnostics/constants.js.map +0 -1
  417. package/dist/tools/diagnostics/go-runner.d.ts +0 -31
  418. package/dist/tools/diagnostics/go-runner.d.ts.map +0 -1
  419. package/dist/tools/diagnostics/go-runner.js +0 -78
  420. package/dist/tools/diagnostics/go-runner.js.map +0 -1
  421. package/dist/tools/diagnostics/python-runner.d.ts +0 -39
  422. package/dist/tools/diagnostics/python-runner.d.ts.map +0 -1
  423. package/dist/tools/diagnostics/python-runner.js +0 -200
  424. package/dist/tools/diagnostics/python-runner.js.map +0 -1
  425. package/dist/tools/diagnostics/rust-runner.d.ts +0 -34
  426. package/dist/tools/diagnostics/rust-runner.d.ts.map +0 -1
  427. package/dist/tools/diagnostics/rust-runner.js +0 -106
  428. package/dist/tools/diagnostics/rust-runner.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auto-tracking.integration.test.js","sourceRoot":"","sources":["../../../src/__tests__/hud/auto-tracking.integration.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAE9C,QAAQ,CAAC,2BAA2B,EAAE,GAAG,EAAE;IACzC,EAAE,CAAC,oCAAoC,EAAE,KAAK,IAAI,EAAE;QAClD,uCAAuC;QACvC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6CAA6C,EAAE,KAAK,IAAI,EAAE;QAC3D,+BAA+B;QAC/B,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=config.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.test.d.ts","sourceRoot":"","sources":["../../../src/__tests__/learned-skills/config.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,37 @@
1
+ import { describe, it, expect } from 'vitest';
2
+ import { loadConfig, getConfigValue } from '../../hooks/learned-skills/config.js';
3
+ describe('Claudeception Config', () => {
4
+ it('should return defaults when no config exists', () => {
5
+ const config = loadConfig();
6
+ expect(config.enabled).toBe(true);
7
+ expect(config.detection.promptThreshold).toBe(60);
8
+ });
9
+ it('should have valid default detection config', () => {
10
+ const config = loadConfig();
11
+ expect(config.detection.enabled).toBe(true);
12
+ expect(config.detection.promptCooldown).toBe(5);
13
+ });
14
+ it('should have valid default quality config', () => {
15
+ const config = loadConfig();
16
+ expect(config.quality.minScore).toBe(50);
17
+ expect(config.quality.minProblemLength).toBe(10);
18
+ expect(config.quality.minSolutionLength).toBe(20);
19
+ });
20
+ it('should have valid default storage config', () => {
21
+ const config = loadConfig();
22
+ expect(config.storage.maxSkillsPerScope).toBe(100);
23
+ expect(config.storage.autoPrune).toBe(false);
24
+ expect(config.storage.pruneDays).toBe(90);
25
+ });
26
+ it('should get specific config value', () => {
27
+ const enabled = getConfigValue('enabled');
28
+ expect(typeof enabled).toBe('boolean');
29
+ });
30
+ it('should get nested config value', () => {
31
+ const detection = getConfigValue('detection');
32
+ expect(detection).toHaveProperty('enabled');
33
+ expect(detection).toHaveProperty('promptThreshold');
34
+ expect(detection).toHaveProperty('promptCooldown');
35
+ });
36
+ });
37
+ //# sourceMappingURL=config.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.test.js","sourceRoot":"","sources":["../../../src/__tests__/learned-skills/config.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,sCAAsC,CAAC;AAElF,QAAQ,CAAC,sBAAsB,EAAE,GAAG,EAAE;IACpC,EAAE,CAAC,8CAA8C,EAAE,GAAG,EAAE;QACtD,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;QAE5B,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAClC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACpD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,4CAA4C,EAAE,GAAG,EAAE;QACpD,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;QAE5B,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC5C,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,0CAA0C,EAAE,GAAG,EAAE;QAClD,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;QAE5B,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACzC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACjD,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACpD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,0CAA0C,EAAE,GAAG,EAAE;QAClD,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;QAE5B,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACnD,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC7C,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC5C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kCAAkC,EAAE,GAAG,EAAE;QAC1C,MAAM,OAAO,GAAG,cAAc,CAAC,SAAS,CAAC,CAAC;QAC1C,MAAM,CAAC,OAAO,OAAO,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACzC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gCAAgC,EAAE,GAAG,EAAE;QACxC,MAAM,SAAS,GAAG,cAAc,CAAC,WAAW,CAAC,CAAC;QAC9C,MAAM,CAAC,SAAS,CAAC,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;QAC5C,MAAM,CAAC,SAAS,CAAC,CAAC,cAAc,CAAC,iBAAiB,CAAC,CAAC;QACpD,MAAM,CAAC,SAAS,CAAC,CAAC,cAAc,CAAC,gBAAgB,CAAC,CAAC;IACrD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=detector.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"detector.test.d.ts","sourceRoot":"","sources":["../../../src/__tests__/learned-skills/detector.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,99 @@
1
+ import { describe, it, expect } from 'vitest';
2
+ import { detectExtractableMoment, shouldPromptExtraction, generateExtractionPrompt, } from '../../hooks/learned-skills/detector.js';
3
+ describe('Skill Detector', () => {
4
+ describe('detectExtractableMoment', () => {
5
+ it('should detect problem-solution pattern', () => {
6
+ const message = 'The issue was caused by a race condition. I fixed it by adding proper locking.';
7
+ const result = detectExtractableMoment(message);
8
+ expect(result.detected).toBe(true);
9
+ expect(result.patternType).toBe('problem-solution');
10
+ expect(result.confidence).toBeGreaterThan(0);
11
+ });
12
+ it('should detect technique pattern', () => {
13
+ const message = 'A better way to handle this is to use the observer pattern instead of polling.';
14
+ const result = detectExtractableMoment(message);
15
+ expect(result.detected).toBe(true);
16
+ expect(result.patternType).toBe('technique');
17
+ });
18
+ it('should detect best practice pattern', () => {
19
+ const message = 'Best practices include keeping state as local as possible for React components.';
20
+ const result = detectExtractableMoment(message);
21
+ expect(result.detected).toBe(true);
22
+ expect(result.patternType).toBe('best-practice');
23
+ });
24
+ it('should not detect in regular conversation', () => {
25
+ const message = 'Sure, I can help you with that. What would you like to know?';
26
+ const result = detectExtractableMoment(message);
27
+ expect(result.detected).toBe(false);
28
+ });
29
+ it('should extract trigger keywords when pattern detected', () => {
30
+ // Message that matches problem-solution pattern AND contains trigger keywords
31
+ const message = 'The issue was caused by React state management. I fixed it by using TypeScript strict mode.';
32
+ const result = detectExtractableMoment(message, 'How do I manage state in React?');
33
+ expect(result.detected).toBe(true);
34
+ expect(result.suggestedTriggers).toContain('react');
35
+ expect(result.suggestedTriggers).toContain('typescript');
36
+ });
37
+ it('should detect workaround pattern', () => {
38
+ const message = 'As a workaround, you can temporarily disable the cache while debugging.';
39
+ const result = detectExtractableMoment(message);
40
+ expect(result.detected).toBe(true);
41
+ expect(result.patternType).toBe('workaround');
42
+ });
43
+ it('should detect optimization pattern', () => {
44
+ const message = 'To get better performance, optimize by using memoization on expensive calculations.';
45
+ const result = detectExtractableMoment(message);
46
+ expect(result.detected).toBe(true);
47
+ expect(result.patternType).toBe('optimization');
48
+ });
49
+ });
50
+ describe('shouldPromptExtraction', () => {
51
+ it('should return true when confidence exceeds threshold', () => {
52
+ const detection = {
53
+ detected: true,
54
+ confidence: 75,
55
+ patternType: 'problem-solution',
56
+ suggestedTriggers: [],
57
+ reason: 'test',
58
+ };
59
+ expect(shouldPromptExtraction(detection, 60)).toBe(true);
60
+ });
61
+ it('should return false when not detected', () => {
62
+ const detection = {
63
+ detected: false,
64
+ confidence: 0,
65
+ patternType: 'problem-solution',
66
+ suggestedTriggers: [],
67
+ reason: 'test',
68
+ };
69
+ expect(shouldPromptExtraction(detection)).toBe(false);
70
+ });
71
+ it('should return false when below threshold', () => {
72
+ const detection = {
73
+ detected: true,
74
+ confidence: 40,
75
+ patternType: 'problem-solution',
76
+ suggestedTriggers: [],
77
+ reason: 'test',
78
+ };
79
+ expect(shouldPromptExtraction(detection, 60)).toBe(false);
80
+ });
81
+ });
82
+ describe('generateExtractionPrompt', () => {
83
+ it('should generate prompt with detection details', () => {
84
+ const detection = {
85
+ detected: true,
86
+ confidence: 80,
87
+ patternType: 'technique',
88
+ suggestedTriggers: ['react', 'hooks'],
89
+ reason: 'Detected technique pattern',
90
+ };
91
+ const prompt = generateExtractionPrompt(detection);
92
+ expect(prompt).toContain('useful technique');
93
+ expect(prompt).toContain('80%');
94
+ expect(prompt).toContain('react, hooks');
95
+ expect(prompt).toContain('/claudeception');
96
+ });
97
+ });
98
+ });
99
+ //# sourceMappingURL=detector.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"detector.test.js","sourceRoot":"","sources":["../../../src/__tests__/learned-skills/detector.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=finder.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"finder.test.d.ts","sourceRoot":"","sources":["../../../src/__tests__/learned-skills/finder.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,59 @@
1
+ import { describe, it, expect, beforeEach, afterEach } from 'vitest';
2
+ import { mkdirSync, writeFileSync, rmSync } from 'fs';
3
+ import { join } from 'path';
4
+ import { tmpdir } from 'os';
5
+ import { findSkillFiles, getSkillsDir, ensureSkillsDir } from '../../hooks/learned-skills/finder.js';
6
+ describe('Skill Finder', () => {
7
+ let testDir;
8
+ let projectRoot;
9
+ beforeEach(() => {
10
+ testDir = join(tmpdir(), `skill-test-${Date.now()}`);
11
+ projectRoot = join(testDir, 'project');
12
+ mkdirSync(join(projectRoot, '.sisyphus', 'skills'), { recursive: true });
13
+ });
14
+ afterEach(() => {
15
+ rmSync(testDir, { recursive: true, force: true });
16
+ });
17
+ it('should find project-level skills', () => {
18
+ const skillPath = join(projectRoot, '.sisyphus', 'skills', 'test-skill.md');
19
+ writeFileSync(skillPath, '# Test Skill');
20
+ const candidates = findSkillFiles(projectRoot);
21
+ expect(candidates.length).toBe(1);
22
+ expect(candidates[0].scope).toBe('project');
23
+ expect(candidates[0].path).toBe(skillPath);
24
+ });
25
+ it('should prioritize project skills over user skills', () => {
26
+ // Create project skill
27
+ const projectSkillPath = join(projectRoot, '.sisyphus', 'skills', 'skill.md');
28
+ writeFileSync(projectSkillPath, '# Project Skill');
29
+ const candidates = findSkillFiles(projectRoot);
30
+ // Project skill should come first
31
+ const projectSkill = candidates.find(c => c.scope === 'project');
32
+ expect(projectSkill).toBeDefined();
33
+ });
34
+ it('should handle missing directories gracefully', () => {
35
+ const emptyProject = join(testDir, 'empty');
36
+ mkdirSync(emptyProject);
37
+ const candidates = findSkillFiles(emptyProject);
38
+ // Should return empty array, not throw
39
+ expect(Array.isArray(candidates)).toBe(true);
40
+ });
41
+ it('should get skills directory for user scope', () => {
42
+ const userDir = getSkillsDir('user');
43
+ expect(userDir).toContain('.claude');
44
+ expect(userDir).toContain('sisyphus-learned');
45
+ });
46
+ it('should get skills directory for project scope', () => {
47
+ const projectDir = getSkillsDir('project', projectRoot);
48
+ expect(projectDir).toContain('.sisyphus');
49
+ expect(projectDir).toContain('skills');
50
+ });
51
+ it('should throw for project scope without root', () => {
52
+ expect(() => getSkillsDir('project')).toThrow();
53
+ });
54
+ it('should ensure skills directory exists', () => {
55
+ const result = ensureSkillsDir('project', projectRoot);
56
+ expect(result).toBe(true);
57
+ });
58
+ });
59
+ //# sourceMappingURL=finder.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"finder.test.js","sourceRoot":"","sources":["../../../src/__tests__/learned-skills/finder.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=loader.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loader.test.d.ts","sourceRoot":"","sources":["../../../src/__tests__/learned-skills/loader.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,69 @@
1
+ import { describe, it, expect, beforeEach, afterEach } from 'vitest';
2
+ import { mkdirSync, writeFileSync, rmSync } from 'fs';
3
+ import { join } from 'path';
4
+ import { tmpdir } from 'os';
5
+ import { loadAllSkills, findMatchingSkills } from '../../hooks/learned-skills/loader.js';
6
+ describe('Skill Loader', () => {
7
+ let testDir;
8
+ let projectRoot;
9
+ beforeEach(() => {
10
+ testDir = join(tmpdir(), `skill-loader-test-${Date.now()}`);
11
+ projectRoot = join(testDir, 'project');
12
+ mkdirSync(join(projectRoot, '.sisyphus', 'skills'), { recursive: true });
13
+ });
14
+ afterEach(() => {
15
+ rmSync(testDir, { recursive: true, force: true });
16
+ });
17
+ const createSkillFile = (name, metadata) => {
18
+ const content = `---
19
+ id: "${metadata.id || name}"
20
+ name: "${metadata.name || name}"
21
+ description: "${metadata.description || 'Test skill'}"
22
+ source: ${metadata.source || 'manual'}
23
+ createdAt: "2024-01-19T12:00:00Z"
24
+ triggers:
25
+ ${(metadata.triggers || ['test']).map(t => ` - "${t}"`).join('\n')}
26
+ ---
27
+
28
+ # ${name}
29
+
30
+ Test content for ${name}.
31
+ `;
32
+ const skillPath = join(projectRoot, '.sisyphus', 'skills', `${name}.md`);
33
+ writeFileSync(skillPath, content);
34
+ return skillPath;
35
+ };
36
+ it('should load all valid skills', () => {
37
+ createSkillFile('skill-a', { triggers: ['alpha'] });
38
+ createSkillFile('skill-b', { triggers: ['beta'] });
39
+ const skills = loadAllSkills(projectRoot);
40
+ expect(skills.length).toBe(2);
41
+ });
42
+ it('should find matching skills by trigger', () => {
43
+ createSkillFile('react-skill', { triggers: ['react', 'component'] });
44
+ createSkillFile('python-skill', { triggers: ['python', 'django'] });
45
+ const matches = findMatchingSkills('How do I create a React component?', projectRoot);
46
+ expect(matches.length).toBe(1);
47
+ expect(matches[0].metadata.id).toBe('react-skill');
48
+ });
49
+ it('should return empty array when no triggers match', () => {
50
+ createSkillFile('react-skill', { triggers: ['react'] });
51
+ const matches = findMatchingSkills('How do I use Rust?', projectRoot);
52
+ expect(matches.length).toBe(0);
53
+ });
54
+ it('should limit results to specified count', () => {
55
+ createSkillFile('skill-1', { triggers: ['test'] });
56
+ createSkillFile('skill-2', { triggers: ['test'] });
57
+ createSkillFile('skill-3', { triggers: ['test'] });
58
+ const matches = findMatchingSkills('This is a test message', projectRoot, 2);
59
+ expect(matches.length).toBeLessThanOrEqual(2);
60
+ });
61
+ it('should boost by quality score', () => {
62
+ createSkillFile('low-quality', { triggers: ['test'], quality: 30 });
63
+ createSkillFile('high-quality', { triggers: ['test'], quality: 90 });
64
+ const matches = findMatchingSkills('test', projectRoot);
65
+ // High quality should be first
66
+ expect(matches[0].metadata.id).toBe('high-quality');
67
+ });
68
+ });
69
+ //# sourceMappingURL=loader.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loader.test.js","sourceRoot":"","sources":["../../../src/__tests__/learned-skills/loader.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=parser.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parser.test.d.ts","sourceRoot":"","sources":["../../../src/__tests__/learned-skills/parser.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,81 @@
1
+ import { describe, it, expect } from 'vitest';
2
+ import { parseSkillFile, generateSkillFrontmatter } from '../../hooks/learned-skills/parser.js';
3
+ describe('Skill Parser', () => {
4
+ it('should parse valid skill frontmatter', () => {
5
+ const content = `---
6
+ id: "test-skill-001"
7
+ name: "Test Skill"
8
+ description: "A test skill"
9
+ source: extracted
10
+ createdAt: "2024-01-19T12:00:00Z"
11
+ triggers:
12
+ - "test"
13
+ - "demo"
14
+ tags:
15
+ - "testing"
16
+ ---
17
+
18
+ # Test Skill Content
19
+
20
+ This is the skill content.
21
+ `;
22
+ const result = parseSkillFile(content);
23
+ expect(result.valid).toBe(true);
24
+ expect(result.metadata.id).toBe('test-skill-001');
25
+ expect(result.metadata.name).toBe('Test Skill');
26
+ expect(result.metadata.triggers).toEqual(['test', 'demo']);
27
+ expect(result.content).toContain('Test Skill Content');
28
+ });
29
+ it('should reject skill without required fields', () => {
30
+ const content = `---
31
+ name: "Incomplete Skill"
32
+ ---
33
+
34
+ Content without required fields.
35
+ `;
36
+ const result = parseSkillFile(content);
37
+ expect(result.valid).toBe(false);
38
+ expect(result.errors).toContain('Missing required field: id');
39
+ expect(result.errors).toContain('Missing required field: triggers');
40
+ });
41
+ it('should generate valid frontmatter', () => {
42
+ const metadata = {
43
+ id: 'gen-skill-001',
44
+ name: 'Generated Skill',
45
+ description: 'A generated skill',
46
+ source: 'extracted',
47
+ createdAt: '2024-01-19T12:00:00Z',
48
+ triggers: ['generate', 'create'],
49
+ tags: ['automation'],
50
+ };
51
+ const frontmatter = generateSkillFrontmatter(metadata);
52
+ expect(frontmatter).toContain('id: "gen-skill-001"');
53
+ expect(frontmatter).toContain('triggers:');
54
+ expect(frontmatter).toContain(' - "generate"');
55
+ });
56
+ it('should reject content without frontmatter', () => {
57
+ const content = `# Just content
58
+
59
+ No frontmatter here.
60
+ `;
61
+ const result = parseSkillFile(content);
62
+ expect(result.valid).toBe(false);
63
+ expect(result.errors).toContain('Missing YAML frontmatter');
64
+ });
65
+ it('should handle inline array triggers', () => {
66
+ const content = `---
67
+ id: "inline-array"
68
+ name: "Inline Array Skill"
69
+ description: "Test inline arrays"
70
+ source: manual
71
+ triggers: ["alpha", "beta", "gamma"]
72
+ ---
73
+
74
+ Content
75
+ `;
76
+ const result = parseSkillFile(content);
77
+ expect(result.valid).toBe(true);
78
+ expect(result.metadata.triggers).toEqual(['alpha', 'beta', 'gamma']);
79
+ });
80
+ });
81
+ //# sourceMappingURL=parser.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parser.test.js","sourceRoot":"","sources":["../../../src/__tests__/learned-skills/parser.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=validator.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validator.test.d.ts","sourceRoot":"","sources":["../../../src/__tests__/learned-skills/validator.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,85 @@
1
+ import { describe, it, expect } from 'vitest';
2
+ import { validateExtractionRequest, validateSkillMetadata } from '../../hooks/learned-skills/validator.js';
3
+ describe('Skill Validator', () => {
4
+ describe('validateExtractionRequest', () => {
5
+ it('should pass valid extraction request', () => {
6
+ const request = {
7
+ problem: 'How to handle React state updates correctly',
8
+ solution: 'Use the functional form of setState when the new state depends on the previous state. This ensures you always have the latest state value.',
9
+ triggers: ['react', 'state', 'setState'],
10
+ targetScope: 'user',
11
+ };
12
+ const result = validateExtractionRequest(request);
13
+ expect(result.valid).toBe(true);
14
+ expect(result.score).toBeGreaterThanOrEqual(50);
15
+ });
16
+ it('should fail with missing problem', () => {
17
+ const request = {
18
+ problem: '',
19
+ solution: 'Use functional setState for dependent updates',
20
+ triggers: ['react'],
21
+ targetScope: 'user',
22
+ };
23
+ const result = validateExtractionRequest(request);
24
+ expect(result.valid).toBe(false);
25
+ expect(result.missingFields).toContain('problem (minimum 10 characters)');
26
+ });
27
+ it('should warn about generic triggers', () => {
28
+ const request = {
29
+ problem: 'How to handle data correctly',
30
+ solution: 'Always validate and sanitize input data before processing',
31
+ triggers: ['the', 'data', 'this'],
32
+ targetScope: 'user',
33
+ };
34
+ const result = validateExtractionRequest(request);
35
+ expect(result.warnings.length).toBeGreaterThan(0);
36
+ expect(result.warnings.some(w => w.includes('Generic triggers'))).toBe(true);
37
+ });
38
+ it('should fail with short solution', () => {
39
+ const request = {
40
+ problem: 'Valid problem statement here',
41
+ solution: 'Too short',
42
+ triggers: ['test'],
43
+ targetScope: 'user',
44
+ };
45
+ const result = validateExtractionRequest(request);
46
+ expect(result.valid).toBe(false);
47
+ expect(result.missingFields).toContain('solution (minimum 20 characters)');
48
+ });
49
+ it('should fail with empty triggers', () => {
50
+ const request = {
51
+ problem: 'Valid problem statement here',
52
+ solution: 'Valid solution that is long enough',
53
+ triggers: [],
54
+ targetScope: 'user',
55
+ };
56
+ const result = validateExtractionRequest(request);
57
+ expect(result.valid).toBe(false);
58
+ expect(result.missingFields).toContain('triggers (at least one required)');
59
+ });
60
+ });
61
+ describe('validateSkillMetadata', () => {
62
+ it('should pass valid metadata', () => {
63
+ const metadata = {
64
+ id: 'skill-001',
65
+ name: 'Test Skill',
66
+ description: 'A test skill',
67
+ source: 'extracted',
68
+ triggers: ['test'],
69
+ createdAt: '2024-01-19T12:00:00Z',
70
+ };
71
+ const result = validateSkillMetadata(metadata);
72
+ expect(result.valid).toBe(true);
73
+ });
74
+ it('should fail with missing required fields', () => {
75
+ const metadata = {
76
+ name: 'Incomplete',
77
+ };
78
+ const result = validateSkillMetadata(metadata);
79
+ expect(result.valid).toBe(false);
80
+ expect(result.missingFields).toContain('id');
81
+ expect(result.missingFields).toContain('triggers');
82
+ });
83
+ });
84
+ });
85
+ //# sourceMappingURL=validator.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validator.test.js","sourceRoot":"","sources":["../../../src/__tests__/learned-skills/validator.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=omc-tools-server.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"omc-tools-server.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/omc-tools-server.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,52 @@
1
+ import { describe, it, expect } from 'vitest';
2
+ import { omcToolsServer, omcToolNames, getOmcToolNames } from '../mcp/omc-tools-server.js';
3
+ describe('omc-tools-server', () => {
4
+ describe('omcToolNames', () => {
5
+ it('should export 15 tools total', () => {
6
+ expect(omcToolNames).toHaveLength(15);
7
+ });
8
+ it('should have 12 LSP tools', () => {
9
+ const lspTools = omcToolNames.filter(n => n.includes('lsp_'));
10
+ expect(lspTools).toHaveLength(12);
11
+ });
12
+ it('should have 2 AST tools', () => {
13
+ const astTools = omcToolNames.filter(n => n.includes('ast_'));
14
+ expect(astTools).toHaveLength(2);
15
+ });
16
+ it('should have python_repl tool', () => {
17
+ expect(omcToolNames).toContain('mcp__omc-tools__python_repl');
18
+ });
19
+ it('should use correct MCP naming format', () => {
20
+ omcToolNames.forEach(name => {
21
+ expect(name).toMatch(/^mcp__omc-tools__/);
22
+ });
23
+ });
24
+ });
25
+ describe('getOmcToolNames', () => {
26
+ it('should return all tools by default', () => {
27
+ const tools = getOmcToolNames();
28
+ expect(tools).toHaveLength(15);
29
+ });
30
+ it('should filter out LSP tools when includeLsp is false', () => {
31
+ const tools = getOmcToolNames({ includeLsp: false });
32
+ expect(tools.some(t => t.includes('lsp_'))).toBe(false);
33
+ expect(tools).toHaveLength(3); // 2 AST + 1 python
34
+ });
35
+ it('should filter out AST tools when includeAst is false', () => {
36
+ const tools = getOmcToolNames({ includeAst: false });
37
+ expect(tools.some(t => t.includes('ast_'))).toBe(false);
38
+ expect(tools).toHaveLength(13); // 12 LSP + 1 python
39
+ });
40
+ it('should filter out python_repl when includePython is false', () => {
41
+ const tools = getOmcToolNames({ includePython: false });
42
+ expect(tools.some(t => t.includes('python_repl'))).toBe(false);
43
+ expect(tools).toHaveLength(14); // 12 LSP + 2 AST
44
+ });
45
+ });
46
+ describe('omcToolsServer', () => {
47
+ it('should be defined', () => {
48
+ expect(omcToolsServer).toBeDefined();
49
+ });
50
+ });
51
+ });
52
+ //# sourceMappingURL=omc-tools-server.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"omc-tools-server.test.js","sourceRoot":"","sources":["../../src/__tests__/omc-tools-server.test.ts"],"names":[],"mappings":"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"}
@@ -182,7 +182,7 @@ export const architectAgent = {
182
182
  name: 'architect',
183
183
  description: 'Read-only consultation agent. High-IQ reasoning specialist for debugging hard problems and high-difficulty architecture design.',
184
184
  prompt: ARCHITECT_PROMPT,
185
- tools: ['Read', 'Grep', 'Glob', 'Bash', 'WebSearch'],
185
+ tools: ['Read', 'Grep', 'Glob', 'Bash', 'WebSearch', 'lsp_diagnostics', 'lsp_diagnostics_directory', 'ast_grep_search'],
186
186
  model: 'opus',
187
187
  defaultModel: 'opus',
188
188
  metadata: ARCHITECT_PROMPT_METADATA
@@ -1 +1 @@
1
- {"version":3,"file":"architect.js","sourceRoot":"","sources":["../../src/agents/architect.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,MAAM,CAAC,MAAM,yBAAyB,GAAwB;IAC5D,QAAQ,EAAE,SAAS;IACnB,IAAI,EAAE,WAAW;IACjB,WAAW,EAAE,WAAW;IACxB,QAAQ,EAAE;QACR,EAAE,MAAM,EAAE,wBAAwB,EAAE,OAAO,EAAE,6CAA6C,EAAE;QAC5F,EAAE,MAAM,EAAE,aAAa,EAAE,OAAO,EAAE,6CAA6C,EAAE;QACjF,EAAE,MAAM,EAAE,gBAAgB,EAAE,OAAO,EAAE,8BAA8B,EAAE;KACtE;IACD,OAAO,EAAE;QACP,6BAA6B;QAC7B,mCAAmC;QACnC,wBAAwB;QACxB,0BAA0B;QAC1B,+BAA+B;QAC/B,wBAAwB;KACzB;IACD,SAAS,EAAE;QACT,2CAA2C;QAC3C,+CAA+C;QAC/C,6CAA6C;QAC7C,gDAAgD;QAChD,kDAAkD;KACnD;CACF,CAAC;AAEF,MAAM,gBAAgB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;qBAkJJ,CAAC;AAEtB,MAAM,CAAC,MAAM,cAAc,GAAgB;IACzC,IAAI,EAAE,WAAW;IACjB,WAAW,EAAE,iIAAiI;IAC9I,MAAM,EAAE,gBAAgB;IACxB,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,CAAC;IACpD,KAAK,EAAE,MAAM;IACb,YAAY,EAAE,MAAM;IACpB,QAAQ,EAAE,yBAAyB;CACpC,CAAC"}
1
+ {"version":3,"file":"architect.js","sourceRoot":"","sources":["../../src/agents/architect.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,MAAM,CAAC,MAAM,yBAAyB,GAAwB;IAC5D,QAAQ,EAAE,SAAS;IACnB,IAAI,EAAE,WAAW;IACjB,WAAW,EAAE,WAAW;IACxB,QAAQ,EAAE;QACR,EAAE,MAAM,EAAE,wBAAwB,EAAE,OAAO,EAAE,6CAA6C,EAAE;QAC5F,EAAE,MAAM,EAAE,aAAa,EAAE,OAAO,EAAE,6CAA6C,EAAE;QACjF,EAAE,MAAM,EAAE,gBAAgB,EAAE,OAAO,EAAE,8BAA8B,EAAE;KACtE;IACD,OAAO,EAAE;QACP,6BAA6B;QAC7B,mCAAmC;QACnC,wBAAwB;QACxB,0BAA0B;QAC1B,+BAA+B;QAC/B,wBAAwB;KACzB;IACD,SAAS,EAAE;QACT,2CAA2C;QAC3C,+CAA+C;QAC/C,6CAA6C;QAC7C,gDAAgD;QAChD,kDAAkD;KACnD;CACF,CAAC;AAEF,MAAM,gBAAgB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;qBAkJJ,CAAC;AAEtB,MAAM,CAAC,MAAM,cAAc,GAAgB;IACzC,IAAI,EAAE,WAAW;IACjB,WAAW,EAAE,iIAAiI;IAC9I,MAAM,EAAE,gBAAgB;IACxB,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,iBAAiB,EAAE,2BAA2B,EAAE,iBAAiB,CAAC;IACvH,KAAK,EAAE,MAAM;IACb,YAAY,EAAE,MAAM;IACpB,QAAQ,EAAE,yBAAyB;CACpC,CAAC"}