@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,344 @@
1
+ /**
2
+ * Codex adapter implementation.
3
+ *
4
+ * Codex is an AI coding assistant with support for:
5
+ * - Commands: ~/.codex/prompts/{kit}.{name}.md
6
+ * - Skills: ~/.codex/skills/{kit}.{name}/
7
+ * - MCP Servers: ~/.codex/mcp.json
8
+ *
9
+ * Codex does NOT support:
10
+ * - Subagents
11
+ * - Hooks
12
+ */
13
+ import { BaseAdapter } from "../base-adapter.js";
14
+ import { expandPath, pathExists, readFile } from "../file-operations.js";
15
+ import { filterFrontmatterAllowlist, toKebabCaseSkillFrontmatter } from "../skill-frontmatter.js";
16
+ import { renameFrontmatterField } from "../command-parser.js";
17
+ import { detectCodex, getCodexInstallationPaths, CODEX_PATHS } from "./detection.js";
18
+ import { codexToolMapping } from "./tool-mapping.js";
19
+ import { codexModelMapping } from "./model-mapping.js";
20
+ import { transformMcpServerConfig, transformEnvVars as installerTransformEnvVars, transformHeaders as installerTransformHeaders, readMcpConfig, writeMcpConfig, } from "./installer.js";
21
+ /**
22
+ * Project-scope paths for Codex.
23
+ *
24
+ * Note: Codex only supports skills at project scope.
25
+ * Commands and MCP are global-only.
26
+ */
27
+ export const CODEX_PROJECT_PATHS = {
28
+ configToml: ".codex/config.toml",
29
+ skills: ".codex/skills/",
30
+ };
31
+ /**
32
+ * Codex adapter.
33
+ *
34
+ * Provides support for commands, skills, and MCP servers.
35
+ * Does not support subagents or hooks.
36
+ *
37
+ * IMPORTANT: At project scope, Codex only supports skills.
38
+ * Commands and MCP servers are global-only.
39
+ */
40
+ export class CodexAdapter extends BaseAdapter {
41
+ name = "codex";
42
+ displayName = "Codex";
43
+ version = "1.0.0";
44
+ supportedHarnessVersions = ">=1.0.0";
45
+ /**
46
+ * Get supported installation scopes.
47
+ *
48
+ * Codex supports both global and project scopes,
49
+ * but with different primitive support at each scope.
50
+ */
51
+ getSupportedScopes() {
52
+ return ["global", "project"];
53
+ }
54
+ /**
55
+ * Get supported primitive types at the given scope.
56
+ *
57
+ * Codex supports:
58
+ * - Global: commands, skills, mcp
59
+ * - Project: skills only (commands and mcp are global-only)
60
+ *
61
+ * @param scope - Installation scope (defaults to "global")
62
+ */
63
+ getSupportedPrimitives(scope) {
64
+ if (scope === "project") {
65
+ // Codex only supports skills at project scope
66
+ return ["skills"];
67
+ }
68
+ return ["commands", "skills", "mcp"];
69
+ }
70
+ /**
71
+ * Get installation paths for file-based primitives.
72
+ *
73
+ * @param scope - Installation scope (defaults to "global")
74
+ */
75
+ getInstallationPaths(scope) {
76
+ if (scope === "project") {
77
+ return {
78
+ commands: "", // Not supported at project scope
79
+ skills: CODEX_PROJECT_PATHS.skills,
80
+ // Codex does not support subagents or hooks
81
+ };
82
+ }
83
+ return getCodexInstallationPaths();
84
+ }
85
+ /**
86
+ * Get configuration file locations.
87
+ *
88
+ * @param scope - Installation scope (defaults to "global")
89
+ */
90
+ getConfigLocations(scope) {
91
+ if (scope === "project") {
92
+ return {
93
+ primary: CODEX_PROJECT_PATHS.configToml,
94
+ // No MCP at project scope
95
+ format: "toml",
96
+ };
97
+ }
98
+ return {
99
+ primary: CODEX_PATHS.configToml,
100
+ mcp: CODEX_PATHS.mcp,
101
+ format: "toml",
102
+ };
103
+ }
104
+ /**
105
+ * Get the tool mapping for Codex.
106
+ */
107
+ getToolMapping() {
108
+ return codexToolMapping;
109
+ }
110
+ /**
111
+ * Get the model mapping for Codex.
112
+ */
113
+ getModelMapping() {
114
+ return codexModelMapping;
115
+ }
116
+ /**
117
+ * Detect Codex installation.
118
+ */
119
+ async detect() {
120
+ return detectCodex();
121
+ }
122
+ /**
123
+ * Transform a command for Codex.
124
+ *
125
+ * Codex uses native Markdown format, so no transformation is needed.
126
+ * Tool templates are processed separately by the base adapter.
127
+ */
128
+ transformCommand(content, _metadata) {
129
+ const transformedContent = renameFrontmatterField(content, "argumentHint", "argument-hint");
130
+ return {
131
+ content: transformedContent,
132
+ format: "markdown",
133
+ };
134
+ }
135
+ /**
136
+ * Transform a skill for Codex.
137
+ *
138
+ * Codex uses native Markdown format for skills.
139
+ */
140
+ transformSkill(_skillDir, _metadata) {
141
+ // Skills are directories, content is the SKILL.md file path
142
+ return {
143
+ content: "",
144
+ format: "markdown",
145
+ };
146
+ }
147
+ /**
148
+ * Codex skills only recognize a minimal set of frontmatter fields.
149
+ */
150
+ filterSkillFrontmatter(frontmatter) {
151
+ const normalized = toKebabCaseSkillFrontmatter(frontmatter);
152
+ return filterFrontmatterAllowlist(normalized, new Set(["name", "description", "allowed-tools", "metadata"]));
153
+ }
154
+ /**
155
+ * Transform a subagent for Codex.
156
+ *
157
+ * Codex does not support subagents. This method throws an error.
158
+ */
159
+ transformSubagent(_content, _metadata) {
160
+ throw new Error("codex does not support subagents");
161
+ }
162
+ /**
163
+ * Transform an MCP server configuration for Codex.
164
+ */
165
+ transformMcpServer(config) {
166
+ return transformMcpServerConfig(config);
167
+ }
168
+ /**
169
+ * Transform a hook for Codex.
170
+ *
171
+ * Codex does not support hooks. This method throws an error.
172
+ */
173
+ transformHook(_hook) {
174
+ throw new Error("codex does not support hooks");
175
+ }
176
+ /**
177
+ * Transform resolved environment variables to Codex format.
178
+ *
179
+ * Codex uses two distinct mechanisms:
180
+ * - env_vars array for passthrough
181
+ * - env table for direct values
182
+ *
183
+ * See PRD-001 FR-20.4.
184
+ */
185
+ transformEnvVars(resolved) {
186
+ return installerTransformEnvVars(resolved);
187
+ }
188
+ /**
189
+ * Transform resolved headers to Codex format.
190
+ *
191
+ * Codex uses specialized fields:
192
+ * - bearer_token_env_var for Authorization headers
193
+ * - env_http_headers for other env var headers
194
+ * - http_headers for static values
195
+ *
196
+ * See PRD-001 FR-21.3.
197
+ */
198
+ transformHeaders(resolved) {
199
+ return installerTransformHeaders(resolved);
200
+ }
201
+ /**
202
+ * Update harness configuration for MCP servers.
203
+ *
204
+ * Codex only needs MCP configuration updates (no hooks support).
205
+ * MCP is only supported at global scope.
206
+ *
207
+ * @param kit - Kit manifest
208
+ * @param resolvedPrimitives - Resolved primitives to install
209
+ * @param dryRun - If true, don't actually write files
210
+ * @param completedOps - Array to track completed operations for rollback
211
+ * @param scope - Installation scope
212
+ * @param projectRoot - Project root for project scope
213
+ */
214
+ async updateConfiguration(kit, resolvedPrimitives, dryRun, completedOps, scope = "global", _projectRoot, envResolutions) {
215
+ const operations = [];
216
+ // MCP is only supported at global scope for Codex
217
+ if (scope === "project") {
218
+ return { operations };
219
+ }
220
+ // Filter MCP primitives
221
+ const mcpPrimitives = resolvedPrimitives.filter((p) => p.type === "mcp");
222
+ // Handle MCP servers (global scope only)
223
+ if (mcpPrimitives.length > 0 && !dryRun) {
224
+ const mcpResult = await this.installMcpServers(kit.name, mcpPrimitives, completedOps, envResolutions);
225
+ operations.push(...mcpResult);
226
+ }
227
+ return { operations };
228
+ }
229
+ /**
230
+ * Install MCP servers to configuration.
231
+ */
232
+ async installMcpServers(_kitName, primitives, completedOps, envResolutions) {
233
+ const operations = [];
234
+ const mcpConfigPath = expandPath(CODEX_PATHS.mcp);
235
+ // Read existing config and back it up
236
+ const existingConfig = await readMcpConfig();
237
+ const configExisted = pathExists(mcpConfigPath);
238
+ // Prepare updated config
239
+ const updatedConfig = { ...existingConfig };
240
+ if (!updatedConfig.servers) {
241
+ updatedConfig.servers = {};
242
+ }
243
+ for (const primitive of primitives) {
244
+ try {
245
+ // Read MCP config from source file
246
+ const content = await readFile(primitive.sourcePath);
247
+ const mcpConfig = JSON.parse(content);
248
+ const instanceName = primitive.instanceName ?? mcpConfig.name;
249
+ if (!instanceName) {
250
+ throw new Error(`MCP config missing name; path=${primitive.sourcePath}`);
251
+ }
252
+ // Transform and add to config
253
+ const transformedConfig = transformMcpServerConfig(mcpConfig);
254
+ // Apply resolved env vars if available (Codex uses env_vars array and env table)
255
+ const resolution = envResolutions?.find((r) => r.mcpServer === instanceName);
256
+ if (resolution && resolution.resolved.length > 0) {
257
+ const transformedEnv = installerTransformEnvVars(resolution.resolved);
258
+ // Codex format: env_vars for passthrough, env for direct values
259
+ if (transformedEnv.env_vars && transformedEnv.env_vars.length > 0) {
260
+ transformedConfig.env_vars = transformedEnv.env_vars;
261
+ }
262
+ if (transformedEnv.env && Object.keys(transformedEnv.env).length > 0) {
263
+ transformedConfig.env = transformedEnv.env;
264
+ }
265
+ }
266
+ // Apply resolved headers if available (for HTTP transport)
267
+ if (resolution && resolution.resolvedHeaders && resolution.resolvedHeaders.length > 0) {
268
+ const transformedHeaders = installerTransformHeaders(resolution.resolvedHeaders);
269
+ if (transformedConfig.url) {
270
+ if (transformedHeaders.bearer_token_env_var) {
271
+ transformedConfig.bearer_token_env_var = transformedHeaders.bearer_token_env_var;
272
+ }
273
+ if (transformedHeaders.env_http_headers && Object.keys(transformedHeaders.env_http_headers).length > 0) {
274
+ transformedConfig.env_http_headers = transformedHeaders.env_http_headers;
275
+ }
276
+ if (transformedHeaders.http_headers && Object.keys(transformedHeaders.http_headers).length > 0) {
277
+ transformedConfig.http_headers = transformedHeaders.http_headers;
278
+ }
279
+ }
280
+ }
281
+ updatedConfig.servers[instanceName] = transformedConfig;
282
+ operations.push({
283
+ operation: "merge",
284
+ source: primitive.sourcePath,
285
+ destination: mcpConfigPath,
286
+ success: true,
287
+ });
288
+ }
289
+ catch (error) {
290
+ operations.push({
291
+ operation: "merge",
292
+ source: primitive.sourcePath,
293
+ destination: mcpConfigPath,
294
+ success: false,
295
+ error: error instanceof Error ? error.message : String(error),
296
+ });
297
+ }
298
+ }
299
+ // Write updated config
300
+ await writeMcpConfig(updatedConfig);
301
+ const mcpCompletedOp = {
302
+ type: "file",
303
+ path: mcpConfigPath,
304
+ createdNew: !configExisted,
305
+ };
306
+ if (configExisted) {
307
+ mcpCompletedOp.previousContent = JSON.stringify(existingConfig, null, 2);
308
+ }
309
+ completedOps.push(mcpCompletedOp);
310
+ return operations;
311
+ }
312
+ async removeMcpServers(instanceNames, scope = "global") {
313
+ if (scope === "project" || instanceNames.length === 0) {
314
+ return [];
315
+ }
316
+ const mcpConfig = await readMcpConfig();
317
+ if (!mcpConfig.servers) {
318
+ return [];
319
+ }
320
+ const removed = [];
321
+ for (const name of instanceNames) {
322
+ if (mcpConfig.servers[name]) {
323
+ delete mcpConfig.servers[name];
324
+ removed.push(name);
325
+ }
326
+ }
327
+ if (removed.length > 0) {
328
+ await writeMcpConfig(mcpConfig);
329
+ }
330
+ return removed;
331
+ }
332
+ }
333
+ /**
334
+ * Create a Codex adapter instance.
335
+ */
336
+ export function createCodexAdapter() {
337
+ return new CodexAdapter();
338
+ }
339
+ // Re-export types and utilities
340
+ export { detectCodex, CODEX_PATHS } from "./detection.js";
341
+ export { codexToolMapping } from "./tool-mapping.js";
342
+ export { codexModelMapping } from "./model-mapping.js";
343
+ export * from "./installer.js";
344
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/adapters/codex/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAeH,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACzE,OAAO,EAAE,0BAA0B,EAAE,2BAA2B,EAAE,MAAM,yBAAyB,CAAC;AAClG,OAAO,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAE9D,OAAO,EAAE,WAAW,EAAE,yBAAyB,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AACrF,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,EACL,wBAAwB,EACxB,gBAAgB,IAAI,yBAAyB,EAC7C,gBAAgB,IAAI,yBAAyB,EAC7C,aAAa,EACb,cAAc,GACf,MAAM,gBAAgB,CAAC;AAExB;;;;;GAKG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG;IACjC,UAAU,EAAE,oBAAoB;IAChC,MAAM,EAAE,gBAAgB;CAChB,CAAC;AAEX;;;;;;;;GAQG;AACH,MAAM,OAAO,YAAa,SAAQ,WAAW;IAClC,IAAI,GAAG,OAAO,CAAC;IACf,WAAW,GAAG,OAAO,CAAC;IACtB,OAAO,GAAG,OAAO,CAAC;IAClB,wBAAwB,GAAG,SAAS,CAAC;IAE9C;;;;;OAKG;IACH,kBAAkB;QAChB,OAAO,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;IAC/B,CAAC;IAED;;;;;;;;OAQG;IACH,sBAAsB,CAAC,KAAyB;QAC9C,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACxB,8CAA8C;YAC9C,OAAO,CAAC,QAAQ,CAAC,CAAC;QACpB,CAAC;QACD,OAAO,CAAC,UAAU,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;IACvC,CAAC;IAED;;;;OAIG;IACH,oBAAoB,CAAC,KAAyB;QAC5C,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACxB,OAAO;gBACL,QAAQ,EAAE,EAAE,EAAE,iCAAiC;gBAC/C,MAAM,EAAE,mBAAmB,CAAC,MAAM;gBAClC,4CAA4C;aAC7C,CAAC;QACJ,CAAC;QACD,OAAO,yBAAyB,EAAE,CAAC;IACrC,CAAC;IAED;;;;OAIG;IACH,kBAAkB,CAAC,KAAyB;QAC1C,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACxB,OAAO;gBACL,OAAO,EAAE,mBAAmB,CAAC,UAAU;gBACvC,0BAA0B;gBAC1B,MAAM,EAAE,MAAM;aACf,CAAC;QACJ,CAAC;QACD,OAAO;YACL,OAAO,EAAE,WAAW,CAAC,UAAU;YAC/B,GAAG,EAAE,WAAW,CAAC,GAAG;YACpB,MAAM,EAAE,MAAM;SACf,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,cAAc;QACZ,OAAO,gBAAgB,CAAC;IAC1B,CAAC;IAED;;OAEG;IACH,eAAe;QACb,OAAO,iBAAiB,CAAC;IAC3B,CAAC;IACD;;OAEG;IACH,KAAK,CAAC,MAAM;QACV,OAAO,WAAW,EAAE,CAAC;IACvB,CAAC;IAED;;;;;OAKG;IACH,gBAAgB,CAAC,OAAe,EAAE,SAA0B;QAC1D,MAAM,kBAAkB,GAAG,sBAAsB,CAC/C,OAAO,EACP,cAAc,EACd,eAAe,CAChB,CAAC;QACF,OAAO;YACL,OAAO,EAAE,kBAAkB;YAC3B,MAAM,EAAE,UAAU;SACnB,CAAC;IACJ,CAAC;IAED;;;;OAIG;IACH,cAAc,CAAC,SAAiB,EAAE,SAAwB;QACxD,4DAA4D;QAC5D,OAAO;YACL,OAAO,EAAE,EAAE;YACX,MAAM,EAAE,UAAU;SACnB,CAAC;IACJ,CAAC;IAED;;OAEG;IACgB,sBAAsB,CACvC,WAAoC;QAEpC,MAAM,UAAU,GAAG,2BAA2B,CAAC,WAAW,CAAC,CAAC;QAC5D,OAAO,0BAA0B,CAC/B,UAAU,EACV,IAAI,GAAG,CAAC,CAAC,MAAM,EAAE,aAAa,EAAE,eAAe,EAAE,UAAU,CAAC,CAAC,CAC9D,CAAC;IACJ,CAAC;IAED;;;;OAIG;IACH,iBAAiB,CAAC,QAAgB,EAAE,SAA2B;QAC7D,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;IACtD,CAAC;IAED;;OAEG;IACH,kBAAkB,CAAC,MAAuB;QACxC,OAAO,wBAAwB,CAAC,MAAM,CAAuC,CAAC;IAChF,CAAC;IAED;;;;OAIG;IACH,aAAa,CAAC,KAA4B;QACxC,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;IAClD,CAAC;IAED;;;;;;;;OAQG;IACH,gBAAgB,CAAC,QAA0B;QACzC,OAAO,yBAAyB,CAAC,QAAQ,CAAC,CAAC;IAC7C,CAAC;IAED;;;;;;;;;OASG;IACH,gBAAgB,CAAC,QAA0B;QACzC,OAAO,yBAAyB,CAAC,QAAQ,CAAC,CAAC;IAC7C,CAAC;IAED;;;;;;;;;;;;OAYG;IACgB,KAAK,CAAC,mBAAmB,CAC1C,GAAgB,EAChB,kBAAuC,EACvC,MAAe,EACf,YAAkC,EAClC,QAA2B,QAAQ,EACnC,YAAqB,EACrB,cAAyC;QAEzC,MAAM,UAAU,GAA0B,EAAE,CAAC;QAE7C,kDAAkD;QAClD,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACxB,OAAO,EAAE,UAAU,EAAE,CAAC;QACxB,CAAC;QAED,wBAAwB;QACxB,MAAM,aAAa,GAAG,kBAAkB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,KAAK,CAAC,CAAC;QAEzE,yCAAyC;QACzC,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YACxC,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAC5C,GAAG,CAAC,IAAI,EACR,aAAa,EACb,YAAY,EACZ,cAAc,CACf,CAAC;YACF,UAAU,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,CAAC;QAChC,CAAC;QAED,OAAO,EAAE,UAAU,EAAE,CAAC;IACxB,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,iBAAiB,CAC7B,QAAgB,EAChB,UAA+B,EAC/B,YAAkC,EAClC,cAAyC;QAEzC,MAAM,UAAU,GAA0B,EAAE,CAAC;QAC7C,MAAM,aAAa,GAAG,UAAU,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;QAElD,sCAAsC;QACtC,MAAM,cAAc,GAAG,MAAM,aAAa,EAAE,CAAC;QAC7C,MAAM,aAAa,GAAG,UAAU,CAAC,aAAa,CAAC,CAAC;QAEhD,yBAAyB;QACzB,MAAM,aAAa,GAAG,EAAE,GAAG,cAAc,EAAE,CAAC;QAC5C,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,CAAC;YAC3B,aAAa,CAAC,OAAO,GAAG,EAAE,CAAC;QAC7B,CAAC;QAED,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;YACnC,IAAI,CAAC;gBACH,mCAAmC;gBACnC,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;gBACrD,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAoB,CAAC;gBACzD,MAAM,YAAY,GAAG,SAAS,CAAC,YAAY,IAAI,SAAS,CAAC,IAAI,CAAC;gBAC9D,IAAI,CAAC,YAAY,EAAE,CAAC;oBAClB,MAAM,IAAI,KAAK,CAAC,iCAAiC,SAAS,CAAC,UAAU,EAAE,CAAC,CAAC;gBAC3E,CAAC;gBAED,8BAA8B;gBAC9B,MAAM,iBAAiB,GAAG,wBAAwB,CAAC,SAAS,CAAC,CAAC;gBAE9D,iFAAiF;gBACjF,MAAM,UAAU,GAAG,cAAc,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,KAAK,YAAY,CAAC,CAAC;gBAC7E,IAAI,UAAU,IAAI,UAAU,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBACjD,MAAM,cAAc,GAAG,yBAAyB,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;oBACtE,gEAAgE;oBAChE,IAAI,cAAc,CAAC,QAAQ,IAAI,cAAc,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;wBAClE,iBAAiB,CAAC,QAAQ,GAAG,cAAc,CAAC,QAAQ,CAAC;oBACvD,CAAC;oBACD,IAAI,cAAc,CAAC,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;wBACrE,iBAAiB,CAAC,GAAG,GAAG,cAAc,CAAC,GAAG,CAAC;oBAC7C,CAAC;gBACH,CAAC;gBAED,2DAA2D;gBAC3D,IAAI,UAAU,IAAI,UAAU,CAAC,eAAe,IAAI,UAAU,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBACtF,MAAM,kBAAkB,GAAG,yBAAyB,CAAC,UAAU,CAAC,eAAe,CAAC,CAAC;oBACjF,IAAI,iBAAiB,CAAC,GAAG,EAAE,CAAC;wBAC1B,IAAI,kBAAkB,CAAC,oBAAoB,EAAE,CAAC;4BAC5C,iBAAiB,CAAC,oBAAoB,GAAG,kBAAkB,CAAC,oBAAoB,CAAC;wBACnF,CAAC;wBACD,IAAI,kBAAkB,CAAC,gBAAgB,IAAI,MAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC,gBAAgB,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;4BACvG,iBAAiB,CAAC,gBAAgB,GAAG,kBAAkB,CAAC,gBAAgB,CAAC;wBAC3E,CAAC;wBACD,IAAI,kBAAkB,CAAC,YAAY,IAAI,MAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC,YAAY,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;4BAC/F,iBAAiB,CAAC,YAAY,GAAG,kBAAkB,CAAC,YAAY,CAAC;wBACnE,CAAC;oBACH,CAAC;gBACH,CAAC;gBAED,aAAa,CAAC,OAAO,CAAC,YAAY,CAAC,GAAG,iBAAiB,CAAC;gBAExD,UAAU,CAAC,IAAI,CAAC;oBACd,SAAS,EAAE,OAAO;oBAClB,MAAM,EAAE,SAAS,CAAC,UAAU;oBAC5B,WAAW,EAAE,aAAa;oBAC1B,OAAO,EAAE,IAAI;iBACd,CAAC,CAAC;YACL,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,UAAU,CAAC,IAAI,CAAC;oBACd,SAAS,EAAE,OAAO;oBAClB,MAAM,EAAE,SAAS,CAAC,UAAU;oBAC5B,WAAW,EAAE,aAAa;oBAC1B,OAAO,EAAE,KAAK;oBACd,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;iBAC9D,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAED,uBAAuB;QACvB,MAAM,cAAc,CAAC,aAAa,CAAC,CAAC;QACpC,MAAM,cAAc,GAAuB;YACzC,IAAI,EAAE,MAAM;YACZ,IAAI,EAAE,aAAa;YACnB,UAAU,EAAE,CAAC,aAAa;SAC3B,CAAC;QACF,IAAI,aAAa,EAAE,CAAC;YAClB,cAAc,CAAC,eAAe,GAAG,IAAI,CAAC,SAAS,CAAC,cAAc,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;QAC3E,CAAC;QACD,YAAY,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QAElC,OAAO,UAAU,CAAC;IACpB,CAAC;IAED,KAAK,CAAC,gBAAgB,CACpB,aAAuB,EACvB,QAA2B,QAAQ;QAEnC,IAAI,KAAK,KAAK,SAAS,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACtD,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,MAAM,SAAS,GAAG,MAAM,aAAa,EAAE,CAAC;QACxC,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC;YACvB,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,MAAM,OAAO,GAAa,EAAE,CAAC;QAC7B,KAAK,MAAM,IAAI,IAAI,aAAa,EAAE,CAAC;YACjC,IAAI,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC5B,OAAO,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;gBAC/B,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACrB,CAAC;QACH,CAAC;QAED,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACvB,MAAM,cAAc,CAAC,SAAS,CAAC,CAAC;QAClC,CAAC;QAED,OAAO,OAAO,CAAC;IACjB,CAAC;CACF;AAED;;GAEG;AACH,MAAM,UAAU,kBAAkB;IAChC,OAAO,IAAI,YAAY,EAAE,CAAC;AAC5B,CAAC;AAED,gCAAgC;AAChC,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACvD,cAAc,gBAAgB,CAAC"}
@@ -0,0 +1,147 @@
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 type { McpServerConfig, ResolvedEnvVar, ResolvedHeader } from "../../core/types.js";
11
+ import type { FileOperationResult } from "../types.js";
12
+ /**
13
+ * Codex MCP configuration structure.
14
+ */
15
+ export interface CodexMcpConfig {
16
+ servers?: Record<string, CodexMcpServerEntry>;
17
+ }
18
+ /**
19
+ * MCP server entry in Codex config.
20
+ *
21
+ * Codex uses a slightly different format than Claude Code,
22
+ * storing config as TOML-style objects.
23
+ */
24
+ export interface CodexMcpServerEntry {
25
+ command?: string;
26
+ args?: string[];
27
+ env?: Record<string, string>;
28
+ env_vars?: string[];
29
+ url?: string;
30
+ bearer_token_env_var?: string;
31
+ env_http_headers?: Record<string, string>;
32
+ http_headers?: Record<string, string>;
33
+ }
34
+ /**
35
+ * Read the MCP configuration file.
36
+ */
37
+ export declare function readMcpConfig(): Promise<CodexMcpConfig>;
38
+ /**
39
+ * Write the MCP configuration file.
40
+ */
41
+ export declare function writeMcpConfig(config: CodexMcpConfig): Promise<void>;
42
+ /**
43
+ * Process environment variable values.
44
+ *
45
+ * Codex uses ${VAR} syntax for environment variable references.
46
+ */
47
+ export declare function processEnvValue(value: string): string;
48
+ /**
49
+ * Transform an MCP server configuration for Codex.
50
+ *
51
+ * Codex MCP configuration format:
52
+ * ```json
53
+ * {
54
+ * "servers": {
55
+ * "server-name": {
56
+ * "command": "executable",
57
+ * "args": ["arg1", "arg2"],
58
+ * "env": {
59
+ * "VAR": "${VAR}"
60
+ * }
61
+ * }
62
+ * }
63
+ * }
64
+ * ```
65
+ *
66
+ * Note: Full environment variable transformation with sensitivity handling
67
+ * (env_vars array vs env table) is implemented in transformEnvVars (Phase 7).
68
+ * This function provides basic passthrough for all env vars using ${VAR} syntax.
69
+ */
70
+ export declare function transformMcpServerConfig(config: McpServerConfig): CodexMcpServerEntry;
71
+ /**
72
+ * Codex environment variable transformation result.
73
+ * Includes index signature for compatibility with EnvVarOutput base type.
74
+ */
75
+ export interface CodexEnvVarOutput {
76
+ env_vars: string[];
77
+ env: Record<string, string>;
78
+ [key: string]: unknown;
79
+ }
80
+ /**
81
+ * Codex header transformation result.
82
+ * Includes index signature for compatibility with HeaderOutput base type.
83
+ */
84
+ export interface CodexHeaderOutput {
85
+ bearer_token_env_var: string | undefined;
86
+ env_http_headers: Record<string, string>;
87
+ http_headers: Record<string, string>;
88
+ [key: string]: unknown;
89
+ }
90
+ /**
91
+ * Transform resolved environment variables to Codex format.
92
+ *
93
+ * Codex uses two distinct mechanisms:
94
+ * - `env_vars` array: Variables passed through from shell environment (passthrough)
95
+ * - `env` table: Variables with direct values
96
+ *
97
+ * Rules (per FR-20.4):
98
+ * - usePassthrough: true → Add to env_vars array
99
+ * - usePassthrough: false (has value) → Add to env table
100
+ */
101
+ export declare function transformEnvVars(resolved: ResolvedEnvVar[]): CodexEnvVarOutput;
102
+ /**
103
+ * Transform resolved headers to Codex format.
104
+ *
105
+ * Codex uses specialized fields for HTTP authentication:
106
+ * - `bearer_token_env_var`: Environment variable containing bearer token (for Authorization headers)
107
+ * - `env_http_headers`: Table of additional headers with env var references
108
+ * - `http_headers`: Table of static header values
109
+ *
110
+ * Bearer Token Detection:
111
+ * The adapter detects bearer token patterns in Authorization headers:
112
+ * 1. Header name is "Authorization" (case-insensitive)
113
+ * 2. Header is marked sensitive: true
114
+ * 3. Uses envVar for the token value
115
+ *
116
+ * Rules (per FR-21.3):
117
+ * - Authorization + sensitive + envVar → bearer_token_env_var = "VAR"
118
+ * - Other headers with envVar → env_http_headers.Header = "$VAR"
119
+ * - Headers with static value → http_headers.Header = "value"
120
+ */
121
+ export declare function transformHeaders(resolved: ResolvedHeader[]): CodexHeaderOutput;
122
+ /**
123
+ * Add an MCP server to the configuration.
124
+ *
125
+ * @param namespacedName - The namespaced server name (e.g., "kit.server")
126
+ * @param config - The MCP server configuration
127
+ */
128
+ export declare function addMcpServer(namespacedName: string, config: McpServerConfig): Promise<FileOperationResult>;
129
+ /**
130
+ * Remove an MCP server from the configuration.
131
+ *
132
+ * @param namespacedName - The namespaced server name to remove
133
+ */
134
+ export declare function removeMcpServer(namespacedName: string): Promise<boolean>;
135
+ /**
136
+ * Get all installed MCP servers for a specific kit.
137
+ *
138
+ * @param kitName - The kit name prefix to filter by
139
+ */
140
+ export declare function getKitMcpServers(kitName: string): Promise<string[]>;
141
+ /**
142
+ * Remove all MCP servers for a specific kit.
143
+ *
144
+ * @param kitName - The kit name prefix to remove
145
+ */
146
+ export declare function removeKitMcpServers(kitName: string): Promise<string[]>;
147
+ //# sourceMappingURL=installer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"installer.d.ts","sourceRoot":"","sources":["../../../src/adapters/codex/installer.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAC3F,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAUvD;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAC;CAC/C;AAED;;;;;GAKG;AACH,MAAM,WAAW,mBAAmB;IAClC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAE7B,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IAEpB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,gBAAgB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC1C,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACvC;AAED;;GAEG;AACH,wBAAsB,aAAa,IAAI,OAAO,CAAC,cAAc,CAAC,CAa7D;AAED;;GAEG;AACH,wBAAsB,cAAc,CAAC,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAK1E;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAErD;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,eAAe,GAAG,mBAAmB,CAwBrF;AAED;;;GAGG;AACH,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC5B,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED;;;GAGG;AACH,MAAM,WAAW,iBAAiB;IAChC,oBAAoB,EAAE,MAAM,GAAG,SAAS,CAAC;IACzC,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACzC,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACrC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,cAAc,EAAE,GAAG,iBAAiB,CAa9E;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,cAAc,EAAE,GAAG,iBAAiB,CAiB9E;AAED;;;;;GAKG;AACH,wBAAsB,YAAY,CAChC,cAAc,EAAE,MAAM,EACtB,MAAM,EAAE,eAAe,GACtB,OAAO,CAAC,mBAAmB,CAAC,CAyB9B;AAED;;;;GAIG;AACH,wBAAsB,eAAe,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAU9E;AAED;;;;GAIG;AACH,wBAAsB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAWzE;AAED;;;;GAIG;AACH,wBAAsB,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAqB5E"}