oh-my-claude-sisyphus 3.7.6 → 3.7.8

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 (421) hide show
  1. package/agents/AGENTS.md +144 -0
  2. package/dist/__tests__/analytics/analytics-summary.test.d.ts +2 -0
  3. package/dist/__tests__/analytics/analytics-summary.test.d.ts.map +1 -0
  4. package/dist/__tests__/analytics/analytics-summary.test.js +267 -0
  5. package/dist/__tests__/analytics/analytics-summary.test.js.map +1 -0
  6. package/dist/__tests__/analytics/cost-estimator.test.d.ts +2 -0
  7. package/dist/__tests__/analytics/cost-estimator.test.d.ts.map +1 -0
  8. package/dist/__tests__/analytics/cost-estimator.test.js +212 -0
  9. package/dist/__tests__/analytics/cost-estimator.test.js.map +1 -0
  10. package/dist/__tests__/hooks/auto-slash-command/executor.test.d.ts +7 -0
  11. package/dist/__tests__/hooks/auto-slash-command/executor.test.d.ts.map +1 -0
  12. package/dist/__tests__/hooks/auto-slash-command/executor.test.js +374 -0
  13. package/dist/__tests__/hooks/auto-slash-command/executor.test.js.map +1 -0
  14. package/dist/__tests__/hud/auto-tracking.integration.test.d.ts +2 -0
  15. package/dist/__tests__/hud/auto-tracking.integration.test.d.ts.map +1 -0
  16. package/dist/__tests__/hud/auto-tracking.integration.test.js +12 -0
  17. package/dist/__tests__/hud/auto-tracking.integration.test.js.map +1 -0
  18. package/dist/__tests__/learned-skills/config.test.d.ts +2 -0
  19. package/dist/__tests__/learned-skills/config.test.d.ts.map +1 -0
  20. package/dist/__tests__/learned-skills/config.test.js +37 -0
  21. package/dist/__tests__/learned-skills/config.test.js.map +1 -0
  22. package/dist/__tests__/learned-skills/detector.test.d.ts +2 -0
  23. package/dist/__tests__/learned-skills/detector.test.d.ts.map +1 -0
  24. package/dist/__tests__/learned-skills/detector.test.js +99 -0
  25. package/dist/__tests__/learned-skills/detector.test.js.map +1 -0
  26. package/dist/__tests__/learned-skills/finder.test.d.ts +2 -0
  27. package/dist/__tests__/learned-skills/finder.test.d.ts.map +1 -0
  28. package/dist/__tests__/learned-skills/finder.test.js +59 -0
  29. package/dist/__tests__/learned-skills/finder.test.js.map +1 -0
  30. package/dist/__tests__/learned-skills/loader.test.d.ts +2 -0
  31. package/dist/__tests__/learned-skills/loader.test.d.ts.map +1 -0
  32. package/dist/__tests__/learned-skills/loader.test.js +69 -0
  33. package/dist/__tests__/learned-skills/loader.test.js.map +1 -0
  34. package/dist/__tests__/learned-skills/parser.test.d.ts +2 -0
  35. package/dist/__tests__/learned-skills/parser.test.d.ts.map +1 -0
  36. package/dist/__tests__/learned-skills/parser.test.js +81 -0
  37. package/dist/__tests__/learned-skills/parser.test.js.map +1 -0
  38. package/dist/__tests__/learned-skills/validator.test.d.ts +2 -0
  39. package/dist/__tests__/learned-skills/validator.test.d.ts.map +1 -0
  40. package/dist/__tests__/learned-skills/validator.test.js +85 -0
  41. package/dist/__tests__/learned-skills/validator.test.js.map +1 -0
  42. package/dist/__tests__/omc-tools-server.test.d.ts +2 -0
  43. package/dist/__tests__/omc-tools-server.test.d.ts.map +1 -0
  44. package/dist/__tests__/omc-tools-server.test.js +52 -0
  45. package/dist/__tests__/omc-tools-server.test.js.map +1 -0
  46. package/dist/agents/architect.js +1 -1
  47. package/dist/agents/architect.js.map +1 -1
  48. package/dist/agents/codex-agents.d.ts +20 -0
  49. package/dist/agents/codex-agents.d.ts.map +1 -0
  50. package/dist/agents/codex-agents.js +36 -0
  51. package/dist/agents/codex-agents.js.map +1 -0
  52. package/dist/agents/definitions.js +13 -13
  53. package/dist/agents/definitions.js.map +1 -1
  54. package/dist/agents/document-writer.d.ts +11 -0
  55. package/dist/agents/document-writer.d.ts.map +1 -0
  56. package/dist/agents/document-writer.js +209 -0
  57. package/dist/agents/document-writer.js.map +1 -0
  58. package/dist/agents/executor.js +1 -1
  59. package/dist/agents/executor.js.map +1 -1
  60. package/dist/agents/explore.js +1 -1
  61. package/dist/agents/explore.js.map +1 -1
  62. package/dist/agents/frontend-engineer.d.ts +11 -0
  63. package/dist/agents/frontend-engineer.d.ts.map +1 -0
  64. package/dist/agents/frontend-engineer.js +115 -0
  65. package/dist/agents/frontend-engineer.js.map +1 -0
  66. package/dist/agents/librarian.d.ts +12 -0
  67. package/dist/agents/librarian.d.ts.map +1 -0
  68. package/dist/agents/librarian.js +103 -0
  69. package/dist/agents/librarian.js.map +1 -0
  70. package/dist/agents/metis.d.ts +12 -0
  71. package/dist/agents/metis.d.ts.map +1 -0
  72. package/dist/agents/metis.js +117 -0
  73. package/dist/agents/metis.js.map +1 -0
  74. package/dist/agents/momus.d.ts +12 -0
  75. package/dist/agents/momus.d.ts.map +1 -0
  76. package/dist/agents/momus.js +128 -0
  77. package/dist/agents/momus.js.map +1 -0
  78. package/dist/agents/multimodal-looker.d.ts +11 -0
  79. package/dist/agents/multimodal-looker.d.ts.map +1 -0
  80. package/dist/agents/multimodal-looker.js +70 -0
  81. package/dist/agents/multimodal-looker.js.map +1 -0
  82. package/dist/agents/oracle.d.ts +13 -0
  83. package/dist/agents/oracle.d.ts.map +1 -0
  84. package/dist/agents/oracle.js +191 -0
  85. package/dist/agents/oracle.js.map +1 -0
  86. package/dist/agents/orchestrator-sisyphus.d.ts +11 -0
  87. package/dist/agents/orchestrator-sisyphus.d.ts.map +1 -0
  88. package/dist/agents/orchestrator-sisyphus.js +115 -0
  89. package/dist/agents/orchestrator-sisyphus.js.map +1 -0
  90. package/dist/agents/prometheus.d.ts +12 -0
  91. package/dist/agents/prometheus.d.ts.map +1 -0
  92. package/dist/agents/prometheus.js +195 -0
  93. package/dist/agents/prometheus.js.map +1 -0
  94. package/dist/agents/qa-tester.js +1 -1
  95. package/dist/agents/qa-tester.js.map +1 -1
  96. package/dist/agents/sisyphus-junior.d.ts +12 -0
  97. package/dist/agents/sisyphus-junior.d.ts.map +1 -0
  98. package/dist/agents/sisyphus-junior.js +93 -0
  99. package/dist/agents/sisyphus-junior.js.map +1 -0
  100. package/dist/cli/analytics.js +0 -0
  101. package/dist/cli/components/CostDashboard.d.ts +15 -0
  102. package/dist/cli/components/CostDashboard.d.ts.map +1 -0
  103. package/dist/cli/components/CostDashboard.js +15 -0
  104. package/dist/cli/components/CostDashboard.js.map +1 -0
  105. package/dist/cli/components/LiveStats.d.ts +16 -0
  106. package/dist/cli/components/LiveStats.d.ts.map +1 -0
  107. package/dist/cli/components/LiveStats.js +16 -0
  108. package/dist/cli/components/LiveStats.js.map +1 -0
  109. package/dist/cli/components/SessionBrowser.d.ts +14 -0
  110. package/dist/cli/components/SessionBrowser.d.ts.map +1 -0
  111. package/dist/cli/components/SessionBrowser.js +14 -0
  112. package/dist/cli/components/SessionBrowser.js.map +1 -0
  113. package/dist/cli/index.js +0 -0
  114. package/dist/cli/tui.d.ts +21 -0
  115. package/dist/cli/tui.d.ts.map +1 -0
  116. package/dist/cli/tui.js +21 -0
  117. package/dist/cli/tui.js.map +1 -0
  118. package/dist/hooks/autopilot/signals.d.ts +20 -0
  119. package/dist/hooks/autopilot/signals.d.ts.map +1 -0
  120. package/dist/hooks/autopilot/signals.js +75 -0
  121. package/dist/hooks/autopilot/signals.js.map +1 -0
  122. package/dist/hooks/autopilot/summary.d.ts +27 -0
  123. package/dist/hooks/autopilot/summary.d.ts.map +1 -0
  124. package/dist/hooks/autopilot/summary.js +160 -0
  125. package/dist/hooks/autopilot/summary.js.map +1 -0
  126. package/dist/hooks/autopilot/transition.d.ts +39 -0
  127. package/dist/hooks/autopilot/transition.d.ts.map +1 -0
  128. package/dist/hooks/autopilot/transition.js +216 -0
  129. package/dist/hooks/autopilot/transition.js.map +1 -0
  130. package/dist/hooks/context-window-limit-recovery/constants.d.ts +28 -0
  131. package/dist/hooks/context-window-limit-recovery/constants.d.ts.map +1 -0
  132. package/dist/hooks/context-window-limit-recovery/constants.js +85 -0
  133. package/dist/hooks/context-window-limit-recovery/constants.js.map +1 -0
  134. package/dist/hooks/context-window-limit-recovery/index.d.ts +62 -0
  135. package/dist/hooks/context-window-limit-recovery/index.d.ts.map +1 -0
  136. package/dist/hooks/context-window-limit-recovery/index.js +201 -0
  137. package/dist/hooks/context-window-limit-recovery/index.js.map +1 -0
  138. package/dist/hooks/context-window-limit-recovery/parser.d.ts +31 -0
  139. package/dist/hooks/context-window-limit-recovery/parser.d.ts.map +1 -0
  140. package/dist/hooks/context-window-limit-recovery/parser.js +241 -0
  141. package/dist/hooks/context-window-limit-recovery/parser.js.map +1 -0
  142. package/dist/hooks/context-window-limit-recovery/types.d.ts +84 -0
  143. package/dist/hooks/context-window-limit-recovery/types.d.ts.map +1 -0
  144. package/dist/hooks/context-window-limit-recovery/types.js +34 -0
  145. package/dist/hooks/context-window-limit-recovery/types.js.map +1 -0
  146. package/dist/hooks/edit-error-recovery/index.d.ts +62 -0
  147. package/dist/hooks/edit-error-recovery/index.d.ts.map +1 -0
  148. package/dist/hooks/edit-error-recovery/index.js +89 -0
  149. package/dist/hooks/edit-error-recovery/index.js.map +1 -0
  150. package/dist/hooks/github-auto-responder/classifier.d.ts +43 -0
  151. package/dist/hooks/github-auto-responder/classifier.d.ts.map +1 -0
  152. package/dist/hooks/github-auto-responder/classifier.js +150 -0
  153. package/dist/hooks/github-auto-responder/classifier.js.map +1 -0
  154. package/dist/hooks/github-auto-responder/config.d.ts +109 -0
  155. package/dist/hooks/github-auto-responder/config.d.ts.map +1 -0
  156. package/dist/hooks/github-auto-responder/config.js +69 -0
  157. package/dist/hooks/github-auto-responder/config.js.map +1 -0
  158. package/dist/hooks/github-auto-responder/constants.d.ts +45 -0
  159. package/dist/hooks/github-auto-responder/constants.d.ts.map +1 -0
  160. package/dist/hooks/github-auto-responder/constants.js +60 -0
  161. package/dist/hooks/github-auto-responder/constants.js.map +1 -0
  162. package/dist/hooks/github-auto-responder/filters.d.ts +95 -0
  163. package/dist/hooks/github-auto-responder/filters.d.ts.map +1 -0
  164. package/dist/hooks/github-auto-responder/filters.js +174 -0
  165. package/dist/hooks/github-auto-responder/filters.js.map +1 -0
  166. package/dist/hooks/github-auto-responder/github-client.d.ts +65 -0
  167. package/dist/hooks/github-auto-responder/github-client.d.ts.map +1 -0
  168. package/dist/hooks/github-auto-responder/github-client.js +128 -0
  169. package/dist/hooks/github-auto-responder/github-client.js.map +1 -0
  170. package/dist/hooks/github-auto-responder/idempotency.d.ts +68 -0
  171. package/dist/hooks/github-auto-responder/idempotency.d.ts.map +1 -0
  172. package/dist/hooks/github-auto-responder/idempotency.js +147 -0
  173. package/dist/hooks/github-auto-responder/idempotency.js.map +1 -0
  174. package/dist/hooks/github-auto-responder/index.d.ts +140 -0
  175. package/dist/hooks/github-auto-responder/index.d.ts.map +1 -0
  176. package/dist/hooks/github-auto-responder/index.js +145 -0
  177. package/dist/hooks/github-auto-responder/index.js.map +1 -0
  178. package/dist/hooks/github-auto-responder/persona.d.ts +40 -0
  179. package/dist/hooks/github-auto-responder/persona.d.ts.map +1 -0
  180. package/dist/hooks/github-auto-responder/persona.js +99 -0
  181. package/dist/hooks/github-auto-responder/persona.js.map +1 -0
  182. package/dist/hooks/github-auto-responder/responder.d.ts +122 -0
  183. package/dist/hooks/github-auto-responder/responder.d.ts.map +1 -0
  184. package/dist/hooks/github-auto-responder/responder.js +264 -0
  185. package/dist/hooks/github-auto-responder/responder.js.map +1 -0
  186. package/dist/hooks/github-auto-responder/server.d.ts +140 -0
  187. package/dist/hooks/github-auto-responder/server.d.ts.map +1 -0
  188. package/dist/hooks/github-auto-responder/server.js +301 -0
  189. package/dist/hooks/github-auto-responder/server.js.map +1 -0
  190. package/dist/hooks/github-auto-responder/signature.d.ts +34 -0
  191. package/dist/hooks/github-auto-responder/signature.d.ts.map +1 -0
  192. package/dist/hooks/github-auto-responder/signature.js +79 -0
  193. package/dist/hooks/github-auto-responder/signature.js.map +1 -0
  194. package/dist/hooks/github-auto-responder/templates.d.ts +16 -0
  195. package/dist/hooks/github-auto-responder/templates.d.ts.map +1 -0
  196. package/dist/hooks/github-auto-responder/templates.js +93 -0
  197. package/dist/hooks/github-auto-responder/templates.js.map +1 -0
  198. package/dist/hooks/github-auto-responder/types.d.ts +246 -0
  199. package/dist/hooks/github-auto-responder/types.d.ts.map +1 -0
  200. package/dist/hooks/github-auto-responder/types.js +7 -0
  201. package/dist/hooks/github-auto-responder/types.js.map +1 -0
  202. package/dist/hooks/learned-skills/config.d.ts +53 -0
  203. package/dist/hooks/learned-skills/config.d.ts.map +1 -0
  204. package/dist/hooks/learned-skills/config.js +103 -0
  205. package/dist/hooks/learned-skills/config.js.map +1 -0
  206. package/dist/hooks/learned-skills/constants.d.ts +24 -0
  207. package/dist/hooks/learned-skills/constants.d.ts.map +1 -0
  208. package/dist/hooks/learned-skills/constants.js +26 -0
  209. package/dist/hooks/learned-skills/constants.js.map +1 -0
  210. package/dist/hooks/learned-skills/detection-hook.d.ts +39 -0
  211. package/dist/hooks/learned-skills/detection-hook.d.ts.map +1 -0
  212. package/dist/hooks/learned-skills/detection-hook.js +83 -0
  213. package/dist/hooks/learned-skills/detection-hook.js.map +1 -0
  214. package/dist/hooks/learned-skills/detector.d.ts +30 -0
  215. package/dist/hooks/learned-skills/detector.d.ts.map +1 -0
  216. package/dist/hooks/learned-skills/detector.js +150 -0
  217. package/dist/hooks/learned-skills/detector.js.map +1 -0
  218. package/dist/hooks/learned-skills/finder.d.ts +21 -0
  219. package/dist/hooks/learned-skills/finder.d.ts.map +1 -0
  220. package/dist/hooks/learned-skills/finder.js +117 -0
  221. package/dist/hooks/learned-skills/finder.js.map +1 -0
  222. package/dist/hooks/learned-skills/index.d.ts +62 -0
  223. package/dist/hooks/learned-skills/index.d.ts.map +1 -0
  224. package/dist/hooks/learned-skills/index.js +137 -0
  225. package/dist/hooks/learned-skills/index.js.map +1 -0
  226. package/dist/hooks/learned-skills/loader.d.ts +20 -0
  227. package/dist/hooks/learned-skills/loader.d.ts.map +1 -0
  228. package/dist/hooks/learned-skills/loader.js +107 -0
  229. package/dist/hooks/learned-skills/loader.js.map +1 -0
  230. package/dist/hooks/learned-skills/parser.d.ts +21 -0
  231. package/dist/hooks/learned-skills/parser.d.ts.map +1 -0
  232. package/dist/hooks/learned-skills/parser.js +190 -0
  233. package/dist/hooks/learned-skills/parser.js.map +1 -0
  234. package/dist/hooks/learned-skills/promotion.d.ts +29 -0
  235. package/dist/hooks/learned-skills/promotion.d.ts.map +1 -0
  236. package/dist/hooks/learned-skills/promotion.js +87 -0
  237. package/dist/hooks/learned-skills/promotion.js.map +1 -0
  238. package/dist/hooks/learned-skills/types.d.ts +109 -0
  239. package/dist/hooks/learned-skills/types.d.ts.map +1 -0
  240. package/dist/hooks/learned-skills/types.js +8 -0
  241. package/dist/hooks/learned-skills/types.js.map +1 -0
  242. package/dist/hooks/learned-skills/validator.d.ts +15 -0
  243. package/dist/hooks/learned-skills/validator.d.ts.map +1 -0
  244. package/dist/hooks/learned-skills/validator.js +87 -0
  245. package/dist/hooks/learned-skills/validator.js.map +1 -0
  246. package/dist/hooks/learned-skills/writer.d.ts +27 -0
  247. package/dist/hooks/learned-skills/writer.d.ts.map +1 -0
  248. package/dist/hooks/learned-skills/writer.js +126 -0
  249. package/dist/hooks/learned-skills/writer.js.map +1 -0
  250. package/dist/hooks/mnemosyne/config.d.ts +53 -0
  251. package/dist/hooks/mnemosyne/config.d.ts.map +1 -0
  252. package/dist/hooks/mnemosyne/config.js +103 -0
  253. package/dist/hooks/mnemosyne/config.js.map +1 -0
  254. package/dist/hooks/mnemosyne/constants.d.ts +24 -0
  255. package/dist/hooks/mnemosyne/constants.d.ts.map +1 -0
  256. package/dist/hooks/mnemosyne/constants.js +26 -0
  257. package/dist/hooks/mnemosyne/constants.js.map +1 -0
  258. package/dist/hooks/mnemosyne/detection-hook.d.ts +39 -0
  259. package/dist/hooks/mnemosyne/detection-hook.d.ts.map +1 -0
  260. package/dist/hooks/mnemosyne/detection-hook.js +83 -0
  261. package/dist/hooks/mnemosyne/detection-hook.js.map +1 -0
  262. package/dist/hooks/mnemosyne/detector.d.ts +30 -0
  263. package/dist/hooks/mnemosyne/detector.d.ts.map +1 -0
  264. package/dist/hooks/mnemosyne/detector.js +150 -0
  265. package/dist/hooks/mnemosyne/detector.js.map +1 -0
  266. package/dist/hooks/mnemosyne/finder.d.ts +21 -0
  267. package/dist/hooks/mnemosyne/finder.d.ts.map +1 -0
  268. package/dist/hooks/mnemosyne/finder.js +117 -0
  269. package/dist/hooks/mnemosyne/finder.js.map +1 -0
  270. package/dist/hooks/mnemosyne/index.d.ts +62 -0
  271. package/dist/hooks/mnemosyne/index.d.ts.map +1 -0
  272. package/dist/hooks/mnemosyne/index.js +137 -0
  273. package/dist/hooks/mnemosyne/index.js.map +1 -0
  274. package/dist/hooks/mnemosyne/loader.d.ts +20 -0
  275. package/dist/hooks/mnemosyne/loader.d.ts.map +1 -0
  276. package/dist/hooks/mnemosyne/loader.js +113 -0
  277. package/dist/hooks/mnemosyne/loader.js.map +1 -0
  278. package/dist/hooks/mnemosyne/parser.d.ts +21 -0
  279. package/dist/hooks/mnemosyne/parser.d.ts.map +1 -0
  280. package/dist/hooks/mnemosyne/parser.js +190 -0
  281. package/dist/hooks/mnemosyne/parser.js.map +1 -0
  282. package/dist/hooks/mnemosyne/promotion.d.ts +29 -0
  283. package/dist/hooks/mnemosyne/promotion.d.ts.map +1 -0
  284. package/dist/hooks/mnemosyne/promotion.js +87 -0
  285. package/dist/hooks/mnemosyne/promotion.js.map +1 -0
  286. package/dist/hooks/mnemosyne/types.d.ts +109 -0
  287. package/dist/hooks/mnemosyne/types.d.ts.map +1 -0
  288. package/dist/hooks/mnemosyne/types.js +8 -0
  289. package/dist/hooks/mnemosyne/types.js.map +1 -0
  290. package/dist/hooks/mnemosyne/validator.d.ts +15 -0
  291. package/dist/hooks/mnemosyne/validator.d.ts.map +1 -0
  292. package/dist/hooks/mnemosyne/validator.js +87 -0
  293. package/dist/hooks/mnemosyne/validator.js.map +1 -0
  294. package/dist/hooks/mnemosyne/writer.d.ts +27 -0
  295. package/dist/hooks/mnemosyne/writer.d.ts.map +1 -0
  296. package/dist/hooks/mnemosyne/writer.js +126 -0
  297. package/dist/hooks/mnemosyne/writer.js.map +1 -0
  298. package/dist/hooks/ralph-loop/index.d.ts +116 -0
  299. package/dist/hooks/ralph-loop/index.d.ts.map +1 -0
  300. package/dist/hooks/ralph-loop/index.js +322 -0
  301. package/dist/hooks/ralph-loop/index.js.map +1 -0
  302. package/dist/hooks/ralph-prd/index.d.ts +130 -0
  303. package/dist/hooks/ralph-prd/index.d.ts.map +1 -0
  304. package/dist/hooks/ralph-prd/index.js +310 -0
  305. package/dist/hooks/ralph-prd/index.js.map +1 -0
  306. package/dist/hooks/ralph-progress/index.d.ts +102 -0
  307. package/dist/hooks/ralph-progress/index.d.ts.map +1 -0
  308. package/dist/hooks/ralph-progress/index.js +408 -0
  309. package/dist/hooks/ralph-progress/index.js.map +1 -0
  310. package/dist/hooks/ralph-verifier/index.d.ts +72 -0
  311. package/dist/hooks/ralph-verifier/index.d.ts.map +1 -0
  312. package/dist/hooks/ralph-verifier/index.js +223 -0
  313. package/dist/hooks/ralph-verifier/index.js.map +1 -0
  314. package/dist/hooks/session-recovery/constants.d.ts +56 -0
  315. package/dist/hooks/session-recovery/constants.d.ts.map +1 -0
  316. package/dist/hooks/session-recovery/constants.js +78 -0
  317. package/dist/hooks/session-recovery/constants.js.map +1 -0
  318. package/dist/hooks/session-recovery/index.d.ts +53 -0
  319. package/dist/hooks/session-recovery/index.d.ts.map +1 -0
  320. package/dist/hooks/session-recovery/index.js +321 -0
  321. package/dist/hooks/session-recovery/index.js.map +1 -0
  322. package/dist/hooks/session-recovery/storage.d.ts +76 -0
  323. package/dist/hooks/session-recovery/storage.d.ts.map +1 -0
  324. package/dist/hooks/session-recovery/storage.js +383 -0
  325. package/dist/hooks/session-recovery/storage.js.map +1 -0
  326. package/dist/hooks/session-recovery/types.d.ts +145 -0
  327. package/dist/hooks/session-recovery/types.d.ts.map +1 -0
  328. package/dist/hooks/session-recovery/types.js +8 -0
  329. package/dist/hooks/session-recovery/types.js.map +1 -0
  330. package/dist/hooks/sisyphus-orchestrator/constants.d.ts +23 -0
  331. package/dist/hooks/sisyphus-orchestrator/constants.d.ts.map +1 -0
  332. package/dist/hooks/sisyphus-orchestrator/constants.js +142 -0
  333. package/dist/hooks/sisyphus-orchestrator/constants.js.map +1 -0
  334. package/dist/hooks/sisyphus-orchestrator/index.d.ts +113 -0
  335. package/dist/hooks/sisyphus-orchestrator/index.d.ts.map +1 -0
  336. package/dist/hooks/sisyphus-orchestrator/index.js +309 -0
  337. package/dist/hooks/sisyphus-orchestrator/index.js.map +1 -0
  338. package/dist/hooks/ultraqa-loop/index.d.ts +94 -0
  339. package/dist/hooks/ultraqa-loop/index.d.ts.map +1 -0
  340. package/dist/hooks/ultraqa-loop/index.js +216 -0
  341. package/dist/hooks/ultraqa-loop/index.js.map +1 -0
  342. package/dist/hooks/ultrawork-state/index.d.ts +62 -0
  343. package/dist/hooks/ultrawork-state/index.d.ts.map +1 -0
  344. package/dist/hooks/ultrawork-state/index.js +208 -0
  345. package/dist/hooks/ultrawork-state/index.js.map +1 -0
  346. package/dist/hud/sisyphus-state.d.ts +31 -0
  347. package/dist/hud/sisyphus-state.d.ts.map +1 -0
  348. package/dist/hud/sisyphus-state.js +163 -0
  349. package/dist/hud/sisyphus-state.js.map +1 -0
  350. package/dist/index.d.ts +1 -0
  351. package/dist/index.d.ts.map +1 -1
  352. package/dist/index.js +15 -3
  353. package/dist/index.js.map +1 -1
  354. package/dist/mcp/index.d.ts +1 -0
  355. package/dist/mcp/index.d.ts.map +1 -1
  356. package/dist/mcp/index.js +2 -0
  357. package/dist/mcp/index.js.map +1 -1
  358. package/dist/mcp/omc-tools-server.d.ts +25 -0
  359. package/dist/mcp/omc-tools-server.d.ts.map +1 -0
  360. package/dist/mcp/omc-tools-server.js +49 -0
  361. package/dist/mcp/omc-tools-server.js.map +1 -0
  362. package/dist/tools/ast-tools.d.ts.map +1 -1
  363. package/dist/tools/ast-tools.js +19 -39
  364. package/dist/tools/ast-tools.js.map +1 -1
  365. package/dist/tools/diagnostics/index.d.ts +7 -32
  366. package/dist/tools/diagnostics/index.d.ts.map +1 -1
  367. package/dist/tools/diagnostics/index.js +41 -171
  368. package/dist/tools/diagnostics/index.js.map +1 -1
  369. package/dist/tools/diagnostics/lsp-aggregator.d.ts +1 -13
  370. package/dist/tools/diagnostics/lsp-aggregator.d.ts.map +1 -1
  371. package/dist/tools/diagnostics/lsp-aggregator.js +4 -32
  372. package/dist/tools/diagnostics/lsp-aggregator.js.map +1 -1
  373. package/dist/tools/diagnostics/tsc-runner.d.ts +0 -6
  374. package/dist/tools/diagnostics/tsc-runner.d.ts.map +1 -1
  375. package/dist/tools/diagnostics/tsc-runner.js +5 -32
  376. package/dist/tools/diagnostics/tsc-runner.js.map +1 -1
  377. package/dist/tools/lsp/client.d.ts.map +1 -1
  378. package/dist/tools/lsp/client.js +1 -26
  379. package/dist/tools/lsp/client.js.map +1 -1
  380. package/dist/tools/lsp/servers.d.ts +0 -3
  381. package/dist/tools/lsp/servers.d.ts.map +1 -1
  382. package/dist/tools/lsp/servers.js +4 -111
  383. package/dist/tools/lsp/servers.js.map +1 -1
  384. package/dist/tools/lsp-tools.d.ts +2 -2
  385. package/dist/tools/lsp-tools.d.ts.map +1 -1
  386. package/dist/tools/lsp-tools.js +2 -2
  387. package/dist/tools/lsp-tools.js.map +1 -1
  388. package/package.json +1 -1
  389. package/skills/AGENTS.md +187 -0
  390. package/dist/tools/diagnostics/__tests__/detectProjectType.test.d.ts +0 -5
  391. package/dist/tools/diagnostics/__tests__/detectProjectType.test.d.ts.map +0 -1
  392. package/dist/tools/diagnostics/__tests__/detectProjectType.test.js +0 -42
  393. package/dist/tools/diagnostics/__tests__/detectProjectType.test.js.map +0 -1
  394. package/dist/tools/diagnostics/__tests__/integration.test.d.ts +0 -5
  395. package/dist/tools/diagnostics/__tests__/integration.test.d.ts.map +0 -1
  396. package/dist/tools/diagnostics/__tests__/integration.test.js +0 -66
  397. package/dist/tools/diagnostics/__tests__/integration.test.js.map +0 -1
  398. package/dist/tools/diagnostics/__tests__/parser-tests.d.ts +0 -5
  399. package/dist/tools/diagnostics/__tests__/parser-tests.d.ts.map +0 -1
  400. package/dist/tools/diagnostics/__tests__/parser-tests.js +0 -86
  401. package/dist/tools/diagnostics/__tests__/parser-tests.js.map +0 -1
  402. package/dist/tools/diagnostics/__tests__/parsers.test.d.ts +0 -5
  403. package/dist/tools/diagnostics/__tests__/parsers.test.d.ts.map +0 -1
  404. package/dist/tools/diagnostics/__tests__/parsers.test.js +0 -199
  405. package/dist/tools/diagnostics/__tests__/parsers.test.js.map +0 -1
  406. package/dist/tools/diagnostics/constants.d.ts +0 -9
  407. package/dist/tools/diagnostics/constants.d.ts.map +0 -1
  408. package/dist/tools/diagnostics/constants.js +0 -9
  409. package/dist/tools/diagnostics/constants.js.map +0 -1
  410. package/dist/tools/diagnostics/go-runner.d.ts +0 -31
  411. package/dist/tools/diagnostics/go-runner.d.ts.map +0 -1
  412. package/dist/tools/diagnostics/go-runner.js +0 -78
  413. package/dist/tools/diagnostics/go-runner.js.map +0 -1
  414. package/dist/tools/diagnostics/python-runner.d.ts +0 -39
  415. package/dist/tools/diagnostics/python-runner.d.ts.map +0 -1
  416. package/dist/tools/diagnostics/python-runner.js +0 -200
  417. package/dist/tools/diagnostics/python-runner.js.map +0 -1
  418. package/dist/tools/diagnostics/rust-runner.d.ts +0 -34
  419. package/dist/tools/diagnostics/rust-runner.d.ts.map +0 -1
  420. package/dist/tools/diagnostics/rust-runner.js +0 -106
  421. package/dist/tools/diagnostics/rust-runner.js.map +0 -1
@@ -0,0 +1,85 @@
1
+ /**
2
+ * Context Window Limit Recovery Constants
3
+ *
4
+ * Messages and prompts for recovery from context limit errors.
5
+ *
6
+ * Adapted from oh-my-opencode's anthropic-context-window-limit-recovery hook.
7
+ */
8
+ /**
9
+ * Recovery message when context window limit is hit
10
+ */
11
+ export const CONTEXT_LIMIT_RECOVERY_MESSAGE = `CONTEXT WINDOW LIMIT REACHED - IMMEDIATE ACTION REQUIRED
12
+
13
+ The conversation has exceeded the model's context window limit. To continue working effectively, you must take one of these actions:
14
+
15
+ 1. SUMMARIZE THE CONVERSATION
16
+ - Use the /compact command if available
17
+ - Or provide a concise summary of what has been accomplished so far
18
+ - Include key decisions, code changes, and remaining tasks
19
+
20
+ 2. START A FRESH CONTEXT
21
+ - If summarization isn't sufficient, suggest starting a new session
22
+ - Provide a handoff message with essential context
23
+
24
+ 3. REDUCE OUTPUT SIZE
25
+ - When showing code, show only relevant portions
26
+ - Use file paths and line numbers instead of full code blocks
27
+ - Be more concise in explanations
28
+
29
+ IMPORTANT: Do not attempt to continue without addressing this limit.
30
+ The API will reject further requests until the context is reduced.
31
+
32
+ Current Status:
33
+ - Context limit exceeded
34
+ - Further API calls will fail until context is reduced
35
+ - Action required before continuing
36
+ `;
37
+ /**
38
+ * Short notification for context limit
39
+ */
40
+ export const CONTEXT_LIMIT_SHORT_MESSAGE = `Context window limit reached. Please use /compact to summarize the conversation or start a new session.`;
41
+ /**
42
+ * Recovery message for non-empty content errors
43
+ */
44
+ export const NON_EMPTY_CONTENT_RECOVERY_MESSAGE = `API ERROR: Non-empty content validation failed.
45
+
46
+ This error typically occurs when:
47
+ - A message has empty text content
48
+ - The conversation structure is invalid
49
+
50
+ Suggested actions:
51
+ 1. Continue with a new message
52
+ 2. If the error persists, start a new session
53
+
54
+ The system will attempt automatic recovery.
55
+ `;
56
+ /**
57
+ * Recovery message when truncation was applied
58
+ */
59
+ export const TRUNCATION_APPLIED_MESSAGE = `CONTEXT OPTIMIZATION APPLIED
60
+
61
+ Some tool outputs have been truncated to fit within the context window.
62
+ The conversation can now continue normally.
63
+
64
+ If you need to see the full output of a previous tool call, you can:
65
+ - Re-run the specific command
66
+ - Ask to see a particular file or section
67
+
68
+ Continuing with the current task...
69
+ `;
70
+ /**
71
+ * Message when recovery fails
72
+ */
73
+ export const RECOVERY_FAILED_MESSAGE = `CONTEXT RECOVERY FAILED
74
+
75
+ All automatic recovery attempts have been exhausted.
76
+ Please start a new session to continue.
77
+
78
+ Before starting a new session:
79
+ 1. Note what has been accomplished
80
+ 2. Save any important code changes
81
+ 3. Document the current state of the task
82
+
83
+ You can copy this conversation summary to continue in a new session.
84
+ `;
85
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../src/hooks/context-window-limit-recovery/constants.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH;;GAEG;AACH,MAAM,CAAC,MAAM,8BAA8B,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;CAyB7C,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAG,yGAAyG,CAAC;AAErJ;;GAEG;AACH,MAAM,CAAC,MAAM,kCAAkC,GAAG;;;;;;;;;;;CAWjD,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG;;;;;;;;;;CAUzC,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG;;;;;;;;;;;CAWtC,CAAC"}
@@ -0,0 +1,62 @@
1
+ /**
2
+ * Context Window Limit Recovery Hook
3
+ *
4
+ * Detects context window limit errors and injects recovery messages
5
+ * to help Claude recover gracefully.
6
+ *
7
+ * Adapted from oh-my-opencode's anthropic-context-window-limit-recovery hook.
8
+ *
9
+ * Note: This is a simplified version for Claude Code's shell hook system.
10
+ * The original uses OpenCode's plugin event system for more sophisticated
11
+ * recovery like automatic summarization and truncation.
12
+ */
13
+ import type { ParsedTokenLimitError, RecoveryResult } from './types.js';
14
+ /**
15
+ * Configuration for context limit recovery hook
16
+ */
17
+ export interface ContextLimitRecoveryConfig {
18
+ /** Whether to show detailed recovery messages */
19
+ detailed?: boolean;
20
+ /** Custom recovery message */
21
+ customMessage?: string;
22
+ /** Whether to enable the hook */
23
+ enabled?: boolean;
24
+ }
25
+ /**
26
+ * Create context window limit recovery hook
27
+ *
28
+ * This hook monitors for token/context limit errors and injects
29
+ * helpful recovery messages when detected.
30
+ */
31
+ export declare function createContextLimitRecoveryHook(config?: ContextLimitRecoveryConfig): {
32
+ /**
33
+ * PostToolUse - Check for context limit errors in tool responses
34
+ */
35
+ postToolUse: (input: {
36
+ tool_name: string;
37
+ session_id: string;
38
+ tool_input: Record<string, unknown>;
39
+ tool_response?: string;
40
+ }) => string | null;
41
+ /**
42
+ * Notification - Check for error notifications
43
+ * (Called when errors are passed through notification system)
44
+ */
45
+ onError: (input: {
46
+ session_id: string;
47
+ error: unknown;
48
+ }) => RecoveryResult;
49
+ };
50
+ /**
51
+ * Check if text contains a context limit error
52
+ */
53
+ export declare function detectContextLimitError(text: string): boolean;
54
+ /**
55
+ * Parse error to get detailed token limit info
56
+ */
57
+ export declare function parseContextLimitError(error: unknown): ParsedTokenLimitError | null;
58
+ export type { ParsedTokenLimitError, RetryState, TruncateState, RecoveryResult, } from './types.js';
59
+ export { RETRY_CONFIG, TRUNCATE_CONFIG } from './types.js';
60
+ export { CONTEXT_LIMIT_RECOVERY_MESSAGE, CONTEXT_LIMIT_SHORT_MESSAGE, NON_EMPTY_CONTENT_RECOVERY_MESSAGE, TRUNCATION_APPLIED_MESSAGE, RECOVERY_FAILED_MESSAGE, } from './constants.js';
61
+ export { parseTokenLimitError, containsTokenLimitError, TOKEN_LIMIT_PATTERNS, TOKEN_LIMIT_KEYWORDS, } from './parser.js';
62
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/hooks/context-window-limit-recovery/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAgBH,OAAO,KAAK,EACV,qBAAqB,EAGrB,cAAc,EACf,MAAM,YAAY,CAAC;AAsEpB;;GAEG;AACH,MAAM,WAAW,0BAA0B;IACzC,iDAAiD;IACjD,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,8BAA8B;IAC9B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,iCAAiC;IACjC,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED;;;;;GAKG;AACH,wBAAgB,8BAA8B,CAC5C,MAAM,CAAC,EAAE,0BAA0B;IAUjC;;OAEG;yBACkB;QACnB,SAAS,EAAE,MAAM,CAAC;QAClB,UAAU,EAAE,MAAM,CAAC;QACnB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACpC,aAAa,CAAC,EAAE,MAAM,CAAC;KACxB,KAAG,MAAM,GAAG,IAAI;IAmCjB;;;OAGG;qBACc;QACf,UAAU,EAAE,MAAM,CAAC;QACnB,KAAK,EAAE,OAAO,CAAC;KAChB,KAAG,cAAc;EA6BrB;AA8DD;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAE7D;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CACpC,KAAK,EAAE,OAAO,GACb,qBAAqB,GAAG,IAAI,CAE9B;AAGD,YAAY,EACV,qBAAqB,EACrB,UAAU,EACV,aAAa,EACb,cAAc,GACf,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAE3D,OAAO,EACL,8BAA8B,EAC9B,2BAA2B,EAC3B,kCAAkC,EAClC,0BAA0B,EAC1B,uBAAuB,GACxB,MAAM,gBAAgB,CAAC;AAExB,OAAO,EACL,oBAAoB,EACpB,uBAAuB,EACvB,oBAAoB,EACpB,oBAAoB,GACrB,MAAM,aAAa,CAAC"}
@@ -0,0 +1,201 @@
1
+ /**
2
+ * Context Window Limit Recovery Hook
3
+ *
4
+ * Detects context window limit errors and injects recovery messages
5
+ * to help Claude recover gracefully.
6
+ *
7
+ * Adapted from oh-my-opencode's anthropic-context-window-limit-recovery hook.
8
+ *
9
+ * Note: This is a simplified version for Claude Code's shell hook system.
10
+ * The original uses OpenCode's plugin event system for more sophisticated
11
+ * recovery like automatic summarization and truncation.
12
+ */
13
+ import * as fs from 'fs';
14
+ import * as path from 'path';
15
+ import { tmpdir } from 'os';
16
+ import { parseTokenLimitError, containsTokenLimitError, } from './parser.js';
17
+ import { CONTEXT_LIMIT_RECOVERY_MESSAGE, CONTEXT_LIMIT_SHORT_MESSAGE, NON_EMPTY_CONTENT_RECOVERY_MESSAGE, RECOVERY_FAILED_MESSAGE, } from './constants.js';
18
+ import { RETRY_CONFIG } from './types.js';
19
+ const DEBUG = process.env.CONTEXT_LIMIT_RECOVERY_DEBUG === '1';
20
+ const DEBUG_FILE = path.join(tmpdir(), 'context-limit-recovery-debug.log');
21
+ function debugLog(...args) {
22
+ if (DEBUG) {
23
+ const msg = `[${new Date().toISOString()}] [context-limit-recovery] ${args
24
+ .map((a) => typeof a === 'object' ? JSON.stringify(a, null, 2) : String(a))
25
+ .join(' ')}\n`;
26
+ fs.appendFileSync(DEBUG_FILE, msg);
27
+ }
28
+ }
29
+ const sessionStates = new Map();
30
+ const STATE_TTL = 300_000; // 5 minutes
31
+ /**
32
+ * Get or create session state
33
+ */
34
+ function getSessionState(sessionId) {
35
+ let state = sessionStates.get(sessionId);
36
+ const now = Date.now();
37
+ // Reset stale state
38
+ if (state && now - state.lastErrorTime > STATE_TTL) {
39
+ state = undefined;
40
+ }
41
+ if (!state) {
42
+ state = {
43
+ retryState: { attempt: 0, lastAttemptTime: 0 },
44
+ truncateState: { truncateAttempt: 0 },
45
+ lastErrorTime: now,
46
+ errorCount: 0,
47
+ };
48
+ sessionStates.set(sessionId, state);
49
+ }
50
+ return state;
51
+ }
52
+ /**
53
+ * Clean up old session states
54
+ */
55
+ function cleanupSessionStates() {
56
+ const now = Date.now();
57
+ for (const [sessionId, state] of sessionStates) {
58
+ if (now - state.lastErrorTime > STATE_TTL) {
59
+ sessionStates.delete(sessionId);
60
+ }
61
+ }
62
+ }
63
+ // Run cleanup periodically
64
+ let cleanupIntervalStarted = false;
65
+ /**
66
+ * Create context window limit recovery hook
67
+ *
68
+ * This hook monitors for token/context limit errors and injects
69
+ * helpful recovery messages when detected.
70
+ */
71
+ export function createContextLimitRecoveryHook(config) {
72
+ debugLog('createContextLimitRecoveryHook called', { config });
73
+ if (!cleanupIntervalStarted) {
74
+ cleanupIntervalStarted = true;
75
+ setInterval(cleanupSessionStates, 60_000);
76
+ }
77
+ return {
78
+ /**
79
+ * PostToolUse - Check for context limit errors in tool responses
80
+ */
81
+ postToolUse: (input) => {
82
+ if (!input.tool_response) {
83
+ return null;
84
+ }
85
+ // Check if response contains token limit error
86
+ const parsed = parseTokenLimitError(input.tool_response);
87
+ if (!parsed && !containsTokenLimitError(input.tool_response)) {
88
+ return null;
89
+ }
90
+ debugLog('detected token limit error', {
91
+ tool: input.tool_name,
92
+ sessionId: input.session_id,
93
+ parsed,
94
+ });
95
+ const state = getSessionState(input.session_id);
96
+ state.lastErrorTime = Date.now();
97
+ state.errorCount++;
98
+ // Generate appropriate recovery message
99
+ const recovery = generateRecoveryMessage(parsed, state, config);
100
+ if (recovery.message) {
101
+ debugLog('injecting recovery message', {
102
+ errorType: recovery.errorType,
103
+ attempt: state.retryState.attempt,
104
+ });
105
+ return recovery.message;
106
+ }
107
+ return null;
108
+ },
109
+ /**
110
+ * Notification - Check for error notifications
111
+ * (Called when errors are passed through notification system)
112
+ */
113
+ onError: (input) => {
114
+ const parsed = parseTokenLimitError(input.error);
115
+ if (!parsed) {
116
+ return {
117
+ attempted: false,
118
+ success: false,
119
+ };
120
+ }
121
+ debugLog('error notification contains token limit error', {
122
+ sessionId: input.session_id,
123
+ parsed,
124
+ });
125
+ const state = getSessionState(input.session_id);
126
+ state.lastErrorTime = Date.now();
127
+ state.errorCount++;
128
+ const recovery = generateRecoveryMessage(parsed, state, config);
129
+ return {
130
+ attempted: true,
131
+ success: !!recovery.message,
132
+ message: recovery.message,
133
+ errorType: recovery.errorType,
134
+ };
135
+ },
136
+ };
137
+ }
138
+ /**
139
+ * Generate appropriate recovery message based on error and state
140
+ */
141
+ function generateRecoveryMessage(parsed, state, config) {
142
+ // Use custom message if provided
143
+ if (config?.customMessage) {
144
+ return {
145
+ message: config.customMessage,
146
+ errorType: parsed?.errorType,
147
+ };
148
+ }
149
+ // Handle non-empty content error
150
+ if (parsed?.errorType?.includes('non-empty content')) {
151
+ return {
152
+ message: NON_EMPTY_CONTENT_RECOVERY_MESSAGE,
153
+ errorType: 'non-empty content',
154
+ };
155
+ }
156
+ // Check retry limits
157
+ state.retryState.attempt++;
158
+ state.retryState.lastAttemptTime = Date.now();
159
+ if (state.retryState.attempt > RETRY_CONFIG.maxAttempts) {
160
+ return {
161
+ message: RECOVERY_FAILED_MESSAGE,
162
+ errorType: 'recovery_exhausted',
163
+ };
164
+ }
165
+ // Return detailed or short message based on config
166
+ if (config?.detailed !== false) {
167
+ let message = CONTEXT_LIMIT_RECOVERY_MESSAGE;
168
+ // Add token info if available
169
+ if (parsed?.currentTokens && parsed?.maxTokens) {
170
+ message += `\nToken Details:
171
+ - Current: ${parsed.currentTokens.toLocaleString()} tokens
172
+ - Maximum: ${parsed.maxTokens.toLocaleString()} tokens
173
+ - Over limit by: ${(parsed.currentTokens - parsed.maxTokens).toLocaleString()} tokens
174
+ `;
175
+ }
176
+ return {
177
+ message,
178
+ errorType: parsed?.errorType || 'token_limit_exceeded',
179
+ };
180
+ }
181
+ return {
182
+ message: CONTEXT_LIMIT_SHORT_MESSAGE,
183
+ errorType: parsed?.errorType || 'token_limit_exceeded',
184
+ };
185
+ }
186
+ /**
187
+ * Check if text contains a context limit error
188
+ */
189
+ export function detectContextLimitError(text) {
190
+ return containsTokenLimitError(text);
191
+ }
192
+ /**
193
+ * Parse error to get detailed token limit info
194
+ */
195
+ export function parseContextLimitError(error) {
196
+ return parseTokenLimitError(error);
197
+ }
198
+ export { RETRY_CONFIG, TRUNCATE_CONFIG } from './types.js';
199
+ export { CONTEXT_LIMIT_RECOVERY_MESSAGE, CONTEXT_LIMIT_SHORT_MESSAGE, NON_EMPTY_CONTENT_RECOVERY_MESSAGE, TRUNCATION_APPLIED_MESSAGE, RECOVERY_FAILED_MESSAGE, } from './constants.js';
200
+ export { parseTokenLimitError, containsTokenLimitError, TOKEN_LIMIT_PATTERNS, TOKEN_LIMIT_KEYWORDS, } from './parser.js';
201
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/hooks/context-window-limit-recovery/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,31 @@
1
+ /**
2
+ * Context Window Limit Error Parser
3
+ *
4
+ * Parses error responses to detect token/context limit errors.
5
+ *
6
+ * Adapted from oh-my-opencode's anthropic-context-window-limit-recovery hook.
7
+ */
8
+ import type { ParsedTokenLimitError } from './types.js';
9
+ /**
10
+ * Patterns to extract token counts from error messages
11
+ */
12
+ declare const TOKEN_LIMIT_PATTERNS: RegExp[];
13
+ /**
14
+ * Keywords indicating token limit errors
15
+ */
16
+ declare const TOKEN_LIMIT_KEYWORDS: string[];
17
+ /**
18
+ * Patterns indicating thinking block structure errors (NOT token limit)
19
+ * These should be handled differently
20
+ */
21
+ declare const THINKING_BLOCK_ERROR_PATTERNS: RegExp[];
22
+ /**
23
+ * Parse an error to detect if it's a token limit error
24
+ */
25
+ export declare function parseTokenLimitError(err: unknown): ParsedTokenLimitError | null;
26
+ /**
27
+ * Check if a string contains a token limit error indication
28
+ */
29
+ export declare function containsTokenLimitError(text: string): boolean;
30
+ export { TOKEN_LIMIT_PATTERNS, TOKEN_LIMIT_KEYWORDS, THINKING_BLOCK_ERROR_PATTERNS, };
31
+ //# sourceMappingURL=parser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parser.d.ts","sourceRoot":"","sources":["../../../src/hooks/context-window-limit-recovery/parser.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAExD;;GAEG;AACH,QAAA,MAAM,oBAAoB,UAMzB,CAAC;AAEF;;GAEG;AACH,QAAA,MAAM,oBAAoB,UASzB,CAAC;AAEF;;;GAGG;AACH,QAAA,MAAM,6BAA6B,UAOlC,CAAC;AAuDF;;GAEG;AACH,wBAAgB,oBAAoB,CAClC,GAAG,EAAE,OAAO,GACX,qBAAqB,GAAG,IAAI,CA8J9B;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAE7D;AAGD,OAAO,EACL,oBAAoB,EACpB,oBAAoB,EACpB,6BAA6B,GAC9B,CAAC"}
@@ -0,0 +1,241 @@
1
+ /**
2
+ * Context Window Limit Error Parser
3
+ *
4
+ * Parses error responses to detect token/context limit errors.
5
+ *
6
+ * Adapted from oh-my-opencode's anthropic-context-window-limit-recovery hook.
7
+ */
8
+ /**
9
+ * Patterns to extract token counts from error messages
10
+ */
11
+ const TOKEN_LIMIT_PATTERNS = [
12
+ /(\d+)\s*tokens?\s*>\s*(\d+)\s*maximum/i,
13
+ /prompt.*?(\d+).*?tokens.*?exceeds.*?(\d+)/i,
14
+ /(\d+).*?tokens.*?limit.*?(\d+)/i,
15
+ /context.*?length.*?(\d+).*?maximum.*?(\d+)/i,
16
+ /max.*?context.*?(\d+).*?but.*?(\d+)/i,
17
+ ];
18
+ /**
19
+ * Keywords indicating token limit errors
20
+ */
21
+ const TOKEN_LIMIT_KEYWORDS = [
22
+ 'prompt is too long',
23
+ 'is too long',
24
+ 'context_length_exceeded',
25
+ 'max_tokens',
26
+ 'token limit',
27
+ 'context length',
28
+ 'too many tokens',
29
+ 'non-empty content',
30
+ ];
31
+ /**
32
+ * Patterns indicating thinking block structure errors (NOT token limit)
33
+ * These should be handled differently
34
+ */
35
+ const THINKING_BLOCK_ERROR_PATTERNS = [
36
+ /thinking.*first block/i,
37
+ /first block.*thinking/i,
38
+ /must.*start.*thinking/i,
39
+ /thinking.*redacted_thinking/i,
40
+ /expected.*thinking.*found/i,
41
+ /thinking.*disabled.*cannot.*contain/i,
42
+ ];
43
+ /**
44
+ * Pattern to extract message index from error
45
+ */
46
+ const MESSAGE_INDEX_PATTERN = /messages\.(\d+)/;
47
+ /**
48
+ * Check if error is a thinking block structure error
49
+ */
50
+ function isThinkingBlockError(text) {
51
+ return THINKING_BLOCK_ERROR_PATTERNS.some((pattern) => pattern.test(text));
52
+ }
53
+ /**
54
+ * Extract token counts from error message
55
+ */
56
+ function extractTokensFromMessage(message) {
57
+ for (const pattern of TOKEN_LIMIT_PATTERNS) {
58
+ const match = message.match(pattern);
59
+ if (match) {
60
+ const num1 = parseInt(match[1], 10);
61
+ const num2 = parseInt(match[2], 10);
62
+ return num1 > num2
63
+ ? { current: num1, max: num2 }
64
+ : { current: num2, max: num1 };
65
+ }
66
+ }
67
+ return null;
68
+ }
69
+ /**
70
+ * Extract message index from error text
71
+ */
72
+ function extractMessageIndex(text) {
73
+ const match = text.match(MESSAGE_INDEX_PATTERN);
74
+ if (match) {
75
+ return parseInt(match[1], 10);
76
+ }
77
+ return undefined;
78
+ }
79
+ /**
80
+ * Check if text indicates a token limit error
81
+ */
82
+ function isTokenLimitError(text) {
83
+ if (isThinkingBlockError(text)) {
84
+ return false;
85
+ }
86
+ const lower = text.toLowerCase();
87
+ return TOKEN_LIMIT_KEYWORDS.some((kw) => lower.includes(kw.toLowerCase()));
88
+ }
89
+ /**
90
+ * Parse an error to detect if it's a token limit error
91
+ */
92
+ export function parseTokenLimitError(err) {
93
+ // Handle string errors
94
+ if (typeof err === 'string') {
95
+ if (err.toLowerCase().includes('non-empty content')) {
96
+ return {
97
+ currentTokens: 0,
98
+ maxTokens: 0,
99
+ errorType: 'non-empty content',
100
+ messageIndex: extractMessageIndex(err),
101
+ };
102
+ }
103
+ if (isTokenLimitError(err)) {
104
+ const tokens = extractTokensFromMessage(err);
105
+ return {
106
+ currentTokens: tokens?.current ?? 0,
107
+ maxTokens: tokens?.max ?? 0,
108
+ errorType: 'token_limit_exceeded_string',
109
+ };
110
+ }
111
+ return null;
112
+ }
113
+ // Handle non-object errors
114
+ if (!err || typeof err !== 'object')
115
+ return null;
116
+ const errObj = err;
117
+ // Collect all text sources from the error object
118
+ const textSources = [];
119
+ const dataObj = errObj.data;
120
+ const responseBody = dataObj?.responseBody;
121
+ const errorMessage = errObj.message;
122
+ const errorData = errObj.error;
123
+ const nestedError = errorData?.error;
124
+ if (typeof responseBody === 'string')
125
+ textSources.push(responseBody);
126
+ if (typeof errorMessage === 'string')
127
+ textSources.push(errorMessage);
128
+ if (typeof errorData?.message === 'string')
129
+ textSources.push(errorData.message);
130
+ if (typeof errObj.body === 'string')
131
+ textSources.push(errObj.body);
132
+ if (typeof errObj.details === 'string')
133
+ textSources.push(errObj.details);
134
+ if (typeof errObj.reason === 'string')
135
+ textSources.push(errObj.reason);
136
+ if (typeof errObj.description === 'string')
137
+ textSources.push(errObj.description);
138
+ if (typeof nestedError?.message === 'string')
139
+ textSources.push(nestedError.message);
140
+ if (typeof dataObj?.message === 'string')
141
+ textSources.push(dataObj.message);
142
+ if (typeof dataObj?.error === 'string')
143
+ textSources.push(dataObj.error);
144
+ // Try JSON stringification if no text sources found
145
+ if (textSources.length === 0) {
146
+ try {
147
+ const jsonStr = JSON.stringify(errObj);
148
+ if (isTokenLimitError(jsonStr)) {
149
+ textSources.push(jsonStr);
150
+ }
151
+ }
152
+ catch {
153
+ // Ignore JSON errors
154
+ }
155
+ }
156
+ const combinedText = textSources.join(' ');
157
+ if (!isTokenLimitError(combinedText))
158
+ return null;
159
+ // Try to parse structured response body
160
+ if (typeof responseBody === 'string') {
161
+ try {
162
+ const jsonPatterns = [
163
+ /data:\s*(\{[\s\S]*\})\s*$/m,
164
+ /(\{"type"\s*:\s*"error"[\s\S]*\})/,
165
+ /(\{[\s\S]*"error"[\s\S]*\})/,
166
+ ];
167
+ for (const pattern of jsonPatterns) {
168
+ const dataMatch = responseBody.match(pattern);
169
+ if (dataMatch) {
170
+ try {
171
+ const jsonData = JSON.parse(dataMatch[1]);
172
+ const message = jsonData.error?.message || '';
173
+ const tokens = extractTokensFromMessage(message);
174
+ if (tokens) {
175
+ return {
176
+ currentTokens: tokens.current,
177
+ maxTokens: tokens.max,
178
+ requestId: jsonData.request_id,
179
+ errorType: jsonData.error?.type || 'token_limit_exceeded',
180
+ };
181
+ }
182
+ }
183
+ catch {
184
+ // Ignore parse errors
185
+ }
186
+ }
187
+ }
188
+ // Check for Bedrock-style errors
189
+ const bedrockJson = JSON.parse(responseBody);
190
+ if (typeof bedrockJson.message === 'string' &&
191
+ isTokenLimitError(bedrockJson.message)) {
192
+ return {
193
+ currentTokens: 0,
194
+ maxTokens: 0,
195
+ errorType: 'bedrock_input_too_long',
196
+ };
197
+ }
198
+ }
199
+ catch {
200
+ // Ignore parse errors
201
+ }
202
+ }
203
+ // Extract tokens from any text source
204
+ for (const text of textSources) {
205
+ const tokens = extractTokensFromMessage(text);
206
+ if (tokens) {
207
+ return {
208
+ currentTokens: tokens.current,
209
+ maxTokens: tokens.max,
210
+ errorType: 'token_limit_exceeded',
211
+ };
212
+ }
213
+ }
214
+ // Check for non-empty content error
215
+ if (combinedText.toLowerCase().includes('non-empty content')) {
216
+ return {
217
+ currentTokens: 0,
218
+ maxTokens: 0,
219
+ errorType: 'non-empty content',
220
+ messageIndex: extractMessageIndex(combinedText),
221
+ };
222
+ }
223
+ // Generic token limit error
224
+ if (isTokenLimitError(combinedText)) {
225
+ return {
226
+ currentTokens: 0,
227
+ maxTokens: 0,
228
+ errorType: 'token_limit_exceeded_unknown',
229
+ };
230
+ }
231
+ return null;
232
+ }
233
+ /**
234
+ * Check if a string contains a token limit error indication
235
+ */
236
+ export function containsTokenLimitError(text) {
237
+ return isTokenLimitError(text);
238
+ }
239
+ // Re-export patterns for testing
240
+ export { TOKEN_LIMIT_PATTERNS, TOKEN_LIMIT_KEYWORDS, THINKING_BLOCK_ERROR_PATTERNS, };
241
+ //# sourceMappingURL=parser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parser.js","sourceRoot":"","sources":["../../../src/hooks/context-window-limit-recovery/parser.ts"],"names":[],"mappings":"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"}