@noxsoft/anima 5.0.1 → 5.0.2

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 (180) hide show
  1. package/dist/{accounts-BOkEyUcS.js → accounts-CSCVz9k9.js} +7 -7
  2. package/dist/{acp-cli-BcshtFqY.js → acp-cli-DyVMXQS8.js} +1 -1
  3. package/dist/{agent-c49U1LxE.js → agent-CWQdTmzC.js} +3 -3
  4. package/dist/{agent-Cil6Zvns.js → agent-DiEXJmhj.js} +8 -8
  5. package/dist/{agents-2BloqCjm.js → agents-rAIsxGuA.js} +8 -8
  6. package/dist/{anthropic-direct-runner-BVlO2Vi5.js → anthropic-direct-runner--MPTWkYA.js} +228 -193
  7. package/dist/{anthropic-direct-runner-mh6c_WBB.js → anthropic-direct-runner-_uCPWuBb.js} +232 -197
  8. package/dist/{audit-BbmRSFjf.js → audit-DqjWCAbO.js} +7 -7
  9. package/dist/{auth-choice-BVAMr2Dk.js → auth-choice-o5GHtPGA.js} +57 -5
  10. package/dist/{auth-profiles-Chf1JBpl.js → auth-profiles-DriJ4HU5.js} +1 -1
  11. package/dist/{banner-CgxCSS-T.js → banner-Gtp-FQrx.js} +1 -1
  12. package/dist/build-info.json +3 -3
  13. package/dist/bundled/boot-md/handler.js +13 -13
  14. package/dist/bundled/bootstrap-extra-files/handler.js +3 -3
  15. package/dist/bundled/session-memory/handler.js +10 -10
  16. package/dist/canvas-host/a2ui/.bundle.hash +1 -1
  17. package/dist/{channel-web-Y8i3EzJq.js → channel-web-Dz0XZNjP.js} +4 -4
  18. package/dist/{channels-status-issues-BlmAMBCg.js → channels-status-issues-Dqd_vE0e.js} +2 -2
  19. package/dist/{chrome-B2-33FWf.js → chrome-CB6uZMvl.js} +1 -1
  20. package/dist/{chrome-Cxl7I5SB.js → chrome-CKvch3UL.js} +7 -7
  21. package/dist/{clack-prompter-B-ZJG628.js → clack-prompter-BRLXmV52.js} +1 -1
  22. package/dist/{clack-prompter-CCRr4nAr.js → clack-prompter-OFy356QZ.js} +1 -1
  23. package/dist/{cli-C3uw3mId.js → cli-BZz5MnAE.js} +29 -29
  24. package/dist/{cli-CfvBmuhw.js → cli-CJfwHH_z.js} +5 -5
  25. package/dist/{cli-session-BzZYmGP1.js → cli-session-8PeURiwF.js} +6 -6
  26. package/dist/{cli-session-DgUHOBYo.js → cli-session-CczB2Dni.js} +1 -1
  27. package/dist/{command-registry-DLofaVIN.js → command-registry-C9kvlc67.js} +12 -12
  28. package/dist/{common-FlJ-8clz.js → common-C5mWuFve.js} +2 -2
  29. package/dist/{completion-cli-C9KvX2ZF.js → completion-cli-Ci_MzRm6.js} +2 -2
  30. package/dist/{completion-cli-3eYvtAih.js → completion-cli-DhbIrk13.js} +1 -1
  31. package/dist/{config-B-9UciOO.js → config-DezP7V65.js} +2 -2
  32. package/dist/{config-cli-CBXWDtvj.js → config-cli-ePL5ncye.js} +1 -1
  33. package/dist/{config-cli-cmNuTlw0.js → config-cli-uk9vdQZH.js} +1 -1
  34. package/dist/{config-guard-qiKju2Fg.js → config-guard-CCOBZ77Q.js} +1 -1
  35. package/dist/{configure-CGTBBLR_.js → configure-CkGsX5z9.js} +9 -9
  36. package/dist/{configure-Dpk4lSoz.js → configure-D-9Ezgal.js} +11 -11
  37. package/dist/{configure-jlAKeuki.js → configure-DxKMnCHX.js} +40 -40
  38. package/dist/{configure-CH_-SNya.js → configure-KP7q9c7h.js} +4 -4
  39. package/dist/{control-service-CUhnhmpc.js → control-service-D3rS-Yd1.js} +3 -3
  40. package/dist/{cron-cli-CKs1evSF.js → cron-cli-3QY_K0l_.js} +1 -1
  41. package/dist/{daemon-cli-CSCFNzUo.js → daemon-cli-NZ84KRN8.js} +3 -3
  42. package/dist/{deliver-BYxbDIF0.js → deliver-BJn4EmMZ.js} +1 -1
  43. package/dist/{deliver-DkF6LCoS.js → deliver-BhezvxNA.js} +4 -4
  44. package/dist/{deps-D9266xfk.js → deps-CBLy0fqA.js} +1 -1
  45. package/dist/{dispatcher-BeO47t7A.js → dispatcher-Bk0gFz4b.js} +1 -1
  46. package/dist/{doctor-DJfgnQ67.js → doctor-Bto-K3wL.js} +16 -16
  47. package/dist/{doctor-CWmHUAjs.js → doctor-DsRSWr6B.js} +5 -5
  48. package/dist/{doctor-completion-CtCwd1fi.js → doctor-completion-B-SFdu-f.js} +1 -1
  49. package/dist/{doctor-completion-CmJmktDv.js → doctor-completion-OQXTo6RG.js} +1 -1
  50. package/dist/{doctor-config-flow-D_8YNTSK.js → doctor-config-flow-CEkHIHe5.js} +1 -1
  51. package/dist/entry.js +1 -1
  52. package/dist/extensionAPI.js +1531 -411
  53. package/dist/{frontmatter-BmBmtOUh.js → frontmatter-Dsa7N963.js} +1 -1
  54. package/dist/{gateway-cli-DYrzIvOE.js → gateway-cli-Buxz8Y2n.js} +17 -17
  55. package/dist/{gateway-cli-BazTmg20.js → gateway-cli-CEGPCQ_C.js} +52 -52
  56. package/dist/{health-BRSKF_iF.js → health-CMIY7xAI.js} +12 -12
  57. package/dist/{health-JqtB_B8C.js → health-DoGFlPcq.js} +6 -6
  58. package/dist/{heartbeat-visibility-BGj2czmk.js → heartbeat-visibility-BOyU9ccw.js} +2 -2
  59. package/dist/{heartbeat-visibility-pyFf6XBW.js → heartbeat-visibility-DuRmIKOk.js} +2 -2
  60. package/dist/{hooks-cli-B7g3jEC3.js → hooks-cli-B1NXXLxe.js} +30 -30
  61. package/dist/{hooks-cli-ZK4Z044T.js → hooks-cli-BuIU6v0Q.js} +6 -6
  62. package/dist/index.js +11 -11
  63. package/dist/{installs-DBvIs2By.js → installs-Drds9RDI.js} +1 -1
  64. package/dist/{lanes-DyM6NSSL.js → lanes-4_8h1ZQO.js} +274 -12
  65. package/dist/llm-slug-generator.js +10 -10
  66. package/dist/{login-BbfWLOBl.js → login-DwP4KleZ.js} +2 -2
  67. package/dist/{login-qr-BqhujMcQ.js → login-qr-wnynuvLt.js} +5 -5
  68. package/dist/{manager-CcawxgaC.js → manager-ibNP7jE3.js} +2 -2
  69. package/dist/{manager-DS1DfkbC.js → manager-j0ghUvcW.js} +4 -4
  70. package/dist/{media-IIqSkFpd.js → media-BLVMhFB3.js} +2 -2
  71. package/dist/{memory-cli-wDO418hx.js → memory-cli-DSWsPuub.js} +6 -6
  72. package/dist/{model-auth-Uxm-wRjR.js → model-auth-BKf-GZVK.js} +3 -3
  73. package/dist/{models-tQnX4hL4.js → models-BU0CytAy.js} +32 -32
  74. package/dist/{node-cli-DAcW-rfA.js → node-cli-DcwOFcxq.js} +8 -8
  75. package/dist/{onboard-Dd6xFMYB.js → onboard-Dd5wJkeU.js} +6 -6
  76. package/dist/{onboard-dasbF9G1.js → onboard-c84IExbH.js} +4 -4
  77. package/dist/{onboard-channels-DisvVyIs.js → onboard-channels-CCoMzCXV.js} +3 -3
  78. package/dist/{onboard-channels-BUv3VbAL.js → onboard-channels-DYr7fQZq.js} +1 -1
  79. package/dist/{onboard-helpers-49TVSf7J.js → onboard-helpers-BRp_xJvW.js} +1 -1
  80. package/dist/{onboarding-Dq3bCBjc.js → onboarding-192Oe9K6.js} +8 -8
  81. package/dist/{onboarding-6Xs4orLw.js → onboarding-BINruD5r.js} +4 -4
  82. package/dist/{outbound-CliT3nme.js → outbound-BVSyNp-t.js} +1 -1
  83. package/dist/{outbound-CLII4C2A.js → outbound-BaBDhLp1.js} +1 -1
  84. package/dist/{parse-timeout-BnOIKwx8.js → parse-timeout-C1INlSUG.js} +2 -2
  85. package/dist/{pi-auth-json-DLroEcea.js → pi-auth-json-BSLIRI41.js} +2 -2
  86. package/dist/{pi-embedded-CS4D_0t7.js → pi-embedded-DJF_gfcQ.js} +667 -372
  87. package/dist/{pi-tools.policy-RhdERrk3.js → pi-tools.policy-Dtytaq21.js} +3 -3
  88. package/dist/{plugin-registry-l3z9phEV.js → plugin-registry-B0k-53-_.js} +1 -1
  89. package/dist/{plugin-registry-esOxvV3X.js → plugin-registry-CqUo-PU_.js} +1 -1
  90. package/dist/plugin-sdk/agents/gemini-direct-runner.d.ts +38 -0
  91. package/dist/plugin-sdk/commands/onboard-types.d.ts +2 -2
  92. package/dist/{plugins-cli-D2v0n4BL.js → plugins-cli-BYLUFsjH.js} +33 -33
  93. package/dist/{plugins-cli-CbXtuN4b.js → plugins-cli-YjM8IsVo.js} +6 -6
  94. package/dist/{ports-DyX87qKc.js → ports-BmSDzOHm.js} +1 -1
  95. package/dist/{ports-COy7Yg_k.js → ports-Bv3sZ3bd.js} +1 -1
  96. package/dist/{program-y0NPJuYm.js → program-CG5u1KAB.js} +36 -36
  97. package/dist/{program-context-CqPwmgYa.js → program-context-Co2gkUS0.js} +16 -16
  98. package/dist/{prompts-DTKoIKPV.js → prompts-DjKZfP5R.js} +67 -4
  99. package/dist/{prompts-DY0qdoD1.js → prompts-NvPXbNVc.js} +12 -1
  100. package/dist/{pw-ai-CJgeaF06.js → pw-ai-C3j5kV3T.js} +1 -1
  101. package/dist/{pw-ai-A7vggLw8.js → pw-ai-CvxTpFmB.js} +3 -3
  102. package/dist/{qmd-manager-DQsAtmK7.js → qmd-manager-BDq5_dd6.js} +2 -2
  103. package/dist/{register.agent-Bi2FqIlN.js → register.agent-PbAKdlNK.js} +10 -10
  104. package/dist/{register.agent-CRazop1A.js → register.agent-WAjZHuZe.js} +38 -38
  105. package/dist/{register.anima-FFaI_C8x.js → register.anima-CDcnWfQF.js} +2 -2
  106. package/dist/{register.anima-BmdRCJLy.js → register.anima-CZNjkwJH.js} +2 -2
  107. package/dist/{register.configure-FIXOWrO9.js → register.configure-C2zfgyp9.js} +39 -39
  108. package/dist/{register.configure-r5AViY3N.js → register.configure-CNhagtHN.js} +10 -10
  109. package/dist/{register.maintenance-Cpf0ZZTL.js → register.maintenance-DWJjWsIl.js} +11 -11
  110. package/dist/{register.maintenance-DJYji5mV.js → register.maintenance-DkF1Nu_y.js} +39 -39
  111. package/dist/{register.onboard-thGXwzOX.js → register.onboard-DiZzjEwz.js} +13 -13
  112. package/dist/{register.onboard-oUsWjmam.js → register.onboard-xOXNrMu-.js} +41 -41
  113. package/dist/{register.setup-B4MYuE3g.js → register.setup-BmbpgUVU.js} +41 -41
  114. package/dist/{register.setup-DWDrQ7RT.js → register.setup-QAjNkIZr.js} +13 -13
  115. package/dist/{register.status-health-sessions-CTKdzo7a.js → register.status-health-sessions-Cm-lxcT6.js} +37 -37
  116. package/dist/{register.status-health-sessions-Ce9QUAyj.js → register.status-health-sessions-RZxaVSa6.js} +7 -7
  117. package/dist/{register.subclis-CWmYc4AB.js → register.subclis-DCljHJ5a.js} +13 -13
  118. package/dist/{reply-CpHIJ9Kk.js → reply-Bw4torMz.js} +30 -30
  119. package/dist/{reply-BKpIrCr-.js → reply-Dd3EmI4M.js} +5 -5
  120. package/dist/{reply-prefix-BO_Dt82N.js → reply-prefix-DIoRETAD.js} +2 -2
  121. package/dist/{reply-prefix-BwVBvQXp.js → reply-prefix-Dy_yxyCq.js} +2 -2
  122. package/dist/{routes-XhTPYecR.js → routes-CNSdZAkl.js} +3 -3
  123. package/dist/{run--9hftM2H.js → run--R4y3YlU.js} +41 -41
  124. package/dist/{run-CGokiDR8.js → run-DgtaDzEe.js} +15 -15
  125. package/dist/{run-main-DxcOzCLw.js → run-main-eUWh86lF.js} +47 -47
  126. package/dist/{sandbox-CiwAPzO7.js → sandbox-BoNWDo4X.js} +1 -1
  127. package/dist/{sandbox-cli-DsrzwG_s.js → sandbox-cli-lbp0TV67.js} +10 -10
  128. package/dist/{security-cli-CouqfUGc.js → security-cli-CfvP5VqT.js} +13 -13
  129. package/dist/{server-context-B78_sSOW.js → server-context-IfJbmK25.js} +6 -6
  130. package/dist/{server-node-events-DJlLCF2M.js → server-node-events-BG4e9Ws7.js} +5 -5
  131. package/dist/{server-node-events-TN_Y9MgU.js → server-node-events-CFCwOP0n.js} +18 -18
  132. package/dist/{session-cost-usage-vltn5akf.js → session-cost-usage-lLyz71EH.js} +1 -1
  133. package/dist/{sessions-B7clh58j.js → sessions-BZgIAOwH.js} +2 -2
  134. package/dist/{sessions-B7ikzhI_.js → sessions-C3bteMLZ.js} +3 -3
  135. package/dist/{settings-cli-JU5bg5jb.js → settings-cli-C9TMl9Ye.js} +11 -11
  136. package/dist/{settings-cli-DjVugHID.js → settings-cli-Cf0LCRjt.js} +40 -40
  137. package/dist/{setup-token-CvRwJUVY.js → setup-token-DBwe6GDq.js} +1 -1
  138. package/dist/{setup-token-wFsQlaW2.js → setup-token-DTgSXfj7.js} +14 -14
  139. package/dist/{shell-env-C1yK_Rod.js → shell-env-V934Ymrk.js} +1 -1
  140. package/dist/{skill-scanner-BzOYLFR8.js → skill-scanner-DPQDhVEr.js} +1 -1
  141. package/dist/{skills-install-D_bxdc-6.js → skills-install-CC63dOs4.js} +2 -2
  142. package/dist/{sqlite-jyjat2Yt.js → sqlite-Co_lF3s-.js} +1 -1
  143. package/dist/{start-M9abr1O1.js → start-B2DQAmEK.js} +17 -17
  144. package/dist/{start-CAbxlnFZ.js → start-CHLGEHeF.js} +50 -50
  145. package/dist/{status-YH65ctig.js → status-BsCeWiLS.js} +1 -1
  146. package/dist/{status-1TjjCE1l.js → status-C4ZTdSwA.js} +14 -14
  147. package/dist/{status-CxxXFU4R.js → status-CwjUrZ7a.js} +4 -4
  148. package/dist/{status-CrJV2Y4x.js → status-D_FTGxBZ.js} +1 -1
  149. package/dist/{status.update-BzAuf_G-.js → status.update-Cx5l38lC.js} +1 -1
  150. package/dist/{subagent-registry-xJY9wqZy.js → subagent-registry-7qo93ip8.js} +2 -2
  151. package/dist/{subagent-registry-3Dw3YppH.js → subagent-registry-EoZxIEKl.js} +8 -8
  152. package/dist/{subagent-registry-B_65nJFp.js → subagent-registry-hRt-aJnL.js} +9 -9
  153. package/dist/{timeout-Dbspj9Jf.js → timeout-B0mCaCG5.js} +275 -13
  154. package/dist/{pi-embedded-helpers-DnRfi8bN.js → tokens-DXjI-TIV.js} +19 -19
  155. package/dist/{tool-images-y_Ribdl6.js → tool-images-09hnvylP.js} +1 -1
  156. package/dist/{tui--eIVX_W0.js → tui-LRoQ5xyx.js} +2 -2
  157. package/dist/{tui-cli-DBV3lnXA.js → tui-cli-DO_6-GWy.js} +14 -14
  158. package/dist/{update-VFbS9X5L.js → update-DmVSt9s3.js} +1 -1
  159. package/dist/{update-cli-QP5L8xlv.js → update-cli-CnYFvEud.js} +11 -11
  160. package/dist/{update-cli-BzaQvirL.js → update-cli-jEzmvaqS.js} +44 -44
  161. package/dist/{update-runner-B_oj7S_n.js → update-runner-IARYjXbS.js} +2 -2
  162. package/dist/{update-runner-ZuJN8uBE.js → update-runner-OPbRGUfX.js} +1 -1
  163. package/dist/{usage-DzKbMa8N.js → usage-BTc8TK3f.js} +6 -6
  164. package/dist/{web-nI3eIGAT.js → web-Honf40Cm.js} +31 -31
  165. package/dist/{web-CgQc2Raf.js → web-kEraFv8s.js} +28 -28
  166. package/dist/{web-DtWSf5wm.js → web-u554zkLK.js} +7 -7
  167. package/dist/{whatsapp-actions-BzPQUcRR.js → whatsapp-actions-I9RXDK_k.js} +6 -6
  168. package/dist/{whatsapp-actions-CZuxHplg.js → whatsapp-actions-_BrQebuX.js} +5 -5
  169. package/package.json +1 -1
  170. /package/dist/{auth-DuBZWd74.js → auth-DK-0XxZU.js} +0 -0
  171. /package/dist/{boolean-M-esQJt6.js → boolean-Ce2-qkSB.js} +0 -0
  172. /package/dist/{errors-l_q3lLBC.js → errors-B9FgVZ2s.js} +0 -0
  173. /package/dist/{image-ops-BVtm-rU-.js → image-ops-BsXjYj1e.js} +0 -0
  174. /package/dist/{internal-hooks-Exeq-wmx.js → internal-hooks-CZOlj8zG.js} +0 -0
  175. /package/dist/{model-selection-xZLlICyg.js → model-selection-DT-L7bjC.js} +0 -0
  176. /package/dist/{paths-B_RPJLsn.js → paths-CxBUgtZS.js} +0 -0
  177. /package/dist/{pi-embedded-helpers-Cxzk0pra.js → pi-embedded-helpers-CWl0I3Qm.js} +0 -0
  178. /package/dist/{plugins-CFBEoAN4.js → plugins-BDSP0cT6.js} +0 -0
  179. /package/dist/{tokens-DLpZ8RFH.js → tokens-QjoPADtG.js} +0 -0
  180. /package/dist/{transcript-events-CJRvASY_.js → transcript-events-DdnTeoR1.js} +0 -0
@@ -4,9 +4,9 @@ import { b as safeParseJson } from "./utils-D1VGbO3C.js";
4
4
  import { n as resolveAgentConfig } from "./agent-scope-Dm8IL1Ks.js";
5
5
  import { t as withFileLock$1 } from "./file-lock-CxXn285m.js";
6
6
  import { l as normalizeMessageChannel } from "./message-channel-DdOBO6Qm.js";
7
- import { E as getChannelDock } from "./sessions-B7ikzhI_.js";
8
- import { b as matchesAnyGlobPattern, g as normalizeToolName, h as expandToolGroups, y as compileGlobPatterns } from "./sandbox-CiwAPzO7.js";
9
- import { n as listChannelPlugins, t as getChannelPlugin } from "./plugins-CFBEoAN4.js";
7
+ import { E as getChannelDock } from "./sessions-C3bteMLZ.js";
8
+ import { b as matchesAnyGlobPattern, g as normalizeToolName, h as expandToolGroups, y as compileGlobPatterns } from "./sandbox-BoNWDo4X.js";
9
+ import { n as listChannelPlugins, t as getChannelPlugin } from "./plugins-BDSP0cT6.js";
10
10
  import os from "node:os";
11
11
  import path from "node:path";
12
12
  import fs from "node:fs";
@@ -2,7 +2,7 @@ import { n as __exportAll } from "./chunk-BXK9XSlF.js";
2
2
  import { dt as getActivePluginRegistry, o as createSubsystemLogger } from "./entry.js";
3
3
  import { c as resolveDefaultAgentId, s as resolveAgentWorkspaceDir } from "./agent-scope-Dm8IL1Ks.js";
4
4
  import { i as loadConfig } from "./config-D6D_ieel.js";
5
- import { Z as loadAnimaPlugins } from "./reply-CpHIJ9Kk.js";
5
+ import { Z as loadAnimaPlugins } from "./reply-Bw4torMz.js";
6
6
 
7
7
  //#region src/cli/plugin-registry.ts
8
8
  var plugin_registry_exports = /* @__PURE__ */ __exportAll({ ensurePluginRegistryLoaded: () => ensurePluginRegistryLoaded });
@@ -1,6 +1,6 @@
1
1
  import { n as __exportAll } from "./chunk-BXK9XSlF.js";
2
2
  import { E as getActivePluginRegistry, t as createSubsystemLogger } from "./subsystem-Cn6bJV8Z.js";
3
- import { Y as loadAnimaPlugins } from "./reply-BKpIrCr-.js";
3
+ import { Y as loadAnimaPlugins } from "./reply-Dd3EmI4M.js";
4
4
  import { c as resolveDefaultAgentId, s as resolveAgentWorkspaceDir } from "./agent-scope-BLiq3nK_.js";
5
5
  import { i as loadConfig } from "./config-CG7uuHNE.js";
6
6
 
@@ -0,0 +1,38 @@
1
+ /**
2
+ * Gemini Direct API Runner
3
+ *
4
+ * Makes calls directly to generativelanguage.googleapis.com without needing
5
+ * a CLI wrapper. Works with Google API keys (GEMINI_API_KEY).
6
+ *
7
+ * This runner is automatically used when a google API key is available
8
+ * and the provider is set to "google" or "gemini".
9
+ */
10
+ import type { ThinkLevel } from "../auto-reply/thinking.js";
11
+ import type { AnimaConfig } from "../config/config.js";
12
+ import type { EmbeddedPiRunResult } from "./pi-embedded-runner.js";
13
+ /**
14
+ * Run an agent turn directly against generativelanguage.googleapis.com.
15
+ *
16
+ * Maintains multi-turn conversation history per session file.
17
+ * Falls back to single-turn if history is unavailable.
18
+ */
19
+ export declare function runGeminiDirectAgent(params: {
20
+ apiKey: string;
21
+ sessionId: string;
22
+ sessionKey?: string;
23
+ agentId?: string;
24
+ sessionFile: string;
25
+ workspaceDir: string;
26
+ config?: AnimaConfig;
27
+ prompt: string;
28
+ model?: string;
29
+ thinkLevel?: ThinkLevel;
30
+ timeoutMs: number;
31
+ runId: string;
32
+ extraSystemPrompt?: string;
33
+ ownerNumbers?: string[];
34
+ onPartialReply?: (payload: {
35
+ text?: string;
36
+ }) => Promise<void> | void;
37
+ onAssistantMessageStart?: () => Promise<void> | void;
38
+ }): Promise<EmbeddedPiRunResult>;
@@ -1,8 +1,8 @@
1
1
  import type { ChannelId } from "../channels/plugins/types.js";
2
2
  import type { GatewayDaemonRuntime } from "./daemon-runtime.js";
3
3
  export type OnboardMode = "local" | "remote";
4
- export type AuthChoice = "noxsoft" | "openaiCodex" | "apiKey" | "skip";
5
- export type AuthChoiceGroupId = "noxsoft" | "openaiCodex" | "anthropic";
4
+ export type AuthChoice = "noxsoft" | "openaiCodex" | "apiKey" | "geminiApiKey" | "skip";
5
+ export type AuthChoiceGroupId = "noxsoft" | "openaiCodex" | "anthropic" | "gemini";
6
6
  export type GatewayAuthChoice = "token" | "password";
7
7
  export type ResetScope = "config" | "config+creds+sessions" | "full";
8
8
  export type GatewayBind = "loopback" | "lan" | "auto" | "custom" | "tailnet";
@@ -14,36 +14,36 @@ import "./shell-env-2QqHvBMl.js";
14
14
  import "./client-tKWDYo7c.js";
15
15
  import "./call-Z_GCO8CL.js";
16
16
  import "./message-channel-DdOBO6Qm.js";
17
- import "./timeout-Dbspj9Jf.js";
18
- import "./sessions-B7ikzhI_.js";
19
- import "./subagent-registry-3Dw3YppH.js";
20
- import "./tokens-DLpZ8RFH.js";
21
- import "./anthropic-direct-runner-mh6c_WBB.js";
22
- import "./pi-embedded-helpers-Cxzk0pra.js";
23
- import "./sandbox-CiwAPzO7.js";
24
- import "./chrome-B2-33FWf.js";
25
- import { g as promptYesNo } from "./auth-DuBZWd74.js";
26
- import "./server-context-B78_sSOW.js";
27
- import "./routes-XhTPYecR.js";
28
- import "./image-ops-BVtm-rU-.js";
29
- import "./ports-COy7Yg_k.js";
30
- import "./plugins-CFBEoAN4.js";
31
- import "./paths-B_RPJLsn.js";
32
- import "./tool-images-y_Ribdl6.js";
17
+ import "./timeout-B0mCaCG5.js";
18
+ import "./sessions-C3bteMLZ.js";
19
+ import "./subagent-registry-EoZxIEKl.js";
20
+ import "./anthropic-direct-runner-_uCPWuBb.js";
21
+ import "./pi-embedded-helpers-CWl0I3Qm.js";
22
+ import "./sandbox-BoNWDo4X.js";
23
+ import "./chrome-CB6uZMvl.js";
24
+ import { g as promptYesNo } from "./auth-DK-0XxZU.js";
25
+ import "./server-context-IfJbmK25.js";
26
+ import "./routes-CNSdZAkl.js";
27
+ import "./image-ops-BsXjYj1e.js";
28
+ import "./ports-Bv3sZ3bd.js";
29
+ import "./plugins-BDSP0cT6.js";
30
+ import "./paths-CxBUgtZS.js";
31
+ import "./tool-images-09hnvylP.js";
32
+ import "./tokens-QjoPADtG.js";
33
33
  import "./model-auth-Ja4oelNH.js";
34
- import "./media-IIqSkFpd.js";
34
+ import "./media-BLVMhFB3.js";
35
35
  import "./chunk-CCPPbWoa.js";
36
- import "./common-FlJ-8clz.js";
37
- import "./control-service-CUhnhmpc.js";
38
- import "./reply-CpHIJ9Kk.js";
36
+ import "./common-C5mWuFve.js";
37
+ import "./control-service-D3rS-Yd1.js";
38
+ import "./reply-Bw4torMz.js";
39
39
  import "./context-Cau0zD3W.js";
40
- import "./cli-session-BzZYmGP1.js";
41
- import "./parse-timeout-BnOIKwx8.js";
42
- import "./deliver-DkF6LCoS.js";
43
- import "./pi-tools.policy-RhdERrk3.js";
44
- import "./memory-cli-wDO418hx.js";
45
- import "./manager-DS1DfkbC.js";
46
- import "./sqlite-jyjat2Yt.js";
40
+ import "./cli-session-8PeURiwF.js";
41
+ import "./parse-timeout-C1INlSUG.js";
42
+ import "./deliver-BhezvxNA.js";
43
+ import "./pi-tools.policy-Dtytaq21.js";
44
+ import "./memory-cli-DSWsPuub.js";
45
+ import "./manager-j0ghUvcW.js";
46
+ import "./sqlite-Co_lF3s-.js";
47
47
  import "./redact-BGU5Bi0z.js";
48
48
  import "./session-DKVXdG83.js";
49
49
  import "./semantic-Bcyloakq.js";
@@ -53,16 +53,16 @@ import { t as formatDocsLink } from "./links-BEV1YSPz.js";
53
53
  import "./progress-BVxbUItq.js";
54
54
  import "./logging-CAAlgQEE.js";
55
55
  import "./auth-store-BkbTsJDp.js";
56
- import "./dispatcher-BeO47t7A.js";
56
+ import "./dispatcher-Bk0gFz4b.js";
57
57
  import "./delivery-queue-qVRizdA1.js";
58
- import "./session-cost-usage-vltn5akf.js";
58
+ import "./session-cost-usage-lLyz71EH.js";
59
59
  import { t as renderTable } from "./table-C24zdeCz.js";
60
- import "./skill-scanner-BzOYLFR8.js";
60
+ import "./skill-scanner-DPQDhVEr.js";
61
61
  import { i as resolveArchiveKind } from "./archive-C5p985uM.js";
62
62
  import "./npm-registry-spec-CCSSC2_g.js";
63
- import { t as buildPluginStatusReport } from "./status-YH65ctig.js";
64
- import { i as resolvePluginInstallDir, n as installPluginFromNpmSpec, r as installPluginFromPath, t as recordPluginInstall } from "./installs-DBvIs2By.js";
65
- import { n as updateNpmInstalledPlugins } from "./update-VFbS9X5L.js";
63
+ import { t as buildPluginStatusReport } from "./status-BsCeWiLS.js";
64
+ import { i as resolvePluginInstallDir, n as installPluginFromNpmSpec, r as installPluginFromPath, t as recordPluginInstall } from "./installs-Drds9RDI.js";
65
+ import { n as updateNpmInstalledPlugins } from "./update-DmVSt9s3.js";
66
66
  import os from "node:os";
67
67
  import path from "node:path";
68
68
  import fs from "node:fs";
@@ -2,12 +2,12 @@ import { m as resolveStateDir } from "./paths-zhVksOvm.js";
2
2
  import { V as theme, d as defaultRuntime } from "./subsystem-Cn6bJV8Z.js";
3
3
  import { C as shortenHomePath, S as shortenHomeInString, _ as resolveConfigDir, b as resolveUserPath } from "./utils-dWKYjULE.js";
4
4
  import "./pi-embedded-helpers-iju5zIIA.js";
5
- import "./subagent-registry-xJY9wqZy.js";
6
- import "./reply-BKpIrCr-.js";
5
+ import "./subagent-registry-7qo93ip8.js";
6
+ import "./reply-Dd3EmI4M.js";
7
7
  import "./exec-DbnX_71w.js";
8
8
  import "./agent-scope-BLiq3nK_.js";
9
9
  import "./model-selection-C2dAUmK_.js";
10
- import "./lanes-DyM6NSSL.js";
10
+ import "./lanes-4_8h1ZQO.js";
11
11
  import { i as loadConfig, l as writeConfigFile } from "./config-CG7uuHNE.js";
12
12
  import "./boolean-Wzu0-e0P.js";
13
13
  import "./env-T3-raV4i.js";
@@ -19,7 +19,7 @@ import "./polls-Cuv4dsX_.js";
19
19
  import "./auth-profiles-BhZX2spm.js";
20
20
  import "./file-lock-BRW4LeL0.js";
21
21
  import "./model-auth-DVG37yXU.js";
22
- import "./cli-session-DgUHOBYo.js";
22
+ import "./cli-session-CczB2Dni.js";
23
23
  import "./tokens-k_R7Y792.js";
24
24
  import "./sandbox-BwUo1b0I.js";
25
25
  import "./chrome-C3-muxXb.js";
@@ -31,7 +31,7 @@ import "./ports-DOiSDgNp.js";
31
31
  import "./message-channel-DuxJGOJz.js";
32
32
  import "./plugins-BmYfBGLM.js";
33
33
  import "./paths-BvY3CbW0.js";
34
- import "./anthropic-direct-runner-BVlO2Vi5.js";
34
+ import "./anthropic-direct-runner--MPTWkYA.js";
35
35
  import "./tool-images-BehEzEZF.js";
36
36
  import "./parse-timeout-C8t_lmnL.js";
37
37
  import "./chunk-DFCmYqgJ.js";
@@ -61,7 +61,7 @@ import { t as renderTable } from "./table-B991ZwKi.js";
61
61
  import "./skill-scanner-HQwt_KRF.js";
62
62
  import { i as resolveArchiveKind } from "./archive-PQcg3EQT.js";
63
63
  import "./npm-registry-spec-fJIJ8GG5.js";
64
- import { t as buildPluginStatusReport } from "./status-CrJV2Y4x.js";
64
+ import { t as buildPluginStatusReport } from "./status-D_FTGxBZ.js";
65
65
  import { i as resolvePluginInstallDir, n as installPluginFromNpmSpec, r as installPluginFromPath, t as recordPluginInstall } from "./installs-BxZFjTKY.js";
66
66
  import { n as updateNpmInstalledPlugins } from "./update-tjMvDUCw.js";
67
67
  import fs from "node:fs";
@@ -1,5 +1,5 @@
1
1
  import { C as sleep } from "./utils-D1VGbO3C.js";
2
- import { r as resolveLsofCommandSync } from "./ports-COy7Yg_k.js";
2
+ import { r as resolveLsofCommandSync } from "./ports-Bv3sZ3bd.js";
3
3
  import { execFileSync } from "node:child_process";
4
4
 
5
5
  //#region src/cli/ports.ts
@@ -1,6 +1,6 @@
1
1
  import { t as formatCliCommand } from "./command-format-kLw3YIIu.js";
2
2
  import { t as runCommandWithTimeout } from "./exec-BtBJICHE.js";
3
- import { a as isErrno } from "./errors-l_q3lLBC.js";
3
+ import { a as isErrno } from "./errors-B9FgVZ2s.js";
4
4
  import fs from "node:fs";
5
5
  import fs$1 from "node:fs/promises";
6
6
  import net from "node:net";
@@ -15,36 +15,36 @@ import "./shell-env-2QqHvBMl.js";
15
15
  import "./client-tKWDYo7c.js";
16
16
  import "./call-Z_GCO8CL.js";
17
17
  import "./message-channel-DdOBO6Qm.js";
18
- import "./timeout-Dbspj9Jf.js";
19
- import "./sessions-B7ikzhI_.js";
20
- import "./subagent-registry-3Dw3YppH.js";
21
- import "./tokens-DLpZ8RFH.js";
22
- import "./anthropic-direct-runner-mh6c_WBB.js";
23
- import "./pi-embedded-helpers-Cxzk0pra.js";
24
- import "./sandbox-CiwAPzO7.js";
25
- import "./chrome-B2-33FWf.js";
26
- import "./auth-DuBZWd74.js";
27
- import "./server-context-B78_sSOW.js";
28
- import "./routes-XhTPYecR.js";
29
- import "./image-ops-BVtm-rU-.js";
30
- import "./ports-COy7Yg_k.js";
31
- import { n as listChannelPlugins } from "./plugins-CFBEoAN4.js";
32
- import "./paths-B_RPJLsn.js";
33
- import "./tool-images-y_Ribdl6.js";
18
+ import "./timeout-B0mCaCG5.js";
19
+ import "./sessions-C3bteMLZ.js";
20
+ import "./subagent-registry-EoZxIEKl.js";
21
+ import "./anthropic-direct-runner-_uCPWuBb.js";
22
+ import "./pi-embedded-helpers-CWl0I3Qm.js";
23
+ import "./sandbox-BoNWDo4X.js";
24
+ import "./chrome-CB6uZMvl.js";
25
+ import "./auth-DK-0XxZU.js";
26
+ import "./server-context-IfJbmK25.js";
27
+ import "./routes-CNSdZAkl.js";
28
+ import "./image-ops-BsXjYj1e.js";
29
+ import "./ports-Bv3sZ3bd.js";
30
+ import { n as listChannelPlugins } from "./plugins-BDSP0cT6.js";
31
+ import "./paths-CxBUgtZS.js";
32
+ import "./tool-images-09hnvylP.js";
33
+ import "./tokens-QjoPADtG.js";
34
34
  import "./model-auth-Ja4oelNH.js";
35
- import "./media-IIqSkFpd.js";
35
+ import "./media-BLVMhFB3.js";
36
36
  import "./chunk-CCPPbWoa.js";
37
- import "./common-FlJ-8clz.js";
38
- import "./control-service-CUhnhmpc.js";
39
- import "./reply-CpHIJ9Kk.js";
37
+ import "./common-C5mWuFve.js";
38
+ import "./control-service-D3rS-Yd1.js";
39
+ import "./reply-Bw4torMz.js";
40
40
  import "./context-Cau0zD3W.js";
41
- import "./cli-session-BzZYmGP1.js";
42
- import "./parse-timeout-BnOIKwx8.js";
43
- import "./deliver-DkF6LCoS.js";
44
- import "./pi-tools.policy-RhdERrk3.js";
45
- import "./memory-cli-wDO418hx.js";
46
- import "./manager-DS1DfkbC.js";
47
- import "./sqlite-jyjat2Yt.js";
41
+ import "./cli-session-8PeURiwF.js";
42
+ import "./parse-timeout-C1INlSUG.js";
43
+ import "./deliver-BhezvxNA.js";
44
+ import "./pi-tools.policy-Dtytaq21.js";
45
+ import "./memory-cli-DSWsPuub.js";
46
+ import "./manager-j0ghUvcW.js";
47
+ import "./sqlite-Co_lF3s-.js";
48
48
  import "./redact-BGU5Bi0z.js";
49
49
  import "./session-DKVXdG83.js";
50
50
  import "./semantic-Bcyloakq.js";
@@ -54,16 +54,16 @@ import { t as formatDocsLink } from "./links-BEV1YSPz.js";
54
54
  import "./progress-BVxbUItq.js";
55
55
  import "./logging-CAAlgQEE.js";
56
56
  import "./auth-store-BkbTsJDp.js";
57
- import "./dispatcher-BeO47t7A.js";
57
+ import "./dispatcher-Bk0gFz4b.js";
58
58
  import "./delivery-queue-qVRizdA1.js";
59
- import "./session-cost-usage-vltn5akf.js";
60
- import "./register.subclis-CWmYc4AB.js";
61
- import { i as registerProgramCommands } from "./command-registry-DLofaVIN.js";
59
+ import "./session-cost-usage-lLyz71EH.js";
60
+ import "./register.subclis-DCljHJ5a.js";
61
+ import { i as registerProgramCommands } from "./command-registry-C9kvlc67.js";
62
62
  import { r as setProgramContext } from "./program-context-DMQJNwhC.js";
63
63
  import { r as listChannelPluginCatalogEntries } from "./catalog-BZSyH9a0.js";
64
- import { t as forceFreePort } from "./ports-DyX87qKc.js";
65
- import { t as ensurePluginRegistryLoaded } from "./plugin-registry-l3z9phEV.js";
66
- import { n as formatCliBannerLine, r as hasEmittedCliBanner, t as emitCliBanner } from "./banner-CgxCSS-T.js";
64
+ import { t as forceFreePort } from "./ports-BmSDzOHm.js";
65
+ import { t as ensurePluginRegistryLoaded } from "./plugin-registry-B0k-53-_.js";
66
+ import { n as formatCliBannerLine, r as hasEmittedCliBanner, t as emitCliBanner } from "./banner-Gtp-FQrx.js";
67
67
  import { Command } from "commander";
68
68
 
69
69
  //#region src/cli/channel-options.ts
@@ -199,13 +199,13 @@ function registerPreActionHooks(program, programVersion) {
199
199
  setVerbose(verbose);
200
200
  if (!verbose) process.env.NODE_NO_WARNINGS ??= "1";
201
201
  if (commandPath[0] === "doctor" || commandPath[0] === "completion") return;
202
- const { ensureConfigReady } = await import("./config-guard-qiKju2Fg.js").then((n) => n.t);
202
+ const { ensureConfigReady } = await import("./config-guard-CCOBZ77Q.js").then((n) => n.t);
203
203
  await ensureConfigReady({
204
204
  runtime: defaultRuntime,
205
205
  commandPath
206
206
  });
207
207
  if (PLUGIN_REQUIRED_COMMANDS.has(commandPath[0])) {
208
- const { ensurePluginRegistryLoaded } = await import("./plugin-registry-l3z9phEV.js").then((n) => n.n);
208
+ const { ensurePluginRegistryLoaded } = await import("./plugin-registry-B0k-53-_.js").then((n) => n.n);
209
209
  ensurePluginRegistryLoaded();
210
210
  }
211
211
  });
@@ -26,7 +26,7 @@ const entries = [
26
26
  name: "gateway",
27
27
  description: "ANIMA Gateway management and control",
28
28
  register: async (program) => {
29
- (await import("./gateway-cli-DYrzIvOE.js")).registerGatewayCli(program);
29
+ (await import("./gateway-cli-Buxz8Y2n.js")).registerGatewayCli(program);
30
30
  }
31
31
  },
32
32
  {
@@ -103,7 +103,7 @@ const entries = [
103
103
  name: "hooks",
104
104
  description: "Agent hook lifecycle and dependency management",
105
105
  register: async (program) => {
106
- (await import("./hooks-cli-ZK4Z044T.js")).registerHooksCli(program);
106
+ (await import("./hooks-cli-BuIU6v0Q.js")).registerHooksCli(program);
107
107
  }
108
108
  },
109
109
  {
@@ -117,8 +117,8 @@ const entries = [
117
117
  name: "plugins",
118
118
  description: "Install, update, and manage ANIMA extensions",
119
119
  register: async (program) => {
120
- (await import("./plugins-cli-CbXtuN4b.js")).registerPluginsCli(program);
121
- const { registerPluginCliCommands } = await import("./cli-CfvBmuhw.js");
120
+ (await import("./plugins-cli-YjM8IsVo.js")).registerPluginsCli(program);
121
+ const { registerPluginCliCommands } = await import("./cli-CJfwHH_z.js");
122
122
  registerPluginCliCommands(program, await loadConfig());
123
123
  }
124
124
  },
@@ -140,14 +140,14 @@ const entries = [
140
140
  name: "update",
141
141
  description: "Update ANIMA to the latest version",
142
142
  register: async (program) => {
143
- (await import("./update-cli-QP5L8xlv.js")).registerUpdateCli(program);
143
+ (await import("./update-cli-CnYFvEud.js")).registerUpdateCli(program);
144
144
  }
145
145
  },
146
146
  {
147
147
  name: "completion",
148
148
  description: "Generate shell completion for tab-complete support",
149
149
  register: async (program) => {
150
- (await import("./completion-cli-3eYvtAih.js").then((n) => n.n)).registerCompletionCli(program);
150
+ (await import("./completion-cli-DhbIrk13.js").then((n) => n.n)).registerCompletionCli(program);
151
151
  }
152
152
  }
153
153
  ];
@@ -215,7 +215,7 @@ const coreEntries = [
215
215
  description: "Initialize ANIMA config and the agent workspace"
216
216
  }],
217
217
  register: async ({ program }) => {
218
- (await import("./register.setup-DWDrQ7RT.js")).registerSetupCommand(program);
218
+ (await import("./register.setup-QAjNkIZr.js")).registerSetupCommand(program);
219
219
  }
220
220
  },
221
221
  {
@@ -224,7 +224,7 @@ const coreEntries = [
224
224
  description: "Interactive wizard for Gateway, workspace, and skills setup"
225
225
  }],
226
226
  register: async ({ program }) => {
227
- (await import("./register.onboard-thGXwzOX.js")).registerOnboardCommand(program);
227
+ (await import("./register.onboard-DiZzjEwz.js")).registerOnboardCommand(program);
228
228
  }
229
229
  },
230
230
  {
@@ -233,7 +233,7 @@ const coreEntries = [
233
233
  description: "Interactive configuration for NoxSoft, memory, heartbeat, and identity"
234
234
  }],
235
235
  register: async ({ program }) => {
236
- (await import("./register.configure-r5AViY3N.js")).registerConfigureCommand(program);
236
+ (await import("./register.configure-CNhagtHN.js")).registerConfigureCommand(program);
237
237
  }
238
238
  },
239
239
  {
@@ -242,7 +242,7 @@ const coreEntries = [
242
242
  description: "Advanced and complete settings for Gateway and CLI"
243
243
  }],
244
244
  register: async ({ program }) => {
245
- (await import("./settings-cli-JU5bg5jb.js")).registerSettingsCli(program);
245
+ (await import("./settings-cli-C9TMl9Ye.js")).registerSettingsCli(program);
246
246
  }
247
247
  },
248
248
  {
@@ -251,7 +251,7 @@ const coreEntries = [
251
251
  description: "Read, write, and manage ANIMA configuration"
252
252
  }],
253
253
  register: async ({ program }) => {
254
- (await import("./config-cli-cmNuTlw0.js")).registerConfigCli(program);
254
+ (await import("./config-cli-uk9vdQZH.js")).registerConfigCli(program);
255
255
  }
256
256
  },
257
257
  {
@@ -260,7 +260,7 @@ const coreEntries = [
260
260
  description: "Diagnose and repair Gateway and daemon issues"
261
261
  }],
262
262
  register: async ({ program }) => {
263
- (await import("./register.maintenance-Cpf0ZZTL.js")).registerMaintenanceCommands(program);
263
+ (await import("./register.maintenance-DWJjWsIl.js")).registerMaintenanceCommands(program);
264
264
  }
265
265
  },
266
266
  {
@@ -281,7 +281,7 @@ const coreEntries = [
281
281
  description: "Manage isolated agent workspaces, auth, and routing"
282
282
  }],
283
283
  register: async ({ program, ctx }) => {
284
- (await import("./register.agent-Bi2FqIlN.js")).registerAgentCommands(program, { agentChannelOptions: ctx.agentChannelOptions });
284
+ (await import("./register.agent-PbAKdlNK.js")).registerAgentCommands(program, { agentChannelOptions: ctx.agentChannelOptions });
285
285
  }
286
286
  },
287
287
  {
@@ -300,7 +300,7 @@ const coreEntries = [
300
300
  }
301
301
  ],
302
302
  register: async ({ program }) => {
303
- (await import("./register.status-health-sessions-Ce9QUAyj.js")).registerStatusHealthSessionsCommands(program);
303
+ (await import("./register.status-health-sessions-RZxaVSa6.js")).registerStatusHealthSessionsCommands(program);
304
304
  }
305
305
  },
306
306
  {
@@ -309,7 +309,7 @@ const coreEntries = [
309
309
  description: "Set your Anthropic API key — the fastest way to get started"
310
310
  }],
311
311
  register: async ({ program }) => {
312
- const { setupTokenCommand, hasAnthropicToken, autoDetectToken } = await import("./setup-token-CvRwJUVY.js");
312
+ const { setupTokenCommand, hasAnthropicToken, autoDetectToken } = await import("./setup-token-DBwe6GDq.js");
313
313
  program.command("setup-token").description("Set your Anthropic API key — no claude CLI login needed").option("--token <key>", "Anthropic API key (sk-ant-api01-... or sk-ant-oat01-...)").option("--skip-validation", "Skip live API check (use if offline)").option("--json", "Output JSON result", false).addHelpText("after", `
314
314
  Examples:
315
315
  anima setup-token # Interactive — prompts for key + validates
@@ -364,7 +364,7 @@ Examples:
364
364
  }
365
365
  ],
366
366
  register: async ({ program }) => {
367
- (await import("./register.anima-FFaI_C8x.js")).registerAnimaCommands(program);
367
+ (await import("./register.anima-CDcnWfQF.js")).registerAnimaCommands(program);
368
368
  }
369
369
  }
370
370
  ];
@@ -2,7 +2,7 @@ import { a as resolveAgentModelPrimary } from "./agent-scope-BLiq3nK_.js";
2
2
  import { _ as DEFAULT_MODEL, c as normalizeProviderId, d as resolveConfiguredModelRef, o as modelKey, r as buildModelAliasIndex, t as buildAllowedModelSet, v as DEFAULT_PROVIDER } from "./model-selection-C2dAUmK_.js";
3
3
  import { _ as readCodexCliCredentialsCached, c as upsertAuthProfile, h as resolveAnimaAgentDir, l as ensureAuthProfileStore, s as listProfilesForProvider } from "./auth-profiles-BhZX2spm.js";
4
4
  import { a as resolveEnvApiKey, n as getCustomProviderApiKey } from "./model-auth-DVG37yXU.js";
5
- import { ft as loadModelCatalog } from "./cli-session-DgUHOBYo.js";
5
+ import { ft as loadModelCatalog } from "./cli-session-CczB2Dni.js";
6
6
  import { r as ensureAuthenticated } from "./noxsoft-auth-D2__8j9_.js";
7
7
 
8
8
  //#region src/commands/auth-choice-options.ts
@@ -24,6 +24,12 @@ const AUTH_CHOICE_GROUP_DEFS = [
24
24
  label: "Anthropic API Key",
25
25
  hint: "Direct Anthropic API key for Claude",
26
26
  choices: ["apiKey"]
27
+ },
28
+ {
29
+ value: "gemini",
30
+ label: "Google Gemini API Key",
31
+ hint: "Direct Google API key for Gemini models",
32
+ choices: ["geminiApiKey"]
27
33
  }
28
34
  ];
29
35
  const BASE_AUTH_CHOICE_OPTIONS = [
@@ -40,6 +46,11 @@ const BASE_AUTH_CHOICE_OPTIONS = [
40
46
  {
41
47
  value: "apiKey",
42
48
  label: "Anthropic API key"
49
+ },
50
+ {
51
+ value: "geminiApiKey",
52
+ label: "Google Gemini API key",
53
+ hint: "For Gemini 2.0 models"
43
54
  }
44
55
  ];
45
56
  function buildAuthChoiceOptions(params) {
@@ -164,6 +175,17 @@ async function setAnthropicApiKey(key, agentDir) {
164
175
  agentDir: resolveAuthAgentDir(agentDir)
165
176
  });
166
177
  }
178
+ async function setGeminiApiKey(key, agentDir) {
179
+ upsertAuthProfile({
180
+ profileId: "google:default",
181
+ credential: {
182
+ type: "api_key",
183
+ provider: "google",
184
+ key
185
+ },
186
+ agentDir: resolveAuthAgentDir(agentDir)
187
+ });
188
+ }
167
189
 
168
190
  //#endregion
169
191
  //#region src/commands/onboard-auth.config-core.ts
@@ -231,6 +253,44 @@ async function applyAuthChoiceAnthropic(params) {
231
253
  return null;
232
254
  }
233
255
 
256
+ //#endregion
257
+ //#region src/commands/auth-choice.apply.gemini.ts
258
+ async function applyAuthChoiceGemini(params) {
259
+ if (params.authChoice === "geminiApiKey") {
260
+ if (params.opts?.tokenProvider && params.opts.tokenProvider !== "google") return null;
261
+ let nextConfig = params.config;
262
+ let hasCredential = false;
263
+ const envKey = process.env.GEMINI_API_KEY?.trim();
264
+ if (params.opts?.token) {
265
+ await setGeminiApiKey(normalizeApiKeyInput(params.opts.token), params.agentDir);
266
+ hasCredential = true;
267
+ }
268
+ if (!hasCredential && envKey) {
269
+ if (await params.prompter.confirm({
270
+ message: `Use existing GEMINI_API_KEY (env, ${formatApiKeyPreview(envKey)})?`,
271
+ initialValue: true
272
+ })) {
273
+ await setGeminiApiKey(envKey, params.agentDir);
274
+ hasCredential = true;
275
+ }
276
+ }
277
+ if (!hasCredential) {
278
+ const key = await params.prompter.text({
279
+ message: "Enter Google Gemini API key",
280
+ validate: validateApiKeyInput
281
+ });
282
+ await setGeminiApiKey(normalizeApiKeyInput(String(key ?? "")), params.agentDir);
283
+ }
284
+ nextConfig = applyAuthProfileConfig(nextConfig, {
285
+ profileId: "google:default",
286
+ provider: "google",
287
+ mode: "api_key"
288
+ });
289
+ return { config: nextConfig };
290
+ }
291
+ return null;
292
+ }
293
+
234
294
  //#endregion
235
295
  //#region src/commands/models/shared.ts
236
296
  const formatTokenK = (value) => {
@@ -623,8 +683,10 @@ async function applyAuthChoice(params) {
623
683
  }
624
684
  const codexResult = await applyAuthChoiceOpenAICodex(params);
625
685
  if (codexResult) return codexResult;
626
- const result = await applyAuthChoiceAnthropic(params);
627
- if (result) return result;
686
+ const anthropicResult = await applyAuthChoiceAnthropic(params);
687
+ if (anthropicResult) return anthropicResult;
688
+ const geminiResult = await applyAuthChoiceGemini(params);
689
+ if (geminiResult) return geminiResult;
628
690
  return { config: params.config };
629
691
  }
630
692
 
@@ -670,7 +732,8 @@ async function warnIfModelConfigLooksOff(config, prompter, options) {
670
732
  const PREFERRED_PROVIDER_BY_AUTH_CHOICE = {
671
733
  noxsoft: "anthropic",
672
734
  openaiCodex: "openai-codex",
673
- apiKey: "anthropic"
735
+ apiKey: "anthropic",
736
+ geminiApiKey: "google"
674
737
  };
675
738
  function resolvePreferredProviderForAuthChoice(choice) {
676
739
  return PREFERRED_PROVIDER_BY_AUTH_CHOICE[choice];
@@ -34,6 +34,17 @@ async function setAnthropicApiKey(key, agentDir) {
34
34
  agentDir: resolveAuthAgentDir(agentDir)
35
35
  });
36
36
  }
37
+ async function setGeminiApiKey(key, agentDir) {
38
+ upsertAuthProfile({
39
+ profileId: "google:default",
40
+ credential: {
41
+ type: "api_key",
42
+ provider: "google",
43
+ key
44
+ },
45
+ agentDir: resolveAuthAgentDir(agentDir)
46
+ });
47
+ }
37
48
 
38
49
  //#endregion
39
50
  //#region src/commands/onboard-auth.config-core.ts
@@ -114,4 +125,4 @@ var WizardCancelledError = class extends Error {
114
125
  };
115
126
 
116
127
  //#endregion
117
- export { isLocalBaseUrl as a, setAnthropicApiKey as c, formatTokenK as i, writeOAuthCredentials as l, ensureFlagCompatibility as n, resolveKnownAgentId as o, formatMs as r, applyAuthProfileConfig as s, WizardCancelledError as t };
128
+ export { isLocalBaseUrl as a, setAnthropicApiKey as c, formatTokenK as i, setGeminiApiKey as l, ensureFlagCompatibility as n, resolveKnownAgentId as o, formatMs as r, applyAuthProfileConfig as s, WizardCancelledError as t, writeOAuthCredentials as u };
@@ -1,7 +1,7 @@
1
1
  import "./paths-B-AkG5FD.js";
2
2
  import { j as resolvePreferredAnimaTmpDir } from "./subsystem-WFp78xn1.js";
3
3
  import "./exec-DnanRQle.js";
4
- import { d as normalizeCdpWsUrl, g as withCdpSocket, h as getHeadersWithAuth, m as fetchJson, p as appendCdpPath, t as getChromeWebSocketUrl, u as formatAriaSnapshot } from "./chrome-Cxl7I5SB.js";
4
+ import { d as normalizeCdpWsUrl, g as withCdpSocket, h as getHeadersWithAuth, m as fetchJson, p as appendCdpPath, t as getChromeWebSocketUrl, u as formatAriaSnapshot } from "./chrome-CKvch3UL.js";
5
5
  import { t as formatCliCommand } from "./command-format-GLYKXXl-.js";
6
6
  import { n as formatErrorMessage } from "./errors-UbDRvfEx.js";
7
7
  import fs from "node:fs/promises";
@@ -2,9 +2,9 @@ import { et as resolvePreferredAnimaTmpDir } from "./entry.js";
2
2
  import { t as formatCliCommand } from "./command-format-kLw3YIIu.js";
3
3
  import "./utils-D1VGbO3C.js";
4
4
  import "./exec-BtBJICHE.js";
5
- import { d as normalizeCdpWsUrl, g as withCdpSocket, h as getHeadersWithAuth, m as fetchJson, p as appendCdpPath, t as getChromeWebSocketUrl, u as formatAriaSnapshot } from "./chrome-B2-33FWf.js";
6
- import { n as formatErrorMessage } from "./errors-l_q3lLBC.js";
7
- import "./ports-COy7Yg_k.js";
5
+ import { d as normalizeCdpWsUrl, g as withCdpSocket, h as getHeadersWithAuth, m as fetchJson, p as appendCdpPath, t as getChromeWebSocketUrl, u as formatAriaSnapshot } from "./chrome-CB6uZMvl.js";
6
+ import { n as formatErrorMessage } from "./errors-B9FgVZ2s.js";
7
+ import "./ports-Bv3sZ3bd.js";
8
8
  import path from "node:path";
9
9
  import fs from "node:fs/promises";
10
10
  import crypto from "node:crypto";