@hashicorp/kits 0.1.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 (392) hide show
  1. package/README.md +619 -0
  2. package/bin/kits.js +8 -0
  3. package/dist/adapters/base-adapter.d.ts +231 -0
  4. package/dist/adapters/base-adapter.d.ts.map +1 -0
  5. package/dist/adapters/base-adapter.js +703 -0
  6. package/dist/adapters/base-adapter.js.map +1 -0
  7. package/dist/adapters/claude-code/detection.d.ts +63 -0
  8. package/dist/adapters/claude-code/detection.d.ts.map +1 -0
  9. package/dist/adapters/claude-code/detection.js +154 -0
  10. package/dist/adapters/claude-code/detection.js.map +1 -0
  11. package/dist/adapters/claude-code/index.d.ts +178 -0
  12. package/dist/adapters/claude-code/index.d.ts.map +1 -0
  13. package/dist/adapters/claude-code/index.js +643 -0
  14. package/dist/adapters/claude-code/index.js.map +1 -0
  15. package/dist/adapters/claude-code/installer.d.ts +161 -0
  16. package/dist/adapters/claude-code/installer.d.ts.map +1 -0
  17. package/dist/adapters/claude-code/installer.js +413 -0
  18. package/dist/adapters/claude-code/installer.js.map +1 -0
  19. package/dist/adapters/claude-code/model-mapping.d.ts +7 -0
  20. package/dist/adapters/claude-code/model-mapping.d.ts.map +1 -0
  21. package/dist/adapters/claude-code/model-mapping.js +14 -0
  22. package/dist/adapters/claude-code/model-mapping.js.map +1 -0
  23. package/dist/adapters/claude-code/tool-mapping.d.ts +18 -0
  24. package/dist/adapters/claude-code/tool-mapping.d.ts.map +1 -0
  25. package/dist/adapters/claude-code/tool-mapping.js +31 -0
  26. package/dist/adapters/claude-code/tool-mapping.js.map +1 -0
  27. package/dist/adapters/codex/detection.d.ts +60 -0
  28. package/dist/adapters/codex/detection.d.ts.map +1 -0
  29. package/dist/adapters/codex/detection.js +146 -0
  30. package/dist/adapters/codex/detection.js.map +1 -0
  31. package/dist/adapters/codex/index.d.ts +167 -0
  32. package/dist/adapters/codex/index.d.ts.map +1 -0
  33. package/dist/adapters/codex/index.js +344 -0
  34. package/dist/adapters/codex/index.js.map +1 -0
  35. package/dist/adapters/codex/installer.d.ts +147 -0
  36. package/dist/adapters/codex/installer.d.ts.map +1 -0
  37. package/dist/adapters/codex/installer.js +229 -0
  38. package/dist/adapters/codex/installer.js.map +1 -0
  39. package/dist/adapters/codex/model-mapping.d.ts +7 -0
  40. package/dist/adapters/codex/model-mapping.d.ts.map +1 -0
  41. package/dist/adapters/codex/model-mapping.js +14 -0
  42. package/dist/adapters/codex/model-mapping.js.map +1 -0
  43. package/dist/adapters/codex/tool-mapping.d.ts +19 -0
  44. package/dist/adapters/codex/tool-mapping.d.ts.map +1 -0
  45. package/dist/adapters/codex/tool-mapping.js +32 -0
  46. package/dist/adapters/codex/tool-mapping.js.map +1 -0
  47. package/dist/adapters/command-parser.d.ts +72 -0
  48. package/dist/adapters/command-parser.d.ts.map +1 -0
  49. package/dist/adapters/command-parser.js +222 -0
  50. package/dist/adapters/command-parser.js.map +1 -0
  51. package/dist/adapters/file-operations.d.ts +164 -0
  52. package/dist/adapters/file-operations.d.ts.map +1 -0
  53. package/dist/adapters/file-operations.js +526 -0
  54. package/dist/adapters/file-operations.js.map +1 -0
  55. package/dist/adapters/gemini-cli/detection.d.ts +57 -0
  56. package/dist/adapters/gemini-cli/detection.d.ts.map +1 -0
  57. package/dist/adapters/gemini-cli/detection.js +143 -0
  58. package/dist/adapters/gemini-cli/detection.js.map +1 -0
  59. package/dist/adapters/gemini-cli/index.d.ts +182 -0
  60. package/dist/adapters/gemini-cli/index.d.ts.map +1 -0
  61. package/dist/adapters/gemini-cli/index.js +598 -0
  62. package/dist/adapters/gemini-cli/index.js.map +1 -0
  63. package/dist/adapters/gemini-cli/installer.d.ts +158 -0
  64. package/dist/adapters/gemini-cli/installer.d.ts.map +1 -0
  65. package/dist/adapters/gemini-cli/installer.js +457 -0
  66. package/dist/adapters/gemini-cli/installer.js.map +1 -0
  67. package/dist/adapters/gemini-cli/model-mapping.d.ts +7 -0
  68. package/dist/adapters/gemini-cli/model-mapping.d.ts.map +1 -0
  69. package/dist/adapters/gemini-cli/model-mapping.js +14 -0
  70. package/dist/adapters/gemini-cli/model-mapping.js.map +1 -0
  71. package/dist/adapters/gemini-cli/tool-mapping.d.ts +18 -0
  72. package/dist/adapters/gemini-cli/tool-mapping.d.ts.map +1 -0
  73. package/dist/adapters/gemini-cli/tool-mapping.js +31 -0
  74. package/dist/adapters/gemini-cli/tool-mapping.js.map +1 -0
  75. package/dist/adapters/github-copilot/detection.d.ts +58 -0
  76. package/dist/adapters/github-copilot/detection.d.ts.map +1 -0
  77. package/dist/adapters/github-copilot/detection.js +144 -0
  78. package/dist/adapters/github-copilot/detection.js.map +1 -0
  79. package/dist/adapters/github-copilot/index.d.ts +203 -0
  80. package/dist/adapters/github-copilot/index.d.ts.map +1 -0
  81. package/dist/adapters/github-copilot/index.js +595 -0
  82. package/dist/adapters/github-copilot/index.js.map +1 -0
  83. package/dist/adapters/github-copilot/installer.d.ts +124 -0
  84. package/dist/adapters/github-copilot/installer.d.ts.map +1 -0
  85. package/dist/adapters/github-copilot/installer.js +343 -0
  86. package/dist/adapters/github-copilot/installer.js.map +1 -0
  87. package/dist/adapters/github-copilot/model-mapping.d.ts +7 -0
  88. package/dist/adapters/github-copilot/model-mapping.d.ts.map +1 -0
  89. package/dist/adapters/github-copilot/model-mapping.js +14 -0
  90. package/dist/adapters/github-copilot/model-mapping.js.map +1 -0
  91. package/dist/adapters/github-copilot/tool-mapping.d.ts +18 -0
  92. package/dist/adapters/github-copilot/tool-mapping.d.ts.map +1 -0
  93. package/dist/adapters/github-copilot/tool-mapping.js +31 -0
  94. package/dist/adapters/github-copilot/tool-mapping.js.map +1 -0
  95. package/dist/adapters/index.d.ts +39 -0
  96. package/dist/adapters/index.d.ts.map +1 -0
  97. package/dist/adapters/index.js +76 -0
  98. package/dist/adapters/index.js.map +1 -0
  99. package/dist/adapters/interface.d.ts +9 -0
  100. package/dist/adapters/interface.d.ts.map +1 -0
  101. package/dist/adapters/interface.js +8 -0
  102. package/dist/adapters/interface.js.map +1 -0
  103. package/dist/adapters/model-templating.d.ts +16 -0
  104. package/dist/adapters/model-templating.d.ts.map +1 -0
  105. package/dist/adapters/model-templating.js +52 -0
  106. package/dist/adapters/model-templating.js.map +1 -0
  107. package/dist/adapters/opencode/detection.d.ts +57 -0
  108. package/dist/adapters/opencode/detection.d.ts.map +1 -0
  109. package/dist/adapters/opencode/detection.js +140 -0
  110. package/dist/adapters/opencode/detection.js.map +1 -0
  111. package/dist/adapters/opencode/index.d.ts +168 -0
  112. package/dist/adapters/opencode/index.d.ts.map +1 -0
  113. package/dist/adapters/opencode/index.js +494 -0
  114. package/dist/adapters/opencode/index.js.map +1 -0
  115. package/dist/adapters/opencode/installer.d.ts +91 -0
  116. package/dist/adapters/opencode/installer.d.ts.map +1 -0
  117. package/dist/adapters/opencode/installer.js +290 -0
  118. package/dist/adapters/opencode/installer.js.map +1 -0
  119. package/dist/adapters/opencode/model-mapping.d.ts +7 -0
  120. package/dist/adapters/opencode/model-mapping.d.ts.map +1 -0
  121. package/dist/adapters/opencode/model-mapping.js +14 -0
  122. package/dist/adapters/opencode/model-mapping.js.map +1 -0
  123. package/dist/adapters/opencode/tool-mapping.d.ts +18 -0
  124. package/dist/adapters/opencode/tool-mapping.d.ts.map +1 -0
  125. package/dist/adapters/opencode/tool-mapping.js +31 -0
  126. package/dist/adapters/opencode/tool-mapping.js.map +1 -0
  127. package/dist/adapters/registry.d.ts +154 -0
  128. package/dist/adapters/registry.d.ts.map +1 -0
  129. package/dist/adapters/registry.js +223 -0
  130. package/dist/adapters/registry.js.map +1 -0
  131. package/dist/adapters/skill-frontmatter.d.ts +34 -0
  132. package/dist/adapters/skill-frontmatter.d.ts.map +1 -0
  133. package/dist/adapters/skill-frontmatter.js +110 -0
  134. package/dist/adapters/skill-frontmatter.js.map +1 -0
  135. package/dist/adapters/subagent-frontmatter.d.ts +22 -0
  136. package/dist/adapters/subagent-frontmatter.d.ts.map +1 -0
  137. package/dist/adapters/subagent-frontmatter.js +80 -0
  138. package/dist/adapters/subagent-frontmatter.js.map +1 -0
  139. package/dist/adapters/tool-templating.d.ts +162 -0
  140. package/dist/adapters/tool-templating.d.ts.map +1 -0
  141. package/dist/adapters/tool-templating.js +273 -0
  142. package/dist/adapters/tool-templating.js.map +1 -0
  143. package/dist/adapters/types.d.ts +347 -0
  144. package/dist/adapters/types.d.ts.map +1 -0
  145. package/dist/adapters/types.js +33 -0
  146. package/dist/adapters/types.js.map +1 -0
  147. package/dist/cli/index.d.ts +10 -0
  148. package/dist/cli/index.d.ts.map +1 -0
  149. package/dist/cli/index.js +261 -0
  150. package/dist/cli/index.js.map +1 -0
  151. package/dist/cli/info.d.ts +20 -0
  152. package/dist/cli/info.d.ts.map +1 -0
  153. package/dist/cli/info.js +194 -0
  154. package/dist/cli/info.js.map +1 -0
  155. package/dist/cli/install.d.ts +21 -0
  156. package/dist/cli/install.d.ts.map +1 -0
  157. package/dist/cli/install.js +1624 -0
  158. package/dist/cli/install.js.map +1 -0
  159. package/dist/cli/list.d.ts +19 -0
  160. package/dist/cli/list.d.ts.map +1 -0
  161. package/dist/cli/list.js +216 -0
  162. package/dist/cli/list.js.map +1 -0
  163. package/dist/cli/types.d.ts +246 -0
  164. package/dist/cli/types.d.ts.map +1 -0
  165. package/dist/cli/types.js +25 -0
  166. package/dist/cli/types.js.map +1 -0
  167. package/dist/cli/uninstall.d.ts +20 -0
  168. package/dist/cli/uninstall.d.ts.map +1 -0
  169. package/dist/cli/uninstall.js +393 -0
  170. package/dist/cli/uninstall.js.map +1 -0
  171. package/dist/cli/upgrade.d.ts +20 -0
  172. package/dist/cli/upgrade.d.ts.map +1 -0
  173. package/dist/cli/upgrade.js +372 -0
  174. package/dist/cli/upgrade.js.map +1 -0
  175. package/dist/cli/validate.d.ts +14 -0
  176. package/dist/cli/validate.d.ts.map +1 -0
  177. package/dist/cli/validate.js +307 -0
  178. package/dist/cli/validate.js.map +1 -0
  179. package/dist/core/debug.d.ts +23 -0
  180. package/dist/core/debug.d.ts.map +1 -0
  181. package/dist/core/debug.js +69 -0
  182. package/dist/core/debug.js.map +1 -0
  183. package/dist/core/hook-instance.d.ts +8 -0
  184. package/dist/core/hook-instance.d.ts.map +1 -0
  185. package/dist/core/hook-instance.js +62 -0
  186. package/dist/core/hook-instance.js.map +1 -0
  187. package/dist/core/mcp-instance.d.ts +13 -0
  188. package/dist/core/mcp-instance.d.ts.map +1 -0
  189. package/dist/core/mcp-instance.js +80 -0
  190. package/dist/core/mcp-instance.js.map +1 -0
  191. package/dist/core/types.d.ts +461 -0
  192. package/dist/core/types.d.ts.map +1 -0
  193. package/dist/core/types.js +42 -0
  194. package/dist/core/types.js.map +1 -0
  195. package/dist/core/upgrade-executor.d.ts +70 -0
  196. package/dist/core/upgrade-executor.d.ts.map +1 -0
  197. package/dist/core/upgrade-executor.js +368 -0
  198. package/dist/core/upgrade-executor.js.map +1 -0
  199. package/dist/discovery/fetcher-registry.d.ts +87 -0
  200. package/dist/discovery/fetcher-registry.d.ts.map +1 -0
  201. package/dist/discovery/fetcher-registry.js +119 -0
  202. package/dist/discovery/fetcher-registry.js.map +1 -0
  203. package/dist/discovery/git-fetcher.d.ts +61 -0
  204. package/dist/discovery/git-fetcher.d.ts.map +1 -0
  205. package/dist/discovery/git-fetcher.js +150 -0
  206. package/dist/discovery/git-fetcher.js.map +1 -0
  207. package/dist/discovery/index.d.ts +13 -0
  208. package/dist/discovery/index.d.ts.map +1 -0
  209. package/dist/discovery/index.js +15 -0
  210. package/dist/discovery/index.js.map +1 -0
  211. package/dist/discovery/kit-scanner.d.ts +55 -0
  212. package/dist/discovery/kit-scanner.d.ts.map +1 -0
  213. package/dist/discovery/kit-scanner.js +305 -0
  214. package/dist/discovery/kit-scanner.js.map +1 -0
  215. package/dist/discovery/local-fetcher.d.ts +38 -0
  216. package/dist/discovery/local-fetcher.d.ts.map +1 -0
  217. package/dist/discovery/local-fetcher.js +100 -0
  218. package/dist/discovery/local-fetcher.js.map +1 -0
  219. package/dist/discovery/source-parser.d.ts +33 -0
  220. package/dist/discovery/source-parser.d.ts.map +1 -0
  221. package/dist/discovery/source-parser.js +136 -0
  222. package/dist/discovery/source-parser.js.map +1 -0
  223. package/dist/discovery/types.d.ts +145 -0
  224. package/dist/discovery/types.d.ts.map +1 -0
  225. package/dist/discovery/types.js +18 -0
  226. package/dist/discovery/types.js.map +1 -0
  227. package/dist/index.d.ts +13 -0
  228. package/dist/index.d.ts.map +1 -0
  229. package/dist/index.js +19 -0
  230. package/dist/index.js.map +1 -0
  231. package/dist/manifest/index.d.ts +79 -0
  232. package/dist/manifest/index.d.ts.map +1 -0
  233. package/dist/manifest/index.js +200 -0
  234. package/dist/manifest/index.js.map +1 -0
  235. package/dist/manifest/read.d.ts +32 -0
  236. package/dist/manifest/read.d.ts.map +1 -0
  237. package/dist/manifest/read.js +88 -0
  238. package/dist/manifest/read.js.map +1 -0
  239. package/dist/manifest/types.d.ts +119 -0
  240. package/dist/manifest/types.d.ts.map +1 -0
  241. package/dist/manifest/types.js +44 -0
  242. package/dist/manifest/types.js.map +1 -0
  243. package/dist/manifest/upgrade-check.d.ts +72 -0
  244. package/dist/manifest/upgrade-check.d.ts.map +1 -0
  245. package/dist/manifest/upgrade-check.js +215 -0
  246. package/dist/manifest/upgrade-check.js.map +1 -0
  247. package/dist/manifest/utils.d.ts +35 -0
  248. package/dist/manifest/utils.d.ts.map +1 -0
  249. package/dist/manifest/utils.js +57 -0
  250. package/dist/manifest/utils.js.map +1 -0
  251. package/dist/manifest/write.d.ts +44 -0
  252. package/dist/manifest/write.d.ts.map +1 -0
  253. package/dist/manifest/write.js +77 -0
  254. package/dist/manifest/write.js.map +1 -0
  255. package/dist/resolution/env-resolver.d.ts +81 -0
  256. package/dist/resolution/env-resolver.d.ts.map +1 -0
  257. package/dist/resolution/env-resolver.js +233 -0
  258. package/dist/resolution/env-resolver.js.map +1 -0
  259. package/dist/resolution/index.d.ts +55 -0
  260. package/dist/resolution/index.d.ts.map +1 -0
  261. package/dist/resolution/index.js +412 -0
  262. package/dist/resolution/index.js.map +1 -0
  263. package/dist/resolution/multi-kit-resolver.d.ts +43 -0
  264. package/dist/resolution/multi-kit-resolver.d.ts.map +1 -0
  265. package/dist/resolution/multi-kit-resolver.js +258 -0
  266. package/dist/resolution/multi-kit-resolver.js.map +1 -0
  267. package/dist/resolution/primitive-paths.d.ts +17 -0
  268. package/dist/resolution/primitive-paths.d.ts.map +1 -0
  269. package/dist/resolution/primitive-paths.js +59 -0
  270. package/dist/resolution/primitive-paths.js.map +1 -0
  271. package/dist/resolution/primitives-registry.d.ts +137 -0
  272. package/dist/resolution/primitives-registry.d.ts.map +1 -0
  273. package/dist/resolution/primitives-registry.js +295 -0
  274. package/dist/resolution/primitives-registry.js.map +1 -0
  275. package/dist/resolution/reference-parser.d.ts +62 -0
  276. package/dist/resolution/reference-parser.d.ts.map +1 -0
  277. package/dist/resolution/reference-parser.js +182 -0
  278. package/dist/resolution/reference-parser.js.map +1 -0
  279. package/dist/resolution/types.d.ts +77 -0
  280. package/dist/resolution/types.d.ts.map +1 -0
  281. package/dist/resolution/types.js +13 -0
  282. package/dist/resolution/types.js.map +1 -0
  283. package/dist/resolution/version-resolver.d.ts +76 -0
  284. package/dist/resolution/version-resolver.d.ts.map +1 -0
  285. package/dist/resolution/version-resolver.js +269 -0
  286. package/dist/resolution/version-resolver.js.map +1 -0
  287. package/dist/tui/compatibility.d.ts +80 -0
  288. package/dist/tui/compatibility.d.ts.map +1 -0
  289. package/dist/tui/compatibility.js +355 -0
  290. package/dist/tui/compatibility.js.map +1 -0
  291. package/dist/tui/env-prompt.d.ts +129 -0
  292. package/dist/tui/env-prompt.d.ts.map +1 -0
  293. package/dist/tui/env-prompt.js +488 -0
  294. package/dist/tui/env-prompt.js.map +1 -0
  295. package/dist/tui/harness-select.d.ts +54 -0
  296. package/dist/tui/harness-select.d.ts.map +1 -0
  297. package/dist/tui/harness-select.js +171 -0
  298. package/dist/tui/harness-select.js.map +1 -0
  299. package/dist/tui/index.d.ts +112 -0
  300. package/dist/tui/index.d.ts.map +1 -0
  301. package/dist/tui/index.js +213 -0
  302. package/dist/tui/index.js.map +1 -0
  303. package/dist/tui/kit-select.d.ts +72 -0
  304. package/dist/tui/kit-select.d.ts.map +1 -0
  305. package/dist/tui/kit-select.js +209 -0
  306. package/dist/tui/kit-select.js.map +1 -0
  307. package/dist/tui/progress.d.ts +75 -0
  308. package/dist/tui/progress.d.ts.map +1 -0
  309. package/dist/tui/progress.js +267 -0
  310. package/dist/tui/progress.js.map +1 -0
  311. package/dist/tui/resolution.d.ts +62 -0
  312. package/dist/tui/resolution.d.ts.map +1 -0
  313. package/dist/tui/resolution.js +261 -0
  314. package/dist/tui/resolution.js.map +1 -0
  315. package/dist/tui/scope-compatibility.d.ts +139 -0
  316. package/dist/tui/scope-compatibility.d.ts.map +1 -0
  317. package/dist/tui/scope-compatibility.js +230 -0
  318. package/dist/tui/scope-compatibility.js.map +1 -0
  319. package/dist/tui/scope-select.d.ts +67 -0
  320. package/dist/tui/scope-select.d.ts.map +1 -0
  321. package/dist/tui/scope-select.js +134 -0
  322. package/dist/tui/scope-select.js.map +1 -0
  323. package/dist/tui/spinner.d.ts +114 -0
  324. package/dist/tui/spinner.d.ts.map +1 -0
  325. package/dist/tui/spinner.js +186 -0
  326. package/dist/tui/spinner.js.map +1 -0
  327. package/dist/tui/summary.d.ts +71 -0
  328. package/dist/tui/summary.d.ts.map +1 -0
  329. package/dist/tui/summary.js +343 -0
  330. package/dist/tui/summary.js.map +1 -0
  331. package/dist/tui/types.d.ts +234 -0
  332. package/dist/tui/types.d.ts.map +1 -0
  333. package/dist/tui/types.js +7 -0
  334. package/dist/tui/types.js.map +1 -0
  335. package/dist/tui/upgrade-select.d.ts +73 -0
  336. package/dist/tui/upgrade-select.d.ts.map +1 -0
  337. package/dist/tui/upgrade-select.js +324 -0
  338. package/dist/tui/upgrade-select.js.map +1 -0
  339. package/dist/validation/index.d.ts +13 -0
  340. package/dist/validation/index.d.ts.map +1 -0
  341. package/dist/validation/index.js +13 -0
  342. package/dist/validation/index.js.map +1 -0
  343. package/dist/validation/source.d.ts +14 -0
  344. package/dist/validation/source.d.ts.map +1 -0
  345. package/dist/validation/source.js +51 -0
  346. package/dist/validation/source.js.map +1 -0
  347. package/dist/validation/utils.d.ts +29 -0
  348. package/dist/validation/utils.d.ts.map +1 -0
  349. package/dist/validation/utils.js +89 -0
  350. package/dist/validation/utils.js.map +1 -0
  351. package/dist/validation/validate-commands.d.ts +28 -0
  352. package/dist/validation/validate-commands.d.ts.map +1 -0
  353. package/dist/validation/validate-commands.js +151 -0
  354. package/dist/validation/validate-commands.js.map +1 -0
  355. package/dist/validation/validate-hooks.d.ts +13 -0
  356. package/dist/validation/validate-hooks.d.ts.map +1 -0
  357. package/dist/validation/validate-hooks.js +272 -0
  358. package/dist/validation/validate-hooks.js.map +1 -0
  359. package/dist/validation/validate-kits.d.ts +15 -0
  360. package/dist/validation/validate-kits.d.ts.map +1 -0
  361. package/dist/validation/validate-kits.js +185 -0
  362. package/dist/validation/validate-kits.js.map +1 -0
  363. package/dist/validation/validate-mcp.d.ts +12 -0
  364. package/dist/validation/validate-mcp.d.ts.map +1 -0
  365. package/dist/validation/validate-mcp.js +132 -0
  366. package/dist/validation/validate-mcp.js.map +1 -0
  367. package/dist/validation/validate-skills.d.ts +24 -0
  368. package/dist/validation/validate-skills.d.ts.map +1 -0
  369. package/dist/validation/validate-skills.js +223 -0
  370. package/dist/validation/validate-skills.js.map +1 -0
  371. package/dist/validation/validate-subagents.d.ts +27 -0
  372. package/dist/validation/validate-subagents.d.ts.map +1 -0
  373. package/dist/validation/validate-subagents.js +269 -0
  374. package/dist/validation/validate-subagents.js.map +1 -0
  375. package/package.json +91 -0
  376. package/schemas/command.schema.json +23 -0
  377. package/schemas/examples/hook-binding-valid.json +20 -0
  378. package/schemas/examples/hook-program-valid.json +25 -0
  379. package/schemas/examples/http-server-valid.json +82 -0
  380. package/schemas/examples/invalid-sensitive-header-no-envvar.json +16 -0
  381. package/schemas/examples/invalid-sensitive-header-with-value.json +17 -0
  382. package/schemas/examples/invalid-sensitive-var-with-default.json +19 -0
  383. package/schemas/examples/stdio-server-valid.json +55 -0
  384. package/schemas/hook-binding.schema.json +63 -0
  385. package/schemas/hook-program.schema.json +104 -0
  386. package/schemas/kit.schema.json +338 -0
  387. package/schemas/kits.schema.json +117 -0
  388. package/schemas/manifest.schema.json +200 -0
  389. package/schemas/mcp-server.schema.json +305 -0
  390. package/schemas/primitives.schema.json +118 -0
  391. package/schemas/skill.schema.json +96 -0
  392. package/schemas/subagent.schema.json +107 -0
@@ -0,0 +1,229 @@
1
+ /**
2
+ * Codex installation helpers.
3
+ *
4
+ * Provides utilities for installing primitives to Codex:
5
+ * - MCP server configuration in ~/.codex/mcp.json
6
+ * - Environment variable substitution
7
+ *
8
+ * Codex does not support subagents or hooks.
9
+ */
10
+ import * as path from "node:path";
11
+ import { expandPath, pathExists, readFile, writeTransformed, ensureDirectory, } from "../file-operations.js";
12
+ import { CODEX_PATHS } from "./detection.js";
13
+ /**
14
+ * Read the MCP configuration file.
15
+ */
16
+ export async function readMcpConfig() {
17
+ const configPath = expandPath(CODEX_PATHS.mcp);
18
+ if (!pathExists(configPath)) {
19
+ return {};
20
+ }
21
+ try {
22
+ const content = await readFile(configPath);
23
+ return JSON.parse(content);
24
+ }
25
+ catch {
26
+ return {};
27
+ }
28
+ }
29
+ /**
30
+ * Write the MCP configuration file.
31
+ */
32
+ export async function writeMcpConfig(config) {
33
+ const configPath = expandPath(CODEX_PATHS.mcp);
34
+ const configDir = path.dirname(configPath);
35
+ await ensureDirectory(configDir);
36
+ await writeTransformed(configPath, JSON.stringify(config, null, 2));
37
+ }
38
+ /**
39
+ * Process environment variable values.
40
+ *
41
+ * Codex uses ${VAR} syntax for environment variable references.
42
+ */
43
+ export function processEnvValue(value) {
44
+ return value;
45
+ }
46
+ /**
47
+ * Transform an MCP server configuration for Codex.
48
+ *
49
+ * Codex MCP configuration format:
50
+ * ```json
51
+ * {
52
+ * "servers": {
53
+ * "server-name": {
54
+ * "command": "executable",
55
+ * "args": ["arg1", "arg2"],
56
+ * "env": {
57
+ * "VAR": "${VAR}"
58
+ * }
59
+ * }
60
+ * }
61
+ * }
62
+ * ```
63
+ *
64
+ * Note: Full environment variable transformation with sensitivity handling
65
+ * (env_vars array vs env table) is implemented in transformEnvVars (Phase 7).
66
+ * This function provides basic passthrough for all env vars using ${VAR} syntax.
67
+ */
68
+ export function transformMcpServerConfig(config) {
69
+ // Only stdio transport is supported for Codex MCP servers
70
+ if (config.transport.type !== "stdio") {
71
+ throw new Error(`Unsupported transport type: ${config.transport.type}. Codex only supports stdio transport.`);
72
+ }
73
+ const entry = {
74
+ command: config.transport.command,
75
+ };
76
+ if (config.transport.args && config.transport.args.length > 0) {
77
+ entry.args = config.transport.args;
78
+ }
79
+ // Basic env var passthrough - full transformation in Phase 7
80
+ if (config.env && Object.keys(config.env).length > 0) {
81
+ entry.env = {};
82
+ for (const [key] of Object.entries(config.env)) {
83
+ // Use passthrough syntax for all env vars
84
+ entry.env[key] = `\${${key}}`;
85
+ }
86
+ }
87
+ return entry;
88
+ }
89
+ /**
90
+ * Transform resolved environment variables to Codex format.
91
+ *
92
+ * Codex uses two distinct mechanisms:
93
+ * - `env_vars` array: Variables passed through from shell environment (passthrough)
94
+ * - `env` table: Variables with direct values
95
+ *
96
+ * Rules (per FR-20.4):
97
+ * - usePassthrough: true → Add to env_vars array
98
+ * - usePassthrough: false (has value) → Add to env table
99
+ */
100
+ export function transformEnvVars(resolved) {
101
+ const env_vars = [];
102
+ const env = {};
103
+ for (const r of resolved) {
104
+ if (r.usePassthrough) {
105
+ env_vars.push(r.name);
106
+ }
107
+ else if (r.value !== undefined) {
108
+ env[r.name] = r.value;
109
+ }
110
+ }
111
+ return { env_vars, env };
112
+ }
113
+ /**
114
+ * Transform resolved headers to Codex format.
115
+ *
116
+ * Codex uses specialized fields for HTTP authentication:
117
+ * - `bearer_token_env_var`: Environment variable containing bearer token (for Authorization headers)
118
+ * - `env_http_headers`: Table of additional headers with env var references
119
+ * - `http_headers`: Table of static header values
120
+ *
121
+ * Bearer Token Detection:
122
+ * The adapter detects bearer token patterns in Authorization headers:
123
+ * 1. Header name is "Authorization" (case-insensitive)
124
+ * 2. Header is marked sensitive: true
125
+ * 3. Uses envVar for the token value
126
+ *
127
+ * Rules (per FR-21.3):
128
+ * - Authorization + sensitive + envVar → bearer_token_env_var = "VAR"
129
+ * - Other headers with envVar → env_http_headers.Header = "$VAR"
130
+ * - Headers with static value → http_headers.Header = "value"
131
+ */
132
+ export function transformHeaders(resolved) {
133
+ let bearer_token_env_var;
134
+ const env_http_headers = {};
135
+ const http_headers = {};
136
+ for (const r of resolved) {
137
+ // Check for Authorization header with bearer token pattern
138
+ if (r.name.toLowerCase() === "authorization" && r.sensitive && r.envVar) {
139
+ bearer_token_env_var = r.envVar;
140
+ }
141
+ else if (r.usePassthrough && r.envVar) {
142
+ env_http_headers[r.name] = `$${r.envVar}`;
143
+ }
144
+ else if (r.value !== undefined) {
145
+ http_headers[r.name] = r.value;
146
+ }
147
+ }
148
+ return { bearer_token_env_var, env_http_headers, http_headers };
149
+ }
150
+ /**
151
+ * Add an MCP server to the configuration.
152
+ *
153
+ * @param namespacedName - The namespaced server name (e.g., "kit.server")
154
+ * @param config - The MCP server configuration
155
+ */
156
+ export async function addMcpServer(namespacedName, config) {
157
+ try {
158
+ const mcpConfig = await readMcpConfig();
159
+ if (!mcpConfig.servers) {
160
+ mcpConfig.servers = {};
161
+ }
162
+ mcpConfig.servers[namespacedName] = transformMcpServerConfig(config);
163
+ await writeMcpConfig(mcpConfig);
164
+ return {
165
+ operation: "merge",
166
+ destination: expandPath(CODEX_PATHS.mcp),
167
+ success: true,
168
+ };
169
+ }
170
+ catch (error) {
171
+ return {
172
+ operation: "merge",
173
+ destination: expandPath(CODEX_PATHS.mcp),
174
+ success: false,
175
+ error: error instanceof Error ? error.message : String(error),
176
+ };
177
+ }
178
+ }
179
+ /**
180
+ * Remove an MCP server from the configuration.
181
+ *
182
+ * @param namespacedName - The namespaced server name to remove
183
+ */
184
+ export async function removeMcpServer(namespacedName) {
185
+ const mcpConfig = await readMcpConfig();
186
+ if (!mcpConfig.servers || !mcpConfig.servers[namespacedName]) {
187
+ return false;
188
+ }
189
+ delete mcpConfig.servers[namespacedName];
190
+ await writeMcpConfig(mcpConfig);
191
+ return true;
192
+ }
193
+ /**
194
+ * Get all installed MCP servers for a specific kit.
195
+ *
196
+ * @param kitName - The kit name prefix to filter by
197
+ */
198
+ export async function getKitMcpServers(kitName) {
199
+ const mcpConfig = await readMcpConfig();
200
+ if (!mcpConfig.servers) {
201
+ return [];
202
+ }
203
+ const prefix = `${kitName}.`;
204
+ return Object.keys(mcpConfig.servers).filter((name) => name.startsWith(prefix));
205
+ }
206
+ /**
207
+ * Remove all MCP servers for a specific kit.
208
+ *
209
+ * @param kitName - The kit name prefix to remove
210
+ */
211
+ export async function removeKitMcpServers(kitName) {
212
+ const mcpConfig = await readMcpConfig();
213
+ const removed = [];
214
+ if (!mcpConfig.servers) {
215
+ return removed;
216
+ }
217
+ const prefix = `${kitName}.`;
218
+ for (const name of Object.keys(mcpConfig.servers)) {
219
+ if (name.startsWith(prefix)) {
220
+ delete mcpConfig.servers[name];
221
+ removed.push(name);
222
+ }
223
+ }
224
+ if (removed.length > 0) {
225
+ await writeMcpConfig(mcpConfig);
226
+ }
227
+ return removed;
228
+ }
229
+ //# sourceMappingURL=installer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"installer.js","sourceRoot":"","sources":["../../../src/adapters/codex/installer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Codex model mapping.
3
+ */
4
+ import type { ModelMapping } from "../types.js";
5
+ export declare const codexModelMapping: ModelMapping;
6
+ export declare function getCodexModelMapping(): ModelMapping;
7
+ //# sourceMappingURL=model-mapping.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"model-mapping.d.ts","sourceRoot":"","sources":["../../../src/adapters/codex/model-mapping.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAEhD,eAAO,MAAM,iBAAiB,EAAE,YAM/B,CAAC;AAEF,wBAAgB,oBAAoB,IAAI,YAAY,CAEnD"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Codex model mapping.
3
+ */
4
+ export const codexModelMapping = {
5
+ fast: "gpt-5.1-codex-mini",
6
+ standard: "gpt-5.2-codex",
7
+ power: "gpt-5.1-codex-max",
8
+ auto: null,
9
+ inherit: null,
10
+ };
11
+ export function getCodexModelMapping() {
12
+ return codexModelMapping;
13
+ }
14
+ //# sourceMappingURL=model-mapping.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"model-mapping.js","sourceRoot":"","sources":["../../../src/adapters/codex/model-mapping.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,MAAM,CAAC,MAAM,iBAAiB,GAAiB;IAC7C,IAAI,EAAE,oBAAoB;IAC1B,QAAQ,EAAE,eAAe;IACzB,KAAK,EAAE,mBAAmB;IAC1B,IAAI,EAAE,IAAI;IACV,OAAO,EAAE,IAAI;CACd,CAAC;AAEF,MAAM,UAAU,oBAAoB;IAClC,OAAO,iBAAiB,CAAC;AAC3B,CAAC"}
@@ -0,0 +1,19 @@
1
+ /**
2
+ * Codex tool mapping.
3
+ *
4
+ * Maps canonical tool identifiers to Codex's native tool names.
5
+ * Codex has limited tool support compared to Claude Code.
6
+ */
7
+ import type { ToolMapping } from "../types.js";
8
+ /**
9
+ * Codex tool mapping.
10
+ *
11
+ * Codex uses snake_case naming for tools and has more limited
12
+ * tool support than Claude Code.
13
+ */
14
+ export declare const codexToolMapping: ToolMapping;
15
+ /**
16
+ * Get the Codex tool mapping.
17
+ */
18
+ export declare function getCodexToolMapping(): ToolMapping;
19
+ //# sourceMappingURL=tool-mapping.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tool-mapping.d.ts","sourceRoot":"","sources":["../../../src/adapters/codex/tool-mapping.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE/C;;;;;GAKG;AACH,eAAO,MAAM,gBAAgB,EAAE,WAY9B,CAAC;AAEF;;GAEG;AACH,wBAAgB,mBAAmB,IAAI,WAAW,CAEjD"}
@@ -0,0 +1,32 @@
1
+ /**
2
+ * Codex tool mapping.
3
+ *
4
+ * Maps canonical tool identifiers to Codex's native tool names.
5
+ * Codex has limited tool support compared to Claude Code.
6
+ */
7
+ /**
8
+ * Codex tool mapping.
9
+ *
10
+ * Codex uses snake_case naming for tools and has more limited
11
+ * tool support than Claude Code.
12
+ */
13
+ export const codexToolMapping = {
14
+ shell: "shell",
15
+ read: "read_file",
16
+ write: "write_file",
17
+ edit: "edit_file",
18
+ grep: "search",
19
+ glob: "find_files",
20
+ list: "list_directory",
21
+ webfetch: "web_fetch",
22
+ websearch: "web_search",
23
+ todo: "task_list",
24
+ ask: "ask_user",
25
+ };
26
+ /**
27
+ * Get the Codex tool mapping.
28
+ */
29
+ export function getCodexToolMapping() {
30
+ return codexToolMapping;
31
+ }
32
+ //# sourceMappingURL=tool-mapping.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tool-mapping.js","sourceRoot":"","sources":["../../../src/adapters/codex/tool-mapping.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH;;;;;GAKG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAgB;IAC3C,KAAK,EAAE,OAAO;IACd,IAAI,EAAE,WAAW;IACjB,KAAK,EAAE,YAAY;IACnB,IAAI,EAAE,WAAW;IACjB,IAAI,EAAE,QAAQ;IACd,IAAI,EAAE,YAAY;IAClB,IAAI,EAAE,gBAAgB;IACtB,QAAQ,EAAE,WAAW;IACrB,SAAS,EAAE,YAAY;IACvB,IAAI,EAAE,WAAW;IACjB,GAAG,EAAE,UAAU;CAChB,CAAC;AAEF;;GAEG;AACH,MAAM,UAAU,mBAAmB;IACjC,OAAO,gBAAgB,CAAC;AAC1B,CAAC"}
@@ -0,0 +1,72 @@
1
+ /**
2
+ * Command parsing utilities for canonical command format.
3
+ *
4
+ * Parses and validates commands in the canonical format:
5
+ *
6
+ * ```markdown
7
+ * ---
8
+ * description: Brief description (required)
9
+ * argumentHint: [OPTIONAL_ARGS] (optional)
10
+ * ---
11
+ *
12
+ * Command prompt content here.
13
+ * ```
14
+ */
15
+ import type { CommandFrontmatter } from "./types.js";
16
+ /**
17
+ * Error thrown when command parsing fails.
18
+ */
19
+ export declare class CommandParseError extends Error {
20
+ constructor(message: string);
21
+ }
22
+ /**
23
+ * Parse and validate command frontmatter from markdown content.
24
+ *
25
+ * Validates that the content has:
26
+ * - YAML frontmatter block (required)
27
+ * - `description` field in frontmatter (required)
28
+ * - Non-empty body content (required)
29
+ *
30
+ * @param content - Raw markdown content with frontmatter
31
+ * @returns Validated CommandFrontmatter
32
+ * @throws CommandParseError if validation fails
33
+ */
34
+ export declare function parseCommandFrontmatter(content: string): CommandFrontmatter;
35
+ /**
36
+ * Extract the body content from a command markdown file.
37
+ *
38
+ * Returns the content after the YAML frontmatter block.
39
+ * If no frontmatter is present, returns the entire content.
40
+ *
41
+ * @param content - Raw markdown content
42
+ * @returns Body content (trimmed)
43
+ */
44
+ export declare function extractCommandBody(content: string): string;
45
+ /**
46
+ * Strip a specific field from the YAML frontmatter.
47
+ *
48
+ * Returns the original content with the specified field removed from frontmatter.
49
+ * If the field doesn't exist or there's no frontmatter, returns content unchanged.
50
+ *
51
+ * @param content - Raw markdown content with frontmatter
52
+ * @param field - Field name to strip (e.g., "argumentHint")
53
+ * @returns Content with field removed from frontmatter
54
+ */
55
+ export declare function stripFrontmatterField(content: string, field: string): string;
56
+ /**
57
+ * Rename a frontmatter field within the YAML block.
58
+ *
59
+ * Returns content unchanged if the field is not present or no frontmatter exists.
60
+ */
61
+ export declare function renameFrontmatterField(content: string, from: string, to: string): string;
62
+ /**
63
+ * Validate command content without parsing.
64
+ *
65
+ * Checks that the content meets all canonical format requirements.
66
+ *
67
+ * @param content - Raw markdown content
68
+ * @returns true if valid
69
+ * @throws CommandParseError if validation fails
70
+ */
71
+ export declare function validateCommandContent(content: string): boolean;
72
+ //# sourceMappingURL=command-parser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"command-parser.d.ts","sourceRoot":"","sources":["../../src/adapters/command-parser.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAErD;;GAEG;AACH,qBAAa,iBAAkB,SAAQ,KAAK;gBAC9B,OAAO,EAAE,MAAM;CAI5B;AA6ED;;;;;;;;;;;GAWG;AACH,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,MAAM,GAAG,kBAAkB,CAwC3E;AAED;;;;;;;;GAQG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAG1D;AAED;;;;;;;;;GASG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CA6B5E;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,CACpC,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,MAAM,EACZ,EAAE,EAAE,MAAM,GACT,MAAM,CA6BR;AAED;;;;;;;;GAQG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAI/D"}
@@ -0,0 +1,222 @@
1
+ /**
2
+ * Command parsing utilities for canonical command format.
3
+ *
4
+ * Parses and validates commands in the canonical format:
5
+ *
6
+ * ```markdown
7
+ * ---
8
+ * description: Brief description (required)
9
+ * argumentHint: [OPTIONAL_ARGS] (optional)
10
+ * ---
11
+ *
12
+ * Command prompt content here.
13
+ * ```
14
+ */
15
+ /**
16
+ * Error thrown when command parsing fails.
17
+ */
18
+ export class CommandParseError extends Error {
19
+ constructor(message) {
20
+ super(message);
21
+ this.name = "CommandParseError";
22
+ }
23
+ }
24
+ /**
25
+ * Regex to match YAML frontmatter block.
26
+ * Matches content between --- delimiters at the start of the file.
27
+ */
28
+ const FRONTMATTER_REGEX = /^---\r?\n([\s\S]*?)\r?\n---\r?\n([\s\S]*)$/;
29
+ /**
30
+ * Regex to match a YAML key-value pair.
31
+ * Supports alphanumeric keys with hyphens and underscores.
32
+ */
33
+ const YAML_KEY_VALUE_REGEX = /^([\w-]+):\s*(.*)$/;
34
+ /**
35
+ * Parse raw frontmatter and body from markdown content.
36
+ *
37
+ * @param content - Raw markdown content
38
+ * @returns Object with frontmatter record, body string, and hasFrontmatter flag
39
+ */
40
+ function parseRaw(content) {
41
+ const match = content.match(FRONTMATTER_REGEX);
42
+ if (!match || !match[1] || match[2] === undefined) {
43
+ return {
44
+ frontmatter: {},
45
+ body: content,
46
+ hasFrontmatter: false,
47
+ };
48
+ }
49
+ const frontmatterYaml = match[1];
50
+ const body = match[2];
51
+ // Parse YAML frontmatter
52
+ const frontmatter = {};
53
+ const lines = frontmatterYaml.split("\n");
54
+ for (const line of lines) {
55
+ const kvMatch = line.match(YAML_KEY_VALUE_REGEX);
56
+ if (kvMatch && kvMatch[1] && kvMatch[2] !== undefined) {
57
+ const key = kvMatch[1];
58
+ let value = kvMatch[2].trim();
59
+ // Handle quoted strings
60
+ if (typeof value === "string" && value.startsWith('"') && value.endsWith('"')) {
61
+ value = value.slice(1, -1);
62
+ }
63
+ else if (typeof value === "string" && value.startsWith("'") && value.endsWith("'")) {
64
+ value = value.slice(1, -1);
65
+ }
66
+ else if (value === "true") {
67
+ value = true;
68
+ }
69
+ else if (value === "false") {
70
+ value = false;
71
+ }
72
+ else if (typeof value === "string" && value !== "" && !isNaN(Number(value))) {
73
+ value = Number(value);
74
+ }
75
+ frontmatter[key] = value;
76
+ }
77
+ }
78
+ return {
79
+ frontmatter,
80
+ body,
81
+ hasFrontmatter: true,
82
+ };
83
+ }
84
+ /**
85
+ * Parse and validate command frontmatter from markdown content.
86
+ *
87
+ * Validates that the content has:
88
+ * - YAML frontmatter block (required)
89
+ * - `description` field in frontmatter (required)
90
+ * - Non-empty body content (required)
91
+ *
92
+ * @param content - Raw markdown content with frontmatter
93
+ * @returns Validated CommandFrontmatter
94
+ * @throws CommandParseError if validation fails
95
+ */
96
+ export function parseCommandFrontmatter(content) {
97
+ const { frontmatter, body, hasFrontmatter } = parseRaw(content);
98
+ // Validate frontmatter exists
99
+ if (!hasFrontmatter) {
100
+ throw new CommandParseError("command missing YAML frontmatter; expected ---\\n...\\n--- at start of file");
101
+ }
102
+ // Validate description exists and is non-empty
103
+ const description = frontmatter["description"];
104
+ if (description === undefined || description === null) {
105
+ throw new CommandParseError("command missing required 'description' field in frontmatter");
106
+ }
107
+ if (typeof description !== "string") {
108
+ throw new CommandParseError(`command 'description' must be a string; got ${typeof description}`);
109
+ }
110
+ if (description.trim() === "") {
111
+ throw new CommandParseError("command 'description' field cannot be empty");
112
+ }
113
+ // Validate body exists and is non-empty
114
+ if (body.trim() === "") {
115
+ throw new CommandParseError("command body cannot be empty; content after frontmatter is required");
116
+ }
117
+ // Extract argumentHint (camelCase in YAML)
118
+ const argumentHint = frontmatter["argumentHint"];
119
+ const result = {
120
+ description: description.trim(),
121
+ };
122
+ if (argumentHint !== undefined && argumentHint !== null) {
123
+ if (typeof argumentHint !== "string") {
124
+ throw new CommandParseError(`command 'argumentHint' must be a string; got ${typeof argumentHint}`);
125
+ }
126
+ result.argumentHint = argumentHint.trim();
127
+ }
128
+ return result;
129
+ }
130
+ /**
131
+ * Extract the body content from a command markdown file.
132
+ *
133
+ * Returns the content after the YAML frontmatter block.
134
+ * If no frontmatter is present, returns the entire content.
135
+ *
136
+ * @param content - Raw markdown content
137
+ * @returns Body content (trimmed)
138
+ */
139
+ export function extractCommandBody(content) {
140
+ const { body } = parseRaw(content);
141
+ return body.trim();
142
+ }
143
+ /**
144
+ * Strip a specific field from the YAML frontmatter.
145
+ *
146
+ * Returns the original content with the specified field removed from frontmatter.
147
+ * If the field doesn't exist or there's no frontmatter, returns content unchanged.
148
+ *
149
+ * @param content - Raw markdown content with frontmatter
150
+ * @param field - Field name to strip (e.g., "argumentHint")
151
+ * @returns Content with field removed from frontmatter
152
+ */
153
+ export function stripFrontmatterField(content, field) {
154
+ const match = content.match(FRONTMATTER_REGEX);
155
+ if (!match || !match[1] || match[2] === undefined) {
156
+ // No frontmatter, return unchanged
157
+ return content;
158
+ }
159
+ const frontmatterYaml = match[1];
160
+ const body = match[2];
161
+ // Filter out lines that match the field
162
+ const lines = frontmatterYaml.split("\n");
163
+ const filteredLines = lines.filter((line) => {
164
+ const kvMatch = line.match(YAML_KEY_VALUE_REGEX);
165
+ if (kvMatch && kvMatch[1]) {
166
+ return kvMatch[1] !== field;
167
+ }
168
+ return true;
169
+ });
170
+ // If no lines changed, return original
171
+ if (filteredLines.length === lines.length) {
172
+ return content;
173
+ }
174
+ // Reconstruct the content
175
+ const newFrontmatter = filteredLines.join("\n");
176
+ return `---\n${newFrontmatter}\n---\n${body}`;
177
+ }
178
+ /**
179
+ * Rename a frontmatter field within the YAML block.
180
+ *
181
+ * Returns content unchanged if the field is not present or no frontmatter exists.
182
+ */
183
+ export function renameFrontmatterField(content, from, to) {
184
+ const match = content.match(FRONTMATTER_REGEX);
185
+ if (!match || !match[1] || match[2] === undefined) {
186
+ return content;
187
+ }
188
+ const frontmatterYaml = match[1];
189
+ const body = match[2];
190
+ let changed = false;
191
+ const lines = frontmatterYaml.split("\n");
192
+ const renamedLines = lines.map((line) => {
193
+ const kvMatch = line.match(YAML_KEY_VALUE_REGEX);
194
+ if (kvMatch && kvMatch[1] && kvMatch[2] !== undefined) {
195
+ if (kvMatch[1] === from) {
196
+ changed = true;
197
+ return `${to}: ${kvMatch[2]}`;
198
+ }
199
+ }
200
+ return line;
201
+ });
202
+ if (!changed) {
203
+ return content;
204
+ }
205
+ const newFrontmatter = renamedLines.join("\n");
206
+ return `---\n${newFrontmatter}\n---\n${body}`;
207
+ }
208
+ /**
209
+ * Validate command content without parsing.
210
+ *
211
+ * Checks that the content meets all canonical format requirements.
212
+ *
213
+ * @param content - Raw markdown content
214
+ * @returns true if valid
215
+ * @throws CommandParseError if validation fails
216
+ */
217
+ export function validateCommandContent(content) {
218
+ // parseCommandFrontmatter performs all validation
219
+ parseCommandFrontmatter(content);
220
+ return true;
221
+ }
222
+ //# sourceMappingURL=command-parser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"command-parser.js","sourceRoot":"","sources":["../../src/adapters/command-parser.ts"],"names":[],"mappings":"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"}