oh-my-claude-sisyphus 3.6.0 → 3.6.1

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 (314) hide show
  1. package/commands/omc-setup.md +3 -3
  2. package/commands/release.md +1 -1
  3. package/dist/__tests__/analytics/transcript-scanner.test.js +69 -27
  4. package/dist/__tests__/analytics/transcript-scanner.test.js.map +1 -1
  5. package/dist/__tests__/installer.test.js +2 -1
  6. package/dist/__tests__/installer.test.js.map +1 -1
  7. package/dist/analytics/session-manager.d.ts +24 -0
  8. package/dist/analytics/session-manager.d.ts.map +1 -1
  9. package/dist/analytics/session-manager.js +98 -9
  10. package/dist/analytics/session-manager.js.map +1 -1
  11. package/dist/analytics/transcript-scanner.d.ts +9 -8
  12. package/dist/analytics/transcript-scanner.d.ts.map +1 -1
  13. package/dist/analytics/transcript-scanner.js +146 -16
  14. package/dist/analytics/transcript-scanner.js.map +1 -1
  15. package/dist/cli/analytics.js +0 -0
  16. package/dist/cli/index.js +0 -0
  17. package/dist/hooks/empty-message-sanitizer/__tests__/index.test.d.ts +2 -0
  18. package/dist/hooks/empty-message-sanitizer/__tests__/index.test.d.ts.map +1 -0
  19. package/dist/hooks/empty-message-sanitizer/__tests__/index.test.js +416 -0
  20. package/dist/hooks/empty-message-sanitizer/__tests__/index.test.js.map +1 -0
  21. package/dist/hooks/keyword-detector/__tests__/index.test.d.ts +2 -0
  22. package/dist/hooks/keyword-detector/__tests__/index.test.d.ts.map +1 -0
  23. package/dist/hooks/keyword-detector/__tests__/index.test.js +427 -0
  24. package/dist/hooks/keyword-detector/__tests__/index.test.js.map +1 -0
  25. package/dist/hooks/think-mode/__tests__/index.test.d.ts +2 -0
  26. package/dist/hooks/think-mode/__tests__/index.test.d.ts.map +1 -0
  27. package/dist/hooks/think-mode/__tests__/index.test.js +556 -0
  28. package/dist/hooks/think-mode/__tests__/index.test.js.map +1 -0
  29. package/dist/installer/index.d.ts.map +1 -1
  30. package/dist/installer/index.js +8 -0
  31. package/dist/installer/index.js.map +1 -1
  32. package/package.json +1 -1
  33. package/skills/omc-setup/SKILL.md +27 -3
  34. package/skills/release/SKILL.md +1 -1
  35. package/dist/__tests__/analytics/analytics-summary.test.d.ts +0 -2
  36. package/dist/__tests__/analytics/analytics-summary.test.d.ts.map +0 -1
  37. package/dist/__tests__/analytics/analytics-summary.test.js +0 -267
  38. package/dist/__tests__/analytics/analytics-summary.test.js.map +0 -1
  39. package/dist/__tests__/analytics/cost-estimator.test.d.ts +0 -2
  40. package/dist/__tests__/analytics/cost-estimator.test.d.ts.map +0 -1
  41. package/dist/__tests__/analytics/cost-estimator.test.js +0 -212
  42. package/dist/__tests__/analytics/cost-estimator.test.js.map +0 -1
  43. package/dist/__tests__/hooks/auto-slash-command/executor.test.d.ts +0 -7
  44. package/dist/__tests__/hooks/auto-slash-command/executor.test.d.ts.map +0 -1
  45. package/dist/__tests__/hooks/auto-slash-command/executor.test.js +0 -374
  46. package/dist/__tests__/hooks/auto-slash-command/executor.test.js.map +0 -1
  47. package/dist/__tests__/hud/auto-tracking.integration.test.d.ts +0 -2
  48. package/dist/__tests__/hud/auto-tracking.integration.test.d.ts.map +0 -1
  49. package/dist/__tests__/hud/auto-tracking.integration.test.js +0 -12
  50. package/dist/__tests__/hud/auto-tracking.integration.test.js.map +0 -1
  51. package/dist/__tests__/learned-skills/config.test.d.ts +0 -2
  52. package/dist/__tests__/learned-skills/config.test.d.ts.map +0 -1
  53. package/dist/__tests__/learned-skills/config.test.js +0 -37
  54. package/dist/__tests__/learned-skills/config.test.js.map +0 -1
  55. package/dist/__tests__/learned-skills/detector.test.d.ts +0 -2
  56. package/dist/__tests__/learned-skills/detector.test.d.ts.map +0 -1
  57. package/dist/__tests__/learned-skills/detector.test.js +0 -99
  58. package/dist/__tests__/learned-skills/detector.test.js.map +0 -1
  59. package/dist/__tests__/learned-skills/finder.test.d.ts +0 -2
  60. package/dist/__tests__/learned-skills/finder.test.d.ts.map +0 -1
  61. package/dist/__tests__/learned-skills/finder.test.js +0 -59
  62. package/dist/__tests__/learned-skills/finder.test.js.map +0 -1
  63. package/dist/__tests__/learned-skills/loader.test.d.ts +0 -2
  64. package/dist/__tests__/learned-skills/loader.test.d.ts.map +0 -1
  65. package/dist/__tests__/learned-skills/loader.test.js +0 -69
  66. package/dist/__tests__/learned-skills/loader.test.js.map +0 -1
  67. package/dist/__tests__/learned-skills/parser.test.d.ts +0 -2
  68. package/dist/__tests__/learned-skills/parser.test.d.ts.map +0 -1
  69. package/dist/__tests__/learned-skills/parser.test.js +0 -81
  70. package/dist/__tests__/learned-skills/parser.test.js.map +0 -1
  71. package/dist/__tests__/learned-skills/validator.test.d.ts +0 -2
  72. package/dist/__tests__/learned-skills/validator.test.d.ts.map +0 -1
  73. package/dist/__tests__/learned-skills/validator.test.js +0 -85
  74. package/dist/__tests__/learned-skills/validator.test.js.map +0 -1
  75. package/dist/agents/codex-agents.d.ts +0 -20
  76. package/dist/agents/codex-agents.d.ts.map +0 -1
  77. package/dist/agents/codex-agents.js +0 -36
  78. package/dist/agents/codex-agents.js.map +0 -1
  79. package/dist/agents/document-writer.d.ts +0 -11
  80. package/dist/agents/document-writer.d.ts.map +0 -1
  81. package/dist/agents/document-writer.js +0 -209
  82. package/dist/agents/document-writer.js.map +0 -1
  83. package/dist/agents/frontend-engineer.d.ts +0 -11
  84. package/dist/agents/frontend-engineer.d.ts.map +0 -1
  85. package/dist/agents/frontend-engineer.js +0 -115
  86. package/dist/agents/frontend-engineer.js.map +0 -1
  87. package/dist/agents/librarian.d.ts +0 -12
  88. package/dist/agents/librarian.d.ts.map +0 -1
  89. package/dist/agents/librarian.js +0 -103
  90. package/dist/agents/librarian.js.map +0 -1
  91. package/dist/agents/metis.d.ts +0 -12
  92. package/dist/agents/metis.d.ts.map +0 -1
  93. package/dist/agents/metis.js +0 -117
  94. package/dist/agents/metis.js.map +0 -1
  95. package/dist/agents/momus.d.ts +0 -12
  96. package/dist/agents/momus.d.ts.map +0 -1
  97. package/dist/agents/momus.js +0 -128
  98. package/dist/agents/momus.js.map +0 -1
  99. package/dist/agents/multimodal-looker.d.ts +0 -11
  100. package/dist/agents/multimodal-looker.d.ts.map +0 -1
  101. package/dist/agents/multimodal-looker.js +0 -70
  102. package/dist/agents/multimodal-looker.js.map +0 -1
  103. package/dist/agents/oracle.d.ts +0 -13
  104. package/dist/agents/oracle.d.ts.map +0 -1
  105. package/dist/agents/oracle.js +0 -191
  106. package/dist/agents/oracle.js.map +0 -1
  107. package/dist/agents/orchestrator-sisyphus.d.ts +0 -11
  108. package/dist/agents/orchestrator-sisyphus.d.ts.map +0 -1
  109. package/dist/agents/orchestrator-sisyphus.js +0 -115
  110. package/dist/agents/orchestrator-sisyphus.js.map +0 -1
  111. package/dist/agents/prometheus.d.ts +0 -12
  112. package/dist/agents/prometheus.d.ts.map +0 -1
  113. package/dist/agents/prometheus.js +0 -195
  114. package/dist/agents/prometheus.js.map +0 -1
  115. package/dist/agents/sisyphus-junior.d.ts +0 -12
  116. package/dist/agents/sisyphus-junior.d.ts.map +0 -1
  117. package/dist/agents/sisyphus-junior.js +0 -93
  118. package/dist/agents/sisyphus-junior.js.map +0 -1
  119. package/dist/cli/components/CostDashboard.d.ts +0 -15
  120. package/dist/cli/components/CostDashboard.d.ts.map +0 -1
  121. package/dist/cli/components/CostDashboard.js +0 -15
  122. package/dist/cli/components/CostDashboard.js.map +0 -1
  123. package/dist/cli/components/LiveStats.d.ts +0 -16
  124. package/dist/cli/components/LiveStats.d.ts.map +0 -1
  125. package/dist/cli/components/LiveStats.js +0 -16
  126. package/dist/cli/components/LiveStats.js.map +0 -1
  127. package/dist/cli/components/SessionBrowser.d.ts +0 -14
  128. package/dist/cli/components/SessionBrowser.d.ts.map +0 -1
  129. package/dist/cli/components/SessionBrowser.js +0 -14
  130. package/dist/cli/components/SessionBrowser.js.map +0 -1
  131. package/dist/cli/tui.d.ts +0 -21
  132. package/dist/cli/tui.d.ts.map +0 -1
  133. package/dist/cli/tui.js +0 -21
  134. package/dist/cli/tui.js.map +0 -1
  135. package/dist/hooks/autopilot/signals.d.ts +0 -20
  136. package/dist/hooks/autopilot/signals.d.ts.map +0 -1
  137. package/dist/hooks/autopilot/signals.js +0 -75
  138. package/dist/hooks/autopilot/signals.js.map +0 -1
  139. package/dist/hooks/autopilot/summary.d.ts +0 -27
  140. package/dist/hooks/autopilot/summary.d.ts.map +0 -1
  141. package/dist/hooks/autopilot/summary.js +0 -160
  142. package/dist/hooks/autopilot/summary.js.map +0 -1
  143. package/dist/hooks/autopilot/transition.d.ts +0 -39
  144. package/dist/hooks/autopilot/transition.d.ts.map +0 -1
  145. package/dist/hooks/autopilot/transition.js +0 -216
  146. package/dist/hooks/autopilot/transition.js.map +0 -1
  147. package/dist/hooks/context-window-limit-recovery/constants.d.ts +0 -28
  148. package/dist/hooks/context-window-limit-recovery/constants.d.ts.map +0 -1
  149. package/dist/hooks/context-window-limit-recovery/constants.js +0 -85
  150. package/dist/hooks/context-window-limit-recovery/constants.js.map +0 -1
  151. package/dist/hooks/context-window-limit-recovery/index.d.ts +0 -62
  152. package/dist/hooks/context-window-limit-recovery/index.d.ts.map +0 -1
  153. package/dist/hooks/context-window-limit-recovery/index.js +0 -201
  154. package/dist/hooks/context-window-limit-recovery/index.js.map +0 -1
  155. package/dist/hooks/context-window-limit-recovery/parser.d.ts +0 -31
  156. package/dist/hooks/context-window-limit-recovery/parser.d.ts.map +0 -1
  157. package/dist/hooks/context-window-limit-recovery/parser.js +0 -241
  158. package/dist/hooks/context-window-limit-recovery/parser.js.map +0 -1
  159. package/dist/hooks/context-window-limit-recovery/types.d.ts +0 -84
  160. package/dist/hooks/context-window-limit-recovery/types.d.ts.map +0 -1
  161. package/dist/hooks/context-window-limit-recovery/types.js +0 -34
  162. package/dist/hooks/context-window-limit-recovery/types.js.map +0 -1
  163. package/dist/hooks/edit-error-recovery/index.d.ts +0 -62
  164. package/dist/hooks/edit-error-recovery/index.d.ts.map +0 -1
  165. package/dist/hooks/edit-error-recovery/index.js +0 -89
  166. package/dist/hooks/edit-error-recovery/index.js.map +0 -1
  167. package/dist/hooks/learned-skills/config.d.ts +0 -53
  168. package/dist/hooks/learned-skills/config.d.ts.map +0 -1
  169. package/dist/hooks/learned-skills/config.js +0 -103
  170. package/dist/hooks/learned-skills/config.js.map +0 -1
  171. package/dist/hooks/learned-skills/constants.d.ts +0 -24
  172. package/dist/hooks/learned-skills/constants.d.ts.map +0 -1
  173. package/dist/hooks/learned-skills/constants.js +0 -26
  174. package/dist/hooks/learned-skills/constants.js.map +0 -1
  175. package/dist/hooks/learned-skills/detection-hook.d.ts +0 -39
  176. package/dist/hooks/learned-skills/detection-hook.d.ts.map +0 -1
  177. package/dist/hooks/learned-skills/detection-hook.js +0 -83
  178. package/dist/hooks/learned-skills/detection-hook.js.map +0 -1
  179. package/dist/hooks/learned-skills/detector.d.ts +0 -30
  180. package/dist/hooks/learned-skills/detector.d.ts.map +0 -1
  181. package/dist/hooks/learned-skills/detector.js +0 -150
  182. package/dist/hooks/learned-skills/detector.js.map +0 -1
  183. package/dist/hooks/learned-skills/finder.d.ts +0 -21
  184. package/dist/hooks/learned-skills/finder.d.ts.map +0 -1
  185. package/dist/hooks/learned-skills/finder.js +0 -117
  186. package/dist/hooks/learned-skills/finder.js.map +0 -1
  187. package/dist/hooks/learned-skills/index.d.ts +0 -62
  188. package/dist/hooks/learned-skills/index.d.ts.map +0 -1
  189. package/dist/hooks/learned-skills/index.js +0 -137
  190. package/dist/hooks/learned-skills/index.js.map +0 -1
  191. package/dist/hooks/learned-skills/loader.d.ts +0 -20
  192. package/dist/hooks/learned-skills/loader.d.ts.map +0 -1
  193. package/dist/hooks/learned-skills/loader.js +0 -107
  194. package/dist/hooks/learned-skills/loader.js.map +0 -1
  195. package/dist/hooks/learned-skills/parser.d.ts +0 -21
  196. package/dist/hooks/learned-skills/parser.d.ts.map +0 -1
  197. package/dist/hooks/learned-skills/parser.js +0 -190
  198. package/dist/hooks/learned-skills/parser.js.map +0 -1
  199. package/dist/hooks/learned-skills/promotion.d.ts +0 -29
  200. package/dist/hooks/learned-skills/promotion.d.ts.map +0 -1
  201. package/dist/hooks/learned-skills/promotion.js +0 -87
  202. package/dist/hooks/learned-skills/promotion.js.map +0 -1
  203. package/dist/hooks/learned-skills/types.d.ts +0 -109
  204. package/dist/hooks/learned-skills/types.d.ts.map +0 -1
  205. package/dist/hooks/learned-skills/types.js +0 -8
  206. package/dist/hooks/learned-skills/types.js.map +0 -1
  207. package/dist/hooks/learned-skills/validator.d.ts +0 -15
  208. package/dist/hooks/learned-skills/validator.d.ts.map +0 -1
  209. package/dist/hooks/learned-skills/validator.js +0 -87
  210. package/dist/hooks/learned-skills/validator.js.map +0 -1
  211. package/dist/hooks/learned-skills/writer.d.ts +0 -27
  212. package/dist/hooks/learned-skills/writer.d.ts.map +0 -1
  213. package/dist/hooks/learned-skills/writer.js +0 -126
  214. package/dist/hooks/learned-skills/writer.js.map +0 -1
  215. package/dist/hooks/mnemosyne/config.d.ts +0 -53
  216. package/dist/hooks/mnemosyne/config.d.ts.map +0 -1
  217. package/dist/hooks/mnemosyne/config.js +0 -103
  218. package/dist/hooks/mnemosyne/config.js.map +0 -1
  219. package/dist/hooks/mnemosyne/constants.d.ts +0 -24
  220. package/dist/hooks/mnemosyne/constants.d.ts.map +0 -1
  221. package/dist/hooks/mnemosyne/constants.js +0 -26
  222. package/dist/hooks/mnemosyne/constants.js.map +0 -1
  223. package/dist/hooks/mnemosyne/detection-hook.d.ts +0 -39
  224. package/dist/hooks/mnemosyne/detection-hook.d.ts.map +0 -1
  225. package/dist/hooks/mnemosyne/detection-hook.js +0 -83
  226. package/dist/hooks/mnemosyne/detection-hook.js.map +0 -1
  227. package/dist/hooks/mnemosyne/detector.d.ts +0 -30
  228. package/dist/hooks/mnemosyne/detector.d.ts.map +0 -1
  229. package/dist/hooks/mnemosyne/detector.js +0 -150
  230. package/dist/hooks/mnemosyne/detector.js.map +0 -1
  231. package/dist/hooks/mnemosyne/finder.d.ts +0 -21
  232. package/dist/hooks/mnemosyne/finder.d.ts.map +0 -1
  233. package/dist/hooks/mnemosyne/finder.js +0 -117
  234. package/dist/hooks/mnemosyne/finder.js.map +0 -1
  235. package/dist/hooks/mnemosyne/index.d.ts +0 -62
  236. package/dist/hooks/mnemosyne/index.d.ts.map +0 -1
  237. package/dist/hooks/mnemosyne/index.js +0 -137
  238. package/dist/hooks/mnemosyne/index.js.map +0 -1
  239. package/dist/hooks/mnemosyne/loader.d.ts +0 -20
  240. package/dist/hooks/mnemosyne/loader.d.ts.map +0 -1
  241. package/dist/hooks/mnemosyne/loader.js +0 -113
  242. package/dist/hooks/mnemosyne/loader.js.map +0 -1
  243. package/dist/hooks/mnemosyne/parser.d.ts +0 -21
  244. package/dist/hooks/mnemosyne/parser.d.ts.map +0 -1
  245. package/dist/hooks/mnemosyne/parser.js +0 -190
  246. package/dist/hooks/mnemosyne/parser.js.map +0 -1
  247. package/dist/hooks/mnemosyne/promotion.d.ts +0 -29
  248. package/dist/hooks/mnemosyne/promotion.d.ts.map +0 -1
  249. package/dist/hooks/mnemosyne/promotion.js +0 -87
  250. package/dist/hooks/mnemosyne/promotion.js.map +0 -1
  251. package/dist/hooks/mnemosyne/types.d.ts +0 -109
  252. package/dist/hooks/mnemosyne/types.d.ts.map +0 -1
  253. package/dist/hooks/mnemosyne/types.js +0 -8
  254. package/dist/hooks/mnemosyne/types.js.map +0 -1
  255. package/dist/hooks/mnemosyne/validator.d.ts +0 -15
  256. package/dist/hooks/mnemosyne/validator.d.ts.map +0 -1
  257. package/dist/hooks/mnemosyne/validator.js +0 -87
  258. package/dist/hooks/mnemosyne/validator.js.map +0 -1
  259. package/dist/hooks/mnemosyne/writer.d.ts +0 -27
  260. package/dist/hooks/mnemosyne/writer.d.ts.map +0 -1
  261. package/dist/hooks/mnemosyne/writer.js +0 -126
  262. package/dist/hooks/mnemosyne/writer.js.map +0 -1
  263. package/dist/hooks/ralph-loop/index.d.ts +0 -116
  264. package/dist/hooks/ralph-loop/index.d.ts.map +0 -1
  265. package/dist/hooks/ralph-loop/index.js +0 -322
  266. package/dist/hooks/ralph-loop/index.js.map +0 -1
  267. package/dist/hooks/ralph-prd/index.d.ts +0 -130
  268. package/dist/hooks/ralph-prd/index.d.ts.map +0 -1
  269. package/dist/hooks/ralph-prd/index.js +0 -310
  270. package/dist/hooks/ralph-prd/index.js.map +0 -1
  271. package/dist/hooks/ralph-progress/index.d.ts +0 -102
  272. package/dist/hooks/ralph-progress/index.d.ts.map +0 -1
  273. package/dist/hooks/ralph-progress/index.js +0 -408
  274. package/dist/hooks/ralph-progress/index.js.map +0 -1
  275. package/dist/hooks/ralph-verifier/index.d.ts +0 -72
  276. package/dist/hooks/ralph-verifier/index.d.ts.map +0 -1
  277. package/dist/hooks/ralph-verifier/index.js +0 -223
  278. package/dist/hooks/ralph-verifier/index.js.map +0 -1
  279. package/dist/hooks/session-recovery/constants.d.ts +0 -56
  280. package/dist/hooks/session-recovery/constants.d.ts.map +0 -1
  281. package/dist/hooks/session-recovery/constants.js +0 -78
  282. package/dist/hooks/session-recovery/constants.js.map +0 -1
  283. package/dist/hooks/session-recovery/index.d.ts +0 -53
  284. package/dist/hooks/session-recovery/index.d.ts.map +0 -1
  285. package/dist/hooks/session-recovery/index.js +0 -321
  286. package/dist/hooks/session-recovery/index.js.map +0 -1
  287. package/dist/hooks/session-recovery/storage.d.ts +0 -76
  288. package/dist/hooks/session-recovery/storage.d.ts.map +0 -1
  289. package/dist/hooks/session-recovery/storage.js +0 -383
  290. package/dist/hooks/session-recovery/storage.js.map +0 -1
  291. package/dist/hooks/session-recovery/types.d.ts +0 -145
  292. package/dist/hooks/session-recovery/types.d.ts.map +0 -1
  293. package/dist/hooks/session-recovery/types.js +0 -8
  294. package/dist/hooks/session-recovery/types.js.map +0 -1
  295. package/dist/hooks/sisyphus-orchestrator/constants.d.ts +0 -23
  296. package/dist/hooks/sisyphus-orchestrator/constants.d.ts.map +0 -1
  297. package/dist/hooks/sisyphus-orchestrator/constants.js +0 -142
  298. package/dist/hooks/sisyphus-orchestrator/constants.js.map +0 -1
  299. package/dist/hooks/sisyphus-orchestrator/index.d.ts +0 -113
  300. package/dist/hooks/sisyphus-orchestrator/index.d.ts.map +0 -1
  301. package/dist/hooks/sisyphus-orchestrator/index.js +0 -309
  302. package/dist/hooks/sisyphus-orchestrator/index.js.map +0 -1
  303. package/dist/hooks/ultraqa-loop/index.d.ts +0 -94
  304. package/dist/hooks/ultraqa-loop/index.d.ts.map +0 -1
  305. package/dist/hooks/ultraqa-loop/index.js +0 -216
  306. package/dist/hooks/ultraqa-loop/index.js.map +0 -1
  307. package/dist/hooks/ultrawork-state/index.d.ts +0 -62
  308. package/dist/hooks/ultrawork-state/index.d.ts.map +0 -1
  309. package/dist/hooks/ultrawork-state/index.js +0 -208
  310. package/dist/hooks/ultrawork-state/index.js.map +0 -1
  311. package/dist/hud/sisyphus-state.d.ts +0 -31
  312. package/dist/hud/sisyphus-state.d.ts.map +0 -1
  313. package/dist/hud/sisyphus-state.js +0 -163
  314. package/dist/hud/sisyphus-state.js.map +0 -1
@@ -1 +0,0 @@
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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=config.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"config.test.d.ts","sourceRoot":"","sources":["../../../src/__tests__/learned-skills/config.test.ts"],"names":[],"mappings":""}
@@ -1,37 +0,0 @@
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
@@ -1 +0,0 @@
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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=detector.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"detector.test.d.ts","sourceRoot":"","sources":["../../../src/__tests__/learned-skills/detector.test.ts"],"names":[],"mappings":""}
@@ -1,99 +0,0 @@
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
@@ -1 +0,0 @@
1
- {"version":3,"file":"detector.test.js","sourceRoot":"","sources":["../../../src/__tests__/learned-skills/detector.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EACL,uBAAuB,EACvB,sBAAsB,EACtB,wBAAwB,GACzB,MAAM,wCAAwC,CAAC;AAEhD,QAAQ,CAAC,gBAAgB,EAAE,GAAG,EAAE;IAC9B,QAAQ,CAAC,yBAAyB,EAAE,GAAG,EAAE;QACvC,EAAE,CAAC,wCAAwC,EAAE,GAAG,EAAE;YAChD,MAAM,OAAO,GAAG,gFAAgF,CAAC;YAEjG,MAAM,MAAM,GAAG,uBAAuB,CAAC,OAAO,CAAC,CAAC;YAEhD,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACnC,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;YACpD,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;QAC/C,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,iCAAiC,EAAE,GAAG,EAAE;YACzC,MAAM,OAAO,GAAG,gFAAgF,CAAC;YAEjG,MAAM,MAAM,GAAG,uBAAuB,CAAC,OAAO,CAAC,CAAC;YAEhD,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACnC,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAC/C,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,qCAAqC,EAAE,GAAG,EAAE;YAC7C,MAAM,OAAO,GAAG,iFAAiF,CAAC;YAElG,MAAM,MAAM,GAAG,uBAAuB,CAAC,OAAO,CAAC,CAAC;YAEhD,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACnC,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;QACnD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,2CAA2C,EAAE,GAAG,EAAE;YACnD,MAAM,OAAO,GAAG,8DAA8D,CAAC;YAE/E,MAAM,MAAM,GAAG,uBAAuB,CAAC,OAAO,CAAC,CAAC;YAEhD,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACtC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,uDAAuD,EAAE,GAAG,EAAE;YAC/D,8EAA8E;YAC9E,MAAM,OAAO,GAAG,6FAA6F,CAAC;YAE9G,MAAM,MAAM,GAAG,uBAAuB,CAAC,OAAO,EAAE,iCAAiC,CAAC,CAAC;YAEnF,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACnC,MAAM,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;YACpD,MAAM,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;QAC3D,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,kCAAkC,EAAE,GAAG,EAAE;YAC1C,MAAM,OAAO,GAAG,yEAAyE,CAAC;YAE1F,MAAM,MAAM,GAAG,uBAAuB,CAAC,OAAO,CAAC,CAAC;YAEhD,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACnC,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAChD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,oCAAoC,EAAE,GAAG,EAAE;YAC5C,MAAM,OAAO,GAAG,qFAAqF,CAAC;YAEtG,MAAM,MAAM,GAAG,uBAAuB,CAAC,OAAO,CAAC,CAAC;YAEhD,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACnC,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QAClD,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,wBAAwB,EAAE,GAAG,EAAE;QACtC,EAAE,CAAC,sDAAsD,EAAE,GAAG,EAAE;YAC9D,MAAM,SAAS,GAAG;gBAChB,QAAQ,EAAE,IAAI;gBACd,UAAU,EAAE,EAAE;gBACd,WAAW,EAAE,kBAA2B;gBACxC,iBAAiB,EAAE,EAAE;gBACrB,MAAM,EAAE,MAAM;aACf,CAAC;YAEF,MAAM,CAAC,sBAAsB,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC3D,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,uCAAuC,EAAE,GAAG,EAAE;YAC/C,MAAM,SAAS,GAAG;gBAChB,QAAQ,EAAE,KAAK;gBACf,UAAU,EAAE,CAAC;gBACb,WAAW,EAAE,kBAA2B;gBACxC,iBAAiB,EAAE,EAAE;gBACrB,MAAM,EAAE,MAAM;aACf,CAAC;YAEF,MAAM,CAAC,sBAAsB,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACxD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,0CAA0C,EAAE,GAAG,EAAE;YAClD,MAAM,SAAS,GAAG;gBAChB,QAAQ,EAAE,IAAI;gBACd,UAAU,EAAE,EAAE;gBACd,WAAW,EAAE,kBAA2B;gBACxC,iBAAiB,EAAE,EAAE;gBACrB,MAAM,EAAE,MAAM;aACf,CAAC;YAEF,MAAM,CAAC,sBAAsB,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC5D,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,0BAA0B,EAAE,GAAG,EAAE;QACxC,EAAE,CAAC,+CAA+C,EAAE,GAAG,EAAE;YACvD,MAAM,SAAS,GAAG;gBAChB,QAAQ,EAAE,IAAI;gBACd,UAAU,EAAE,EAAE;gBACd,WAAW,EAAE,WAAoB;gBACjC,iBAAiB,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC;gBACrC,MAAM,EAAE,4BAA4B;aACrC,CAAC;YAEF,MAAM,MAAM,GAAG,wBAAwB,CAAC,SAAS,CAAC,CAAC;YAEnD,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,kBAAkB,CAAC,CAAC;YAC7C,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;YAChC,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;YACzC,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC;QAC7C,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=finder.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"finder.test.d.ts","sourceRoot":"","sources":["../../../src/__tests__/learned-skills/finder.test.ts"],"names":[],"mappings":""}
@@ -1,59 +0,0 @@
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
@@ -1 +0,0 @@
1
- {"version":3,"file":"finder.test.js","sourceRoot":"","sources":["../../../src/__tests__/learned-skills/finder.test.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=loader.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"loader.test.d.ts","sourceRoot":"","sources":["../../../src/__tests__/learned-skills/loader.test.ts"],"names":[],"mappings":""}
@@ -1,69 +0,0 @@
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
@@ -1 +0,0 @@
1
- {"version":3,"file":"loader.test.js","sourceRoot":"","sources":["../../../src/__tests__/learned-skills/loader.test.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=parser.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"parser.test.d.ts","sourceRoot":"","sources":["../../../src/__tests__/learned-skills/parser.test.ts"],"names":[],"mappings":""}
@@ -1,81 +0,0 @@
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
@@ -1 +0,0 @@
1
- {"version":3,"file":"parser.test.js","sourceRoot":"","sources":["../../../src/__tests__/learned-skills/parser.test.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=validator.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"validator.test.d.ts","sourceRoot":"","sources":["../../../src/__tests__/learned-skills/validator.test.ts"],"names":[],"mappings":""}
@@ -1,85 +0,0 @@
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
@@ -1 +0,0 @@
1
- {"version":3,"file":"validator.test.js","sourceRoot":"","sources":["../../../src/__tests__/learned-skills/validator.test.ts"],"names":[],"mappings":"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"}
@@ -1,20 +0,0 @@
1
- /**
2
- * Codex Agent Definitions
3
- * These agents route through the execute_codex MCP tool instead of Claude
4
- */
5
- export interface CodexAgentDefinition {
6
- name: string;
7
- description: string;
8
- systemPrompt?: string;
9
- model: string;
10
- }
11
- export declare const CODEX_AGENTS: Record<string, CodexAgentDefinition>;
12
- /**
13
- * Check if an agent type should be routed through Codex
14
- */
15
- export declare function isCodexAgent(agentType: string): boolean;
16
- /**
17
- * Get the Codex agent definition
18
- */
19
- export declare function getCodexAgent(agentType: string): CodexAgentDefinition | undefined;
20
- //# sourceMappingURL=codex-agents.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"codex-agents.d.ts","sourceRoot":"","sources":["../../src/agents/codex-agents.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,eAAO,MAAM,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,oBAAoB,CAkB7D,CAAC;AAEF;;GAEG;AACH,wBAAgB,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAGvD;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,oBAAoB,GAAG,SAAS,CAGjF"}
@@ -1,36 +0,0 @@
1
- /**
2
- * Codex Agent Definitions
3
- * These agents route through the execute_codex MCP tool instead of Claude
4
- */
5
- export const CODEX_AGENTS = {
6
- 'architect-codex': {
7
- name: 'architect-codex',
8
- description: 'Codex-powered Architecture & Debugging Advisor (Opus tier, uses OpenAI Codex CLI)',
9
- model: 'gpt-5.2'
10
- },
11
- 'planner-codex': {
12
- name: 'planner-codex',
13
- description: 'Codex-powered Strategic Planner (Opus tier, uses OpenAI Codex CLI)',
14
- model: 'gpt-5.2'
15
- },
16
- 'critic-codex': {
17
- name: 'critic-codex',
18
- description: 'Codex-powered Plan Reviewer and Critic (Opus tier, uses OpenAI Codex CLI)',
19
- model: 'gpt-5.2'
20
- }
21
- };
22
- /**
23
- * Check if an agent type should be routed through Codex
24
- */
25
- export function isCodexAgent(agentType) {
26
- const normalizedType = agentType.replace('oh-my-claudecode:', '');
27
- return Object.hasOwn(CODEX_AGENTS, normalizedType);
28
- }
29
- /**
30
- * Get the Codex agent definition
31
- */
32
- export function getCodexAgent(agentType) {
33
- const normalizedType = agentType.replace('oh-my-claudecode:', '');
34
- return CODEX_AGENTS[normalizedType];
35
- }
36
- //# sourceMappingURL=codex-agents.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"codex-agents.js","sourceRoot":"","sources":["../../src/agents/codex-agents.ts"],"names":[],"mappings":"AAAA;;;GAGG;AASH,MAAM,CAAC,MAAM,YAAY,GAAyC;IAChE,iBAAiB,EAAE;QACjB,IAAI,EAAE,iBAAiB;QACvB,WAAW,EAAE,mFAAmF;QAChG,KAAK,EAAE,SAAS;KACjB;IAED,eAAe,EAAE;QACf,IAAI,EAAE,eAAe;QACrB,WAAW,EAAE,oEAAoE;QACjF,KAAK,EAAE,SAAS;KACjB;IAED,cAAc,EAAE;QACd,IAAI,EAAE,cAAc;QACpB,WAAW,EAAE,2EAA2E;QACxF,KAAK,EAAE,SAAS;KACjB;CACF,CAAC;AAEF;;GAEG;AACH,MAAM,UAAU,YAAY,CAAC,SAAiB;IAC5C,MAAM,cAAc,GAAG,SAAS,CAAC,OAAO,CAAC,mBAAmB,EAAE,EAAE,CAAC,CAAC;IAClE,OAAO,MAAM,CAAC,MAAM,CAAC,YAAY,EAAE,cAAc,CAAC,CAAC;AACrD,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,aAAa,CAAC,SAAiB;IAC7C,MAAM,cAAc,GAAG,SAAS,CAAC,OAAO,CAAC,mBAAmB,EAAE,EAAE,CAAC,CAAC;IAClE,OAAO,YAAY,CAAC,cAAc,CAAC,CAAC;AACtC,CAAC"}
@@ -1,11 +0,0 @@
1
- /**
2
- * Document Writer Agent
3
- *
4
- * Technical writer who crafts clear, comprehensive documentation.
5
- *
6
- * Ported from oh-my-opencode's agent definitions.
7
- */
8
- import type { AgentConfig, AgentPromptMetadata } from './types.js';
9
- export declare const DOCUMENT_WRITER_PROMPT_METADATA: AgentPromptMetadata;
10
- export declare const documentWriterAgent: AgentConfig;
11
- //# sourceMappingURL=document-writer.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"document-writer.d.ts","sourceRoot":"","sources":["../../src/agents/document-writer.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAEnE,eAAO,MAAM,+BAA+B,EAAE,mBAsB7C,CAAC;AAEF,eAAO,MAAM,mBAAmB,EAAE,WAiLjC,CAAC"}