@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,209 @@
1
+ /**
2
+ * Kit selection screen.
3
+ *
4
+ * Displays available kits with descriptions and primitive counts,
5
+ * allowing users to select which kits to install.
6
+ */
7
+ import * as clack from "@clack/prompts";
8
+ import pc from "picocolors";
9
+ import { formatKit } from "./spinner.js";
10
+ /**
11
+ * Format primitive counts as a summary string.
12
+ */
13
+ export function formatPrimitiveCounts(counts) {
14
+ const parts = [];
15
+ if (counts.commands > 0) {
16
+ parts.push(`${counts.commands} command${counts.commands === 1 ? "" : "s"}`);
17
+ }
18
+ if (counts.skills > 0) {
19
+ parts.push(`${counts.skills} skill${counts.skills === 1 ? "" : "s"}`);
20
+ }
21
+ if (counts.subagents > 0) {
22
+ parts.push(`${counts.subagents} subagent${counts.subagents === 1 ? "" : "s"}`);
23
+ }
24
+ if (counts.mcp > 0) {
25
+ parts.push(`${counts.mcp} MCP server${counts.mcp === 1 ? "" : "s"}`);
26
+ }
27
+ if (counts.hooks > 0) {
28
+ parts.push(`${counts.hooks} hook${counts.hooks === 1 ? "" : "s"}`);
29
+ }
30
+ return parts.length > 0 ? parts.join(", ") : "no primitives";
31
+ }
32
+ /**
33
+ * Display a single kit's detailed information.
34
+ */
35
+ export function displayKitDetails(kit) {
36
+ console.log(` ${formatKit(kit.name, kit.manifest.version)}`);
37
+ if (kit.manifest.description) {
38
+ console.log(` ${kit.manifest.description}`);
39
+ }
40
+ const counts = formatPrimitiveCounts(kit.primitiveCounts);
41
+ console.log(` ${pc.dim(counts)}`);
42
+ if (kit.requiredPrimitives.length > 0) {
43
+ console.log(` ${pc.dim("Requires:")} ${kit.requiredPrimitives.join(", ")}`);
44
+ }
45
+ console.log();
46
+ }
47
+ /**
48
+ * Display all available kits.
49
+ */
50
+ export function displayAvailableKits(kits) {
51
+ console.log();
52
+ clack.log.info(`Available kits (${kits.length}):`);
53
+ console.log();
54
+ for (const kit of kits) {
55
+ displayKitDetails(kit);
56
+ }
57
+ }
58
+ /**
59
+ * Create a hint string for kit selection options.
60
+ */
61
+ function createKitHint(kit) {
62
+ const parts = [];
63
+ if (kit.manifest.description) {
64
+ parts.push(kit.manifest.description);
65
+ }
66
+ const counts = formatPrimitiveCounts(kit.primitiveCounts);
67
+ if (counts !== "no primitives") {
68
+ parts.push(`(${counts})`);
69
+ }
70
+ return parts.join(" ");
71
+ }
72
+ /**
73
+ * Create select options from discovered kits.
74
+ */
75
+ export function createKitOptions(kits) {
76
+ return kits.map((kit) => ({
77
+ value: kit.name,
78
+ label: `${kit.name} ${pc.dim(`v${kit.manifest.version}`)}`,
79
+ hint: createKitHint(kit),
80
+ }));
81
+ }
82
+ /**
83
+ * Prompt user to select kits for installation.
84
+ */
85
+ export async function selectKits(kits, options) {
86
+ // If no kits available, return empty selection
87
+ if (kits.length === 0) {
88
+ return {
89
+ cancelled: false,
90
+ selected: [],
91
+ };
92
+ }
93
+ // Show available kits if requested
94
+ if (options?.showAvailable) {
95
+ displayAvailableKits(kits);
96
+ }
97
+ // Create selection options
98
+ const selectOptions = createKitOptions(kits);
99
+ // Convert options to clack's expected format
100
+ const clackOptions = selectOptions.map((opt) => {
101
+ const base = {
102
+ value: opt.value,
103
+ label: opt.label,
104
+ };
105
+ if (opt.hint !== undefined) {
106
+ base.hint = opt.hint;
107
+ }
108
+ return base;
109
+ });
110
+ const selected = await clack.multiselect({
111
+ message: `Which kits do you want to install?\n${pc.gray("│")} `,
112
+ options: clackOptions,
113
+ required: true,
114
+ });
115
+ if (clack.isCancel(selected)) {
116
+ return {
117
+ cancelled: true,
118
+ selected: [],
119
+ };
120
+ }
121
+ return {
122
+ cancelled: false,
123
+ selected: selected,
124
+ };
125
+ }
126
+ /**
127
+ * Filter kits by names.
128
+ */
129
+ export function filterKitsByName(kits, names) {
130
+ const nameSet = new Set(names);
131
+ return kits.filter((k) => nameSet.has(k.name));
132
+ }
133
+ /**
134
+ * Get kit names that were requested but not found.
135
+ */
136
+ export function getMissingKitNames(kits, requestedNames) {
137
+ const available = new Set(kits.map((k) => k.name));
138
+ return requestedNames.filter((name) => !available.has(name));
139
+ }
140
+ /**
141
+ * Display error for missing kits.
142
+ */
143
+ export function displayMissingKits(missing, available) {
144
+ const label = missing.length === 1 ? "Kit" : "Kits";
145
+ clack.log.error(`${label} not found: ${missing.join(", ")}`);
146
+ if (available.length > 0) {
147
+ clack.log.info(`Available kits: ${available.map((k) => k.name).join(", ")}`);
148
+ }
149
+ }
150
+ /**
151
+ * Display error when no kits are found.
152
+ */
153
+ export function displayNoKitsFound() {
154
+ clack.log.error("No kits found in repository");
155
+ }
156
+ /**
157
+ * Validate kit selection.
158
+ */
159
+ export function validateKitSelection(kits, selected) {
160
+ if (selected.length === 0) {
161
+ return {
162
+ valid: false,
163
+ error: "No kits selected",
164
+ };
165
+ }
166
+ const available = new Set(kits.map((k) => k.name));
167
+ const invalid = selected.filter((name) => !available.has(name));
168
+ if (invalid.length > 0) {
169
+ return {
170
+ valid: false,
171
+ error: `Kits not found: ${invalid.join(", ")}`,
172
+ };
173
+ }
174
+ return { valid: true };
175
+ }
176
+ /**
177
+ * Get a kit by name.
178
+ */
179
+ export function getKitByName(kits, name) {
180
+ return kits.find((k) => k.name === name);
181
+ }
182
+ /**
183
+ * Format kit list for display.
184
+ */
185
+ export function formatKitList(kits, options) {
186
+ if (options?.includeVersion) {
187
+ return kits.map((k) => `${k.name} v${k.manifest.version}`).join(", ");
188
+ }
189
+ return kits.map((k) => k.name).join(", ");
190
+ }
191
+ /**
192
+ * Display kits in JSON format.
193
+ */
194
+ export function displayKitsJson(kits, source, repository) {
195
+ const output = {
196
+ source,
197
+ repository,
198
+ kits: kits.map((kit) => ({
199
+ name: kit.name,
200
+ version: kit.manifest.version,
201
+ description: kit.manifest.description,
202
+ products: kit.manifest.products,
203
+ requiredPrimitives: kit.requiredPrimitives,
204
+ primitiveCounts: kit.primitiveCounts,
205
+ })),
206
+ };
207
+ console.log(JSON.stringify(output, null, 2));
208
+ }
209
+ //# sourceMappingURL=kit-select.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"kit-select.js","sourceRoot":"","sources":["../../src/tui/kit-select.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,75 @@
1
+ /**
2
+ * Installation progress display.
3
+ *
4
+ * Shows real-time progress of file operations during kit installation.
5
+ */
6
+ import type { HarnessName, PrimitiveType, InstallationScope } from "../core/types.js";
7
+ import type { InstallProgress, PrimitiveInstallStatus, FileOperationResult } from "../adapters/types.js";
8
+ import type { FileOperationDisplay, HarnessInstallProgress } from "./types.js";
9
+ /**
10
+ * Format a single file operation for display.
11
+ */
12
+ export declare function formatFileOperation(op: FileOperationDisplay): string;
13
+ /**
14
+ * Progress tracker for installation.
15
+ */
16
+ export declare class InstallProgressTracker {
17
+ private spinner;
18
+ private harnessProgress;
19
+ private currentHarness;
20
+ private currentKit;
21
+ private currentScope;
22
+ private verbose;
23
+ constructor(options?: {
24
+ verbose?: boolean;
25
+ });
26
+ /**
27
+ * Start tracking installation for a harness.
28
+ */
29
+ startHarness(harness: HarnessName, harnessDisplayName: string, kit: string, scope?: InstallationScope): void;
30
+ /**
31
+ * Add a file operation to the current harness.
32
+ */
33
+ addOperation(op: FileOperationDisplay): void;
34
+ /**
35
+ * Mark an operation as completed.
36
+ */
37
+ completeOperation(index: number, success: boolean, error?: string): void;
38
+ /**
39
+ * Complete installation for current harness.
40
+ */
41
+ completeHarness(success: boolean, error?: string): void;
42
+ /**
43
+ * Get all progress entries.
44
+ */
45
+ getProgress(): HarnessInstallProgress[];
46
+ /**
47
+ * Check if any installation failed.
48
+ */
49
+ hasErrors(): boolean;
50
+ /**
51
+ * Get failed installations.
52
+ */
53
+ getFailures(): HarnessInstallProgress[];
54
+ }
55
+ /**
56
+ * Create an install progress handler for use with adapter.install().
57
+ */
58
+ export declare function createProgressHandler(tracker: InstallProgressTracker): (progress: InstallProgress) => void;
59
+ /**
60
+ * Display installation progress summary.
61
+ */
62
+ export declare function displayProgressSummary(progress: HarnessInstallProgress[]): void;
63
+ /**
64
+ * Convert adapter file operations to display format.
65
+ */
66
+ export declare function toFileOperationDisplay(result: FileOperationResult, primitive?: string, primitiveType?: PrimitiveType, version?: string): FileOperationDisplay;
67
+ /**
68
+ * Display verbose file operation results.
69
+ */
70
+ export declare function displayFileOperations(operations: FileOperationDisplay[], harnessDisplayName: string): void;
71
+ /**
72
+ * Display primitive installation status.
73
+ */
74
+ export declare function displayPrimitiveStatus(primitives: PrimitiveInstallStatus[], harnessDisplayName: string): void;
75
+ //# sourceMappingURL=progress.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"progress.d.ts","sourceRoot":"","sources":["../../src/tui/progress.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACtF,OAAO,KAAK,EAAE,eAAe,EAAE,sBAAsB,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AACzG,OAAO,KAAK,EAAE,oBAAoB,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAC;AAyC/E;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,EAAE,EAAE,oBAAoB,GAAG,MAAM,CA0BpE;AASD;;GAEG;AACH,qBAAa,sBAAsB;IACjC,OAAO,CAAC,OAAO,CAAwB;IACvC,OAAO,CAAC,eAAe,CAAuD;IAC9E,OAAO,CAAC,cAAc,CAA4B;IAClD,OAAO,CAAC,UAAU,CAAuB;IACzC,OAAO,CAAC,YAAY,CAA+B;IACnD,OAAO,CAAC,OAAO,CAAU;gBAEb,OAAO,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,OAAO,CAAA;KAAE;IAI3C;;OAEG;IACH,YAAY,CACV,OAAO,EAAE,WAAW,EACpB,kBAAkB,EAAE,MAAM,EAC1B,GAAG,EAAE,MAAM,EACX,KAAK,GAAE,iBAA4B,GAClC,IAAI;IAsBP;;OAEG;IACH,YAAY,CAAC,EAAE,EAAE,oBAAoB,GAAG,IAAI;IAoB5C;;OAEG;IACH,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI;IAYxE;;OAEG;IACH,eAAe,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI;IA8BvD;;OAEG;IACH,WAAW,IAAI,sBAAsB,EAAE;IAIvC;;OAEG;IACH,SAAS,IAAI,OAAO;IAMpB;;OAEG;IACH,WAAW,IAAI,sBAAsB,EAAE;CAKxC;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,sBAAsB,GAC9B,CAAC,QAAQ,EAAE,eAAe,KAAK,IAAI,CAsBrC;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CACpC,QAAQ,EAAE,sBAAsB,EAAE,GACjC,IAAI,CAoBN;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,mBAAmB,EAC3B,SAAS,CAAC,EAAE,MAAM,EAClB,aAAa,CAAC,EAAE,aAAa,EAC7B,OAAO,CAAC,EAAE,MAAM,GACf,oBAAoB,CAUtB;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CACnC,UAAU,EAAE,oBAAoB,EAAE,EAClC,kBAAkB,EAAE,MAAM,GACzB,IAAI,CAON;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CACpC,UAAU,EAAE,sBAAsB,EAAE,EACpC,kBAAkB,EAAE,MAAM,GACzB,IAAI,CAmBN"}
@@ -0,0 +1,267 @@
1
+ /**
2
+ * Installation progress display.
3
+ *
4
+ * Shows real-time progress of file operations during kit installation.
5
+ */
6
+ import * as clack from "@clack/prompts";
7
+ import pc from "picocolors";
8
+ import { startSpinner, stopSpinnerSuccess, stopSpinnerError, updateSpinner, formatPath, formatVersion, } from "./spinner.js";
9
+ /**
10
+ * Format operation type for display.
11
+ */
12
+ function formatOperationType(op) {
13
+ const labels = {
14
+ mkdir: "Creating directory",
15
+ copy: "Copying",
16
+ transform: "Transforming",
17
+ merge: "Merging config",
18
+ config: "Updating config",
19
+ };
20
+ return labels[op] ?? op;
21
+ }
22
+ /**
23
+ * Format operation status icon.
24
+ */
25
+ function formatStatusIcon(status) {
26
+ switch (status) {
27
+ case "pending":
28
+ return pc.dim("○");
29
+ case "in-progress":
30
+ return pc.cyan("◐");
31
+ case "completed":
32
+ return pc.green("✓");
33
+ case "failed":
34
+ return pc.red("✗");
35
+ }
36
+ }
37
+ /**
38
+ * Format a single file operation for display.
39
+ */
40
+ export function formatFileOperation(op) {
41
+ const icon = formatStatusIcon(op.status);
42
+ const opType = formatOperationType(op.operation);
43
+ let primitive = "";
44
+ if (op.primitive) {
45
+ primitive = ` ${pc.bold(op.primitive)}`;
46
+ if (op.primitiveType) {
47
+ primitive += ` ${pc.dim(`[${op.primitiveType}]`)}`;
48
+ }
49
+ if (op.version) {
50
+ primitive += ` ${formatVersion(op.version)}`;
51
+ }
52
+ }
53
+ const dest = formatPath(op.destination);
54
+ if (op.error) {
55
+ return `${opType}${primitive}: ${pc.red(op.error)} ${icon}`;
56
+ }
57
+ if (op.status === "completed") {
58
+ return `${opType}${primitive} → ${dest} ${pc.green("✓")}`;
59
+ }
60
+ return `${opType}${primitive} → ${dest} ${icon}`;
61
+ }
62
+ /**
63
+ * Format scope badge for progress display.
64
+ */
65
+ function formatScopeBadge(scope) {
66
+ return scope === "global" ? pc.dim("[global]") : pc.dim("[project]");
67
+ }
68
+ /**
69
+ * Progress tracker for installation.
70
+ */
71
+ export class InstallProgressTracker {
72
+ spinner = null;
73
+ harnessProgress = new Map();
74
+ currentHarness = null;
75
+ currentKit = null;
76
+ currentScope = "global";
77
+ verbose;
78
+ constructor(options) {
79
+ this.verbose = options?.verbose ?? false;
80
+ }
81
+ /**
82
+ * Start tracking installation for a harness.
83
+ */
84
+ startHarness(harness, harnessDisplayName, kit, scope = "global") {
85
+ this.currentHarness = harness;
86
+ this.currentKit = kit;
87
+ this.currentScope = scope;
88
+ const progress = {
89
+ harness,
90
+ harnessDisplayName,
91
+ kit,
92
+ scope,
93
+ operations: [],
94
+ status: "in-progress",
95
+ };
96
+ this.harnessProgress.set(harness, progress);
97
+ const scopeBadge = formatScopeBadge(scope);
98
+ this.spinner = startSpinner(`Installing ${pc.bold(kit)} to ${pc.cyan(harnessDisplayName)} ${scopeBadge}...`);
99
+ }
100
+ /**
101
+ * Add a file operation to the current harness.
102
+ */
103
+ addOperation(op) {
104
+ if (!this.currentHarness)
105
+ return;
106
+ const progress = this.harnessProgress.get(this.currentHarness);
107
+ if (!progress)
108
+ return;
109
+ progress.operations.push(op);
110
+ progress.currentOperation = progress.operations.length - 1;
111
+ if (this.spinner && op.status === "in-progress") {
112
+ const opMsg = formatOperationType(op.operation);
113
+ const primitive = op.primitive ? ` ${op.primitive}` : "";
114
+ updateSpinner(this.spinner, `${opMsg}${primitive}...`);
115
+ }
116
+ if (this.verbose && op.status === "completed") {
117
+ console.log(` ${formatFileOperation(op)}`);
118
+ }
119
+ }
120
+ /**
121
+ * Mark an operation as completed.
122
+ */
123
+ completeOperation(index, success, error) {
124
+ if (!this.currentHarness)
125
+ return;
126
+ const progress = this.harnessProgress.get(this.currentHarness);
127
+ if (!progress || !progress.operations[index])
128
+ return;
129
+ progress.operations[index].status = success ? "completed" : "failed";
130
+ if (error) {
131
+ progress.operations[index].error = error;
132
+ }
133
+ }
134
+ /**
135
+ * Complete installation for current harness.
136
+ */
137
+ completeHarness(success, error) {
138
+ if (!this.currentHarness)
139
+ return;
140
+ const progress = this.harnessProgress.get(this.currentHarness);
141
+ if (progress) {
142
+ progress.status = success ? "completed" : "failed";
143
+ progress.error = error;
144
+ }
145
+ const scopeBadge = formatScopeBadge(this.currentScope);
146
+ if (this.spinner) {
147
+ if (success) {
148
+ stopSpinnerSuccess(this.spinner, `Installed ${pc.bold(this.currentKit)} to ${pc.cyan(progress?.harnessDisplayName)} ${scopeBadge}`);
149
+ }
150
+ else {
151
+ stopSpinnerError(this.spinner, `Failed to install to ${progress?.harnessDisplayName}: ${error ?? "unknown error"}`);
152
+ }
153
+ this.spinner = null;
154
+ }
155
+ this.currentHarness = null;
156
+ this.currentKit = null;
157
+ }
158
+ /**
159
+ * Get all progress entries.
160
+ */
161
+ getProgress() {
162
+ return Array.from(this.harnessProgress.values());
163
+ }
164
+ /**
165
+ * Check if any installation failed.
166
+ */
167
+ hasErrors() {
168
+ return Array.from(this.harnessProgress.values()).some((p) => p.status === "failed");
169
+ }
170
+ /**
171
+ * Get failed installations.
172
+ */
173
+ getFailures() {
174
+ return Array.from(this.harnessProgress.values()).filter((p) => p.status === "failed");
175
+ }
176
+ }
177
+ /**
178
+ * Create an install progress handler for use with adapter.install().
179
+ */
180
+ export function createProgressHandler(tracker) {
181
+ return (progress) => {
182
+ if (progress.phase === "file") {
183
+ const op = {
184
+ operation: progress.operation,
185
+ primitive: progress.primitive,
186
+ destination: progress.destination ?? "",
187
+ status: "in-progress",
188
+ };
189
+ tracker.addOperation(op);
190
+ }
191
+ else if (progress.phase === "config") {
192
+ const op = {
193
+ operation: "config",
194
+ primitive: progress.primitive,
195
+ destination: progress.destination ?? "",
196
+ status: "in-progress",
197
+ };
198
+ tracker.addOperation(op);
199
+ }
200
+ };
201
+ }
202
+ /**
203
+ * Display installation progress summary.
204
+ */
205
+ export function displayProgressSummary(progress) {
206
+ const successful = progress.filter((p) => p.status === "completed");
207
+ const failed = progress.filter((p) => p.status === "failed");
208
+ if (successful.length > 0) {
209
+ console.log();
210
+ clack.log.success(`Successfully installed to ${successful.length} harness${successful.length === 1 ? "" : "es"}:`);
211
+ for (const p of successful) {
212
+ const scopeBadge = formatScopeBadge(p.scope);
213
+ console.log(` ${p.harnessDisplayName} ${scopeBadge} ${pc.green("✓")}`);
214
+ }
215
+ }
216
+ if (failed.length > 0) {
217
+ console.log();
218
+ clack.log.error(`Failed to install to ${failed.length} harness${failed.length === 1 ? "" : "es"}:`);
219
+ for (const p of failed) {
220
+ console.log(` ${p.harnessDisplayName}: ${p.error ?? "unknown error"} ${pc.red("✗")}`);
221
+ }
222
+ }
223
+ }
224
+ /**
225
+ * Convert adapter file operations to display format.
226
+ */
227
+ export function toFileOperationDisplay(result, primitive, primitiveType, version) {
228
+ return {
229
+ operation: result.operation,
230
+ primitive,
231
+ primitiveType,
232
+ version,
233
+ destination: result.destination,
234
+ status: result.success ? "completed" : "failed",
235
+ error: result.error,
236
+ };
237
+ }
238
+ /**
239
+ * Display verbose file operation results.
240
+ */
241
+ export function displayFileOperations(operations, harnessDisplayName) {
242
+ console.log();
243
+ console.log(` ${pc.bold(harnessDisplayName)} operations:`);
244
+ for (const op of operations) {
245
+ console.log(` ${formatFileOperation(op)}`);
246
+ }
247
+ }
248
+ /**
249
+ * Display primitive installation status.
250
+ */
251
+ export function displayPrimitiveStatus(primitives, harnessDisplayName) {
252
+ if (primitives.length === 0)
253
+ return;
254
+ console.log();
255
+ console.log(` ${pc.bold(harnessDisplayName)} primitives:`);
256
+ for (const p of primitives) {
257
+ const statusIcon = p.status === "installed"
258
+ ? pc.green("✓")
259
+ : p.status === "updated"
260
+ ? pc.cyan("↑")
261
+ : pc.dim("○");
262
+ const version = p.resolvedVersion ? ` ${formatVersion(p.resolvedVersion)}` : "";
263
+ const typeLabel = pc.dim(`[${p.type}]`);
264
+ console.log(` ${p.namespacedName}${version} ${typeLabel} ${statusIcon}`);
265
+ }
266
+ }
267
+ //# sourceMappingURL=progress.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"progress.js","sourceRoot":"","sources":["../../src/tui/progress.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,KAAK,MAAM,gBAAgB,CAAC;AACxC,OAAO,EAAE,MAAM,YAAY,CAAC;AAI5B,OAAO,EACL,YAAY,EACZ,kBAAkB,EAClB,gBAAgB,EAChB,aAAa,EACb,UAAU,EACV,aAAa,GAEd,MAAM,cAAc,CAAC;AAEtB;;GAEG;AACH,SAAS,mBAAmB,CAAC,EAAqC;IAChE,MAAM,MAAM,GAAsD;QAChE,KAAK,EAAE,oBAAoB;QAC3B,IAAI,EAAE,SAAS;QACf,SAAS,EAAE,cAAc;QACzB,KAAK,EAAE,gBAAgB;QACvB,MAAM,EAAE,iBAAiB;KAC1B,CAAC;IACF,OAAO,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC;AAC1B,CAAC;AAED;;GAEG;AACH,SAAS,gBAAgB,CAAC,MAAsC;IAC9D,QAAQ,MAAM,EAAE,CAAC;QACf,KAAK,SAAS;YACZ,OAAO,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACrB,KAAK,aAAa;YAChB,OAAO,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACtB,KAAK,WAAW;YACd,OAAO,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACvB,KAAK,QAAQ;YACX,OAAO,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACvB,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,mBAAmB,CAAC,EAAwB;IAC1D,MAAM,IAAI,GAAG,gBAAgB,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC;IACzC,MAAM,MAAM,GAAG,mBAAmB,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC;IAEjD,IAAI,SAAS,GAAG,EAAE,CAAC;IACnB,IAAI,EAAE,CAAC,SAAS,EAAE,CAAC;QACjB,SAAS,GAAG,IAAI,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC;QACxC,IAAI,EAAE,CAAC,aAAa,EAAE,CAAC;YACrB,SAAS,IAAI,IAAI,EAAE,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,aAAa,GAAG,CAAC,EAAE,CAAC;QACrD,CAAC;QACD,IAAI,EAAE,CAAC,OAAO,EAAE,CAAC;YACf,SAAS,IAAI,IAAI,aAAa,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;QAC/C,CAAC;IACH,CAAC;IAED,MAAM,IAAI,GAAG,UAAU,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC;IAExC,IAAI,EAAE,CAAC,KAAK,EAAE,CAAC;QACb,OAAO,GAAG,MAAM,GAAG,SAAS,KAAK,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,IAAI,EAAE,CAAC;IAC9D,CAAC;IAED,IAAI,EAAE,CAAC,MAAM,KAAK,WAAW,EAAE,CAAC;QAC9B,OAAO,GAAG,MAAM,GAAG,SAAS,MAAM,IAAI,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;IAC5D,CAAC;IAED,OAAO,GAAG,MAAM,GAAG,SAAS,MAAM,IAAI,IAAI,IAAI,EAAE,CAAC;AACnD,CAAC;AAED;;GAEG;AACH,SAAS,gBAAgB,CAAC,KAAwB;IAChD,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;AACvE,CAAC;AAED;;GAEG;AACH,MAAM,OAAO,sBAAsB;IACzB,OAAO,GAAmB,IAAI,CAAC;IAC/B,eAAe,GAA6C,IAAI,GAAG,EAAE,CAAC;IACtE,cAAc,GAAuB,IAAI,CAAC;IAC1C,UAAU,GAAkB,IAAI,CAAC;IACjC,YAAY,GAAsB,QAAQ,CAAC;IAC3C,OAAO,CAAU;IAEzB,YAAY,OAA+B;QACzC,IAAI,CAAC,OAAO,GAAG,OAAO,EAAE,OAAO,IAAI,KAAK,CAAC;IAC3C,CAAC;IAED;;OAEG;IACH,YAAY,CACV,OAAoB,EACpB,kBAA0B,EAC1B,GAAW,EACX,QAA2B,QAAQ;QAEnC,IAAI,CAAC,cAAc,GAAG,OAAO,CAAC;QAC9B,IAAI,CAAC,UAAU,GAAG,GAAG,CAAC;QACtB,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;QAE1B,MAAM,QAAQ,GAA2B;YACvC,OAAO;YACP,kBAAkB;YAClB,GAAG;YACH,KAAK;YACL,UAAU,EAAE,EAAE;YACd,MAAM,EAAE,aAAa;SACtB,CAAC;QAEF,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;QAE5C,MAAM,UAAU,GAAG,gBAAgB,CAAC,KAAK,CAAC,CAAC;QAC3C,IAAI,CAAC,OAAO,GAAG,YAAY,CACzB,cAAc,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,kBAAkB,CAAC,IAAI,UAAU,KAAK,CAChF,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,YAAY,CAAC,EAAwB;QACnC,IAAI,CAAC,IAAI,CAAC,cAAc;YAAE,OAAO;QAEjC,MAAM,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QAC/D,IAAI,CAAC,QAAQ;YAAE,OAAO;QAEtB,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC7B,QAAQ,CAAC,gBAAgB,GAAG,QAAQ,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC;QAE3D,IAAI,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC,MAAM,KAAK,aAAa,EAAE,CAAC;YAChD,MAAM,KAAK,GAAG,mBAAmB,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC;YAChD,MAAM,SAAS,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACzD,aAAa,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,KAAK,GAAG,SAAS,KAAK,CAAC,CAAC;QACzD,CAAC;QAED,IAAI,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC,MAAM,KAAK,WAAW,EAAE,CAAC;YAC9C,OAAO,CAAC,GAAG,CAAC,KAAK,mBAAmB,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;QAC9C,CAAC;IACH,CAAC;IAED;;OAEG;IACH,iBAAiB,CAAC,KAAa,EAAE,OAAgB,EAAE,KAAc;QAC/D,IAAI,CAAC,IAAI,CAAC,cAAc;YAAE,OAAO;QAEjC,MAAM,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QAC/D,IAAI,CAAC,QAAQ,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,KAAK,CAAC;YAAE,OAAO;QAErD,QAAQ,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC;QACrE,IAAI,KAAK,EAAE,CAAC;YACV,QAAQ,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,KAAK,GAAG,KAAK,CAAC;QAC3C,CAAC;IACH,CAAC;IAED;;OAEG;IACH,eAAe,CAAC,OAAgB,EAAE,KAAc;QAC9C,IAAI,CAAC,IAAI,CAAC,cAAc;YAAE,OAAO;QAEjC,MAAM,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QAC/D,IAAI,QAAQ,EAAE,CAAC;YACb,QAAQ,CAAC,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC;YACnD,QAAQ,CAAC,KAAK,GAAG,KAAK,CAAC;QACzB,CAAC;QAED,MAAM,UAAU,GAAG,gBAAgB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAEvD,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACjB,IAAI,OAAO,EAAE,CAAC;gBACZ,kBAAkB,CAChB,IAAI,CAAC,OAAO,EACZ,aAAa,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,QAAQ,EAAE,kBAAkB,CAAC,IAAI,UAAU,EAAE,CAClG,CAAC;YACJ,CAAC;iBAAM,CAAC;gBACN,gBAAgB,CACd,IAAI,CAAC,OAAO,EACZ,wBAAwB,QAAQ,EAAE,kBAAkB,KAAK,KAAK,IAAI,eAAe,EAAE,CACpF,CAAC;YACJ,CAAC;YACD,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QACtB,CAAC;QAED,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;QAC3B,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;IACzB,CAAC;IAED;;OAEG;IACH,WAAW;QACT,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,CAAC,CAAC;IACnD,CAAC;IAED;;OAEG;IACH,SAAS;QACP,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CACnD,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,QAAQ,CAC7B,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,WAAW;QACT,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CACrD,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,QAAQ,CAC7B,CAAC;IACJ,CAAC;CACF;AAED;;GAEG;AACH,MAAM,UAAU,qBAAqB,CACnC,OAA+B;IAE/B,OAAO,CAAC,QAAyB,EAAE,EAAE;QACnC,IAAI,QAAQ,CAAC,KAAK,KAAK,MAAM,EAAE,CAAC;YAC9B,MAAM,EAAE,GAAyB;gBAC/B,SAAS,EAAE,QAAQ,CAAC,SAA8C;gBAClE,SAAS,EAAE,QAAQ,CAAC,SAAS;gBAC7B,WAAW,EAAE,QAAQ,CAAC,WAAW,IAAI,EAAE;gBACvC,MAAM,EAAE,aAAa;aACtB,CAAC;YAEF,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;QAC3B,CAAC;aAAM,IAAI,QAAQ,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;YACvC,MAAM,EAAE,GAAyB;gBAC/B,SAAS,EAAE,QAAQ;gBACnB,SAAS,EAAE,QAAQ,CAAC,SAAS;gBAC7B,WAAW,EAAE,QAAQ,CAAC,WAAW,IAAI,EAAE;gBACvC,MAAM,EAAE,aAAa;aACtB,CAAC;YAEF,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;QAC3B,CAAC;IACH,CAAC,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,sBAAsB,CACpC,QAAkC;IAElC,MAAM,UAAU,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,WAAW,CAAC,CAAC;IACpE,MAAM,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC;IAE7D,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC1B,OAAO,CAAC,GAAG,EAAE,CAAC;QACd,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,6BAA6B,UAAU,CAAC,MAAM,WAAW,UAAU,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC;QACnH,KAAK,MAAM,CAAC,IAAI,UAAU,EAAE,CAAC;YAC3B,MAAM,UAAU,GAAG,gBAAgB,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;YAC7C,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,kBAAkB,IAAI,UAAU,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAC1E,CAAC;IACH,CAAC;IAED,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACtB,OAAO,CAAC,GAAG,EAAE,CAAC;QACd,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,wBAAwB,MAAM,CAAC,MAAM,WAAW,MAAM,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC;QACpG,KAAK,MAAM,CAAC,IAAI,MAAM,EAAE,CAAC;YACvB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,kBAAkB,KAAK,CAAC,CAAC,KAAK,IAAI,eAAe,IAAI,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACzF,CAAC;IACH,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,sBAAsB,CACpC,MAA2B,EAC3B,SAAkB,EAClB,aAA6B,EAC7B,OAAgB;IAEhB,OAAO;QACL,SAAS,EAAE,MAAM,CAAC,SAA8C;QAChE,SAAS;QACT,aAAa;QACb,OAAO;QACP,WAAW,EAAE,MAAM,CAAC,WAAW;QAC/B,MAAM,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ;QAC/C,KAAK,EAAE,MAAM,CAAC,KAAK;KACpB,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,qBAAqB,CACnC,UAAkC,EAClC,kBAA0B;IAE1B,OAAO,CAAC,GAAG,EAAE,CAAC;IACd,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,kBAAkB,CAAC,cAAc,CAAC,CAAC;IAE5D,KAAK,MAAM,EAAE,IAAI,UAAU,EAAE,CAAC;QAC5B,OAAO,CAAC,GAAG,CAAC,OAAO,mBAAmB,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IAChD,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,sBAAsB,CACpC,UAAoC,EACpC,kBAA0B;IAE1B,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO;IAEpC,OAAO,CAAC,GAAG,EAAE,CAAC;IACd,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,kBAAkB,CAAC,cAAc,CAAC,CAAC;IAE5D,KAAK,MAAM,CAAC,IAAI,UAAU,EAAE,CAAC;QAC3B,MAAM,UAAU,GACd,CAAC,CAAC,MAAM,KAAK,WAAW;YACtB,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC;YACf,CAAC,CAAC,CAAC,CAAC,MAAM,KAAK,SAAS;gBACtB,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC;gBACd,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAEpB,MAAM,OAAO,GAAG,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,IAAI,aAAa,CAAC,CAAC,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAChF,MAAM,SAAS,GAAG,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC;QAExC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,cAAc,GAAG,OAAO,IAAI,SAAS,IAAI,UAAU,EAAE,CAAC,CAAC;IAC9E,CAAC;AACH,CAAC"}
@@ -0,0 +1,62 @@
1
+ /**
2
+ * Primitive resolution display.
3
+ *
4
+ * Shows progress and results of resolving primitive references
5
+ * to concrete versions from the shared primitives library.
6
+ */
7
+ import type { PrimitiveType, ResolvedPrimitive } from "../core/types.js";
8
+ import type { ResolutionError, KitResolutionResult, MultiKitResolutionResult } from "../resolution/types.js";
9
+ import type { KitResolutionDisplay, ResolutionDisplayEntry } from "./types.js";
10
+ /**
11
+ * Convert resolved primitive to display entry.
12
+ */
13
+ export declare function toDisplayEntry(primitive: ResolvedPrimitive, sharedWith?: string[]): ResolutionDisplayEntry;
14
+ /**
15
+ * Convert kit resolution result to display format.
16
+ */
17
+ export declare function toKitResolutionDisplay(result: KitResolutionResult, sharedPrimitives?: Map<string, string[]>): KitResolutionDisplay;
18
+ /**
19
+ * Convert multi-kit resolution to display format.
20
+ */
21
+ export declare function toMultiKitResolutionDisplay(result: MultiKitResolutionResult, kitNames: string[]): KitResolutionDisplay[];
22
+ /**
23
+ * Format resolved entry for display.
24
+ */
25
+ export declare function formatResolvedEntry(entry: ResolutionDisplayEntry): string;
26
+ /**
27
+ * Display resolution entries grouped by type.
28
+ */
29
+ export declare function displayResolutionByType(entries: ResolutionDisplayEntry[]): void;
30
+ /**
31
+ * Display resolution results for a single kit.
32
+ */
33
+ export declare function displayKitResolution(display: KitResolutionDisplay): void;
34
+ /**
35
+ * Display all resolution results.
36
+ */
37
+ export declare function displayResolutionResults(displays: KitResolutionDisplay[]): void;
38
+ /**
39
+ * Display resolution summary (counts).
40
+ */
41
+ export declare function displayResolutionSummary(displays: KitResolutionDisplay[]): void;
42
+ /**
43
+ * Check if resolution has errors.
44
+ */
45
+ export declare function hasResolutionErrors(displays: KitResolutionDisplay[]): boolean;
46
+ /**
47
+ * Get all resolution errors.
48
+ */
49
+ export declare function getAllResolutionErrors(displays: KitResolutionDisplay[]): ResolutionError[];
50
+ /**
51
+ * Display resolution errors.
52
+ */
53
+ export declare function displayResolutionErrors(errors: ResolutionError[]): void;
54
+ /**
55
+ * Get unique primitives from all displays.
56
+ */
57
+ export declare function getUniquePrimitives(displays: KitResolutionDisplay[]): ResolutionDisplayEntry[];
58
+ /**
59
+ * Count primitives by type.
60
+ */
61
+ export declare function countPrimitivesByType(displays: KitResolutionDisplay[]): Record<PrimitiveType, number>;
62
+ //# sourceMappingURL=resolution.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolution.d.ts","sourceRoot":"","sources":["../../src/tui/resolution.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,KAAK,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACzE,OAAO,KAAK,EAAE,eAAe,EAAE,mBAAmB,EAAE,wBAAwB,EAAE,MAAM,wBAAwB,CAAC;AAC7G,OAAO,KAAK,EAAE,oBAAoB,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAC;AAQ/E;;GAEG;AACH,wBAAgB,cAAc,CAC5B,SAAS,EAAE,iBAAiB,EAC5B,UAAU,CAAC,EAAE,MAAM,EAAE,GACpB,sBAAsB,CAUxB;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,mBAAmB,EAC3B,gBAAgB,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,GACvC,oBAAoB,CAYtB;AAED;;GAEG;AACH,wBAAgB,2BAA2B,CACzC,MAAM,EAAE,wBAAwB,EAChC,QAAQ,EAAE,MAAM,EAAE,GACjB,oBAAoB,EAAE,CAkBxB;AAgBD;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,sBAAsB,GAAG,MAAM,CA4BzE;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,sBAAsB,EAAE,GAAG,IAAI,CAoB/E;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,oBAAoB,GAAG,IAAI,CAuBxE;AAED;;GAEG;AACH,wBAAgB,wBAAwB,CAAC,QAAQ,EAAE,oBAAoB,EAAE,GAAG,IAAI,CAS/E;AAED;;GAEG;AACH,wBAAgB,wBAAwB,CAAC,QAAQ,EAAE,oBAAoB,EAAE,GAAG,IAAI,CA4C/E;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,oBAAoB,EAAE,GAAG,OAAO,CAE7E;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,oBAAoB,EAAE,GAAG,eAAe,EAAE,CAM1F;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,eAAe,EAAE,GAAG,IAAI,CAevE;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,oBAAoB,EAAE,GAAG,sBAAsB,EAAE,CAe9F;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CACnC,QAAQ,EAAE,oBAAoB,EAAE,GAC/B,MAAM,CAAC,aAAa,EAAE,MAAM,CAAC,CAe/B"}