@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,215 @@
1
+ /**
2
+ * Upgrade checking functionality for installed primitives.
3
+ *
4
+ * Compares installed primitive versions against the primitives registry
5
+ * to identify available updates.
6
+ */
7
+ import * as semver from "semver";
8
+ import { readManifest } from "./read.js";
9
+ /**
10
+ * Check for available upgrades for a specific installation scope.
11
+ *
12
+ * Convenience function that reads the manifest for the given scope
13
+ * and checks for available upgrades.
14
+ *
15
+ * @param scope - Installation scope (global or project)
16
+ * @param registry - The primitives registry loader
17
+ * @param projectRoot - Absolute path to project root (required for project scope)
18
+ * @returns Array of available upgrade information, empty if no manifest exists
19
+ */
20
+ export async function checkForUpgradesInScope(scope, registry, projectRoot) {
21
+ const manifest = await readManifest(scope, projectRoot);
22
+ if (!manifest) {
23
+ return [];
24
+ }
25
+ return checkForUpgrades(manifest, registry);
26
+ }
27
+ /**
28
+ * Check for available upgrades across all installed primitives.
29
+ *
30
+ * @param manifest - The installation manifest
31
+ * @param registry - The primitives registry loader
32
+ * @returns Array of available upgrade information
33
+ */
34
+ export async function checkForUpgrades(manifest, registry) {
35
+ const upgrades = [];
36
+ // Load the registry if not already loaded
37
+ await registry.load();
38
+ // Iterate through all harnesses and kits
39
+ for (const [harnessName, harnessEntry] of Object.entries(manifest.harnesses)) {
40
+ if (!harnessEntry)
41
+ continue;
42
+ for (const [kitName, kit] of Object.entries(harnessEntry.kits)) {
43
+ // Check each primitive for upgrades
44
+ for (const primitive of kit.primitives) {
45
+ // Skip inline primitives - they don't come from the registry
46
+ if (primitive.isInline)
47
+ continue;
48
+ // Skip primitives without version tracking
49
+ if (!primitive.versionSpec || !primitive.version)
50
+ continue;
51
+ // Check for available upgrade
52
+ const upgrade = await checkPrimitiveUpgrade(registry, harnessName, kitName, primitive.name, primitive.type, primitive.version, primitive.versionSpec);
53
+ if (upgrade) {
54
+ upgrades.push(upgrade);
55
+ }
56
+ }
57
+ }
58
+ }
59
+ return upgrades;
60
+ }
61
+ /**
62
+ * Check if a specific primitive has an available upgrade.
63
+ *
64
+ * @returns Upgrade info if available, null otherwise
65
+ */
66
+ async function checkPrimitiveUpgrade(registry, harness, kit, primitiveName, primitiveType, currentVersion, versionSpec) {
67
+ // Get available versions from registry
68
+ const versions = await registry.getVersions(primitiveType, primitiveName);
69
+ if (versions.length === 0) {
70
+ return null;
71
+ }
72
+ // Find the highest version that satisfies the spec
73
+ const latestMatching = findHighestMatchingVersion(versions.map((v) => v.version), versionSpec);
74
+ if (!latestMatching) {
75
+ return null;
76
+ }
77
+ // Check if the latest matching version is higher than current
78
+ if (!semver.valid(currentVersion) || !semver.valid(latestMatching)) {
79
+ return null;
80
+ }
81
+ if (!semver.gt(latestMatching, currentVersion)) {
82
+ return null;
83
+ }
84
+ // Determine if this is a breaking change (major version bump)
85
+ const currentMajor = semver.major(currentVersion);
86
+ const newMajor = semver.major(latestMatching);
87
+ const breaking = newMajor > currentMajor;
88
+ return {
89
+ kit,
90
+ harness,
91
+ primitive: primitiveName,
92
+ type: primitiveType,
93
+ currentVersion,
94
+ availableVersion: latestMatching,
95
+ versionSpec,
96
+ breaking,
97
+ };
98
+ }
99
+ /**
100
+ * Find the highest version that satisfies a version spec.
101
+ */
102
+ function findHighestMatchingVersion(versions, spec) {
103
+ // Handle "latest" keyword
104
+ if (spec.toLowerCase() === "latest") {
105
+ const validVersions = versions.filter((v) => semver.valid(v));
106
+ if (validVersions.length === 0)
107
+ return null;
108
+ return semver.maxSatisfying(validVersions, "*");
109
+ }
110
+ // Use semver to find highest matching
111
+ const validVersions = versions.filter((v) => semver.valid(v));
112
+ return semver.maxSatisfying(validVersions, spec);
113
+ }
114
+ /**
115
+ * Create an upgrade summary from upgrade checks.
116
+ *
117
+ * @param upgrades - Array of upgrade checks
118
+ * @returns Summary of available upgrades
119
+ */
120
+ export function createUpgradeSummary(upgrades) {
121
+ // Count unique kits
122
+ const kits = new Set(upgrades.map((u) => u.kit));
123
+ // Count unique harnesses
124
+ const harnesses = new Set(upgrades.map((u) => u.harness));
125
+ // Count breaking changes
126
+ const breakingChanges = upgrades.filter((u) => u.breaking).length;
127
+ return {
128
+ upgrades,
129
+ totalUpgrades: upgrades.length,
130
+ breakingChanges,
131
+ affectedKits: kits.size,
132
+ affectedHarnesses: harnesses.size,
133
+ };
134
+ }
135
+ /**
136
+ * Group upgrades by kit for display purposes.
137
+ *
138
+ * @param upgrades - Array of upgrade checks
139
+ * @returns Map of kit name to upgrades for that kit
140
+ */
141
+ export function groupUpgradesByKit(upgrades) {
142
+ const grouped = new Map();
143
+ for (const upgrade of upgrades) {
144
+ const key = `${upgrade.kit}:${upgrade.harness}`;
145
+ const existing = grouped.get(key) || [];
146
+ existing.push(upgrade);
147
+ grouped.set(key, existing);
148
+ }
149
+ return grouped;
150
+ }
151
+ /**
152
+ * Group upgrades by harness for display purposes.
153
+ *
154
+ * @param upgrades - Array of upgrade checks
155
+ * @returns Map of harness name to upgrades for that harness
156
+ */
157
+ export function groupUpgradesByHarness(upgrades) {
158
+ const grouped = new Map();
159
+ for (const upgrade of upgrades) {
160
+ const existing = grouped.get(upgrade.harness) || [];
161
+ existing.push(upgrade);
162
+ grouped.set(upgrade.harness, existing);
163
+ }
164
+ return grouped;
165
+ }
166
+ /**
167
+ * Filter upgrades to only include non-breaking changes.
168
+ *
169
+ * @param upgrades - Array of upgrade checks
170
+ * @returns Array of non-breaking upgrades
171
+ */
172
+ export function filterNonBreaking(upgrades) {
173
+ return upgrades.filter((u) => !u.breaking);
174
+ }
175
+ /**
176
+ * Filter upgrades to only include breaking changes.
177
+ *
178
+ * @param upgrades - Array of upgrade checks
179
+ * @returns Array of breaking upgrades
180
+ */
181
+ export function filterBreaking(upgrades) {
182
+ return upgrades.filter((u) => u.breaking);
183
+ }
184
+ /**
185
+ * Format an upgrade for display.
186
+ *
187
+ * @param upgrade - The upgrade check
188
+ * @returns Formatted string describing the upgrade
189
+ */
190
+ export function formatUpgrade(upgrade) {
191
+ const changeType = upgrade.breaking ? "major" : getChangeType(upgrade);
192
+ return `${upgrade.primitive}: ${upgrade.currentVersion} → ${upgrade.availableVersion} (${changeType})`;
193
+ }
194
+ /**
195
+ * Determine the type of version change (patch, minor, major).
196
+ */
197
+ function getChangeType(upgrade) {
198
+ const current = upgrade.currentVersion;
199
+ const available = upgrade.availableVersion;
200
+ if (!semver.valid(current) || !semver.valid(available)) {
201
+ return "unknown";
202
+ }
203
+ const currentMajor = semver.major(current);
204
+ const currentMinor = semver.minor(current);
205
+ const availableMajor = semver.major(available);
206
+ const availableMinor = semver.minor(available);
207
+ if (availableMajor > currentMajor) {
208
+ return "major";
209
+ }
210
+ if (availableMinor > currentMinor) {
211
+ return "minor";
212
+ }
213
+ return "patch";
214
+ }
215
+ //# sourceMappingURL=upgrade-check.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"upgrade-check.js","sourceRoot":"","sources":["../../src/manifest/upgrade-check.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,35 @@
1
+ /**
2
+ * Shared utilities for the manifest module.
3
+ */
4
+ import type { InstallationScope } from "../core/types.js";
5
+ /**
6
+ * Expand ~ to home directory.
7
+ *
8
+ * @param pathStr - Path string that may contain ~
9
+ * @returns Expanded path string
10
+ */
11
+ export declare function expandPath(pathStr: string): string;
12
+ /**
13
+ * Get the manifest file path for a given scope.
14
+ *
15
+ * @param scope - Installation scope (global or project)
16
+ * @param projectRoot - Absolute path to project root (required for project scope)
17
+ * @returns Absolute path to the manifest file
18
+ */
19
+ export declare function getManifestPath(scope: InstallationScope, projectRoot?: string): string;
20
+ /**
21
+ * Get the manifest directory path for a given scope.
22
+ *
23
+ * @param scope - Installation scope (global or project)
24
+ * @param projectRoot - Absolute path to project root (required for project scope)
25
+ * @returns Absolute path to the manifest directory
26
+ */
27
+ export declare function getManifestDir(scope: InstallationScope, projectRoot?: string): string;
28
+ /**
29
+ * Ensure the manifest directory exists for a given scope.
30
+ *
31
+ * @param scope - Installation scope (global or project)
32
+ * @param projectRoot - Absolute path to project root (required for project scope)
33
+ */
34
+ export declare function ensureManifestDir(scope: InstallationScope, projectRoot?: string): Promise<void>;
35
+ //# sourceMappingURL=utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/manifest/utils.ts"],"names":[],"mappings":"AAAA;;GAEG;AAKH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAO1D;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAMlD;AAED;;;;;;GAMG;AACH,wBAAgB,eAAe,CAC7B,KAAK,EAAE,iBAAiB,EACxB,WAAW,CAAC,EAAE,MAAM,GACnB,MAAM,CAWR;AAED;;;;;;GAMG;AACH,wBAAgB,cAAc,CAC5B,KAAK,EAAE,iBAAiB,EACxB,WAAW,CAAC,EAAE,MAAM,GACnB,MAAM,CAER;AAED;;;;;GAKG;AACH,wBAAsB,iBAAiB,CACrC,KAAK,EAAE,iBAAiB,EACxB,WAAW,CAAC,EAAE,MAAM,GACnB,OAAO,CAAC,IAAI,CAAC,CAGf"}
@@ -0,0 +1,57 @@
1
+ /**
2
+ * Shared utilities for the manifest module.
3
+ */
4
+ import fs from "node:fs/promises";
5
+ import path from "node:path";
6
+ import { GLOBAL_MANIFEST_PATH, PROJECT_MANIFEST_DIR, PROJECT_MANIFEST_FILENAME, } from "./types.js";
7
+ /**
8
+ * Expand ~ to home directory.
9
+ *
10
+ * @param pathStr - Path string that may contain ~
11
+ * @returns Expanded path string
12
+ */
13
+ export function expandPath(pathStr) {
14
+ if (pathStr.startsWith("~")) {
15
+ const home = process.env["HOME"] || process.env["USERPROFILE"] || "";
16
+ return path.join(home, pathStr.slice(1));
17
+ }
18
+ return pathStr;
19
+ }
20
+ /**
21
+ * Get the manifest file path for a given scope.
22
+ *
23
+ * @param scope - Installation scope (global or project)
24
+ * @param projectRoot - Absolute path to project root (required for project scope)
25
+ * @returns Absolute path to the manifest file
26
+ */
27
+ export function getManifestPath(scope, projectRoot) {
28
+ if (scope === "global") {
29
+ return expandPath(GLOBAL_MANIFEST_PATH);
30
+ }
31
+ // Project scope
32
+ if (!projectRoot) {
33
+ throw new Error("projectRoot is required for project scope");
34
+ }
35
+ return path.join(projectRoot, PROJECT_MANIFEST_DIR, PROJECT_MANIFEST_FILENAME);
36
+ }
37
+ /**
38
+ * Get the manifest directory path for a given scope.
39
+ *
40
+ * @param scope - Installation scope (global or project)
41
+ * @param projectRoot - Absolute path to project root (required for project scope)
42
+ * @returns Absolute path to the manifest directory
43
+ */
44
+ export function getManifestDir(scope, projectRoot) {
45
+ return path.dirname(getManifestPath(scope, projectRoot));
46
+ }
47
+ /**
48
+ * Ensure the manifest directory exists for a given scope.
49
+ *
50
+ * @param scope - Installation scope (global or project)
51
+ * @param projectRoot - Absolute path to project root (required for project scope)
52
+ */
53
+ export async function ensureManifestDir(scope, projectRoot) {
54
+ const manifestDir = getManifestDir(scope, projectRoot);
55
+ await fs.mkdir(manifestDir, { recursive: true });
56
+ }
57
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/manifest/utils.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAClC,OAAO,IAAI,MAAM,WAAW,CAAC;AAG7B,OAAO,EACL,oBAAoB,EACpB,oBAAoB,EACpB,yBAAyB,GAC1B,MAAM,YAAY,CAAC;AAEpB;;;;;GAKG;AACH,MAAM,UAAU,UAAU,CAAC,OAAe;IACxC,IAAI,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QAC5B,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC;QACrE,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAC3C,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,eAAe,CAC7B,KAAwB,EACxB,WAAoB;IAEpB,IAAI,KAAK,KAAK,QAAQ,EAAE,CAAC;QACvB,OAAO,UAAU,CAAC,oBAAoB,CAAC,CAAC;IAC1C,CAAC;IAED,gBAAgB;IAChB,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAC;IAC/D,CAAC;IAED,OAAO,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,oBAAoB,EAAE,yBAAyB,CAAC,CAAC;AACjF,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,cAAc,CAC5B,KAAwB,EACxB,WAAoB;IAEpB,OAAO,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC,CAAC;AAC3D,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,KAAwB,EACxB,WAAoB;IAEpB,MAAM,WAAW,GAAG,cAAc,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;IACvD,MAAM,EAAE,CAAC,KAAK,CAAC,WAAW,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;AACnD,CAAC"}
@@ -0,0 +1,44 @@
1
+ /**
2
+ * Manifest write operations.
3
+ *
4
+ * Provides functionality to write and update the installation manifest.
5
+ */
6
+ import type { InstallationScope } from "../core/types.js";
7
+ import type { InstallationManifest } from "./types.js";
8
+ /**
9
+ * Error thrown when manifest write fails.
10
+ */
11
+ export declare class ManifestWriteError extends Error {
12
+ readonly errorCause?: unknown;
13
+ constructor(message: string, cause?: unknown);
14
+ }
15
+ /**
16
+ * Write the installation manifest to disk.
17
+ *
18
+ * Creates the manifest directory if it doesn't exist.
19
+ * Updates the lastUpdated timestamp automatically.
20
+ * Ensures the scope field matches the write location.
21
+ *
22
+ * @param manifest - The manifest to write
23
+ * @param scope - Installation scope (global or project), defaults to manifest.scope
24
+ * @param projectRoot - Absolute path to project root (required for project scope)
25
+ * @throws ManifestWriteError if writing fails
26
+ */
27
+ export declare function writeManifest(manifest: InstallationManifest, scope?: InstallationScope, projectRoot?: string): Promise<void>;
28
+ /**
29
+ * Get the expanded manifest path for a given scope.
30
+ *
31
+ * @param scope - Installation scope (global or project), defaults to global
32
+ * @param projectRoot - Absolute path to project root (required for project scope)
33
+ * @returns The absolute path to the manifest file
34
+ */
35
+ export declare function getManifestPathForScope(scope?: InstallationScope, projectRoot?: string): string;
36
+ /**
37
+ * Get the manifest directory path for a given scope.
38
+ *
39
+ * @param scope - Installation scope (global or project), defaults to global
40
+ * @param projectRoot - Absolute path to project root (required for project scope)
41
+ * @returns The absolute path to the manifest directory
42
+ */
43
+ export declare function getManifestDirForScope(scope?: InstallationScope, projectRoot?: string): string;
44
+ //# sourceMappingURL=write.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"write.d.ts","sourceRoot":"","sources":["../../src/manifest/write.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAC1D,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAGvD;;GAEG;AACH,qBAAa,kBAAmB,SAAQ,KAAK;IAC3C,QAAQ,CAAC,UAAU,CAAC,EAAE,OAAO,CAAC;gBAElB,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,OAAO;CAK7C;AAED;;;;;;;;;;;GAWG;AACH,wBAAsB,aAAa,CACjC,QAAQ,EAAE,oBAAoB,EAC9B,KAAK,CAAC,EAAE,iBAAiB,EACzB,WAAW,CAAC,EAAE,MAAM,GACnB,OAAO,CAAC,IAAI,CAAC,CA+Bf;AAED;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CACrC,KAAK,GAAE,iBAA4B,EACnC,WAAW,CAAC,EAAE,MAAM,GACnB,MAAM,CAER;AAED;;;;;;GAMG;AACH,wBAAgB,sBAAsB,CACpC,KAAK,GAAE,iBAA4B,EACnC,WAAW,CAAC,EAAE,MAAM,GACnB,MAAM,CAER"}
@@ -0,0 +1,77 @@
1
+ /**
2
+ * Manifest write operations.
3
+ *
4
+ * Provides functionality to write and update the installation manifest.
5
+ */
6
+ import fs from "node:fs/promises";
7
+ import { getManifestPath, getManifestDir, ensureManifestDir } from "./utils.js";
8
+ /**
9
+ * Error thrown when manifest write fails.
10
+ */
11
+ export class ManifestWriteError extends Error {
12
+ errorCause;
13
+ constructor(message, cause) {
14
+ super(message);
15
+ this.name = "ManifestWriteError";
16
+ this.errorCause = cause;
17
+ }
18
+ }
19
+ /**
20
+ * Write the installation manifest to disk.
21
+ *
22
+ * Creates the manifest directory if it doesn't exist.
23
+ * Updates the lastUpdated timestamp automatically.
24
+ * Ensures the scope field matches the write location.
25
+ *
26
+ * @param manifest - The manifest to write
27
+ * @param scope - Installation scope (global or project), defaults to manifest.scope
28
+ * @param projectRoot - Absolute path to project root (required for project scope)
29
+ * @throws ManifestWriteError if writing fails
30
+ */
31
+ export async function writeManifest(manifest, scope, projectRoot) {
32
+ // Use provided scope or fall back to manifest's scope
33
+ const effectiveScope = scope ?? manifest.scope;
34
+ const manifestPath = getManifestPath(effectiveScope, projectRoot);
35
+ try {
36
+ // Ensure directory exists
37
+ await ensureManifestDir(effectiveScope, projectRoot);
38
+ // Update timestamp
39
+ manifest.lastUpdated = new Date().toISOString();
40
+ // Ensure scope field is set correctly
41
+ manifest.scope = effectiveScope;
42
+ // Set or clear projectRoot based on scope
43
+ if (effectiveScope === "project" && projectRoot) {
44
+ manifest.projectRoot = projectRoot;
45
+ }
46
+ else if (effectiveScope === "global") {
47
+ delete manifest.projectRoot;
48
+ }
49
+ // Write manifest with pretty formatting
50
+ const content = JSON.stringify(manifest, null, 2);
51
+ await fs.writeFile(manifestPath, content, "utf-8");
52
+ }
53
+ catch (error) {
54
+ throw new ManifestWriteError(`Failed to write manifest to ${manifestPath}`, error);
55
+ }
56
+ }
57
+ /**
58
+ * Get the expanded manifest path for a given scope.
59
+ *
60
+ * @param scope - Installation scope (global or project), defaults to global
61
+ * @param projectRoot - Absolute path to project root (required for project scope)
62
+ * @returns The absolute path to the manifest file
63
+ */
64
+ export function getManifestPathForScope(scope = "global", projectRoot) {
65
+ return getManifestPath(scope, projectRoot);
66
+ }
67
+ /**
68
+ * Get the manifest directory path for a given scope.
69
+ *
70
+ * @param scope - Installation scope (global or project), defaults to global
71
+ * @param projectRoot - Absolute path to project root (required for project scope)
72
+ * @returns The absolute path to the manifest directory
73
+ */
74
+ export function getManifestDirForScope(scope = "global", projectRoot) {
75
+ return getManifestDir(scope, projectRoot);
76
+ }
77
+ //# sourceMappingURL=write.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"write.js","sourceRoot":"","sources":["../../src/manifest/write.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAIlC,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAEhF;;GAEG;AACH,MAAM,OAAO,kBAAmB,SAAQ,KAAK;IAClC,UAAU,CAAW;IAE9B,YAAY,OAAe,EAAE,KAAe;QAC1C,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,oBAAoB,CAAC;QACjC,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;IAC1B,CAAC;CACF;AAED;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,QAA8B,EAC9B,KAAyB,EACzB,WAAoB;IAEpB,sDAAsD;IACtD,MAAM,cAAc,GAAG,KAAK,IAAI,QAAQ,CAAC,KAAK,CAAC;IAC/C,MAAM,YAAY,GAAG,eAAe,CAAC,cAAc,EAAE,WAAW,CAAC,CAAC;IAElE,IAAI,CAAC;QACH,0BAA0B;QAC1B,MAAM,iBAAiB,CAAC,cAAc,EAAE,WAAW,CAAC,CAAC;QAErD,mBAAmB;QACnB,QAAQ,CAAC,WAAW,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QAEhD,sCAAsC;QACtC,QAAQ,CAAC,KAAK,GAAG,cAAc,CAAC;QAEhC,0CAA0C;QAC1C,IAAI,cAAc,KAAK,SAAS,IAAI,WAAW,EAAE,CAAC;YAChD,QAAQ,CAAC,WAAW,GAAG,WAAW,CAAC;QACrC,CAAC;aAAM,IAAI,cAAc,KAAK,QAAQ,EAAE,CAAC;YACvC,OAAO,QAAQ,CAAC,WAAW,CAAC;QAC9B,CAAC;QAED,wCAAwC;QACxC,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;QAClD,MAAM,EAAE,CAAC,SAAS,CAAC,YAAY,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IACrD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,IAAI,kBAAkB,CAC1B,+BAA+B,YAAY,EAAE,EAC7C,KAAK,CACN,CAAC;IACJ,CAAC;AACH,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,uBAAuB,CACrC,QAA2B,QAAQ,EACnC,WAAoB;IAEpB,OAAO,eAAe,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;AAC7C,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,sBAAsB,CACpC,QAA2B,QAAQ,EACnC,WAAoB;IAEpB,OAAO,cAAc,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;AAC5C,CAAC"}
@@ -0,0 +1,81 @@
1
+ /**
2
+ * Environment variable resolution module.
3
+ *
4
+ * Resolves MCP server environment variable definitions to concrete values,
5
+ * handling sensitivity classification and multiple value sources.
6
+ *
7
+ * See PRD-001 FR-20, FR-21 for requirements.
8
+ */
9
+ import type { McpServerConfig, McpEnvVarDefinition, McpHeaderDefinition, ResolvedHeader, EnvVarResolutionResult } from "../core/types.js";
10
+ /**
11
+ * CLI --env flag values parsed from KEY=VALUE format.
12
+ */
13
+ export interface CliEnvFlags {
14
+ [key: string]: string;
15
+ }
16
+ /**
17
+ * Extract environment variable definitions from MCP server config.
18
+ *
19
+ * @param config - The MCP server configuration
20
+ * @returns Record of env var names to definitions
21
+ */
22
+ export declare function extractEnvDefsFromConfig(config: McpServerConfig): Record<string, McpEnvVarDefinition>;
23
+ /**
24
+ * Extract header definitions from HTTP transport config.
25
+ *
26
+ * @param config - The MCP server configuration
27
+ * @returns Record of header names to definitions
28
+ */
29
+ export declare function extractHeaderDefsFromConfig(config: McpServerConfig): Record<string, McpHeaderDefinition>;
30
+ /**
31
+ * Resolve environment variable definitions to values.
32
+ *
33
+ * Resolution priority:
34
+ * 1. Sensitive vars: Always passthrough (never resolve value)
35
+ * 2. CLI --env flags: For nonsensitive vars only
36
+ * 3. process.env: Current environment value
37
+ * 4. Default value: If specified for nonsensitive var
38
+ * 5. Passthrough: If no value resolved
39
+ *
40
+ * @param serverName - Name of the MCP server (for result tracking)
41
+ * @param envDefs - Environment variable definitions from config
42
+ * @param cliEnvFlags - Values from CLI --env flags
43
+ * @returns Resolution result with resolved vars, missing required, and warnings
44
+ */
45
+ export declare function resolveEnvVars(serverName: string, envDefs: Record<string, McpEnvVarDefinition>, cliEnvFlags?: CliEnvFlags): EnvVarResolutionResult;
46
+ /**
47
+ * Resolve header definitions to values.
48
+ *
49
+ * @param headerDefs - Header definitions from HTTP transport config
50
+ * @returns Array of resolved headers
51
+ */
52
+ export declare function resolveHeaders(headerDefs: Record<string, McpHeaderDefinition>): ResolvedHeader[];
53
+ /**
54
+ * Validate that --env flags don't include sensitive variables.
55
+ *
56
+ * @param cliEnvFlags - Values from CLI --env flags
57
+ * @param envDefs - Environment variable definitions from config
58
+ * @returns List of invalid flag names (sensitive vars that were provided)
59
+ */
60
+ export declare function validateCliEnvFlags(cliEnvFlags: CliEnvFlags, envDefs: Record<string, McpEnvVarDefinition>): string[];
61
+ /**
62
+ * Resolve all environment variables for an MCP server config.
63
+ *
64
+ * This is a convenience function that combines extraction and resolution.
65
+ *
66
+ * @param serverName - Name of the MCP server
67
+ * @param config - The MCP server configuration
68
+ * @param cliEnvFlags - Values from CLI --env flags
69
+ * @returns Complete resolution result including env vars and headers
70
+ */
71
+ export declare function resolveEnvVarsFromConfig(serverName: string, config: McpServerConfig, cliEnvFlags?: CliEnvFlags): EnvVarResolutionResult;
72
+ /**
73
+ * Merge multiple env var definitions from different MCP servers.
74
+ *
75
+ * Used when validating CLI flags against all MCP servers in a kit.
76
+ *
77
+ * @param configs - Array of MCP server configurations
78
+ * @returns Merged record of all env var definitions
79
+ */
80
+ export declare function mergeEnvDefs(configs: McpServerConfig[]): Record<string, McpEnvVarDefinition>;
81
+ //# sourceMappingURL=env-resolver.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"env-resolver.d.ts","sourceRoot":"","sources":["../../src/resolution/env-resolver.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EACV,eAAe,EACf,mBAAmB,EACnB,mBAAmB,EAEnB,cAAc,EACd,sBAAsB,EAEvB,MAAM,kBAAkB,CAAC;AAE1B;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAC;CACvB;AAED;;;;;GAKG;AACH,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,eAAe,GACtB,MAAM,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAErC;AAED;;;;;GAKG;AACH,wBAAgB,2BAA2B,CACzC,MAAM,EAAE,eAAe,GACtB,MAAM,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAKrC;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,cAAc,CAC5B,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,mBAAmB,CAAC,EAC5C,WAAW,GAAE,WAAgB,GAC5B,sBAAsB,CAiFxB;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAC5B,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,mBAAmB,CAAC,GAC9C,cAAc,EAAE,CAmClB;AAED;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CACjC,WAAW,EAAE,WAAW,EACxB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,mBAAmB,CAAC,GAC3C,MAAM,EAAE,CAWV;AAED;;;;;;;;;GASG;AACH,wBAAgB,wBAAwB,CACtC,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,eAAe,EACvB,WAAW,GAAE,WAAgB,GAC5B,sBAAsB,CAQxB;AAED;;;;;;;GAOG;AACH,wBAAgB,YAAY,CAC1B,OAAO,EAAE,eAAe,EAAE,GACzB,MAAM,CAAC,MAAM,EAAE,mBAAmB,CAAC,CA8BrC"}