@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,100 @@
1
+ /**
2
+ * Local fetcher for handling local path sources.
3
+ *
4
+ * Validates that local paths exist and are accessible.
5
+ */
6
+ import fs from "node:fs/promises";
7
+ import { parseSource, SourceParseError } from "./source-parser.js";
8
+ /**
9
+ * Error thrown when local path operations fail.
10
+ */
11
+ export class LocalFetchError extends Error {
12
+ localSource;
13
+ localCause;
14
+ constructor(message, source, cause) {
15
+ super(message);
16
+ this.name = "LocalFetchError";
17
+ this.localSource = source;
18
+ if (cause) {
19
+ this.localCause = cause;
20
+ }
21
+ }
22
+ }
23
+ /**
24
+ * Local fetcher implementation for local path sources.
25
+ */
26
+ export class LocalFetcher {
27
+ /**
28
+ * Check if this fetcher can handle the given source.
29
+ *
30
+ * Handles local paths: ./path, ../path, /absolute/path, ~/path
31
+ */
32
+ canHandle(source) {
33
+ try {
34
+ const descriptor = parseSource(source);
35
+ return descriptor.type === "local";
36
+ }
37
+ catch {
38
+ return false;
39
+ }
40
+ }
41
+ /**
42
+ * Fetch (validate) a local path.
43
+ *
44
+ * @param source - Local path (e.g., "./my-kits" or "/absolute/path")
45
+ * @returns Fetch result with local path (no cleanup needed)
46
+ * @throws LocalFetchError if the path does not exist or is not accessible
47
+ */
48
+ async fetch(source) {
49
+ let descriptor;
50
+ try {
51
+ const parsed = parseSource(source);
52
+ if (parsed.type !== "local") {
53
+ throw new SourceParseError("Not a local source", source);
54
+ }
55
+ descriptor = parsed;
56
+ }
57
+ catch (error) {
58
+ throw new LocalFetchError(`Failed to parse source: ${source}`, source, error instanceof Error ? error : undefined);
59
+ }
60
+ // Check if path exists
61
+ try {
62
+ const stats = await fs.stat(descriptor.path);
63
+ if (!stats.isDirectory()) {
64
+ throw new LocalFetchError(`Path is not a directory: ${descriptor.path}`, source);
65
+ }
66
+ }
67
+ catch (error) {
68
+ if (error instanceof LocalFetchError) {
69
+ throw error;
70
+ }
71
+ const nodeError = error;
72
+ if (nodeError.code === "ENOENT") {
73
+ throw new LocalFetchError(`Path does not exist: ${descriptor.path}`, source, error instanceof Error ? error : undefined);
74
+ }
75
+ if (nodeError.code === "EACCES") {
76
+ throw new LocalFetchError(`Permission denied: ${descriptor.path}`, source, error instanceof Error ? error : undefined);
77
+ }
78
+ throw new LocalFetchError(`Failed to access path: ${descriptor.path}`, source, error instanceof Error ? error : undefined);
79
+ }
80
+ // Check for read access
81
+ try {
82
+ await fs.access(descriptor.path, fs.constants.R_OK);
83
+ }
84
+ catch (error) {
85
+ throw new LocalFetchError(`Cannot read directory: ${descriptor.path}`, source, error instanceof Error ? error : undefined);
86
+ }
87
+ // Return result (no cleanup needed for local paths)
88
+ return {
89
+ localPath: descriptor.path,
90
+ // No cleanup function for local paths
91
+ };
92
+ }
93
+ }
94
+ /**
95
+ * Create a local fetcher.
96
+ */
97
+ export function createLocalFetcher() {
98
+ return new LocalFetcher();
99
+ }
100
+ //# sourceMappingURL=local-fetcher.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"local-fetcher.js","sourceRoot":"","sources":["../../src/discovery/local-fetcher.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,33 @@
1
+ /**
2
+ * Source parser for kit repository sources.
3
+ *
4
+ * Parses GitHub shorthand (org/repo, org/repo@ref) and local paths.
5
+ */
6
+ import type { SourceDescriptor } from "./types.js";
7
+ /**
8
+ * Error thrown when source parsing fails.
9
+ */
10
+ export declare class SourceParseError extends Error {
11
+ readonly source: string;
12
+ constructor(message: string, source: string);
13
+ }
14
+ /**
15
+ * Parse a source string into a typed source descriptor.
16
+ *
17
+ * Supported formats:
18
+ * - GitHub shorthand: org/repo, org/repo@ref
19
+ * - Local paths: ./path, ../path, /absolute/path, ~/path
20
+ *
21
+ * @param source - The source string to parse
22
+ * @returns Parsed source descriptor
23
+ * @throws SourceParseError if the source format is not recognized
24
+ */
25
+ export declare function parseSource(source: string): SourceDescriptor;
26
+ /**
27
+ * Format a source descriptor back to a string.
28
+ *
29
+ * @param descriptor - The source descriptor to format
30
+ * @returns Formatted source string
31
+ */
32
+ export declare function formatSource(descriptor: SourceDescriptor): string;
33
+ //# sourceMappingURL=source-parser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"source-parser.d.ts","sourceRoot":"","sources":["../../src/discovery/source-parser.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,KAAK,EAAE,gBAAgB,EAA6B,MAAM,YAAY,CAAC;AAQ9E;;GAEG;AACH,qBAAa,gBAAiB,SAAQ,KAAK;aAGvB,MAAM,EAAE,MAAM;gBAD9B,OAAO,EAAE,MAAM,EACC,MAAM,EAAE,MAAM;CAKjC;AAmFD;;;;;;;;;;GAUG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,gBAAgB,CA+B5D;AAED;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,UAAU,EAAE,gBAAgB,GAAG,MAAM,CAOjE"}
@@ -0,0 +1,136 @@
1
+ /**
2
+ * Source parser for kit repository sources.
3
+ *
4
+ * Parses GitHub shorthand (org/repo, org/repo@ref) and local paths.
5
+ */
6
+ import path from "node:path";
7
+ /**
8
+ * GitHub shorthand pattern: org/repo or org/repo@ref
9
+ * Does NOT match URLs (http://, https://, git://)
10
+ */
11
+ const GITHUB_SHORTHAND_PATTERN = /^([a-zA-Z0-9_.-]+)\/([a-zA-Z0-9_.-]+)(?:@(.+))?$/;
12
+ /**
13
+ * Error thrown when source parsing fails.
14
+ */
15
+ export class SourceParseError extends Error {
16
+ source;
17
+ constructor(message, source) {
18
+ super(message);
19
+ this.source = source;
20
+ this.name = "SourceParseError";
21
+ }
22
+ }
23
+ /**
24
+ * Check if a string looks like a local path.
25
+ *
26
+ * Local paths start with:
27
+ * - ./ (relative)
28
+ * - ../ (parent relative)
29
+ * - / (absolute)
30
+ * - ~ (home directory)
31
+ */
32
+ function isLocalPath(source) {
33
+ return (source.startsWith("./") ||
34
+ source.startsWith("../") ||
35
+ source.startsWith("/") ||
36
+ source.startsWith("~"));
37
+ }
38
+ /**
39
+ * Check if a string looks like a URL.
40
+ */
41
+ function isUrl(source) {
42
+ return (source.startsWith("http://") ||
43
+ source.startsWith("https://") ||
44
+ source.startsWith("git://") ||
45
+ source.startsWith("ssh://"));
46
+ }
47
+ /**
48
+ * Parse a GitHub shorthand source.
49
+ *
50
+ * @param source - GitHub shorthand (e.g., "example-org/kits@v1.0.0")
51
+ * @returns Parsed GitHub source descriptor
52
+ * @throws SourceParseError if the source is not valid GitHub shorthand
53
+ */
54
+ function parseGitHubShorthand(source) {
55
+ const match = source.match(GITHUB_SHORTHAND_PATTERN);
56
+ if (!match) {
57
+ throw new SourceParseError(`Invalid GitHub shorthand: ${source}`, source);
58
+ }
59
+ const [, owner, repo, ref] = match;
60
+ const result = {
61
+ type: "github",
62
+ owner: owner,
63
+ repo: repo,
64
+ };
65
+ if (ref) {
66
+ result.ref = ref;
67
+ }
68
+ return result;
69
+ }
70
+ /**
71
+ * Parse a local path source.
72
+ *
73
+ * @param source - Local path (e.g., "./my-kits" or "/absolute/path")
74
+ * @returns Parsed local source descriptor
75
+ */
76
+ function parseLocalPath(source) {
77
+ let resolvedPath;
78
+ if (source.startsWith("~")) {
79
+ // Expand home directory
80
+ const home = process.env["HOME"] || process.env["USERPROFILE"] || "";
81
+ resolvedPath = path.resolve(source.replace(/^~/, home));
82
+ }
83
+ else {
84
+ resolvedPath = path.resolve(source);
85
+ }
86
+ return {
87
+ type: "local",
88
+ path: resolvedPath,
89
+ };
90
+ }
91
+ /**
92
+ * Parse a source string into a typed source descriptor.
93
+ *
94
+ * Supported formats:
95
+ * - GitHub shorthand: org/repo, org/repo@ref
96
+ * - Local paths: ./path, ../path, /absolute/path, ~/path
97
+ *
98
+ * @param source - The source string to parse
99
+ * @returns Parsed source descriptor
100
+ * @throws SourceParseError if the source format is not recognized
101
+ */
102
+ export function parseSource(source) {
103
+ if (!source || source.trim() === "") {
104
+ throw new SourceParseError("Source cannot be empty", source);
105
+ }
106
+ const trimmed = source.trim();
107
+ // Check for URLs (not supported in initial release)
108
+ if (isUrl(trimmed)) {
109
+ throw new SourceParseError("URL sources are not supported. Use GitHub shorthand (org/repo) or local paths instead.", source);
110
+ }
111
+ // Check for local paths first (they might contain slashes)
112
+ if (isLocalPath(trimmed)) {
113
+ return parseLocalPath(trimmed);
114
+ }
115
+ // Try GitHub shorthand
116
+ if (GITHUB_SHORTHAND_PATTERN.test(trimmed)) {
117
+ return parseGitHubShorthand(trimmed);
118
+ }
119
+ // Unknown format
120
+ throw new SourceParseError(`Unrecognized source format: ${source}. ` +
121
+ "Expected GitHub shorthand (org/repo) or local path (./path).", source);
122
+ }
123
+ /**
124
+ * Format a source descriptor back to a string.
125
+ *
126
+ * @param descriptor - The source descriptor to format
127
+ * @returns Formatted source string
128
+ */
129
+ export function formatSource(descriptor) {
130
+ if (descriptor.type === "github") {
131
+ const base = `${descriptor.owner}/${descriptor.repo}`;
132
+ return descriptor.ref ? `${base}@${descriptor.ref}` : base;
133
+ }
134
+ return descriptor.path;
135
+ }
136
+ //# sourceMappingURL=source-parser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"source-parser.js","sourceRoot":"","sources":["../../src/discovery/source-parser.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,145 @@
1
+ /**
2
+ * Discovery type definitions.
3
+ *
4
+ * These types support source fetching and kit discovery from repositories.
5
+ */
6
+ import type { PrimitiveType, KitManifest, KitRegistry, PrimitivesRegistry } from "../core/types.js";
7
+ /**
8
+ * Source types supported by the installer.
9
+ */
10
+ export type SourceType = "github" | "local";
11
+ /**
12
+ * Parsed GitHub source.
13
+ */
14
+ export interface GitHubSource {
15
+ type: "github";
16
+ owner: string;
17
+ repo: string;
18
+ ref?: string;
19
+ }
20
+ /**
21
+ * Parsed local source.
22
+ */
23
+ export interface LocalSource {
24
+ type: "local";
25
+ path: string;
26
+ }
27
+ /**
28
+ * Parsed source descriptor.
29
+ */
30
+ export type SourceDescriptor = GitHubSource | LocalSource;
31
+ /**
32
+ * Type guard for GitHub sources.
33
+ */
34
+ export declare function isGitHubSource(source: SourceDescriptor): source is GitHubSource;
35
+ /**
36
+ * Type guard for local sources.
37
+ */
38
+ export declare function isLocalSource(source: SourceDescriptor): source is LocalSource;
39
+ /**
40
+ * Result of fetching a source.
41
+ */
42
+ export interface FetchResult {
43
+ localPath: string;
44
+ cleanup?: () => Promise<void>;
45
+ }
46
+ /**
47
+ * Primitive counts for a kit.
48
+ */
49
+ export interface PrimitiveCounts {
50
+ commands: number;
51
+ skills: number;
52
+ subagents: number;
53
+ mcp: number;
54
+ hooks: number;
55
+ }
56
+ /**
57
+ * Discovered kit with computed metadata.
58
+ */
59
+ export interface DiscoveredKit {
60
+ name: string;
61
+ path: string;
62
+ manifest: KitManifest;
63
+ requiredPrimitives: PrimitiveType[];
64
+ primitiveCounts: PrimitiveCounts;
65
+ }
66
+ /**
67
+ * Repository metadata inferred from kits.json or structure.
68
+ */
69
+ export interface RepositoryMetadata {
70
+ name: string;
71
+ description?: string;
72
+ version?: string;
73
+ owner?: {
74
+ name: string;
75
+ url?: string;
76
+ };
77
+ }
78
+ /**
79
+ * Result of kit discovery.
80
+ */
81
+ export interface KitDiscoveryResult {
82
+ source: string;
83
+ localPath: string;
84
+ repository: RepositoryMetadata;
85
+ registry?: KitRegistry;
86
+ primitivesRegistry?: PrimitivesRegistry;
87
+ kits: DiscoveredKit[];
88
+ errors: DiscoveryError[];
89
+ }
90
+ /**
91
+ * Error during kit discovery.
92
+ */
93
+ export interface DiscoveryError {
94
+ type: "invalid-manifest" | "missing-file" | "parse-error" | "validation-error";
95
+ path?: string;
96
+ message: string;
97
+ }
98
+ /**
99
+ * Source fetcher interface.
100
+ */
101
+ export interface SourceFetcher {
102
+ /**
103
+ * Check if this fetcher can handle the given source.
104
+ */
105
+ canHandle(source: string): boolean;
106
+ /**
107
+ * Fetch the source to a local directory.
108
+ */
109
+ fetch(source: string): Promise<FetchResult>;
110
+ }
111
+ /**
112
+ * Detected harness information.
113
+ */
114
+ export interface DetectedHarness {
115
+ name: string;
116
+ displayName: string;
117
+ detected: boolean;
118
+ version?: string;
119
+ configPath?: string;
120
+ installationPaths: {
121
+ commands: string;
122
+ skills: string;
123
+ subagents?: string;
124
+ hooks?: string;
125
+ };
126
+ supportedPrimitives: PrimitiveType[];
127
+ }
128
+ /**
129
+ * Compatibility information for a kit against a harness.
130
+ */
131
+ export interface KitCompatibility {
132
+ harness: string;
133
+ compatible: boolean;
134
+ missingPrimitives: PrimitiveType[];
135
+ experimentalPrimitives: PrimitiveType[];
136
+ }
137
+ /**
138
+ * Compatibility matrix for a kit across all harnesses.
139
+ */
140
+ export interface CompatibilityMatrix {
141
+ kit: string;
142
+ requiredPrimitives: PrimitiveType[];
143
+ harnesses: KitCompatibility[];
144
+ }
145
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/discovery/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,WAAW,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAEpG;;GAEG;AACH,MAAM,MAAM,UAAU,GAAG,QAAQ,GAAG,OAAO,CAAC;AAE5C;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,QAAQ,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,OAAO,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;GAEG;AACH,MAAM,MAAM,gBAAgB,GAAG,YAAY,GAAG,WAAW,CAAC;AAE1D;;GAEG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,gBAAgB,GAAG,MAAM,IAAI,YAAY,CAE/E;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,gBAAgB,GAAG,MAAM,IAAI,WAAW,CAE7E;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAC/B;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;CACf;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,WAAW,CAAC;IACtB,kBAAkB,EAAE,aAAa,EAAE,CAAC;IACpC,eAAe,EAAE,eAAe,CAAC;CAClC;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE;QACN,IAAI,EAAE,MAAM,CAAC;QACb,GAAG,CAAC,EAAE,MAAM,CAAC;KACd,CAAC;CACH;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,kBAAkB,CAAC;IAC/B,QAAQ,CAAC,EAAE,WAAW,CAAC;IACvB,kBAAkB,CAAC,EAAE,kBAAkB,CAAC;IACxC,IAAI,EAAE,aAAa,EAAE,CAAC;IACtB,MAAM,EAAE,cAAc,EAAE,CAAC;CAC1B;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,kBAAkB,GAAG,cAAc,GAAG,aAAa,GAAG,kBAAkB,CAAC;IAC/E,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B;;OAEG;IACH,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC;IAEnC;;OAEG;IACH,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;CAC7C;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,OAAO,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,iBAAiB,EAAE;QACjB,QAAQ,EAAE,MAAM,CAAC;QACjB,MAAM,EAAE,MAAM,CAAC;QACf,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB,CAAC;IACF,mBAAmB,EAAE,aAAa,EAAE,CAAC;CACtC;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,OAAO,CAAC;IACpB,iBAAiB,EAAE,aAAa,EAAE,CAAC;IACnC,sBAAsB,EAAE,aAAa,EAAE,CAAC;CACzC;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,GAAG,EAAE,MAAM,CAAC;IACZ,kBAAkB,EAAE,aAAa,EAAE,CAAC;IACpC,SAAS,EAAE,gBAAgB,EAAE,CAAC;CAC/B"}
@@ -0,0 +1,18 @@
1
+ /**
2
+ * Discovery type definitions.
3
+ *
4
+ * These types support source fetching and kit discovery from repositories.
5
+ */
6
+ /**
7
+ * Type guard for GitHub sources.
8
+ */
9
+ export function isGitHubSource(source) {
10
+ return source.type === "github";
11
+ }
12
+ /**
13
+ * Type guard for local sources.
14
+ */
15
+ export function isLocalSource(source) {
16
+ return source.type === "local";
17
+ }
18
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/discovery/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAgCH;;GAEG;AACH,MAAM,UAAU,cAAc,CAAC,MAAwB;IACrD,OAAO,MAAM,CAAC,IAAI,KAAK,QAAQ,CAAC;AAClC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,aAAa,CAAC,MAAwB;IACpD,OAAO,MAAM,CAAC,IAAI,KAAK,OAAO,CAAC;AACjC,CAAC"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * @hashicorp/kits
3
+ *
4
+ * Install AI agent kits into your favorite coding assistants.
5
+ */
6
+ export * from "./core/types.js";
7
+ export * from "./adapters/types.js";
8
+ export * from "./adapters/index.js";
9
+ export * from "./manifest/types.js";
10
+ export * from "./resolution/types.js";
11
+ export * from "./discovery/types.js";
12
+ export * from "./cli/types.js";
13
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,cAAc,iBAAiB,CAAC;AAGhC,cAAc,qBAAqB,CAAC;AACpC,cAAc,qBAAqB,CAAC;AAGpC,cAAc,qBAAqB,CAAC;AAGpC,cAAc,uBAAuB,CAAC;AAGtC,cAAc,sBAAsB,CAAC;AAGrC,cAAc,gBAAgB,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,19 @@
1
+ /**
2
+ * @hashicorp/kits
3
+ *
4
+ * Install AI agent kits into your favorite coding assistants.
5
+ */
6
+ // Core types
7
+ export * from "./core/types.js";
8
+ // Adapter types and implementations
9
+ export * from "./adapters/types.js";
10
+ export * from "./adapters/index.js";
11
+ // Manifest types
12
+ export * from "./manifest/types.js";
13
+ // Resolution types
14
+ export * from "./resolution/types.js";
15
+ // Discovery types
16
+ export * from "./discovery/types.js";
17
+ // CLI types
18
+ export * from "./cli/types.js";
19
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,aAAa;AACb,cAAc,iBAAiB,CAAC;AAEhC,oCAAoC;AACpC,cAAc,qBAAqB,CAAC;AACpC,cAAc,qBAAqB,CAAC;AAEpC,iBAAiB;AACjB,cAAc,qBAAqB,CAAC;AAEpC,mBAAmB;AACnB,cAAc,uBAAuB,CAAC;AAEtC,kBAAkB;AAClB,cAAc,sBAAsB,CAAC;AAErC,YAAY;AACZ,cAAc,gBAAgB,CAAC"}
@@ -0,0 +1,79 @@
1
+ /**
2
+ * Manifest module for the kit installer.
3
+ *
4
+ * This module handles reading, writing, and managing the installation manifest
5
+ * that tracks installed kits and primitives across harnesses.
6
+ */
7
+ import type { HarnessName, InstallationScope, ResolvedPrimitive, KitManifest } from "../core/types.js";
8
+ import type { InstalledKit } from "./types.js";
9
+ export type { InstalledPrimitive, InstalledKit, HarnessInstallation, InstallationManifest, UpgradeCheck, UpgradeSummary, } from "./types.js";
10
+ export { MANIFEST_VERSION, GLOBAL_MANIFEST_PATH, PROJECT_MANIFEST_DIR, PROJECT_MANIFEST_FILENAME, createEmptyManifest, } from "./types.js";
11
+ export { readManifest, getOrCreateManifest, ManifestReadError } from "./read.js";
12
+ export { writeManifest, ManifestWriteError } from "./write.js";
13
+ export { getManifestPathForScope, getManifestDirForScope } from "./write.js";
14
+ export { checkForUpgrades, checkForUpgradesInScope, createUpgradeSummary, } from "./upgrade-check.js";
15
+ export { expandPath, getManifestPath, getManifestDir, ensureManifestDir, } from "./utils.js";
16
+ /**
17
+ * Record a kit installation in the manifest.
18
+ *
19
+ * @param harness - The harness name
20
+ * @param kit - The kit manifest
21
+ * @param primitives - The resolved primitives that were installed
22
+ * @param source - The source repository
23
+ * @param scope - Installation scope (global or project)
24
+ * @param projectRoot - Absolute path to project root (required for project scope)
25
+ */
26
+ export declare function recordInstallation(harness: HarnessName, kit: KitManifest, primitives: ResolvedPrimitive[], source: string, scope?: InstallationScope, projectRoot?: string): Promise<void>;
27
+ /**
28
+ * Remove a kit installation from the manifest.
29
+ *
30
+ * @param harness - The harness name
31
+ * @param kitName - The kit name to remove
32
+ * @param scope - Installation scope (global or project)
33
+ * @param projectRoot - Absolute path to project root (required for project scope)
34
+ * @returns The removed kit info or null if not found
35
+ */
36
+ export declare function removeInstallation(harness: HarnessName, kitName: string, scope?: InstallationScope, projectRoot?: string): Promise<InstalledKit | null>;
37
+ /**
38
+ * Get all installed kits, optionally filtered by harness.
39
+ *
40
+ * @param scope - Installation scope (global or project)
41
+ * @param projectRoot - Absolute path to project root (required for project scope)
42
+ * @param harness - Optional harness name to filter by
43
+ * @returns Array of installed kit info with harness context
44
+ */
45
+ export declare function getInstalledKits(scope?: InstallationScope, projectRoot?: string, harness?: HarnessName): Promise<Array<{
46
+ harness: HarnessName;
47
+ kitName: string;
48
+ kit: InstalledKit;
49
+ }>>;
50
+ /**
51
+ * Check if a kit is installed in any harness.
52
+ *
53
+ * @param kitName - The kit name to check
54
+ * @param scope - Installation scope (global or project)
55
+ * @param projectRoot - Absolute path to project root (required for project scope)
56
+ * @returns True if the kit is installed somewhere
57
+ */
58
+ export declare function isKitInstalled(kitName: string, scope?: InstallationScope, projectRoot?: string): Promise<boolean>;
59
+ /**
60
+ * Check if a kit is installed in a specific harness.
61
+ *
62
+ * @param harness - The harness name
63
+ * @param kitName - The kit name to check
64
+ * @param scope - Installation scope (global or project)
65
+ * @param projectRoot - Absolute path to project root (required for project scope)
66
+ * @returns True if the kit is installed in the harness
67
+ */
68
+ export declare function isKitInstalledInHarness(harness: HarnessName, kitName: string, scope?: InstallationScope, projectRoot?: string): Promise<boolean>;
69
+ /**
70
+ * Get a specific installed kit.
71
+ *
72
+ * @param harness - The harness name
73
+ * @param kitName - The kit name
74
+ * @param scope - Installation scope (global or project)
75
+ * @param projectRoot - Absolute path to project root (required for project scope)
76
+ * @returns The installed kit or null if not found
77
+ */
78
+ export declare function getInstalledKit(harness: HarnessName, kitName: string, scope?: InstallationScope, projectRoot?: string): Promise<InstalledKit | null>;
79
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/manifest/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACvG,OAAO,KAAK,EAAE,YAAY,EAAsB,MAAM,YAAY,CAAC;AAKnE,YAAY,EACV,kBAAkB,EAClB,YAAY,EACZ,mBAAmB,EACnB,oBAAoB,EACpB,YAAY,EACZ,cAAc,GACf,MAAM,YAAY,CAAC;AAEpB,OAAO,EACL,gBAAgB,EAChB,oBAAoB,EACpB,oBAAoB,EACpB,yBAAyB,EACzB,mBAAmB,GACpB,MAAM,YAAY,CAAC;AAGpB,OAAO,EAAE,YAAY,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAGjF,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAG/D,OAAO,EAAE,uBAAuB,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAC;AAG7E,OAAO,EACL,gBAAgB,EAChB,uBAAuB,EACvB,oBAAoB,GACrB,MAAM,oBAAoB,CAAC;AAG5B,OAAO,EACL,UAAU,EACV,eAAe,EACf,cAAc,EACd,iBAAiB,GAClB,MAAM,YAAY,CAAC;AAEpB;;;;;;;;;GASG;AACH,wBAAsB,kBAAkB,CACtC,OAAO,EAAE,WAAW,EACpB,GAAG,EAAE,WAAW,EAChB,UAAU,EAAE,iBAAiB,EAAE,EAC/B,MAAM,EAAE,MAAM,EACd,KAAK,GAAE,iBAA4B,EACnC,WAAW,CAAC,EAAE,MAAM,GACnB,OAAO,CAAC,IAAI,CAAC,CA8Cf;AAED;;;;;;;;GAQG;AACH,wBAAsB,kBAAkB,CACtC,OAAO,EAAE,WAAW,EACpB,OAAO,EAAE,MAAM,EACf,KAAK,GAAE,iBAA4B,EACnC,WAAW,CAAC,EAAE,MAAM,GACnB,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,CA0B9B;AAED;;;;;;;GAOG;AACH,wBAAsB,gBAAgB,CACpC,KAAK,GAAE,iBAA4B,EACnC,WAAW,CAAC,EAAE,MAAM,EACpB,OAAO,CAAC,EAAE,WAAW,GACpB,OAAO,CAAC,KAAK,CAAC;IAAE,OAAO,EAAE,WAAW,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,YAAY,CAAA;CAAE,CAAC,CAAC,CAyB9E;AAED;;;;;;;GAOG;AACH,wBAAsB,cAAc,CAClC,OAAO,EAAE,MAAM,EACf,KAAK,GAAE,iBAA4B,EACnC,WAAW,CAAC,EAAE,MAAM,GACnB,OAAO,CAAC,OAAO,CAAC,CAalB;AAED;;;;;;;;GAQG;AACH,wBAAsB,uBAAuB,CAC3C,OAAO,EAAE,WAAW,EACpB,OAAO,EAAE,MAAM,EACf,KAAK,GAAE,iBAA4B,EACnC,WAAW,CAAC,EAAE,MAAM,GACnB,OAAO,CAAC,OAAO,CAAC,CAQlB;AAED;;;;;;;;GAQG;AACH,wBAAsB,eAAe,CACnC,OAAO,EAAE,WAAW,EACpB,OAAO,EAAE,MAAM,EACf,KAAK,GAAE,iBAA4B,EACnC,WAAW,CAAC,EAAE,MAAM,GACnB,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,CAY9B"}