@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,488 @@
1
+ /**
2
+ * Environment variable prompts.
3
+ *
4
+ * Detects required environment variables from MCP server configurations
5
+ * and prompts users for missing values.
6
+ */
7
+ import * as clack from "@clack/prompts";
8
+ import pc from "picocolors";
9
+ /**
10
+ * Check if metadata looks like an MCP server config.
11
+ */
12
+ function hasMcpServerConfigShape(metadata) {
13
+ if (!metadata)
14
+ return false;
15
+ return typeof metadata === "object" && "name" in metadata && "transport" in metadata;
16
+ }
17
+ /**
18
+ * Extract MCP server config from metadata.
19
+ */
20
+ function extractMcpConfig(metadata) {
21
+ if (!hasMcpServerConfigShape(metadata))
22
+ return null;
23
+ return metadata;
24
+ }
25
+ /**
26
+ * Extract environment variable requirements from MCP config.
27
+ *
28
+ * Works with the new schema where env values are McpEnvVarDefinition objects
29
+ * containing description, required, sensitive, and optional default fields.
30
+ */
31
+ export function extractEnvVarsFromConfig(config, source) {
32
+ const requirements = [];
33
+ if (!config.env)
34
+ return requirements;
35
+ for (const [varName, definition] of Object.entries(config.env)) {
36
+ const envVarDef = definition;
37
+ const currentValue = process.env[varName];
38
+ requirements.push({
39
+ name: varName,
40
+ description: envVarDef.description,
41
+ required: envVarDef.required,
42
+ sensitive: envVarDef.sensitive,
43
+ defaultValue: envVarDef.default,
44
+ currentValue,
45
+ source,
46
+ });
47
+ }
48
+ return requirements;
49
+ }
50
+ /**
51
+ * Extract all environment variable requirements from resolved primitives.
52
+ */
53
+ export function extractAllEnvVars(primitives) {
54
+ const requirements = [];
55
+ const seen = new Set();
56
+ for (const primitive of primitives) {
57
+ if (primitive.type !== "mcp")
58
+ continue;
59
+ // MCP config should be in metadata
60
+ const config = extractMcpConfig(primitive.metadata);
61
+ if (!config)
62
+ continue;
63
+ const source = primitive.instanceName || config.name || primitive.name;
64
+ const vars = extractEnvVarsFromConfig(config, source);
65
+ for (const v of vars) {
66
+ if (!seen.has(v.name)) {
67
+ seen.add(v.name);
68
+ requirements.push(v);
69
+ }
70
+ }
71
+ }
72
+ return requirements;
73
+ }
74
+ /**
75
+ * Group requirements by sensitivity and whether they need prompting.
76
+ *
77
+ * Sensitive variables are separated into their own category and are never
78
+ * prompted - they must be set in the shell environment.
79
+ *
80
+ * Nonsensitive variables are grouped by:
81
+ * - satisfied: Have current value from environment
82
+ * - missing: Required but no value or default
83
+ * - optional: Not required, or has default value
84
+ */
85
+ export function categorizeEnvVars(requirements) {
86
+ const sensitive = [];
87
+ const satisfied = [];
88
+ const missing = [];
89
+ const optional = [];
90
+ for (const req of requirements) {
91
+ // Sensitive vars are always separated - never prompted
92
+ if (req.sensitive) {
93
+ sensitive.push(req);
94
+ continue;
95
+ }
96
+ // Nonsensitive vars - categorize by value status
97
+ if (req.currentValue) {
98
+ satisfied.push(req);
99
+ }
100
+ else if (req.required) {
101
+ if (req.defaultValue) {
102
+ // Has default - treat as optional (can use default or customize)
103
+ optional.push(req);
104
+ }
105
+ else {
106
+ // Required without default - must prompt
107
+ missing.push(req);
108
+ }
109
+ }
110
+ else {
111
+ optional.push(req);
112
+ }
113
+ }
114
+ return { sensitive, satisfied, missing, optional };
115
+ }
116
+ /**
117
+ * Display warnings for sensitive environment variables.
118
+ *
119
+ * Sensitive variables are never prompted - they must be set in the shell
120
+ * environment before using the MCP server. This function displays warnings
121
+ * for any sensitive variables that are required but not set.
122
+ *
123
+ * @param requirements - All environment variable requirements
124
+ * @returns true if any warnings were displayed
125
+ */
126
+ export function displaySensitiveWarnings(requirements) {
127
+ const { sensitive } = categorizeEnvVars(requirements);
128
+ if (sensitive.length === 0) {
129
+ return false;
130
+ }
131
+ // Separate sensitive vars by whether they're set
132
+ const missingSensitive = sensitive.filter((r) => !r.currentValue);
133
+ const setSensitive = sensitive.filter((r) => r.currentValue);
134
+ let displayed = false;
135
+ // Show set sensitive vars
136
+ if (setSensitive.length > 0) {
137
+ console.log(` ${setSensitive.length} sensitive variable${setSensitive.length === 1 ? "" : "s"} set in environment ${pc.green("✓")}`);
138
+ for (const v of setSensitive) {
139
+ console.log(` ${pc.dim(v.name)} ${pc.yellow("[SENSITIVE]")} (for ${v.source})`);
140
+ }
141
+ displayed = true;
142
+ }
143
+ // Show missing sensitive vars with warning
144
+ if (missingSensitive.length > 0) {
145
+ const requiredMissing = missingSensitive.filter((r) => r.required);
146
+ const optionalMissing = missingSensitive.filter((r) => !r.required);
147
+ if (requiredMissing.length > 0) {
148
+ console.log();
149
+ clack.log.warn(`${requiredMissing.length} required sensitive variable${requiredMissing.length === 1 ? "" : "s"} not set in environment:`);
150
+ for (const v of requiredMissing) {
151
+ console.log(` ${pc.red(v.name)} ${pc.yellow("[SENSITIVE]")}`);
152
+ if (v.description) {
153
+ console.log(` ${pc.dim(v.description)}`);
154
+ }
155
+ }
156
+ console.log();
157
+ console.log(pc.dim(" These must be set in your shell environment before using the MCP server."));
158
+ console.log(pc.dim(" Example:"));
159
+ for (const v of requiredMissing) {
160
+ console.log(pc.dim(` export ${v.name}="your-value-here"`));
161
+ }
162
+ displayed = true;
163
+ }
164
+ if (optionalMissing.length > 0) {
165
+ console.log(` ${pc.yellow("○")} ${optionalMissing.length} optional sensitive variable${optionalMissing.length === 1 ? "" : "s"} not set`);
166
+ for (const v of optionalMissing) {
167
+ console.log(` ${pc.dim(v.name)} ${pc.yellow("[SENSITIVE]")} (for ${v.source})`);
168
+ }
169
+ displayed = true;
170
+ }
171
+ }
172
+ return displayed;
173
+ }
174
+ /**
175
+ * Display environment variable status with sensitivity classification.
176
+ *
177
+ * Shows separate sections for:
178
+ * - Sensitive variables (with warnings for missing required)
179
+ * - Nonsensitive satisfied variables
180
+ * - Nonsensitive missing required variables
181
+ * - Nonsensitive optional variables
182
+ */
183
+ export function displayEnvVarStatus(requirements) {
184
+ if (requirements.length === 0) {
185
+ return;
186
+ }
187
+ console.log();
188
+ clack.log.info("Environment variables:");
189
+ }
190
+ /**
191
+ * Prompt for a single environment variable.
192
+ */
193
+ async function promptForEnvVar(req) {
194
+ const envValue = req.currentValue;
195
+ const defaultValue = req.defaultValue;
196
+ const bar = pc.gray("│");
197
+ console.log(`${bar}`);
198
+ const description = req.description ? ` ${pc.dim(`(${req.description})`)}` : "";
199
+ console.log(`${bar} ${pc.bold(req.name)}${description}`);
200
+ if (defaultValue !== undefined && !req.sensitive) {
201
+ console.log(`${bar} ${pc.dim(`Default: ${defaultValue}`)}`);
202
+ }
203
+ if (req.sensitive) {
204
+ console.log(`${bar} ${pc.yellow("Sensitive ⚠")}`);
205
+ }
206
+ const options = [];
207
+ if (defaultValue !== undefined && !req.sensitive) {
208
+ options.push({
209
+ value: "use-default",
210
+ label: "Default",
211
+ hint: defaultValue,
212
+ });
213
+ }
214
+ options.push({
215
+ value: "use-existing",
216
+ label: "Pass-through",
217
+ hint: envValue ? "env set" : "env not set",
218
+ });
219
+ options.push({
220
+ value: "enter-new",
221
+ label: "Customize",
222
+ });
223
+ const initialValue = req.sensitive
224
+ ? "use-existing"
225
+ : defaultValue !== undefined
226
+ ? "use-default"
227
+ : envValue
228
+ ? "use-existing"
229
+ : "enter-new";
230
+ const choice = await clack.select({
231
+ message: `Select value for ${req.name}`,
232
+ options,
233
+ initialValue,
234
+ });
235
+ if (clack.isCancel(choice)) {
236
+ return null;
237
+ }
238
+ const selected = choice;
239
+ if (selected === "enter-new") {
240
+ const input = req.sensitive
241
+ ? await clack.password({
242
+ message: `Enter value for ${req.name}:`,
243
+ validate: (v) => {
244
+ if (req.required && !v) {
245
+ return "Value is required";
246
+ }
247
+ return undefined;
248
+ },
249
+ })
250
+ : await clack.text({
251
+ message: `Enter value for ${req.name}:`,
252
+ initialValue: defaultValue ?? "",
253
+ validate: (v) => {
254
+ if (req.required && !v) {
255
+ return "Value is required";
256
+ }
257
+ return undefined;
258
+ },
259
+ });
260
+ if (clack.isCancel(input)) {
261
+ return null;
262
+ }
263
+ return {
264
+ name: req.name,
265
+ choice: "enter-new",
266
+ value: String(input),
267
+ skipped: false,
268
+ sensitive: req.sensitive,
269
+ };
270
+ }
271
+ if (selected === "use-default") {
272
+ return {
273
+ name: req.name,
274
+ choice: "use-default",
275
+ value: defaultValue,
276
+ skipped: false,
277
+ sensitive: req.sensitive,
278
+ };
279
+ }
280
+ return {
281
+ name: req.name,
282
+ choice: "use-existing",
283
+ skipped: false,
284
+ sensitive: req.sensitive,
285
+ };
286
+ }
287
+ /**
288
+ * Prompt for environment variables.
289
+ *
290
+ * IMPORTANT: Sensitive variables are NEVER prompted. They are:
291
+ * - Displayed with warnings if not set in the environment
292
+ * - Automatically marked for passthrough to the harness config
293
+ *
294
+ * Only nonsensitive variables are prompted or configured.
295
+ *
296
+ * @param requirements - All environment variable requirements
297
+ * @param options - Prompting options
298
+ * @returns Prompt results for all variables
299
+ */
300
+ export async function promptForEnvVars(requirements, _options) {
301
+ const results = [];
302
+ const bar = pc.gray("│");
303
+ const grouped = new Map();
304
+ for (const req of requirements) {
305
+ const list = grouped.get(req.source);
306
+ if (list) {
307
+ list.push(req);
308
+ }
309
+ else {
310
+ grouped.set(req.source, [req]);
311
+ }
312
+ }
313
+ if (grouped.size > 0) {
314
+ console.log(`${bar}`);
315
+ let index = 1;
316
+ for (const source of grouped.keys()) {
317
+ console.log(`${bar} ${index}. ${source}`);
318
+ index += 1;
319
+ }
320
+ }
321
+ for (const [source, vars] of grouped) {
322
+ clack.log.info(`Configuring MCP server: ${source}`);
323
+ console.log(`${bar}`);
324
+ const kits = _options?.sourceToKits?.get(source);
325
+ if (kits && kits.size > 0) {
326
+ console.log(`${bar} ${pc.dim(`Kits: ${Array.from(kits).join(", ")}`)}`);
327
+ }
328
+ for (const req of vars) {
329
+ const result = await promptForEnvVar(req);
330
+ if (result === null) {
331
+ return {
332
+ cancelled: true,
333
+ variables: results,
334
+ };
335
+ }
336
+ results.push(result);
337
+ }
338
+ }
339
+ return {
340
+ cancelled: false,
341
+ variables: results,
342
+ };
343
+ }
344
+ export async function promptForSharedMcpInstances(usageByInstance, existingOverrides = {}) {
345
+ const overrides = {};
346
+ for (const [instanceName, kits] of usageByInstance.entries()) {
347
+ if (kits.size <= 1)
348
+ continue;
349
+ const kitList = Array.from(kits);
350
+ const shared = await clack.confirm({
351
+ message: `MCP server "${instanceName}" is used by multiple kits (${kitList.join(", ")}). ` +
352
+ "Apply one shared configuration?",
353
+ initialValue: true,
354
+ });
355
+ if (clack.isCancel(shared)) {
356
+ return { cancelled: true, overrides };
357
+ }
358
+ if (shared) {
359
+ continue;
360
+ }
361
+ for (const kitName of kitList) {
362
+ if (existingOverrides[kitName]?.[instanceName]) {
363
+ continue;
364
+ }
365
+ const suggested = `${instanceName}-${kitName}`;
366
+ const newName = await clack.text({
367
+ message: `Instance name for ${instanceName} in ${kitName}:`,
368
+ initialValue: suggested,
369
+ validate: (value) => (value ? undefined : "Instance name is required"),
370
+ });
371
+ if (clack.isCancel(newName)) {
372
+ return { cancelled: true, overrides };
373
+ }
374
+ if (!overrides[kitName]) {
375
+ overrides[kitName] = {};
376
+ }
377
+ overrides[kitName][instanceName] = String(newName);
378
+ }
379
+ }
380
+ return { cancelled: false, overrides };
381
+ }
382
+ /**
383
+ * Apply environment variable results to a config.
384
+ *
385
+ * @deprecated Use applyEnvVarResultsAsResolved for proper ResolvedEnvVar output.
386
+ */
387
+ export function applyEnvVarResults(results) {
388
+ const env = {};
389
+ for (const result of results) {
390
+ if (!result.skipped && result.value !== undefined) {
391
+ env[result.name] = result.value;
392
+ }
393
+ }
394
+ return env;
395
+ }
396
+ /**
397
+ * Convert prompt results to ResolvedEnvVar array for adapter consumption.
398
+ *
399
+ * This function maps TUI prompt results to the ResolvedEnvVar format expected
400
+ * by adapters for proper environment variable transformation.
401
+ *
402
+ * @param results - Prompt results from promptForEnvVars
403
+ * @param requirements - Original requirements (for descriptions)
404
+ * @returns Array of ResolvedEnvVar ready for adapter transformation
405
+ */
406
+ export function applyEnvVarResultsAsResolved(results, requirements) {
407
+ const resolved = [];
408
+ const requirementMap = new Map(requirements.map((r) => [r.name, r]));
409
+ for (const result of results) {
410
+ const req = requirementMap.get(result.name);
411
+ const isSensitive = result.sensitive ?? req?.sensitive ?? false;
412
+ // Determine source and passthrough behavior
413
+ let source;
414
+ let usePassthrough = false;
415
+ switch (result.choice) {
416
+ case "use-existing":
417
+ source = "environment";
418
+ usePassthrough = true;
419
+ break;
420
+ case "use-default":
421
+ source = "default";
422
+ break;
423
+ case "enter-new":
424
+ source = "user-input";
425
+ break;
426
+ case "skip":
427
+ default:
428
+ source = "passthrough";
429
+ usePassthrough = true;
430
+ break;
431
+ }
432
+ // Build resolved entry
433
+ const entry = {
434
+ name: result.name,
435
+ description: req?.description ?? "",
436
+ required: req?.required ?? false,
437
+ sensitive: isSensitive,
438
+ usePassthrough,
439
+ source,
440
+ };
441
+ if (result.value !== undefined &&
442
+ (!usePassthrough || result.choice === "use-existing")) {
443
+ entry.value = result.value;
444
+ }
445
+ // Add default value if available
446
+ if (req?.defaultValue !== undefined) {
447
+ entry.defaultValue = req.defaultValue;
448
+ }
449
+ resolved.push(entry);
450
+ }
451
+ return resolved;
452
+ }
453
+ /**
454
+ * Check if all required nonsensitive vars are satisfied.
455
+ *
456
+ * Sensitive vars are not checked here - they are always passthrough and
457
+ * warnings are displayed separately. This function checks only nonsensitive
458
+ * vars that require user input.
459
+ */
460
+ export function areRequiredVarsSatisfied(requirements) {
461
+ return requirements
462
+ .filter((r) => !r.sensitive) // Only check nonsensitive vars
463
+ .every((r) => !r.required || r.currentValue || r.defaultValue);
464
+ }
465
+ /**
466
+ * Get list of missing required nonsensitive vars.
467
+ *
468
+ * Returns only nonsensitive vars that are required but don't have a value
469
+ * or default. Sensitive vars are excluded - they are handled separately
470
+ * with warnings.
471
+ */
472
+ export function getMissingRequiredVars(requirements) {
473
+ return requirements
474
+ .filter((r) => !r.sensitive && r.required && !r.currentValue && !r.defaultValue)
475
+ .map((r) => r.name);
476
+ }
477
+ /**
478
+ * Get list of missing required sensitive vars (for warnings).
479
+ *
480
+ * Returns sensitive vars that are required but not set in the environment.
481
+ * These are displayed as warnings since they cannot be prompted.
482
+ */
483
+ export function getMissingSensitiveVars(requirements) {
484
+ return requirements
485
+ .filter((r) => r.sensitive && r.required && !r.currentValue)
486
+ .map((r) => r.name);
487
+ }
488
+ //# sourceMappingURL=env-prompt.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"env-prompt.js","sourceRoot":"","sources":["../../src/tui/env-prompt.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,54 @@
1
+ /**
2
+ * Harness selection screen.
3
+ *
4
+ * Displays detected AI harnesses and allows user to select which ones to configure.
5
+ */
6
+ import type { HarnessName } from "../core/types.js";
7
+ import type { DetectedHarnessDisplay, HarnessSelectionResult, SelectOption } from "./types.js";
8
+ /**
9
+ * Display detected harnesses summary.
10
+ */
11
+ export declare function displayDetectedHarnesses(harnesses: DetectedHarnessDisplay[]): void;
12
+ /**
13
+ * Create select options from detected harnesses.
14
+ */
15
+ export declare function createHarnessOptions(harnesses: DetectedHarnessDisplay[], includeAllOption?: boolean): SelectOption<string>[];
16
+ /**
17
+ * Prompt user to select harnesses for configuration.
18
+ */
19
+ export declare function selectHarnesses(harnesses: DetectedHarnessDisplay[], options?: {
20
+ showDetected?: boolean;
21
+ includeAllOption?: boolean;
22
+ }): Promise<HarnessSelectionResult>;
23
+ /**
24
+ * Filter harnesses by names.
25
+ */
26
+ export declare function filterHarnessesByName(harnesses: DetectedHarnessDisplay[], names: HarnessName[]): DetectedHarnessDisplay[];
27
+ /**
28
+ * Get harnesses that are detected but not in the provided list.
29
+ */
30
+ export declare function getMissingHarnesses(harnesses: DetectedHarnessDisplay[], requestedNames: HarnessName[]): HarnessName[];
31
+ /**
32
+ * Display a warning about missing harnesses.
33
+ */
34
+ export declare function warnMissingHarnesses(missing: HarnessName[]): void;
35
+ /**
36
+ * Display info about no harnesses being detected.
37
+ */
38
+ export declare function displayNoHarnessesDetected(): void;
39
+ /**
40
+ * Validate that at least one harness is selected.
41
+ */
42
+ export declare function validateHarnessSelection(harnesses: DetectedHarnessDisplay[], selected: HarnessName[]): {
43
+ valid: boolean;
44
+ error?: string;
45
+ };
46
+ /**
47
+ * Get display name for a harness.
48
+ */
49
+ export declare function getHarnessDisplayName(harnesses: DetectedHarnessDisplay[], name: HarnessName): string;
50
+ /**
51
+ * Create a map of harness names to display names.
52
+ */
53
+ export declare function createHarnessDisplayMap(harnesses: DetectedHarnessDisplay[]): Map<HarnessName, string>;
54
+ //# sourceMappingURL=harness-select.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"harness-select.d.ts","sourceRoot":"","sources":["../../src/tui/harness-select.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,KAAK,EAAE,sBAAsB,EAAE,sBAAsB,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAG/F;;GAEG;AACH,wBAAgB,wBAAwB,CAAC,SAAS,EAAE,sBAAsB,EAAE,GAAG,IAAI,CAmBlF;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAClC,SAAS,EAAE,sBAAsB,EAAE,EACnC,gBAAgB,GAAE,OAAc,GAC/B,YAAY,CAAC,MAAM,CAAC,EAAE,CAiBxB;AAED;;GAEG;AACH,wBAAsB,eAAe,CACnC,SAAS,EAAE,sBAAsB,EAAE,EACnC,OAAO,CAAC,EAAE;IACR,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B,GACA,OAAO,CAAC,sBAAsB,CAAC,CAkEjC;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CACnC,SAAS,EAAE,sBAAsB,EAAE,EACnC,KAAK,EAAE,WAAW,EAAE,GACnB,sBAAsB,EAAE,CAG1B;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,SAAS,EAAE,sBAAsB,EAAE,EACnC,cAAc,EAAE,WAAW,EAAE,GAC5B,WAAW,EAAE,CAGf;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,WAAW,EAAE,GAAG,IAAI,CAKjE;AAED;;GAEG;AACH,wBAAgB,0BAA0B,IAAI,IAAI,CAGjD;AAED;;GAEG;AACH,wBAAgB,wBAAwB,CACtC,SAAS,EAAE,sBAAsB,EAAE,EACnC,QAAQ,EAAE,WAAW,EAAE,GACtB;IAAE,KAAK,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAmBpC;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CACnC,SAAS,EAAE,sBAAsB,EAAE,EACnC,IAAI,EAAE,WAAW,GAChB,MAAM,CAGR;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CACrC,SAAS,EAAE,sBAAsB,EAAE,GAClC,GAAG,CAAC,WAAW,EAAE,MAAM,CAAC,CAE1B"}