@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,494 @@
1
+ /**
2
+ * OpenCode adapter implementation.
3
+ *
4
+ * OpenCode is an open-source AI coding assistant with full support for:
5
+ * - Commands: ~/.config/opencode/commands/{kit}.{name}.md (argumentHint stripped)
6
+ * - Skills: ~/.config/opencode/skills/{kit}.{name}/
7
+ * - Subagents: ~/.config/opencode/agents/{kit}.{name}.md
8
+ * - MCP Servers: ~/.config/opencode/opencode.json (mcp key)
9
+ * - Hooks: ~/.config/opencode/plugins/{instance}.js
10
+ *
11
+ * Note: OpenCode commands have the argumentHint field stripped from frontmatter.
12
+ */
13
+ import * as path from "node:path";
14
+ import { BaseAdapter } from "../base-adapter.js";
15
+ import { expandPath, pathExists, readFile, ensureDirectory, copyFile, writeTransformed, remove, } from "../file-operations.js";
16
+ import { stripFrontmatterField } from "../command-parser.js";
17
+ import { filterFrontmatterAllowlist, toKebabCaseSkillFrontmatter } from "../skill-frontmatter.js";
18
+ import { detectOpencode, getOpencodeInstallationPaths, OPENCODE_PATHS } from "./detection.js";
19
+ import { opencodeToolMapping } from "./tool-mapping.js";
20
+ import { opencodeModelMapping } from "./model-mapping.js";
21
+ import { transformMcpServerConfig, transformHookConfig, transformEnvVars as installerTransformEnvVars, transformHeaders as installerTransformHeaders, readConfigFile, writeConfigFile, } from "./installer.js";
22
+ /**
23
+ * Project-scope paths for OpenCode.
24
+ */
25
+ export const OPENCODE_PROJECT_PATHS = {
26
+ configJson: ".opencode/opencode.json",
27
+ commands: ".opencode/commands/",
28
+ skills: ".opencode/skills/",
29
+ agents: ".opencode/agents/",
30
+ plugins: ".opencode/plugins/",
31
+ opencodeJson: "opencode.json",
32
+ };
33
+ /**
34
+ * OpenCode adapter.
35
+ *
36
+ * Provides full support for all primitive types.
37
+ */
38
+ export class OpencodeAdapter extends BaseAdapter {
39
+ name = "opencode";
40
+ displayName = "OpenCode";
41
+ version = "1.0.0";
42
+ supportedHarnessVersions = ">=1.0.0";
43
+ /**
44
+ * Get supported installation scopes.
45
+ *
46
+ * OpenCode supports both global and project scopes.
47
+ */
48
+ getSupportedScopes() {
49
+ return ["global", "project"];
50
+ }
51
+ /**
52
+ * Get supported primitive types at the given scope.
53
+ *
54
+ * OpenCode supports all primitive types at both scopes.
55
+ *
56
+ * @param scope - Installation scope (defaults to "global")
57
+ */
58
+ getSupportedPrimitives(_scope) {
59
+ return ["commands", "skills", "subagents", "mcp", "hooks"];
60
+ }
61
+ /**
62
+ * Get installation paths for file-based primitives.
63
+ *
64
+ * @param scope - Installation scope (defaults to "global")
65
+ */
66
+ getInstallationPaths(scope) {
67
+ if (scope === "project") {
68
+ return {
69
+ commands: OPENCODE_PROJECT_PATHS.commands,
70
+ skills: OPENCODE_PROJECT_PATHS.skills,
71
+ subagents: OPENCODE_PROJECT_PATHS.agents,
72
+ hooks: OPENCODE_PROJECT_PATHS.plugins,
73
+ };
74
+ }
75
+ return getOpencodeInstallationPaths();
76
+ }
77
+ /**
78
+ * Get configuration file locations.
79
+ *
80
+ * @param scope - Installation scope (defaults to "global")
81
+ */
82
+ getConfigLocations(scope) {
83
+ if (scope === "project") {
84
+ return {
85
+ primary: OPENCODE_PROJECT_PATHS.configJson,
86
+ format: "json",
87
+ };
88
+ }
89
+ return {
90
+ primary: OPENCODE_PATHS.configJson,
91
+ format: "json",
92
+ };
93
+ }
94
+ /**
95
+ * Get the tool mapping for OpenCode.
96
+ */
97
+ getToolMapping() {
98
+ return opencodeToolMapping;
99
+ }
100
+ /**
101
+ * Get the model mapping for OpenCode.
102
+ */
103
+ getModelMapping() {
104
+ return opencodeModelMapping;
105
+ }
106
+ /**
107
+ * Detect OpenCode installation.
108
+ */
109
+ async detect() {
110
+ return detectOpencode();
111
+ }
112
+ /**
113
+ * Transform a command for OpenCode.
114
+ *
115
+ * OpenCode uses native Markdown format with YAML frontmatter.
116
+ * The `argumentHint` field is stripped as OpenCode does not support it.
117
+ * The `description` field is preserved.
118
+ */
119
+ transformCommand(content, _metadata) {
120
+ // Strip argumentHint field, preserving description
121
+ const strippedContent = stripFrontmatterField(content, "argumentHint");
122
+ return {
123
+ content: strippedContent,
124
+ format: "markdown",
125
+ };
126
+ }
127
+ /**
128
+ * Transform a skill for OpenCode.
129
+ *
130
+ * OpenCode uses native Markdown format for skills.
131
+ */
132
+ transformSkill(_skillDir, _metadata) {
133
+ return {
134
+ content: "",
135
+ format: "markdown",
136
+ };
137
+ }
138
+ /**
139
+ * OpenCode supports a limited frontmatter set for skills.
140
+ */
141
+ filterSkillFrontmatter(frontmatter) {
142
+ const normalized = toKebabCaseSkillFrontmatter(frontmatter);
143
+ return filterFrontmatterAllowlist(normalized, new Set([
144
+ "name",
145
+ "description",
146
+ "allowed-tools",
147
+ "license",
148
+ "compatibility",
149
+ "metadata",
150
+ ]));
151
+ }
152
+ /**
153
+ * OpenCode subagents do not support hooks in frontmatter.
154
+ */
155
+ filterSubagentFrontmatter(frontmatter) {
156
+ const { hooks: _hooks, ...rest } = frontmatter;
157
+ void _hooks;
158
+ return rest;
159
+ }
160
+ /**
161
+ * Transform a subagent for OpenCode.
162
+ *
163
+ * OpenCode uses native Markdown format for subagents.
164
+ */
165
+ transformSubagent(content, _metadata) {
166
+ return {
167
+ content,
168
+ format: "markdown",
169
+ };
170
+ }
171
+ /**
172
+ * Transform an MCP server configuration for OpenCode.
173
+ */
174
+ transformMcpServer(config) {
175
+ return transformMcpServerConfig(config);
176
+ }
177
+ /**
178
+ * Transform a hook for OpenCode.
179
+ */
180
+ transformHook(hook) {
181
+ return transformHookConfig(hook);
182
+ }
183
+ /**
184
+ * Transform resolved environment variables to OpenCode format.
185
+ *
186
+ * OpenCode uses ${VAR} syntax for passthrough, direct values otherwise.
187
+ * See PRD-001 FR-20.7.
188
+ */
189
+ transformEnvVars(resolved) {
190
+ return installerTransformEnvVars(resolved);
191
+ }
192
+ /**
193
+ * Transform resolved headers to OpenCode format.
194
+ *
195
+ * OpenCode uses ${VAR} syntax for passthrough, direct values otherwise.
196
+ * See PRD-001 FR-21.6.
197
+ */
198
+ transformHeaders(resolved) {
199
+ return installerTransformHeaders(resolved);
200
+ }
201
+ /**
202
+ * Override installPrimitive to handle hook plugin filenames.
203
+ */
204
+ async installPrimitive(kitName, primitive, resolvedPrimitives, paths, dryRun, completedOps, scope = "global", projectRoot) {
205
+ if (primitive.type !== "hooks") {
206
+ return super.installPrimitive(kitName, primitive, resolvedPrimitives, paths, dryRun, completedOps, scope, projectRoot);
207
+ }
208
+ if (!paths.hooks) {
209
+ throw new Error("opencode does not support hooks");
210
+ }
211
+ const namespacedName = this.getNamespacedName(kitName, primitive.name);
212
+ const instanceName = primitive.instanceName ?? namespacedName;
213
+ const resolvePath = (p) => {
214
+ if (scope === "project" && projectRoot) {
215
+ return path.join(projectRoot, p.replace(/^\.\//, ""));
216
+ }
217
+ return expandPath(p);
218
+ };
219
+ const destination = path.join(resolvePath(paths.hooks), `${instanceName}.js`);
220
+ const existed = pathExists(destination);
221
+ return { destination, existed, operations: [] };
222
+ }
223
+ /**
224
+ * Update harness configuration for MCP servers and hooks.
225
+ *
226
+ * @param kit - Kit manifest
227
+ * @param resolvedPrimitives - Resolved primitives to install
228
+ * @param dryRun - If true, don't actually write files
229
+ * @param completedOps - Array to track completed operations for rollback
230
+ * @param scope - Installation scope
231
+ * @param projectRoot - Project root for project scope
232
+ */
233
+ async updateConfiguration(kit, resolvedPrimitives, dryRun, completedOps, scope = "global", projectRoot, envResolutions) {
234
+ const operations = [];
235
+ // Filter MCP and hook primitives
236
+ const mcpPrimitives = resolvedPrimitives.filter((p) => p.type === "mcp");
237
+ const hookPrimitives = resolvedPrimitives.filter((p) => p.type === "hooks");
238
+ // Handle MCP servers
239
+ if (mcpPrimitives.length > 0 && !dryRun) {
240
+ const mcpResult = await this.installMcpServers(kit.name, mcpPrimitives, completedOps, scope, projectRoot, envResolutions);
241
+ operations.push(...mcpResult);
242
+ }
243
+ // Handle hooks
244
+ if (hookPrimitives.length > 0 && !dryRun) {
245
+ const hookResult = await this.installHooks(kit.name, hookPrimitives, completedOps, scope, projectRoot);
246
+ operations.push(...hookResult);
247
+ }
248
+ return { operations };
249
+ }
250
+ resolveConfigPath(scope, projectRoot) {
251
+ if (scope === "project" && projectRoot) {
252
+ const rootConfig = path.join(projectRoot, OPENCODE_PROJECT_PATHS.opencodeJson);
253
+ if (pathExists(rootConfig)) {
254
+ return rootConfig;
255
+ }
256
+ return path.join(projectRoot, OPENCODE_PROJECT_PATHS.configJson.replace(/^\.\//, ""));
257
+ }
258
+ return expandPath(OPENCODE_PATHS.configJson);
259
+ }
260
+ /**
261
+ * Install MCP servers to configuration.
262
+ */
263
+ async installMcpServers(_kitName, primitives, completedOps, scope = "global", projectRoot, envResolutions) {
264
+ const operations = [];
265
+ const configPath = this.resolveConfigPath(scope, projectRoot);
266
+ const configExisted = pathExists(configPath);
267
+ const existingContent = configExisted ? await readFile(configPath) : undefined;
268
+ const existingConfig = await readConfigFile(configPath);
269
+ const updatedConfig = {
270
+ ...existingConfig,
271
+ mcp: {
272
+ ...existingConfig.mcp,
273
+ servers: { ...existingConfig.mcp?.servers },
274
+ },
275
+ };
276
+ for (const primitive of primitives) {
277
+ try {
278
+ const content = await readFile(primitive.sourcePath);
279
+ const mcpConfig = JSON.parse(content);
280
+ const instanceName = primitive.instanceName ?? mcpConfig.name;
281
+ if (!instanceName) {
282
+ throw new Error(`MCP config missing name; path=${primitive.sourcePath}`);
283
+ }
284
+ const transformedConfig = transformMcpServerConfig(mcpConfig);
285
+ const resolution = envResolutions?.find((r) => r.mcpServer === instanceName);
286
+ if (resolution && resolution.resolved.length > 0) {
287
+ const transformedEnv = installerTransformEnvVars(resolution.resolved);
288
+ transformedConfig.env = transformedEnv;
289
+ }
290
+ if (resolution && resolution.resolvedHeaders && resolution.resolvedHeaders.length > 0) {
291
+ const transformedHeaders = installerTransformHeaders(resolution.resolvedHeaders);
292
+ if (transformedConfig.url) {
293
+ transformedConfig.headers = transformedHeaders;
294
+ }
295
+ }
296
+ updatedConfig.mcp.servers[instanceName] = transformedConfig;
297
+ operations.push({
298
+ operation: "merge",
299
+ source: primitive.sourcePath,
300
+ destination: configPath,
301
+ success: true,
302
+ });
303
+ }
304
+ catch (error) {
305
+ operations.push({
306
+ operation: "merge",
307
+ source: primitive.sourcePath,
308
+ destination: configPath,
309
+ success: false,
310
+ error: error instanceof Error ? error.message : String(error),
311
+ });
312
+ }
313
+ }
314
+ await writeConfigFile(configPath, updatedConfig);
315
+ const completedOp = {
316
+ type: "file",
317
+ path: configPath,
318
+ createdNew: !configExisted,
319
+ };
320
+ if (configExisted && existingContent !== undefined) {
321
+ completedOp.previousContent = existingContent;
322
+ }
323
+ completedOps.push(completedOp);
324
+ return operations;
325
+ }
326
+ async removeMcpServers(instanceNames, scope = "global", projectRoot) {
327
+ if (instanceNames.length === 0)
328
+ return [];
329
+ const configPath = this.resolveConfigPath(scope, projectRoot);
330
+ const existingConfig = await readConfigFile(configPath);
331
+ const servers = existingConfig.mcp?.servers;
332
+ if (!servers) {
333
+ return [];
334
+ }
335
+ const removed = [];
336
+ for (const name of instanceNames) {
337
+ if (servers[name]) {
338
+ delete servers[name];
339
+ removed.push(name);
340
+ }
341
+ }
342
+ if (removed.length > 0) {
343
+ await writeConfigFile(configPath, existingConfig);
344
+ }
345
+ return removed;
346
+ }
347
+ async removeHooks(instanceNames, scope = "global", projectRoot) {
348
+ if (instanceNames.length === 0)
349
+ return [];
350
+ const installPaths = this.getInstallationPaths(scope);
351
+ if (!installPaths.hooks) {
352
+ return [];
353
+ }
354
+ const pluginsDir = scope === "project" && projectRoot
355
+ ? path.join(projectRoot, installPaths.hooks.replace(/^\.\//, ""))
356
+ : expandPath(installPaths.hooks);
357
+ if (!pathExists(pluginsDir)) {
358
+ return [];
359
+ }
360
+ const { readdir } = await import("node:fs/promises");
361
+ const entries = await readdir(pluginsDir);
362
+ const removed = [];
363
+ for (const instanceName of instanceNames) {
364
+ let removedAny = false;
365
+ const pluginPath = path.join(pluginsDir, `${instanceName}.js`);
366
+ if (pathExists(pluginPath)) {
367
+ await remove(pluginPath);
368
+ removedAny = true;
369
+ }
370
+ const prefix = `${instanceName}-`;
371
+ for (const entry of entries) {
372
+ if (entry.startsWith(prefix)) {
373
+ await remove(path.join(pluginsDir, entry));
374
+ removedAny = true;
375
+ }
376
+ }
377
+ if (removedAny) {
378
+ removed.push(instanceName);
379
+ }
380
+ }
381
+ return removed;
382
+ }
383
+ /**
384
+ * Install hooks as OpenCode plugins.
385
+ */
386
+ async installHooks(kitName, primitives, completedOps, scope = "global", projectRoot) {
387
+ const operations = [];
388
+ const installPaths = this.getInstallationPaths(scope);
389
+ if (!installPaths.hooks) {
390
+ throw new Error("opencode does not support hooks");
391
+ }
392
+ const pluginsDir = scope === "project" && projectRoot
393
+ ? path.join(projectRoot, installPaths.hooks.replace(/^\.\//, ""))
394
+ : expandPath(installPaths.hooks);
395
+ await ensureDirectory(pluginsDir);
396
+ for (const primitive of primitives) {
397
+ const program = primitive.hookProgram;
398
+ const binding = primitive.hookBinding;
399
+ if (!program || !binding || !primitive.hookEntryPath || !primitive.hookProgramDir) {
400
+ operations.push({
401
+ operation: "merge",
402
+ source: primitive.sourcePath,
403
+ destination: pluginsDir,
404
+ success: false,
405
+ error: "Hook primitive missing program or binding metadata",
406
+ });
407
+ continue;
408
+ }
409
+ const namespacedName = this.getNamespacedName(kitName, primitive.name);
410
+ const instanceName = primitive.instanceName ?? namespacedName;
411
+ const pluginPath = path.join(pluginsDir, `${instanceName}.js`);
412
+ try {
413
+ const hookInput = {
414
+ instanceName,
415
+ program,
416
+ binding,
417
+ programDir: primitive.hookProgramDir,
418
+ entryPath: primitive.hookEntryPath,
419
+ targetDir: pluginsDir,
420
+ targetPath: pluginPath,
421
+ scope,
422
+ ...(projectRoot ? { projectRoot } : {}),
423
+ };
424
+ const hookInstallation = transformHookConfig(hookInput);
425
+ if (hookInstallation.pluginCode !== undefined) {
426
+ const existed = pathExists(pluginPath);
427
+ const previousContent = existed ? await readFile(pluginPath) : undefined;
428
+ await writeTransformed(pluginPath, hookInstallation.pluginCode);
429
+ const completedOp = {
430
+ type: "file",
431
+ path: pluginPath,
432
+ createdNew: !existed,
433
+ };
434
+ if (previousContent !== undefined) {
435
+ completedOp.previousContent = previousContent;
436
+ }
437
+ completedOps.push(completedOp);
438
+ operations.push({
439
+ operation: "transform",
440
+ source: primitive.sourcePath,
441
+ destination: pluginPath,
442
+ success: true,
443
+ });
444
+ }
445
+ if (hookInstallation.files) {
446
+ for (const file of hookInstallation.files) {
447
+ if (file.type === "copy" && file.source && file.destination) {
448
+ const existed = pathExists(file.destination);
449
+ const previousContent = existed ? await readFile(file.destination) : undefined;
450
+ await copyFile(file.source, file.destination);
451
+ const completedOp = {
452
+ type: "file",
453
+ path: file.destination,
454
+ createdNew: !existed,
455
+ };
456
+ if (previousContent !== undefined) {
457
+ completedOp.previousContent = previousContent;
458
+ }
459
+ completedOps.push(completedOp);
460
+ operations.push({
461
+ operation: "copy",
462
+ source: file.source,
463
+ destination: file.destination,
464
+ success: true,
465
+ });
466
+ }
467
+ }
468
+ }
469
+ }
470
+ catch (error) {
471
+ operations.push({
472
+ operation: "merge",
473
+ source: primitive.sourcePath,
474
+ destination: pluginsDir,
475
+ success: false,
476
+ error: error instanceof Error ? error.message : String(error),
477
+ });
478
+ }
479
+ }
480
+ return operations;
481
+ }
482
+ }
483
+ /**
484
+ * Create an OpenCode adapter instance.
485
+ */
486
+ export function createOpencodeAdapter() {
487
+ return new OpencodeAdapter();
488
+ }
489
+ // Re-export types and utilities
490
+ export { detectOpencode, OPENCODE_PATHS } from "./detection.js";
491
+ export { opencodeToolMapping } from "./tool-mapping.js";
492
+ export { opencodeModelMapping } from "./model-mapping.js";
493
+ export * from "./installer.js";
494
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/adapters/opencode/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,91 @@
1
+ /**
2
+ * OpenCode installation helpers.
3
+ *
4
+ * Provides utilities for installing primitives to OpenCode:
5
+ * - MCP server configuration in ~/.config/opencode/opencode.json
6
+ * - Hook plugins in ~/.config/opencode/plugins/
7
+ * - Environment variable substitution
8
+ */
9
+ import type { McpServerConfig, ResolvedEnvVar, ResolvedHeader, EnvVarOutput, HeaderOutput } from "../../core/types.js";
10
+ import type { HookInstallation, HookInstallationInput, FileOperationResult } from "../types.js";
11
+ /**
12
+ * OpenCode configuration structure.
13
+ */
14
+ export interface OpencodeConfig {
15
+ mcp?: {
16
+ servers?: Record<string, OpencodeMcpServerEntry>;
17
+ };
18
+ [key: string]: unknown;
19
+ }
20
+ /**
21
+ * MCP server entry in OpenCode config.
22
+ */
23
+ export interface OpencodeMcpServerEntry {
24
+ command?: string;
25
+ args?: string[];
26
+ env?: Record<string, string>;
27
+ url?: string;
28
+ headers?: Record<string, string>;
29
+ }
30
+ /**
31
+ * Read a config file from disk.
32
+ */
33
+ export declare function readConfigFile(configPath: string): Promise<OpencodeConfig>;
34
+ /**
35
+ * Write a config file to disk.
36
+ */
37
+ export declare function writeConfigFile(configPath: string, config: OpencodeConfig): Promise<void>;
38
+ /**
39
+ * Read the global configuration file.
40
+ */
41
+ export declare function readConfig(): Promise<OpencodeConfig>;
42
+ /**
43
+ * Write the global configuration file.
44
+ */
45
+ export declare function writeConfig(config: OpencodeConfig): Promise<void>;
46
+ /**
47
+ * Process environment variable values.
48
+ */
49
+ export declare function processEnvValue(value: string): string;
50
+ /**
51
+ * Transform an MCP server configuration for OpenCode.
52
+ *
53
+ * Note: Full environment variable transformation with sensitivity handling
54
+ * is implemented in transformEnvVars (Phase 7). This function provides
55
+ * basic passthrough for all env vars using ${VAR} syntax.
56
+ */
57
+ export declare function transformMcpServerConfig(config: McpServerConfig): OpencodeMcpServerEntry;
58
+ /**
59
+ * Transform a hook program + binding into an OpenCode plugin.
60
+ */
61
+ export declare function transformHookConfig(input: HookInstallationInput): HookInstallation;
62
+ /**
63
+ * Transform resolved environment variables to OpenCode format.
64
+ *
65
+ * OpenCode uses JSON configuration with ${VAR} syntax for passthrough.
66
+ *
67
+ * Rules (per FR-20.7):
68
+ * - Passthrough: "VAR": "${VAR}"
69
+ * - Direct value: "VAR": "value"
70
+ */
71
+ export declare function transformEnvVars(resolved: ResolvedEnvVar[]): EnvVarOutput;
72
+ /**
73
+ * Transform resolved headers to OpenCode format.
74
+ *
75
+ * OpenCode uses ${VAR} syntax within header values for passthrough.
76
+ *
77
+ * Rules (per FR-21.6):
78
+ * - Sensitive with envVar: "Header": "${VAR}"
79
+ * - Nonsensitive with static value: "Header": "value"
80
+ * - Nonsensitive with envVar: "Header": "${VAR}"
81
+ */
82
+ export declare function transformHeaders(resolved: ResolvedHeader[]): HeaderOutput;
83
+ /**
84
+ * Add an MCP server to the configuration.
85
+ */
86
+ export declare function addMcpServer(namespacedName: string, config: McpServerConfig): Promise<FileOperationResult>;
87
+ /**
88
+ * Remove an MCP server from the configuration.
89
+ */
90
+ export declare function removeMcpServer(namespacedName: string): Promise<boolean>;
91
+ //# sourceMappingURL=installer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"installer.d.ts","sourceRoot":"","sources":["../../../src/adapters/opencode/installer.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,KAAK,EACV,eAAe,EAEf,cAAc,EACd,cAAc,EACd,YAAY,EACZ,YAAY,EACb,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAWhG;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,GAAG,CAAC,EAAE;QACJ,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,sBAAsB,CAAC,CAAC;KAClD,CAAC;IACF,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAE7B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAClC;AAED;;GAEG;AACH,wBAAsB,cAAc,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC,CAWhF;AAED;;GAEG;AACH,wBAAsB,eAAe,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAG/F;AAED;;GAEG;AACH,wBAAsB,UAAU,IAAI,OAAO,CAAC,cAAc,CAAC,CAE1D;AAED;;GAEG;AACH,wBAAsB,WAAW,CAAC,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAEvE;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAErD;AAED;;;;;;GAMG;AACH,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,eAAe,GAAG,sBAAsB,CAwBxF;AAqED;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,qBAAqB,GAC3B,gBAAgB,CAsElB;AAED;;;;;;;;GAQG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,cAAc,EAAE,GAAG,YAAY,CAazE;AAED;;;;;;;;;GASG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,cAAc,EAAE,GAAG,YAAY,CAazE;AAED;;GAEG;AACH,wBAAsB,YAAY,CAChC,cAAc,EAAE,MAAM,EACtB,MAAM,EAAE,eAAe,GACtB,OAAO,CAAC,mBAAmB,CAAC,CA4B9B;AAED;;GAEG;AACH,wBAAsB,eAAe,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAU9E"}