@cleocode/mcp-server 0.86.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 (374) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +306 -0
  3. package/dist/domains/index.d.ts +16 -0
  4. package/dist/domains/index.d.ts.map +1 -0
  5. package/dist/domains/index.js +16 -0
  6. package/dist/domains/index.js.map +1 -0
  7. package/dist/domains/lifecycle.d.ts +147 -0
  8. package/dist/domains/lifecycle.d.ts.map +1 -0
  9. package/dist/domains/lifecycle.js +452 -0
  10. package/dist/domains/lifecycle.js.map +1 -0
  11. package/dist/domains/orchestrate.d.ts +133 -0
  12. package/dist/domains/orchestrate.d.ts.map +1 -0
  13. package/dist/domains/orchestrate.js +465 -0
  14. package/dist/domains/orchestrate.js.map +1 -0
  15. package/dist/domains/release.d.ts +109 -0
  16. package/dist/domains/release.d.ts.map +1 -0
  17. package/dist/domains/release.js +400 -0
  18. package/dist/domains/release.js.map +1 -0
  19. package/dist/domains/research.d.ts +139 -0
  20. package/dist/domains/research.d.ts.map +1 -0
  21. package/dist/domains/research.js +606 -0
  22. package/dist/domains/research.js.map +1 -0
  23. package/dist/domains/session.d.ts +129 -0
  24. package/dist/domains/session.d.ts.map +1 -0
  25. package/dist/domains/session.js +433 -0
  26. package/dist/domains/session.js.map +1 -0
  27. package/dist/domains/system.d.ts +92 -0
  28. package/dist/domains/system.d.ts.map +1 -0
  29. package/dist/domains/system.js +473 -0
  30. package/dist/domains/system.js.map +1 -0
  31. package/dist/domains/tasks.d.ts +180 -0
  32. package/dist/domains/tasks.d.ts.map +1 -0
  33. package/dist/domains/tasks.js +704 -0
  34. package/dist/domains/tasks.js.map +1 -0
  35. package/dist/domains/validate.d.ts +150 -0
  36. package/dist/domains/validate.d.ts.map +1 -0
  37. package/dist/domains/validate.js +568 -0
  38. package/dist/domains/validate.js.map +1 -0
  39. package/dist/gateways/mutate.d.ts +100 -0
  40. package/dist/gateways/mutate.d.ts.map +1 -0
  41. package/dist/gateways/mutate.js +937 -0
  42. package/dist/gateways/mutate.js.map +1 -0
  43. package/dist/gateways/query.d.ts +91 -0
  44. package/dist/gateways/query.d.ts.map +1 -0
  45. package/dist/gateways/query.js +245 -0
  46. package/dist/gateways/query.js.map +1 -0
  47. package/dist/index.d.ts +21 -0
  48. package/dist/index.d.ts.map +1 -0
  49. package/dist/index.js +299 -0
  50. package/dist/index.js.map +1 -0
  51. package/dist/lib/audit.d.ts +118 -0
  52. package/dist/lib/audit.d.ts.map +1 -0
  53. package/dist/lib/audit.js +311 -0
  54. package/dist/lib/audit.js.map +1 -0
  55. package/dist/lib/background-jobs.d.ts +86 -0
  56. package/dist/lib/background-jobs.d.ts.map +1 -0
  57. package/dist/lib/background-jobs.js +183 -0
  58. package/dist/lib/background-jobs.js.map +1 -0
  59. package/dist/lib/cache.d.ts +78 -0
  60. package/dist/lib/cache.d.ts.map +1 -0
  61. package/dist/lib/cache.js +204 -0
  62. package/dist/lib/cache.js.map +1 -0
  63. package/dist/lib/command-builder.d.ts +52 -0
  64. package/dist/lib/command-builder.d.ts.map +1 -0
  65. package/dist/lib/command-builder.js +280 -0
  66. package/dist/lib/command-builder.js.map +1 -0
  67. package/dist/lib/config.d.ts +42 -0
  68. package/dist/lib/config.d.ts.map +1 -0
  69. package/dist/lib/config.js +248 -0
  70. package/dist/lib/config.js.map +1 -0
  71. package/dist/lib/defaults.d.ts +115 -0
  72. package/dist/lib/defaults.d.ts.map +1 -0
  73. package/dist/lib/defaults.js +61 -0
  74. package/dist/lib/defaults.js.map +1 -0
  75. package/dist/lib/error-handler.d.ts +101 -0
  76. package/dist/lib/error-handler.d.ts.map +1 -0
  77. package/dist/lib/error-handler.js +277 -0
  78. package/dist/lib/error-handler.js.map +1 -0
  79. package/dist/lib/executor.d.ts +110 -0
  80. package/dist/lib/executor.d.ts.map +1 -0
  81. package/dist/lib/executor.js +362 -0
  82. package/dist/lib/executor.js.map +1 -0
  83. package/dist/lib/exit-codes.d.ts +190 -0
  84. package/dist/lib/exit-codes.d.ts.map +1 -0
  85. package/dist/lib/exit-codes.js +1027 -0
  86. package/dist/lib/exit-codes.js.map +1 -0
  87. package/dist/lib/formatter.d.ts +196 -0
  88. package/dist/lib/formatter.d.ts.map +1 -0
  89. package/dist/lib/formatter.js +260 -0
  90. package/dist/lib/formatter.js.map +1 -0
  91. package/dist/lib/gate-validators.d.ts +103 -0
  92. package/dist/lib/gate-validators.d.ts.map +1 -0
  93. package/dist/lib/gate-validators.js +689 -0
  94. package/dist/lib/gate-validators.js.map +1 -0
  95. package/dist/lib/manifest-parser.d.ts +61 -0
  96. package/dist/lib/manifest-parser.d.ts.map +1 -0
  97. package/dist/lib/manifest-parser.js +338 -0
  98. package/dist/lib/manifest-parser.js.map +1 -0
  99. package/dist/lib/manifest.d.ts +177 -0
  100. package/dist/lib/manifest.d.ts.map +1 -0
  101. package/dist/lib/manifest.js +301 -0
  102. package/dist/lib/manifest.js.map +1 -0
  103. package/dist/lib/protocol-enforcement.d.ts +105 -0
  104. package/dist/lib/protocol-enforcement.d.ts.map +1 -0
  105. package/dist/lib/protocol-enforcement.js +331 -0
  106. package/dist/lib/protocol-enforcement.js.map +1 -0
  107. package/dist/lib/protocol-rules.d.ts +55 -0
  108. package/dist/lib/protocol-rules.d.ts.map +1 -0
  109. package/dist/lib/protocol-rules.js +760 -0
  110. package/dist/lib/protocol-rules.js.map +1 -0
  111. package/dist/lib/rate-limiter.d.ts +110 -0
  112. package/dist/lib/rate-limiter.d.ts.map +1 -0
  113. package/dist/lib/rate-limiter.js +208 -0
  114. package/dist/lib/rate-limiter.js.map +1 -0
  115. package/dist/lib/router.d.ts +126 -0
  116. package/dist/lib/router.d.ts.map +1 -0
  117. package/dist/lib/router.js +276 -0
  118. package/dist/lib/router.js.map +1 -0
  119. package/dist/lib/schema.d.ts +55 -0
  120. package/dist/lib/schema.d.ts.map +1 -0
  121. package/dist/lib/schema.js +70 -0
  122. package/dist/lib/schema.js.map +1 -0
  123. package/dist/lib/security.d.ts +156 -0
  124. package/dist/lib/security.d.ts.map +1 -0
  125. package/dist/lib/security.js +347 -0
  126. package/dist/lib/security.js.map +1 -0
  127. package/dist/lib/verification-gates.d.ts +287 -0
  128. package/dist/lib/verification-gates.d.ts.map +1 -0
  129. package/dist/lib/verification-gates.js +548 -0
  130. package/dist/lib/verification-gates.js.map +1 -0
  131. package/dist/types/domain.d.ts +29 -0
  132. package/dist/types/domain.d.ts.map +1 -0
  133. package/dist/types/domain.js +7 -0
  134. package/dist/types/domain.js.map +1 -0
  135. package/dist/types/error.d.ts +101 -0
  136. package/dist/types/error.d.ts.map +1 -0
  137. package/dist/types/error.js +61 -0
  138. package/dist/types/error.js.map +1 -0
  139. package/dist/types/gateway.d.ts +78 -0
  140. package/dist/types/gateway.d.ts.map +1 -0
  141. package/dist/types/gateway.js +7 -0
  142. package/dist/types/gateway.js.map +1 -0
  143. package/dist/types/index.d.ts +21 -0
  144. package/dist/types/index.d.ts.map +1 -0
  145. package/dist/types/index.js +11 -0
  146. package/dist/types/index.js.map +1 -0
  147. package/dist/types/operations/lifecycle.d.ts +140 -0
  148. package/dist/types/operations/lifecycle.d.ts.map +1 -0
  149. package/dist/types/operations/lifecycle.js +8 -0
  150. package/dist/types/operations/lifecycle.js.map +1 -0
  151. package/dist/types/operations/orchestrate.d.ts +140 -0
  152. package/dist/types/operations/orchestrate.d.ts.map +1 -0
  153. package/dist/types/operations/orchestrate.js +8 -0
  154. package/dist/types/operations/orchestrate.js.map +1 -0
  155. package/dist/types/operations/release.d.ts +97 -0
  156. package/dist/types/operations/release.d.ts.map +1 -0
  157. package/dist/types/operations/release.js +7 -0
  158. package/dist/types/operations/release.js.map +1 -0
  159. package/dist/types/operations/research.d.ts +122 -0
  160. package/dist/types/operations/research.d.ts.map +1 -0
  161. package/dist/types/operations/research.js +8 -0
  162. package/dist/types/operations/research.js.map +1 -0
  163. package/dist/types/operations/session.d.ts +108 -0
  164. package/dist/types/operations/session.d.ts.map +1 -0
  165. package/dist/types/operations/session.js +8 -0
  166. package/dist/types/operations/session.js.map +1 -0
  167. package/dist/types/operations/system.d.ts +147 -0
  168. package/dist/types/operations/system.d.ts.map +1 -0
  169. package/dist/types/operations/system.js +8 -0
  170. package/dist/types/operations/system.js.map +1 -0
  171. package/dist/types/operations/tasks.d.ts +186 -0
  172. package/dist/types/operations/tasks.d.ts.map +1 -0
  173. package/dist/types/operations/tasks.js +8 -0
  174. package/dist/types/operations/tasks.js.map +1 -0
  175. package/dist/types/operations/validate.d.ts +170 -0
  176. package/dist/types/operations/validate.d.ts.map +1 -0
  177. package/dist/types/operations/validate.js +8 -0
  178. package/dist/types/operations/validate.js.map +1 -0
  179. package/package.json +67 -0
  180. package/schemas/IMPLEMENTATION-SUMMARY.md +250 -0
  181. package/schemas/README.md +284 -0
  182. package/schemas/common/error.schema.json +54 -0
  183. package/schemas/common/meta.schema.json +39 -0
  184. package/schemas/common/pagination.schema.json +32 -0
  185. package/schemas/index.json +159 -0
  186. package/schemas/requests/lifecycle/check.schema.json +20 -0
  187. package/schemas/requests/lifecycle/gate.fail.schema.json +25 -0
  188. package/schemas/requests/lifecycle/gate.pass.schema.json +28 -0
  189. package/schemas/requests/lifecycle/gates.schema.json +15 -0
  190. package/schemas/requests/lifecycle/history.schema.json +15 -0
  191. package/schemas/requests/lifecycle/prerequisites.schema.json +15 -0
  192. package/schemas/requests/lifecycle/progress.schema.json +29 -0
  193. package/schemas/requests/lifecycle/reset.schema.json +25 -0
  194. package/schemas/requests/lifecycle/skip.schema.json +25 -0
  195. package/schemas/requests/lifecycle/status.schema.json +23 -0
  196. package/schemas/requests/orchestrate/analyze.schema.json +15 -0
  197. package/schemas/requests/orchestrate/context.schema.json +13 -0
  198. package/schemas/requests/orchestrate/next.schema.json +15 -0
  199. package/schemas/requests/orchestrate/parallel.end.schema.json +20 -0
  200. package/schemas/requests/orchestrate/parallel.start.schema.json +20 -0
  201. package/schemas/requests/orchestrate/ready.schema.json +15 -0
  202. package/schemas/requests/orchestrate/skill.list.schema.json +13 -0
  203. package/schemas/requests/orchestrate/spawn.schema.json +25 -0
  204. package/schemas/requests/orchestrate/startup.schema.json +15 -0
  205. package/schemas/requests/orchestrate/status.schema.json +15 -0
  206. package/schemas/requests/orchestrate/validate.schema.json +15 -0
  207. package/schemas/requests/orchestrate/waves.schema.json +15 -0
  208. package/schemas/requests/release/changelog.schema.json +23 -0
  209. package/schemas/requests/release/commit.schema.json +22 -0
  210. package/schemas/requests/release/gates.run.schema.json +17 -0
  211. package/schemas/requests/release/prepare.schema.json +20 -0
  212. package/schemas/requests/release/push.schema.json +20 -0
  213. package/schemas/requests/release/rollback.schema.json +20 -0
  214. package/schemas/requests/release/tag.schema.json +19 -0
  215. package/schemas/requests/research/inject.schema.json +24 -0
  216. package/schemas/requests/research/link.schema.json +25 -0
  217. package/schemas/requests/research/list.schema.json +19 -0
  218. package/schemas/requests/research/manifest.append.schema.json +20 -0
  219. package/schemas/requests/research/manifest.archive.schema.json +19 -0
  220. package/schemas/requests/research/manifest.read.schema.json +21 -0
  221. package/schemas/requests/research/pending.schema.json +14 -0
  222. package/schemas/requests/research/query.schema.json +21 -0
  223. package/schemas/requests/research/show.schema.json +14 -0
  224. package/schemas/requests/research/stats.schema.json +14 -0
  225. package/schemas/requests/session/end.schema.json +13 -0
  226. package/schemas/requests/session/focus.clear.schema.json +7 -0
  227. package/schemas/requests/session/focus.get.schema.json +7 -0
  228. package/schemas/requests/session/focus.set.schema.json +15 -0
  229. package/schemas/requests/session/gc.schema.json +14 -0
  230. package/schemas/requests/session/history.schema.json +16 -0
  231. package/schemas/requests/session/list.schema.json +13 -0
  232. package/schemas/requests/session/resume.schema.json +14 -0
  233. package/schemas/requests/session/show.schema.json +14 -0
  234. package/schemas/requests/session/start.schema.json +23 -0
  235. package/schemas/requests/session/status.schema.json +7 -0
  236. package/schemas/requests/session/suspend.schema.json +13 -0
  237. package/schemas/requests/system/backup.schema.json +19 -0
  238. package/schemas/requests/system/cleanup.schema.json +20 -0
  239. package/schemas/requests/system/config.get.schema.json +14 -0
  240. package/schemas/requests/system/config.set.schema.json +24 -0
  241. package/schemas/requests/system/context.schema.json +7 -0
  242. package/schemas/requests/system/doctor.schema.json +7 -0
  243. package/schemas/requests/system/init.schema.json +18 -0
  244. package/schemas/requests/system/migrate.schema.json +19 -0
  245. package/schemas/requests/system/restore.schema.json +14 -0
  246. package/schemas/requests/system/stats.schema.json +7 -0
  247. package/schemas/requests/system/sync.schema.json +15 -0
  248. package/schemas/requests/system/version.schema.json +7 -0
  249. package/schemas/requests/tasks/analyze.schema.json +14 -0
  250. package/schemas/requests/tasks/archive.schema.json +19 -0
  251. package/schemas/requests/tasks/blockers.schema.json +15 -0
  252. package/schemas/requests/tasks/complete.schema.json +24 -0
  253. package/schemas/requests/tasks/create.schema.json +48 -0
  254. package/schemas/requests/tasks/delete.schema.json +20 -0
  255. package/schemas/requests/tasks/deps.schema.json +21 -0
  256. package/schemas/requests/tasks/exists.schema.json +15 -0
  257. package/schemas/requests/tasks/find.schema.json +22 -0
  258. package/schemas/requests/tasks/get.schema.json +15 -0
  259. package/schemas/requests/tasks/list.schema.json +26 -0
  260. package/schemas/requests/tasks/next.schema.json +21 -0
  261. package/schemas/requests/tasks/promote.schema.json +15 -0
  262. package/schemas/requests/tasks/reopen.schema.json +15 -0
  263. package/schemas/requests/tasks/reorder.schema.json +20 -0
  264. package/schemas/requests/tasks/reparent.schema.json +20 -0
  265. package/schemas/requests/tasks/tree.schema.json +21 -0
  266. package/schemas/requests/tasks/unarchive.schema.json +15 -0
  267. package/schemas/requests/tasks/update.schema.json +41 -0
  268. package/schemas/requests/validate/compliance.record.schema.json +20 -0
  269. package/schemas/requests/validate/compliance.summary.schema.json +18 -0
  270. package/schemas/requests/validate/compliance.violations.schema.json +19 -0
  271. package/schemas/requests/validate/manifest.schema.json +23 -0
  272. package/schemas/requests/validate/output.schema.json +19 -0
  273. package/schemas/requests/validate/protocol.schema.json +20 -0
  274. package/schemas/requests/validate/schema.schema.json +19 -0
  275. package/schemas/requests/validate/task.schema.json +21 -0
  276. package/schemas/requests/validate/test.coverage.schema.json +14 -0
  277. package/schemas/requests/validate/test.run.schema.json +22 -0
  278. package/schemas/requests/validate/test.status.schema.json +14 -0
  279. package/schemas/responses/common-error.schema.json +20 -0
  280. package/schemas/responses/common-success.schema.json +21 -0
  281. package/schemas/responses/lifecycle/check.schema.json +18 -0
  282. package/schemas/responses/lifecycle/gate.fail.schema.json +18 -0
  283. package/schemas/responses/lifecycle/gate.pass.schema.json +18 -0
  284. package/schemas/responses/lifecycle/gates.schema.json +18 -0
  285. package/schemas/responses/lifecycle/history.schema.json +18 -0
  286. package/schemas/responses/lifecycle/prerequisites.schema.json +18 -0
  287. package/schemas/responses/lifecycle/progress.schema.json +18 -0
  288. package/schemas/responses/lifecycle/reset.schema.json +18 -0
  289. package/schemas/responses/lifecycle/skip.schema.json +18 -0
  290. package/schemas/responses/lifecycle/status.schema.json +18 -0
  291. package/schemas/responses/orchestrate/analyze.schema.json +18 -0
  292. package/schemas/responses/orchestrate/context.schema.json +18 -0
  293. package/schemas/responses/orchestrate/next.schema.json +18 -0
  294. package/schemas/responses/orchestrate/parallel.end.schema.json +18 -0
  295. package/schemas/responses/orchestrate/parallel.start.schema.json +18 -0
  296. package/schemas/responses/orchestrate/ready.schema.json +18 -0
  297. package/schemas/responses/orchestrate/skill.list.schema.json +18 -0
  298. package/schemas/responses/orchestrate/spawn.schema.json +18 -0
  299. package/schemas/responses/orchestrate/startup.schema.json +18 -0
  300. package/schemas/responses/orchestrate/status.schema.json +18 -0
  301. package/schemas/responses/orchestrate/validate.schema.json +18 -0
  302. package/schemas/responses/orchestrate/waves.schema.json +18 -0
  303. package/schemas/responses/release/changelog.schema.json +18 -0
  304. package/schemas/responses/release/commit.schema.json +18 -0
  305. package/schemas/responses/release/gates.run.schema.json +18 -0
  306. package/schemas/responses/release/prepare.schema.json +18 -0
  307. package/schemas/responses/release/push.schema.json +18 -0
  308. package/schemas/responses/release/rollback.schema.json +18 -0
  309. package/schemas/responses/release/tag.schema.json +18 -0
  310. package/schemas/responses/research/inject.schema.json +18 -0
  311. package/schemas/responses/research/link.schema.json +18 -0
  312. package/schemas/responses/research/list.schema.json +18 -0
  313. package/schemas/responses/research/manifest.append.schema.json +18 -0
  314. package/schemas/responses/research/manifest.archive.schema.json +18 -0
  315. package/schemas/responses/research/manifest.read.schema.json +18 -0
  316. package/schemas/responses/research/pending.schema.json +18 -0
  317. package/schemas/responses/research/query.schema.json +18 -0
  318. package/schemas/responses/research/show.schema.json +18 -0
  319. package/schemas/responses/research/stats.schema.json +18 -0
  320. package/schemas/responses/session/end.schema.json +18 -0
  321. package/schemas/responses/session/focus.clear.schema.json +18 -0
  322. package/schemas/responses/session/focus.get.schema.json +18 -0
  323. package/schemas/responses/session/focus.set.schema.json +18 -0
  324. package/schemas/responses/session/gc.schema.json +18 -0
  325. package/schemas/responses/session/history.schema.json +18 -0
  326. package/schemas/responses/session/list.schema.json +18 -0
  327. package/schemas/responses/session/resume.schema.json +18 -0
  328. package/schemas/responses/session/show.schema.json +18 -0
  329. package/schemas/responses/session/start.schema.json +18 -0
  330. package/schemas/responses/session/status.schema.json +18 -0
  331. package/schemas/responses/session/suspend.schema.json +18 -0
  332. package/schemas/responses/system/backup.schema.json +18 -0
  333. package/schemas/responses/system/cleanup.schema.json +18 -0
  334. package/schemas/responses/system/config.get.schema.json +18 -0
  335. package/schemas/responses/system/config.set.schema.json +18 -0
  336. package/schemas/responses/system/context.schema.json +18 -0
  337. package/schemas/responses/system/doctor.schema.json +18 -0
  338. package/schemas/responses/system/init.schema.json +18 -0
  339. package/schemas/responses/system/migrate.schema.json +18 -0
  340. package/schemas/responses/system/restore.schema.json +18 -0
  341. package/schemas/responses/system/stats.schema.json +18 -0
  342. package/schemas/responses/system/sync.schema.json +18 -0
  343. package/schemas/responses/system/version.schema.json +18 -0
  344. package/schemas/responses/tasks/analyze.schema.json +18 -0
  345. package/schemas/responses/tasks/archive.schema.json +18 -0
  346. package/schemas/responses/tasks/blockers.schema.json +18 -0
  347. package/schemas/responses/tasks/complete.schema.json +18 -0
  348. package/schemas/responses/tasks/create.schema.json +18 -0
  349. package/schemas/responses/tasks/delete.schema.json +18 -0
  350. package/schemas/responses/tasks/deps.schema.json +18 -0
  351. package/schemas/responses/tasks/exists.schema.json +18 -0
  352. package/schemas/responses/tasks/find.schema.json +18 -0
  353. package/schemas/responses/tasks/get.schema.json +87 -0
  354. package/schemas/responses/tasks/list.schema.json +18 -0
  355. package/schemas/responses/tasks/next.schema.json +18 -0
  356. package/schemas/responses/tasks/promote.schema.json +18 -0
  357. package/schemas/responses/tasks/reopen.schema.json +18 -0
  358. package/schemas/responses/tasks/reorder.schema.json +18 -0
  359. package/schemas/responses/tasks/reparent.schema.json +18 -0
  360. package/schemas/responses/tasks/tree.schema.json +18 -0
  361. package/schemas/responses/tasks/unarchive.schema.json +18 -0
  362. package/schemas/responses/tasks/update.schema.json +18 -0
  363. package/schemas/responses/validate/compliance.record.schema.json +18 -0
  364. package/schemas/responses/validate/compliance.summary.schema.json +18 -0
  365. package/schemas/responses/validate/compliance.violations.schema.json +18 -0
  366. package/schemas/responses/validate/manifest.schema.json +18 -0
  367. package/schemas/responses/validate/output.schema.json +18 -0
  368. package/schemas/responses/validate/protocol.schema.json +18 -0
  369. package/schemas/responses/validate/schema.schema.json +18 -0
  370. package/schemas/responses/validate/task.schema.json +18 -0
  371. package/schemas/responses/validate/test.coverage.schema.json +18 -0
  372. package/schemas/responses/validate/test.run.schema.json +18 -0
  373. package/schemas/responses/validate/test.status.schema.json +18 -0
  374. package/server.json +53 -0
@@ -0,0 +1,248 @@
1
+ /**
2
+ * Configuration loader for CLEO MCP Server
3
+ *
4
+ * Loads configuration from:
5
+ * 1. Environment variables (CLEO_MCP_*)
6
+ * 2. Config file (.cleo/config.json)
7
+ * 3. Defaults (fallback values)
8
+ *
9
+ * @task T2928
10
+ */
11
+ import { readFileSync, existsSync } from 'fs';
12
+ import { join } from 'path';
13
+ import { DEFAULT_CONFIG, DEFAULT_LIFECYCLE_ENFORCEMENT, DEFAULT_PROTOCOL_VALIDATION, DEFAULT_RATE_LIMITING, ENV_PREFIX, CONFIG_SCHEMA, } from './defaults.js';
14
+ /**
15
+ * Configuration validation error
16
+ */
17
+ export class ConfigValidationError extends Error {
18
+ field;
19
+ value;
20
+ constraint;
21
+ constructor(field, value, constraint) {
22
+ super(`Invalid config field '${field}': ${constraint} (got ${value})`);
23
+ this.field = field;
24
+ this.value = value;
25
+ this.constraint = constraint;
26
+ this.name = 'ConfigValidationError';
27
+ }
28
+ }
29
+ /**
30
+ * Load configuration value from environment variable
31
+ */
32
+ function loadFromEnv(key) {
33
+ const envKey = `${ENV_PREFIX}${key.toUpperCase()}`;
34
+ return process.env[envKey];
35
+ }
36
+ /**
37
+ * Parse environment variable to appropriate type
38
+ */
39
+ function parseEnvValue(key, value) {
40
+ const schema = CONFIG_SCHEMA[key];
41
+ if (schema.type === 'boolean') {
42
+ return value.toLowerCase() === 'true' || value === '1';
43
+ }
44
+ if (schema.type === 'number') {
45
+ const num = parseInt(value, 10);
46
+ if (isNaN(num)) {
47
+ throw new ConfigValidationError(key, value, 'must be a number');
48
+ }
49
+ return num;
50
+ }
51
+ return value;
52
+ }
53
+ /**
54
+ * Load configuration from .cleo/config.json file
55
+ */
56
+ function loadFromFile(projectRoot) {
57
+ const root = projectRoot || process.cwd();
58
+ const configPath = join(root, '.cleo', 'config.json');
59
+ if (!existsSync(configPath)) {
60
+ return {};
61
+ }
62
+ try {
63
+ const content = readFileSync(configPath, 'utf-8');
64
+ const config = JSON.parse(content);
65
+ // Extract MCP-specific config if nested
66
+ const result = {};
67
+ if (config.mcp) {
68
+ if (config.mcp.cliPath !== undefined)
69
+ result.cliPath = config.mcp.cliPath;
70
+ if (config.mcp.timeout !== undefined)
71
+ result.timeout = config.mcp.timeout;
72
+ if (config.mcp.logLevel !== undefined)
73
+ result.logLevel = config.mcp.logLevel;
74
+ if (config.mcp.enableMetrics !== undefined)
75
+ result.enableMetrics = config.mcp.enableMetrics;
76
+ if (config.mcp.maxRetries !== undefined)
77
+ result.maxRetries = config.mcp.maxRetries;
78
+ if (config.mcp.features?.queryCache !== undefined)
79
+ result.queryCache = config.mcp.features.queryCache;
80
+ if (config.mcp.features?.queryCacheTtl !== undefined)
81
+ result.queryCacheTtl = config.mcp.features.queryCacheTtl;
82
+ if (config.mcp.features?.auditLog !== undefined)
83
+ result.auditLog = config.mcp.features.auditLog;
84
+ if (config.mcp.features?.strictValidation !== undefined)
85
+ result.strictValidation = config.mcp.features.strictValidation;
86
+ }
87
+ // Extract lifecycle enforcement config (Section 12.2)
88
+ if (config.lifecycleEnforcement) {
89
+ result.lifecycleEnforcement = {
90
+ ...DEFAULT_LIFECYCLE_ENFORCEMENT,
91
+ ...config.lifecycleEnforcement,
92
+ };
93
+ }
94
+ // Extract protocol validation config (Section 12.3)
95
+ if (config.protocolValidation) {
96
+ result.protocolValidation = {
97
+ ...DEFAULT_PROTOCOL_VALIDATION,
98
+ ...config.protocolValidation,
99
+ };
100
+ }
101
+ // Extract rate limiting config (Section 13.3)
102
+ if (config.rateLimiting || config.mcp?.rateLimiting) {
103
+ const rlConfig = config.rateLimiting || config.mcp?.rateLimiting;
104
+ result.rateLimiting = {
105
+ ...DEFAULT_RATE_LIMITING,
106
+ ...rlConfig,
107
+ query: { ...DEFAULT_RATE_LIMITING.query, ...rlConfig?.query },
108
+ mutate: { ...DEFAULT_RATE_LIMITING.mutate, ...rlConfig?.mutate },
109
+ spawn: { ...DEFAULT_RATE_LIMITING.spawn, ...rlConfig?.spawn },
110
+ };
111
+ }
112
+ // If no mcp block, check for flat config keys
113
+ if (!config.mcp) {
114
+ return config;
115
+ }
116
+ return result;
117
+ }
118
+ catch (error) {
119
+ // Log error but don't fail - fall back to defaults
120
+ console.error(`Warning: Failed to load config file: ${error}`);
121
+ return {};
122
+ }
123
+ }
124
+ /**
125
+ * Validate configuration field
126
+ */
127
+ function validateField(key, value) {
128
+ const schema = CONFIG_SCHEMA[key];
129
+ if (!schema) {
130
+ return; // Unknown fields are ignored
131
+ }
132
+ // Type check
133
+ const actualType = typeof value;
134
+ if (actualType !== schema.type) {
135
+ throw new ConfigValidationError(key, value, `must be of type ${schema.type}`);
136
+ }
137
+ // Enum check
138
+ if ('enum' in schema && schema.enum && !schema.enum.includes(value)) {
139
+ throw new ConfigValidationError(key, value, `must be one of: ${schema.enum.join(', ')}`);
140
+ }
141
+ // Range check for numbers
142
+ if (schema.type === 'number') {
143
+ const numValue = value;
144
+ if ('min' in schema && numValue < schema.min) {
145
+ throw new ConfigValidationError(key, value, `must be >= ${schema.min}`);
146
+ }
147
+ if ('max' in schema && numValue > schema.max) {
148
+ throw new ConfigValidationError(key, value, `must be <= ${schema.max}`);
149
+ }
150
+ }
151
+ }
152
+ /**
153
+ * Validate complete configuration
154
+ */
155
+ export function validateConfig(config) {
156
+ for (const [key, value] of Object.entries(config)) {
157
+ validateField(key, value);
158
+ }
159
+ // Required field check
160
+ for (const [key, schema] of Object.entries(CONFIG_SCHEMA)) {
161
+ if ('required' in schema && schema.required) {
162
+ if (config[key] === undefined) {
163
+ throw new ConfigValidationError(key, undefined, 'is required');
164
+ }
165
+ }
166
+ }
167
+ }
168
+ /**
169
+ * Load configuration from all sources
170
+ *
171
+ * Priority order:
172
+ * 1. Environment variables (CLEO_MCP_*)
173
+ * 2. Config file (.cleo/config.json)
174
+ * 3. Defaults
175
+ */
176
+ export function loadConfig(projectRoot) {
177
+ // Start with defaults (deep copy nested objects)
178
+ const config = {
179
+ ...DEFAULT_CONFIG,
180
+ lifecycleEnforcement: { ...DEFAULT_LIFECYCLE_ENFORCEMENT },
181
+ protocolValidation: { ...DEFAULT_PROTOCOL_VALIDATION },
182
+ rateLimiting: {
183
+ ...DEFAULT_RATE_LIMITING,
184
+ query: { ...DEFAULT_RATE_LIMITING.query },
185
+ mutate: { ...DEFAULT_RATE_LIMITING.mutate },
186
+ spawn: { ...DEFAULT_RATE_LIMITING.spawn },
187
+ },
188
+ };
189
+ // Load from file (overrides defaults)
190
+ const fileConfig = loadFromFile(projectRoot);
191
+ // Merge nested objects carefully
192
+ if (fileConfig.lifecycleEnforcement) {
193
+ config.lifecycleEnforcement = {
194
+ ...config.lifecycleEnforcement,
195
+ ...fileConfig.lifecycleEnforcement,
196
+ };
197
+ delete fileConfig.lifecycleEnforcement;
198
+ }
199
+ if (fileConfig.protocolValidation) {
200
+ config.protocolValidation = {
201
+ ...config.protocolValidation,
202
+ ...fileConfig.protocolValidation,
203
+ };
204
+ delete fileConfig.protocolValidation;
205
+ }
206
+ if (fileConfig.rateLimiting) {
207
+ config.rateLimiting = {
208
+ ...config.rateLimiting,
209
+ ...fileConfig.rateLimiting,
210
+ query: { ...config.rateLimiting.query, ...fileConfig.rateLimiting.query },
211
+ mutate: { ...config.rateLimiting.mutate, ...fileConfig.rateLimiting.mutate },
212
+ spawn: { ...config.rateLimiting.spawn, ...fileConfig.rateLimiting.spawn },
213
+ };
214
+ delete fileConfig.rateLimiting;
215
+ }
216
+ Object.assign(config, fileConfig);
217
+ // Load from environment (overrides file and defaults)
218
+ for (const key of Object.keys(DEFAULT_CONFIG)) {
219
+ const envValue = loadFromEnv(key);
220
+ if (envValue !== undefined) {
221
+ config[key] = parseEnvValue(key, envValue);
222
+ }
223
+ }
224
+ // Validate final configuration
225
+ validateConfig(config);
226
+ return config;
227
+ }
228
+ /**
229
+ * Global configuration singleton
230
+ * Loaded once at module initialization
231
+ */
232
+ let globalConfig = null;
233
+ /**
234
+ * Get global configuration (singleton)
235
+ */
236
+ export function getConfig() {
237
+ if (globalConfig === null) {
238
+ globalConfig = loadConfig();
239
+ }
240
+ return globalConfig;
241
+ }
242
+ /**
243
+ * Reset global configuration (for testing)
244
+ */
245
+ export function resetConfig() {
246
+ globalConfig = null;
247
+ }
248
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/lib/config.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,115 @@
1
+ /**
2
+ * Default configuration values for CLEO MCP Server
3
+ *
4
+ * @task T2928
5
+ * @task T3145
6
+ * @task T2916 - Rate limiting configuration (Section 13.3)
7
+ */
8
+ import type { RateLimitingConfig } from './rate-limiter.js';
9
+ export type { RateLimitingConfig } from './rate-limiter.js';
10
+ export { DEFAULT_RATE_LIMITING } from './rate-limiter.js';
11
+ /**
12
+ * Lifecycle enforcement configuration (Section 12.2)
13
+ */
14
+ export interface LifecycleEnforcementConfig {
15
+ /** Enforcement mode: strict blocks, advisory warns, off skips */
16
+ mode: 'strict' | 'advisory' | 'off';
17
+ /** Stages that may be skipped without failing gates */
18
+ allowSkip: string[];
19
+ /** Emergency bypass flag - disables all gate checks */
20
+ emergencyBypass: boolean;
21
+ }
22
+ /**
23
+ * Protocol validation configuration (Section 12.3)
24
+ */
25
+ export interface ProtocolValidationConfig {
26
+ /** Enable strict protocol validation */
27
+ strictMode: boolean;
28
+ /** Block operations on protocol violations */
29
+ blockOnViolation: boolean;
30
+ /** Log protocol violations to audit trail */
31
+ logViolations: boolean;
32
+ }
33
+ export interface MCPConfig {
34
+ /** Path to CLEO CLI binary (default: 'cleo') */
35
+ cliPath: string;
36
+ /** Operation timeout in milliseconds (default: 30000) */
37
+ timeout: number;
38
+ /** Logging verbosity level (default: 'info') */
39
+ logLevel: 'debug' | 'info' | 'warn' | 'error';
40
+ /** Enable token tracking metrics (default: false) */
41
+ enableMetrics: boolean;
42
+ /** Retry count for failed operations (default: 3) */
43
+ maxRetries: number;
44
+ /** Enable query cache (default: true) */
45
+ queryCache: boolean;
46
+ /** Query cache TTL in milliseconds (default: 30000) */
47
+ queryCacheTtl: number;
48
+ /** Enable audit logging (default: true) */
49
+ auditLog: boolean;
50
+ /** Strict validation mode (default: true) */
51
+ strictValidation: boolean;
52
+ /** Lifecycle enforcement configuration (Section 12.2) */
53
+ lifecycleEnforcement: LifecycleEnforcementConfig;
54
+ /** Protocol validation configuration (Section 12.3) */
55
+ protocolValidation: ProtocolValidationConfig;
56
+ /** Rate limiting configuration (Section 13.3) */
57
+ rateLimiting: RateLimitingConfig;
58
+ }
59
+ /**
60
+ * Default lifecycle enforcement configuration
61
+ */
62
+ export declare const DEFAULT_LIFECYCLE_ENFORCEMENT: LifecycleEnforcementConfig;
63
+ /**
64
+ * Default protocol validation configuration
65
+ */
66
+ export declare const DEFAULT_PROTOCOL_VALIDATION: ProtocolValidationConfig;
67
+ /**
68
+ * Default configuration values
69
+ */
70
+ export declare const DEFAULT_CONFIG: MCPConfig;
71
+ /**
72
+ * Environment variable prefix for CLEO configuration
73
+ */
74
+ export declare const ENV_PREFIX = "CLEO_MCP_";
75
+ /**
76
+ * Configuration schema for validation
77
+ */
78
+ export declare const CONFIG_SCHEMA: {
79
+ readonly cliPath: {
80
+ readonly type: "string";
81
+ readonly required: true;
82
+ };
83
+ readonly timeout: {
84
+ readonly type: "number";
85
+ readonly min: 1000;
86
+ readonly max: 300000;
87
+ };
88
+ readonly logLevel: {
89
+ readonly type: "string";
90
+ readonly enum: readonly ["debug", "info", "warn", "error"];
91
+ };
92
+ readonly enableMetrics: {
93
+ readonly type: "boolean";
94
+ };
95
+ readonly maxRetries: {
96
+ readonly type: "number";
97
+ readonly min: 0;
98
+ readonly max: 10;
99
+ };
100
+ readonly queryCache: {
101
+ readonly type: "boolean";
102
+ };
103
+ readonly queryCacheTtl: {
104
+ readonly type: "number";
105
+ readonly min: 0;
106
+ readonly max: 600000;
107
+ };
108
+ readonly auditLog: {
109
+ readonly type: "boolean";
110
+ };
111
+ readonly strictValidation: {
112
+ readonly type: "boolean";
113
+ };
114
+ };
115
+ //# sourceMappingURL=defaults.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"defaults.d.ts","sourceRoot":"","sources":["../../src/lib/defaults.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAC5D,YAAY,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAE5D,OAAO,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAE1D;;GAEG;AACH,MAAM,WAAW,0BAA0B;IACzC,iEAAiE;IACjE,IAAI,EAAE,QAAQ,GAAG,UAAU,GAAG,KAAK,CAAC;IACpC,uDAAuD;IACvD,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,uDAAuD;IACvD,eAAe,EAAE,OAAO,CAAC;CAC1B;AAED;;GAEG;AACH,MAAM,WAAW,wBAAwB;IACvC,wCAAwC;IACxC,UAAU,EAAE,OAAO,CAAC;IACpB,8CAA8C;IAC9C,gBAAgB,EAAE,OAAO,CAAC;IAC1B,6CAA6C;IAC7C,aAAa,EAAE,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,SAAS;IACxB,gDAAgD;IAChD,OAAO,EAAE,MAAM,CAAC;IAEhB,yDAAyD;IACzD,OAAO,EAAE,MAAM,CAAC;IAEhB,gDAAgD;IAChD,QAAQ,EAAE,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;IAE9C,qDAAqD;IACrD,aAAa,EAAE,OAAO,CAAC;IAEvB,qDAAqD;IACrD,UAAU,EAAE,MAAM,CAAC;IAEnB,yCAAyC;IACzC,UAAU,EAAE,OAAO,CAAC;IAEpB,uDAAuD;IACvD,aAAa,EAAE,MAAM,CAAC;IAEtB,2CAA2C;IAC3C,QAAQ,EAAE,OAAO,CAAC;IAElB,6CAA6C;IAC7C,gBAAgB,EAAE,OAAO,CAAC;IAE1B,yDAAyD;IACzD,oBAAoB,EAAE,0BAA0B,CAAC;IAEjD,uDAAuD;IACvD,kBAAkB,EAAE,wBAAwB,CAAC;IAE7C,iDAAiD;IACjD,YAAY,EAAE,kBAAkB,CAAC;CAClC;AAED;;GAEG;AACH,eAAO,MAAM,6BAA6B,EAAE,0BAI3C,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,2BAA2B,EAAE,wBAIzC,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,cAAc,EAAE,SAa5B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,UAAU,cAAc,CAAC;AAEtC;;GAEG;AACH,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAUhB,CAAC"}
@@ -0,0 +1,61 @@
1
+ /**
2
+ * Default configuration values for CLEO MCP Server
3
+ *
4
+ * @task T2928
5
+ * @task T3145
6
+ * @task T2916 - Rate limiting configuration (Section 13.3)
7
+ */
8
+ import { DEFAULT_RATE_LIMITING } from './rate-limiter.js';
9
+ export { DEFAULT_RATE_LIMITING } from './rate-limiter.js';
10
+ /**
11
+ * Default lifecycle enforcement configuration
12
+ */
13
+ export const DEFAULT_LIFECYCLE_ENFORCEMENT = {
14
+ mode: 'strict',
15
+ allowSkip: ['consensus'],
16
+ emergencyBypass: false,
17
+ };
18
+ /**
19
+ * Default protocol validation configuration
20
+ */
21
+ export const DEFAULT_PROTOCOL_VALIDATION = {
22
+ strictMode: true,
23
+ blockOnViolation: true,
24
+ logViolations: true,
25
+ };
26
+ /**
27
+ * Default configuration values
28
+ */
29
+ export const DEFAULT_CONFIG = {
30
+ cliPath: 'cleo',
31
+ timeout: 30000, // 30 seconds
32
+ logLevel: 'info',
33
+ enableMetrics: false,
34
+ maxRetries: 3,
35
+ queryCache: true,
36
+ queryCacheTtl: 30000, // 30 seconds
37
+ auditLog: true,
38
+ strictValidation: true,
39
+ lifecycleEnforcement: { ...DEFAULT_LIFECYCLE_ENFORCEMENT },
40
+ protocolValidation: { ...DEFAULT_PROTOCOL_VALIDATION },
41
+ rateLimiting: { ...DEFAULT_RATE_LIMITING },
42
+ };
43
+ /**
44
+ * Environment variable prefix for CLEO configuration
45
+ */
46
+ export const ENV_PREFIX = 'CLEO_MCP_';
47
+ /**
48
+ * Configuration schema for validation
49
+ */
50
+ export const CONFIG_SCHEMA = {
51
+ cliPath: { type: 'string', required: true },
52
+ timeout: { type: 'number', min: 1000, max: 300000 },
53
+ logLevel: { type: 'string', enum: ['debug', 'info', 'warn', 'error'] },
54
+ enableMetrics: { type: 'boolean' },
55
+ maxRetries: { type: 'number', min: 0, max: 10 },
56
+ queryCache: { type: 'boolean' },
57
+ queryCacheTtl: { type: 'number', min: 0, max: 600000 },
58
+ auditLog: { type: 'boolean' },
59
+ strictValidation: { type: 'boolean' },
60
+ };
61
+ //# sourceMappingURL=defaults.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"defaults.js","sourceRoot":"","sources":["../../src/lib/defaults.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH,OAAO,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAC1D,OAAO,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAgE1D;;GAEG;AACH,MAAM,CAAC,MAAM,6BAA6B,GAA+B;IACvE,IAAI,EAAE,QAAQ;IACd,SAAS,EAAE,CAAC,WAAW,CAAC;IACxB,eAAe,EAAE,KAAK;CACvB,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAA6B;IACnE,UAAU,EAAE,IAAI;IAChB,gBAAgB,EAAE,IAAI;IACtB,aAAa,EAAE,IAAI;CACpB,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,cAAc,GAAc;IACvC,OAAO,EAAE,MAAM;IACf,OAAO,EAAE,KAAK,EAAE,aAAa;IAC7B,QAAQ,EAAE,MAAM;IAChB,aAAa,EAAE,KAAK;IACpB,UAAU,EAAE,CAAC;IACb,UAAU,EAAE,IAAI;IAChB,aAAa,EAAE,KAAK,EAAE,aAAa;IACnC,QAAQ,EAAE,IAAI;IACd,gBAAgB,EAAE,IAAI;IACtB,oBAAoB,EAAE,EAAE,GAAG,6BAA6B,EAAE;IAC1D,kBAAkB,EAAE,EAAE,GAAG,2BAA2B,EAAE;IACtD,YAAY,EAAE,EAAE,GAAG,qBAAqB,EAAE;CAC3C,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG,WAAW,CAAC;AAEtC;;GAEG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG;IAC3B,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE;IAC3C,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE;IACnD,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;IACtE,aAAa,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;IAClC,UAAU,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE;IAC/C,UAAU,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;IAC/B,aAAa,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE;IACtD,QAAQ,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;IAC7B,gBAAgB,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;CAC7B,CAAC"}
@@ -0,0 +1,101 @@
1
+ /**
2
+ * Error handler for CLEO CLI operations
3
+ *
4
+ * @task T2913
5
+ * @epic T2908
6
+ *
7
+ * Processes CLI errors, generates contextual fix commands,
8
+ * and formats error responses with recovery suggestions.
9
+ */
10
+ import { ErrorSeverity, ErrorCategory, type ErrorAlternative } from './exit-codes.js';
11
+ /**
12
+ * CLI error context
13
+ */
14
+ export interface CLIErrorContext {
15
+ command: string;
16
+ args: string[];
17
+ stderr?: string;
18
+ stdout?: string;
19
+ details?: Record<string, string>;
20
+ }
21
+ /**
22
+ * Formatted error response
23
+ */
24
+ export interface FormattedError {
25
+ code: string;
26
+ name: string;
27
+ exitCode: number;
28
+ message: string;
29
+ description: string;
30
+ category: ErrorCategory;
31
+ severity: ErrorSeverity;
32
+ retryable: boolean;
33
+ fix?: string;
34
+ alternatives?: ErrorAlternative[];
35
+ context?: Record<string, string>;
36
+ documentation?: string;
37
+ }
38
+ /**
39
+ * Handle CLI error and format response
40
+ */
41
+ export declare function handleCLIError(exitCode: number, context: CLIErrorContext): FormattedError;
42
+ /**
43
+ * Check if error is recoverable (can be fixed by user action)
44
+ */
45
+ export declare function isRecoverable(exitCode: number): boolean;
46
+ /**
47
+ * Format error for MCP response
48
+ */
49
+ export declare function formatErrorForMCP(error: FormattedError): {
50
+ success: false;
51
+ error: {
52
+ code: string;
53
+ exitCode: number;
54
+ message: string;
55
+ details?: Record<string, unknown>;
56
+ fix?: string;
57
+ alternatives?: ErrorAlternative[];
58
+ };
59
+ };
60
+ /**
61
+ * Add error context from operation details
62
+ */
63
+ export declare function addErrorContext(context: CLIErrorContext, additionalDetails: Record<string, string>): CLIErrorContext;
64
+ /**
65
+ * Create error context from operation
66
+ */
67
+ export declare function createErrorContext(command: string, args: string[], stderr?: string, stdout?: string, details?: Record<string, string>): CLIErrorContext;
68
+ /**
69
+ * Error with exit code information for retry logic
70
+ *
71
+ * @task T3142
72
+ */
73
+ export interface CLIError extends Error {
74
+ exitCode: number;
75
+ }
76
+ /**
77
+ * Result of a retried operation, including retry metadata
78
+ *
79
+ * @task T3142
80
+ */
81
+ export interface RetryResult<T> {
82
+ result: T;
83
+ attempts: number;
84
+ retriedExitCodes: number[];
85
+ }
86
+ /**
87
+ * Retry an operation with exponential backoff for retryable errors.
88
+ *
89
+ * Per MCP-SERVER-SPECIFICATION Section 9.1:
90
+ * - Exit codes 7, 20-22, 60-63 support retry with exponential backoff
91
+ * - Max 3 attempts by default
92
+ * - Backoff: 2^attempt seconds
93
+ * - Tracks retry count in response metadata
94
+ *
95
+ * Non-recoverable errors (Section 9.2) are never retried and
96
+ * immediately rethrown.
97
+ *
98
+ * @task T3142
99
+ */
100
+ export declare function retryOperation<T>(fn: () => Promise<T>, maxAttempts?: number): Promise<RetryResult<T>>;
101
+ //# sourceMappingURL=error-handler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"error-handler.d.ts","sourceRoot":"","sources":["../../src/lib/error-handler.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAEL,aAAa,EACb,aAAa,EAQb,KAAK,gBAAgB,EACtB,MAAM,iBAAiB,CAAC;AAEzB;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAClC;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,aAAa,CAAC;IACxB,QAAQ,EAAE,aAAa,CAAC;IACxB,SAAS,EAAE,OAAO,CAAC;IACnB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,YAAY,CAAC,EAAE,gBAAgB,EAAE,CAAC;IAClC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED;;GAEG;AACH,wBAAgB,cAAc,CAC5B,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,eAAe,GACvB,cAAc,CA0BhB;AAuHD;;GAEG;AACH,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAgDvD;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,cAAc,GAAG;IACxD,OAAO,EAAE,KAAK,CAAC;IACf,KAAK,EAAE;QACL,IAAI,EAAE,MAAM,CAAC;QACb,QAAQ,EAAE,MAAM,CAAC;QACjB,OAAO,EAAE,MAAM,CAAC;QAChB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAClC,GAAG,CAAC,EAAE,MAAM,CAAC;QACb,YAAY,CAAC,EAAE,gBAAgB,EAAE,CAAC;KACnC,CAAC;CACH,CAmBA;AAED;;GAEG;AACH,wBAAgB,eAAe,CAC7B,OAAO,EAAE,eAAe,EACxB,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GACxC,eAAe,CAQjB;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,MAAM,EAAE,EACd,MAAM,CAAC,EAAE,MAAM,EACf,MAAM,CAAC,EAAE,MAAM,EACf,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAC/B,eAAe,CAQjB;AAED;;;;GAIG;AACH,MAAM,WAAW,QAAS,SAAQ,KAAK;IACrC,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;;;GAIG;AACH,MAAM,WAAW,WAAW,CAAC,CAAC;IAC5B,MAAM,EAAE,CAAC,CAAC;IACV,QAAQ,EAAE,MAAM,CAAC;IACjB,gBAAgB,EAAE,MAAM,EAAE,CAAC;CAC5B;AASD;;;;;;;;;;;;;GAaG;AACH,wBAAsB,cAAc,CAAC,CAAC,EACpC,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EACpB,WAAW,GAAE,MAA6B,GACzC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAuCzB"}