@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,258 @@
1
+ /**
2
+ * Multi-kit resolver for deduplicating shared primitives.
3
+ *
4
+ * When installing multiple kits that reference the same primitives,
5
+ * this module ensures each shared primitive is resolved once with
6
+ * the highest compatible version.
7
+ */
8
+ import * as semver from "semver";
9
+ import { isReferencedPrimitive, PRIMITIVE_TYPES } from "../core/types.js";
10
+ import { createPrimitiveKey } from "./types.js";
11
+ import { parseReference } from "./reference-parser.js";
12
+ import { resolveRegistryPrimitivePath } from "./primitive-paths.js";
13
+ import { resolvePrimitiveReferences } from "./index.js";
14
+ /**
15
+ * Resolves primitives across multiple kits, deduplicating shared primitives.
16
+ *
17
+ * When multiple kits reference the same primitive:
18
+ * 1. Collects all version specs for that primitive
19
+ * 2. Finds the highest version satisfying all specs
20
+ * 3. Uses that single resolved version for all kits
21
+ *
22
+ * @param kits - Array of kit manifests
23
+ * @param registry - The primitives registry loader
24
+ * @param kitBasePaths - Map of kit names to their base paths
25
+ * @returns Multi-kit resolution result with deduplication
26
+ */
27
+ export async function resolveMultipleKits(kits, registry, kitBasePaths) {
28
+ const allPrimitives = new Map();
29
+ const kitPrimitives = new Map();
30
+ const sharedPrimitives = new Map();
31
+ const errors = [];
32
+ // Step 1: Collect all primitive references across kits
33
+ const referenceMap = collectPrimitiveReferences(kits);
34
+ // Step 2: Resolve shared primitives (referenced by multiple kits)
35
+ const sharedResolved = await resolveSharedPrimitives(referenceMap, registry);
36
+ // Add shared primitive errors
37
+ errors.push(...sharedResolved.errors);
38
+ // Store shared primitives
39
+ for (const [key, resolved] of sharedResolved.primitives) {
40
+ allPrimitives.set(key, resolved);
41
+ // Track which kits share this primitive
42
+ const refInfo = referenceMap.get(key);
43
+ if (refInfo && refInfo.kits.size > 1) {
44
+ sharedPrimitives.set(key, Array.from(refInfo.kits.keys()));
45
+ }
46
+ }
47
+ // Step 3: Resolve per-kit primitives (inline + non-shared)
48
+ for (const kit of kits) {
49
+ const kitBasePath = kitBasePaths.get(kit.name);
50
+ if (!kitBasePath) {
51
+ errors.push({
52
+ type: "not-found",
53
+ primitive: kit.name,
54
+ message: `Base path not provided for kit "${kit.name}"`,
55
+ });
56
+ continue;
57
+ }
58
+ const kitResult = await resolvePrimitiveReferences(kit, registry, kitBasePath);
59
+ errors.push(...kitResult.errors);
60
+ const kitResolvedPrimitives = [];
61
+ for (const resolved of kitResult.primitives) {
62
+ const key = createPrimitiveKey(resolved.type, resolved.name);
63
+ // Use shared resolution if available
64
+ if (!resolved.isInline && allPrimitives.has(key)) {
65
+ kitResolvedPrimitives.push(allPrimitives.get(key));
66
+ }
67
+ else {
68
+ // Store non-shared or inline primitive
69
+ allPrimitives.set(key, resolved);
70
+ kitResolvedPrimitives.push(resolved);
71
+ }
72
+ }
73
+ kitPrimitives.set(kit.name, kitResolvedPrimitives);
74
+ }
75
+ return {
76
+ allPrimitives,
77
+ kitPrimitives,
78
+ sharedPrimitives,
79
+ errors,
80
+ };
81
+ }
82
+ /**
83
+ * Collects all primitive references across kits.
84
+ */
85
+ function collectPrimitiveReferences(kits) {
86
+ const references = new Map();
87
+ for (const kit of kits) {
88
+ for (const type of PRIMITIVE_TYPES) {
89
+ const primitives = kit.primitives[type];
90
+ if (!primitives)
91
+ continue;
92
+ for (const primitive of primitives) {
93
+ if (!isReferencedPrimitive(primitive))
94
+ continue;
95
+ try {
96
+ const parsed = parseReference(primitive.ref);
97
+ const key = createPrimitiveKey(type, parsed.name);
98
+ if (!references.has(key)) {
99
+ references.set(key, {
100
+ type,
101
+ name: parsed.name,
102
+ kits: new Map(),
103
+ });
104
+ }
105
+ references.get(key).kits.set(kit.name, parsed.versionSpec);
106
+ }
107
+ catch {
108
+ // Skip invalid references - they'll be caught in normal resolution
109
+ }
110
+ }
111
+ }
112
+ }
113
+ return references;
114
+ }
115
+ /**
116
+ * Resolves primitives shared by multiple kits.
117
+ */
118
+ async function resolveSharedPrimitives(referenceMap, registry) {
119
+ const primitives = new Map();
120
+ const errors = [];
121
+ for (const [key, info] of referenceMap) {
122
+ // Skip if only one kit references this primitive
123
+ if (info.kits.size <= 1)
124
+ continue;
125
+ // Get all version specs from different kits
126
+ const specs = Array.from(info.kits.values());
127
+ // Look up the primitive
128
+ const entry = await registry.getPrimitive(info.type, info.name);
129
+ if (!entry) {
130
+ errors.push({
131
+ type: "not-found",
132
+ primitive: `${info.name} (shared by ${Array.from(info.kits.keys()).join(", ")})`,
133
+ message: `Shared primitive "${info.name}" of type "${info.type}" not found in registry`,
134
+ });
135
+ continue;
136
+ }
137
+ // Find highest version satisfying all specs
138
+ const versions = entry.versions.map((v) => v.version);
139
+ const matchingVersion = findHighestSatisfyingAll(versions, specs);
140
+ if (!matchingVersion) {
141
+ errors.push({
142
+ type: "no-matching-version",
143
+ primitive: `${info.name} (shared by ${Array.from(info.kits.keys()).join(", ")})`,
144
+ message: `No version found satisfying all specs: ${specs.join(", ")}. Available: ${versions.join(", ")}`,
145
+ available: versions,
146
+ });
147
+ continue;
148
+ }
149
+ // Get the version entry
150
+ const versionEntry = entry.versions.find((v) => v.version === matchingVersion);
151
+ if (!versionEntry)
152
+ continue;
153
+ // Build resolved primitive
154
+ const basePath = `${registry.getBasePath()}/${entry.path}/${versionEntry.path}`;
155
+ const sourcePath = await resolveRegistryPrimitivePath(info.type, info.name, basePath);
156
+ primitives.set(key, {
157
+ name: info.name,
158
+ type: info.type,
159
+ ref: `${info.name}@${matchingVersion}`, // Use resolved version as ref
160
+ resolvedVersion: matchingVersion,
161
+ sourcePath,
162
+ isInline: false,
163
+ metadata: {
164
+ description: entry.description,
165
+ released: versionEntry.released,
166
+ changelog: versionEntry.changelog,
167
+ },
168
+ });
169
+ }
170
+ return { primitives, errors };
171
+ }
172
+ /**
173
+ * Finds the highest version that satisfies all given specs.
174
+ */
175
+ function findHighestSatisfyingAll(versions, specs) {
176
+ // Handle edge cases
177
+ if (specs.length === 0)
178
+ return null;
179
+ if (versions.length === 0)
180
+ return null;
181
+ // If all specs are "latest", return highest version
182
+ if (specs.every((s) => s.toLowerCase() === "latest")) {
183
+ return semver.maxSatisfying(versions, "*");
184
+ }
185
+ // Filter to versions satisfying all non-latest specs
186
+ const nonLatestSpecs = specs.filter((s) => s.toLowerCase() !== "latest");
187
+ const satisfyingAll = versions.filter((version) => nonLatestSpecs.every((spec) => {
188
+ // Handle exact version match
189
+ if (semver.valid(spec)) {
190
+ return version === spec || semver.eq(version, spec);
191
+ }
192
+ // Handle range specs
193
+ const range = semver.validRange(spec);
194
+ if (range) {
195
+ return semver.satisfies(version, range);
196
+ }
197
+ // Unknown spec format - be permissive
198
+ return true;
199
+ }));
200
+ if (satisfyingAll.length === 0) {
201
+ return null;
202
+ }
203
+ // Return highest satisfying version
204
+ return semver.maxSatisfying(satisfyingAll, "*");
205
+ }
206
+ /**
207
+ * Deduplicates primitives by merging identical versions.
208
+ *
209
+ * @param primitives - Array of resolved primitives from multiple kits
210
+ * @returns Deduplicated array with shared primitives merged
211
+ */
212
+ export function deduplicatePrimitives(primitives) {
213
+ const deduplicated = new Map();
214
+ for (const primitive of primitives) {
215
+ const key = createPrimitiveKey(primitive.type, primitive.name);
216
+ // For inline primitives, use kit-specific keys
217
+ if (primitive.isInline) {
218
+ // Inline primitives are kit-specific, include source path in key
219
+ const inlineKey = `${key}:${primitive.sourcePath}`;
220
+ deduplicated.set(inlineKey, primitive);
221
+ continue;
222
+ }
223
+ // For referenced primitives, deduplicate by type:name
224
+ if (!deduplicated.has(key)) {
225
+ deduplicated.set(key, primitive);
226
+ continue;
227
+ }
228
+ // If already exists, keep the higher version
229
+ const existing = deduplicated.get(key);
230
+ if (primitive.resolvedVersion &&
231
+ existing.resolvedVersion &&
232
+ semver.gt(primitive.resolvedVersion, existing.resolvedVersion)) {
233
+ deduplicated.set(key, primitive);
234
+ }
235
+ }
236
+ return deduplicated;
237
+ }
238
+ /**
239
+ * Analyzes primitive sharing across kits.
240
+ *
241
+ * @param kits - Array of kit manifests
242
+ * @returns Analysis of shared primitives
243
+ */
244
+ export function analyzeSharedPrimitives(kits) {
245
+ const references = collectPrimitiveReferences(kits);
246
+ const shared = new Map();
247
+ for (const [key, info] of references) {
248
+ if (info.kits.size > 1) {
249
+ shared.set(key, {
250
+ type: info.type,
251
+ name: info.name,
252
+ kits: Array.from(info.kits.keys()),
253
+ });
254
+ }
255
+ }
256
+ return shared;
257
+ }
258
+ //# sourceMappingURL=multi-kit-resolver.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"multi-kit-resolver.js","sourceRoot":"","sources":["../../src/resolution/multi-kit-resolver.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Resolve registry primitive content paths.
3
+ *
4
+ * Registry version paths point to a version directory. This helper resolves the
5
+ * actual file or directory to install based on primitive type conventions.
6
+ */
7
+ import type { PrimitiveType } from "../core/types.js";
8
+ /**
9
+ * Resolve a registry primitive content path for installation.
10
+ *
11
+ * @param type - Primitive type
12
+ * @param name - Primitive name
13
+ * @param basePath - Resolved registry base path (entry.path + version.path)
14
+ * @returns Path to primitive content (file or directory)
15
+ */
16
+ export declare function resolveRegistryPrimitivePath(type: PrimitiveType, name: string, basePath: string): Promise<string>;
17
+ //# sourceMappingURL=primitive-paths.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"primitive-paths.d.ts","sourceRoot":"","sources":["../../src/resolution/primitive-paths.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAWtD;;;;;;;GAOG;AACH,wBAAsB,4BAA4B,CAChD,IAAI,EAAE,aAAa,EACnB,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,MAAM,CAAC,CAmCjB"}
@@ -0,0 +1,59 @@
1
+ /**
2
+ * Resolve registry primitive content paths.
3
+ *
4
+ * Registry version paths point to a version directory. This helper resolves the
5
+ * actual file or directory to install based on primitive type conventions.
6
+ */
7
+ import { stat } from "node:fs/promises";
8
+ import path from "node:path";
9
+ async function pathExists(targetPath) {
10
+ try {
11
+ await stat(targetPath);
12
+ return true;
13
+ }
14
+ catch {
15
+ return false;
16
+ }
17
+ }
18
+ /**
19
+ * Resolve a registry primitive content path for installation.
20
+ *
21
+ * @param type - Primitive type
22
+ * @param name - Primitive name
23
+ * @param basePath - Resolved registry base path (entry.path + version.path)
24
+ * @returns Path to primitive content (file or directory)
25
+ */
26
+ export async function resolveRegistryPrimitivePath(type, name, basePath) {
27
+ try {
28
+ const stats = await stat(basePath);
29
+ if (!stats.isDirectory()) {
30
+ return basePath;
31
+ }
32
+ }
33
+ catch {
34
+ return basePath;
35
+ }
36
+ let candidate = basePath;
37
+ switch (type) {
38
+ case "commands":
39
+ candidate = path.join(basePath, `${name}.md`);
40
+ break;
41
+ case "subagents":
42
+ candidate = path.join(basePath, `${name}.md`);
43
+ break;
44
+ case "hooks":
45
+ candidate = path.join(basePath, "config.json");
46
+ break;
47
+ case "mcp":
48
+ candidate = path.join(basePath, "config.json");
49
+ break;
50
+ case "skills":
51
+ default:
52
+ return basePath;
53
+ }
54
+ if (await pathExists(candidate)) {
55
+ return candidate;
56
+ }
57
+ return basePath;
58
+ }
59
+ //# sourceMappingURL=primitive-paths.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"primitive-paths.js","sourceRoot":"","sources":["../../src/resolution/primitive-paths.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AACxC,OAAO,IAAI,MAAM,WAAW,CAAC;AAI7B,KAAK,UAAU,UAAU,CAAC,UAAkB;IAC1C,IAAI,CAAC;QACH,MAAM,IAAI,CAAC,UAAU,CAAC,CAAC;QACvB,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,4BAA4B,CAChD,IAAmB,EACnB,IAAY,EACZ,QAAgB;IAEhB,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,CAAC;QACnC,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;YACzB,OAAO,QAAQ,CAAC;QAClB,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,IAAI,SAAS,GAAG,QAAQ,CAAC;IAEzB,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,UAAU;YACb,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,IAAI,KAAK,CAAC,CAAC;YAC9C,MAAM;QACR,KAAK,WAAW;YACd,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,IAAI,KAAK,CAAC,CAAC;YAC9C,MAAM;QACR,KAAK,OAAO;YACV,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC;YAC/C,MAAM;QACR,KAAK,KAAK;YACR,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC;YAC/C,MAAM;QACR,KAAK,QAAQ,CAAC;QACd;YACE,OAAO,QAAQ,CAAC;IACpB,CAAC;IAED,IAAI,MAAM,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QAChC,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC"}
@@ -0,0 +1,137 @@
1
+ /**
2
+ * Primitives registry loader and query interface.
3
+ *
4
+ * Provides functionality to load the primitives.json file and query
5
+ * primitives by type and name.
6
+ */
7
+ import type { PrimitivesRegistry, PrimitiveEntry, PrimitiveType, PrimitiveVersionEntry } from "../core/types.js";
8
+ import type { VersionResolutionResult } from "./types.js";
9
+ /**
10
+ * Error thrown when the primitives registry cannot be loaded.
11
+ */
12
+ export declare class PrimitivesRegistryError extends Error {
13
+ readonly errorCause?: unknown;
14
+ constructor(message: string, cause?: unknown);
15
+ }
16
+ /**
17
+ * Wrapper class for querying the primitives registry.
18
+ */
19
+ export declare class PrimitivesRegistryLoader {
20
+ private registry;
21
+ private basePath;
22
+ constructor(basePath: string);
23
+ /**
24
+ * Loads the primitives registry from the repository.
25
+ *
26
+ * @returns The loaded primitives registry
27
+ * @throws PrimitivesRegistryError if loading fails
28
+ */
29
+ load(): Promise<PrimitivesRegistry>;
30
+ /**
31
+ * Gets the loaded registry, loading it if necessary.
32
+ */
33
+ getRegistry(): Promise<PrimitivesRegistry>;
34
+ /**
35
+ * Checks if the registry has been loaded.
36
+ */
37
+ isLoaded(): boolean;
38
+ /**
39
+ * Gets the base path for resolving primitive paths.
40
+ */
41
+ getBasePath(): string;
42
+ /**
43
+ * Gets a primitive entry by type and name.
44
+ *
45
+ * @param type - The primitive type
46
+ * @param name - The primitive name
47
+ * @returns The primitive entry or null if not found
48
+ */
49
+ getPrimitive(type: PrimitiveType, name: string): Promise<PrimitiveEntry | null>;
50
+ /**
51
+ * Gets all available versions for a primitive.
52
+ *
53
+ * @param type - The primitive type
54
+ * @param name - The primitive name
55
+ * @returns Array of version entries, sorted newest first
56
+ */
57
+ getVersions(type: PrimitiveType, name: string): Promise<PrimitiveVersionEntry[]>;
58
+ /**
59
+ * Gets the version strings for a primitive.
60
+ *
61
+ * @param type - The primitive type
62
+ * @param name - The primitive name
63
+ * @returns Array of version strings
64
+ */
65
+ getVersionStrings(type: PrimitiveType, name: string): Promise<string[]>;
66
+ /**
67
+ * Gets the latest version for a primitive.
68
+ *
69
+ * @param type - The primitive type
70
+ * @param name - The primitive name
71
+ * @returns The latest version string or null if not found
72
+ */
73
+ getLatestVersion(type: PrimitiveType, name: string): Promise<string | null>;
74
+ /**
75
+ * Gets a specific version entry for a primitive.
76
+ *
77
+ * @param type - The primitive type
78
+ * @param name - The primitive name
79
+ * @param version - The exact version string
80
+ * @returns The version entry or null if not found
81
+ */
82
+ getVersion(type: PrimitiveType, name: string, version: string): Promise<PrimitiveVersionEntry | null>;
83
+ /**
84
+ * Resolves the full path to a primitive version's content.
85
+ *
86
+ * @param type - The primitive type
87
+ * @param name - The primitive name
88
+ * @param version - The version string
89
+ * @returns The absolute path to the primitive content or null if not found
90
+ */
91
+ resolvePath(type: PrimitiveType, name: string, version: string): Promise<string | null>;
92
+ /**
93
+ * Gets version resolution result with full path information.
94
+ *
95
+ * @param type - The primitive type
96
+ * @param name - The primitive name
97
+ * @param version - The exact version string
98
+ * @returns The version resolution result or null if not found
99
+ */
100
+ getVersionResolution(type: PrimitiveType, name: string, version: string): Promise<VersionResolutionResult | null>;
101
+ /**
102
+ * Checks if a primitive exists in the registry.
103
+ *
104
+ * @param type - The primitive type
105
+ * @param name - The primitive name
106
+ * @returns True if the primitive exists
107
+ */
108
+ hasPrimitive(type: PrimitiveType, name: string): Promise<boolean>;
109
+ /**
110
+ * Lists all primitives of a given type.
111
+ *
112
+ * @param type - The primitive type
113
+ * @returns Array of primitive names
114
+ */
115
+ listPrimitives(type: PrimitiveType): Promise<string[]>;
116
+ /**
117
+ * Lists all primitives across all types.
118
+ *
119
+ * @returns Map of type to primitive names
120
+ */
121
+ listAllPrimitives(): Promise<Map<PrimitiveType, string[]>>;
122
+ }
123
+ /**
124
+ * Creates a new primitives registry loader.
125
+ *
126
+ * @param basePath - The base path to the kit repository
127
+ * @returns A new PrimitivesRegistryLoader instance
128
+ */
129
+ export declare function createPrimitivesRegistry(basePath: string): PrimitivesRegistryLoader;
130
+ /**
131
+ * Loads a primitives registry from a repository path.
132
+ *
133
+ * @param basePath - The base path to the kit repository
134
+ * @returns The loaded primitives registry
135
+ */
136
+ export declare function loadPrimitivesRegistry(basePath: string): Promise<PrimitivesRegistry>;
137
+ //# sourceMappingURL=primitives-registry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"primitives-registry.d.ts","sourceRoot":"","sources":["../../src/resolution/primitives-registry.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH,OAAO,KAAK,EACV,kBAAkB,EAClB,cAAc,EACd,aAAa,EACb,qBAAqB,EACtB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAC;AAE1D;;GAEG;AACH,qBAAa,uBAAwB,SAAQ,KAAK;IAChD,QAAQ,CAAC,UAAU,CAAC,EAAE,OAAO,CAAC;gBAElB,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,OAAO;CAK7C;AAED;;GAEG;AACH,qBAAa,wBAAwB;IACnC,OAAO,CAAC,QAAQ,CAAmC;IACnD,OAAO,CAAC,QAAQ,CAAS;gBAEb,QAAQ,EAAE,MAAM;IAI5B;;;;;OAKG;IACG,IAAI,IAAI,OAAO,CAAC,kBAAkB,CAAC;IA4BzC;;OAEG;IACG,WAAW,IAAI,OAAO,CAAC,kBAAkB,CAAC;IAOhD;;OAEG;IACH,QAAQ,IAAI,OAAO;IAInB;;OAEG;IACH,WAAW,IAAI,MAAM;IAIrB;;;;;;OAMG;IACG,YAAY,CAAC,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC;IAWrF;;;;;;OAMG;IACG,WAAW,CAAC,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,qBAAqB,EAAE,CAAC;IAYtF;;;;;;OAMG;IACG,iBAAiB,CAAC,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAK7E;;;;;;OAMG;IACG,gBAAgB,CAAC,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAKjF;;;;;;;OAOG;IACG,UAAU,CACd,IAAI,EAAE,aAAa,EACnB,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,qBAAqB,GAAG,IAAI,CAAC;IASxC;;;;;;;OAOG;IACG,WAAW,CAAC,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAe7F;;;;;;;OAOG;IACG,oBAAoB,CACxB,IAAI,EAAE,aAAa,EACnB,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,uBAAuB,GAAG,IAAI,CAAC;IAmB1C;;;;;;OAMG;IACG,YAAY,CAAC,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAKvE;;;;;OAKG;IACG,cAAc,CAAC,IAAI,EAAE,aAAa,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAW5D;;;;OAIG;IACG,iBAAiB,IAAI,OAAO,CAAC,GAAG,CAAC,aAAa,EAAE,MAAM,EAAE,CAAC,CAAC;CAYjE;AAmDD;;;;;GAKG;AACH,wBAAgB,wBAAwB,CAAC,QAAQ,EAAE,MAAM,GAAG,wBAAwB,CAEnF;AAED;;;;;GAKG;AACH,wBAAsB,sBAAsB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAG1F"}