@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,171 @@
1
+ /**
2
+ * Harness selection screen.
3
+ *
4
+ * Displays detected AI harnesses and allows user to select which ones to configure.
5
+ */
6
+ import * as clack from "@clack/prompts";
7
+ import pc from "picocolors";
8
+ import { formatCount } from "./spinner.js";
9
+ /**
10
+ * Display detected harnesses summary.
11
+ */
12
+ export function displayDetectedHarnesses(harnesses) {
13
+ const detected = harnesses.filter((h) => h.detected);
14
+ const notDetected = harnesses.filter((h) => !h.detected);
15
+ if (detected.length > 0) {
16
+ clack.log.info(`Found ${formatCount(detected.length, "harness", "harnesses")}:`);
17
+ const detectedLines = detected.map((h) => {
18
+ const version = h.version ? pc.dim(` v${h.version}`) : "";
19
+ return `${h.displayName}${version} ${pc.green("✓")}`;
20
+ });
21
+ clack.log.message(detectedLines.join("\n"));
22
+ }
23
+ if (notDetected.length > 0 && detected.length > 0) {
24
+ clack.log.message("");
25
+ clack.log.info(pc.dim("Not detected:"));
26
+ const missingLines = notDetected.map((h) => `${pc.dim("○")} ${pc.dim(h.displayName)}`);
27
+ clack.log.message(missingLines.join("\n"));
28
+ }
29
+ }
30
+ /**
31
+ * Create select options from detected harnesses.
32
+ */
33
+ export function createHarnessOptions(harnesses, includeAllOption = true) {
34
+ const detected = harnesses.filter((h) => h.detected);
35
+ const options = detected.map((h) => ({
36
+ value: h.name,
37
+ label: h.displayName,
38
+ hint: h.version ? `v${h.version}` : undefined,
39
+ }));
40
+ if (includeAllOption && detected.length > 1) {
41
+ options.push({
42
+ value: "__all__",
43
+ label: "All detected harnesses",
44
+ });
45
+ }
46
+ return options;
47
+ }
48
+ /**
49
+ * Prompt user to select harnesses for configuration.
50
+ */
51
+ export async function selectHarnesses(harnesses, options) {
52
+ const detected = harnesses.filter((h) => h.detected);
53
+ // If only one harness detected, auto-select it
54
+ if (detected.length === 1 && detected[0]) {
55
+ return {
56
+ cancelled: false,
57
+ selected: [detected[0].name],
58
+ };
59
+ }
60
+ // If no harnesses detected, return empty selection
61
+ if (detected.length === 0) {
62
+ return {
63
+ cancelled: false,
64
+ selected: [],
65
+ };
66
+ }
67
+ // Show detected harnesses if requested
68
+ if (options?.showDetected !== false) {
69
+ displayDetectedHarnesses(harnesses);
70
+ }
71
+ // Prompt for selection
72
+ const selectOptions = createHarnessOptions(harnesses, options?.includeAllOption !== false);
73
+ // Convert options to clack's expected format
74
+ const clackOptions = selectOptions.map((opt) => {
75
+ const base = {
76
+ value: opt.value,
77
+ label: opt.label,
78
+ };
79
+ if (opt.hint !== undefined) {
80
+ base.hint = opt.hint;
81
+ }
82
+ return base;
83
+ });
84
+ const selected = await clack.multiselect({
85
+ message: `Which harnesses do you want to configure?\n${pc.gray("│")} `,
86
+ options: clackOptions,
87
+ required: true,
88
+ });
89
+ if (clack.isCancel(selected)) {
90
+ return {
91
+ cancelled: true,
92
+ selected: [],
93
+ };
94
+ }
95
+ const selectedValues = selected;
96
+ // Handle "All" option
97
+ if (selectedValues.includes("__all__")) {
98
+ return {
99
+ cancelled: false,
100
+ selected: detected.map((h) => h.name),
101
+ };
102
+ }
103
+ return {
104
+ cancelled: false,
105
+ selected: selectedValues,
106
+ };
107
+ }
108
+ /**
109
+ * Filter harnesses by names.
110
+ */
111
+ export function filterHarnessesByName(harnesses, names) {
112
+ const nameSet = new Set(names);
113
+ return harnesses.filter((h) => nameSet.has(h.name));
114
+ }
115
+ /**
116
+ * Get harnesses that are detected but not in the provided list.
117
+ */
118
+ export function getMissingHarnesses(harnesses, requestedNames) {
119
+ const detected = new Set(harnesses.filter((h) => h.detected).map((h) => h.name));
120
+ return requestedNames.filter((name) => !detected.has(name));
121
+ }
122
+ /**
123
+ * Display a warning about missing harnesses.
124
+ */
125
+ export function warnMissingHarnesses(missing) {
126
+ if (missing.length === 0)
127
+ return;
128
+ const label = missing.length === 1 ? "Harness" : "Harnesses";
129
+ clack.log.warn(`${label} not detected: ${missing.join(", ")}`);
130
+ }
131
+ /**
132
+ * Display info about no harnesses being detected.
133
+ */
134
+ export function displayNoHarnessesDetected() {
135
+ clack.log.error("No compatible AI harnesses detected");
136
+ clack.log.info("Install one of: Claude Code, Codex, Gemini CLI, GitHub Copilot, or OpenCode");
137
+ }
138
+ /**
139
+ * Validate that at least one harness is selected.
140
+ */
141
+ export function validateHarnessSelection(harnesses, selected) {
142
+ if (selected.length === 0) {
143
+ return {
144
+ valid: false,
145
+ error: "No harnesses selected",
146
+ };
147
+ }
148
+ const detected = new Set(harnesses.filter((h) => h.detected).map((h) => h.name));
149
+ const invalid = selected.filter((name) => !detected.has(name));
150
+ if (invalid.length > 0) {
151
+ return {
152
+ valid: false,
153
+ error: `Selected harnesses not detected: ${invalid.join(", ")}`,
154
+ };
155
+ }
156
+ return { valid: true };
157
+ }
158
+ /**
159
+ * Get display name for a harness.
160
+ */
161
+ export function getHarnessDisplayName(harnesses, name) {
162
+ const harness = harnesses.find((h) => h.name === name);
163
+ return harness?.displayName ?? name;
164
+ }
165
+ /**
166
+ * Create a map of harness names to display names.
167
+ */
168
+ export function createHarnessDisplayMap(harnesses) {
169
+ return new Map(harnesses.map((h) => [h.name, h.displayName]));
170
+ }
171
+ //# sourceMappingURL=harness-select.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"harness-select.js","sourceRoot":"","sources":["../../src/tui/harness-select.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,112 @@
1
+ /**
2
+ * TUI module - Interactive terminal UI components.
3
+ *
4
+ * This module provides clack-based interactive components for:
5
+ * - Harness detection and selection
6
+ * - Kit discovery and selection
7
+ * - Compatibility checking
8
+ * - Primitive resolution display
9
+ * - Installation progress tracking
10
+ * - Summary display
11
+ * - Upgrade selection
12
+ * - Environment variable prompting
13
+ */
14
+ export * from "./types.js";
15
+ export * from "./spinner.js";
16
+ export { displayDetectedHarnesses, createHarnessOptions, selectHarnesses, filterHarnessesByName, getMissingHarnesses, warnMissingHarnesses, displayNoHarnessesDetected, validateHarnessSelection, getHarnessDisplayName, createHarnessDisplayMap, } from "./harness-select.js";
17
+ export { formatPrimitiveCounts, displayKitDetails, displayAvailableKits, createKitOptions, selectKits, filterKitsByName, getMissingKitNames, displayMissingKits, displayNoKitsFound, validateKitSelection, getKitByName, formatKitList, displayKitsJson, } from "./kit-select.js";
18
+ export { checkKitHarnessCompatibility, buildCompatibilityMatrix, displayKitCompatibility, displayCompatibilityMatrix, hasIncompatibilities, getIncompatiblePairs, getCompatiblePairs, displayIncompatibilitySummary, promptIncompatibilityChoice, runCompatibilityCheck, getCompatibleKits, getCompatibleHarnesses, } from "./compatibility.js";
19
+ export { toDisplayEntry, toKitResolutionDisplay, toMultiKitResolutionDisplay, formatResolvedEntry, displayResolutionByType, displayKitResolution, displayResolutionResults, displayResolutionSummary, hasResolutionErrors, getAllResolutionErrors, displayResolutionErrors, getUniquePrimitives, countPrimitivesByType, } from "./resolution.js";
20
+ export { formatFileOperation, InstallProgressTracker, createProgressHandler, displayProgressSummary, toFileOperationDisplay, displayFileOperations, displayPrimitiveStatus, } from "./progress.js";
21
+ export { buildInstallSummary, displayInstallPlanSummary, confirmInstallPlan, displayInstallSummary, displayDryRunSummary, displayInstallFailure, displayTotalsSummary, summaryToJson, } from "./summary.js";
22
+ export { determineSeverity, toUpgradeDisplayEntry, formatUpgradeEntry, displayUpgradeEntry, displayUpgradesByKit, displayUpgradeSummary, displayNoUpgrades, createUpgradeOptions, selectUpgrades, displayUpgradeCheck, upgradesToJson, filterUpgradesByKit, filterUpgradesByHarness, getBreakingUpgrades, getNonBreakingUpgrades, } from "./upgrade-select.js";
23
+ export { extractEnvVarsFromConfig, extractAllEnvVars, categorizeEnvVars, displayEnvVarStatus, displaySensitiveWarnings, promptForEnvVars, promptForSharedMcpInstances, applyEnvVarResults, applyEnvVarResultsAsResolved, areRequiredVarsSatisfied, getMissingRequiredVars, getMissingSensitiveVars, type EnvVarCategorization, } from "./env-prompt.js";
24
+ export { selectScope, createScopeOptions, displayScopeInfo, formatScope, formatScopeWithDescription, getScopePathDescription, displayScopeConfirmation, type ScopeSelectionResult, } from "./scope-select.js";
25
+ export { checkHarnessScopeLimitations, checkKitScopeCompatibility, displayScopeLimitations, displayKitScopeIncompatibility, getCompatiblePairs as getScopeCompatiblePairs, getIncompatiblePairs as getScopeIncompatiblePairs, promptScopeIncompatibility, runScopeCompatibilityCheck, hasScopeLimitations, type ScopeLimitation, type KitScopeCompatibility, type ScopeCompatibilityResult, type ScopeIncompatibilityChoice, type ScopeCompatibilityPromptResult, } from "./scope-compatibility.js";
26
+ /**
27
+ * Start interactive TUI session.
28
+ */
29
+ export declare function intro(title?: string): void;
30
+ /**
31
+ * End interactive TUI session with success.
32
+ */
33
+ export declare function outroSuccess(message?: string): void;
34
+ /**
35
+ * End interactive TUI session with failure.
36
+ */
37
+ export declare function outroError(message?: string): void;
38
+ /**
39
+ * End interactive TUI session with cancellation.
40
+ */
41
+ export declare function outroCancel(message?: string): void;
42
+ /**
43
+ * Log an info message.
44
+ */
45
+ export declare function logInfo(message: string): void;
46
+ /**
47
+ * Log a success message.
48
+ */
49
+ export declare function logSuccess(message: string): void;
50
+ /**
51
+ * Log a warning message.
52
+ */
53
+ export declare function logWarning(message: string): void;
54
+ /**
55
+ * Log an error message.
56
+ */
57
+ export declare function logError(message: string): void;
58
+ /**
59
+ * Log a step message.
60
+ */
61
+ export declare function logStep(message: string): void;
62
+ /**
63
+ * Log a message (generic).
64
+ */
65
+ export declare function logMessage(message: string): void;
66
+ /**
67
+ * Check if a value is a cancellation.
68
+ */
69
+ export declare function isCancel(value: unknown): value is symbol;
70
+ /**
71
+ * Prompt for confirmation.
72
+ */
73
+ export declare function confirm(message: string, options?: {
74
+ initialValue?: boolean;
75
+ active?: string;
76
+ inactive?: string;
77
+ }): Promise<boolean | symbol>;
78
+ /**
79
+ * Prompt for text input.
80
+ */
81
+ export declare function text(message: string, options?: {
82
+ placeholder?: string;
83
+ defaultValue?: string;
84
+ validate?: (value: string) => string | undefined;
85
+ }): Promise<string | symbol>;
86
+ /**
87
+ * Prompt for single selection.
88
+ */
89
+ export declare function select<T extends string>(message: string, options: {
90
+ value: T;
91
+ label: string;
92
+ hint?: string | undefined;
93
+ }[]): Promise<T | symbol>;
94
+ /**
95
+ * Prompt for multiple selection.
96
+ */
97
+ export declare function multiselect<T extends string>(message: string, options: {
98
+ value: T;
99
+ label: string;
100
+ hint?: string | undefined;
101
+ }[], required?: boolean): Promise<T[] | symbol>;
102
+ /**
103
+ * Display a note.
104
+ */
105
+ export declare function note(message: string, title?: string): void;
106
+ /**
107
+ * Group related log messages.
108
+ */
109
+ export declare function group<T>(prompts: () => Promise<T>, options?: {
110
+ onCancel?: () => void;
111
+ }): Promise<T>;
112
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tui/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,213 @@
1
+ /**
2
+ * TUI module - Interactive terminal UI components.
3
+ *
4
+ * This module provides clack-based interactive components for:
5
+ * - Harness detection and selection
6
+ * - Kit discovery and selection
7
+ * - Compatibility checking
8
+ * - Primitive resolution display
9
+ * - Installation progress tracking
10
+ * - Summary display
11
+ * - Upgrade selection
12
+ * - Environment variable prompting
13
+ */
14
+ import * as clack from "@clack/prompts";
15
+ import pc from "picocolors";
16
+ import { debugLog } from "../core/debug.js";
17
+ // Export types
18
+ export * from "./types.js";
19
+ // Export spinner utilities
20
+ export * from "./spinner.js";
21
+ // Export harness selection
22
+ export { displayDetectedHarnesses, createHarnessOptions, selectHarnesses, filterHarnessesByName, getMissingHarnesses, warnMissingHarnesses, displayNoHarnessesDetected, validateHarnessSelection, getHarnessDisplayName, createHarnessDisplayMap, } from "./harness-select.js";
23
+ // Export kit selection
24
+ export { formatPrimitiveCounts, displayKitDetails, displayAvailableKits, createKitOptions, selectKits, filterKitsByName, getMissingKitNames, displayMissingKits, displayNoKitsFound, validateKitSelection, getKitByName, formatKitList, displayKitsJson, } from "./kit-select.js";
25
+ // Export compatibility
26
+ export { checkKitHarnessCompatibility, buildCompatibilityMatrix, displayKitCompatibility, displayCompatibilityMatrix, hasIncompatibilities, getIncompatiblePairs, getCompatiblePairs, displayIncompatibilitySummary, promptIncompatibilityChoice, runCompatibilityCheck, getCompatibleKits, getCompatibleHarnesses, } from "./compatibility.js";
27
+ // Export resolution display
28
+ export { toDisplayEntry, toKitResolutionDisplay, toMultiKitResolutionDisplay, formatResolvedEntry, displayResolutionByType, displayKitResolution, displayResolutionResults, displayResolutionSummary, hasResolutionErrors, getAllResolutionErrors, displayResolutionErrors, getUniquePrimitives, countPrimitivesByType, } from "./resolution.js";
29
+ // Export progress display
30
+ export { formatFileOperation, InstallProgressTracker, createProgressHandler, displayProgressSummary, toFileOperationDisplay, displayFileOperations, displayPrimitiveStatus, } from "./progress.js";
31
+ // Export summary display
32
+ export { buildInstallSummary, displayInstallPlanSummary, confirmInstallPlan, displayInstallSummary, displayDryRunSummary, displayInstallFailure, displayTotalsSummary, summaryToJson, } from "./summary.js";
33
+ // Export upgrade selection
34
+ export { determineSeverity, toUpgradeDisplayEntry, formatUpgradeEntry, displayUpgradeEntry, displayUpgradesByKit, displayUpgradeSummary, displayNoUpgrades, createUpgradeOptions, selectUpgrades, displayUpgradeCheck, upgradesToJson, filterUpgradesByKit, filterUpgradesByHarness, getBreakingUpgrades, getNonBreakingUpgrades, } from "./upgrade-select.js";
35
+ // Export env prompts
36
+ export { extractEnvVarsFromConfig, extractAllEnvVars, categorizeEnvVars, displayEnvVarStatus, displaySensitiveWarnings, promptForEnvVars, promptForSharedMcpInstances, applyEnvVarResults, applyEnvVarResultsAsResolved, areRequiredVarsSatisfied, getMissingRequiredVars, getMissingSensitiveVars, } from "./env-prompt.js";
37
+ // Export scope selection
38
+ export { selectScope, createScopeOptions, displayScopeInfo, formatScope, formatScopeWithDescription, getScopePathDescription, displayScopeConfirmation, } from "./scope-select.js";
39
+ // Export scope compatibility
40
+ export { checkHarnessScopeLimitations, checkKitScopeCompatibility, displayScopeLimitations, displayKitScopeIncompatibility, getCompatiblePairs as getScopeCompatiblePairs, getIncompatiblePairs as getScopeIncompatiblePairs, promptScopeIncompatibility, runScopeCompatibilityCheck, hasScopeLimitations, } from "./scope-compatibility.js";
41
+ /**
42
+ * Start interactive TUI session.
43
+ */
44
+ export function intro(title) {
45
+ clack.intro(pc.cyan(title ?? "@hashicorp/kits"));
46
+ void debugLog({
47
+ level: "info",
48
+ event: "tui.intro",
49
+ message: title ?? "@hashicorp/kits",
50
+ });
51
+ }
52
+ /**
53
+ * End interactive TUI session with success.
54
+ */
55
+ export function outroSuccess(message) {
56
+ clack.outro(pc.green(message ?? "Done!"));
57
+ void debugLog({
58
+ level: "info",
59
+ event: "tui.outro.success",
60
+ message: message ?? "Done!",
61
+ });
62
+ }
63
+ /**
64
+ * End interactive TUI session with failure.
65
+ */
66
+ export function outroError(message) {
67
+ clack.outro(pc.red(message ?? "Installation failed"));
68
+ void debugLog({
69
+ level: "error",
70
+ event: "tui.outro.error",
71
+ message: message ?? "Installation failed",
72
+ });
73
+ }
74
+ /**
75
+ * End interactive TUI session with cancellation.
76
+ */
77
+ export function outroCancel(message) {
78
+ clack.cancel(message ?? "Installation cancelled");
79
+ void debugLog({
80
+ level: "warn",
81
+ event: "tui.outro.cancel",
82
+ message: message ?? "Installation cancelled",
83
+ });
84
+ }
85
+ /**
86
+ * Log an info message.
87
+ */
88
+ export function logInfo(message) {
89
+ clack.log.info(message);
90
+ void debugLog({ level: "info", event: "tui.log.info", message });
91
+ }
92
+ /**
93
+ * Log a success message.
94
+ */
95
+ export function logSuccess(message) {
96
+ clack.log.success(message);
97
+ void debugLog({ level: "info", event: "tui.log.success", message });
98
+ }
99
+ /**
100
+ * Log a warning message.
101
+ */
102
+ export function logWarning(message) {
103
+ clack.log.warn(message);
104
+ void debugLog({ level: "warn", event: "tui.log.warn", message });
105
+ }
106
+ /**
107
+ * Log an error message.
108
+ */
109
+ export function logError(message) {
110
+ clack.log.error(message);
111
+ void debugLog({ level: "error", event: "tui.log.error", message });
112
+ }
113
+ /**
114
+ * Log a step message.
115
+ */
116
+ export function logStep(message) {
117
+ clack.log.step(message);
118
+ void debugLog({ level: "info", event: "tui.log.step", message });
119
+ }
120
+ /**
121
+ * Log a message (generic).
122
+ */
123
+ export function logMessage(message) {
124
+ clack.log.message(message);
125
+ void debugLog({ level: "debug", event: "tui.log.message", message });
126
+ }
127
+ /**
128
+ * Check if a value is a cancellation.
129
+ */
130
+ export function isCancel(value) {
131
+ return clack.isCancel(value);
132
+ }
133
+ /**
134
+ * Prompt for confirmation.
135
+ */
136
+ export async function confirm(message, options) {
137
+ const confirmOptions = { message };
138
+ if (options?.initialValue !== undefined) {
139
+ confirmOptions.initialValue = options.initialValue;
140
+ }
141
+ if (options?.active !== undefined) {
142
+ confirmOptions.active = options.active;
143
+ }
144
+ if (options?.inactive !== undefined) {
145
+ confirmOptions.inactive = options.inactive;
146
+ }
147
+ return clack.confirm(confirmOptions);
148
+ }
149
+ /**
150
+ * Prompt for text input.
151
+ */
152
+ export async function text(message, options) {
153
+ const textOptions = { message };
154
+ if (options?.placeholder !== undefined) {
155
+ textOptions.placeholder = options.placeholder;
156
+ }
157
+ if (options?.defaultValue !== undefined) {
158
+ textOptions.defaultValue = options.defaultValue;
159
+ }
160
+ if (options?.validate !== undefined) {
161
+ textOptions.validate = options.validate;
162
+ }
163
+ return clack.text(textOptions);
164
+ }
165
+ /**
166
+ * Prompt for single selection.
167
+ */
168
+ export async function select(message, options) {
169
+ // Convert options to clack's expected format with explicit type casting
170
+ const clackOptions = options.map((opt) => {
171
+ if (opt.hint !== undefined) {
172
+ return { value: opt.value, label: opt.label, hint: opt.hint };
173
+ }
174
+ return { value: opt.value, label: opt.label };
175
+ });
176
+ return clack.select({
177
+ message,
178
+ options: clackOptions,
179
+ });
180
+ }
181
+ /**
182
+ * Prompt for multiple selection.
183
+ */
184
+ export async function multiselect(message, options, required) {
185
+ // Convert options to clack's expected format with explicit type casting
186
+ const clackOptions = options.map((opt) => {
187
+ if (opt.hint !== undefined) {
188
+ return { value: opt.value, label: opt.label, hint: opt.hint };
189
+ }
190
+ return { value: opt.value, label: opt.label };
191
+ });
192
+ return clack.multiselect({
193
+ message,
194
+ options: clackOptions,
195
+ required: required ?? true,
196
+ });
197
+ }
198
+ /**
199
+ * Display a note.
200
+ */
201
+ export function note(message, title) {
202
+ clack.note(message, title);
203
+ }
204
+ /**
205
+ * Group related log messages.
206
+ */
207
+ export async function group(prompts, options) {
208
+ const result = await clack.group({
209
+ result: prompts,
210
+ }, options?.onCancel ? { onCancel: options.onCancel } : undefined);
211
+ return result.result;
212
+ }
213
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tui/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,72 @@
1
+ /**
2
+ * Kit selection screen.
3
+ *
4
+ * Displays available kits with descriptions and primitive counts,
5
+ * allowing users to select which kits to install.
6
+ */
7
+ import type { DiscoveredKit, PrimitiveCounts } from "../discovery/types.js";
8
+ import type { KitSelectionResult, SelectOption } from "./types.js";
9
+ /**
10
+ * Format primitive counts as a summary string.
11
+ */
12
+ export declare function formatPrimitiveCounts(counts: PrimitiveCounts): string;
13
+ /**
14
+ * Display a single kit's detailed information.
15
+ */
16
+ export declare function displayKitDetails(kit: DiscoveredKit): void;
17
+ /**
18
+ * Display all available kits.
19
+ */
20
+ export declare function displayAvailableKits(kits: DiscoveredKit[]): void;
21
+ /**
22
+ * Create select options from discovered kits.
23
+ */
24
+ export declare function createKitOptions(kits: DiscoveredKit[]): SelectOption<string>[];
25
+ /**
26
+ * Prompt user to select kits for installation.
27
+ */
28
+ export declare function selectKits(kits: DiscoveredKit[], options?: {
29
+ showAvailable?: boolean;
30
+ }): Promise<KitSelectionResult>;
31
+ /**
32
+ * Filter kits by names.
33
+ */
34
+ export declare function filterKitsByName(kits: DiscoveredKit[], names: string[]): DiscoveredKit[];
35
+ /**
36
+ * Get kit names that were requested but not found.
37
+ */
38
+ export declare function getMissingKitNames(kits: DiscoveredKit[], requestedNames: string[]): string[];
39
+ /**
40
+ * Display error for missing kits.
41
+ */
42
+ export declare function displayMissingKits(missing: string[], available: DiscoveredKit[]): void;
43
+ /**
44
+ * Display error when no kits are found.
45
+ */
46
+ export declare function displayNoKitsFound(): void;
47
+ /**
48
+ * Validate kit selection.
49
+ */
50
+ export declare function validateKitSelection(kits: DiscoveredKit[], selected: string[]): {
51
+ valid: boolean;
52
+ error?: string;
53
+ };
54
+ /**
55
+ * Get a kit by name.
56
+ */
57
+ export declare function getKitByName(kits: DiscoveredKit[], name: string): DiscoveredKit | undefined;
58
+ /**
59
+ * Format kit list for display.
60
+ */
61
+ export declare function formatKitList(kits: DiscoveredKit[], options?: {
62
+ includeVersion?: boolean;
63
+ }): string;
64
+ /**
65
+ * Display kits in JSON format.
66
+ */
67
+ export declare function displayKitsJson(kits: DiscoveredKit[], source: string, repository: {
68
+ name: string;
69
+ description?: string;
70
+ version?: string;
71
+ }): void;
72
+ //# sourceMappingURL=kit-select.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"kit-select.d.ts","sourceRoot":"","sources":["../../src/tui/kit-select.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,KAAK,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAC5E,OAAO,KAAK,EAAE,kBAAkB,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAGnE;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,eAAe,GAAG,MAAM,CAoBrE;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,aAAa,GAAG,IAAI,CAe1D;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,aAAa,EAAE,GAAG,IAAI,CAQhE;AAoBD;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,aAAa,EAAE,GAAG,YAAY,CAAC,MAAM,CAAC,EAAE,CAM9E;AAED;;GAEG;AACH,wBAAsB,UAAU,CAC9B,IAAI,EAAE,aAAa,EAAE,EACrB,OAAO,CAAC,EAAE;IACR,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB,GACA,OAAO,CAAC,kBAAkB,CAAC,CA8C7B;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,aAAa,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,aAAa,EAAE,CAGxF;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,aAAa,EAAE,EAAE,cAAc,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,CAG5F;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,SAAS,EAAE,aAAa,EAAE,GAAG,IAAI,CAOtF;AAED;;GAEG;AACH,wBAAgB,kBAAkB,IAAI,IAAI,CAEzC;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,aAAa,EAAE,EACrB,QAAQ,EAAE,MAAM,EAAE,GACjB;IAAE,KAAK,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAmBpC;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,aAAa,EAAE,EAAE,IAAI,EAAE,MAAM,GAAG,aAAa,GAAG,SAAS,CAE3F;AAED;;GAEG;AACH,wBAAgB,aAAa,CAC3B,IAAI,EAAE,aAAa,EAAE,EACrB,OAAO,CAAC,EAAE;IAAE,cAAc,CAAC,EAAE,OAAO,CAAA;CAAE,GACrC,MAAM,CAKR;AAED;;GAEG;AACH,wBAAgB,eAAe,CAC7B,IAAI,EAAE,aAAa,EAAE,EACrB,MAAM,EAAE,MAAM,EACd,UAAU,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,GACnE,IAAI,CAcN"}