@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,412 @@
1
+ /**
2
+ * Primitive resolution module.
3
+ *
4
+ * Provides functionality to resolve primitive references from kit manifests
5
+ * to concrete versions in the shared primitives library.
6
+ */
7
+ import path from "node:path";
8
+ import { isReferencedPrimitive, isInlinePrimitive, PRIMITIVE_TYPES } from "../core/types.js";
9
+ import { parseReference, ReferenceParseError } from "./reference-parser.js";
10
+ import { resolveVersion } from "./version-resolver.js";
11
+ import { resolveRegistryPrimitivePath } from "./primitive-paths.js";
12
+ import { pathExists, readFile } from "../adapters/file-operations.js";
13
+ export { createPrimitiveKey } from "./types.js";
14
+ // Re-export reference parser
15
+ export { parseReference, formatReference, isValidPrimitiveName, isValidVersionSpec, parseVersionSpec, extractName, extractVersionSpec, ReferenceParseError, } from "./reference-parser.js";
16
+ // Re-export primitives registry
17
+ export { PrimitivesRegistryLoader, PrimitivesRegistryError, createPrimitivesRegistry, loadPrimitivesRegistry, } from "./primitives-registry.js";
18
+ // Re-export version resolver
19
+ export { resolveVersion, findHighestMatching, satisfies, filterSatisfying, describeVersionSpec, specsCouldConflict, findHighestMatchingAll, createVersionResolution, VersionResolutionError, } from "./version-resolver.js";
20
+ // Re-export multi-kit resolver
21
+ export { resolveMultipleKits, deduplicatePrimitives } from "./multi-kit-resolver.js";
22
+ export { extractEnvDefsFromConfig, extractHeaderDefsFromConfig, resolveEnvVars, resolveHeaders, validateCliEnvFlags, resolveEnvVarsFromConfig, mergeEnvDefs, } from "./env-resolver.js";
23
+ /**
24
+ * Resolves all primitive references in a kit manifest.
25
+ *
26
+ * This function processes both referenced primitives (with `ref` syntax)
27
+ * and inline primitives (with `entrypoint` syntax), resolving references
28
+ * to concrete versions from the primitives registry.
29
+ *
30
+ * @param kit - The kit manifest
31
+ * @param registry - The primitives registry loader
32
+ * @param kitBasePath - Base path to the kit directory
33
+ * @returns Resolution result with resolved primitives and any errors
34
+ */
35
+ export async function resolvePrimitiveReferences(kit, registry, kitBasePath) {
36
+ const resolved = [];
37
+ const errors = [];
38
+ // Process each primitive type
39
+ for (const primitiveType of PRIMITIVE_TYPES) {
40
+ const primitives = kit.primitives[primitiveType];
41
+ if (!primitives || primitives.length === 0) {
42
+ continue;
43
+ }
44
+ for (const primitive of primitives) {
45
+ const result = await resolvePrimitive(primitiveType, primitive, registry, kitBasePath, kit.name);
46
+ if (result.error) {
47
+ errors.push(result.error);
48
+ }
49
+ else if (result.resolved) {
50
+ resolved.push(result.resolved);
51
+ }
52
+ }
53
+ }
54
+ return {
55
+ kit: kit.name,
56
+ primitives: resolved,
57
+ errors,
58
+ };
59
+ }
60
+ /**
61
+ * Resolves a single primitive declaration.
62
+ */
63
+ async function resolvePrimitive(type, primitive, registry, kitBasePath, kitName) {
64
+ if (type === "hooks") {
65
+ const hookPrimitive = primitive;
66
+ if (!hookPrimitive.binding) {
67
+ return {
68
+ error: {
69
+ type: "invalid-hook-binding",
70
+ primitive: JSON.stringify(primitive),
71
+ message: "Hook primitives must include a binding configuration",
72
+ },
73
+ };
74
+ }
75
+ const hookResult = isReferencedPrimitive(hookPrimitive)
76
+ ? await resolveReferencedHook(hookPrimitive.ref, hookPrimitive.binding, registry)
77
+ : await resolveInlineHook(hookPrimitive, kitBasePath);
78
+ if (hookResult.resolved) {
79
+ if (hookPrimitive.instanceName) {
80
+ hookResult.resolved.instanceName = hookPrimitive.instanceName;
81
+ }
82
+ hookResult.resolved.kitName = kitName;
83
+ }
84
+ return hookResult;
85
+ }
86
+ if (isReferencedPrimitive(primitive)) {
87
+ const result = await resolveReferencedPrimitive(type, primitive.ref, registry);
88
+ if (result.resolved && primitive.instanceName) {
89
+ result.resolved.instanceName = primitive.instanceName;
90
+ }
91
+ if (result.resolved) {
92
+ result.resolved.kitName = kitName;
93
+ }
94
+ return result;
95
+ }
96
+ if (isInlinePrimitive(primitive)) {
97
+ const result = await resolveInlinePrimitive(type, primitive, kitBasePath);
98
+ if (result.resolved && primitive.instanceName) {
99
+ result.resolved.instanceName = primitive.instanceName;
100
+ }
101
+ if (result.resolved) {
102
+ result.resolved.kitName = kitName;
103
+ }
104
+ return result;
105
+ }
106
+ // Unknown primitive format
107
+ return {
108
+ error: {
109
+ type: "invalid-reference",
110
+ primitive: JSON.stringify(primitive),
111
+ message: "Invalid primitive declaration: must have either 'ref' or 'name' + 'entrypoint'",
112
+ },
113
+ };
114
+ }
115
+ /**
116
+ * Resolves a referenced primitive from the primitives registry.
117
+ */
118
+ async function resolveReferencedPrimitive(type, ref, registry) {
119
+ // Parse the reference
120
+ let parsedRef;
121
+ try {
122
+ parsedRef = parseReference(ref);
123
+ }
124
+ catch (error) {
125
+ if (error instanceof ReferenceParseError) {
126
+ return {
127
+ error: {
128
+ type: "invalid-reference",
129
+ primitive: ref,
130
+ message: error.message,
131
+ },
132
+ };
133
+ }
134
+ throw error;
135
+ }
136
+ // Look up the primitive in the registry
137
+ const entry = await registry.getPrimitive(type, parsedRef.name);
138
+ if (!entry) {
139
+ return {
140
+ error: {
141
+ type: "not-found",
142
+ primitive: ref,
143
+ message: `Primitive "${parsedRef.name}" of type "${type}" not found in registry`,
144
+ },
145
+ };
146
+ }
147
+ // Resolve the version
148
+ const resolvedEntry = resolveVersion(entry.versions, parsedRef.versionSpec);
149
+ if (!resolvedEntry) {
150
+ const availableVersions = entry.versions.map((v) => v.version);
151
+ return {
152
+ error: {
153
+ type: "no-matching-version",
154
+ primitive: ref,
155
+ message: `No version matching "${parsedRef.versionSpec}" found for "${parsedRef.name}". Available: ${availableVersions.join(", ")}`,
156
+ available: availableVersions,
157
+ },
158
+ };
159
+ }
160
+ // Build the resolved primitive
161
+ const basePath = path.join(registry.getBasePath(), entry.path, resolvedEntry.path);
162
+ const sourcePath = await resolveRegistryPrimitivePath(type, parsedRef.name, basePath);
163
+ return {
164
+ resolved: {
165
+ name: parsedRef.name,
166
+ type,
167
+ ref,
168
+ resolvedVersion: resolvedEntry.version,
169
+ sourcePath,
170
+ isInline: false,
171
+ metadata: {
172
+ description: entry.description,
173
+ released: resolvedEntry.released,
174
+ changelog: resolvedEntry.changelog,
175
+ },
176
+ },
177
+ };
178
+ }
179
+ /**
180
+ * Resolves an inline primitive from the kit directory.
181
+ */
182
+ async function resolveInlinePrimitive(type, primitive, kitBasePath) {
183
+ // Resolve the entrypoint path relative to the kit directory
184
+ const sourcePath = path.resolve(kitBasePath, primitive.entrypoint);
185
+ // Build metadata object, only including description if defined
186
+ const metadata = {};
187
+ if (primitive.description !== undefined) {
188
+ metadata.description = primitive.description;
189
+ }
190
+ return {
191
+ resolved: {
192
+ name: primitive.name,
193
+ type,
194
+ sourcePath,
195
+ isInline: true,
196
+ metadata,
197
+ },
198
+ };
199
+ }
200
+ async function resolveReferencedHook(ref, binding, registry) {
201
+ let parsedRef;
202
+ try {
203
+ parsedRef = parseReference(ref);
204
+ }
205
+ catch (error) {
206
+ if (error instanceof ReferenceParseError) {
207
+ return {
208
+ error: {
209
+ type: "invalid-reference",
210
+ primitive: ref,
211
+ message: error.message,
212
+ },
213
+ };
214
+ }
215
+ throw error;
216
+ }
217
+ const entry = await registry.getPrimitive("hooks", parsedRef.name);
218
+ if (!entry) {
219
+ return {
220
+ error: {
221
+ type: "not-found",
222
+ primitive: ref,
223
+ message: `Primitive "${parsedRef.name}" of type "hooks" not found in registry`,
224
+ },
225
+ };
226
+ }
227
+ const resolvedEntry = resolveVersion(entry.versions, parsedRef.versionSpec);
228
+ if (!resolvedEntry) {
229
+ const availableVersions = entry.versions.map((v) => v.version);
230
+ return {
231
+ error: {
232
+ type: "no-matching-version",
233
+ primitive: ref,
234
+ message: `No version matching "${parsedRef.versionSpec}" found for "${parsedRef.name}". Available: ${availableVersions.join(", ")}`,
235
+ available: availableVersions,
236
+ },
237
+ };
238
+ }
239
+ const programDir = path.join(registry.getBasePath(), entry.path, resolvedEntry.path);
240
+ const configPath = path.join(programDir, "config.json");
241
+ if (!pathExists(configPath)) {
242
+ return {
243
+ error: {
244
+ type: "invalid-hook-program",
245
+ primitive: ref,
246
+ message: `Hook program config.json not found at ${configPath}`,
247
+ },
248
+ };
249
+ }
250
+ const hookProgram = await loadHookProgramConfig(configPath);
251
+ if (!hookProgram) {
252
+ return {
253
+ error: {
254
+ type: "invalid-hook-program",
255
+ primitive: ref,
256
+ message: `Invalid hook program config at ${configPath}`,
257
+ },
258
+ };
259
+ }
260
+ const entryPath = path.join(programDir, hookProgram.runtime.entrypoint);
261
+ if (!pathExists(entryPath)) {
262
+ return {
263
+ error: {
264
+ type: "invalid-hook-program",
265
+ primitive: ref,
266
+ message: `Hook program entrypoint not found at ${entryPath}`,
267
+ },
268
+ };
269
+ }
270
+ return {
271
+ resolved: {
272
+ name: parsedRef.name,
273
+ type: "hooks",
274
+ ref,
275
+ resolvedVersion: resolvedEntry.version,
276
+ sourcePath: configPath,
277
+ isInline: false,
278
+ metadata: {
279
+ description: entry.description,
280
+ released: resolvedEntry.released,
281
+ changelog: resolvedEntry.changelog,
282
+ },
283
+ hookBinding: binding,
284
+ hookProgram,
285
+ hookProgramDir: programDir,
286
+ hookEntryPath: entryPath,
287
+ },
288
+ };
289
+ }
290
+ async function resolveInlineHook(primitive, kitBasePath) {
291
+ const configPath = path.resolve(kitBasePath, primitive.entrypoint);
292
+ if (!pathExists(configPath)) {
293
+ return {
294
+ error: {
295
+ type: "invalid-hook-program",
296
+ primitive: primitive.name,
297
+ message: `Hook program config.json not found at ${configPath}`,
298
+ },
299
+ };
300
+ }
301
+ const hookProgram = await loadHookProgramConfig(configPath);
302
+ if (!hookProgram) {
303
+ return {
304
+ error: {
305
+ type: "invalid-hook-program",
306
+ primitive: primitive.name,
307
+ message: `Invalid hook program config at ${configPath}`,
308
+ },
309
+ };
310
+ }
311
+ const programDir = path.dirname(configPath);
312
+ const entryPath = path.join(programDir, hookProgram.runtime.entrypoint);
313
+ if (!pathExists(entryPath)) {
314
+ return {
315
+ error: {
316
+ type: "invalid-hook-program",
317
+ primitive: primitive.name,
318
+ message: `Hook program entrypoint not found at ${entryPath}`,
319
+ },
320
+ };
321
+ }
322
+ const metadata = {};
323
+ if (hookProgram.description) {
324
+ metadata.description = hookProgram.description;
325
+ }
326
+ return {
327
+ resolved: {
328
+ name: primitive.name,
329
+ type: "hooks",
330
+ sourcePath: configPath,
331
+ isInline: true,
332
+ metadata,
333
+ hookBinding: primitive.binding,
334
+ hookProgram,
335
+ hookProgramDir: programDir,
336
+ hookEntryPath: entryPath,
337
+ },
338
+ };
339
+ }
340
+ async function loadHookProgramConfig(configPath) {
341
+ try {
342
+ const content = await readFile(configPath);
343
+ const parsed = JSON.parse(content);
344
+ if (!parsed || !parsed.runtime || !parsed.runtime.entrypoint) {
345
+ return null;
346
+ }
347
+ return parsed;
348
+ }
349
+ catch {
350
+ return null;
351
+ }
352
+ }
353
+ /**
354
+ * Checks if a kit has any referenced primitives (requiring resolution).
355
+ *
356
+ * @param kit - The kit manifest
357
+ * @returns True if the kit has referenced primitives
358
+ */
359
+ export function hasReferencedPrimitives(kit) {
360
+ for (const type of PRIMITIVE_TYPES) {
361
+ const primitives = kit.primitives[type];
362
+ if (primitives && primitives.some(isReferencedPrimitive)) {
363
+ return true;
364
+ }
365
+ }
366
+ return false;
367
+ }
368
+ /**
369
+ * Counts primitives by resolution type.
370
+ *
371
+ * @param kit - The kit manifest
372
+ * @returns Object with referenced and inline counts
373
+ */
374
+ export function countPrimitivesByType(kit) {
375
+ let referenced = 0;
376
+ let inline = 0;
377
+ for (const type of PRIMITIVE_TYPES) {
378
+ const primitives = kit.primitives[type];
379
+ if (!primitives)
380
+ continue;
381
+ for (const p of primitives) {
382
+ if (isReferencedPrimitive(p)) {
383
+ referenced++;
384
+ }
385
+ else if (isInlinePrimitive(p)) {
386
+ inline++;
387
+ }
388
+ }
389
+ }
390
+ return { referenced, inline };
391
+ }
392
+ /**
393
+ * Extracts all primitive references from a kit.
394
+ *
395
+ * @param kit - The kit manifest
396
+ * @returns Array of reference strings
397
+ */
398
+ export function extractReferences(kit) {
399
+ const refs = [];
400
+ for (const type of PRIMITIVE_TYPES) {
401
+ const primitives = kit.primitives[type];
402
+ if (!primitives)
403
+ continue;
404
+ for (const p of primitives) {
405
+ if (isReferencedPrimitive(p)) {
406
+ refs.push(p.ref);
407
+ }
408
+ }
409
+ }
410
+ return refs;
411
+ }
412
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/resolution/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,43 @@
1
+ /**
2
+ * Multi-kit resolver for deduplicating shared primitives.
3
+ *
4
+ * When installing multiple kits that reference the same primitives,
5
+ * this module ensures each shared primitive is resolved once with
6
+ * the highest compatible version.
7
+ */
8
+ import type { KitManifest, ResolvedPrimitive, PrimitiveType } from "../core/types.js";
9
+ import type { MultiKitResolutionResult } from "./types.js";
10
+ import { PrimitivesRegistryLoader } from "./primitives-registry.js";
11
+ /**
12
+ * Resolves primitives across multiple kits, deduplicating shared primitives.
13
+ *
14
+ * When multiple kits reference the same primitive:
15
+ * 1. Collects all version specs for that primitive
16
+ * 2. Finds the highest version satisfying all specs
17
+ * 3. Uses that single resolved version for all kits
18
+ *
19
+ * @param kits - Array of kit manifests
20
+ * @param registry - The primitives registry loader
21
+ * @param kitBasePaths - Map of kit names to their base paths
22
+ * @returns Multi-kit resolution result with deduplication
23
+ */
24
+ export declare function resolveMultipleKits(kits: KitManifest[], registry: PrimitivesRegistryLoader, kitBasePaths: Map<string, string>): Promise<MultiKitResolutionResult>;
25
+ /**
26
+ * Deduplicates primitives by merging identical versions.
27
+ *
28
+ * @param primitives - Array of resolved primitives from multiple kits
29
+ * @returns Deduplicated array with shared primitives merged
30
+ */
31
+ export declare function deduplicatePrimitives(primitives: ResolvedPrimitive[]): Map<string, ResolvedPrimitive>;
32
+ /**
33
+ * Analyzes primitive sharing across kits.
34
+ *
35
+ * @param kits - Array of kit manifests
36
+ * @returns Analysis of shared primitives
37
+ */
38
+ export declare function analyzeSharedPrimitives(kits: KitManifest[]): Map<string, {
39
+ type: PrimitiveType;
40
+ name: string;
41
+ kits: string[];
42
+ }>;
43
+ //# sourceMappingURL=multi-kit-resolver.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"multi-kit-resolver.d.ts","sourceRoot":"","sources":["../../src/resolution/multi-kit-resolver.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH,OAAO,KAAK,EAAE,WAAW,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEtF,OAAO,KAAK,EAAE,wBAAwB,EAAmB,MAAM,YAAY,CAAC;AAG5E,OAAO,EAAE,wBAAwB,EAAE,MAAM,0BAA0B,CAAC;AAapE;;;;;;;;;;;;GAYG;AACH,wBAAsB,mBAAmB,CACvC,IAAI,EAAE,WAAW,EAAE,EACnB,QAAQ,EAAE,wBAAwB,EAClC,YAAY,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GAChC,OAAO,CAAC,wBAAwB,CAAC,CAiEnC;AAiKD;;;;;GAKG;AACH,wBAAgB,qBAAqB,CACnC,UAAU,EAAE,iBAAiB,EAAE,GAC9B,GAAG,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAgChC;AAED;;;;;GAKG;AACH,wBAAgB,uBAAuB,CACrC,IAAI,EAAE,WAAW,EAAE,GAClB,GAAG,CAAC,MAAM,EAAE;IAAE,IAAI,EAAE,aAAa,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC,CAepE"}