olympus-ai 1.0.0

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 (573) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +691 -0
  3. package/dist/__tests__/example.test.d.ts +2 -0
  4. package/dist/__tests__/example.test.d.ts.map +1 -0
  5. package/dist/__tests__/example.test.js +20 -0
  6. package/dist/__tests__/example.test.js.map +1 -0
  7. package/dist/__tests__/hooks.test.d.ts +2 -0
  8. package/dist/__tests__/hooks.test.d.ts.map +1 -0
  9. package/dist/__tests__/hooks.test.js +644 -0
  10. package/dist/__tests__/hooks.test.js.map +1 -0
  11. package/dist/__tests__/installer.test.d.ts +2 -0
  12. package/dist/__tests__/installer.test.d.ts.map +1 -0
  13. package/dist/__tests__/installer.test.js +369 -0
  14. package/dist/__tests__/installer.test.js.map +1 -0
  15. package/dist/__tests__/model-routing.test.d.ts +2 -0
  16. package/dist/__tests__/model-routing.test.d.ts.map +1 -0
  17. package/dist/__tests__/model-routing.test.js +814 -0
  18. package/dist/__tests__/model-routing.test.js.map +1 -0
  19. package/dist/__tests__/skills.test.d.ts +2 -0
  20. package/dist/__tests__/skills.test.d.ts.map +1 -0
  21. package/dist/__tests__/skills.test.js +126 -0
  22. package/dist/__tests__/skills.test.js.map +1 -0
  23. package/dist/__tests__/types.test.d.ts +2 -0
  24. package/dist/__tests__/types.test.d.ts.map +1 -0
  25. package/dist/__tests__/types.test.js +77 -0
  26. package/dist/__tests__/types.test.js.map +1 -0
  27. package/dist/agents/definitions.d.ts +105 -0
  28. package/dist/agents/definitions.d.ts.map +1 -0
  29. package/dist/agents/definitions.js +1379 -0
  30. package/dist/agents/definitions.js.map +1 -0
  31. package/dist/agents/document-writer.d.ts +11 -0
  32. package/dist/agents/document-writer.d.ts.map +1 -0
  33. package/dist/agents/document-writer.js +209 -0
  34. package/dist/agents/document-writer.js.map +1 -0
  35. package/dist/agents/explore.d.ts +12 -0
  36. package/dist/agents/explore.d.ts.map +1 -0
  37. package/dist/agents/explore.js +103 -0
  38. package/dist/agents/explore.js.map +1 -0
  39. package/dist/agents/frontend-engineer.d.ts +11 -0
  40. package/dist/agents/frontend-engineer.d.ts.map +1 -0
  41. package/dist/agents/frontend-engineer.js +115 -0
  42. package/dist/agents/frontend-engineer.js.map +1 -0
  43. package/dist/agents/index.d.ts +21 -0
  44. package/dist/agents/index.d.ts.map +1 -0
  45. package/dist/agents/index.js +27 -0
  46. package/dist/agents/index.js.map +1 -0
  47. package/dist/agents/librarian.d.ts +12 -0
  48. package/dist/agents/librarian.d.ts.map +1 -0
  49. package/dist/agents/librarian.js +103 -0
  50. package/dist/agents/librarian.js.map +1 -0
  51. package/dist/agents/metis.d.ts +12 -0
  52. package/dist/agents/metis.d.ts.map +1 -0
  53. package/dist/agents/metis.js +117 -0
  54. package/dist/agents/metis.js.map +1 -0
  55. package/dist/agents/momus.d.ts +12 -0
  56. package/dist/agents/momus.d.ts.map +1 -0
  57. package/dist/agents/momus.js +128 -0
  58. package/dist/agents/momus.js.map +1 -0
  59. package/dist/agents/multimodal-looker.d.ts +11 -0
  60. package/dist/agents/multimodal-looker.d.ts.map +1 -0
  61. package/dist/agents/multimodal-looker.js +70 -0
  62. package/dist/agents/multimodal-looker.js.map +1 -0
  63. package/dist/agents/olympian.d.ts +12 -0
  64. package/dist/agents/olympian.d.ts.map +1 -0
  65. package/dist/agents/olympian.js +93 -0
  66. package/dist/agents/olympian.js.map +1 -0
  67. package/dist/agents/oracle.d.ts +13 -0
  68. package/dist/agents/oracle.d.ts.map +1 -0
  69. package/dist/agents/oracle.js +191 -0
  70. package/dist/agents/oracle.js.map +1 -0
  71. package/dist/agents/orchestrator-olympus.d.ts +11 -0
  72. package/dist/agents/orchestrator-olympus.d.ts.map +1 -0
  73. package/dist/agents/orchestrator-olympus.js +115 -0
  74. package/dist/agents/orchestrator-olympus.js.map +1 -0
  75. package/dist/agents/orchestrator-sisyphus.d.ts +11 -0
  76. package/dist/agents/orchestrator-sisyphus.d.ts.map +1 -0
  77. package/dist/agents/orchestrator-sisyphus.js +115 -0
  78. package/dist/agents/orchestrator-sisyphus.js.map +1 -0
  79. package/dist/agents/prometheus.d.ts +12 -0
  80. package/dist/agents/prometheus.d.ts.map +1 -0
  81. package/dist/agents/prometheus.js +156 -0
  82. package/dist/agents/prometheus.js.map +1 -0
  83. package/dist/agents/qa-tester.d.ts +16 -0
  84. package/dist/agents/qa-tester.d.ts.map +1 -0
  85. package/dist/agents/qa-tester.js +367 -0
  86. package/dist/agents/qa-tester.js.map +1 -0
  87. package/dist/agents/sisyphus-junior.d.ts +12 -0
  88. package/dist/agents/sisyphus-junior.d.ts.map +1 -0
  89. package/dist/agents/sisyphus-junior.js +93 -0
  90. package/dist/agents/sisyphus-junior.js.map +1 -0
  91. package/dist/agents/types.d.ts +120 -0
  92. package/dist/agents/types.d.ts.map +1 -0
  93. package/dist/agents/types.js +38 -0
  94. package/dist/agents/types.js.map +1 -0
  95. package/dist/agents/utils.d.ts +49 -0
  96. package/dist/agents/utils.d.ts.map +1 -0
  97. package/dist/agents/utils.js +164 -0
  98. package/dist/agents/utils.js.map +1 -0
  99. package/dist/cli/index.d.ts +13 -0
  100. package/dist/cli/index.d.ts.map +1 -0
  101. package/dist/cli/index.js +496 -0
  102. package/dist/cli/index.js.map +1 -0
  103. package/dist/commands/index.d.ts +78 -0
  104. package/dist/commands/index.d.ts.map +1 -0
  105. package/dist/commands/index.js +148 -0
  106. package/dist/commands/index.js.map +1 -0
  107. package/dist/config/index.d.ts +5 -0
  108. package/dist/config/index.d.ts.map +1 -0
  109. package/dist/config/index.js +5 -0
  110. package/dist/config/index.js.map +1 -0
  111. package/dist/config/loader.d.ts +49 -0
  112. package/dist/config/loader.d.ts.map +1 -0
  113. package/dist/config/loader.js +380 -0
  114. package/dist/config/loader.js.map +1 -0
  115. package/dist/features/auto-update.d.ts +187 -0
  116. package/dist/features/auto-update.d.ts.map +1 -0
  117. package/dist/features/auto-update.js +539 -0
  118. package/dist/features/auto-update.js.map +1 -0
  119. package/dist/features/background-agent/concurrency.d.ts +53 -0
  120. package/dist/features/background-agent/concurrency.d.ts.map +1 -0
  121. package/dist/features/background-agent/concurrency.js +121 -0
  122. package/dist/features/background-agent/concurrency.js.map +1 -0
  123. package/dist/features/background-agent/index.d.ts +12 -0
  124. package/dist/features/background-agent/index.d.ts.map +1 -0
  125. package/dist/features/background-agent/index.js +12 -0
  126. package/dist/features/background-agent/index.js.map +1 -0
  127. package/dist/features/background-agent/manager.d.ts +134 -0
  128. package/dist/features/background-agent/manager.d.ts.map +1 -0
  129. package/dist/features/background-agent/manager.js +412 -0
  130. package/dist/features/background-agent/manager.js.map +1 -0
  131. package/dist/features/background-agent/types.d.ts +99 -0
  132. package/dist/features/background-agent/types.d.ts.map +1 -0
  133. package/dist/features/background-agent/types.js +9 -0
  134. package/dist/features/background-agent/types.js.map +1 -0
  135. package/dist/features/background-tasks.d.ts +99 -0
  136. package/dist/features/background-tasks.d.ts.map +1 -0
  137. package/dist/features/background-tasks.js +265 -0
  138. package/dist/features/background-tasks.js.map +1 -0
  139. package/dist/features/boulder-state/constants.d.ts +20 -0
  140. package/dist/features/boulder-state/constants.d.ts.map +1 -0
  141. package/dist/features/boulder-state/constants.js +20 -0
  142. package/dist/features/boulder-state/constants.js.map +1 -0
  143. package/dist/features/boulder-state/index.d.ts +12 -0
  144. package/dist/features/boulder-state/index.d.ts.map +1 -0
  145. package/dist/features/boulder-state/index.js +13 -0
  146. package/dist/features/boulder-state/index.js.map +1 -0
  147. package/dist/features/boulder-state/storage.d.ts +58 -0
  148. package/dist/features/boulder-state/storage.d.ts.map +1 -0
  149. package/dist/features/boulder-state/storage.js +174 -0
  150. package/dist/features/boulder-state/storage.js.map +1 -0
  151. package/dist/features/boulder-state/types.d.ts +48 -0
  152. package/dist/features/boulder-state/types.d.ts.map +1 -0
  153. package/dist/features/boulder-state/types.js +10 -0
  154. package/dist/features/boulder-state/types.js.map +1 -0
  155. package/dist/features/builtin-skills/index.d.ts +10 -0
  156. package/dist/features/builtin-skills/index.d.ts.map +1 -0
  157. package/dist/features/builtin-skills/index.js +10 -0
  158. package/dist/features/builtin-skills/index.js.map +1 -0
  159. package/dist/features/builtin-skills/skills.d.ts +21 -0
  160. package/dist/features/builtin-skills/skills.d.ts.map +1 -0
  161. package/dist/features/builtin-skills/skills.js +1082 -0
  162. package/dist/features/builtin-skills/skills.js.map +1 -0
  163. package/dist/features/builtin-skills/types.d.ts +60 -0
  164. package/dist/features/builtin-skills/types.d.ts.map +1 -0
  165. package/dist/features/builtin-skills/types.js +9 -0
  166. package/dist/features/builtin-skills/types.js.map +1 -0
  167. package/dist/features/context-injector/collector.d.ts +56 -0
  168. package/dist/features/context-injector/collector.d.ts.map +1 -0
  169. package/dist/features/context-injector/collector.js +122 -0
  170. package/dist/features/context-injector/collector.js.map +1 -0
  171. package/dist/features/context-injector/index.d.ts +12 -0
  172. package/dist/features/context-injector/index.d.ts.map +1 -0
  173. package/dist/features/context-injector/index.js +13 -0
  174. package/dist/features/context-injector/index.js.map +1 -0
  175. package/dist/features/context-injector/injector.d.ts +47 -0
  176. package/dist/features/context-injector/injector.d.ts.map +1 -0
  177. package/dist/features/context-injector/injector.js +103 -0
  178. package/dist/features/context-injector/injector.js.map +1 -0
  179. package/dist/features/context-injector/types.d.ts +103 -0
  180. package/dist/features/context-injector/types.d.ts.map +1 -0
  181. package/dist/features/context-injector/types.js +11 -0
  182. package/dist/features/context-injector/types.js.map +1 -0
  183. package/dist/features/continuation-enforcement.d.ts +36 -0
  184. package/dist/features/continuation-enforcement.d.ts.map +1 -0
  185. package/dist/features/continuation-enforcement.js +175 -0
  186. package/dist/features/continuation-enforcement.js.map +1 -0
  187. package/dist/features/index.d.ts +12 -0
  188. package/dist/features/index.d.ts.map +1 -0
  189. package/dist/features/index.js +49 -0
  190. package/dist/features/index.js.map +1 -0
  191. package/dist/features/magic-keywords.d.ts +28 -0
  192. package/dist/features/magic-keywords.d.ts.map +1 -0
  193. package/dist/features/magic-keywords.js +421 -0
  194. package/dist/features/magic-keywords.js.map +1 -0
  195. package/dist/features/model-routing/index.d.ts +34 -0
  196. package/dist/features/model-routing/index.d.ts.map +1 -0
  197. package/dist/features/model-routing/index.js +48 -0
  198. package/dist/features/model-routing/index.js.map +1 -0
  199. package/dist/features/model-routing/prompts/haiku.d.ts +54 -0
  200. package/dist/features/model-routing/prompts/haiku.d.ts.map +1 -0
  201. package/dist/features/model-routing/prompts/haiku.js +141 -0
  202. package/dist/features/model-routing/prompts/haiku.js.map +1 -0
  203. package/dist/features/model-routing/prompts/index.d.ts +45 -0
  204. package/dist/features/model-routing/prompts/index.d.ts.map +1 -0
  205. package/dist/features/model-routing/prompts/index.js +116 -0
  206. package/dist/features/model-routing/prompts/index.js.map +1 -0
  207. package/dist/features/model-routing/prompts/opus.d.ts +34 -0
  208. package/dist/features/model-routing/prompts/opus.d.ts.map +1 -0
  209. package/dist/features/model-routing/prompts/opus.js +153 -0
  210. package/dist/features/model-routing/prompts/opus.js.map +1 -0
  211. package/dist/features/model-routing/prompts/sonnet.d.ts +38 -0
  212. package/dist/features/model-routing/prompts/sonnet.d.ts.map +1 -0
  213. package/dist/features/model-routing/prompts/sonnet.js +149 -0
  214. package/dist/features/model-routing/prompts/sonnet.js.map +1 -0
  215. package/dist/features/model-routing/router.d.ts +92 -0
  216. package/dist/features/model-routing/router.d.ts.map +1 -0
  217. package/dist/features/model-routing/router.js +267 -0
  218. package/dist/features/model-routing/router.js.map +1 -0
  219. package/dist/features/model-routing/rules.d.ts +32 -0
  220. package/dist/features/model-routing/rules.d.ts.map +1 -0
  221. package/dist/features/model-routing/rules.js +224 -0
  222. package/dist/features/model-routing/rules.js.map +1 -0
  223. package/dist/features/model-routing/scorer.d.ts +35 -0
  224. package/dist/features/model-routing/scorer.d.ts.map +1 -0
  225. package/dist/features/model-routing/scorer.js +241 -0
  226. package/dist/features/model-routing/scorer.js.map +1 -0
  227. package/dist/features/model-routing/signals.d.ts +26 -0
  228. package/dist/features/model-routing/signals.d.ts.map +1 -0
  229. package/dist/features/model-routing/signals.js +283 -0
  230. package/dist/features/model-routing/signals.js.map +1 -0
  231. package/dist/features/model-routing/types.d.ts +195 -0
  232. package/dist/features/model-routing/types.d.ts.map +1 -0
  233. package/dist/features/model-routing/types.js +86 -0
  234. package/dist/features/model-routing/types.js.map +1 -0
  235. package/dist/hooks/agent-usage-reminder/constants.d.ts +17 -0
  236. package/dist/hooks/agent-usage-reminder/constants.d.ts.map +1 -0
  237. package/dist/hooks/agent-usage-reminder/constants.js +58 -0
  238. package/dist/hooks/agent-usage-reminder/constants.js.map +1 -0
  239. package/dist/hooks/agent-usage-reminder/index.d.ts +36 -0
  240. package/dist/hooks/agent-usage-reminder/index.d.ts.map +1 -0
  241. package/dist/hooks/agent-usage-reminder/index.js +89 -0
  242. package/dist/hooks/agent-usage-reminder/index.js.map +1 -0
  243. package/dist/hooks/agent-usage-reminder/storage.d.ts +12 -0
  244. package/dist/hooks/agent-usage-reminder/storage.d.ts.map +1 -0
  245. package/dist/hooks/agent-usage-reminder/storage.js +39 -0
  246. package/dist/hooks/agent-usage-reminder/storage.js.map +1 -0
  247. package/dist/hooks/agent-usage-reminder/types.d.ts +14 -0
  248. package/dist/hooks/agent-usage-reminder/types.d.ts.map +1 -0
  249. package/dist/hooks/agent-usage-reminder/types.js +9 -0
  250. package/dist/hooks/agent-usage-reminder/types.js.map +1 -0
  251. package/dist/hooks/ascent-verifier/index.d.ts +72 -0
  252. package/dist/hooks/ascent-verifier/index.d.ts.map +1 -0
  253. package/dist/hooks/ascent-verifier/index.js +223 -0
  254. package/dist/hooks/ascent-verifier/index.js.map +1 -0
  255. package/dist/hooks/auto-slash-command/constants.d.ts +19 -0
  256. package/dist/hooks/auto-slash-command/constants.d.ts.map +1 -0
  257. package/dist/hooks/auto-slash-command/constants.js +28 -0
  258. package/dist/hooks/auto-slash-command/constants.js.map +1 -0
  259. package/dist/hooks/auto-slash-command/detector.d.ts +33 -0
  260. package/dist/hooks/auto-slash-command/detector.d.ts.map +1 -0
  261. package/dist/hooks/auto-slash-command/detector.js +73 -0
  262. package/dist/hooks/auto-slash-command/detector.js.map +1 -0
  263. package/dist/hooks/auto-slash-command/executor.d.ts +29 -0
  264. package/dist/hooks/auto-slash-command/executor.d.ts.map +1 -0
  265. package/dist/hooks/auto-slash-command/executor.js +214 -0
  266. package/dist/hooks/auto-slash-command/executor.js.map +1 -0
  267. package/dist/hooks/auto-slash-command/index.d.ts +53 -0
  268. package/dist/hooks/auto-slash-command/index.d.ts.map +1 -0
  269. package/dist/hooks/auto-slash-command/index.js +105 -0
  270. package/dist/hooks/auto-slash-command/index.js.map +1 -0
  271. package/dist/hooks/auto-slash-command/types.d.ts +77 -0
  272. package/dist/hooks/auto-slash-command/types.d.ts.map +1 -0
  273. package/dist/hooks/auto-slash-command/types.js +9 -0
  274. package/dist/hooks/auto-slash-command/types.js.map +1 -0
  275. package/dist/hooks/background-notification/index.d.ts +60 -0
  276. package/dist/hooks/background-notification/index.d.ts.map +1 -0
  277. package/dist/hooks/background-notification/index.js +180 -0
  278. package/dist/hooks/background-notification/index.js.map +1 -0
  279. package/dist/hooks/background-notification/types.d.ts +64 -0
  280. package/dist/hooks/background-notification/types.d.ts.map +1 -0
  281. package/dist/hooks/background-notification/types.js +8 -0
  282. package/dist/hooks/background-notification/types.js.map +1 -0
  283. package/dist/hooks/bridge.d.ts +68 -0
  284. package/dist/hooks/bridge.d.ts.map +1 -0
  285. package/dist/hooks/bridge.js +321 -0
  286. package/dist/hooks/bridge.js.map +1 -0
  287. package/dist/hooks/comment-checker/constants.d.ts +28 -0
  288. package/dist/hooks/comment-checker/constants.d.ts.map +1 -0
  289. package/dist/hooks/comment-checker/constants.js +189 -0
  290. package/dist/hooks/comment-checker/constants.js.map +1 -0
  291. package/dist/hooks/comment-checker/filters.d.ts +39 -0
  292. package/dist/hooks/comment-checker/filters.d.ts.map +1 -0
  293. package/dist/hooks/comment-checker/filters.js +126 -0
  294. package/dist/hooks/comment-checker/filters.js.map +1 -0
  295. package/dist/hooks/comment-checker/index.d.ts +58 -0
  296. package/dist/hooks/comment-checker/index.d.ts.map +1 -0
  297. package/dist/hooks/comment-checker/index.js +298 -0
  298. package/dist/hooks/comment-checker/index.js.map +1 -0
  299. package/dist/hooks/comment-checker/types.d.ts +88 -0
  300. package/dist/hooks/comment-checker/types.d.ts.map +1 -0
  301. package/dist/hooks/comment-checker/types.js +9 -0
  302. package/dist/hooks/comment-checker/types.js.map +1 -0
  303. package/dist/hooks/context-window-limit-recovery/constants.d.ts +28 -0
  304. package/dist/hooks/context-window-limit-recovery/constants.d.ts.map +1 -0
  305. package/dist/hooks/context-window-limit-recovery/constants.js +85 -0
  306. package/dist/hooks/context-window-limit-recovery/constants.js.map +1 -0
  307. package/dist/hooks/context-window-limit-recovery/index.d.ts +62 -0
  308. package/dist/hooks/context-window-limit-recovery/index.d.ts.map +1 -0
  309. package/dist/hooks/context-window-limit-recovery/index.js +201 -0
  310. package/dist/hooks/context-window-limit-recovery/index.js.map +1 -0
  311. package/dist/hooks/context-window-limit-recovery/parser.d.ts +31 -0
  312. package/dist/hooks/context-window-limit-recovery/parser.d.ts.map +1 -0
  313. package/dist/hooks/context-window-limit-recovery/parser.js +241 -0
  314. package/dist/hooks/context-window-limit-recovery/parser.js.map +1 -0
  315. package/dist/hooks/context-window-limit-recovery/types.d.ts +84 -0
  316. package/dist/hooks/context-window-limit-recovery/types.d.ts.map +1 -0
  317. package/dist/hooks/context-window-limit-recovery/types.js +34 -0
  318. package/dist/hooks/context-window-limit-recovery/types.js.map +1 -0
  319. package/dist/hooks/directory-readme-injector/constants.d.ts +15 -0
  320. package/dist/hooks/directory-readme-injector/constants.d.ts.map +1 -0
  321. package/dist/hooks/directory-readme-injector/constants.js +17 -0
  322. package/dist/hooks/directory-readme-injector/constants.js.map +1 -0
  323. package/dist/hooks/directory-readme-injector/index.d.ts +41 -0
  324. package/dist/hooks/directory-readme-injector/index.d.ts.map +1 -0
  325. package/dist/hooks/directory-readme-injector/index.js +162 -0
  326. package/dist/hooks/directory-readme-injector/index.js.map +1 -0
  327. package/dist/hooks/directory-readme-injector/storage.d.ts +20 -0
  328. package/dist/hooks/directory-readme-injector/storage.d.ts.map +1 -0
  329. package/dist/hooks/directory-readme-injector/storage.js +56 -0
  330. package/dist/hooks/directory-readme-injector/storage.js.map +1 -0
  331. package/dist/hooks/directory-readme-injector/types.d.ts +20 -0
  332. package/dist/hooks/directory-readme-injector/types.d.ts.map +1 -0
  333. package/dist/hooks/directory-readme-injector/types.js +9 -0
  334. package/dist/hooks/directory-readme-injector/types.js.map +1 -0
  335. package/dist/hooks/edit-error-recovery/index.d.ts +62 -0
  336. package/dist/hooks/edit-error-recovery/index.d.ts.map +1 -0
  337. package/dist/hooks/edit-error-recovery/index.js +89 -0
  338. package/dist/hooks/edit-error-recovery/index.js.map +1 -0
  339. package/dist/hooks/empty-message-sanitizer/constants.d.ts +33 -0
  340. package/dist/hooks/empty-message-sanitizer/constants.d.ts.map +1 -0
  341. package/dist/hooks/empty-message-sanitizer/constants.js +37 -0
  342. package/dist/hooks/empty-message-sanitizer/constants.js.map +1 -0
  343. package/dist/hooks/empty-message-sanitizer/index.d.ts +59 -0
  344. package/dist/hooks/empty-message-sanitizer/index.d.ts.map +1 -0
  345. package/dist/hooks/empty-message-sanitizer/index.js +171 -0
  346. package/dist/hooks/empty-message-sanitizer/index.js.map +1 -0
  347. package/dist/hooks/empty-message-sanitizer/types.d.ts +79 -0
  348. package/dist/hooks/empty-message-sanitizer/types.d.ts.map +1 -0
  349. package/dist/hooks/empty-message-sanitizer/types.js +10 -0
  350. package/dist/hooks/empty-message-sanitizer/types.js.map +1 -0
  351. package/dist/hooks/index.d.ts +35 -0
  352. package/dist/hooks/index.d.ts.map +1 -0
  353. package/dist/hooks/index.js +81 -0
  354. package/dist/hooks/index.js.map +1 -0
  355. package/dist/hooks/keyword-detector/index.d.ts +40 -0
  356. package/dist/hooks/keyword-detector/index.d.ts.map +1 -0
  357. package/dist/hooks/keyword-detector/index.js +88 -0
  358. package/dist/hooks/keyword-detector/index.js.map +1 -0
  359. package/dist/hooks/non-interactive-env/constants.d.ts +35 -0
  360. package/dist/hooks/non-interactive-env/constants.d.ts.map +1 -0
  361. package/dist/hooks/non-interactive-env/constants.js +69 -0
  362. package/dist/hooks/non-interactive-env/constants.js.map +1 -0
  363. package/dist/hooks/non-interactive-env/detector.d.ts +2 -0
  364. package/dist/hooks/non-interactive-env/detector.d.ts.map +1 -0
  365. package/dist/hooks/non-interactive-env/detector.js +16 -0
  366. package/dist/hooks/non-interactive-env/detector.js.map +1 -0
  367. package/dist/hooks/non-interactive-env/index.d.ts +14 -0
  368. package/dist/hooks/non-interactive-env/index.d.ts.map +1 -0
  369. package/dist/hooks/non-interactive-env/index.js +72 -0
  370. package/dist/hooks/non-interactive-env/index.js.map +1 -0
  371. package/dist/hooks/non-interactive-env/types.d.ts +14 -0
  372. package/dist/hooks/non-interactive-env/types.d.ts.map +1 -0
  373. package/dist/hooks/non-interactive-env/types.js +2 -0
  374. package/dist/hooks/non-interactive-env/types.js.map +1 -0
  375. package/dist/hooks/olympus-orchestrator/constants.d.ts +23 -0
  376. package/dist/hooks/olympus-orchestrator/constants.d.ts.map +1 -0
  377. package/dist/hooks/olympus-orchestrator/constants.js +142 -0
  378. package/dist/hooks/olympus-orchestrator/constants.js.map +1 -0
  379. package/dist/hooks/olympus-orchestrator/index.d.ts +113 -0
  380. package/dist/hooks/olympus-orchestrator/index.d.ts.map +1 -0
  381. package/dist/hooks/olympus-orchestrator/index.js +283 -0
  382. package/dist/hooks/olympus-orchestrator/index.js.map +1 -0
  383. package/dist/hooks/persistent-mode/index.d.ts +40 -0
  384. package/dist/hooks/persistent-mode/index.d.ts.map +1 -0
  385. package/dist/hooks/persistent-mode/index.js +322 -0
  386. package/dist/hooks/persistent-mode/index.js.map +1 -0
  387. package/dist/hooks/plugin-patterns/index.d.ts +107 -0
  388. package/dist/hooks/plugin-patterns/index.d.ts.map +1 -0
  389. package/dist/hooks/plugin-patterns/index.js +289 -0
  390. package/dist/hooks/plugin-patterns/index.js.map +1 -0
  391. package/dist/hooks/preemptive-compaction/constants.d.ts +48 -0
  392. package/dist/hooks/preemptive-compaction/constants.d.ts.map +1 -0
  393. package/dist/hooks/preemptive-compaction/constants.js +90 -0
  394. package/dist/hooks/preemptive-compaction/constants.js.map +1 -0
  395. package/dist/hooks/preemptive-compaction/index.d.ts +55 -0
  396. package/dist/hooks/preemptive-compaction/index.d.ts.map +1 -0
  397. package/dist/hooks/preemptive-compaction/index.js +227 -0
  398. package/dist/hooks/preemptive-compaction/index.js.map +1 -0
  399. package/dist/hooks/preemptive-compaction/types.d.ts +76 -0
  400. package/dist/hooks/preemptive-compaction/types.d.ts.map +1 -0
  401. package/dist/hooks/preemptive-compaction/types.js +9 -0
  402. package/dist/hooks/preemptive-compaction/types.js.map +1 -0
  403. package/dist/hooks/ralph-loop/index.d.ts +60 -0
  404. package/dist/hooks/ralph-loop/index.d.ts.map +1 -0
  405. package/dist/hooks/ralph-loop/index.js +155 -0
  406. package/dist/hooks/ralph-loop/index.js.map +1 -0
  407. package/dist/hooks/ralph-verifier/index.d.ts +72 -0
  408. package/dist/hooks/ralph-verifier/index.d.ts.map +1 -0
  409. package/dist/hooks/ralph-verifier/index.js +223 -0
  410. package/dist/hooks/ralph-verifier/index.js.map +1 -0
  411. package/dist/hooks/rules-injector/constants.d.ts +25 -0
  412. package/dist/hooks/rules-injector/constants.d.ts.map +1 -0
  413. package/dist/hooks/rules-injector/constants.js +40 -0
  414. package/dist/hooks/rules-injector/constants.js.map +1 -0
  415. package/dist/hooks/rules-injector/finder.d.ts +24 -0
  416. package/dist/hooks/rules-injector/finder.d.ts.map +1 -0
  417. package/dist/hooks/rules-injector/finder.js +215 -0
  418. package/dist/hooks/rules-injector/finder.js.map +1 -0
  419. package/dist/hooks/rules-injector/index.d.ts +45 -0
  420. package/dist/hooks/rules-injector/index.d.ts.map +1 -0
  421. package/dist/hooks/rules-injector/index.js +187 -0
  422. package/dist/hooks/rules-injector/index.js.map +1 -0
  423. package/dist/hooks/rules-injector/matcher.d.ts +25 -0
  424. package/dist/hooks/rules-injector/matcher.d.ts.map +1 -0
  425. package/dist/hooks/rules-injector/matcher.js +70 -0
  426. package/dist/hooks/rules-injector/matcher.js.map +1 -0
  427. package/dist/hooks/rules-injector/parser.d.ts +20 -0
  428. package/dist/hooks/rules-injector/parser.d.ts.map +1 -0
  429. package/dist/hooks/rules-injector/parser.js +179 -0
  430. package/dist/hooks/rules-injector/parser.js.map +1 -0
  431. package/dist/hooks/rules-injector/storage.d.ts +26 -0
  432. package/dist/hooks/rules-injector/storage.d.ts.map +1 -0
  433. package/dist/hooks/rules-injector/storage.js +61 -0
  434. package/dist/hooks/rules-injector/storage.js.map +1 -0
  435. package/dist/hooks/rules-injector/types.d.ts +101 -0
  436. package/dist/hooks/rules-injector/types.d.ts.map +1 -0
  437. package/dist/hooks/rules-injector/types.js +10 -0
  438. package/dist/hooks/rules-injector/types.js.map +1 -0
  439. package/dist/hooks/session-recovery/constants.d.ts +56 -0
  440. package/dist/hooks/session-recovery/constants.d.ts.map +1 -0
  441. package/dist/hooks/session-recovery/constants.js +78 -0
  442. package/dist/hooks/session-recovery/constants.js.map +1 -0
  443. package/dist/hooks/session-recovery/index.d.ts +53 -0
  444. package/dist/hooks/session-recovery/index.d.ts.map +1 -0
  445. package/dist/hooks/session-recovery/index.js +321 -0
  446. package/dist/hooks/session-recovery/index.js.map +1 -0
  447. package/dist/hooks/session-recovery/storage.d.ts +76 -0
  448. package/dist/hooks/session-recovery/storage.d.ts.map +1 -0
  449. package/dist/hooks/session-recovery/storage.js +383 -0
  450. package/dist/hooks/session-recovery/storage.js.map +1 -0
  451. package/dist/hooks/session-recovery/types.d.ts +145 -0
  452. package/dist/hooks/session-recovery/types.d.ts.map +1 -0
  453. package/dist/hooks/session-recovery/types.js +8 -0
  454. package/dist/hooks/session-recovery/types.js.map +1 -0
  455. package/dist/hooks/sisyphus-orchestrator/constants.d.ts +23 -0
  456. package/dist/hooks/sisyphus-orchestrator/constants.d.ts.map +1 -0
  457. package/dist/hooks/sisyphus-orchestrator/constants.js +142 -0
  458. package/dist/hooks/sisyphus-orchestrator/constants.js.map +1 -0
  459. package/dist/hooks/sisyphus-orchestrator/index.d.ts +113 -0
  460. package/dist/hooks/sisyphus-orchestrator/index.d.ts.map +1 -0
  461. package/dist/hooks/sisyphus-orchestrator/index.js +283 -0
  462. package/dist/hooks/sisyphus-orchestrator/index.js.map +1 -0
  463. package/dist/hooks/the-ascent/index.d.ts +60 -0
  464. package/dist/hooks/the-ascent/index.d.ts.map +1 -0
  465. package/dist/hooks/the-ascent/index.js +155 -0
  466. package/dist/hooks/the-ascent/index.js.map +1 -0
  467. package/dist/hooks/think-mode/detector.d.ts +28 -0
  468. package/dist/hooks/think-mode/detector.d.ts.map +1 -0
  469. package/dist/hooks/think-mode/detector.js +105 -0
  470. package/dist/hooks/think-mode/detector.js.map +1 -0
  471. package/dist/hooks/think-mode/index.d.ts +70 -0
  472. package/dist/hooks/think-mode/index.d.ts.map +1 -0
  473. package/dist/hooks/think-mode/index.js +144 -0
  474. package/dist/hooks/think-mode/index.js.map +1 -0
  475. package/dist/hooks/think-mode/switcher.d.ts +39 -0
  476. package/dist/hooks/think-mode/switcher.d.ts.map +1 -0
  477. package/dist/hooks/think-mode/switcher.js +180 -0
  478. package/dist/hooks/think-mode/switcher.js.map +1 -0
  479. package/dist/hooks/think-mode/types.d.ts +60 -0
  480. package/dist/hooks/think-mode/types.d.ts.map +1 -0
  481. package/dist/hooks/think-mode/types.js +9 -0
  482. package/dist/hooks/think-mode/types.js.map +1 -0
  483. package/dist/hooks/thinking-block-validator/constants.d.ts +37 -0
  484. package/dist/hooks/thinking-block-validator/constants.d.ts.map +1 -0
  485. package/dist/hooks/thinking-block-validator/constants.js +50 -0
  486. package/dist/hooks/thinking-block-validator/constants.js.map +1 -0
  487. package/dist/hooks/thinking-block-validator/index.d.ts +35 -0
  488. package/dist/hooks/thinking-block-validator/index.d.ts.map +1 -0
  489. package/dist/hooks/thinking-block-validator/index.js +156 -0
  490. package/dist/hooks/thinking-block-validator/index.js.map +1 -0
  491. package/dist/hooks/thinking-block-validator/types.d.ts +67 -0
  492. package/dist/hooks/thinking-block-validator/types.d.ts.map +1 -0
  493. package/dist/hooks/thinking-block-validator/types.js +9 -0
  494. package/dist/hooks/thinking-block-validator/types.js.map +1 -0
  495. package/dist/hooks/todo-continuation/index.d.ts +39 -0
  496. package/dist/hooks/todo-continuation/index.d.ts.map +1 -0
  497. package/dist/hooks/todo-continuation/index.js +140 -0
  498. package/dist/hooks/todo-continuation/index.js.map +1 -0
  499. package/dist/hooks/ultrawork-state/index.d.ts +60 -0
  500. package/dist/hooks/ultrawork-state/index.d.ts.map +1 -0
  501. package/dist/hooks/ultrawork-state/index.js +207 -0
  502. package/dist/hooks/ultrawork-state/index.js.map +1 -0
  503. package/dist/index.d.ts +117 -0
  504. package/dist/index.d.ts.map +1 -0
  505. package/dist/index.js +175 -0
  506. package/dist/index.js.map +1 -0
  507. package/dist/installer/hooks.d.ts +196 -0
  508. package/dist/installer/hooks.d.ts.map +1 -0
  509. package/dist/installer/hooks.js +1385 -0
  510. package/dist/installer/hooks.js.map +1 -0
  511. package/dist/installer/index.d.ts +92 -0
  512. package/dist/installer/index.d.ts.map +1 -0
  513. package/dist/installer/index.js +2249 -0
  514. package/dist/installer/index.js.map +1 -0
  515. package/dist/mcp/index.d.ts +6 -0
  516. package/dist/mcp/index.d.ts.map +1 -0
  517. package/dist/mcp/index.js +5 -0
  518. package/dist/mcp/index.js.map +1 -0
  519. package/dist/mcp/servers.d.ts +77 -0
  520. package/dist/mcp/servers.d.ts.map +1 -0
  521. package/dist/mcp/servers.js +122 -0
  522. package/dist/mcp/servers.js.map +1 -0
  523. package/dist/shared/index.d.ts +5 -0
  524. package/dist/shared/index.d.ts.map +1 -0
  525. package/dist/shared/index.js +5 -0
  526. package/dist/shared/index.js.map +1 -0
  527. package/dist/shared/types.d.ts +159 -0
  528. package/dist/shared/types.d.ts.map +1 -0
  529. package/dist/shared/types.js +5 -0
  530. package/dist/shared/types.js.map +1 -0
  531. package/dist/tools/ast-tools.d.ts +63 -0
  532. package/dist/tools/ast-tools.d.ts.map +1 -0
  533. package/dist/tools/ast-tools.js +450 -0
  534. package/dist/tools/ast-tools.js.map +1 -0
  535. package/dist/tools/index.d.ts +52 -0
  536. package/dist/tools/index.d.ts.map +1 -0
  537. package/dist/tools/index.js +120 -0
  538. package/dist/tools/index.js.map +1 -0
  539. package/dist/tools/lsp/client.d.ts +201 -0
  540. package/dist/tools/lsp/client.d.ts.map +1 -0
  541. package/dist/tools/lsp/client.js +454 -0
  542. package/dist/tools/lsp/client.js.map +1 -0
  543. package/dist/tools/lsp/index.d.ts +9 -0
  544. package/dist/tools/lsp/index.d.ts.map +1 -0
  545. package/dist/tools/lsp/index.js +7 -0
  546. package/dist/tools/lsp/index.js.map +1 -0
  547. package/dist/tools/lsp/servers.d.ts +37 -0
  548. package/dist/tools/lsp/servers.d.ts.map +1 -0
  549. package/dist/tools/lsp/servers.js +149 -0
  550. package/dist/tools/lsp/servers.js.map +1 -0
  551. package/dist/tools/lsp/utils.d.ts +58 -0
  552. package/dist/tools/lsp/utils.d.ts.map +1 -0
  553. package/dist/tools/lsp/utils.js +236 -0
  554. package/dist/tools/lsp/utils.js.map +1 -0
  555. package/dist/tools/lsp-tools.d.ts +151 -0
  556. package/dist/tools/lsp-tools.d.ts.map +1 -0
  557. package/dist/tools/lsp-tools.js +358 -0
  558. package/dist/tools/lsp-tools.js.map +1 -0
  559. package/package.json +85 -0
  560. package/scripts/claude-sisyphus.sh +9 -0
  561. package/scripts/install.sh +1774 -0
  562. package/scripts/keyword-detector.mjs +209 -0
  563. package/scripts/keyword-detector.sh +71 -0
  564. package/scripts/persistent-mode.mjs +241 -0
  565. package/scripts/persistent-mode.sh +300 -0
  566. package/scripts/post-tool-verifier.mjs +217 -0
  567. package/scripts/post-tool-verifier.sh +196 -0
  568. package/scripts/pre-tool-enforcer.mjs +99 -0
  569. package/scripts/pre-tool-enforcer.sh +76 -0
  570. package/scripts/sisyphus-aliases.sh +18 -0
  571. package/scripts/stop-continuation.sh +31 -0
  572. package/scripts/test-pr25.sh +525 -0
  573. package/scripts/uninstall.sh +171 -0
@@ -0,0 +1,283 @@
1
+ /**
2
+ * Complexity Signal Extraction
3
+ *
4
+ * Extracts complexity signals from task prompts to inform routing decisions.
5
+ * Signals are categorized into lexical, structural, and context types.
6
+ */
7
+ import { COMPLEXITY_KEYWORDS } from './types.js';
8
+ /**
9
+ * Extract lexical signals from task prompt
10
+ * These are fast, regex-based extractions that don't require model calls
11
+ */
12
+ export function extractLexicalSignals(prompt) {
13
+ const lowerPrompt = prompt.toLowerCase();
14
+ const words = prompt.split(/\s+/).filter(w => w.length > 0);
15
+ return {
16
+ wordCount: words.length,
17
+ filePathCount: countFilePaths(prompt),
18
+ codeBlockCount: countCodeBlocks(prompt),
19
+ hasArchitectureKeywords: hasKeywords(lowerPrompt, COMPLEXITY_KEYWORDS.architecture),
20
+ hasDebuggingKeywords: hasKeywords(lowerPrompt, COMPLEXITY_KEYWORDS.debugging),
21
+ hasSimpleKeywords: hasKeywords(lowerPrompt, COMPLEXITY_KEYWORDS.simple),
22
+ hasRiskKeywords: hasKeywords(lowerPrompt, COMPLEXITY_KEYWORDS.risk),
23
+ questionDepth: detectQuestionDepth(lowerPrompt),
24
+ hasImplicitRequirements: detectImplicitRequirements(lowerPrompt),
25
+ };
26
+ }
27
+ /**
28
+ * Extract structural signals from task prompt
29
+ * These require more sophisticated parsing
30
+ */
31
+ export function extractStructuralSignals(prompt) {
32
+ const lowerPrompt = prompt.toLowerCase();
33
+ return {
34
+ estimatedSubtasks: estimateSubtasks(prompt),
35
+ crossFileDependencies: detectCrossFileDependencies(prompt),
36
+ hasTestRequirements: detectTestRequirements(lowerPrompt),
37
+ domainSpecificity: detectDomain(lowerPrompt),
38
+ requiresExternalKnowledge: detectExternalKnowledge(lowerPrompt),
39
+ reversibility: assessReversibility(lowerPrompt),
40
+ impactScope: assessImpactScope(prompt),
41
+ };
42
+ }
43
+ /**
44
+ * Extract context signals from routing context
45
+ */
46
+ export function extractContextSignals(context) {
47
+ return {
48
+ previousFailures: context.previousFailures ?? 0,
49
+ conversationTurns: context.conversationTurns ?? 0,
50
+ planComplexity: context.planTasks ?? 0,
51
+ remainingTasks: context.remainingTasks ?? 0,
52
+ agentChainDepth: context.agentChainDepth ?? 0,
53
+ };
54
+ }
55
+ /**
56
+ * Extract all complexity signals
57
+ */
58
+ export function extractAllSignals(prompt, context) {
59
+ return {
60
+ lexical: extractLexicalSignals(prompt),
61
+ structural: extractStructuralSignals(prompt),
62
+ context: extractContextSignals(context),
63
+ };
64
+ }
65
+ // ============ Helper Functions ============
66
+ /**
67
+ * Count file paths in prompt
68
+ */
69
+ function countFilePaths(prompt) {
70
+ // Match common file path patterns
71
+ const patterns = [
72
+ /(?:^|\s)[.\/~]?(?:[\w-]+\/)+[\w.-]+\.\w+/gm, // Unix-style paths
73
+ /`[^`]+\.\w+`/g, // Backtick-quoted files
74
+ /['"][^'"]+\.\w+['"]/g, // Quoted files
75
+ ];
76
+ let count = 0;
77
+ for (const pattern of patterns) {
78
+ const matches = prompt.match(pattern);
79
+ if (matches)
80
+ count += matches.length;
81
+ }
82
+ return Math.min(count, 20); // Cap at reasonable max
83
+ }
84
+ /**
85
+ * Count code blocks in prompt
86
+ */
87
+ function countCodeBlocks(prompt) {
88
+ const fencedBlocks = (prompt.match(/```[\s\S]*?```/g) || []).length;
89
+ const indentedBlocks = (prompt.match(/(?:^|\n)(?:\s{4}|\t)[^\n]+(?:\n(?:\s{4}|\t)[^\n]+)*/g) || []).length;
90
+ return fencedBlocks + Math.floor(indentedBlocks / 2);
91
+ }
92
+ /**
93
+ * Check if prompt contains any of the keywords
94
+ */
95
+ function hasKeywords(prompt, keywords) {
96
+ return keywords.some(kw => prompt.includes(kw));
97
+ }
98
+ /**
99
+ * Detect question depth
100
+ * 'why' questions require deeper reasoning than 'what' or 'where'
101
+ */
102
+ function detectQuestionDepth(prompt) {
103
+ if (/\bwhy\b.*\?|\bwhy\s+(is|are|does|do|did|would|should|can)/i.test(prompt)) {
104
+ return 'why';
105
+ }
106
+ if (/\bhow\b.*\?|\bhow\s+(do|does|can|should|would|to)/i.test(prompt)) {
107
+ return 'how';
108
+ }
109
+ if (/\bwhat\b.*\?|\bwhat\s+(is|are|does|do)/i.test(prompt)) {
110
+ return 'what';
111
+ }
112
+ if (/\bwhere\b.*\?|\bwhere\s+(is|are|does|do|can)/i.test(prompt)) {
113
+ return 'where';
114
+ }
115
+ return 'none';
116
+ }
117
+ /**
118
+ * Detect implicit requirements (vague statements without clear deliverables)
119
+ */
120
+ function detectImplicitRequirements(prompt) {
121
+ const vaguePatterns = [
122
+ /\bmake it better\b/,
123
+ /\bimprove\b(?!.*(?:by|to|so that))/,
124
+ /\bfix\b(?!.*(?:the|this|that|in|at))/,
125
+ /\boptimize\b(?!.*(?:by|for|to))/,
126
+ /\bclean up\b/,
127
+ /\brefactor\b(?!.*(?:to|by|into))/,
128
+ ];
129
+ return vaguePatterns.some(p => p.test(prompt));
130
+ }
131
+ /**
132
+ * Estimate number of subtasks
133
+ */
134
+ function estimateSubtasks(prompt) {
135
+ let count = 1;
136
+ // Count explicit list items
137
+ const bulletPoints = (prompt.match(/^[\s]*[-*•]\s/gm) || []).length;
138
+ const numberedItems = (prompt.match(/^[\s]*\d+[.)]\s/gm) || []).length;
139
+ count += bulletPoints + numberedItems;
140
+ // Count 'and' conjunctions that might indicate multiple tasks
141
+ const andCount = (prompt.match(/\band\b/gi) || []).length;
142
+ count += Math.floor(andCount / 2);
143
+ // Count 'then' indicators
144
+ const thenCount = (prompt.match(/\bthen\b/gi) || []).length;
145
+ count += thenCount;
146
+ return Math.min(count, 10);
147
+ }
148
+ /**
149
+ * Detect if task involves changes across multiple files
150
+ */
151
+ function detectCrossFileDependencies(prompt) {
152
+ const fileCount = countFilePaths(prompt);
153
+ if (fileCount >= 2)
154
+ return true;
155
+ const crossFileIndicators = [
156
+ /multiple files/i,
157
+ /across.*files/i,
158
+ /several.*files/i,
159
+ /all.*files/i,
160
+ /throughout.*codebase/i,
161
+ /entire.*project/i,
162
+ /whole.*system/i,
163
+ ];
164
+ return crossFileIndicators.some(p => p.test(prompt));
165
+ }
166
+ /**
167
+ * Detect test requirements
168
+ */
169
+ function detectTestRequirements(prompt) {
170
+ const testIndicators = [
171
+ /\btest/i,
172
+ /\bspec\b/i,
173
+ /make sure.*work/i,
174
+ /verify/i,
175
+ /ensure.*pass/i,
176
+ /\bTDD\b/,
177
+ /unit test/i,
178
+ /integration test/i,
179
+ ];
180
+ return testIndicators.some(p => p.test(prompt));
181
+ }
182
+ /**
183
+ * Detect domain specificity
184
+ */
185
+ function detectDomain(prompt) {
186
+ const domains = {
187
+ frontend: [
188
+ /\b(react|vue|angular|svelte|css|html|jsx|tsx|component|ui|ux|styling|tailwind|sass|scss)\b/i,
189
+ /\b(button|modal|form|input|layout|responsive|animation)\b/i,
190
+ ],
191
+ backend: [
192
+ /\b(api|endpoint|database|query|sql|graphql|rest|server|auth|middleware)\b/i,
193
+ /\b(node|express|fastify|nest|django|flask|rails)\b/i,
194
+ ],
195
+ infrastructure: [
196
+ /\b(docker|kubernetes|k8s|terraform|aws|gcp|azure|ci|cd|deploy|container)\b/i,
197
+ /\b(nginx|load.?balancer|scaling|monitoring|logging)\b/i,
198
+ ],
199
+ security: [
200
+ /\b(security|auth|oauth|jwt|encryption|vulnerability|xss|csrf|injection)\b/i,
201
+ /\b(password|credential|secret|token|permission)\b/i,
202
+ ],
203
+ };
204
+ for (const [domain, patterns] of Object.entries(domains)) {
205
+ if (patterns.some(p => p.test(prompt))) {
206
+ return domain;
207
+ }
208
+ }
209
+ return 'generic';
210
+ }
211
+ /**
212
+ * Detect if external knowledge is required
213
+ */
214
+ function detectExternalKnowledge(prompt) {
215
+ const externalIndicators = [
216
+ /\bdocs?\b/i,
217
+ /\bdocumentation\b/i,
218
+ /\bofficial\b/i,
219
+ /\blibrary\b/i,
220
+ /\bpackage\b/i,
221
+ /\bframework\b/i,
222
+ /\bhow does.*work\b/i,
223
+ /\bbest practice/i,
224
+ ];
225
+ return externalIndicators.some(p => p.test(prompt));
226
+ }
227
+ /**
228
+ * Assess reversibility of changes
229
+ */
230
+ function assessReversibility(prompt) {
231
+ const difficultIndicators = [
232
+ /\bmigrat/i,
233
+ /\bproduction\b/i,
234
+ /\bdata.*loss/i,
235
+ /\bdelete.*all/i,
236
+ /\bdrop.*table/i,
237
+ /\birreversible/i,
238
+ /\bpermanent/i,
239
+ ];
240
+ const moderateIndicators = [
241
+ /\brefactor/i,
242
+ /\brestructure/i,
243
+ /\brename.*across/i,
244
+ /\bmove.*files/i,
245
+ /\bchange.*schema/i,
246
+ ];
247
+ if (difficultIndicators.some(p => p.test(prompt)))
248
+ return 'difficult';
249
+ if (moderateIndicators.some(p => p.test(prompt)))
250
+ return 'moderate';
251
+ return 'easy';
252
+ }
253
+ /**
254
+ * Assess impact scope of changes
255
+ */
256
+ function assessImpactScope(prompt) {
257
+ const systemWideIndicators = [
258
+ /\bentire\b/i,
259
+ /\ball\s+(?:files|components|modules)/i,
260
+ /\bwhole\s+(?:project|codebase|system)/i,
261
+ /\bsystem.?wide/i,
262
+ /\bglobal/i,
263
+ /\beverywhere/i,
264
+ /\bthroughout/i,
265
+ ];
266
+ const moduleIndicators = [
267
+ /\bmodule/i,
268
+ /\bpackage/i,
269
+ /\bservice/i,
270
+ /\bfeature/i,
271
+ /\bcomponent/i,
272
+ /\blayer/i,
273
+ ];
274
+ if (systemWideIndicators.some(p => p.test(prompt)))
275
+ return 'system-wide';
276
+ // Check for multiple files (indicates module-level at least)
277
+ if (countFilePaths(prompt) >= 3)
278
+ return 'module';
279
+ if (moduleIndicators.some(p => p.test(prompt)))
280
+ return 'module';
281
+ return 'local';
282
+ }
283
+ //# sourceMappingURL=signals.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"signals.js","sourceRoot":"","sources":["../../../src/features/model-routing/signals.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,195 @@
1
+ /**
2
+ * Model Routing Types
3
+ *
4
+ * Type definitions for the intelligent model routing system that routes
5
+ * sub-agent tasks to appropriate models (Opus/Sonnet/Haiku) based on
6
+ * task complexity.
7
+ */
8
+ import type { ModelType } from '../../shared/types.js';
9
+ /**
10
+ * Complexity tier for task routing
11
+ */
12
+ export type ComplexityTier = 'LOW' | 'MEDIUM' | 'HIGH';
13
+ /**
14
+ * Model tier mapping to actual Claude models
15
+ */
16
+ export declare const TIER_MODELS: Record<ComplexityTier, string>;
17
+ /**
18
+ * Model tier to simple model type mapping
19
+ */
20
+ export declare const TIER_TO_MODEL_TYPE: Record<ComplexityTier, ModelType>;
21
+ /**
22
+ * Lexical/syntactic signals that can be extracted without model calls
23
+ */
24
+ export interface LexicalSignals {
25
+ /** Word count of the task prompt */
26
+ wordCount: number;
27
+ /** Number of file paths mentioned */
28
+ filePathCount: number;
29
+ /** Number of code blocks in the prompt */
30
+ codeBlockCount: number;
31
+ /** Contains architecture-related keywords */
32
+ hasArchitectureKeywords: boolean;
33
+ /** Contains debugging-related keywords */
34
+ hasDebuggingKeywords: boolean;
35
+ /** Contains simple search keywords */
36
+ hasSimpleKeywords: boolean;
37
+ /** Contains risk/critical keywords */
38
+ hasRiskKeywords: boolean;
39
+ /** Question depth: 'why' > 'how' > 'what' > 'where' */
40
+ questionDepth: 'why' | 'how' | 'what' | 'where' | 'none';
41
+ /** Has implicit requirements (statements without clear deliverables) */
42
+ hasImplicitRequirements: boolean;
43
+ }
44
+ /**
45
+ * Structural signals that require parsing
46
+ */
47
+ export interface StructuralSignals {
48
+ /** Estimated number of subtasks */
49
+ estimatedSubtasks: number;
50
+ /** Whether changes span multiple files */
51
+ crossFileDependencies: boolean;
52
+ /** Whether tests are required */
53
+ hasTestRequirements: boolean;
54
+ /** Domain specificity of the task */
55
+ domainSpecificity: 'generic' | 'frontend' | 'backend' | 'infrastructure' | 'security';
56
+ /** Whether external knowledge is needed */
57
+ requiresExternalKnowledge: boolean;
58
+ /** How reversible the changes are */
59
+ reversibility: 'easy' | 'moderate' | 'difficult';
60
+ /** Scope of impact */
61
+ impactScope: 'local' | 'module' | 'system-wide';
62
+ }
63
+ /**
64
+ * Context signals from session state
65
+ */
66
+ export interface ContextSignals {
67
+ /** Number of previous failures on this task */
68
+ previousFailures: number;
69
+ /** Number of conversation turns */
70
+ conversationTurns: number;
71
+ /** Complexity of the active plan (number of tasks) */
72
+ planComplexity: number;
73
+ /** Number of remaining tasks in plan */
74
+ remainingTasks: number;
75
+ /** Depth of agent delegation chain */
76
+ agentChainDepth: number;
77
+ }
78
+ /**
79
+ * Combined complexity signals
80
+ */
81
+ export interface ComplexitySignals {
82
+ lexical: LexicalSignals;
83
+ structural: StructuralSignals;
84
+ context: ContextSignals;
85
+ }
86
+ /**
87
+ * Routing decision result
88
+ */
89
+ export interface RoutingDecision {
90
+ /** Selected model ID */
91
+ model: string;
92
+ /** Selected model type */
93
+ modelType: ModelType;
94
+ /** Complexity tier */
95
+ tier: ComplexityTier;
96
+ /** Confidence score (0-1) */
97
+ confidence: number;
98
+ /** Reasons for the decision */
99
+ reasons: string[];
100
+ /** Adapted prompt for the tier (optional) */
101
+ adaptedPrompt?: string;
102
+ /** Whether escalation was triggered */
103
+ escalated: boolean;
104
+ /** Original tier before escalation (if escalated) */
105
+ originalTier?: ComplexityTier;
106
+ }
107
+ /**
108
+ * Context for making routing decisions
109
+ */
110
+ export interface RoutingContext {
111
+ /** The task prompt to route */
112
+ taskPrompt: string;
113
+ /** Target agent type (if specified) */
114
+ agentType?: string;
115
+ /** Parent session ID for context */
116
+ parentSession?: string;
117
+ /** Number of previous failures */
118
+ previousFailures?: number;
119
+ /** Current conversation turn count */
120
+ conversationTurns?: number;
121
+ /** Active plan tasks count */
122
+ planTasks?: number;
123
+ /** Remaining plan tasks */
124
+ remainingTasks?: number;
125
+ /** Current agent chain depth */
126
+ agentChainDepth?: number;
127
+ /** Explicit model override (bypasses routing) */
128
+ explicitModel?: ModelType;
129
+ }
130
+ /**
131
+ * Routing rule definition
132
+ */
133
+ export interface RoutingRule {
134
+ /** Rule name for logging/debugging */
135
+ name: string;
136
+ /** Condition function to check if rule applies */
137
+ condition: (context: RoutingContext, signals: ComplexitySignals) => boolean;
138
+ /** Action to take if condition is true */
139
+ action: {
140
+ tier: ComplexityTier | 'EXPLICIT';
141
+ reason: string;
142
+ };
143
+ /** Priority (higher = evaluated first) */
144
+ priority: number;
145
+ }
146
+ /**
147
+ * Routing configuration
148
+ */
149
+ export interface RoutingConfig {
150
+ /** Whether routing is enabled */
151
+ enabled: boolean;
152
+ /** Default tier when no rules match */
153
+ defaultTier: ComplexityTier;
154
+ /** Whether automatic escalation is enabled */
155
+ escalationEnabled: boolean;
156
+ /** Maximum escalation attempts */
157
+ maxEscalations: number;
158
+ /** Model mapping per tier */
159
+ tierModels: Record<ComplexityTier, string>;
160
+ /** Agent-specific overrides */
161
+ agentOverrides?: Record<string, {
162
+ tier: ComplexityTier;
163
+ reason: string;
164
+ }>;
165
+ /** Keywords that force escalation */
166
+ escalationKeywords?: string[];
167
+ /** Keywords that suggest lower tier */
168
+ simplificationKeywords?: string[];
169
+ }
170
+ /**
171
+ * Default routing configuration
172
+ *
173
+ * ALL agents are adaptive except orchestrators.
174
+ * Agent overrides are only for orchestrator-olympus (fixed to Opus).
175
+ */
176
+ export declare const DEFAULT_ROUTING_CONFIG: RoutingConfig;
177
+ /**
178
+ * Agent categories and their default complexity tiers
179
+ */
180
+ export declare const AGENT_CATEGORY_TIERS: Record<string, ComplexityTier>;
181
+ /**
182
+ * Keywords for complexity detection
183
+ */
184
+ export declare const COMPLEXITY_KEYWORDS: {
185
+ architecture: string[];
186
+ debugging: string[];
187
+ simple: string[];
188
+ risk: string[];
189
+ };
190
+ /**
191
+ * Prompt adaptation strategies per tier
192
+ */
193
+ export type PromptAdaptationStrategy = 'full' | 'balanced' | 'concise';
194
+ export declare const TIER_PROMPT_STRATEGIES: Record<ComplexityTier, PromptAdaptationStrategy>;
195
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/features/model-routing/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,86 @@
1
+ /**
2
+ * Model Routing Types
3
+ *
4
+ * Type definitions for the intelligent model routing system that routes
5
+ * sub-agent tasks to appropriate models (Opus/Sonnet/Haiku) based on
6
+ * task complexity.
7
+ */
8
+ /**
9
+ * Model tier mapping to actual Claude models
10
+ */
11
+ export const TIER_MODELS = {
12
+ LOW: 'claude-haiku-4-5-20251001',
13
+ MEDIUM: 'claude-sonnet-4-5-20250929',
14
+ HIGH: 'claude-opus-4-5-20251101',
15
+ };
16
+ /**
17
+ * Model tier to simple model type mapping
18
+ */
19
+ export const TIER_TO_MODEL_TYPE = {
20
+ LOW: 'haiku',
21
+ MEDIUM: 'sonnet',
22
+ HIGH: 'opus',
23
+ };
24
+ /**
25
+ * Default routing configuration
26
+ *
27
+ * ALL agents are adaptive except orchestrators.
28
+ * Agent overrides are only for orchestrator-olympus (fixed to Opus).
29
+ */
30
+ export const DEFAULT_ROUTING_CONFIG = {
31
+ enabled: true,
32
+ defaultTier: 'MEDIUM',
33
+ escalationEnabled: false, // Deprecated: orchestrator routes proactively
34
+ maxEscalations: 0,
35
+ tierModels: TIER_MODELS,
36
+ agentOverrides: {
37
+ // Only orchestrators are fixed - they need Opus to analyze and delegate
38
+ 'orchestrator-olympus': { tier: 'HIGH', reason: 'Orchestrator requires Opus to analyze and delegate' },
39
+ },
40
+ escalationKeywords: [
41
+ 'critical', 'production', 'urgent', 'security', 'breaking',
42
+ 'architecture', 'refactor', 'redesign', 'root cause',
43
+ ],
44
+ simplificationKeywords: [
45
+ 'find', 'list', 'show', 'where', 'search', 'locate', 'grep',
46
+ ],
47
+ };
48
+ /**
49
+ * Agent categories and their default complexity tiers
50
+ */
51
+ export const AGENT_CATEGORY_TIERS = {
52
+ exploration: 'LOW',
53
+ utility: 'LOW',
54
+ specialist: 'MEDIUM',
55
+ orchestration: 'MEDIUM',
56
+ advisor: 'HIGH',
57
+ planner: 'HIGH',
58
+ reviewer: 'HIGH',
59
+ };
60
+ /**
61
+ * Keywords for complexity detection
62
+ */
63
+ export const COMPLEXITY_KEYWORDS = {
64
+ architecture: [
65
+ 'architecture', 'refactor', 'redesign', 'restructure', 'reorganize',
66
+ 'decouple', 'modularize', 'abstract', 'pattern', 'design',
67
+ ],
68
+ debugging: [
69
+ 'debug', 'diagnose', 'root cause', 'investigate', 'trace', 'analyze',
70
+ 'why is', 'figure out', 'understand why', 'not working',
71
+ ],
72
+ simple: [
73
+ 'find', 'search', 'locate', 'list', 'show', 'where is', 'what is',
74
+ 'get', 'fetch', 'display', 'print',
75
+ ],
76
+ risk: [
77
+ 'critical', 'production', 'urgent', 'security', 'breaking', 'dangerous',
78
+ 'irreversible', 'data loss', 'migration', 'deploy',
79
+ ],
80
+ };
81
+ export const TIER_PROMPT_STRATEGIES = {
82
+ HIGH: 'full',
83
+ MEDIUM: 'balanced',
84
+ LOW: 'concise',
85
+ };
86
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/features/model-routing/types.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AASH;;GAEG;AACH,MAAM,CAAC,MAAM,WAAW,GAAmC;IACzD,GAAG,EAAE,2BAA2B;IAChC,MAAM,EAAE,4BAA4B;IACpC,IAAI,EAAE,0BAA0B;CACjC,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAsC;IACnE,GAAG,EAAE,OAAO;IACZ,MAAM,EAAE,QAAQ;IAChB,IAAI,EAAE,MAAM;CACb,CAAC;AA+JF;;;;;GAKG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAkB;IACnD,OAAO,EAAE,IAAI;IACb,WAAW,EAAE,QAAQ;IACrB,iBAAiB,EAAE,KAAK,EAAG,8CAA8C;IACzE,cAAc,EAAE,CAAC;IACjB,UAAU,EAAE,WAAW;IACvB,cAAc,EAAE;QACd,wEAAwE;QACxE,sBAAsB,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,oDAAoD,EAAE;KACvG;IACD,kBAAkB,EAAE;QAClB,UAAU,EAAE,YAAY,EAAE,QAAQ,EAAE,UAAU,EAAE,UAAU;QAC1D,cAAc,EAAE,UAAU,EAAE,UAAU,EAAE,YAAY;KACrD;IACD,sBAAsB,EAAE;QACtB,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM;KAC5D;CACF,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAmC;IAClE,WAAW,EAAE,KAAK;IAClB,OAAO,EAAE,KAAK;IACd,UAAU,EAAE,QAAQ;IACpB,aAAa,EAAE,QAAQ;IACvB,OAAO,EAAE,MAAM;IACf,OAAO,EAAE,MAAM;IACf,QAAQ,EAAE,MAAM;CACjB,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG;IACjC,YAAY,EAAE;QACZ,cAAc,EAAE,UAAU,EAAE,UAAU,EAAE,aAAa,EAAE,YAAY;QACnE,UAAU,EAAE,YAAY,EAAE,UAAU,EAAE,SAAS,EAAE,QAAQ;KAC1D;IACD,SAAS,EAAE;QACT,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,aAAa,EAAE,OAAO,EAAE,SAAS;QACpE,QAAQ,EAAE,YAAY,EAAE,gBAAgB,EAAE,aAAa;KACxD;IACD,MAAM,EAAE;QACN,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS;QACjE,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO;KACnC;IACD,IAAI,EAAE;QACJ,UAAU,EAAE,YAAY,EAAE,QAAQ,EAAE,UAAU,EAAE,UAAU,EAAE,WAAW;QACvE,cAAc,EAAE,WAAW,EAAE,WAAW,EAAE,QAAQ;KACnD;CACF,CAAC;AAOF,MAAM,CAAC,MAAM,sBAAsB,GAAqD;IACtF,IAAI,EAAE,MAAM;IACZ,MAAM,EAAE,UAAU;IAClB,GAAG,EAAE,SAAS;CACf,CAAC"}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Agent Usage Reminder Constants
3
+ *
4
+ * Constants for tracking tool usage and encouraging agent delegation.
5
+ *
6
+ * Ported from oh-my-opencode's agent-usage-reminder hook.
7
+ */
8
+ /** Storage directory for agent usage reminder state */
9
+ export declare const OLYMPUS_STORAGE_DIR: string;
10
+ export declare const AGENT_USAGE_REMINDER_STORAGE: string;
11
+ /** All tool names normalized to lowercase for case-insensitive matching */
12
+ export declare const TARGET_TOOLS: Set<string>;
13
+ /** Agent tools that indicate agent usage */
14
+ export declare const AGENT_TOOLS: Set<string>;
15
+ /** Reminder message shown to users */
16
+ export declare const REMINDER_MESSAGE = "\n[Agent Usage Reminder]\n\nYou called a search/fetch tool directly without leveraging specialized agents.\n\nRECOMMENDED: Use Task tool with explore/librarian agents for better results:\n\n```\n// Parallel exploration - fire multiple agents simultaneously\nTask(agent=\"explore\", prompt=\"Find all files matching pattern X\")\nTask(agent=\"explore\", prompt=\"Search for implementation of Y\")\nTask(agent=\"librarian\", prompt=\"Lookup documentation for Z\")\n\n// Then continue your work while they run in background\n// System will notify you when each completes\n```\n\nWHY:\n- Agents can perform deeper, more thorough searches\n- Background tasks run in parallel, saving time\n- Specialized agents have domain expertise\n- Reduces context window usage in main session\n\nALWAYS prefer: Multiple parallel Task calls > Direct tool calls\n";
17
+ //# sourceMappingURL=constants.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../src/hooks/agent-usage-reminder/constants.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAKH,uDAAuD;AACvD,eAAO,MAAM,mBAAmB,QAA8B,CAAC;AAC/D,eAAO,MAAM,4BAA4B,QAGxC,CAAC;AAEF,2EAA2E;AAC3E,eAAO,MAAM,YAAY,aAWvB,CAAC;AAEH,4CAA4C;AAC5C,eAAO,MAAM,WAAW,aAItB,CAAC;AAEH,sCAAsC;AACtC,eAAO,MAAM,gBAAgB,g1BAwB5B,CAAC"}
@@ -0,0 +1,58 @@
1
+ /**
2
+ * Agent Usage Reminder Constants
3
+ *
4
+ * Constants for tracking tool usage and encouraging agent delegation.
5
+ *
6
+ * Ported from oh-my-opencode's agent-usage-reminder hook.
7
+ */
8
+ import { join } from 'path';
9
+ import { homedir } from 'os';
10
+ /** Storage directory for agent usage reminder state */
11
+ export const OLYMPUS_STORAGE_DIR = join(homedir(), '.olympus');
12
+ export const AGENT_USAGE_REMINDER_STORAGE = join(OLYMPUS_STORAGE_DIR, 'agent-usage-reminder');
13
+ /** All tool names normalized to lowercase for case-insensitive matching */
14
+ export const TARGET_TOOLS = new Set([
15
+ 'grep',
16
+ 'safe_grep',
17
+ 'glob',
18
+ 'safe_glob',
19
+ 'webfetch',
20
+ 'context7_resolve-library-id',
21
+ 'context7_query-docs',
22
+ 'websearch_web_search_exa',
23
+ 'context7_get-library-docs',
24
+ 'grep_app_searchgithub',
25
+ ]);
26
+ /** Agent tools that indicate agent usage */
27
+ export const AGENT_TOOLS = new Set([
28
+ 'task',
29
+ 'call_omo_agent',
30
+ 'olympus_task',
31
+ ]);
32
+ /** Reminder message shown to users */
33
+ export const REMINDER_MESSAGE = `
34
+ [Agent Usage Reminder]
35
+
36
+ You called a search/fetch tool directly without leveraging specialized agents.
37
+
38
+ RECOMMENDED: Use Task tool with explore/librarian agents for better results:
39
+
40
+ \`\`\`
41
+ // Parallel exploration - fire multiple agents simultaneously
42
+ Task(agent="explore", prompt="Find all files matching pattern X")
43
+ Task(agent="explore", prompt="Search for implementation of Y")
44
+ Task(agent="librarian", prompt="Lookup documentation for Z")
45
+
46
+ // Then continue your work while they run in background
47
+ // System will notify you when each completes
48
+ \`\`\`
49
+
50
+ WHY:
51
+ - Agents can perform deeper, more thorough searches
52
+ - Background tasks run in parallel, saving time
53
+ - Specialized agents have domain expertise
54
+ - Reduces context window usage in main session
55
+
56
+ ALWAYS prefer: Multiple parallel Task calls > Direct tool calls
57
+ `;
58
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../src/hooks/agent-usage-reminder/constants.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAE,OAAO,EAAE,MAAM,IAAI,CAAC;AAE7B,uDAAuD;AACvD,MAAM,CAAC,MAAM,mBAAmB,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,UAAU,CAAC,CAAC;AAC/D,MAAM,CAAC,MAAM,4BAA4B,GAAG,IAAI,CAC9C,mBAAmB,EACnB,sBAAsB,CACvB,CAAC;AAEF,2EAA2E;AAC3E,MAAM,CAAC,MAAM,YAAY,GAAG,IAAI,GAAG,CAAC;IAClC,MAAM;IACN,WAAW;IACX,MAAM;IACN,WAAW;IACX,UAAU;IACV,6BAA6B;IAC7B,qBAAqB;IACrB,0BAA0B;IAC1B,2BAA2B;IAC3B,uBAAuB;CACxB,CAAC,CAAC;AAEH,4CAA4C;AAC5C,MAAM,CAAC,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC;IACjC,MAAM;IACN,gBAAgB;IAChB,cAAc;CACf,CAAC,CAAC;AAEH,sCAAsC;AACtC,MAAM,CAAC,MAAM,gBAAgB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;CAwB/B,CAAC"}