@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,295 @@
1
+ /**
2
+ * Primitives registry loader and query interface.
3
+ *
4
+ * Provides functionality to load the primitives.json file and query
5
+ * primitives by type and name.
6
+ */
7
+ import { readFile } from "node:fs/promises";
8
+ import { existsSync } from "node:fs";
9
+ import path from "node:path";
10
+ /**
11
+ * Error thrown when the primitives registry cannot be loaded.
12
+ */
13
+ export class PrimitivesRegistryError extends Error {
14
+ errorCause;
15
+ constructor(message, cause) {
16
+ super(message);
17
+ this.name = "PrimitivesRegistryError";
18
+ this.errorCause = cause;
19
+ }
20
+ }
21
+ /**
22
+ * Wrapper class for querying the primitives registry.
23
+ */
24
+ export class PrimitivesRegistryLoader {
25
+ registry = null;
26
+ basePath;
27
+ constructor(basePath) {
28
+ this.basePath = basePath;
29
+ }
30
+ /**
31
+ * Loads the primitives registry from the repository.
32
+ *
33
+ * @returns The loaded primitives registry
34
+ * @throws PrimitivesRegistryError if loading fails
35
+ */
36
+ async load() {
37
+ if (this.registry) {
38
+ return this.registry;
39
+ }
40
+ const registryPath = path.join(this.basePath, "primitives.json");
41
+ if (!existsSync(registryPath)) {
42
+ // Return empty registry if file doesn't exist
43
+ this.registry = {
44
+ schemaVersion: "1.0.0",
45
+ primitives: {},
46
+ };
47
+ return this.registry;
48
+ }
49
+ try {
50
+ const content = await readFile(registryPath, "utf-8");
51
+ this.registry = JSON.parse(content);
52
+ return this.registry;
53
+ }
54
+ catch (error) {
55
+ throw new PrimitivesRegistryError(`Failed to load primitives registry from ${registryPath}`, error);
56
+ }
57
+ }
58
+ /**
59
+ * Gets the loaded registry, loading it if necessary.
60
+ */
61
+ async getRegistry() {
62
+ if (!this.registry) {
63
+ return this.load();
64
+ }
65
+ return this.registry;
66
+ }
67
+ /**
68
+ * Checks if the registry has been loaded.
69
+ */
70
+ isLoaded() {
71
+ return this.registry !== null;
72
+ }
73
+ /**
74
+ * Gets the base path for resolving primitive paths.
75
+ */
76
+ getBasePath() {
77
+ return this.basePath;
78
+ }
79
+ /**
80
+ * Gets a primitive entry by type and name.
81
+ *
82
+ * @param type - The primitive type
83
+ * @param name - The primitive name
84
+ * @returns The primitive entry or null if not found
85
+ */
86
+ async getPrimitive(type, name) {
87
+ const registry = await this.getRegistry();
88
+ const primitivesByType = registry.primitives[type];
89
+ if (!primitivesByType) {
90
+ return null;
91
+ }
92
+ return primitivesByType[name] || null;
93
+ }
94
+ /**
95
+ * Gets all available versions for a primitive.
96
+ *
97
+ * @param type - The primitive type
98
+ * @param name - The primitive name
99
+ * @returns Array of version entries, sorted newest first
100
+ */
101
+ async getVersions(type, name) {
102
+ const entry = await this.getPrimitive(type, name);
103
+ if (!entry) {
104
+ return [];
105
+ }
106
+ // Return versions sorted by semver (newest first)
107
+ return [...entry.versions].sort((a, b) => {
108
+ return compareVersions(b.version, a.version);
109
+ });
110
+ }
111
+ /**
112
+ * Gets the version strings for a primitive.
113
+ *
114
+ * @param type - The primitive type
115
+ * @param name - The primitive name
116
+ * @returns Array of version strings
117
+ */
118
+ async getVersionStrings(type, name) {
119
+ const versions = await this.getVersions(type, name);
120
+ return versions.map((v) => v.version);
121
+ }
122
+ /**
123
+ * Gets the latest version for a primitive.
124
+ *
125
+ * @param type - The primitive type
126
+ * @param name - The primitive name
127
+ * @returns The latest version string or null if not found
128
+ */
129
+ async getLatestVersion(type, name) {
130
+ const entry = await this.getPrimitive(type, name);
131
+ return entry?.latest || null;
132
+ }
133
+ /**
134
+ * Gets a specific version entry for a primitive.
135
+ *
136
+ * @param type - The primitive type
137
+ * @param name - The primitive name
138
+ * @param version - The exact version string
139
+ * @returns The version entry or null if not found
140
+ */
141
+ async getVersion(type, name, version) {
142
+ const entry = await this.getPrimitive(type, name);
143
+ if (!entry) {
144
+ return null;
145
+ }
146
+ return entry.versions.find((v) => v.version === version) || null;
147
+ }
148
+ /**
149
+ * Resolves the full path to a primitive version's content.
150
+ *
151
+ * @param type - The primitive type
152
+ * @param name - The primitive name
153
+ * @param version - The version string
154
+ * @returns The absolute path to the primitive content or null if not found
155
+ */
156
+ async resolvePath(type, name, version) {
157
+ const entry = await this.getPrimitive(type, name);
158
+ if (!entry) {
159
+ return null;
160
+ }
161
+ const versionEntry = entry.versions.find((v) => v.version === version);
162
+ if (!versionEntry) {
163
+ return null;
164
+ }
165
+ // Combine base path + primitive path + version path
166
+ return path.join(this.basePath, entry.path, versionEntry.path);
167
+ }
168
+ /**
169
+ * Gets version resolution result with full path information.
170
+ *
171
+ * @param type - The primitive type
172
+ * @param name - The primitive name
173
+ * @param version - The exact version string
174
+ * @returns The version resolution result or null if not found
175
+ */
176
+ async getVersionResolution(type, name, version) {
177
+ const entry = await this.getPrimitive(type, name);
178
+ if (!entry) {
179
+ return null;
180
+ }
181
+ const versionEntry = entry.versions.find((v) => v.version === version);
182
+ if (!versionEntry) {
183
+ return null;
184
+ }
185
+ return {
186
+ version: versionEntry.version,
187
+ path: path.join(this.basePath, entry.path, versionEntry.path),
188
+ released: versionEntry.released,
189
+ changelog: versionEntry.changelog,
190
+ };
191
+ }
192
+ /**
193
+ * Checks if a primitive exists in the registry.
194
+ *
195
+ * @param type - The primitive type
196
+ * @param name - The primitive name
197
+ * @returns True if the primitive exists
198
+ */
199
+ async hasPrimitive(type, name) {
200
+ const entry = await this.getPrimitive(type, name);
201
+ return entry !== null;
202
+ }
203
+ /**
204
+ * Lists all primitives of a given type.
205
+ *
206
+ * @param type - The primitive type
207
+ * @returns Array of primitive names
208
+ */
209
+ async listPrimitives(type) {
210
+ const registry = await this.getRegistry();
211
+ const primitivesByType = registry.primitives[type];
212
+ if (!primitivesByType) {
213
+ return [];
214
+ }
215
+ return Object.keys(primitivesByType);
216
+ }
217
+ /**
218
+ * Lists all primitives across all types.
219
+ *
220
+ * @returns Map of type to primitive names
221
+ */
222
+ async listAllPrimitives() {
223
+ const registry = await this.getRegistry();
224
+ const result = new Map();
225
+ for (const [type, primitives] of Object.entries(registry.primitives)) {
226
+ if (primitives) {
227
+ result.set(type, Object.keys(primitives));
228
+ }
229
+ }
230
+ return result;
231
+ }
232
+ }
233
+ /**
234
+ * Compares two semver version strings.
235
+ *
236
+ * @returns Negative if a < b, positive if a > b, zero if equal
237
+ */
238
+ function compareVersions(a, b) {
239
+ const partsA = parseVersionParts(a);
240
+ const partsB = parseVersionParts(b);
241
+ // Compare major, minor, patch
242
+ for (let i = 0; i < 3; i++) {
243
+ const partA = partsA[i];
244
+ const partB = partsB[i];
245
+ if (partA !== partB) {
246
+ return partA - partB;
247
+ }
248
+ }
249
+ // Handle prerelease comparison
250
+ const preA = partsA[3];
251
+ const preB = partsB[3];
252
+ // No prerelease > has prerelease
253
+ if (preA === "" && preB !== "")
254
+ return 1;
255
+ if (preA !== "" && preB === "")
256
+ return -1;
257
+ if (preA === preB)
258
+ return 0;
259
+ // Lexicographic comparison for prerelease
260
+ return preA.localeCompare(preB);
261
+ }
262
+ /**
263
+ * Parses version string into [major, minor, patch, prerelease] parts.
264
+ */
265
+ function parseVersionParts(version) {
266
+ // Remove leading 'v' if present
267
+ const v = version.startsWith("v") ? version.slice(1) : version;
268
+ // Split on hyphen to separate prerelease
269
+ const splitResult = v.split("-", 2);
270
+ const mainPart = splitResult[0] ?? "";
271
+ const prerelease = splitResult[1] ?? "";
272
+ // Split main part into major.minor.patch
273
+ const parts = mainPart.split(".").map(Number);
274
+ return [parts[0] ?? 0, parts[1] ?? 0, parts[2] ?? 0, prerelease];
275
+ }
276
+ /**
277
+ * Creates a new primitives registry loader.
278
+ *
279
+ * @param basePath - The base path to the kit repository
280
+ * @returns A new PrimitivesRegistryLoader instance
281
+ */
282
+ export function createPrimitivesRegistry(basePath) {
283
+ return new PrimitivesRegistryLoader(basePath);
284
+ }
285
+ /**
286
+ * Loads a primitives registry from a repository path.
287
+ *
288
+ * @param basePath - The base path to the kit repository
289
+ * @returns The loaded primitives registry
290
+ */
291
+ export async function loadPrimitivesRegistry(basePath) {
292
+ const loader = createPrimitivesRegistry(basePath);
293
+ return loader.load();
294
+ }
295
+ //# sourceMappingURL=primitives-registry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"primitives-registry.js","sourceRoot":"","sources":["../../src/resolution/primitives-registry.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,IAAI,MAAM,WAAW,CAAC;AAU7B;;GAEG;AACH,MAAM,OAAO,uBAAwB,SAAQ,KAAK;IACvC,UAAU,CAAW;IAE9B,YAAY,OAAe,EAAE,KAAe;QAC1C,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,yBAAyB,CAAC;QACtC,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;IAC1B,CAAC;CACF;AAED;;GAEG;AACH,MAAM,OAAO,wBAAwB;IAC3B,QAAQ,GAA8B,IAAI,CAAC;IAC3C,QAAQ,CAAS;IAEzB,YAAY,QAAgB;QAC1B,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC3B,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,IAAI;QACR,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClB,OAAO,IAAI,CAAC,QAAQ,CAAC;QACvB,CAAC;QAED,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,iBAAiB,CAAC,CAAC;QAEjE,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;YAC9B,8CAA8C;YAC9C,IAAI,CAAC,QAAQ,GAAG;gBACd,aAAa,EAAE,OAAO;gBACtB,UAAU,EAAE,EAAE;aACf,CAAC;YACF,OAAO,IAAI,CAAC,QAAQ,CAAC;QACvB,CAAC;QAED,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;YACtD,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAuB,CAAC;YAC1D,OAAO,IAAI,CAAC,QAAQ,CAAC;QACvB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,uBAAuB,CAC/B,2CAA2C,YAAY,EAAE,EACzD,KAAK,CACN,CAAC;QACJ,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,WAAW;QACf,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;YACnB,OAAO,IAAI,CAAC,IAAI,EAAE,CAAC;QACrB,CAAC;QACD,OAAO,IAAI,CAAC,QAAQ,CAAC;IACvB,CAAC;IAED;;OAEG;IACH,QAAQ;QACN,OAAO,IAAI,CAAC,QAAQ,KAAK,IAAI,CAAC;IAChC,CAAC;IAED;;OAEG;IACH,WAAW;QACT,OAAO,IAAI,CAAC,QAAQ,CAAC;IACvB,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,YAAY,CAAC,IAAmB,EAAE,IAAY;QAClD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC;QAC1C,MAAM,gBAAgB,GAAG,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;QAEnD,IAAI,CAAC,gBAAgB,EAAE,CAAC;YACtB,OAAO,IAAI,CAAC;QACd,CAAC;QAED,OAAO,gBAAgB,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC;IACxC,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,WAAW,CAAC,IAAmB,EAAE,IAAY;QACjD,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAClD,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,kDAAkD;QAClD,OAAO,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;YACvC,OAAO,eAAe,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC;QAC/C,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,iBAAiB,CAAC,IAAmB,EAAE,IAAY;QACvD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACpD,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;IACxC,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,gBAAgB,CAAC,IAAmB,EAAE,IAAY;QACtD,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAClD,OAAO,KAAK,EAAE,MAAM,IAAI,IAAI,CAAC;IAC/B,CAAC;IAED;;;;;;;OAOG;IACH,KAAK,CAAC,UAAU,CACd,IAAmB,EACnB,IAAY,EACZ,OAAe;QAEf,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAClD,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,OAAO,IAAI,CAAC;QACd,CAAC;QAED,OAAO,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,OAAO,CAAC,IAAI,IAAI,CAAC;IACnE,CAAC;IAED;;;;;;;OAOG;IACH,KAAK,CAAC,WAAW,CAAC,IAAmB,EAAE,IAAY,EAAE,OAAe;QAClE,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAClD,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,OAAO,IAAI,CAAC;QACd,CAAC;QAED,MAAM,YAAY,GAAG,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,OAAO,CAAC,CAAC;QACvE,IAAI,CAAC,YAAY,EAAE,CAAC;YAClB,OAAO,IAAI,CAAC;QACd,CAAC;QAED,oDAAoD;QACpD,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC,IAAI,EAAE,YAAY,CAAC,IAAI,CAAC,CAAC;IACjE,CAAC;IAED;;;;;;;OAOG;IACH,KAAK,CAAC,oBAAoB,CACxB,IAAmB,EACnB,IAAY,EACZ,OAAe;QAEf,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAClD,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,OAAO,IAAI,CAAC;QACd,CAAC;QAED,MAAM,YAAY,GAAG,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,OAAO,CAAC,CAAC;QACvE,IAAI,CAAC,YAAY,EAAE,CAAC;YAClB,OAAO,IAAI,CAAC;QACd,CAAC;QAED,OAAO;YACL,OAAO,EAAE,YAAY,CAAC,OAAO;YAC7B,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC,IAAI,EAAE,YAAY,CAAC,IAAI,CAAC;YAC7D,QAAQ,EAAE,YAAY,CAAC,QAAQ;YAC/B,SAAS,EAAE,YAAY,CAAC,SAAS;SAClC,CAAC;IACJ,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,YAAY,CAAC,IAAmB,EAAE,IAAY;QAClD,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAClD,OAAO,KAAK,KAAK,IAAI,CAAC;IACxB,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,cAAc,CAAC,IAAmB;QACtC,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC;QAC1C,MAAM,gBAAgB,GAAG,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;QAEnD,IAAI,CAAC,gBAAgB,EAAE,CAAC;YACtB,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,OAAO,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;IACvC,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,iBAAiB;QACrB,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC;QAC1C,MAAM,MAAM,GAAG,IAAI,GAAG,EAA2B,CAAC;QAElD,KAAK,MAAM,CAAC,IAAI,EAAE,UAAU,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;YACrE,IAAI,UAAU,EAAE,CAAC;gBACf,MAAM,CAAC,GAAG,CAAC,IAAqB,EAAE,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;YAC7D,CAAC;QACH,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;CACF;AAED;;;;GAIG;AACH,SAAS,eAAe,CAAC,CAAS,EAAE,CAAS;IAC3C,MAAM,MAAM,GAAG,iBAAiB,CAAC,CAAC,CAAC,CAAC;IACpC,MAAM,MAAM,GAAG,iBAAiB,CAAC,CAAC,CAAC,CAAC;IAEpC,8BAA8B;IAC9B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAC3B,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAW,CAAC;QAClC,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAW,CAAC;QAClC,IAAI,KAAK,KAAK,KAAK,EAAE,CAAC;YACpB,OAAO,KAAK,GAAG,KAAK,CAAC;QACvB,CAAC;IACH,CAAC;IAED,+BAA+B;IAC/B,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;IACvB,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;IAEvB,iCAAiC;IACjC,IAAI,IAAI,KAAK,EAAE,IAAI,IAAI,KAAK,EAAE;QAAE,OAAO,CAAC,CAAC;IACzC,IAAI,IAAI,KAAK,EAAE,IAAI,IAAI,KAAK,EAAE;QAAE,OAAO,CAAC,CAAC,CAAC;IAC1C,IAAI,IAAI,KAAK,IAAI;QAAE,OAAO,CAAC,CAAC;IAE5B,0CAA0C;IAC1C,OAAO,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;AAClC,CAAC;AAED;;GAEG;AACH,SAAS,iBAAiB,CAAC,OAAe;IACxC,gCAAgC;IAChC,MAAM,CAAC,GAAG,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;IAE/D,yCAAyC;IACzC,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;IACpC,MAAM,QAAQ,GAAG,WAAW,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IACtC,MAAM,UAAU,GAAG,WAAW,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IAExC,yCAAyC;IACzC,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAE9C,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,UAAU,CAAC,CAAC;AACnE,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,wBAAwB,CAAC,QAAgB;IACvD,OAAO,IAAI,wBAAwB,CAAC,QAAQ,CAAC,CAAC;AAChD,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAAC,QAAgB;IAC3D,MAAM,MAAM,GAAG,wBAAwB,CAAC,QAAQ,CAAC,CAAC;IAClD,OAAO,MAAM,CAAC,IAAI,EAAE,CAAC;AACvB,CAAC"}
@@ -0,0 +1,62 @@
1
+ /**
2
+ * Primitive reference parser.
3
+ *
4
+ * Parses primitive references in the format `name@version-spec` into
5
+ * structured components for version resolution.
6
+ */
7
+ import type { ParsedReference, ParsedVersionSpec } from "./types.js";
8
+ /**
9
+ * Error thrown when a primitive reference cannot be parsed.
10
+ */
11
+ export declare class ReferenceParseError extends Error {
12
+ readonly reference: string;
13
+ constructor(reference: string, message: string);
14
+ }
15
+ /**
16
+ * Parses a primitive reference string into its components.
17
+ *
18
+ * Supported formats:
19
+ * - `name@1.2.3` - Exact version
20
+ * - `name@^1.2.3` - Caret range (compatible with)
21
+ * - `name@~1.2.3` - Tilde range (approximately)
22
+ * - `name@>=1.0.0 <2.0.0` - Range
23
+ * - `name@1.x` or `name@1` - Wildcard
24
+ * - `name@latest` - Latest version
25
+ *
26
+ * @param reference - The reference string to parse (e.g., "tf-plan@^1.0.0")
27
+ * @returns Parsed reference with name and version spec
28
+ * @throws ReferenceParseError if the reference format is invalid
29
+ */
30
+ export declare function parseReference(reference: string): ParsedReference;
31
+ /**
32
+ * Validates a primitive name follows naming conventions.
33
+ *
34
+ * Names must be:
35
+ * - Lowercase kebab-case
36
+ * - 3-50 characters
37
+ * - Start with a letter
38
+ * - Contain only letters, numbers, and hyphens
39
+ */
40
+ export declare function isValidPrimitiveName(name: string): boolean;
41
+ /**
42
+ * Validates a version specification string.
43
+ */
44
+ export declare function isValidVersionSpec(spec: string): boolean;
45
+ /**
46
+ * Parses a version specification into its type and raw value.
47
+ */
48
+ export declare function parseVersionSpec(spec: string): ParsedVersionSpec;
49
+ /**
50
+ * Formats a parsed reference back to string format.
51
+ */
52
+ export declare function formatReference(parsed: ParsedReference): string;
53
+ /**
54
+ * Extracts the primitive name from a reference string without full validation.
55
+ * Useful for quick lookups where full parsing isn't needed.
56
+ */
57
+ export declare function extractName(reference: string): string | null;
58
+ /**
59
+ * Extracts the version spec from a reference string without full validation.
60
+ */
61
+ export declare function extractVersionSpec(reference: string): string | null;
62
+ //# sourceMappingURL=reference-parser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reference-parser.d.ts","sourceRoot":"","sources":["../../src/resolution/reference-parser.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAErE;;GAEG;AACH,qBAAa,mBAAoB,SAAQ,KAAK;aAE1B,SAAS,EAAE,MAAM;gBAAjB,SAAS,EAAE,MAAM,EACjC,OAAO,EAAE,MAAM;CAKlB;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG,eAAe,CA0CjE;AAED;;;;;;;;GAQG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAQ1D;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAoCxD;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,iBAAiB,CAwChE;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,eAAe,GAAG,MAAM,CAE/D;AAED;;;GAGG;AACH,wBAAgB,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAW5D;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAWnE"}
@@ -0,0 +1,182 @@
1
+ /**
2
+ * Primitive reference parser.
3
+ *
4
+ * Parses primitive references in the format `name@version-spec` into
5
+ * structured components for version resolution.
6
+ */
7
+ /**
8
+ * Error thrown when a primitive reference cannot be parsed.
9
+ */
10
+ export class ReferenceParseError extends Error {
11
+ reference;
12
+ constructor(reference, message) {
13
+ super(message);
14
+ this.reference = reference;
15
+ this.name = "ReferenceParseError";
16
+ }
17
+ }
18
+ /**
19
+ * Parses a primitive reference string into its components.
20
+ *
21
+ * Supported formats:
22
+ * - `name@1.2.3` - Exact version
23
+ * - `name@^1.2.3` - Caret range (compatible with)
24
+ * - `name@~1.2.3` - Tilde range (approximately)
25
+ * - `name@>=1.0.0 <2.0.0` - Range
26
+ * - `name@1.x` or `name@1` - Wildcard
27
+ * - `name@latest` - Latest version
28
+ *
29
+ * @param reference - The reference string to parse (e.g., "tf-plan@^1.0.0")
30
+ * @returns Parsed reference with name and version spec
31
+ * @throws ReferenceParseError if the reference format is invalid
32
+ */
33
+ export function parseReference(reference) {
34
+ if (!reference || typeof reference !== "string") {
35
+ throw new ReferenceParseError(reference, "Reference must be a non-empty string");
36
+ }
37
+ const trimmed = reference.trim();
38
+ // Find the @ separator (last occurrence to handle edge cases)
39
+ const atIndex = trimmed.lastIndexOf("@");
40
+ if (atIndex === -1) {
41
+ throw new ReferenceParseError(reference, `Invalid reference format: missing "@" separator. Expected format: name@version-spec`);
42
+ }
43
+ if (atIndex === 0) {
44
+ throw new ReferenceParseError(reference, `Invalid reference format: missing primitive name before "@"`);
45
+ }
46
+ if (atIndex === trimmed.length - 1) {
47
+ throw new ReferenceParseError(reference, `Invalid reference format: missing version spec after "@"`);
48
+ }
49
+ const name = trimmed.substring(0, atIndex).trim();
50
+ const versionSpec = trimmed.substring(atIndex + 1).trim();
51
+ // Validate name
52
+ if (!isValidPrimitiveName(name)) {
53
+ throw new ReferenceParseError(reference, `Invalid primitive name "${name}": must be lowercase kebab-case (3-50 characters, letters, numbers, hyphens)`);
54
+ }
55
+ // Validate version spec
56
+ if (!isValidVersionSpec(versionSpec)) {
57
+ throw new ReferenceParseError(reference, `Invalid version spec "${versionSpec}": unrecognized format`);
58
+ }
59
+ return { name, versionSpec };
60
+ }
61
+ /**
62
+ * Validates a primitive name follows naming conventions.
63
+ *
64
+ * Names must be:
65
+ * - Lowercase kebab-case
66
+ * - 3-50 characters
67
+ * - Start with a letter
68
+ * - Contain only letters, numbers, and hyphens
69
+ */
70
+ export function isValidPrimitiveName(name) {
71
+ if (!name || name.length < 3 || name.length > 50) {
72
+ return false;
73
+ }
74
+ // Lowercase kebab-case: starts with letter, contains letters, numbers, hyphens
75
+ const pattern = /^[a-z][a-z0-9]*(-[a-z0-9]+)*$/;
76
+ return pattern.test(name);
77
+ }
78
+ /**
79
+ * Validates a version specification string.
80
+ */
81
+ export function isValidVersionSpec(spec) {
82
+ if (!spec)
83
+ return false;
84
+ // Check for known patterns
85
+ const patterns = [
86
+ /^latest$/i, // latest keyword
87
+ /^\d+\.\d+\.\d+$/, // exact: 1.2.3
88
+ /^\d+\.\d+\.\d+-[\w.]+$/, // exact with prerelease: 1.2.3-beta.1
89
+ /^\^[\d.]+/, // caret: ^1.2.3, ^1.2, ^1
90
+ /^~[\d.]+/, // tilde: ~1.2.3, ~1.2
91
+ /^>=?[\d.]+/, // range start: >=1.0.0, >1.0.0
92
+ /^<=?[\d.]+/, // range start: <=1.0.0, <1.0.0
93
+ /^\d+\.x$/, // wildcard: 1.x
94
+ /^\d+$/, // wildcard: 1
95
+ /^\d+\.\d+$/, // partial: 1.2
96
+ /^\*$/, // any version
97
+ ];
98
+ // Check if any pattern matches
99
+ if (patterns.some((p) => p.test(spec))) {
100
+ return true;
101
+ }
102
+ // Check for range expressions (>=1.0.0 <2.0.0)
103
+ if (spec.includes(" ")) {
104
+ const parts = spec.split(/\s+/);
105
+ return parts.every((part) => isValidVersionSpec(part));
106
+ }
107
+ // Check for || ranges
108
+ if (spec.includes("||")) {
109
+ const parts = spec.split(/\s*\|\|\s*/);
110
+ return parts.every((part) => isValidVersionSpec(part));
111
+ }
112
+ return false;
113
+ }
114
+ /**
115
+ * Parses a version specification into its type and raw value.
116
+ */
117
+ export function parseVersionSpec(spec) {
118
+ const trimmed = spec.trim();
119
+ // Check for latest keyword
120
+ if (trimmed.toLowerCase() === "latest") {
121
+ return { type: "latest", raw: trimmed };
122
+ }
123
+ // Check for exact version (x.y.z or x.y.z-prerelease)
124
+ if (/^\d+\.\d+\.\d+(-[\w.]+)?$/.test(trimmed)) {
125
+ return { type: "exact", raw: trimmed };
126
+ }
127
+ // Check for caret range (^x.y.z)
128
+ if (trimmed.startsWith("^")) {
129
+ return { type: "caret", raw: trimmed };
130
+ }
131
+ // Check for tilde range (~x.y.z)
132
+ if (trimmed.startsWith("~")) {
133
+ return { type: "tilde", raw: trimmed };
134
+ }
135
+ // Check for range expressions (contains comparison operators or multiple parts)
136
+ if (trimmed.startsWith(">") ||
137
+ trimmed.startsWith("<") ||
138
+ trimmed.includes(" ") ||
139
+ trimmed.includes("||")) {
140
+ return { type: "range", raw: trimmed };
141
+ }
142
+ // Check for wildcard (1.x, 1, *, 1.2)
143
+ if (/^(\d+\.x|\d+|\*|\d+\.\d+)$/.test(trimmed)) {
144
+ return { type: "wildcard", raw: trimmed };
145
+ }
146
+ // Default to treating as a range
147
+ return { type: "range", raw: trimmed };
148
+ }
149
+ /**
150
+ * Formats a parsed reference back to string format.
151
+ */
152
+ export function formatReference(parsed) {
153
+ return `${parsed.name}@${parsed.versionSpec}`;
154
+ }
155
+ /**
156
+ * Extracts the primitive name from a reference string without full validation.
157
+ * Useful for quick lookups where full parsing isn't needed.
158
+ */
159
+ export function extractName(reference) {
160
+ if (!reference || typeof reference !== "string") {
161
+ return null;
162
+ }
163
+ const atIndex = reference.lastIndexOf("@");
164
+ if (atIndex <= 0) {
165
+ return null;
166
+ }
167
+ return reference.substring(0, atIndex).trim();
168
+ }
169
+ /**
170
+ * Extracts the version spec from a reference string without full validation.
171
+ */
172
+ export function extractVersionSpec(reference) {
173
+ if (!reference || typeof reference !== "string") {
174
+ return null;
175
+ }
176
+ const atIndex = reference.lastIndexOf("@");
177
+ if (atIndex === -1 || atIndex === reference.length - 1) {
178
+ return null;
179
+ }
180
+ return reference.substring(atIndex + 1).trim();
181
+ }
182
+ //# sourceMappingURL=reference-parser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reference-parser.js","sourceRoot":"","sources":["../../src/resolution/reference-parser.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,77 @@
1
+ /**
2
+ * Primitive resolution type definitions.
3
+ *
4
+ * These types support resolving primitive references from kit manifests
5
+ * to concrete versions in the shared primitives library.
6
+ */
7
+ import type { PrimitiveType, ResolvedPrimitive } from "../core/types.js";
8
+ /**
9
+ * Parsed primitive reference.
10
+ */
11
+ export interface ParsedReference {
12
+ name: string;
13
+ versionSpec: string;
14
+ }
15
+ /**
16
+ * Error during primitive resolution.
17
+ */
18
+ export interface ResolutionError {
19
+ type: "not-found" | "no-matching-version" | "invalid-reference" | "invalid-hook-program" | "invalid-hook-binding";
20
+ primitive: string;
21
+ message: string;
22
+ available?: string[];
23
+ }
24
+ /**
25
+ * Result of resolving primitives for a single kit.
26
+ */
27
+ export interface KitResolutionResult {
28
+ kit: string;
29
+ primitives: ResolvedPrimitive[];
30
+ errors: ResolutionError[];
31
+ }
32
+ /**
33
+ * Result of resolving primitives across multiple kits.
34
+ */
35
+ export interface MultiKitResolutionResult {
36
+ /**
37
+ * All resolved primitives deduplicated by type:name.
38
+ */
39
+ allPrimitives: Map<string, ResolvedPrimitive>;
40
+ /**
41
+ * Primitives per kit (may reference same resolved primitives).
42
+ */
43
+ kitPrimitives: Map<string, ResolvedPrimitive[]>;
44
+ /**
45
+ * Primitives shared across multiple kits.
46
+ */
47
+ sharedPrimitives: Map<string, string[]>;
48
+ /**
49
+ * All resolution errors.
50
+ */
51
+ errors: ResolutionError[];
52
+ }
53
+ /**
54
+ * Version resolution result.
55
+ */
56
+ export interface VersionResolutionResult {
57
+ version: string;
58
+ path: string;
59
+ released: string;
60
+ changelog: string;
61
+ }
62
+ /**
63
+ * Supported version spec formats.
64
+ */
65
+ export type VersionSpecType = "exact" | "caret" | "tilde" | "range" | "wildcard" | "latest";
66
+ /**
67
+ * Parsed version specification.
68
+ */
69
+ export interface ParsedVersionSpec {
70
+ type: VersionSpecType;
71
+ raw: string;
72
+ }
73
+ /**
74
+ * Creates a primitive key for deduplication.
75
+ */
76
+ export declare function createPrimitiveKey(type: PrimitiveType, name: string): string;
77
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/resolution/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAEzE;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,IAAI,EACA,WAAW,GACX,qBAAqB,GACrB,mBAAmB,GACnB,sBAAsB,GACtB,sBAAsB,CAAC;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,GAAG,EAAE,MAAM,CAAC;IACZ,UAAU,EAAE,iBAAiB,EAAE,CAAC;IAChC,MAAM,EAAE,eAAe,EAAE,CAAC;CAC3B;AAED;;GAEG;AACH,MAAM,WAAW,wBAAwB;IACvC;;OAEG;IACH,aAAa,EAAE,GAAG,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC;IAE9C;;OAEG;IACH,aAAa,EAAE,GAAG,CAAC,MAAM,EAAE,iBAAiB,EAAE,CAAC,CAAC;IAEhD;;OAEG;IACH,gBAAgB,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IAExC;;OAEG;IACH,MAAM,EAAE,eAAe,EAAE,CAAC;CAC3B;AAED;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACtC,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,MAAM,eAAe,GACvB,OAAO,GACP,OAAO,GACP,OAAO,GACP,OAAO,GACP,UAAU,GACV,QAAQ,CAAC;AAEb;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,eAAe,CAAC;IACtB,GAAG,EAAE,MAAM,CAAC;CACb;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAE5E"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Primitive resolution type definitions.
3
+ *
4
+ * These types support resolving primitive references from kit manifests
5
+ * to concrete versions in the shared primitives library.
6
+ */
7
+ /**
8
+ * Creates a primitive key for deduplication.
9
+ */
10
+ export function createPrimitiveKey(type, name) {
11
+ return `${type}:${name}`;
12
+ }
13
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/resolution/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AA0FH;;GAEG;AACH,MAAM,UAAU,kBAAkB,CAAC,IAAmB,EAAE,IAAY;IAClE,OAAO,GAAG,IAAI,IAAI,IAAI,EAAE,CAAC;AAC3B,CAAC"}