@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,76 @@
1
+ /**
2
+ * Adapters module for the Kit Installer.
3
+ *
4
+ * This module provides the adapter framework for translating kits
5
+ * to harness-specific configurations. It includes:
6
+ *
7
+ * - KitAdapter interface for harness-specific implementations
8
+ * - BaseAdapter abstract class with common functionality
9
+ * - AdapterRegistry for managing and discovering adapters
10
+ * - Tool templating system for harness-agnostic tool references
11
+ * - File operation utilities for atomic installation
12
+ */
13
+ export { CANONICAL_TOOLS, CANONICAL_MODEL_TIERS, } from "./interface.js";
14
+ // Registry
15
+ export { AdapterRegistry, globalRegistry, registerAdapter, getAdapter, listAdapters, detectHarnesses, } from "./registry.js";
16
+ /**
17
+ * Get the global adapter registry.
18
+ *
19
+ * @returns The global adapter registry instance
20
+ */
21
+ export function getAdapterRegistry() {
22
+ return globalRegistry;
23
+ }
24
+ // Base adapter
25
+ export { BaseAdapter, NAMESPACE_SEPARATOR } from "./base-adapter.js";
26
+ // Tool templating
27
+ export { processToolTemplates, parseToolTemplate, findToolTemplates, hasToolTemplates, countToolTemplates, getReferencedToolIds, validateToolTemplates, createToolTemplate, isValidCanonicalToolId, DEFAULT_TOOL_MAPPINGS, } from "./tool-templating.js";
28
+ // Model templating
29
+ export { parseModelTemplate, resolveModelTemplate } from "./model-templating.js";
30
+ // Subagent frontmatter
31
+ export { parseSubagentFrontmatter, serializeSubagentFrontmatter, mapSubagentTools, } from "./subagent-frontmatter.js";
32
+ // File operations
33
+ export { expandPath, pathExists, isDirectory, isFile, ensureDirectory, copyFile, copyDirectory, writeTransformed, readFile, backupFile, createSimpleBackup, restoreFromBackup, remove, removeIfEmpty, rollbackOperations, executeFileOperations, deepMerge, getSize, listFiles, } from "./file-operations.js";
34
+ // Claude Code adapter
35
+ export { ClaudeCodeAdapter, createClaudeCodeAdapter, detectClaudeCode, claudeCodeToolMapping, claudeCodeModelMapping, CLAUDE_CODE_PATHS, } from "./claude-code/index.js";
36
+ // Codex adapter
37
+ export { CodexAdapter, createCodexAdapter, detectCodex, codexToolMapping, codexModelMapping, CODEX_PATHS, } from "./codex/index.js";
38
+ // Gemini CLI adapter
39
+ export { GeminiCliAdapter, createGeminiCliAdapter, detectGeminiCli, geminiCliToolMapping, geminiCliModelMapping, GEMINI_CLI_PATHS, } from "./gemini-cli/index.js";
40
+ // GitHub Copilot adapter
41
+ export { GithubCopilotAdapter, createGithubCopilotAdapter, detectGithubCopilot, githubCopilotToolMapping, githubCopilotModelMapping, GITHUB_COPILOT_PATHS, } from "./github-copilot/index.js";
42
+ // OpenCode adapter
43
+ export { OpencodeAdapter, createOpencodeAdapter, detectOpencode, opencodeToolMapping, opencodeModelMapping, OPENCODE_PATHS, } from "./opencode/index.js";
44
+ // Register adapters with global registry
45
+ import { globalRegistry } from "./registry.js";
46
+ import { createClaudeCodeAdapter } from "./claude-code/index.js";
47
+ import { createCodexAdapter } from "./codex/index.js";
48
+ import { createGeminiCliAdapter } from "./gemini-cli/index.js";
49
+ import { createGithubCopilotAdapter } from "./github-copilot/index.js";
50
+ import { createOpencodeAdapter } from "./opencode/index.js";
51
+ /**
52
+ * Initialize all built-in adapters and register them with the global registry.
53
+ *
54
+ * This function should be called during application startup.
55
+ */
56
+ export function initializeAdapters() {
57
+ // Only register if not already registered
58
+ if (!globalRegistry.has("claude-code")) {
59
+ globalRegistry.register(createClaudeCodeAdapter());
60
+ }
61
+ if (!globalRegistry.has("codex")) {
62
+ globalRegistry.register(createCodexAdapter());
63
+ }
64
+ if (!globalRegistry.has("gemini-cli")) {
65
+ globalRegistry.register(createGeminiCliAdapter());
66
+ }
67
+ if (!globalRegistry.has("github-copilot")) {
68
+ globalRegistry.register(createGithubCopilotAdapter());
69
+ }
70
+ if (!globalRegistry.has("opencode")) {
71
+ globalRegistry.register(createOpencodeAdapter());
72
+ }
73
+ }
74
+ // Auto-initialize on import
75
+ initializeAdapters();
76
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/adapters/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Adapter interface re-exports.
3
+ *
4
+ * This module provides the primary exports for the KitAdapter interface
5
+ * and related types used by harness-specific adapter implementations.
6
+ */
7
+ export type { KitAdapter, InstallationPaths, ConfigLocations, DetectionResult, CompatibilityResult, InstallOptions, InstallProgress, InstallResult, UninstallOptions, UninstallResult, InstalledKitInfo, PrimitiveInstallStatus, FileOperationResult, TransformResult, HookInstallation, FileOperation, ValidationResult, ValidationError, ToolMapping, ModelMapping, ModelTier, TemplateProcessingResult, ResolvedTool, UnresolvedTool, } from "./types.js";
8
+ export { CANONICAL_TOOLS, CANONICAL_MODEL_TIERS, type CanonicalToolId, } from "./types.js";
9
+ //# sourceMappingURL=interface.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"interface.d.ts","sourceRoot":"","sources":["../../src/adapters/interface.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,YAAY,EACV,UAAU,EACV,iBAAiB,EACjB,eAAe,EACf,eAAe,EACf,mBAAmB,EACnB,cAAc,EACd,eAAe,EACf,aAAa,EACb,gBAAgB,EAChB,eAAe,EACf,gBAAgB,EAChB,sBAAsB,EACtB,mBAAmB,EACnB,eAAe,EACf,gBAAgB,EAChB,aAAa,EACb,gBAAgB,EAChB,eAAe,EACf,WAAW,EACX,YAAY,EACZ,SAAS,EACT,wBAAwB,EACxB,YAAY,EACZ,cAAc,GACf,MAAM,YAAY,CAAC;AAEpB,OAAO,EACL,eAAe,EACf,qBAAqB,EACrB,KAAK,eAAe,GACrB,MAAM,YAAY,CAAC"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Adapter interface re-exports.
3
+ *
4
+ * This module provides the primary exports for the KitAdapter interface
5
+ * and related types used by harness-specific adapter implementations.
6
+ */
7
+ export { CANONICAL_TOOLS, CANONICAL_MODEL_TIERS, } from "./types.js";
8
+ //# sourceMappingURL=interface.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"interface.js","sourceRoot":"","sources":["../../src/adapters/interface.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AA6BH,OAAO,EACL,eAAe,EACf,qBAAqB,GAEtB,MAAM,YAAY,CAAC"}
@@ -0,0 +1,16 @@
1
+ /**
2
+ * Model template parsing and resolution helpers.
3
+ */
4
+ import type { ModelMapping, ModelTier } from "./types.js";
5
+ export interface ParsedModelTemplate {
6
+ tier: ModelTier;
7
+ }
8
+ export declare function parseModelTemplate(value: string): ParsedModelTemplate | null;
9
+ /**
10
+ * Resolve model templates in frontmatter using the provided mapping.
11
+ *
12
+ * - If the tier maps to a model string, replace the model field.
13
+ * - If the tier maps to null/undefined/empty, remove the model field.
14
+ */
15
+ export declare function resolveModelTemplate(frontmatter: Record<string, unknown>, modelMapping: ModelMapping): Record<string, unknown>;
16
+ //# sourceMappingURL=model-templating.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"model-templating.d.ts","sourceRoot":"","sources":["../../src/adapters/model-templating.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAI1D,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,SAAS,CAAC;CACjB;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,mBAAmB,GAAG,IAAI,CAe5E;AAUD;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAClC,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACpC,YAAY,EAAE,YAAY,GACzB,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAsBzB"}
@@ -0,0 +1,52 @@
1
+ /**
2
+ * Model template parsing and resolution helpers.
3
+ */
4
+ const MODEL_TEMPLATE_REGEX = /\{\{\s*model:([a-z-]+)\s*\}\}/;
5
+ export function parseModelTemplate(value) {
6
+ const match = MODEL_TEMPLATE_REGEX.exec(value);
7
+ if (!match) {
8
+ return null;
9
+ }
10
+ const tier = match[1];
11
+ if (!tier) {
12
+ return null;
13
+ }
14
+ if (!isModelTier(tier)) {
15
+ return null;
16
+ }
17
+ return { tier };
18
+ }
19
+ function isModelTier(value) {
20
+ return value === "fast" ||
21
+ value === "standard" ||
22
+ value === "power" ||
23
+ value === "auto" ||
24
+ value === "inherit";
25
+ }
26
+ /**
27
+ * Resolve model templates in frontmatter using the provided mapping.
28
+ *
29
+ * - If the tier maps to a model string, replace the model field.
30
+ * - If the tier maps to null/undefined/empty, remove the model field.
31
+ */
32
+ export function resolveModelTemplate(frontmatter, modelMapping) {
33
+ const rawModel = frontmatter["model"];
34
+ if (typeof rawModel !== "string") {
35
+ return frontmatter;
36
+ }
37
+ const parsed = parseModelTemplate(rawModel);
38
+ if (!parsed) {
39
+ return frontmatter;
40
+ }
41
+ const mapped = modelMapping[parsed.tier];
42
+ if (mapped === undefined || mapped === null || mapped.length === 0) {
43
+ const { model: _model, ...rest } = frontmatter;
44
+ void _model;
45
+ return rest;
46
+ }
47
+ return {
48
+ ...frontmatter,
49
+ model: mapped,
50
+ };
51
+ }
52
+ //# sourceMappingURL=model-templating.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"model-templating.js","sourceRoot":"","sources":["../../src/adapters/model-templating.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,MAAM,oBAAoB,GAAG,+BAA+B,CAAC;AAM7D,MAAM,UAAU,kBAAkB,CAAC,KAAa;IAC9C,MAAM,KAAK,GAAG,oBAAoB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC/C,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;IACtB,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,OAAO,IAAI,CAAC;IACd,CAAC;IACD,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC;QACvB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,EAAE,IAAI,EAAE,CAAC;AAClB,CAAC;AAED,SAAS,WAAW,CAAC,KAAa;IAChC,OAAO,KAAK,KAAK,MAAM;QACrB,KAAK,KAAK,UAAU;QACpB,KAAK,KAAK,OAAO;QACjB,KAAK,KAAK,MAAM;QAChB,KAAK,KAAK,SAAS,CAAC;AACxB,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,oBAAoB,CAClC,WAAoC,EACpC,YAA0B;IAE1B,MAAM,QAAQ,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC;IACtC,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE,CAAC;QACjC,OAAO,WAAW,CAAC;IACrB,CAAC;IAED,MAAM,MAAM,GAAG,kBAAkB,CAAC,QAAQ,CAAC,CAAC;IAC5C,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO,WAAW,CAAC;IACrB,CAAC;IAED,MAAM,MAAM,GAAG,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACzC,IAAI,MAAM,KAAK,SAAS,IAAI,MAAM,KAAK,IAAI,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACnE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,GAAG,WAAW,CAAC;QAC/C,KAAK,MAAM,CAAC;QACZ,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO;QACL,GAAG,WAAW;QACd,KAAK,EAAE,MAAM;KACd,CAAC;AACJ,CAAC"}
@@ -0,0 +1,57 @@
1
+ /**
2
+ * OpenCode harness detection.
3
+ *
4
+ * Detects OpenCode installation by checking for:
5
+ * - opencode binary in PATH
6
+ * - ~/.config/opencode/opencode.json configuration file
7
+ * - Installation directories (~/.config/opencode/commands/, ~/.config/opencode/skills/, etc.)
8
+ */
9
+ import type { DetectionResult, InstallationPaths } from "../types.js";
10
+ /**
11
+ * OpenCode configuration file paths.
12
+ */
13
+ export declare const OPENCODE_PATHS: {
14
+ readonly configJson: "~/.config/opencode/opencode.json";
15
+ readonly commands: "~/.config/opencode/commands/";
16
+ readonly skills: "~/.config/opencode/skills/";
17
+ readonly agents: "~/.config/opencode/agents/";
18
+ readonly plugins: "~/.config/opencode/plugins/";
19
+ };
20
+ /**
21
+ * Check if the opencode binary is available in PATH.
22
+ */
23
+ export declare function checkOpencodeBinary(): Promise<boolean>;
24
+ /**
25
+ * Get the OpenCode version from the CLI.
26
+ */
27
+ export declare function getOpencodeVersion(): Promise<string | undefined>;
28
+ /**
29
+ * Check if the OpenCode config file exists.
30
+ */
31
+ export declare function checkConfigJson(): boolean;
32
+ /**
33
+ * Check if installation directories exist.
34
+ */
35
+ export declare function checkInstallationPaths(): {
36
+ commands: boolean;
37
+ skills: boolean;
38
+ subagents: boolean;
39
+ hooks: boolean;
40
+ };
41
+ /**
42
+ * Get version from opencode.json if available.
43
+ */
44
+ export declare function getVersionFromConfig(): Promise<string | undefined>;
45
+ /**
46
+ * Detect OpenCode installation.
47
+ *
48
+ * Detection is considered successful if:
49
+ * - The opencode binary is in PATH, OR
50
+ * - The ~/.config/opencode/opencode.json file exists
51
+ */
52
+ export declare function detectOpencode(): Promise<DetectionResult>;
53
+ /**
54
+ * Get OpenCode installation paths.
55
+ */
56
+ export declare function getOpencodeInstallationPaths(): InstallationPaths;
57
+ //# sourceMappingURL=detection.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"detection.d.ts","sourceRoot":"","sources":["../../../src/adapters/opencode/detection.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,OAAO,KAAK,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAKtE;;GAEG;AACH,eAAO,MAAM,cAAc;;;;;;CAMjB,CAAC;AAEX;;GAEG;AACH,wBAAsB,mBAAmB,IAAI,OAAO,CAAC,OAAO,CAAC,CAO5D;AAED;;GAEG;AACH,wBAAsB,kBAAkB,IAAI,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAStE;AAED;;GAEG;AACH,wBAAgB,eAAe,IAAI,OAAO,CAEzC;AAED;;GAEG;AACH,wBAAgB,sBAAsB,IAAI;IACxC,QAAQ,EAAE,OAAO,CAAC;IAClB,MAAM,EAAE,OAAO,CAAC;IAChB,SAAS,EAAE,OAAO,CAAC;IACnB,KAAK,EAAE,OAAO,CAAC;CAChB,CAOA;AAED;;GAEG;AACH,wBAAsB,oBAAoB,IAAI,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAaxE;AAED;;;;;;GAMG;AACH,wBAAsB,cAAc,IAAI,OAAO,CAAC,eAAe,CAAC,CA6C/D;AAED;;GAEG;AACH,wBAAgB,4BAA4B,IAAI,iBAAiB,CAOhE"}
@@ -0,0 +1,140 @@
1
+ /**
2
+ * OpenCode harness detection.
3
+ *
4
+ * Detects OpenCode installation by checking for:
5
+ * - opencode binary in PATH
6
+ * - ~/.config/opencode/opencode.json configuration file
7
+ * - Installation directories (~/.config/opencode/commands/, ~/.config/opencode/skills/, etc.)
8
+ */
9
+ import { exec } from "node:child_process";
10
+ import { promisify } from "node:util";
11
+ import { expandPath, pathExists, readFile } from "../file-operations.js";
12
+ const execAsync = promisify(exec);
13
+ /**
14
+ * OpenCode configuration file paths.
15
+ */
16
+ export const OPENCODE_PATHS = {
17
+ configJson: "~/.config/opencode/opencode.json",
18
+ commands: "~/.config/opencode/commands/",
19
+ skills: "~/.config/opencode/skills/",
20
+ agents: "~/.config/opencode/agents/",
21
+ plugins: "~/.config/opencode/plugins/",
22
+ };
23
+ /**
24
+ * Check if the opencode binary is available in PATH.
25
+ */
26
+ export async function checkOpencodeBinary() {
27
+ try {
28
+ await execAsync("which opencode");
29
+ return true;
30
+ }
31
+ catch {
32
+ return false;
33
+ }
34
+ }
35
+ /**
36
+ * Get the OpenCode version from the CLI.
37
+ */
38
+ export async function getOpencodeVersion() {
39
+ try {
40
+ const { stdout } = await execAsync("opencode --version");
41
+ // Parse version from output (e.g., "opencode 1.0.0" or just "1.0.0")
42
+ const match = stdout.trim().match(/(\d+\.\d+\.\d+)/);
43
+ return match ? match[1] : undefined;
44
+ }
45
+ catch {
46
+ return undefined;
47
+ }
48
+ }
49
+ /**
50
+ * Check if the OpenCode config file exists.
51
+ */
52
+ export function checkConfigJson() {
53
+ return pathExists(OPENCODE_PATHS.configJson);
54
+ }
55
+ /**
56
+ * Check if installation directories exist.
57
+ */
58
+ export function checkInstallationPaths() {
59
+ return {
60
+ commands: pathExists(OPENCODE_PATHS.commands),
61
+ skills: pathExists(OPENCODE_PATHS.skills),
62
+ subagents: pathExists(OPENCODE_PATHS.agents),
63
+ hooks: pathExists(OPENCODE_PATHS.plugins),
64
+ };
65
+ }
66
+ /**
67
+ * Get version from opencode.json if available.
68
+ */
69
+ export async function getVersionFromConfig() {
70
+ try {
71
+ if (!checkConfigJson()) {
72
+ return undefined;
73
+ }
74
+ const content = await readFile(OPENCODE_PATHS.configJson);
75
+ const parsed = JSON.parse(content);
76
+ const version = parsed["version"];
77
+ return typeof version === "string" ? version : undefined;
78
+ }
79
+ catch {
80
+ return undefined;
81
+ }
82
+ }
83
+ /**
84
+ * Detect OpenCode installation.
85
+ *
86
+ * Detection is considered successful if:
87
+ * - The opencode binary is in PATH, OR
88
+ * - The ~/.config/opencode/opencode.json file exists
89
+ */
90
+ export async function detectOpencode() {
91
+ const [hasBinary, hasConfig] = await Promise.all([
92
+ checkOpencodeBinary(),
93
+ Promise.resolve(checkConfigJson()),
94
+ ]);
95
+ const detected = hasBinary || hasConfig;
96
+ if (!detected) {
97
+ return {
98
+ detected: false,
99
+ globalConfigExists: false,
100
+ installationPathsExist: {
101
+ commands: false,
102
+ skills: false,
103
+ subagents: false,
104
+ hooks: false,
105
+ },
106
+ };
107
+ }
108
+ // Get version
109
+ let version;
110
+ if (hasBinary) {
111
+ version = await getOpencodeVersion();
112
+ }
113
+ if (!version && hasConfig) {
114
+ version = await getVersionFromConfig();
115
+ }
116
+ const installationPathsExist = checkInstallationPaths();
117
+ const configPath = expandPath(OPENCODE_PATHS.configJson);
118
+ const result = {
119
+ detected: true,
120
+ configPath,
121
+ globalConfigExists: hasConfig,
122
+ installationPathsExist,
123
+ };
124
+ if (version !== undefined) {
125
+ result.version = version;
126
+ }
127
+ return result;
128
+ }
129
+ /**
130
+ * Get OpenCode installation paths.
131
+ */
132
+ export function getOpencodeInstallationPaths() {
133
+ return {
134
+ commands: OPENCODE_PATHS.commands,
135
+ skills: OPENCODE_PATHS.skills,
136
+ subagents: OPENCODE_PATHS.agents,
137
+ hooks: OPENCODE_PATHS.plugins,
138
+ };
139
+ }
140
+ //# sourceMappingURL=detection.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"detection.js","sourceRoot":"","sources":["../../../src/adapters/opencode/detection.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,168 @@
1
+ /**
2
+ * OpenCode adapter implementation.
3
+ *
4
+ * OpenCode is an open-source AI coding assistant with full support for:
5
+ * - Commands: ~/.config/opencode/commands/{kit}.{name}.md (argumentHint stripped)
6
+ * - Skills: ~/.config/opencode/skills/{kit}.{name}/
7
+ * - Subagents: ~/.config/opencode/agents/{kit}.{name}.md
8
+ * - MCP Servers: ~/.config/opencode/opencode.json (mcp key)
9
+ * - Hooks: ~/.config/opencode/plugins/{instance}.js
10
+ *
11
+ * Note: OpenCode commands have the argumentHint field stripped from frontmatter.
12
+ */
13
+ import type { PrimitiveType, KitManifest, ResolvedPrimitive, InstallationScope, ResolvedEnvVar, ResolvedHeader, EnvVarOutput, HeaderOutput, EnvVarResolutionResult } from "../../core/types.js";
14
+ import type { CommandMetadata, SkillMetadata, SubagentMetadata, McpServerConfig } from "../../core/types.js";
15
+ import type { InstallationPaths, ConfigLocations, DetectionResult, TransformResult, HookInstallation, HookInstallationInput, ToolMapping, ModelMapping, FileOperationResult } from "../types.js";
16
+ import { BaseAdapter } from "../base-adapter.js";
17
+ import type { CompletedOperation } from "../file-operations.js";
18
+ /**
19
+ * Project-scope paths for OpenCode.
20
+ */
21
+ export declare const OPENCODE_PROJECT_PATHS: {
22
+ readonly configJson: ".opencode/opencode.json";
23
+ readonly commands: ".opencode/commands/";
24
+ readonly skills: ".opencode/skills/";
25
+ readonly agents: ".opencode/agents/";
26
+ readonly plugins: ".opencode/plugins/";
27
+ readonly opencodeJson: "opencode.json";
28
+ };
29
+ /**
30
+ * OpenCode adapter.
31
+ *
32
+ * Provides full support for all primitive types.
33
+ */
34
+ export declare class OpencodeAdapter extends BaseAdapter {
35
+ readonly name = "opencode";
36
+ readonly displayName = "OpenCode";
37
+ readonly version = "1.0.0";
38
+ readonly supportedHarnessVersions = ">=1.0.0";
39
+ /**
40
+ * Get supported installation scopes.
41
+ *
42
+ * OpenCode supports both global and project scopes.
43
+ */
44
+ getSupportedScopes(): InstallationScope[];
45
+ /**
46
+ * Get supported primitive types at the given scope.
47
+ *
48
+ * OpenCode supports all primitive types at both scopes.
49
+ *
50
+ * @param scope - Installation scope (defaults to "global")
51
+ */
52
+ getSupportedPrimitives(_scope?: InstallationScope): PrimitiveType[];
53
+ /**
54
+ * Get installation paths for file-based primitives.
55
+ *
56
+ * @param scope - Installation scope (defaults to "global")
57
+ */
58
+ getInstallationPaths(scope?: InstallationScope): InstallationPaths;
59
+ /**
60
+ * Get configuration file locations.
61
+ *
62
+ * @param scope - Installation scope (defaults to "global")
63
+ */
64
+ getConfigLocations(scope?: InstallationScope): ConfigLocations;
65
+ /**
66
+ * Get the tool mapping for OpenCode.
67
+ */
68
+ getToolMapping(): ToolMapping;
69
+ /**
70
+ * Get the model mapping for OpenCode.
71
+ */
72
+ getModelMapping(): ModelMapping;
73
+ /**
74
+ * Detect OpenCode installation.
75
+ */
76
+ detect(): Promise<DetectionResult>;
77
+ /**
78
+ * Transform a command for OpenCode.
79
+ *
80
+ * OpenCode uses native Markdown format with YAML frontmatter.
81
+ * The `argumentHint` field is stripped as OpenCode does not support it.
82
+ * The `description` field is preserved.
83
+ */
84
+ transformCommand(content: string, _metadata: CommandMetadata): TransformResult;
85
+ /**
86
+ * Transform a skill for OpenCode.
87
+ *
88
+ * OpenCode uses native Markdown format for skills.
89
+ */
90
+ transformSkill(_skillDir: string, _metadata: SkillMetadata): TransformResult;
91
+ /**
92
+ * OpenCode supports a limited frontmatter set for skills.
93
+ */
94
+ protected filterSkillFrontmatter(frontmatter: Record<string, unknown>): Record<string, unknown>;
95
+ /**
96
+ * OpenCode subagents do not support hooks in frontmatter.
97
+ */
98
+ protected filterSubagentFrontmatter(frontmatter: Record<string, unknown>): Record<string, unknown>;
99
+ /**
100
+ * Transform a subagent for OpenCode.
101
+ *
102
+ * OpenCode uses native Markdown format for subagents.
103
+ */
104
+ transformSubagent(content: string, _metadata: SubagentMetadata): TransformResult;
105
+ /**
106
+ * Transform an MCP server configuration for OpenCode.
107
+ */
108
+ transformMcpServer(config: McpServerConfig): Record<string, unknown>;
109
+ /**
110
+ * Transform a hook for OpenCode.
111
+ */
112
+ transformHook(hook: HookInstallationInput): HookInstallation;
113
+ /**
114
+ * Transform resolved environment variables to OpenCode format.
115
+ *
116
+ * OpenCode uses ${VAR} syntax for passthrough, direct values otherwise.
117
+ * See PRD-001 FR-20.7.
118
+ */
119
+ transformEnvVars(resolved: ResolvedEnvVar[]): EnvVarOutput;
120
+ /**
121
+ * Transform resolved headers to OpenCode format.
122
+ *
123
+ * OpenCode uses ${VAR} syntax for passthrough, direct values otherwise.
124
+ * See PRD-001 FR-21.6.
125
+ */
126
+ transformHeaders(resolved: ResolvedHeader[]): HeaderOutput;
127
+ /**
128
+ * Override installPrimitive to handle hook plugin filenames.
129
+ */
130
+ protected installPrimitive(kitName: string, primitive: ResolvedPrimitive, resolvedPrimitives: ResolvedPrimitive[], paths: InstallationPaths, dryRun: boolean, completedOps: CompletedOperation[], scope?: InstallationScope, projectRoot?: string): Promise<{
131
+ destination: string;
132
+ existed: boolean;
133
+ operations: FileOperationResult[];
134
+ }>;
135
+ /**
136
+ * Update harness configuration for MCP servers and hooks.
137
+ *
138
+ * @param kit - Kit manifest
139
+ * @param resolvedPrimitives - Resolved primitives to install
140
+ * @param dryRun - If true, don't actually write files
141
+ * @param completedOps - Array to track completed operations for rollback
142
+ * @param scope - Installation scope
143
+ * @param projectRoot - Project root for project scope
144
+ */
145
+ protected updateConfiguration(kit: KitManifest, resolvedPrimitives: ResolvedPrimitive[], dryRun: boolean, completedOps: CompletedOperation[], scope?: InstallationScope, projectRoot?: string, envResolutions?: EnvVarResolutionResult[]): Promise<{
146
+ operations: FileOperationResult[];
147
+ }>;
148
+ private resolveConfigPath;
149
+ /**
150
+ * Install MCP servers to configuration.
151
+ */
152
+ private installMcpServers;
153
+ removeMcpServers(instanceNames: string[], scope?: InstallationScope, projectRoot?: string): Promise<string[]>;
154
+ removeHooks(instanceNames: string[], scope?: InstallationScope, projectRoot?: string): Promise<string[]>;
155
+ /**
156
+ * Install hooks as OpenCode plugins.
157
+ */
158
+ private installHooks;
159
+ }
160
+ /**
161
+ * Create an OpenCode adapter instance.
162
+ */
163
+ export declare function createOpencodeAdapter(): OpencodeAdapter;
164
+ export { detectOpencode, OPENCODE_PATHS } from "./detection.js";
165
+ export { opencodeToolMapping } from "./tool-mapping.js";
166
+ export { opencodeModelMapping } from "./model-mapping.js";
167
+ export * from "./installer.js";
168
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/adapters/opencode/index.ts"],"names":[],"mappings":"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"}