@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,368 @@
1
+ /**
2
+ * Upgrade executor module.
3
+ *
4
+ * Handles the execution of primitive upgrades including backup, installation,
5
+ * manifest updates, and rollback on failure.
6
+ */
7
+ import * as fs from "fs/promises";
8
+ import { writeManifest } from "../manifest/write.js";
9
+ import { expandPath } from "../manifest/utils.js";
10
+ /**
11
+ * Execute upgrades for selected primitives.
12
+ *
13
+ * @param upgrades - Array of upgrade checks to apply
14
+ * @param adapters - Map of adapter instances by harness name
15
+ * @param registry - Primitives registry loader
16
+ * @param manifest - Current installation manifest
17
+ * @param options - Upgrade options
18
+ * @returns Upgrade execution result
19
+ */
20
+ export async function executeUpgrades(upgrades, adapters, registry, manifest, options = {}) {
21
+ const upgraded = [];
22
+ const failed = [];
23
+ const backups = [];
24
+ const allBackupPaths = [];
25
+ try {
26
+ // Group upgrades by harness and kit for efficient processing
27
+ const byHarnessAndKit = groupUpgradesByHarnessAndKit(upgrades);
28
+ for (const [harness, kitMap] of byHarnessAndKit) {
29
+ const adapter = adapters.get(harness);
30
+ if (!adapter) {
31
+ // Record failures for unavailable adapter
32
+ for (const primitiveUpgrades of kitMap.values()) {
33
+ for (const upgrade of primitiveUpgrades) {
34
+ failed.push({
35
+ primitive: upgrade.primitive,
36
+ type: upgrade.type,
37
+ harness: upgrade.harness,
38
+ kit: upgrade.kit,
39
+ currentVersion: upgrade.currentVersion,
40
+ newVersion: upgrade.availableVersion,
41
+ success: false,
42
+ error: `Adapter for ${harness} not found`,
43
+ });
44
+ }
45
+ }
46
+ continue;
47
+ }
48
+ for (const [kitName, primitiveUpgrades] of kitMap) {
49
+ const kitEntry = manifest.harnesses[harness]?.kits[kitName];
50
+ if (!kitEntry) {
51
+ // Kit not found in manifest
52
+ for (const upgrade of primitiveUpgrades) {
53
+ failed.push({
54
+ primitive: upgrade.primitive,
55
+ type: upgrade.type,
56
+ harness: upgrade.harness,
57
+ kit: upgrade.kit,
58
+ currentVersion: upgrade.currentVersion,
59
+ newVersion: upgrade.availableVersion,
60
+ success: false,
61
+ error: `Kit ${kitName} not found in manifest for ${harness}`,
62
+ });
63
+ }
64
+ continue;
65
+ }
66
+ // Process each primitive upgrade for this kit
67
+ for (const upgrade of primitiveUpgrades) {
68
+ const result = await upgradePrimitive(upgrade, adapter, registry, kitEntry, backups, options);
69
+ allBackupPaths.push(...(result.backupPath ? [result.backupPath] : []));
70
+ if (result.success) {
71
+ upgraded.push(result);
72
+ }
73
+ else {
74
+ failed.push(result);
75
+ }
76
+ }
77
+ }
78
+ }
79
+ // Update manifest with new versions
80
+ if (!options.dryRun && upgraded.length > 0) {
81
+ await updateManifestVersions(manifest, upgraded);
82
+ await writeManifest(manifest);
83
+ }
84
+ return {
85
+ success: failed.length === 0,
86
+ upgraded,
87
+ failed,
88
+ backupPaths: allBackupPaths,
89
+ manifestUpdated: upgraded.length > 0 && !options.dryRun,
90
+ };
91
+ }
92
+ catch (error) {
93
+ // Attempt rollback on failure
94
+ if (!options.dryRun && backups.length > 0) {
95
+ await rollbackUpgrades(backups);
96
+ }
97
+ return {
98
+ success: false,
99
+ upgraded,
100
+ failed,
101
+ backupPaths: allBackupPaths,
102
+ manifestUpdated: false,
103
+ error: error instanceof Error ? error.message : String(error),
104
+ };
105
+ }
106
+ }
107
+ /**
108
+ * Upgrade a single primitive.
109
+ */
110
+ async function upgradePrimitive(upgrade, adapter, registry, kitEntry, backups, options) {
111
+ const { primitive, type, harness, kit, currentVersion, availableVersion } = upgrade;
112
+ // Find the installed primitive in the kit
113
+ const installed = kitEntry.primitives.find((p) => p.name === primitive && p.type === type);
114
+ if (!installed) {
115
+ return {
116
+ primitive,
117
+ type,
118
+ harness,
119
+ kit,
120
+ currentVersion,
121
+ newVersion: availableVersion,
122
+ success: false,
123
+ error: `Primitive ${primitive} not found in installed kit`,
124
+ };
125
+ }
126
+ try {
127
+ // Phase 1: Backup existing file
128
+ options.onProgress?.({
129
+ phase: "backup",
130
+ harness,
131
+ kit,
132
+ primitive,
133
+ currentVersion,
134
+ newVersion: availableVersion,
135
+ operation: "backup",
136
+ destination: installed.installedPath,
137
+ });
138
+ let backupPath;
139
+ if (!options.dryRun) {
140
+ backupPath = await backupPrimitive(installed.installedPath);
141
+ backups.push({
142
+ originalPath: installed.installedPath,
143
+ backupPath,
144
+ harness,
145
+ primitive,
146
+ });
147
+ }
148
+ // Phase 2: Resolve new primitive version from registry
149
+ const resolvedPrimitive = await resolvePrimitiveVersion(registry, type, primitive, availableVersion);
150
+ if (!resolvedPrimitive) {
151
+ return {
152
+ primitive,
153
+ type,
154
+ harness,
155
+ kit,
156
+ currentVersion,
157
+ newVersion: availableVersion,
158
+ success: false,
159
+ backupPath,
160
+ error: `Failed to resolve ${primitive}@${availableVersion} from registry`,
161
+ };
162
+ }
163
+ // Phase 3: Install new version
164
+ options.onProgress?.({
165
+ phase: "install",
166
+ harness,
167
+ kit,
168
+ primitive,
169
+ currentVersion,
170
+ newVersion: availableVersion,
171
+ operation: "install",
172
+ destination: installed.installedPath,
173
+ });
174
+ if (!options.dryRun) {
175
+ // Install the new primitive version
176
+ // We need to create a minimal kit structure for the adapter
177
+ const temporaryKit = {
178
+ schemaVersion: "1.0.0",
179
+ name: kit,
180
+ version: kitEntry.version,
181
+ products: [],
182
+ requires: {
183
+ primitives: [type],
184
+ },
185
+ primitives: {
186
+ [type]: [
187
+ {
188
+ name: primitive,
189
+ entrypoint: resolvedPrimitive.sourcePath,
190
+ },
191
+ ],
192
+ },
193
+ };
194
+ // Install using adapter (this will overwrite the existing file)
195
+ const installResult = await adapter.install(temporaryKit, [resolvedPrimitive], {
196
+ onProgress: (progress) => {
197
+ options.onProgress?.({
198
+ phase: "install",
199
+ harness,
200
+ kit,
201
+ primitive,
202
+ currentVersion,
203
+ newVersion: availableVersion,
204
+ operation: progress.operation,
205
+ destination: progress.destination,
206
+ });
207
+ },
208
+ });
209
+ if (!installResult.success) {
210
+ return {
211
+ primitive,
212
+ type,
213
+ harness,
214
+ kit,
215
+ currentVersion,
216
+ newVersion: availableVersion,
217
+ success: false,
218
+ backupPath,
219
+ error: installResult.error || "Installation failed",
220
+ };
221
+ }
222
+ }
223
+ return {
224
+ primitive,
225
+ type,
226
+ harness,
227
+ kit,
228
+ currentVersion,
229
+ newVersion: availableVersion,
230
+ success: true,
231
+ backupPath,
232
+ installedPath: installed.installedPath,
233
+ };
234
+ }
235
+ catch (error) {
236
+ return {
237
+ primitive,
238
+ type,
239
+ harness,
240
+ kit,
241
+ currentVersion,
242
+ newVersion: availableVersion,
243
+ success: false,
244
+ error: error instanceof Error ? error.message : String(error),
245
+ };
246
+ }
247
+ }
248
+ /**
249
+ * Backup a primitive file or directory.
250
+ *
251
+ * @param filePath - Path to the file or directory to backup
252
+ * @returns Path to the backup
253
+ */
254
+ async function backupPrimitive(filePath) {
255
+ const expanded = expandPath(filePath);
256
+ const timestamp = new Date().toISOString().replace(/[:.]/g, "-");
257
+ const backupPath = `${expanded}.backup-${timestamp}`;
258
+ const stats = await fs.stat(expanded);
259
+ if (stats.isDirectory()) {
260
+ // Backup directory recursively
261
+ await fs.cp(expanded, backupPath, { recursive: true });
262
+ }
263
+ else {
264
+ // Backup single file
265
+ await fs.copyFile(expanded, backupPath);
266
+ }
267
+ return backupPath;
268
+ }
269
+ /**
270
+ * Resolve a primitive version from the registry.
271
+ */
272
+ async function resolvePrimitiveVersion(registry, type, name, version) {
273
+ const versions = await registry.getVersions(type, name);
274
+ const versionEntry = versions.find((v) => v.version === version);
275
+ if (!versionEntry) {
276
+ return null;
277
+ }
278
+ return {
279
+ name,
280
+ type,
281
+ resolvedVersion: version,
282
+ sourcePath: versionEntry.path,
283
+ isInline: false,
284
+ metadata: {},
285
+ };
286
+ }
287
+ /**
288
+ * Update manifest with new primitive versions.
289
+ */
290
+ async function updateManifestVersions(manifest, upgraded) {
291
+ for (const result of upgraded) {
292
+ const harnessEntry = manifest.harnesses[result.harness];
293
+ if (!harnessEntry)
294
+ continue;
295
+ const kitEntry = harnessEntry.kits[result.kit];
296
+ if (!kitEntry)
297
+ continue;
298
+ // Find and update the primitive version
299
+ const primitive = kitEntry.primitives.find((p) => p.name === result.primitive && p.type === result.type);
300
+ if (primitive && primitive.version) {
301
+ primitive.version = result.newVersion;
302
+ }
303
+ }
304
+ manifest.lastUpdated = new Date().toISOString();
305
+ }
306
+ /**
307
+ * Rollback upgrades by restoring from backups.
308
+ */
309
+ async function rollbackUpgrades(backups) {
310
+ // Rollback in reverse order
311
+ for (const backup of backups.reverse()) {
312
+ try {
313
+ const expanded = expandPath(backup.originalPath);
314
+ const backupExpanded = expandPath(backup.backupPath);
315
+ // Check if backup exists
316
+ const backupExists = await fs
317
+ .access(backupExpanded)
318
+ .then(() => true)
319
+ .catch(() => false);
320
+ if (!backupExists) {
321
+ continue;
322
+ }
323
+ // Remove the new file/directory
324
+ const stats = await fs.stat(expanded).catch(() => null);
325
+ if (stats) {
326
+ if (stats.isDirectory()) {
327
+ await fs.rm(expanded, { recursive: true, force: true });
328
+ }
329
+ else {
330
+ await fs.unlink(expanded);
331
+ }
332
+ }
333
+ // Restore from backup
334
+ const backupStats = await fs.stat(backupExpanded);
335
+ if (backupStats.isDirectory()) {
336
+ await fs.cp(backupExpanded, expanded, { recursive: true });
337
+ }
338
+ else {
339
+ await fs.copyFile(backupExpanded, expanded);
340
+ }
341
+ }
342
+ catch (error) {
343
+ // Log but continue rollback
344
+ console.error(`Failed to rollback ${backup.originalPath}: ${error}`);
345
+ }
346
+ }
347
+ }
348
+ /**
349
+ * Group upgrades by harness and kit for efficient processing.
350
+ */
351
+ function groupUpgradesByHarnessAndKit(upgrades) {
352
+ const grouped = new Map();
353
+ for (const upgrade of upgrades) {
354
+ let harnessMap = grouped.get(upgrade.harness);
355
+ if (!harnessMap) {
356
+ harnessMap = new Map();
357
+ grouped.set(upgrade.harness, harnessMap);
358
+ }
359
+ let kitUpgrades = harnessMap.get(upgrade.kit);
360
+ if (!kitUpgrades) {
361
+ kitUpgrades = [];
362
+ harnessMap.set(upgrade.kit, kitUpgrades);
363
+ }
364
+ kitUpgrades.push(upgrade);
365
+ }
366
+ return grouped;
367
+ }
368
+ //# sourceMappingURL=upgrade-executor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"upgrade-executor.js","sourceRoot":"","sources":["../../src/core/upgrade-executor.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,MAAM,aAAa,CAAC;AAKlC,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAiElD;;;;;;;;;GASG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,QAAwB,EACxB,QAAsC,EACtC,QAAkC,EAClC,QAA8B,EAC9B,UAA0B,EAAE;IAE5B,MAAM,QAAQ,GAA6B,EAAE,CAAC;IAC9C,MAAM,MAAM,GAA6B,EAAE,CAAC;IAC5C,MAAM,OAAO,GAAmB,EAAE,CAAC;IACnC,MAAM,cAAc,GAAa,EAAE,CAAC;IAEpC,IAAI,CAAC;QACH,6DAA6D;QAC7D,MAAM,eAAe,GAAG,4BAA4B,CAAC,QAAQ,CAAC,CAAC;QAE/D,KAAK,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,IAAI,eAAe,EAAE,CAAC;YAChD,MAAM,OAAO,GAAG,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YACtC,IAAI,CAAC,OAAO,EAAE,CAAC;gBACb,0CAA0C;gBAC1C,KAAK,MAAM,iBAAiB,IAAI,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC;oBAChD,KAAK,MAAM,OAAO,IAAI,iBAAiB,EAAE,CAAC;wBACxC,MAAM,CAAC,IAAI,CAAC;4BACV,SAAS,EAAE,OAAO,CAAC,SAAS;4BAC5B,IAAI,EAAE,OAAO,CAAC,IAAI;4BAClB,OAAO,EAAE,OAAO,CAAC,OAAO;4BACxB,GAAG,EAAE,OAAO,CAAC,GAAG;4BAChB,cAAc,EAAE,OAAO,CAAC,cAAc;4BACtC,UAAU,EAAE,OAAO,CAAC,gBAAgB;4BACpC,OAAO,EAAE,KAAK;4BACd,KAAK,EAAE,eAAe,OAAO,YAAY;yBAC1C,CAAC,CAAC;oBACL,CAAC;gBACH,CAAC;gBACD,SAAS;YACX,CAAC;YAED,KAAK,MAAM,CAAC,OAAO,EAAE,iBAAiB,CAAC,IAAI,MAAM,EAAE,CAAC;gBAClD,MAAM,QAAQ,GAAG,QAAQ,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;gBAC5D,IAAI,CAAC,QAAQ,EAAE,CAAC;oBACd,4BAA4B;oBAC5B,KAAK,MAAM,OAAO,IAAI,iBAAiB,EAAE,CAAC;wBACxC,MAAM,CAAC,IAAI,CAAC;4BACV,SAAS,EAAE,OAAO,CAAC,SAAS;4BAC5B,IAAI,EAAE,OAAO,CAAC,IAAI;4BAClB,OAAO,EAAE,OAAO,CAAC,OAAO;4BACxB,GAAG,EAAE,OAAO,CAAC,GAAG;4BAChB,cAAc,EAAE,OAAO,CAAC,cAAc;4BACtC,UAAU,EAAE,OAAO,CAAC,gBAAgB;4BACpC,OAAO,EAAE,KAAK;4BACd,KAAK,EAAE,OAAO,OAAO,8BAA8B,OAAO,EAAE;yBAC7D,CAAC,CAAC;oBACL,CAAC;oBACD,SAAS;gBACX,CAAC;gBAED,8CAA8C;gBAC9C,KAAK,MAAM,OAAO,IAAI,iBAAiB,EAAE,CAAC;oBACxC,MAAM,MAAM,GAAG,MAAM,gBAAgB,CACnC,OAAO,EACP,OAAO,EACP,QAAQ,EACR,QAAQ,EACR,OAAO,EACP,OAAO,CACR,CAAC;oBAEF,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;oBAEvE,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;wBACnB,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;oBACxB,CAAC;yBAAM,CAAC;wBACN,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;oBACtB,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;QAED,oCAAoC;QACpC,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC3C,MAAM,sBAAsB,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;YACjD,MAAM,aAAa,CAAC,QAAQ,CAAC,CAAC;QAChC,CAAC;QAED,OAAO;YACL,OAAO,EAAE,MAAM,CAAC,MAAM,KAAK,CAAC;YAC5B,QAAQ;YACR,MAAM;YACN,WAAW,EAAE,cAAc;YAC3B,eAAe,EAAE,QAAQ,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM;SACxD,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,8BAA8B;QAC9B,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC1C,MAAM,gBAAgB,CAAC,OAAO,CAAC,CAAC;QAClC,CAAC;QAED,OAAO;YACL,OAAO,EAAE,KAAK;YACd,QAAQ;YACR,MAAM;YACN,WAAW,EAAE,cAAc;YAC3B,eAAe,EAAE,KAAK;YACtB,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;SAC9D,CAAC;IACJ,CAAC;AACH,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,gBAAgB,CAC7B,OAAqB,EACrB,OAAmB,EACnB,QAAkC,EAClC,QAAsB,EACtB,OAAuB,EACvB,OAAuB;IAEvB,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,cAAc,EAAE,gBAAgB,EAAE,GAAG,OAAO,CAAC;IAEpF,0CAA0C;IAC1C,MAAM,SAAS,GAAG,QAAQ,CAAC,UAAU,CAAC,IAAI,CACxC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,SAAS,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,CAC/C,CAAC;IAEF,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,OAAO;YACL,SAAS;YACT,IAAI;YACJ,OAAO;YACP,GAAG;YACH,cAAc;YACd,UAAU,EAAE,gBAAgB;YAC5B,OAAO,EAAE,KAAK;YACd,KAAK,EAAE,aAAa,SAAS,6BAA6B;SAC3D,CAAC;IACJ,CAAC;IAED,IAAI,CAAC;QACH,gCAAgC;QAChC,OAAO,CAAC,UAAU,EAAE,CAAC;YACnB,KAAK,EAAE,QAAQ;YACf,OAAO;YACP,GAAG;YACH,SAAS;YACT,cAAc;YACd,UAAU,EAAE,gBAAgB;YAC5B,SAAS,EAAE,QAAQ;YACnB,WAAW,EAAE,SAAS,CAAC,aAAa;SACrC,CAAC,CAAC;QAEH,IAAI,UAA8B,CAAC;QACnC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;YACpB,UAAU,GAAG,MAAM,eAAe,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC;YAC5D,OAAO,CAAC,IAAI,CAAC;gBACX,YAAY,EAAE,SAAS,CAAC,aAAa;gBACrC,UAAU;gBACV,OAAO;gBACP,SAAS;aACV,CAAC,CAAC;QACL,CAAC;QAED,uDAAuD;QACvD,MAAM,iBAAiB,GAAG,MAAM,uBAAuB,CACrD,QAAQ,EACR,IAAI,EACJ,SAAS,EACT,gBAAgB,CACjB,CAAC;QAEF,IAAI,CAAC,iBAAiB,EAAE,CAAC;YACvB,OAAO;gBACL,SAAS;gBACT,IAAI;gBACJ,OAAO;gBACP,GAAG;gBACH,cAAc;gBACd,UAAU,EAAE,gBAAgB;gBAC5B,OAAO,EAAE,KAAK;gBACd,UAAU;gBACV,KAAK,EAAE,qBAAqB,SAAS,IAAI,gBAAgB,gBAAgB;aAC1E,CAAC;QACJ,CAAC;QAED,+BAA+B;QAC/B,OAAO,CAAC,UAAU,EAAE,CAAC;YACnB,KAAK,EAAE,SAAS;YAChB,OAAO;YACP,GAAG;YACH,SAAS;YACT,cAAc;YACd,UAAU,EAAE,gBAAgB;YAC5B,SAAS,EAAE,SAAS;YACpB,WAAW,EAAE,SAAS,CAAC,aAAa;SACrC,CAAC,CAAC;QAEH,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;YACpB,oCAAoC;YACpC,4DAA4D;YAC5D,MAAM,YAAY,GAAgB;gBAChC,aAAa,EAAE,OAAO;gBACtB,IAAI,EAAE,GAAG;gBACT,OAAO,EAAE,QAAQ,CAAC,OAAO;gBACzB,QAAQ,EAAE,EAAE;gBACZ,QAAQ,EAAE;oBACR,UAAU,EAAE,CAAC,IAAI,CAAC;iBACnB;gBACD,UAAU,EAAE;oBACV,CAAC,IAAI,CAAC,EAAE;wBACN;4BACE,IAAI,EAAE,SAAS;4BACf,UAAU,EAAE,iBAAiB,CAAC,UAAU;yBACzC;qBACF;iBACF;aACF,CAAC;YAEF,gEAAgE;YAChE,MAAM,aAAa,GAAG,MAAM,OAAO,CAAC,OAAO,CACzC,YAAY,EACZ,CAAC,iBAAiB,CAAC,EACnB;gBACE,UAAU,EAAE,CAAC,QAAQ,EAAE,EAAE;oBACvB,OAAO,CAAC,UAAU,EAAE,CAAC;wBACnB,KAAK,EAAE,SAAS;wBAChB,OAAO;wBACP,GAAG;wBACH,SAAS;wBACT,cAAc;wBACd,UAAU,EAAE,gBAAgB;wBAC5B,SAAS,EAAE,QAAQ,CAAC,SAAS;wBAC7B,WAAW,EAAE,QAAQ,CAAC,WAAW;qBAClC,CAAC,CAAC;gBACL,CAAC;aACF,CACF,CAAC;YAEF,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,CAAC;gBAC3B,OAAO;oBACL,SAAS;oBACT,IAAI;oBACJ,OAAO;oBACP,GAAG;oBACH,cAAc;oBACd,UAAU,EAAE,gBAAgB;oBAC5B,OAAO,EAAE,KAAK;oBACd,UAAU;oBACV,KAAK,EAAE,aAAa,CAAC,KAAK,IAAI,qBAAqB;iBACpD,CAAC;YACJ,CAAC;QACH,CAAC;QAED,OAAO;YACL,SAAS;YACT,IAAI;YACJ,OAAO;YACP,GAAG;YACH,cAAc;YACd,UAAU,EAAE,gBAAgB;YAC5B,OAAO,EAAE,IAAI;YACb,UAAU;YACV,aAAa,EAAE,SAAS,CAAC,aAAa;SACvC,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO;YACL,SAAS;YACT,IAAI;YACJ,OAAO;YACP,GAAG;YACH,cAAc;YACd,UAAU,EAAE,gBAAgB;YAC5B,OAAO,EAAE,KAAK;YACd,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;SAC9D,CAAC;IACJ,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,KAAK,UAAU,eAAe,CAAC,QAAgB;IAC7C,MAAM,QAAQ,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC;IACtC,MAAM,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;IACjE,MAAM,UAAU,GAAG,GAAG,QAAQ,WAAW,SAAS,EAAE,CAAC;IAErD,MAAM,KAAK,GAAG,MAAM,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAEtC,IAAI,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;QACxB,+BAA+B;QAC/B,MAAM,EAAE,CAAC,EAAE,CAAC,QAAQ,EAAE,UAAU,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACzD,CAAC;SAAM,CAAC;QACN,qBAAqB;QACrB,MAAM,EAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;IAC1C,CAAC;IAED,OAAO,UAAU,CAAC;AACpB,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,uBAAuB,CACpC,QAAkC,EAClC,IAAmB,EACnB,IAAY,EACZ,OAAe;IAEf,MAAM,QAAQ,GAAG,MAAM,QAAQ,CAAC,WAAW,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IACxD,MAAM,YAAY,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,OAAO,CAAC,CAAC;IAEjE,IAAI,CAAC,YAAY,EAAE,CAAC;QAClB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO;QACL,IAAI;QACJ,IAAI;QACJ,eAAe,EAAE,OAAO;QACxB,UAAU,EAAE,YAAY,CAAC,IAAI;QAC7B,QAAQ,EAAE,KAAK;QACf,QAAQ,EAAE,EAAE;KACb,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,sBAAsB,CACnC,QAA8B,EAC9B,QAAkC;IAElC,KAAK,MAAM,MAAM,IAAI,QAAQ,EAAE,CAAC;QAC9B,MAAM,YAAY,GAAG,QAAQ,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QACxD,IAAI,CAAC,YAAY;YAAE,SAAS;QAE5B,MAAM,QAAQ,GAAG,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAC/C,IAAI,CAAC,QAAQ;YAAE,SAAS;QAExB,wCAAwC;QACxC,MAAM,SAAS,GAAG,QAAQ,CAAC,UAAU,CAAC,IAAI,CACxC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,SAAS,IAAI,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,IAAI,CAC7D,CAAC;QAEF,IAAI,SAAS,IAAI,SAAS,CAAC,OAAO,EAAE,CAAC;YACnC,SAAS,CAAC,OAAO,GAAG,MAAM,CAAC,UAAU,CAAC;QACxC,CAAC;IACH,CAAC;IAED,QAAQ,CAAC,WAAW,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;AAClD,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,gBAAgB,CAAC,OAAuB;IACrD,4BAA4B;IAC5B,KAAK,MAAM,MAAM,IAAI,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC;QACvC,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,UAAU,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;YACjD,MAAM,cAAc,GAAG,UAAU,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;YAErD,yBAAyB;YACzB,MAAM,YAAY,GAAG,MAAM,EAAE;iBAC1B,MAAM,CAAC,cAAc,CAAC;iBACtB,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC;iBAChB,KAAK,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC;YAEtB,IAAI,CAAC,YAAY,EAAE,CAAC;gBAClB,SAAS;YACX,CAAC;YAED,gCAAgC;YAChC,MAAM,KAAK,GAAG,MAAM,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;YACxD,IAAI,KAAK,EAAE,CAAC;gBACV,IAAI,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;oBACxB,MAAM,EAAE,CAAC,EAAE,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;gBAC1D,CAAC;qBAAM,CAAC;oBACN,MAAM,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;gBAC5B,CAAC;YACH,CAAC;YAED,sBAAsB;YACtB,MAAM,WAAW,GAAG,MAAM,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;YAClD,IAAI,WAAW,CAAC,WAAW,EAAE,EAAE,CAAC;gBAC9B,MAAM,EAAE,CAAC,EAAE,CAAC,cAAc,EAAE,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YAC7D,CAAC;iBAAM,CAAC;gBACN,MAAM,EAAE,CAAC,QAAQ,CAAC,cAAc,EAAE,QAAQ,CAAC,CAAC;YAC9C,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,4BAA4B;YAC5B,OAAO,CAAC,KAAK,CAAC,sBAAsB,MAAM,CAAC,YAAY,KAAK,KAAK,EAAE,CAAC,CAAC;QACvE,CAAC;IACH,CAAC;AACH,CAAC;AAED;;GAEG;AACH,SAAS,4BAA4B,CACnC,QAAwB;IAExB,MAAM,OAAO,GAAG,IAAI,GAAG,EAA4C,CAAC;IAEpE,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC/B,IAAI,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAC9C,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,UAAU,GAAG,IAAI,GAAG,EAAE,CAAC;YACvB,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;QAC3C,CAAC;QAED,IAAI,WAAW,GAAG,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QAC9C,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,WAAW,GAAG,EAAE,CAAC;YACjB,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC;QAC3C,CAAC;QAED,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC5B,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC"}
@@ -0,0 +1,87 @@
1
+ /**
2
+ * Fetcher registry for managing source fetchers.
3
+ *
4
+ * Provides a unified interface for fetching from different source types.
5
+ */
6
+ import type { SourceFetcher, FetchResult } from "./types.js";
7
+ import { type GitFetcherOptions } from "./git-fetcher.js";
8
+ /**
9
+ * Error thrown when no fetcher can handle a source.
10
+ */
11
+ export declare class NoFetcherError extends Error {
12
+ readonly source: string;
13
+ constructor(message: string, source: string);
14
+ }
15
+ /**
16
+ * Options for the fetcher registry.
17
+ */
18
+ export interface FetcherRegistryOptions {
19
+ /**
20
+ * Options for the git fetcher.
21
+ */
22
+ git?: GitFetcherOptions;
23
+ }
24
+ /**
25
+ * Registry of source fetchers.
26
+ *
27
+ * Manages multiple fetchers and routes requests to the appropriate one.
28
+ */
29
+ export declare class FetcherRegistry {
30
+ private readonly fetchers;
31
+ constructor(options?: FetcherRegistryOptions);
32
+ /**
33
+ * Register a custom fetcher.
34
+ *
35
+ * @param fetcher - The fetcher to register
36
+ * @param priority - If true, adds to front of list (checked first)
37
+ */
38
+ register(fetcher: SourceFetcher, priority?: boolean): void;
39
+ /**
40
+ * Find a fetcher that can handle the given source.
41
+ *
42
+ * @param source - The source string to check
43
+ * @returns The first fetcher that can handle the source, or undefined
44
+ */
45
+ findFetcher(source: string): SourceFetcher | undefined;
46
+ /**
47
+ * Fetch a source using the appropriate fetcher.
48
+ *
49
+ * @param source - The source to fetch
50
+ * @returns Fetch result with local path and optional cleanup
51
+ * @throws NoFetcherError if no fetcher can handle the source
52
+ */
53
+ fetch(source: string): Promise<FetchResult>;
54
+ /**
55
+ * Check if any fetcher can handle the given source.
56
+ *
57
+ * @param source - The source string to check
58
+ * @returns True if a fetcher can handle the source
59
+ */
60
+ canHandle(source: string): boolean;
61
+ /**
62
+ * Get all registered fetchers.
63
+ */
64
+ getFetchers(): readonly SourceFetcher[];
65
+ }
66
+ /**
67
+ * Get the default fetcher registry.
68
+ *
69
+ * Creates a singleton instance with default configuration.
70
+ */
71
+ export declare function getDefaultFetcherRegistry(): FetcherRegistry;
72
+ /**
73
+ * Create a new fetcher registry with custom options.
74
+ *
75
+ * @param options - Registry configuration options
76
+ */
77
+ export declare function createFetcherRegistry(options?: FetcherRegistryOptions): FetcherRegistry;
78
+ /**
79
+ * Fetch a source using the default registry.
80
+ *
81
+ * Convenience function for simple use cases.
82
+ *
83
+ * @param source - The source to fetch
84
+ * @returns Fetch result with local path and optional cleanup
85
+ */
86
+ export declare function fetchSource(source: string): Promise<FetchResult>;
87
+ //# sourceMappingURL=fetcher-registry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fetcher-registry.d.ts","sourceRoot":"","sources":["../../src/discovery/fetcher-registry.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAC7D,OAAO,EAAoB,KAAK,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAG5E;;GAEG;AACH,qBAAa,cAAe,SAAQ,KAAK;aAGrB,MAAM,EAAE,MAAM;gBAD9B,OAAO,EAAE,MAAM,EACC,MAAM,EAAE,MAAM;CAKjC;AAED;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC;;OAEG;IACH,GAAG,CAAC,EAAE,iBAAiB,CAAC;CACzB;AAED;;;;GAIG;AACH,qBAAa,eAAe;IAC1B,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAuB;gBAEpC,OAAO,GAAE,sBAA2B;IAQhD;;;;;OAKG;IACH,QAAQ,CAAC,OAAO,EAAE,aAAa,EAAE,QAAQ,UAAQ,GAAG,IAAI;IAQxD;;;;;OAKG;IACH,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,aAAa,GAAG,SAAS;IAItD;;;;;;OAMG;IACG,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAcjD;;;;;OAKG;IACH,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO;IAIlC;;OAEG;IACH,WAAW,IAAI,SAAS,aAAa,EAAE;CAGxC;AAKD;;;;GAIG;AACH,wBAAgB,yBAAyB,IAAI,eAAe,CAK3D;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CACnC,OAAO,CAAC,EAAE,sBAAsB,GAC/B,eAAe,CAEjB;AAED;;;;;;;GAOG;AACH,wBAAsB,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAEtE"}
@@ -0,0 +1,119 @@
1
+ /**
2
+ * Fetcher registry for managing source fetchers.
3
+ *
4
+ * Provides a unified interface for fetching from different source types.
5
+ */
6
+ import { createGitFetcher } from "./git-fetcher.js";
7
+ import { createLocalFetcher } from "./local-fetcher.js";
8
+ /**
9
+ * Error thrown when no fetcher can handle a source.
10
+ */
11
+ export class NoFetcherError extends Error {
12
+ source;
13
+ constructor(message, source) {
14
+ super(message);
15
+ this.source = source;
16
+ this.name = "NoFetcherError";
17
+ }
18
+ }
19
+ /**
20
+ * Registry of source fetchers.
21
+ *
22
+ * Manages multiple fetchers and routes requests to the appropriate one.
23
+ */
24
+ export class FetcherRegistry {
25
+ fetchers = [];
26
+ constructor(options = {}) {
27
+ // Register default fetchers in order of priority
28
+ // Local fetcher first (faster check, no network)
29
+ this.fetchers.push(createLocalFetcher());
30
+ // Git fetcher for GitHub sources
31
+ this.fetchers.push(createGitFetcher(options.git));
32
+ }
33
+ /**
34
+ * Register a custom fetcher.
35
+ *
36
+ * @param fetcher - The fetcher to register
37
+ * @param priority - If true, adds to front of list (checked first)
38
+ */
39
+ register(fetcher, priority = false) {
40
+ if (priority) {
41
+ this.fetchers.unshift(fetcher);
42
+ }
43
+ else {
44
+ this.fetchers.push(fetcher);
45
+ }
46
+ }
47
+ /**
48
+ * Find a fetcher that can handle the given source.
49
+ *
50
+ * @param source - The source string to check
51
+ * @returns The first fetcher that can handle the source, or undefined
52
+ */
53
+ findFetcher(source) {
54
+ return this.fetchers.find((fetcher) => fetcher.canHandle(source));
55
+ }
56
+ /**
57
+ * Fetch a source using the appropriate fetcher.
58
+ *
59
+ * @param source - The source to fetch
60
+ * @returns Fetch result with local path and optional cleanup
61
+ * @throws NoFetcherError if no fetcher can handle the source
62
+ */
63
+ async fetch(source) {
64
+ const fetcher = this.findFetcher(source);
65
+ if (!fetcher) {
66
+ throw new NoFetcherError(`No fetcher available for source: ${source}. ` +
67
+ "Supported formats: GitHub shorthand (org/repo) or local paths (./path).", source);
68
+ }
69
+ return fetcher.fetch(source);
70
+ }
71
+ /**
72
+ * Check if any fetcher can handle the given source.
73
+ *
74
+ * @param source - The source string to check
75
+ * @returns True if a fetcher can handle the source
76
+ */
77
+ canHandle(source) {
78
+ return this.findFetcher(source) !== undefined;
79
+ }
80
+ /**
81
+ * Get all registered fetchers.
82
+ */
83
+ getFetchers() {
84
+ return this.fetchers;
85
+ }
86
+ }
87
+ // Default registry instance
88
+ let defaultRegistry;
89
+ /**
90
+ * Get the default fetcher registry.
91
+ *
92
+ * Creates a singleton instance with default configuration.
93
+ */
94
+ export function getDefaultFetcherRegistry() {
95
+ if (!defaultRegistry) {
96
+ defaultRegistry = new FetcherRegistry();
97
+ }
98
+ return defaultRegistry;
99
+ }
100
+ /**
101
+ * Create a new fetcher registry with custom options.
102
+ *
103
+ * @param options - Registry configuration options
104
+ */
105
+ export function createFetcherRegistry(options) {
106
+ return new FetcherRegistry(options);
107
+ }
108
+ /**
109
+ * Fetch a source using the default registry.
110
+ *
111
+ * Convenience function for simple use cases.
112
+ *
113
+ * @param source - The source to fetch
114
+ * @returns Fetch result with local path and optional cleanup
115
+ */
116
+ export async function fetchSource(source) {
117
+ return getDefaultFetcherRegistry().fetch(source);
118
+ }
119
+ //# sourceMappingURL=fetcher-registry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fetcher-registry.js","sourceRoot":"","sources":["../../src/discovery/fetcher-registry.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,gBAAgB,EAA0B,MAAM,kBAAkB,CAAC;AAC5E,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAExD;;GAEG;AACH,MAAM,OAAO,cAAe,SAAQ,KAAK;IAGrB;IAFlB,YACE,OAAe,EACC,MAAc;QAE9B,KAAK,CAAC,OAAO,CAAC,CAAC;QAFC,WAAM,GAAN,MAAM,CAAQ;QAG9B,IAAI,CAAC,IAAI,GAAG,gBAAgB,CAAC;IAC/B,CAAC;CACF;AAYD;;;;GAIG;AACH,MAAM,OAAO,eAAe;IACT,QAAQ,GAAoB,EAAE,CAAC;IAEhD,YAAY,UAAkC,EAAE;QAC9C,iDAAiD;QACjD,iDAAiD;QACjD,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,kBAAkB,EAAE,CAAC,CAAC;QACzC,iCAAiC;QACjC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;IACpD,CAAC;IAED;;;;;OAKG;IACH,QAAQ,CAAC,OAAsB,EAAE,QAAQ,GAAG,KAAK;QAC/C,IAAI,QAAQ,EAAE,CAAC;YACb,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QACjC,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC9B,CAAC;IACH,CAAC;IAED;;;;;OAKG;IACH,WAAW,CAAC,MAAc;QACxB,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;IACpE,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,KAAK,CAAC,MAAc;QACxB,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QAEzC,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,MAAM,IAAI,cAAc,CACtB,oCAAoC,MAAM,IAAI;gBAC5C,yEAAyE,EAC3E,MAAM,CACP,CAAC;QACJ,CAAC;QAED,OAAO,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAC/B,CAAC;IAED;;;;;OAKG;IACH,SAAS,CAAC,MAAc;QACtB,OAAO,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,KAAK,SAAS,CAAC;IAChD,CAAC;IAED;;OAEG;IACH,WAAW;QACT,OAAO,IAAI,CAAC,QAAQ,CAAC;IACvB,CAAC;CACF;AAED,4BAA4B;AAC5B,IAAI,eAA4C,CAAC;AAEjD;;;;GAIG;AACH,MAAM,UAAU,yBAAyB;IACvC,IAAI,CAAC,eAAe,EAAE,CAAC;QACrB,eAAe,GAAG,IAAI,eAAe,EAAE,CAAC;IAC1C,CAAC;IACD,OAAO,eAAe,CAAC;AACzB,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,qBAAqB,CACnC,OAAgC;IAEhC,OAAO,IAAI,eAAe,CAAC,OAAO,CAAC,CAAC;AACtC,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,MAAc;IAC9C,OAAO,yBAAyB,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;AACnD,CAAC"}
@@ -0,0 +1,61 @@
1
+ /**
2
+ * Git fetcher for cloning repositories.
3
+ *
4
+ * Clones GitHub repositories to temporary directories with support for
5
+ * branch/tag checkout and automatic cleanup.
6
+ */
7
+ import type { SourceFetcher, FetchResult } from "./types.js";
8
+ /**
9
+ * Error thrown when git operations fail.
10
+ */
11
+ export declare class GitFetchError extends Error {
12
+ readonly gitSource: string;
13
+ readonly gitCause?: Error | undefined;
14
+ constructor(message: string, source: string, cause?: Error);
15
+ }
16
+ /**
17
+ * Options for the git fetcher.
18
+ */
19
+ export interface GitFetcherOptions {
20
+ /**
21
+ * Base directory for temporary clones.
22
+ * Defaults to system temp directory.
23
+ */
24
+ tempDir?: string;
25
+ /**
26
+ * Timeout for git operations in milliseconds.
27
+ * Defaults to 60000 (60 seconds).
28
+ */
29
+ timeout?: number;
30
+ /**
31
+ * Whether to perform a shallow clone (--depth 1).
32
+ * Defaults to true for faster clones.
33
+ */
34
+ shallow?: boolean;
35
+ }
36
+ /**
37
+ * Git fetcher implementation for cloning GitHub repositories.
38
+ */
39
+ export declare class GitFetcher implements SourceFetcher {
40
+ private readonly options;
41
+ constructor(options?: GitFetcherOptions);
42
+ /**
43
+ * Check if this fetcher can handle the given source.
44
+ *
45
+ * Handles GitHub shorthand format: org/repo or org/repo@ref
46
+ */
47
+ canHandle(source: string): boolean;
48
+ /**
49
+ * Fetch (clone) a GitHub repository to a local temporary directory.
50
+ *
51
+ * @param source - GitHub shorthand (e.g., "example-org/kits@v1.0.0")
52
+ * @returns Fetch result with local path and cleanup function
53
+ * @throws GitFetchError if cloning fails
54
+ */
55
+ fetch(source: string): Promise<FetchResult>;
56
+ }
57
+ /**
58
+ * Create a git fetcher with default options.
59
+ */
60
+ export declare function createGitFetcher(options?: GitFetcherOptions): GitFetcher;
61
+ //# sourceMappingURL=git-fetcher.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"git-fetcher.d.ts","sourceRoot":"","sources":["../../src/discovery/git-fetcher.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH,OAAO,KAAK,EAAE,aAAa,EAAE,WAAW,EAAgB,MAAM,YAAY,CAAC;AAG3E;;GAEG;AACH,qBAAa,aAAc,SAAQ,KAAK;IACtC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,QAAQ,CAAC,EAAE,KAAK,GAAG,SAAS,CAAC;gBAE1B,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,KAAK;CAQ3D;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB;;;OAGG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAQD;;GAEG;AACH,qBAAa,UAAW,YAAW,aAAa;IAC9C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA8B;gBAE1C,OAAO,GAAE,iBAAsB;IAI3C;;;;OAIG;IACH,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO;IASlC;;;;;;OAMG;IACG,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;CA0HlD;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,CAAC,EAAE,iBAAiB,GAAG,UAAU,CAExE"}