@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,598 @@
1
+ /**
2
+ * Gemini CLI adapter implementation.
3
+ *
4
+ * Gemini CLI is Google's command-line AI assistant with support for:
5
+ * - Commands: ~/.gemini/commands/{kit}.{name}.toml (Markdown → TOML)
6
+ * - Skills: ~/.gemini/skills/{kit}.{name}/ (experimental)
7
+ * - Subagents: ~/.gemini/agents/{kit}.{name}.json (Markdown → JSON)
8
+ * - MCP Servers: ~/.gemini/settings.json mcpServers key
9
+ * - Hooks: ~/.gemini/settings.json + ~/.gemini/hooks/{kit}.{name}/
10
+ */
11
+ import * as path from "node:path";
12
+ import { BaseAdapter } from "../base-adapter.js";
13
+ import { expandPath, pathExists, readFile, writeTransformed, ensureDirectory, copyFile, remove, } from "../file-operations.js";
14
+ import { filterFrontmatterAllowlist, toKebabCaseSkillFrontmatter } from "../skill-frontmatter.js";
15
+ import { detectGeminiCli, getGeminiCliInstallationPaths, GEMINI_CLI_PATHS } from "./detection.js";
16
+ import { geminiCliToolMapping } from "./tool-mapping.js";
17
+ import { geminiCliModelMapping } from "./model-mapping.js";
18
+ import { transformMcpServerConfig, transformCommandToToml, transformSubagentToJson, transformHookConfig, mergeHookConfigs, transformEnvVars as installerTransformEnvVars, transformHeaders as installerTransformHeaders, readSettingsConfig, writeSettingsConfig, } from "./installer.js";
19
+ /**
20
+ * Project-scope paths for Gemini CLI.
21
+ */
22
+ export const GEMINI_CLI_PROJECT_PATHS = {
23
+ settingsJson: ".gemini/settings.json",
24
+ commands: ".gemini/commands/",
25
+ skills: ".gemini/skills/",
26
+ agents: ".gemini/agents/",
27
+ hooks: ".gemini/hooks/",
28
+ };
29
+ /**
30
+ * Gemini CLI adapter.
31
+ *
32
+ * Provides full support for all primitive types with format transformations.
33
+ */
34
+ export class GeminiCliAdapter extends BaseAdapter {
35
+ name = "gemini-cli";
36
+ displayName = "Gemini CLI";
37
+ version = "1.0.0";
38
+ supportedHarnessVersions = ">=1.0.0";
39
+ /**
40
+ * Get supported installation scopes.
41
+ *
42
+ * Gemini CLI supports both global and project scopes.
43
+ */
44
+ getSupportedScopes() {
45
+ return ["global", "project"];
46
+ }
47
+ /**
48
+ * Get supported primitive types at the given scope.
49
+ *
50
+ * Gemini CLI supports all primitive types at both scopes.
51
+ *
52
+ * @param scope - Installation scope (defaults to "global")
53
+ */
54
+ getSupportedPrimitives(_scope) {
55
+ return ["commands", "skills", "subagents", "mcp", "hooks"];
56
+ }
57
+ /**
58
+ * Get installation paths for file-based primitives.
59
+ *
60
+ * @param scope - Installation scope (defaults to "global")
61
+ */
62
+ getInstallationPaths(scope) {
63
+ if (scope === "project") {
64
+ return {
65
+ commands: GEMINI_CLI_PROJECT_PATHS.commands,
66
+ skills: GEMINI_CLI_PROJECT_PATHS.skills,
67
+ subagents: GEMINI_CLI_PROJECT_PATHS.agents,
68
+ hooks: GEMINI_CLI_PROJECT_PATHS.hooks,
69
+ };
70
+ }
71
+ return getGeminiCliInstallationPaths();
72
+ }
73
+ /**
74
+ * Get configuration file locations.
75
+ *
76
+ * @param scope - Installation scope (defaults to "global")
77
+ */
78
+ getConfigLocations(scope) {
79
+ if (scope === "project") {
80
+ return {
81
+ primary: GEMINI_CLI_PROJECT_PATHS.settingsJson,
82
+ format: "json",
83
+ };
84
+ }
85
+ return {
86
+ primary: GEMINI_CLI_PATHS.settingsJson,
87
+ format: "json",
88
+ };
89
+ }
90
+ /**
91
+ * Get the tool mapping for Gemini CLI.
92
+ */
93
+ getToolMapping() {
94
+ return geminiCliToolMapping;
95
+ }
96
+ /**
97
+ * Get the model mapping for Gemini CLI.
98
+ */
99
+ getModelMapping() {
100
+ return geminiCliModelMapping;
101
+ }
102
+ /**
103
+ * Detect Gemini CLI installation.
104
+ */
105
+ async detect() {
106
+ return detectGeminiCli();
107
+ }
108
+ /**
109
+ * Transform a command for Gemini CLI.
110
+ *
111
+ * Gemini CLI uses TOML format for commands, so Markdown is transformed.
112
+ */
113
+ transformCommand(content, metadata) {
114
+ const tomlContent = transformCommandToToml(content, metadata);
115
+ return {
116
+ content: tomlContent,
117
+ format: "toml",
118
+ };
119
+ }
120
+ /**
121
+ * Transform a skill for Gemini CLI.
122
+ *
123
+ * Gemini CLI uses native Markdown format for skills (experimental).
124
+ */
125
+ transformSkill(_skillDir, _metadata) {
126
+ return {
127
+ content: "",
128
+ format: "markdown",
129
+ };
130
+ }
131
+ /**
132
+ * Gemini CLI skills only document name/description; keep allowed-tools for compatibility.
133
+ */
134
+ filterSkillFrontmatter(frontmatter) {
135
+ const normalized = toKebabCaseSkillFrontmatter(frontmatter);
136
+ return filterFrontmatterAllowlist(normalized, new Set(["name", "description", "allowed-tools"]));
137
+ }
138
+ /**
139
+ * Gemini CLI subagents do not support hooks in frontmatter.
140
+ */
141
+ filterSubagentFrontmatter(frontmatter) {
142
+ const { hooks: _hooks, ...rest } = frontmatter;
143
+ void _hooks;
144
+ return rest;
145
+ }
146
+ /**
147
+ * Transform a subagent for Gemini CLI.
148
+ *
149
+ * Gemini CLI uses JSON config format for subagents (experimental).
150
+ */
151
+ transformSubagent(content, metadata) {
152
+ const jsonContent = transformSubagentToJson(content, metadata);
153
+ return {
154
+ content: jsonContent,
155
+ format: "json",
156
+ };
157
+ }
158
+ /**
159
+ * Transform an MCP server configuration for Gemini CLI.
160
+ */
161
+ transformMcpServer(config) {
162
+ return transformMcpServerConfig(config);
163
+ }
164
+ /**
165
+ * Transform a hook for Gemini CLI.
166
+ */
167
+ transformHook(hook) {
168
+ return transformHookConfig(hook);
169
+ }
170
+ /**
171
+ * Transform resolved environment variables to Gemini CLI format.
172
+ *
173
+ * Gemini CLI uses ${VAR} syntax for passthrough, direct values otherwise.
174
+ * See PRD-001 FR-20.5.
175
+ */
176
+ transformEnvVars(resolved) {
177
+ return installerTransformEnvVars(resolved);
178
+ }
179
+ /**
180
+ * Transform resolved headers to Gemini CLI format.
181
+ *
182
+ * Gemini CLI uses ${VAR} syntax for passthrough, direct values otherwise.
183
+ * See PRD-001 FR-21.4.
184
+ */
185
+ transformHeaders(resolved) {
186
+ return installerTransformHeaders(resolved);
187
+ }
188
+ /**
189
+ * Override installPrimitive to handle format transformations.
190
+ *
191
+ * @param kitName - Name of the kit
192
+ * @param primitive - Resolved primitive to install
193
+ * @param paths - Installation paths for the scope
194
+ * @param dryRun - If true, don't actually write files
195
+ * @param completedOps - Completed operations for rollback
196
+ * @param scope - Installation scope
197
+ * @param projectRoot - Project root for project scope
198
+ */
199
+ async installPrimitive(kitName, primitive, resolvedPrimitives, paths, dryRun, completedOps, scope = "global", projectRoot) {
200
+ const namespacedName = this.getNamespacedName(kitName, primitive.name);
201
+ const operations = [];
202
+ // Helper to resolve path based on scope
203
+ const resolvePath = (p) => {
204
+ if (scope === "project" && projectRoot) {
205
+ return path.join(projectRoot, p.replace(/^\.\//, ""));
206
+ }
207
+ return expandPath(p);
208
+ };
209
+ let destination;
210
+ let existed = false;
211
+ switch (primitive.type) {
212
+ case "commands": {
213
+ // Commands use TOML format in Gemini CLI
214
+ destination = path.join(resolvePath(paths.commands), `${namespacedName}.toml`);
215
+ existed = pathExists(destination);
216
+ if (!dryRun) {
217
+ const content = await readFile(primitive.sourcePath);
218
+ const transformed = this.transformCommand(content, primitive.metadata);
219
+ const { content: processedContent } = this.processToolTemplates(transformed.content);
220
+ await writeTransformed(destination, processedContent);
221
+ completedOps.push({
222
+ type: "file",
223
+ path: destination,
224
+ createdNew: !existed,
225
+ });
226
+ }
227
+ operations.push({
228
+ operation: "transform",
229
+ source: primitive.sourcePath,
230
+ destination,
231
+ success: true,
232
+ });
233
+ break;
234
+ }
235
+ case "subagents": {
236
+ if (!paths.subagents) {
237
+ throw new Error("gemini-cli does not support subagents in this configuration");
238
+ }
239
+ // Subagents use JSON format in Gemini CLI
240
+ destination = path.join(resolvePath(paths.subagents), `${namespacedName}.json`);
241
+ existed = pathExists(destination);
242
+ if (!dryRun) {
243
+ const content = await readFile(primitive.sourcePath);
244
+ const transformed = this.transformSubagent(content, primitive.metadata);
245
+ const { content: processedContent } = this.processToolTemplates(transformed.content);
246
+ await writeTransformed(destination, processedContent);
247
+ completedOps.push({
248
+ type: "file",
249
+ path: destination,
250
+ createdNew: !existed,
251
+ });
252
+ }
253
+ operations.push({
254
+ operation: "transform",
255
+ source: primitive.sourcePath,
256
+ destination,
257
+ success: true,
258
+ });
259
+ break;
260
+ }
261
+ default:
262
+ // Use base implementation for skills, hooks, mcp
263
+ return super.installPrimitive(kitName, primitive, resolvedPrimitives, paths, dryRun, completedOps, scope, projectRoot);
264
+ }
265
+ return { destination, existed, operations };
266
+ }
267
+ /**
268
+ * Update harness configuration for MCP servers and hooks.
269
+ *
270
+ * @param kit - Kit manifest
271
+ * @param resolvedPrimitives - Resolved primitives to install
272
+ * @param dryRun - If true, don't actually write files
273
+ * @param completedOps - Array to track completed operations for rollback
274
+ * @param scope - Installation scope
275
+ * @param projectRoot - Project root for project scope
276
+ */
277
+ async updateConfiguration(kit, resolvedPrimitives, dryRun, completedOps, scope = "global", projectRoot, envResolutions) {
278
+ const operations = [];
279
+ // Filter MCP and hook primitives
280
+ const mcpPrimitives = resolvedPrimitives.filter((p) => p.type === "mcp");
281
+ const hookPrimitives = resolvedPrimitives.filter((p) => p.type === "hooks");
282
+ // Handle MCP servers
283
+ if (mcpPrimitives.length > 0 && !dryRun) {
284
+ const mcpResult = await this.installMcpServers(kit.name, mcpPrimitives, completedOps, scope, projectRoot, envResolutions);
285
+ operations.push(...mcpResult);
286
+ }
287
+ // Handle hooks
288
+ if (hookPrimitives.length > 0 && !dryRun) {
289
+ const hookResult = await this.installHooks(kit.name, hookPrimitives, completedOps, scope, projectRoot);
290
+ operations.push(...hookResult);
291
+ }
292
+ return { operations };
293
+ }
294
+ /**
295
+ * Install MCP servers to configuration.
296
+ *
297
+ * @param kitName - Name of the kit
298
+ * @param primitives - MCP primitives to install
299
+ * @param completedOps - Completed operations for rollback
300
+ * @param scope - Installation scope
301
+ * @param projectRoot - Project root for project scope
302
+ */
303
+ async installMcpServers(_kitName, primitives, completedOps, scope = "global", projectRoot, envResolutions) {
304
+ const operations = [];
305
+ const configLocations = this.getConfigLocations(scope);
306
+ const settingsPath = scope === "project" && projectRoot
307
+ ? path.join(projectRoot, configLocations.primary.replace(/^\.\//, ""))
308
+ : expandPath(configLocations.primary);
309
+ // Read existing config
310
+ const existingSettings = scope === "project"
311
+ ? (pathExists(settingsPath) ? JSON.parse(await readFile(settingsPath)) : {})
312
+ : await readSettingsConfig();
313
+ const configExisted = pathExists(settingsPath);
314
+ // Prepare updated config
315
+ const updatedSettings = { ...existingSettings };
316
+ if (!updatedSettings.mcpServers) {
317
+ updatedSettings.mcpServers = {};
318
+ }
319
+ for (const primitive of primitives) {
320
+ try {
321
+ // Read MCP config from source file
322
+ const content = await readFile(primitive.sourcePath);
323
+ const mcpConfig = JSON.parse(content);
324
+ const instanceName = primitive.instanceName ?? mcpConfig.name;
325
+ if (!instanceName) {
326
+ throw new Error(`MCP config missing name; path=${primitive.sourcePath}`);
327
+ }
328
+ // Transform and add to config
329
+ const transformedConfig = transformMcpServerConfig(mcpConfig);
330
+ // Apply resolved env vars if available
331
+ const resolution = envResolutions?.find((r) => r.mcpServer === instanceName);
332
+ if (resolution && resolution.resolved.length > 0) {
333
+ const transformedEnv = installerTransformEnvVars(resolution.resolved);
334
+ transformedConfig.env = transformedEnv;
335
+ }
336
+ // Apply resolved headers if available (for HTTP transport)
337
+ if (resolution && resolution.resolvedHeaders && resolution.resolvedHeaders.length > 0) {
338
+ const transformedHeaders = installerTransformHeaders(resolution.resolvedHeaders);
339
+ if (transformedConfig.url) {
340
+ transformedConfig.headers = transformedHeaders;
341
+ }
342
+ }
343
+ updatedSettings.mcpServers[instanceName] = transformedConfig;
344
+ operations.push({
345
+ operation: "merge",
346
+ source: primitive.sourcePath,
347
+ destination: settingsPath,
348
+ success: true,
349
+ });
350
+ }
351
+ catch (error) {
352
+ operations.push({
353
+ operation: "merge",
354
+ source: primitive.sourcePath,
355
+ destination: settingsPath,
356
+ success: false,
357
+ error: error instanceof Error ? error.message : String(error),
358
+ });
359
+ }
360
+ }
361
+ // Write updated config
362
+ if (scope === "project" && projectRoot) {
363
+ const { writeFile, mkdir } = await import("node:fs/promises");
364
+ await mkdir(path.dirname(settingsPath), { recursive: true });
365
+ await writeFile(settingsPath, JSON.stringify(updatedSettings, null, 2));
366
+ }
367
+ else {
368
+ await writeSettingsConfig(updatedSettings);
369
+ }
370
+ const completedOp = {
371
+ type: "file",
372
+ path: settingsPath,
373
+ createdNew: !configExisted,
374
+ };
375
+ if (configExisted) {
376
+ completedOp.previousContent = JSON.stringify(existingSettings, null, 2);
377
+ }
378
+ completedOps.push(completedOp);
379
+ return operations;
380
+ }
381
+ async removeMcpServers(instanceNames, scope = "global", projectRoot) {
382
+ if (instanceNames.length === 0)
383
+ return [];
384
+ const configLocations = this.getConfigLocations(scope);
385
+ const settingsPath = scope === "project" && projectRoot
386
+ ? path.join(projectRoot, configLocations.primary.replace(/^\.\//, ""))
387
+ : expandPath(configLocations.primary);
388
+ const existingSettings = scope === "project"
389
+ ? (pathExists(settingsPath) ? JSON.parse(await readFile(settingsPath)) : {})
390
+ : await readSettingsConfig();
391
+ if (!existingSettings.mcpServers) {
392
+ return [];
393
+ }
394
+ const removed = [];
395
+ for (const name of instanceNames) {
396
+ if (existingSettings.mcpServers[name]) {
397
+ delete existingSettings.mcpServers[name];
398
+ removed.push(name);
399
+ }
400
+ }
401
+ if (removed.length > 0) {
402
+ if (scope === "project" && projectRoot) {
403
+ const { writeFile, mkdir } = await import("node:fs/promises");
404
+ await mkdir(path.dirname(settingsPath), { recursive: true });
405
+ await writeFile(settingsPath, JSON.stringify(existingSettings, null, 2));
406
+ }
407
+ else {
408
+ await writeSettingsConfig(existingSettings);
409
+ }
410
+ }
411
+ return removed;
412
+ }
413
+ async removeHooks(instanceNames, scope = "global", projectRoot) {
414
+ if (instanceNames.length === 0)
415
+ return [];
416
+ const configLocations = this.getConfigLocations(scope);
417
+ const installPaths = this.getInstallationPaths(scope);
418
+ const settingsPath = scope === "project" && projectRoot
419
+ ? path.join(projectRoot, configLocations.primary.replace(/^\.\//, ""))
420
+ : expandPath(configLocations.primary);
421
+ const hooksDir = scope === "project" && projectRoot
422
+ ? path.join(projectRoot, installPaths.hooks.replace(/^\.\//, ""))
423
+ : expandPath(installPaths.hooks);
424
+ const existingSettings = scope === "project"
425
+ ? (pathExists(settingsPath) ? JSON.parse(await readFile(settingsPath)) : {})
426
+ : await readSettingsConfig();
427
+ if (!existingSettings.hooks) {
428
+ existingSettings.hooks = {};
429
+ }
430
+ const removed = [];
431
+ let updated = false;
432
+ for (const instanceName of instanceNames) {
433
+ let removedAny = false;
434
+ for (const key of Object.keys(existingSettings.hooks)) {
435
+ const entries = existingSettings.hooks[key];
436
+ const filtered = entries.filter((entry) => {
437
+ return !entry.hooks?.some((hook) => hook.command?.includes(instanceName));
438
+ });
439
+ if (filtered.length !== entries.length) {
440
+ removedAny = true;
441
+ if (filtered.length === 0) {
442
+ delete existingSettings.hooks[key];
443
+ }
444
+ else {
445
+ existingSettings.hooks[key] = filtered;
446
+ }
447
+ }
448
+ }
449
+ if (removedAny) {
450
+ removed.push(instanceName);
451
+ updated = true;
452
+ }
453
+ await remove(path.join(hooksDir, instanceName));
454
+ }
455
+ if (updated) {
456
+ if (scope === "project" && projectRoot) {
457
+ const { writeFile, mkdir } = await import("node:fs/promises");
458
+ await mkdir(path.dirname(settingsPath), { recursive: true });
459
+ await writeFile(settingsPath, JSON.stringify(existingSettings, null, 2));
460
+ }
461
+ else {
462
+ await writeSettingsConfig(existingSettings);
463
+ }
464
+ }
465
+ return removed;
466
+ }
467
+ /**
468
+ * Install hooks to configuration and files.
469
+ *
470
+ * @param kitName - Name of the kit
471
+ * @param primitives - Hook primitives to install
472
+ * @param completedOps - Completed operations for rollback
473
+ * @param scope - Installation scope
474
+ * @param projectRoot - Project root for project scope
475
+ */
476
+ async installHooks(kitName, primitives, completedOps, scope = "global", projectRoot) {
477
+ const operations = [];
478
+ const configLocations = this.getConfigLocations(scope);
479
+ const installPaths = this.getInstallationPaths(scope);
480
+ const settingsPath = scope === "project" && projectRoot
481
+ ? path.join(projectRoot, configLocations.primary.replace(/^\.\//, ""))
482
+ : expandPath(configLocations.primary);
483
+ const hooksDir = scope === "project" && projectRoot
484
+ ? path.join(projectRoot, installPaths.hooks.replace(/^\.\//, ""))
485
+ : expandPath(installPaths.hooks);
486
+ // Ensure hooks directory exists
487
+ await ensureDirectory(hooksDir);
488
+ // Read existing settings
489
+ const existingSettings = scope === "project"
490
+ ? (pathExists(settingsPath) ? JSON.parse(await readFile(settingsPath)) : {})
491
+ : await readSettingsConfig();
492
+ const settingsExisted = pathExists(settingsPath);
493
+ // Prepare updated settings
494
+ const updatedSettings = { ...existingSettings };
495
+ if (!updatedSettings.hooks) {
496
+ updatedSettings.hooks = {};
497
+ }
498
+ for (const primitive of primitives) {
499
+ const program = primitive.hookProgram;
500
+ const binding = primitive.hookBinding;
501
+ if (!program || !binding || !primitive.hookEntryPath || !primitive.hookProgramDir) {
502
+ operations.push({
503
+ operation: "merge",
504
+ source: primitive.sourcePath,
505
+ destination: settingsPath,
506
+ success: false,
507
+ error: "Hook primitive missing program or binding metadata",
508
+ });
509
+ continue;
510
+ }
511
+ const instanceName = primitive.instanceName ?? this.getNamespacedName(kitName, primitive.name);
512
+ const hookDir = path.join(hooksDir, instanceName);
513
+ try {
514
+ // Create hook directory
515
+ await ensureDirectory(hookDir);
516
+ completedOps.push({
517
+ type: "directory",
518
+ path: hookDir,
519
+ createdNew: true,
520
+ });
521
+ const targetPath = path.join(hookDir, path.basename(primitive.hookEntryPath));
522
+ const hookInput = {
523
+ instanceName,
524
+ program,
525
+ binding,
526
+ programDir: primitive.hookProgramDir,
527
+ entryPath: primitive.hookEntryPath,
528
+ targetDir: hookDir,
529
+ targetPath,
530
+ scope,
531
+ ...(projectRoot ? { projectRoot } : {}),
532
+ };
533
+ const hookInstallation = transformHookConfig(hookInput);
534
+ if (hookInstallation.files) {
535
+ for (const file of hookInstallation.files) {
536
+ if (file.type === "copy" && file.source && file.destination) {
537
+ await copyFile(file.source, file.destination);
538
+ completedOps.push({
539
+ type: "file",
540
+ path: file.destination,
541
+ createdNew: true,
542
+ });
543
+ }
544
+ }
545
+ }
546
+ if (hookInstallation.config) {
547
+ updatedSettings.hooks = mergeHookConfigs(updatedSettings.hooks, hookInstallation.config);
548
+ }
549
+ operations.push({
550
+ operation: "merge",
551
+ source: primitive.sourcePath,
552
+ destination: settingsPath,
553
+ success: true,
554
+ });
555
+ }
556
+ catch (error) {
557
+ operations.push({
558
+ operation: "merge",
559
+ source: primitive.sourcePath,
560
+ destination: settingsPath,
561
+ success: false,
562
+ error: error instanceof Error ? error.message : String(error),
563
+ });
564
+ }
565
+ }
566
+ // Write updated settings
567
+ if (scope === "project" && projectRoot) {
568
+ const { writeFile, mkdir } = await import("node:fs/promises");
569
+ await mkdir(path.dirname(settingsPath), { recursive: true });
570
+ await writeFile(settingsPath, JSON.stringify(updatedSettings, null, 2));
571
+ }
572
+ else {
573
+ await writeSettingsConfig(updatedSettings);
574
+ }
575
+ const settingsCompletedOp = {
576
+ type: "file",
577
+ path: settingsPath,
578
+ createdNew: !settingsExisted,
579
+ };
580
+ if (settingsExisted) {
581
+ settingsCompletedOp.previousContent = JSON.stringify(existingSettings, null, 2);
582
+ }
583
+ completedOps.push(settingsCompletedOp);
584
+ return operations;
585
+ }
586
+ }
587
+ /**
588
+ * Create a Gemini CLI adapter instance.
589
+ */
590
+ export function createGeminiCliAdapter() {
591
+ return new GeminiCliAdapter();
592
+ }
593
+ // Re-export types and utilities
594
+ export { detectGeminiCli, GEMINI_CLI_PATHS } from "./detection.js";
595
+ export { geminiCliToolMapping } from "./tool-mapping.js";
596
+ export { geminiCliModelMapping } from "./model-mapping.js";
597
+ export * from "./installer.js";
598
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/adapters/gemini-cli/index.ts"],"names":[],"mappings":"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"}