@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,643 @@
1
+ /**
2
+ * Claude Code adapter implementation.
3
+ *
4
+ * This is the reference implementation for the adapter framework, providing
5
+ * full support for all primitive types:
6
+ * - Commands: ~/.claude/commands/{kit}.{name}.md
7
+ * - Skills: ~/.claude/skills/{kit}.{name}/
8
+ * - Subagents: ~/.claude/agents/{kit}.{name}.md
9
+ * - MCP Servers: ~/.claude.json mcpServers key
10
+ * - Hooks: ~/.claude/settings.json + ~/.claude/hooks/{kit}.{name}/
11
+ */
12
+ import * as path from "node:path";
13
+ import { BaseAdapter } from "../base-adapter.js";
14
+ import { expandPath, pathExists, readFile, ensureDirectory, copyFile, remove } from "../file-operations.js";
15
+ import { detectClaudeCode, getClaudeCodeInstallationPaths, CLAUDE_CODE_PATHS } from "./detection.js";
16
+ import { claudeCodeToolMapping } from "./tool-mapping.js";
17
+ import { claudeCodeModelMapping } from "./model-mapping.js";
18
+ import { parseToolTemplate } from "../tool-templating.js";
19
+ import { parseReference } from "../../resolution/reference-parser.js";
20
+ import { renameFrontmatterField } from "../command-parser.js";
21
+ import { toKebabCaseSkillFrontmatter } from "../skill-frontmatter.js";
22
+ import { transformMcpServerConfig, transformHookConfig, mergeHookConfigs, transformEnvVars as installerTransformEnvVars, transformHeaders as installerTransformHeaders, readMcpConfig, writeMcpConfig, readSettingsConfig, writeSettingsConfig, } from "./installer.js";
23
+ /**
24
+ * Claude Code adapter.
25
+ *
26
+ * Provides full support for all primitive types with native Markdown format.
27
+ */
28
+ /**
29
+ * Project-scope paths for Claude Code.
30
+ */
31
+ export const CLAUDE_CODE_PROJECT_PATHS = {
32
+ settingsJson: ".claude/settings.json",
33
+ mcpJson: ".mcp.json",
34
+ commands: ".claude/commands/",
35
+ skills: ".claude/skills/",
36
+ agents: ".claude/agents/",
37
+ hooks: ".claude/hooks/",
38
+ };
39
+ export class ClaudeCodeAdapter extends BaseAdapter {
40
+ name = "claude-code";
41
+ displayName = "Claude Code";
42
+ version = "1.0.0";
43
+ supportedHarnessVersions = ">=1.0.0";
44
+ /**
45
+ * Get supported installation scopes.
46
+ *
47
+ * Claude Code supports both global and project scopes.
48
+ */
49
+ getSupportedScopes() {
50
+ return ["global", "project"];
51
+ }
52
+ /**
53
+ * Get supported primitive types.
54
+ *
55
+ * Claude Code supports all primitive types at both scopes.
56
+ *
57
+ * @param scope - Installation scope (defaults to "global")
58
+ */
59
+ getSupportedPrimitives(_scope) {
60
+ // Claude Code supports all primitives at both scopes
61
+ return ["commands", "skills", "subagents", "mcp", "hooks"];
62
+ }
63
+ /**
64
+ * Get installation paths for file-based primitives.
65
+ *
66
+ * @param scope - Installation scope (defaults to "global")
67
+ */
68
+ getInstallationPaths(scope) {
69
+ if (scope === "project") {
70
+ return {
71
+ commands: CLAUDE_CODE_PROJECT_PATHS.commands,
72
+ skills: CLAUDE_CODE_PROJECT_PATHS.skills,
73
+ subagents: CLAUDE_CODE_PROJECT_PATHS.agents,
74
+ hooks: CLAUDE_CODE_PROJECT_PATHS.hooks,
75
+ };
76
+ }
77
+ return getClaudeCodeInstallationPaths();
78
+ }
79
+ /**
80
+ * Get configuration file locations.
81
+ *
82
+ * @param scope - Installation scope (defaults to "global")
83
+ */
84
+ getConfigLocations(scope) {
85
+ if (scope === "project") {
86
+ return {
87
+ primary: CLAUDE_CODE_PROJECT_PATHS.settingsJson,
88
+ mcp: CLAUDE_CODE_PROJECT_PATHS.mcpJson,
89
+ format: "json",
90
+ };
91
+ }
92
+ return {
93
+ primary: CLAUDE_CODE_PATHS.settingsJson,
94
+ mcp: CLAUDE_CODE_PATHS.mcpJson,
95
+ format: "json",
96
+ };
97
+ }
98
+ /**
99
+ * Get the tool mapping for Claude Code.
100
+ */
101
+ getToolMapping() {
102
+ return claudeCodeToolMapping;
103
+ }
104
+ /**
105
+ * Get the model mapping for Claude Code.
106
+ */
107
+ getModelMapping() {
108
+ return claudeCodeModelMapping;
109
+ }
110
+ /**
111
+ * Map canonical subagent hook bindings to Claude Code frontmatter hooks.
112
+ */
113
+ mapSubagentHooks(frontmatter, resolvedPrimitives, kitName, paths, scope, projectRoot) {
114
+ return this.mapFrontmatterHooks(frontmatter, resolvedPrimitives, kitName, paths, scope, projectRoot, "subagent");
115
+ }
116
+ /**
117
+ * Map canonical skill hook bindings to Claude Code frontmatter hooks.
118
+ */
119
+ mapSkillHooks(frontmatter, resolvedPrimitives, kitName, paths, scope, projectRoot) {
120
+ return this.mapFrontmatterHooks(frontmatter, resolvedPrimitives, kitName, paths, scope, projectRoot, "skill");
121
+ }
122
+ mapFrontmatterHooks(frontmatter, resolvedPrimitives, kitName, paths, scope, projectRoot, label) {
123
+ const hooksValue = frontmatter["hooks"];
124
+ if (!Array.isArray(hooksValue) || hooksValue.length === 0) {
125
+ return frontmatter;
126
+ }
127
+ if (!paths.hooks) {
128
+ return frontmatter;
129
+ }
130
+ const allowedEvents = new Set([
131
+ "tool.before",
132
+ "tool.after",
133
+ "subagent.stop",
134
+ ]);
135
+ const resolvePath = (p) => {
136
+ if (scope === "project" && projectRoot) {
137
+ return path.join(projectRoot, p.replace(/^\.\//, ""));
138
+ }
139
+ return expandPath(p);
140
+ };
141
+ const hookPrimitives = resolvedPrimitives.filter((primitive) => primitive.type === "hooks");
142
+ const hooksDir = resolvePath(paths.hooks);
143
+ let mergedHooks = {};
144
+ for (const entry of hooksValue) {
145
+ if (!entry || typeof entry !== "object") {
146
+ throw new Error(`${label} hooks entries must be objects`);
147
+ }
148
+ const entryRecord = entry;
149
+ const refValue = entryRecord["ref"] ?? entryRecord["name"];
150
+ if (typeof refValue !== "string" || refValue.trim().length === 0) {
151
+ throw new Error(`${label} hooks entries must include a 'ref' string`);
152
+ }
153
+ const bindingValue = entryRecord["binding"];
154
+ if (!bindingValue || typeof bindingValue !== "object") {
155
+ throw new Error(`${label} hooks entries must include a 'binding' object`);
156
+ }
157
+ const bindingEvent = bindingValue.event;
158
+ if (!allowedEvents.has(bindingEvent)) {
159
+ throw new Error(`${label} hooks only support tool.before, tool.after, or subagent.stop; event=${bindingEvent}`);
160
+ }
161
+ const hookName = refValue.includes("@") ? parseReference(refValue).name : refValue;
162
+ const hookPrimitive = hookPrimitives.find((primitive) => primitive.name === hookName);
163
+ if (!hookPrimitive || !hookPrimitive.hookProgram || !hookPrimitive.hookEntryPath || !hookPrimitive.hookProgramDir) {
164
+ throw new Error(`${label} hook reference not found in resolved hooks: ${hookName}`);
165
+ }
166
+ const instanceName = hookPrimitive.instanceName ?? this.getNamespacedName(kitName, hookPrimitive.name);
167
+ const hookDir = path.join(hooksDir, instanceName);
168
+ const targetPath = path.join(hookDir, path.basename(hookPrimitive.hookEntryPath));
169
+ const binding = mapHookBindingToolTemplates(bindingValue, this.getToolMapping());
170
+ const hookInput = {
171
+ instanceName,
172
+ program: hookPrimitive.hookProgram,
173
+ binding,
174
+ programDir: hookPrimitive.hookProgramDir,
175
+ entryPath: hookPrimitive.hookEntryPath,
176
+ targetDir: hookDir,
177
+ targetPath,
178
+ scope,
179
+ ...(projectRoot ? { projectRoot } : {}),
180
+ };
181
+ const hookInstallation = transformHookConfig(hookInput);
182
+ if (hookInstallation.config) {
183
+ let config = hookInstallation.config;
184
+ if (binding.event === "subagent.stop") {
185
+ const { SubagentStop, ...rest } = config;
186
+ if (SubagentStop !== undefined) {
187
+ config = {
188
+ ...rest,
189
+ Stop: SubagentStop,
190
+ };
191
+ }
192
+ }
193
+ mergedHooks = mergeHookConfigs(mergedHooks, config);
194
+ }
195
+ }
196
+ return {
197
+ ...frontmatter,
198
+ hooks: mergedHooks,
199
+ };
200
+ }
201
+ /**
202
+ * Detect Claude Code installation.
203
+ */
204
+ async detect() {
205
+ return detectClaudeCode();
206
+ }
207
+ /**
208
+ * Transform a command for Claude Code.
209
+ *
210
+ * Claude Code uses native Markdown format, so no transformation is needed.
211
+ * Tool templates are processed separately by the base adapter.
212
+ */
213
+ transformCommand(content, _metadata) {
214
+ const transformedContent = renameFrontmatterField(content, "argumentHint", "argument-hint");
215
+ return {
216
+ content: transformedContent,
217
+ format: "markdown",
218
+ };
219
+ }
220
+ /**
221
+ * Transform a skill for Claude Code.
222
+ *
223
+ * Claude Code uses native Markdown format for skills.
224
+ */
225
+ transformSkill(_skillDir, _metadata) {
226
+ // Skills are directories, content is the SKILL.md file path
227
+ return {
228
+ content: "",
229
+ format: "markdown",
230
+ };
231
+ }
232
+ /**
233
+ * Claude Code skill frontmatter expects kebab-case keys.
234
+ */
235
+ filterSkillFrontmatter(frontmatter) {
236
+ return toKebabCaseSkillFrontmatter(frontmatter);
237
+ }
238
+ /**
239
+ * Transform a subagent for Claude Code.
240
+ *
241
+ * Claude Code uses native Markdown format for subagents.
242
+ */
243
+ transformSubagent(content, _metadata) {
244
+ return {
245
+ content,
246
+ format: "markdown",
247
+ };
248
+ }
249
+ /**
250
+ * Claude Code subagents use `tools` instead of `allowedTools`.
251
+ */
252
+ filterSubagentFrontmatter(frontmatter) {
253
+ if (!Object.prototype.hasOwnProperty.call(frontmatter, "allowedTools")) {
254
+ return frontmatter;
255
+ }
256
+ const { allowedTools, ...rest } = frontmatter;
257
+ return {
258
+ ...rest,
259
+ tools: allowedTools,
260
+ };
261
+ }
262
+ /**
263
+ * Transform an MCP server configuration for Claude Code.
264
+ */
265
+ transformMcpServer(config) {
266
+ return transformMcpServerConfig(config);
267
+ }
268
+ /**
269
+ * Transform a hook for Claude Code.
270
+ */
271
+ transformHook(hook) {
272
+ return transformHookConfig(hook);
273
+ }
274
+ /**
275
+ * Transform resolved environment variables to Claude Code format.
276
+ *
277
+ * Claude Code uses ${VAR} syntax for passthrough, direct values otherwise.
278
+ * See PRD-001 FR-20.3.
279
+ */
280
+ transformEnvVars(resolved) {
281
+ return installerTransformEnvVars(resolved);
282
+ }
283
+ /**
284
+ * Transform resolved headers to Claude Code format.
285
+ *
286
+ * Claude Code uses ${VAR} syntax for passthrough, direct values otherwise.
287
+ * See PRD-001 FR-21.2.
288
+ */
289
+ transformHeaders(resolved) {
290
+ return installerTransformHeaders(resolved);
291
+ }
292
+ /**
293
+ * Update harness configuration for MCP servers and hooks.
294
+ *
295
+ * @param kit - Kit manifest
296
+ * @param resolvedPrimitives - Resolved primitives to install
297
+ * @param dryRun - If true, don't actually write files
298
+ * @param completedOps - Array to track completed operations for rollback
299
+ * @param scope - Installation scope
300
+ * @param projectRoot - Project root for project scope
301
+ */
302
+ async updateConfiguration(kit, resolvedPrimitives, dryRun, completedOps, scope = "global", projectRoot, envResolutions) {
303
+ const operations = [];
304
+ // Filter MCP and hook primitives
305
+ const mcpPrimitives = resolvedPrimitives.filter((p) => p.type === "mcp");
306
+ const hookPrimitives = resolvedPrimitives.filter((p) => p.type === "hooks");
307
+ // Handle MCP servers
308
+ if (mcpPrimitives.length > 0 && !dryRun) {
309
+ const mcpResult = await this.installMcpServers(kit.name, mcpPrimitives, completedOps, scope, projectRoot, envResolutions);
310
+ operations.push(...mcpResult);
311
+ }
312
+ // Handle hooks
313
+ if (hookPrimitives.length > 0 && !dryRun) {
314
+ const hookResult = await this.installHooks(kit.name, hookPrimitives, completedOps, scope, projectRoot);
315
+ operations.push(...hookResult);
316
+ }
317
+ return { operations };
318
+ }
319
+ /**
320
+ * Install MCP servers to configuration.
321
+ *
322
+ * @param kitName - Name of the kit
323
+ * @param primitives - MCP primitives to install
324
+ * @param completedOps - Completed operations for rollback
325
+ * @param scope - Installation scope
326
+ * @param projectRoot - Project root for project scope
327
+ */
328
+ async installMcpServers(_kitName, primitives, completedOps, scope = "global", projectRoot, envResolutions) {
329
+ const operations = [];
330
+ const configLocations = this.getConfigLocations(scope);
331
+ const mcpConfigPath = scope === "project" && projectRoot
332
+ ? path.join(projectRoot, configLocations.mcp.replace(/^\.\//, ""))
333
+ : expandPath(configLocations.mcp);
334
+ // Read existing config and back it up
335
+ const existingConfig = scope === "project"
336
+ ? (pathExists(mcpConfigPath) ? JSON.parse(await readFile(mcpConfigPath)) : {})
337
+ : await readMcpConfig();
338
+ const configExisted = pathExists(mcpConfigPath);
339
+ // Prepare updated config
340
+ const updatedConfig = { ...existingConfig };
341
+ if (!updatedConfig.mcpServers) {
342
+ updatedConfig.mcpServers = {};
343
+ }
344
+ for (const primitive of primitives) {
345
+ try {
346
+ // Read MCP config from source file
347
+ const content = await readFile(primitive.sourcePath);
348
+ const mcpConfig = JSON.parse(content);
349
+ const instanceName = primitive.instanceName ?? mcpConfig.name;
350
+ if (!instanceName) {
351
+ throw new Error(`MCP config missing name; path=${primitive.sourcePath}`);
352
+ }
353
+ // Transform and add to config
354
+ const transformedConfig = transformMcpServerConfig(mcpConfig);
355
+ // Apply resolved env vars if available
356
+ const resolution = envResolutions?.find((r) => r.mcpServer === instanceName);
357
+ if (resolution && resolution.resolved.length > 0) {
358
+ const transformedEnv = installerTransformEnvVars(resolution.resolved);
359
+ transformedConfig.env = transformedEnv;
360
+ }
361
+ // Apply resolved headers if available (for HTTP transport)
362
+ if (resolution && resolution.resolvedHeaders && resolution.resolvedHeaders.length > 0) {
363
+ const transformedHeaders = installerTransformHeaders(resolution.resolvedHeaders);
364
+ if (transformedConfig.url) {
365
+ transformedConfig.headers = transformedHeaders;
366
+ }
367
+ }
368
+ updatedConfig.mcpServers[instanceName] = transformedConfig;
369
+ operations.push({
370
+ operation: "merge",
371
+ source: primitive.sourcePath,
372
+ destination: mcpConfigPath,
373
+ success: true,
374
+ });
375
+ }
376
+ catch (error) {
377
+ operations.push({
378
+ operation: "merge",
379
+ source: primitive.sourcePath,
380
+ destination: mcpConfigPath,
381
+ success: false,
382
+ error: error instanceof Error ? error.message : String(error),
383
+ });
384
+ }
385
+ }
386
+ // Write updated config
387
+ if (scope === "project" && projectRoot) {
388
+ const { writeFile, mkdir } = await import("node:fs/promises");
389
+ await mkdir(path.dirname(mcpConfigPath), { recursive: true });
390
+ await writeFile(mcpConfigPath, JSON.stringify(updatedConfig, null, 2));
391
+ }
392
+ else {
393
+ await writeMcpConfig(updatedConfig);
394
+ }
395
+ const mcpCompletedOp = {
396
+ type: "file",
397
+ path: mcpConfigPath,
398
+ createdNew: !configExisted,
399
+ };
400
+ if (configExisted) {
401
+ mcpCompletedOp.previousContent = JSON.stringify(existingConfig, null, 2);
402
+ }
403
+ completedOps.push(mcpCompletedOp);
404
+ return operations;
405
+ }
406
+ async removeMcpServers(instanceNames, scope = "global", projectRoot) {
407
+ if (instanceNames.length === 0)
408
+ return [];
409
+ const configLocations = this.getConfigLocations(scope);
410
+ const mcpConfigPath = scope === "project" && projectRoot
411
+ ? path.join(projectRoot, configLocations.mcp.replace(/^\.\//, ""))
412
+ : expandPath(configLocations.mcp);
413
+ const existingConfig = scope === "project"
414
+ ? (pathExists(mcpConfigPath) ? JSON.parse(await readFile(mcpConfigPath)) : {})
415
+ : await readMcpConfig();
416
+ if (!existingConfig.mcpServers) {
417
+ return [];
418
+ }
419
+ const removed = [];
420
+ for (const name of instanceNames) {
421
+ if (existingConfig.mcpServers[name]) {
422
+ delete existingConfig.mcpServers[name];
423
+ removed.push(name);
424
+ }
425
+ }
426
+ if (removed.length > 0) {
427
+ if (scope === "project" && projectRoot) {
428
+ const { writeFile, mkdir } = await import("node:fs/promises");
429
+ await mkdir(path.dirname(mcpConfigPath), { recursive: true });
430
+ await writeFile(mcpConfigPath, JSON.stringify(existingConfig, null, 2));
431
+ }
432
+ else {
433
+ await writeMcpConfig(existingConfig);
434
+ }
435
+ }
436
+ return removed;
437
+ }
438
+ async removeHooks(instanceNames, scope = "global", projectRoot) {
439
+ if (instanceNames.length === 0)
440
+ return [];
441
+ const configLocations = this.getConfigLocations(scope);
442
+ const installPaths = this.getInstallationPaths(scope);
443
+ const settingsPath = scope === "project" && projectRoot
444
+ ? path.join(projectRoot, configLocations.primary.replace(/^\.\//, ""))
445
+ : expandPath(configLocations.primary);
446
+ const hooksDir = scope === "project" && projectRoot
447
+ ? path.join(projectRoot, installPaths.hooks.replace(/^\.\//, ""))
448
+ : expandPath(installPaths.hooks);
449
+ const existingSettings = scope === "project"
450
+ ? (pathExists(settingsPath) ? JSON.parse(await readFile(settingsPath)) : {})
451
+ : await readSettingsConfig();
452
+ if (!existingSettings.hooks) {
453
+ existingSettings.hooks = {};
454
+ }
455
+ const removed = [];
456
+ let updated = false;
457
+ for (const instanceName of instanceNames) {
458
+ let removedAny = false;
459
+ for (const key of Object.keys(existingSettings.hooks)) {
460
+ const entries = existingSettings.hooks[key];
461
+ const filtered = entries.filter((entry) => {
462
+ return !entry.hooks?.some((hook) => hook.command?.includes(instanceName));
463
+ });
464
+ if (filtered.length !== entries.length) {
465
+ removedAny = true;
466
+ if (filtered.length === 0) {
467
+ delete existingSettings.hooks[key];
468
+ }
469
+ else {
470
+ existingSettings.hooks[key] = filtered;
471
+ }
472
+ }
473
+ }
474
+ if (removedAny) {
475
+ removed.push(instanceName);
476
+ updated = true;
477
+ }
478
+ await remove(path.join(hooksDir, instanceName));
479
+ }
480
+ if (updated) {
481
+ if (scope === "project" && projectRoot) {
482
+ const { writeFile, mkdir } = await import("node:fs/promises");
483
+ await mkdir(path.dirname(settingsPath), { recursive: true });
484
+ await writeFile(settingsPath, JSON.stringify(existingSettings, null, 2));
485
+ }
486
+ else {
487
+ await writeSettingsConfig(existingSettings);
488
+ }
489
+ }
490
+ return removed;
491
+ }
492
+ /**
493
+ * Install hooks to configuration and files.
494
+ *
495
+ * @param kitName - Name of the kit
496
+ * @param primitives - Hook primitives to install
497
+ * @param completedOps - Completed operations for rollback
498
+ * @param scope - Installation scope
499
+ * @param projectRoot - Project root for project scope
500
+ */
501
+ async installHooks(kitName, primitives, completedOps, scope = "global", projectRoot) {
502
+ const operations = [];
503
+ const configLocations = this.getConfigLocations(scope);
504
+ const installPaths = this.getInstallationPaths(scope);
505
+ const settingsPath = scope === "project" && projectRoot
506
+ ? path.join(projectRoot, configLocations.primary.replace(/^\.\//, ""))
507
+ : expandPath(configLocations.primary);
508
+ const hooksDir = scope === "project" && projectRoot
509
+ ? path.join(projectRoot, installPaths.hooks.replace(/^\.\//, ""))
510
+ : expandPath(installPaths.hooks);
511
+ // Ensure hooks directory exists
512
+ await ensureDirectory(hooksDir);
513
+ // Read existing settings
514
+ const existingSettings = scope === "project"
515
+ ? (pathExists(settingsPath) ? JSON.parse(await readFile(settingsPath)) : {})
516
+ : await readSettingsConfig();
517
+ const settingsExisted = pathExists(settingsPath);
518
+ // Prepare updated settings
519
+ const updatedSettings = { ...existingSettings };
520
+ if (!updatedSettings.hooks) {
521
+ updatedSettings.hooks = {};
522
+ }
523
+ for (const primitive of primitives) {
524
+ const program = primitive.hookProgram;
525
+ const binding = primitive.hookBinding;
526
+ if (!program || !binding || !primitive.hookEntryPath || !primitive.hookProgramDir) {
527
+ operations.push({
528
+ operation: "merge",
529
+ source: primitive.sourcePath,
530
+ destination: settingsPath,
531
+ success: false,
532
+ error: "Hook primitive missing program or binding metadata",
533
+ });
534
+ continue;
535
+ }
536
+ const instanceName = primitive.instanceName ?? this.getNamespacedName(kitName, primitive.name);
537
+ const hookDir = path.join(hooksDir, instanceName);
538
+ try {
539
+ // Create hook directory
540
+ await ensureDirectory(hookDir);
541
+ completedOps.push({
542
+ type: "directory",
543
+ path: hookDir,
544
+ createdNew: true,
545
+ });
546
+ const targetPath = path.join(hookDir, path.basename(primitive.hookEntryPath));
547
+ const hookInput = {
548
+ instanceName,
549
+ program,
550
+ binding,
551
+ programDir: primitive.hookProgramDir,
552
+ entryPath: primitive.hookEntryPath,
553
+ targetDir: hookDir,
554
+ targetPath,
555
+ scope,
556
+ ...(projectRoot ? { projectRoot } : {}),
557
+ };
558
+ const hookInstallation = transformHookConfig(hookInput);
559
+ if (hookInstallation.files) {
560
+ for (const file of hookInstallation.files) {
561
+ if (file.type === "copy" && file.source && file.destination) {
562
+ await copyFile(file.source, file.destination);
563
+ completedOps.push({
564
+ type: "file",
565
+ path: file.destination,
566
+ createdNew: true,
567
+ });
568
+ }
569
+ }
570
+ }
571
+ if (hookInstallation.config) {
572
+ updatedSettings.hooks = mergeHookConfigs(updatedSettings.hooks, hookInstallation.config);
573
+ }
574
+ operations.push({
575
+ operation: "merge",
576
+ source: primitive.sourcePath,
577
+ destination: settingsPath,
578
+ success: true,
579
+ });
580
+ }
581
+ catch (error) {
582
+ operations.push({
583
+ operation: "merge",
584
+ source: primitive.sourcePath,
585
+ destination: settingsPath,
586
+ success: false,
587
+ error: error instanceof Error ? error.message : String(error),
588
+ });
589
+ }
590
+ }
591
+ // Write updated settings
592
+ if (scope === "project" && projectRoot) {
593
+ const { writeFile, mkdir } = await import("node:fs/promises");
594
+ await mkdir(path.dirname(settingsPath), { recursive: true });
595
+ await writeFile(settingsPath, JSON.stringify(updatedSettings, null, 2));
596
+ }
597
+ else {
598
+ await writeSettingsConfig(updatedSettings);
599
+ }
600
+ const settingsCompletedOp = {
601
+ type: "file",
602
+ path: settingsPath,
603
+ createdNew: !settingsExisted,
604
+ };
605
+ if (settingsExisted) {
606
+ settingsCompletedOp.previousContent = JSON.stringify(existingSettings, null, 2);
607
+ }
608
+ completedOps.push(settingsCompletedOp);
609
+ return operations;
610
+ }
611
+ }
612
+ /**
613
+ * Create a Claude Code adapter instance.
614
+ */
615
+ export function createClaudeCodeAdapter() {
616
+ return new ClaudeCodeAdapter();
617
+ }
618
+ function mapHookBindingToolTemplates(binding, toolMapping) {
619
+ if (!binding.matcher || typeof binding.matcher.tool !== "string") {
620
+ return binding;
621
+ }
622
+ const parsed = parseToolTemplate(binding.matcher.tool);
623
+ if (!parsed) {
624
+ return binding;
625
+ }
626
+ const mapped = toolMapping[parsed.canonicalId];
627
+ const resolvedTool = mapped !== undefined && mapped !== null
628
+ ? mapped
629
+ : parsed.fallback ?? parsed.canonicalId;
630
+ return {
631
+ ...binding,
632
+ matcher: {
633
+ ...binding.matcher,
634
+ tool: resolvedTool,
635
+ },
636
+ };
637
+ }
638
+ // Re-export types and utilities
639
+ export { detectClaudeCode, CLAUDE_CODE_PATHS } from "./detection.js";
640
+ export { claudeCodeToolMapping } from "./tool-mapping.js";
641
+ export { claudeCodeModelMapping } from "./model-mapping.js";
642
+ export * from "./installer.js";
643
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/adapters/claude-code/index.ts"],"names":[],"mappings":"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"}