@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,595 @@
1
+ /**
2
+ * GitHub Copilot adapter implementation.
3
+ *
4
+ * GitHub Copilot is Microsoft's AI pair programmer with support for:
5
+ * - Commands: .github/prompts/{kit}.{name}.prompt.md (project-only, body-only)
6
+ * - Skills: ~/.copilot/skills/{kit}.{name}/ (global), .github/skills/ (project)
7
+ * - Subagents: ~/.copilot/agents/{kit}.{name}.md (global), .github/agents/ (project)
8
+ * - MCP Servers: ~/.copilot/config.json mcpServers key (global), .vscode/mcp.json (project)
9
+ * - Hooks: Limited support (repo-scoped hooks.json, limited event set)
10
+ *
11
+ * Note: Commands are only supported at project scope.
12
+ */
13
+ import * as path from "node:path";
14
+ import { BaseAdapter } from "../base-adapter.js";
15
+ import { expandPath, pathExists, readFile, writeTransformed, ensureDirectory, copyFile, remove, } from "../file-operations.js";
16
+ import { extractCommandBody } from "../command-parser.js";
17
+ import { filterFrontmatterAllowlist, toKebabCaseSkillFrontmatter } from "../skill-frontmatter.js";
18
+ import { detectGithubCopilot, getGithubCopilotInstallationPaths, GITHUB_COPILOT_PATHS } from "./detection.js";
19
+ import { githubCopilotToolMapping } from "./tool-mapping.js";
20
+ import { githubCopilotModelMapping } from "./model-mapping.js";
21
+ import { transformMcpServerConfig, transformHookConfig, transformEnvVars as installerTransformEnvVars, transformHeaders as installerTransformHeaders, readConfig, writeConfig, readHooksFile, writeHooksFile, } from "./installer.js";
22
+ /**
23
+ * Project-scope paths for GitHub Copilot.
24
+ *
25
+ * Note: Commands use `.github/prompts/` with `.prompt.md` extension
26
+ * as specified in PRD-001.
27
+ */
28
+ export const GITHUB_COPILOT_PROJECT_PATHS = {
29
+ configJson: ".github/copilot-config.json",
30
+ mcpJson: ".vscode/mcp.json",
31
+ prompts: ".github/prompts/",
32
+ skills: ".github/skills/",
33
+ agents: ".github/agents/",
34
+ hooks: ".github/hooks/",
35
+ hooksFile: ".github/hooks/hooks.json",
36
+ copilotInstructions: ".github/copilot-instructions.md",
37
+ };
38
+ /**
39
+ * GitHub Copilot adapter.
40
+ *
41
+ * Provides support for commands, skills, subagents, MCP, and limited hooks.
42
+ */
43
+ export class GithubCopilotAdapter extends BaseAdapter {
44
+ name = "github-copilot";
45
+ displayName = "GitHub Copilot";
46
+ version = "1.0.0";
47
+ supportedHarnessVersions = ">=1.0.0";
48
+ /**
49
+ * Get supported installation scopes.
50
+ *
51
+ * GitHub Copilot supports both global and project scopes.
52
+ */
53
+ getSupportedScopes() {
54
+ return ["global", "project"];
55
+ }
56
+ /**
57
+ * Get supported primitive types at the given scope.
58
+ *
59
+ * GitHub Copilot supports commands only at project scope.
60
+ * Commands are project-only because GitHub Copilot uses `.github/prompts/`
61
+ * for project-level instruction files.
62
+ *
63
+ * @param scope - Installation scope (defaults to "global")
64
+ */
65
+ getSupportedPrimitives(scope) {
66
+ if (scope === "project") {
67
+ return ["commands", "skills", "subagents", "mcp", "hooks"];
68
+ }
69
+ // Commands are project-only for GitHub Copilot
70
+ return ["skills", "subagents", "mcp"];
71
+ }
72
+ /**
73
+ * Get installation paths for file-based primitives.
74
+ *
75
+ * Note: Commands are only supported at project scope for GitHub Copilot.
76
+ * At project scope, commands go to `.github/prompts/` with `.prompt.md` extension.
77
+ *
78
+ * @param scope - Installation scope (defaults to "global")
79
+ */
80
+ getInstallationPaths(scope) {
81
+ if (scope === "project") {
82
+ return {
83
+ commands: GITHUB_COPILOT_PROJECT_PATHS.prompts,
84
+ skills: GITHUB_COPILOT_PROJECT_PATHS.skills,
85
+ subagents: GITHUB_COPILOT_PROJECT_PATHS.agents,
86
+ hooks: GITHUB_COPILOT_PROJECT_PATHS.hooks,
87
+ };
88
+ }
89
+ // Global scope: commands not supported (empty string)
90
+ const globalPaths = getGithubCopilotInstallationPaths();
91
+ const { hooks: _hooks, ...rest } = globalPaths;
92
+ void _hooks;
93
+ return {
94
+ ...rest,
95
+ commands: "", // Commands are project-only
96
+ };
97
+ }
98
+ /**
99
+ * Get configuration file locations.
100
+ *
101
+ * @param scope - Installation scope (defaults to "global")
102
+ */
103
+ getConfigLocations(scope) {
104
+ if (scope === "project") {
105
+ return {
106
+ primary: GITHUB_COPILOT_PROJECT_PATHS.configJson,
107
+ mcp: GITHUB_COPILOT_PROJECT_PATHS.mcpJson,
108
+ format: "json",
109
+ };
110
+ }
111
+ return {
112
+ primary: GITHUB_COPILOT_PATHS.configJson,
113
+ format: "json",
114
+ };
115
+ }
116
+ /**
117
+ * Get the tool mapping for GitHub Copilot.
118
+ */
119
+ getToolMapping() {
120
+ return githubCopilotToolMapping;
121
+ }
122
+ /**
123
+ * Get the model mapping for GitHub Copilot.
124
+ */
125
+ getModelMapping() {
126
+ return githubCopilotModelMapping;
127
+ }
128
+ /**
129
+ * Detect GitHub Copilot installation.
130
+ */
131
+ async detect() {
132
+ return detectGithubCopilot();
133
+ }
134
+ /**
135
+ * Transform a command for GitHub Copilot.
136
+ *
137
+ * GitHub Copilot commands are body-only; the YAML frontmatter is stripped.
138
+ * The description and argumentHint fields are ignored as they are not
139
+ * used by GitHub Copilot's prompt file format.
140
+ *
141
+ * Output is a plain Markdown file with only the command body content.
142
+ */
143
+ transformCommand(content, _metadata) {
144
+ // Extract body only, stripping YAML frontmatter
145
+ const body = extractCommandBody(content);
146
+ return {
147
+ content: body,
148
+ format: "markdown",
149
+ };
150
+ }
151
+ /**
152
+ * Transform a skill for GitHub Copilot.
153
+ *
154
+ * GitHub Copilot uses native Markdown format for skills.
155
+ */
156
+ transformSkill(_skillDir, _metadata) {
157
+ return {
158
+ content: "",
159
+ format: "markdown",
160
+ };
161
+ }
162
+ /**
163
+ * GitHub Copilot skills support name/description and optional license.
164
+ */
165
+ filterSkillFrontmatter(frontmatter) {
166
+ const normalized = toKebabCaseSkillFrontmatter(frontmatter);
167
+ return filterFrontmatterAllowlist(normalized, new Set(["name", "description", "allowed-tools", "license"]));
168
+ }
169
+ /**
170
+ * GitHub Copilot subagents do not support hooks in frontmatter.
171
+ */
172
+ filterSubagentFrontmatter(frontmatter) {
173
+ const { hooks: _hooks, ...rest } = frontmatter;
174
+ void _hooks;
175
+ return rest;
176
+ }
177
+ /**
178
+ * Transform a subagent for GitHub Copilot.
179
+ *
180
+ * GitHub Copilot uses native Markdown format for subagents.
181
+ */
182
+ transformSubagent(content, _metadata) {
183
+ return {
184
+ content,
185
+ format: "markdown",
186
+ };
187
+ }
188
+ /**
189
+ * Transform an MCP server configuration for GitHub Copilot.
190
+ */
191
+ transformMcpServer(config) {
192
+ return transformMcpServerConfig(config);
193
+ }
194
+ /**
195
+ * Transform a hook for GitHub Copilot.
196
+ *
197
+ * GitHub Copilot only supports a limited set of hook events.
198
+ */
199
+ transformHook(hook) {
200
+ return transformHookConfig(hook);
201
+ }
202
+ /**
203
+ * Transform resolved environment variables to GitHub Copilot format.
204
+ *
205
+ * GitHub Copilot uses ${VAR} syntax for passthrough, direct values otherwise.
206
+ * See PRD-001 FR-20.6.
207
+ */
208
+ transformEnvVars(resolved) {
209
+ return installerTransformEnvVars(resolved);
210
+ }
211
+ /**
212
+ * Transform resolved headers to GitHub Copilot format.
213
+ *
214
+ * GitHub Copilot uses ${VAR} syntax for passthrough, direct values otherwise.
215
+ * See PRD-001 FR-21.5.
216
+ */
217
+ transformHeaders(resolved) {
218
+ return installerTransformHeaders(resolved);
219
+ }
220
+ /**
221
+ * Override installPrimitive to handle GitHub Copilot-specific command format.
222
+ *
223
+ * Commands use the `.prompt.md` extension and body-only content.
224
+ *
225
+ * @param kitName - Name of the kit
226
+ * @param primitive - Resolved primitive to install
227
+ * @param paths - Installation paths for the scope
228
+ * @param dryRun - If true, don't actually write files
229
+ * @param completedOps - Completed operations for rollback
230
+ * @param scope - Installation scope
231
+ * @param projectRoot - Project root for project scope
232
+ */
233
+ async installPrimitive(kitName, primitive, resolvedPrimitives, paths, dryRun, completedOps, scope = "global", projectRoot) {
234
+ const namespacedName = this.getNamespacedName(kitName, primitive.name);
235
+ const operations = [];
236
+ // Helper to resolve path based on scope
237
+ const resolvePath = (p) => {
238
+ if (scope === "project" && projectRoot) {
239
+ return path.join(projectRoot, p.replace(/^\.\//, ""));
240
+ }
241
+ return expandPath(p);
242
+ };
243
+ // Only commands need special handling for GitHub Copilot
244
+ if (primitive.type === "commands") {
245
+ // Commands are only supported at project scope
246
+ if (scope !== "project" || !paths.commands) {
247
+ throw new Error("github-copilot only supports commands at project scope");
248
+ }
249
+ // Commands use .prompt.md extension for GitHub Copilot
250
+ const destination = path.join(resolvePath(paths.commands), `${namespacedName}.prompt.md`);
251
+ const existed = pathExists(destination);
252
+ if (!dryRun) {
253
+ const content = await readFile(primitive.sourcePath);
254
+ const transformed = this.transformCommand(content, primitive.metadata);
255
+ const { content: processedContent } = this.processToolTemplates(transformed.content);
256
+ await ensureDirectory(path.dirname(destination));
257
+ await writeTransformed(destination, processedContent);
258
+ completedOps.push({
259
+ type: "file",
260
+ path: destination,
261
+ createdNew: !existed,
262
+ });
263
+ }
264
+ operations.push({
265
+ operation: "transform",
266
+ source: primitive.sourcePath,
267
+ destination,
268
+ success: true,
269
+ });
270
+ return { destination, existed, operations };
271
+ }
272
+ // Use base implementation for all other primitive types
273
+ return super.installPrimitive(kitName, primitive, resolvedPrimitives, paths, dryRun, completedOps, scope, projectRoot);
274
+ }
275
+ /**
276
+ * Update harness configuration for MCP servers and hooks.
277
+ *
278
+ * @param kit - Kit manifest
279
+ * @param resolvedPrimitives - Resolved primitives to install
280
+ * @param dryRun - If true, don't actually write files
281
+ * @param completedOps - Array to track completed operations for rollback
282
+ * @param scope - Installation scope
283
+ * @param projectRoot - Project root for project scope
284
+ */
285
+ async updateConfiguration(kit, resolvedPrimitives, dryRun, completedOps, scope = "global", projectRoot, envResolutions) {
286
+ const operations = [];
287
+ // Filter MCP and hook primitives
288
+ const mcpPrimitives = resolvedPrimitives.filter((p) => p.type === "mcp");
289
+ const hookPrimitives = resolvedPrimitives.filter((p) => p.type === "hooks");
290
+ // Handle MCP servers
291
+ if (mcpPrimitives.length > 0 && !dryRun) {
292
+ const mcpResult = await this.installMcpServers(kit.name, mcpPrimitives, completedOps, scope, projectRoot, envResolutions);
293
+ operations.push(...mcpResult);
294
+ }
295
+ // Handle hooks
296
+ if (hookPrimitives.length > 0 && !dryRun) {
297
+ if (scope !== "project") {
298
+ throw new Error("github-copilot only supports hooks at project scope");
299
+ }
300
+ const hookResult = await this.installHooks(kit.name, hookPrimitives, completedOps, scope, projectRoot);
301
+ operations.push(...hookResult);
302
+ }
303
+ return { operations };
304
+ }
305
+ /**
306
+ * Install MCP servers to configuration.
307
+ *
308
+ * @param kitName - Name of the kit
309
+ * @param primitives - MCP primitives to install
310
+ * @param completedOps - Completed operations for rollback
311
+ * @param scope - Installation scope
312
+ * @param projectRoot - Project root for project scope
313
+ */
314
+ async installMcpServers(_kitName, primitives, completedOps, scope = "global", projectRoot, envResolutions) {
315
+ const operations = [];
316
+ const configLocations = this.getConfigLocations(scope);
317
+ // For project scope, use MCP-specific config if available
318
+ const mcpConfigRelPath = scope === "project" && configLocations.mcp
319
+ ? configLocations.mcp
320
+ : configLocations.primary;
321
+ const configPath = scope === "project" && projectRoot
322
+ ? path.join(projectRoot, mcpConfigRelPath.replace(/^\.\//, ""))
323
+ : expandPath(configLocations.primary);
324
+ // Read existing config
325
+ const existingConfig = scope === "project"
326
+ ? (pathExists(configPath) ? JSON.parse(await readFile(configPath)) : {})
327
+ : await readConfig();
328
+ const configExisted = pathExists(configPath);
329
+ // Prepare updated config
330
+ const updatedConfig = { ...existingConfig };
331
+ if (!updatedConfig.mcpServers) {
332
+ updatedConfig.mcpServers = {};
333
+ }
334
+ for (const primitive of primitives) {
335
+ try {
336
+ // Read MCP config from source file
337
+ const content = await readFile(primitive.sourcePath);
338
+ const mcpConfig = JSON.parse(content);
339
+ const instanceName = primitive.instanceName ?? mcpConfig.name;
340
+ if (!instanceName) {
341
+ throw new Error(`MCP config missing name; path=${primitive.sourcePath}`);
342
+ }
343
+ // Transform and add to config
344
+ const transformedConfig = transformMcpServerConfig(mcpConfig);
345
+ // Apply resolved env vars if available
346
+ const resolution = envResolutions?.find((r) => r.mcpServer === instanceName);
347
+ if (resolution && resolution.resolved.length > 0) {
348
+ const transformedEnv = installerTransformEnvVars(resolution.resolved);
349
+ transformedConfig.env = transformedEnv;
350
+ }
351
+ // Apply resolved headers if available (for HTTP transport)
352
+ if (resolution && resolution.resolvedHeaders && resolution.resolvedHeaders.length > 0) {
353
+ const transformedHeaders = installerTransformHeaders(resolution.resolvedHeaders);
354
+ if (transformedConfig.url) {
355
+ transformedConfig.headers = transformedHeaders;
356
+ }
357
+ }
358
+ updatedConfig.mcpServers[instanceName] = transformedConfig;
359
+ operations.push({
360
+ operation: "merge",
361
+ source: primitive.sourcePath,
362
+ destination: configPath,
363
+ success: true,
364
+ });
365
+ }
366
+ catch (error) {
367
+ operations.push({
368
+ operation: "merge",
369
+ source: primitive.sourcePath,
370
+ destination: configPath,
371
+ success: false,
372
+ error: error instanceof Error ? error.message : String(error),
373
+ });
374
+ }
375
+ }
376
+ // Write updated config
377
+ if (scope === "project" && projectRoot) {
378
+ const { writeFile, mkdir } = await import("node:fs/promises");
379
+ await mkdir(path.dirname(configPath), { recursive: true });
380
+ await writeFile(configPath, JSON.stringify(updatedConfig, null, 2));
381
+ }
382
+ else {
383
+ await writeConfig(updatedConfig);
384
+ }
385
+ const completedOp = {
386
+ type: "file",
387
+ path: configPath,
388
+ createdNew: !configExisted,
389
+ };
390
+ if (configExisted) {
391
+ completedOp.previousContent = JSON.stringify(existingConfig, null, 2);
392
+ }
393
+ completedOps.push(completedOp);
394
+ return operations;
395
+ }
396
+ async removeMcpServers(instanceNames, scope = "global", projectRoot) {
397
+ if (instanceNames.length === 0)
398
+ return [];
399
+ const configLocations = this.getConfigLocations(scope);
400
+ const mcpConfigRelPath = scope === "project" && configLocations.mcp
401
+ ? configLocations.mcp
402
+ : configLocations.primary;
403
+ const configPath = scope === "project" && projectRoot
404
+ ? path.join(projectRoot, mcpConfigRelPath.replace(/^\.\//, ""))
405
+ : expandPath(configLocations.primary);
406
+ const existingConfig = scope === "project"
407
+ ? (pathExists(configPath) ? JSON.parse(await readFile(configPath)) : {})
408
+ : await readConfig();
409
+ if (!existingConfig.mcpServers) {
410
+ return [];
411
+ }
412
+ const removed = [];
413
+ for (const name of instanceNames) {
414
+ if (existingConfig.mcpServers[name]) {
415
+ delete existingConfig.mcpServers[name];
416
+ removed.push(name);
417
+ }
418
+ }
419
+ if (removed.length > 0) {
420
+ if (scope === "project" && projectRoot) {
421
+ const { writeFile, mkdir } = await import("node:fs/promises");
422
+ await mkdir(path.dirname(configPath), { recursive: true });
423
+ await writeFile(configPath, JSON.stringify(existingConfig, null, 2));
424
+ }
425
+ else {
426
+ await writeConfig(existingConfig);
427
+ }
428
+ }
429
+ return removed;
430
+ }
431
+ async removeHooks(instanceNames, scope = "global", projectRoot) {
432
+ if (instanceNames.length === 0)
433
+ return [];
434
+ if (scope !== "project" || !projectRoot) {
435
+ return [];
436
+ }
437
+ const hooksDir = path.join(projectRoot, GITHUB_COPILOT_PROJECT_PATHS.hooks.replace(/^\.\//, ""));
438
+ const hooksFile = path.join(projectRoot, GITHUB_COPILOT_PROJECT_PATHS.hooksFile.replace(/^\.\//, ""));
439
+ const hooksConfig = await readHooksFile(hooksFile);
440
+ let updated = false;
441
+ const removed = [];
442
+ for (const instanceName of instanceNames) {
443
+ let removedAny = false;
444
+ for (const key of Object.keys(hooksConfig.hooks)) {
445
+ const entries = hooksConfig.hooks[key] ?? [];
446
+ const filtered = entries.filter((entry) => {
447
+ return !entry.bash?.includes(instanceName) && !entry.powershell?.includes(instanceName);
448
+ });
449
+ if (filtered.length !== entries.length) {
450
+ removedAny = true;
451
+ if (filtered.length === 0) {
452
+ delete hooksConfig.hooks[key];
453
+ }
454
+ else {
455
+ hooksConfig.hooks[key] = filtered;
456
+ }
457
+ }
458
+ }
459
+ if (removedAny) {
460
+ removed.push(instanceName);
461
+ updated = true;
462
+ }
463
+ await remove(path.join(hooksDir, instanceName));
464
+ }
465
+ if (updated) {
466
+ await writeHooksFile(hooksFile, hooksConfig);
467
+ }
468
+ return removed;
469
+ }
470
+ /**
471
+ * Install hooks to configuration and files.
472
+ *
473
+ * @param kitName - Name of the kit
474
+ * @param primitives - Hook primitives to install
475
+ * @param completedOps - Completed operations for rollback
476
+ * @param scope - Installation scope
477
+ * @param projectRoot - Project root for project scope
478
+ */
479
+ async installHooks(kitName, primitives, completedOps, scope = "global", projectRoot) {
480
+ const operations = [];
481
+ const installPaths = this.getInstallationPaths(scope);
482
+ if (scope === "project" && !projectRoot) {
483
+ throw new Error("projectRoot is required for project-scoped hooks");
484
+ }
485
+ const hooksDir = scope === "project" && projectRoot
486
+ ? path.join(projectRoot, (installPaths.hooks || ".github/hooks/").replace(/^\.\//, ""))
487
+ : expandPath(installPaths.hooks || GITHUB_COPILOT_PATHS.hooks);
488
+ const hooksFile = scope === "project" && projectRoot
489
+ ? path.join(projectRoot, GITHUB_COPILOT_PROJECT_PATHS.hooksFile.replace(/^\.\//, ""))
490
+ : expandPath(GITHUB_COPILOT_PATHS.hooksFile);
491
+ // Ensure hooks directory exists
492
+ await ensureDirectory(hooksDir);
493
+ const existingHooks = await readHooksFile(hooksFile);
494
+ const hooksExisted = pathExists(hooksFile);
495
+ const updatedHooks = {
496
+ ...existingHooks,
497
+ hooks: { ...existingHooks.hooks },
498
+ };
499
+ for (const primitive of primitives) {
500
+ const program = primitive.hookProgram;
501
+ const binding = primitive.hookBinding;
502
+ if (!program || !binding || !primitive.hookEntryPath || !primitive.hookProgramDir) {
503
+ operations.push({
504
+ operation: "merge",
505
+ source: primitive.sourcePath,
506
+ destination: hooksFile,
507
+ success: false,
508
+ error: "Hook primitive missing program or binding metadata",
509
+ });
510
+ continue;
511
+ }
512
+ const namespacedName = this.getNamespacedName(kitName, primitive.name);
513
+ const instanceName = primitive.instanceName ?? namespacedName;
514
+ const hookDir = path.join(hooksDir, instanceName);
515
+ try {
516
+ // Create hook directory
517
+ await ensureDirectory(hookDir);
518
+ completedOps.push({
519
+ type: "directory",
520
+ path: hookDir,
521
+ createdNew: true,
522
+ });
523
+ const targetPath = path.join(hookDir, path.basename(primitive.hookEntryPath));
524
+ const hookInput = {
525
+ instanceName,
526
+ program,
527
+ binding,
528
+ programDir: primitive.hookProgramDir,
529
+ entryPath: primitive.hookEntryPath,
530
+ targetDir: hookDir,
531
+ targetPath,
532
+ scope,
533
+ ...(projectRoot ? { projectRoot } : {}),
534
+ };
535
+ const hookInstallation = transformHookConfig(hookInput);
536
+ if (hookInstallation.files) {
537
+ for (const file of hookInstallation.files) {
538
+ if (file.type === "copy" && file.source && file.destination) {
539
+ await copyFile(file.source, file.destination);
540
+ completedOps.push({
541
+ type: "file",
542
+ path: file.destination,
543
+ createdNew: true,
544
+ });
545
+ }
546
+ }
547
+ }
548
+ if (hookInstallation.config) {
549
+ for (const [eventKey, entries] of Object.entries(hookInstallation.config)) {
550
+ const existingEntries = updatedHooks.hooks[eventKey] ?? [];
551
+ updatedHooks.hooks[eventKey] = [...existingEntries, ...entries];
552
+ }
553
+ }
554
+ operations.push({
555
+ operation: "merge",
556
+ source: primitive.sourcePath,
557
+ destination: hooksFile,
558
+ success: true,
559
+ });
560
+ }
561
+ catch (error) {
562
+ operations.push({
563
+ operation: "merge",
564
+ source: primitive.sourcePath,
565
+ destination: hooksFile,
566
+ success: false,
567
+ error: error instanceof Error ? error.message : String(error),
568
+ });
569
+ }
570
+ }
571
+ await writeHooksFile(hooksFile, updatedHooks);
572
+ const hooksCompletedOp = {
573
+ type: "file",
574
+ path: hooksFile,
575
+ createdNew: !hooksExisted,
576
+ };
577
+ if (hooksExisted) {
578
+ hooksCompletedOp.previousContent = JSON.stringify(existingHooks, null, 2);
579
+ }
580
+ completedOps.push(hooksCompletedOp);
581
+ return operations;
582
+ }
583
+ }
584
+ /**
585
+ * Create a GitHub Copilot adapter instance.
586
+ */
587
+ export function createGithubCopilotAdapter() {
588
+ return new GithubCopilotAdapter();
589
+ }
590
+ // Re-export types and utilities
591
+ export { detectGithubCopilot, GITHUB_COPILOT_PATHS } from "./detection.js";
592
+ export { githubCopilotToolMapping } from "./tool-mapping.js";
593
+ export { githubCopilotModelMapping } from "./model-mapping.js";
594
+ export * from "./installer.js";
595
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/adapters/github-copilot/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAclC,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EACL,UAAU,EACV,UAAU,EACV,QAAQ,EACR,gBAAgB,EAChB,eAAe,EACf,QAAQ,EACR,MAAM,GACP,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,0BAA0B,EAAE,2BAA2B,EAAE,MAAM,yBAAyB,CAAC;AAElG,OAAO,EAAE,mBAAmB,EAAE,iCAAiC,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAC9G,OAAO,EAAE,wBAAwB,EAAE,MAAM,mBAAmB,CAAC;AAC7D,OAAO,EAAE,yBAAyB,EAAE,MAAM,oBAAoB,CAAC;AAC/D,OAAO,EACL,wBAAwB,EACxB,mBAAmB,EACnB,gBAAgB,IAAI,yBAAyB,EAC7C,gBAAgB,IAAI,yBAAyB,EAC7C,UAAU,EACV,WAAW,EACX,aAAa,EACb,cAAc,GAEf,MAAM,gBAAgB,CAAC;AAExB;;;;;GAKG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAG;IAC1C,UAAU,EAAE,6BAA6B;IACzC,OAAO,EAAE,kBAAkB;IAC3B,OAAO,EAAE,kBAAkB;IAC3B,MAAM,EAAE,iBAAiB;IACzB,MAAM,EAAE,iBAAiB;IACzB,KAAK,EAAE,gBAAgB;IACvB,SAAS,EAAE,0BAA0B;IACrC,mBAAmB,EAAE,iCAAiC;CAC9C,CAAC;AAEX;;;;GAIG;AACH,MAAM,OAAO,oBAAqB,SAAQ,WAAW;IAC1C,IAAI,GAAG,gBAAgB,CAAC;IACxB,WAAW,GAAG,gBAAgB,CAAC;IAC/B,OAAO,GAAG,OAAO,CAAC;IAClB,wBAAwB,GAAG,SAAS,CAAC;IAE9C;;;;OAIG;IACH,kBAAkB;QAChB,OAAO,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;IAC/B,CAAC;IAED;;;;;;;;OAQG;IACH,sBAAsB,CAAC,KAAyB;QAC9C,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACxB,OAAO,CAAC,UAAU,EAAE,QAAQ,EAAE,WAAW,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;QAC7D,CAAC;QACD,+CAA+C;QAC/C,OAAO,CAAC,QAAQ,EAAE,WAAW,EAAE,KAAK,CAAC,CAAC;IACxC,CAAC;IAED;;;;;;;OAOG;IACH,oBAAoB,CAAC,KAAyB;QAC5C,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACxB,OAAO;gBACL,QAAQ,EAAE,4BAA4B,CAAC,OAAO;gBAC9C,MAAM,EAAE,4BAA4B,CAAC,MAAM;gBAC3C,SAAS,EAAE,4BAA4B,CAAC,MAAM;gBAC9C,KAAK,EAAE,4BAA4B,CAAC,KAAK;aAC1C,CAAC;QACJ,CAAC;QACD,sDAAsD;QACtD,MAAM,WAAW,GAAG,iCAAiC,EAAE,CAAC;QACxD,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,GAAG,WAAW,CAAC;QAC/C,KAAK,MAAM,CAAC;QACZ,OAAO;YACL,GAAG,IAAI;YACP,QAAQ,EAAE,EAAE,EAAE,4BAA4B;SAC3C,CAAC;IACJ,CAAC;IAED;;;;OAIG;IACH,kBAAkB,CAAC,KAAyB;QAC1C,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACxB,OAAO;gBACL,OAAO,EAAE,4BAA4B,CAAC,UAAU;gBAChD,GAAG,EAAE,4BAA4B,CAAC,OAAO;gBACzC,MAAM,EAAE,MAAM;aACf,CAAC;QACJ,CAAC;QACD,OAAO;YACL,OAAO,EAAE,oBAAoB,CAAC,UAAU;YACxC,MAAM,EAAE,MAAM;SACf,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,cAAc;QACZ,OAAO,wBAAwB,CAAC;IAClC,CAAC;IAED;;OAEG;IACH,eAAe;QACb,OAAO,yBAAyB,CAAC;IACnC,CAAC;IACD;;OAEG;IACH,KAAK,CAAC,MAAM;QACV,OAAO,mBAAmB,EAAE,CAAC;IAC/B,CAAC;IAED;;;;;;;;OAQG;IACH,gBAAgB,CAAC,OAAe,EAAE,SAA0B;QAC1D,gDAAgD;QAChD,MAAM,IAAI,GAAG,kBAAkB,CAAC,OAAO,CAAC,CAAC;QACzC,OAAO;YACL,OAAO,EAAE,IAAI;YACb,MAAM,EAAE,UAAU;SACnB,CAAC;IACJ,CAAC;IAED;;;;OAIG;IACH,cAAc,CAAC,SAAiB,EAAE,SAAwB;QACxD,OAAO;YACL,OAAO,EAAE,EAAE;YACX,MAAM,EAAE,UAAU;SACnB,CAAC;IACJ,CAAC;IAED;;OAEG;IACgB,sBAAsB,CACvC,WAAoC;QAEpC,MAAM,UAAU,GAAG,2BAA2B,CAAC,WAAW,CAAC,CAAC;QAC5D,OAAO,0BAA0B,CAC/B,UAAU,EACV,IAAI,GAAG,CAAC,CAAC,MAAM,EAAE,aAAa,EAAE,eAAe,EAAE,SAAS,CAAC,CAAC,CAC7D,CAAC;IACJ,CAAC;IAED;;OAEG;IACgB,yBAAyB,CAC1C,WAAoC;QAEpC,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,GAAG,WAAW,CAAC;QAC/C,KAAK,MAAM,CAAC;QACZ,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;OAIG;IACH,iBAAiB,CAAC,OAAe,EAAE,SAA2B;QAC5D,OAAO;YACL,OAAO;YACP,MAAM,EAAE,UAAU;SACnB,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,kBAAkB,CAAC,MAAuB;QACxC,OAAO,wBAAwB,CAAC,MAAM,CAAuC,CAAC;IAChF,CAAC;IAED;;;;OAIG;IACH,aAAa,CAAC,IAA2B;QACvC,OAAO,mBAAmB,CAAC,IAAI,CAAC,CAAC;IACnC,CAAC;IAED;;;;;OAKG;IACH,gBAAgB,CAAC,QAA0B;QACzC,OAAO,yBAAyB,CAAC,QAAQ,CAAC,CAAC;IAC7C,CAAC;IAED;;;;;OAKG;IACH,gBAAgB,CAAC,QAA0B;QACzC,OAAO,yBAAyB,CAAC,QAAQ,CAAC,CAAC;IAC7C,CAAC;IAED;;;;;;;;;;;;OAYG;IACgB,KAAK,CAAC,gBAAgB,CACvC,OAAe,EACf,SAA4B,EAC5B,kBAAuC,EACvC,KAAwB,EACxB,MAAe,EACf,YAAkC,EAClC,QAA2B,QAAQ,EACnC,WAAoB;QAMpB,MAAM,cAAc,GAAG,IAAI,CAAC,iBAAiB,CAAC,OAAO,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC;QACvE,MAAM,UAAU,GAA0B,EAAE,CAAC;QAE7C,wCAAwC;QACxC,MAAM,WAAW,GAAG,CAAC,CAAS,EAAU,EAAE;YACxC,IAAI,KAAK,KAAK,SAAS,IAAI,WAAW,EAAE,CAAC;gBACvC,OAAO,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;YACxD,CAAC;YACD,OAAO,UAAU,CAAC,CAAC,CAAC,CAAC;QACvB,CAAC,CAAC;QAEF,yDAAyD;QACzD,IAAI,SAAS,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;YAClC,+CAA+C;YAC/C,IAAI,KAAK,KAAK,SAAS,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;gBAC3C,MAAM,IAAI,KAAK,CAAC,wDAAwD,CAAC,CAAC;YAC5E,CAAC;YAED,uDAAuD;YACvD,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAC3B,WAAW,CAAC,KAAK,CAAC,QAAQ,CAAC,EAC3B,GAAG,cAAc,YAAY,CAC9B,CAAC;YACF,MAAM,OAAO,GAAG,UAAU,CAAC,WAAW,CAAC,CAAC;YAExC,IAAI,CAAC,MAAM,EAAE,CAAC;gBACZ,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;gBACrD,MAAM,WAAW,GAAG,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,SAAS,CAAC,QAA2B,CAAC,CAAC;gBAC1F,MAAM,EAAE,OAAO,EAAE,gBAAgB,EAAE,GAAG,IAAI,CAAC,oBAAoB,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;gBAErF,MAAM,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC;gBACjD,MAAM,gBAAgB,CAAC,WAAW,EAAE,gBAAgB,CAAC,CAAC;gBACtD,YAAY,CAAC,IAAI,CAAC;oBAChB,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,WAAW;oBACjB,UAAU,EAAE,CAAC,OAAO;iBACrB,CAAC,CAAC;YACL,CAAC;YAED,UAAU,CAAC,IAAI,CAAC;gBACd,SAAS,EAAE,WAAW;gBACtB,MAAM,EAAE,SAAS,CAAC,UAAU;gBAC5B,WAAW;gBACX,OAAO,EAAE,IAAI;aACd,CAAC,CAAC;YAEH,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC;QAC9C,CAAC;QAED,wDAAwD;QACxD,OAAO,KAAK,CAAC,gBAAgB,CAC3B,OAAO,EACP,SAAS,EACT,kBAAkB,EAClB,KAAK,EACL,MAAM,EACN,YAAY,EACZ,KAAK,EACL,WAAW,CACZ,CAAC;IACJ,CAAC;IAED;;;;;;;;;OASG;IACgB,KAAK,CAAC,mBAAmB,CAC1C,GAAgB,EAChB,kBAAuC,EACvC,MAAe,EACf,YAAkC,EAClC,QAA2B,QAAQ,EACnC,WAAoB,EACpB,cAAyC;QAEzC,MAAM,UAAU,GAA0B,EAAE,CAAC;QAE7C,iCAAiC;QACjC,MAAM,aAAa,GAAG,kBAAkB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,KAAK,CAAC,CAAC;QACzE,MAAM,cAAc,GAAG,kBAAkB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC;QAE5E,qBAAqB;QACrB,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YACxC,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAC5C,GAAG,CAAC,IAAI,EACR,aAAa,EACb,YAAY,EACZ,KAAK,EACL,WAAW,EACX,cAAc,CACf,CAAC;YACF,UAAU,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,CAAC;QAChC,CAAC;QAED,eAAe;QACf,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YACzC,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;gBACxB,MAAM,IAAI,KAAK,CAAC,qDAAqD,CAAC,CAAC;YACzE,CAAC;YACD,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,EAAE,cAAc,EAAE,YAAY,EAAE,KAAK,EAAE,WAAW,CAAC,CAAC;YACvG,UAAU,CAAC,IAAI,CAAC,GAAG,UAAU,CAAC,CAAC;QACjC,CAAC;QAED,OAAO,EAAE,UAAU,EAAE,CAAC;IACxB,CAAC;IAED;;;;;;;;OAQG;IACK,KAAK,CAAC,iBAAiB,CAC7B,QAAgB,EAChB,UAA+B,EAC/B,YAAkC,EAClC,QAA2B,QAAQ,EACnC,WAAoB,EACpB,cAAyC;QAEzC,MAAM,UAAU,GAA0B,EAAE,CAAC;QAC7C,MAAM,eAAe,GAAG,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;QACvD,0DAA0D;QAC1D,MAAM,gBAAgB,GAAG,KAAK,KAAK,SAAS,IAAI,eAAe,CAAC,GAAG;YACjE,CAAC,CAAC,eAAe,CAAC,GAAG;YACrB,CAAC,CAAC,eAAe,CAAC,OAAO,CAAC;QAC5B,MAAM,UAAU,GAAG,KAAK,KAAK,SAAS,IAAI,WAAW;YACnD,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,gBAAgB,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;YAC/D,CAAC,CAAC,UAAU,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;QAExC,uBAAuB;QACvB,MAAM,cAAc,GAAG,KAAK,KAAK,SAAS;YACxC,CAAC,CAAC,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YACxE,CAAC,CAAC,MAAM,UAAU,EAAE,CAAC;QACvB,MAAM,aAAa,GAAG,UAAU,CAAC,UAAU,CAAC,CAAC;QAE7C,yBAAyB;QACzB,MAAM,aAAa,GAAG,EAAE,GAAG,cAAc,EAAE,CAAC;QAC5C,IAAI,CAAC,aAAa,CAAC,UAAU,EAAE,CAAC;YAC9B,aAAa,CAAC,UAAU,GAAG,EAAE,CAAC;QAChC,CAAC;QAED,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;YACnC,IAAI,CAAC;gBACH,mCAAmC;gBACnC,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;gBACrD,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAoB,CAAC;gBACzD,MAAM,YAAY,GAAG,SAAS,CAAC,YAAY,IAAI,SAAS,CAAC,IAAI,CAAC;gBAC9D,IAAI,CAAC,YAAY,EAAE,CAAC;oBAClB,MAAM,IAAI,KAAK,CAAC,iCAAiC,SAAS,CAAC,UAAU,EAAE,CAAC,CAAC;gBAC3E,CAAC;gBAED,8BAA8B;gBAC9B,MAAM,iBAAiB,GAAG,wBAAwB,CAAC,SAAS,CAAC,CAAC;gBAE9D,uCAAuC;gBACvC,MAAM,UAAU,GAAG,cAAc,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,KAAK,YAAY,CAAC,CAAC;gBAC7E,IAAI,UAAU,IAAI,UAAU,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBACjD,MAAM,cAAc,GAAG,yBAAyB,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;oBACtE,iBAAiB,CAAC,GAAG,GAAG,cAAwC,CAAC;gBACnE,CAAC;gBAED,2DAA2D;gBAC3D,IAAI,UAAU,IAAI,UAAU,CAAC,eAAe,IAAI,UAAU,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBACtF,MAAM,kBAAkB,GAAG,yBAAyB,CAAC,UAAU,CAAC,eAAe,CAAC,CAAC;oBACjF,IAAI,iBAAiB,CAAC,GAAG,EAAE,CAAC;wBAC1B,iBAAiB,CAAC,OAAO,GAAG,kBAA4C,CAAC;oBAC3E,CAAC;gBACH,CAAC;gBAED,aAAa,CAAC,UAAU,CAAC,YAAY,CAAC,GAAG,iBAAiB,CAAC;gBAE3D,UAAU,CAAC,IAAI,CAAC;oBACd,SAAS,EAAE,OAAO;oBAClB,MAAM,EAAE,SAAS,CAAC,UAAU;oBAC5B,WAAW,EAAE,UAAU;oBACvB,OAAO,EAAE,IAAI;iBACd,CAAC,CAAC;YACL,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,UAAU,CAAC,IAAI,CAAC;oBACd,SAAS,EAAE,OAAO;oBAClB,MAAM,EAAE,SAAS,CAAC,UAAU;oBAC5B,WAAW,EAAE,UAAU;oBACvB,OAAO,EAAE,KAAK;oBACd,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;iBAC9D,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAED,uBAAuB;QACvB,IAAI,KAAK,KAAK,SAAS,IAAI,WAAW,EAAE,CAAC;YACvC,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,MAAM,MAAM,CAAC,kBAAkB,CAAC,CAAC;YAC9D,MAAM,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YAC3D,MAAM,SAAS,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QACtE,CAAC;aAAM,CAAC;YACN,MAAM,WAAW,CAAC,aAAa,CAAC,CAAC;QACnC,CAAC;QACD,MAAM,WAAW,GAAuB;YACtC,IAAI,EAAE,MAAM;YACZ,IAAI,EAAE,UAAU;YAChB,UAAU,EAAE,CAAC,aAAa;SAC3B,CAAC;QACF,IAAI,aAAa,EAAE,CAAC;YAClB,WAAW,CAAC,eAAe,GAAG,IAAI,CAAC,SAAS,CAAC,cAAc,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;QACxE,CAAC;QACD,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAE/B,OAAO,UAAU,CAAC;IACpB,CAAC;IAED,KAAK,CAAC,gBAAgB,CACpB,aAAuB,EACvB,QAA2B,QAAQ,EACnC,WAAoB;QAEpB,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,EAAE,CAAC;QAE1C,MAAM,eAAe,GAAG,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;QACvD,MAAM,gBAAgB,GAAG,KAAK,KAAK,SAAS,IAAI,eAAe,CAAC,GAAG;YACjE,CAAC,CAAC,eAAe,CAAC,GAAG;YACrB,CAAC,CAAC,eAAe,CAAC,OAAO,CAAC;QAC5B,MAAM,UAAU,GAAG,KAAK,KAAK,SAAS,IAAI,WAAW;YACnD,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,gBAAgB,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;YAC/D,CAAC,CAAC,UAAU,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;QAExC,MAAM,cAAc,GAAG,KAAK,KAAK,SAAS;YACxC,CAAC,CAAC,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YACxE,CAAC,CAAC,MAAM,UAAU,EAAE,CAAC;QAEvB,IAAI,CAAC,cAAc,CAAC,UAAU,EAAE,CAAC;YAC/B,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,MAAM,OAAO,GAAa,EAAE,CAAC;QAC7B,KAAK,MAAM,IAAI,IAAI,aAAa,EAAE,CAAC;YACjC,IAAI,cAAc,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;gBACpC,OAAO,cAAc,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;gBACvC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACrB,CAAC;QACH,CAAC;QAED,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACvB,IAAI,KAAK,KAAK,SAAS,IAAI,WAAW,EAAE,CAAC;gBACvC,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,MAAM,MAAM,CAAC,kBAAkB,CAAC,CAAC;gBAC9D,MAAM,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;gBAC3D,MAAM,SAAS,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,cAAc,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;YACvE,CAAC;iBAAM,CAAC;gBACN,MAAM,WAAW,CAAC,cAAc,CAAC,CAAC;YACpC,CAAC;QACH,CAAC;QAED,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,KAAK,CAAC,WAAW,CACf,aAAuB,EACvB,QAA2B,QAAQ,EACnC,WAAoB;QAEpB,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,EAAE,CAAC;QAC1C,IAAI,KAAK,KAAK,SAAS,IAAI,CAAC,WAAW,EAAE,CAAC;YACxC,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,4BAA4B,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;QACjG,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,4BAA4B,CAAC,SAAS,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;QAEtG,MAAM,WAAW,GAAG,MAAM,aAAa,CAAC,SAAS,CAAC,CAAC;QACnD,IAAI,OAAO,GAAG,KAAK,CAAC;QACpB,MAAM,OAAO,GAAa,EAAE,CAAC;QAE7B,KAAK,MAAM,YAAY,IAAI,aAAa,EAAE,CAAC;YACzC,IAAI,UAAU,GAAG,KAAK,CAAC;YACvB,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE,CAAC;gBACjD,MAAM,OAAO,GAAG,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;gBAC7C,MAAM,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE;oBACxC,OAAO,CAAC,KAAK,CAAC,IAAI,EAAE,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,QAAQ,CAAC,YAAY,CAAC,CAAC;gBAC1F,CAAC,CAAC,CAAC;gBACH,IAAI,QAAQ,CAAC,MAAM,KAAK,OAAO,CAAC,MAAM,EAAE,CAAC;oBACvC,UAAU,GAAG,IAAI,CAAC;oBAClB,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;wBAC1B,OAAO,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;oBAChC,CAAC;yBAAM,CAAC;wBACN,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC;oBACpC,CAAC;gBACH,CAAC;YACH,CAAC;YAED,IAAI,UAAU,EAAE,CAAC;gBACf,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;gBAC3B,OAAO,GAAG,IAAI,CAAC;YACjB,CAAC;YAED,MAAM,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC,CAAC;QAClD,CAAC;QAED,IAAI,OAAO,EAAE,CAAC;YACZ,MAAM,cAAc,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;QAC/C,CAAC;QAED,OAAO,OAAO,CAAC;IACjB,CAAC;IAED;;;;;;;;OAQG;IACK,KAAK,CAAC,YAAY,CACxB,OAAe,EACf,UAA+B,EAC/B,YAAkC,EAClC,QAA2B,QAAQ,EACnC,WAAoB;QAEpB,MAAM,UAAU,GAA0B,EAAE,CAAC;QAC7C,MAAM,YAAY,GAAG,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC;QAEtD,IAAI,KAAK,KAAK,SAAS,IAAI,CAAC,WAAW,EAAE,CAAC;YACxC,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAC;QACtE,CAAC;QAED,MAAM,QAAQ,GAAG,KAAK,KAAK,SAAS,IAAI,WAAW;YACjD,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,YAAY,CAAC,KAAK,IAAI,gBAAgB,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;YACvF,CAAC,CAAC,UAAU,CAAC,YAAY,CAAC,KAAK,IAAI,oBAAoB,CAAC,KAAK,CAAC,CAAC;QACjE,MAAM,SAAS,GAAG,KAAK,KAAK,SAAS,IAAI,WAAW;YAClD,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,4BAA4B,CAAC,SAAS,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;YACrF,CAAC,CAAC,UAAU,CAAC,oBAAoB,CAAC,SAAS,CAAC,CAAC;QAE/C,gCAAgC;QAChC,MAAM,eAAe,CAAC,QAAQ,CAAC,CAAC;QAEhC,MAAM,aAAa,GAAG,MAAM,aAAa,CAAC,SAAS,CAAC,CAAC;QACrD,MAAM,YAAY,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC;QAC3C,MAAM,YAAY,GAAG;YACnB,GAAG,aAAa;YAChB,KAAK,EAAE,EAAE,GAAG,aAAa,CAAC,KAAK,EAAE;SAClC,CAAC;QAEF,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;YACnC,MAAM,OAAO,GAAG,SAAS,CAAC,WAAW,CAAC;YACtC,MAAM,OAAO,GAAG,SAAS,CAAC,WAAW,CAAC;YACtC,IAAI,CAAC,OAAO,IAAI,CAAC,OAAO,IAAI,CAAC,SAAS,CAAC,aAAa,IAAI,CAAC,SAAS,CAAC,cAAc,EAAE,CAAC;gBAClF,UAAU,CAAC,IAAI,CAAC;oBACd,SAAS,EAAE,OAAO;oBAClB,MAAM,EAAE,SAAS,CAAC,UAAU;oBAC5B,WAAW,EAAE,SAAS;oBACtB,OAAO,EAAE,KAAK;oBACd,KAAK,EAAE,oDAAoD;iBAC5D,CAAC,CAAC;gBACH,SAAS;YACX,CAAC;YAED,MAAM,cAAc,GAAG,IAAI,CAAC,iBAAiB,CAAC,OAAO,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC;YACvE,MAAM,YAAY,GAAG,SAAS,CAAC,YAAY,IAAI,cAAc,CAAC;YAC9D,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;YAElD,IAAI,CAAC;gBACH,wBAAwB;gBACxB,MAAM,eAAe,CAAC,OAAO,CAAC,CAAC;gBAC/B,YAAY,CAAC,IAAI,CAAC;oBAChB,IAAI,EAAE,WAAW;oBACjB,IAAI,EAAE,OAAO;oBACb,UAAU,EAAE,IAAI;iBACjB,CAAC,CAAC;gBAEH,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC,CAAC;gBAC9E,MAAM,SAAS,GAA0B;oBACvC,YAAY;oBACZ,OAAO;oBACP,OAAO;oBACP,UAAU,EAAE,SAAS,CAAC,cAAc;oBACpC,SAAS,EAAE,SAAS,CAAC,aAAa;oBAClC,SAAS,EAAE,OAAO;oBAClB,UAAU;oBACV,KAAK;oBACL,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;iBACxC,CAAC;gBACF,MAAM,gBAAgB,GAAG,mBAAmB,CAAC,SAAS,CAAC,CAAC;gBAExD,IAAI,gBAAgB,CAAC,KAAK,EAAE,CAAC;oBAC3B,KAAK,MAAM,IAAI,IAAI,gBAAgB,CAAC,KAAK,EAAE,CAAC;wBAC1C,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;4BAC5D,MAAM,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;4BAC9C,YAAY,CAAC,IAAI,CAAC;gCAChB,IAAI,EAAE,MAAM;gCACZ,IAAI,EAAE,IAAI,CAAC,WAAW;gCACtB,UAAU,EAAE,IAAI;6BACjB,CAAC,CAAC;wBACL,CAAC;oBACH,CAAC;gBACH,CAAC;gBAED,IAAI,gBAAgB,CAAC,MAAM,EAAE,CAAC;oBAC5B,KAAK,MAAM,CAAC,QAAQ,EAAE,OAAO,CAAC,IAAI,MAAM,CAAC,OAAO,CAC9C,gBAAgB,CAAC,MAAkD,CACpE,EAAE,CAAC;wBACF,MAAM,eAAe,GAAG,YAAY,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;wBAC3D,YAAY,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,eAAe,EAAE,GAAG,OAAO,CAAC,CAAC;oBAClE,CAAC;gBACH,CAAC;gBAED,UAAU,CAAC,IAAI,CAAC;oBACd,SAAS,EAAE,OAAO;oBAClB,MAAM,EAAE,SAAS,CAAC,UAAU;oBAC5B,WAAW,EAAE,SAAS;oBACtB,OAAO,EAAE,IAAI;iBACd,CAAC,CAAC;YACL,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,UAAU,CAAC,IAAI,CAAC;oBACd,SAAS,EAAE,OAAO;oBAClB,MAAM,EAAE,SAAS,CAAC,UAAU;oBAC5B,WAAW,EAAE,SAAS;oBACtB,OAAO,EAAE,KAAK;oBACd,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;iBAC9D,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAED,MAAM,cAAc,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;QAC9C,MAAM,gBAAgB,GAAuB;YAC3C,IAAI,EAAE,MAAM;YACZ,IAAI,EAAE,SAAS;YACf,UAAU,EAAE,CAAC,YAAY;SAC1B,CAAC;QACF,IAAI,YAAY,EAAE,CAAC;YACjB,gBAAgB,CAAC,eAAe,GAAG,IAAI,CAAC,SAAS,CAAC,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;QAC5E,CAAC;QACD,YAAY,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;QAEpC,OAAO,UAAU,CAAC;IACpB,CAAC;CACF;AAED;;GAEG;AACH,MAAM,UAAU,0BAA0B;IACxC,OAAO,IAAI,oBAAoB,EAAE,CAAC;AACpC,CAAC;AAED,gCAAgC;AAChC,OAAO,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAC3E,OAAO,EAAE,wBAAwB,EAAE,MAAM,mBAAmB,CAAC;AAC7D,OAAO,EAAE,yBAAyB,EAAE,MAAM,oBAAoB,CAAC;AAC/D,cAAc,gBAAgB,CAAC"}