nolo-cli 0.54.0 → 0.61.0-alpha.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 (154) hide show
  1. package/README.md +3 -3
  2. package/{_executeModel-OPTKYHJA.js → _executeModel-CKT6RGTL.js} +48 -45
  3. package/{action-ORXWW2ZG.js → action-76JX3JX3.js} +7 -6
  4. package/{addContentAction-53BZ34AE.js → addContentAction-V3NAZRTJ.js} +6 -5
  5. package/{addDialogAgentAction-JRYUS54Y.js → addDialogAgentAction-RZOAF46K.js} +5 -4
  6. package/{agentDeleteCommand-FJIWU2BS.js → agentDeleteCommand-VN7NPXQ4.js} +30 -27
  7. package/{agentEmailCommands-CE32L43B.js → agentEmailCommands-F2TNAV4A.js} +59 -56
  8. package/{agentGrantCommands-2LEZDADN.js → agentGrantCommands-R3VQEZJR.js} +1 -1
  9. package/{agentListCommands-VJNKULIK.js → agentListCommands-OSM2ANI3.js} +61 -31
  10. package/{agentMachineCommands-HCJ3WQXL.js → agentMachineCommands-MTPWYVRV.js} +31 -28
  11. package/{agentPullCommand-M552CYSI.js → agentPullCommand-N7L2CT7L.js} +2 -2
  12. package/{agentRecordCommands-QFWERED4.js → agentRecordCommands-VWAWTVVC.js} +57 -54
  13. package/{agentRunCommand-G3GQMUNN.js → agentRunCommand-PLZOBNVK.js} +61 -58
  14. package/{agentRunControl-INKFDXDA.js → agentRunControl-WECMOO6O.js} +11 -6
  15. package/{agentRuntimeLocal-K327ELSL.js → agentRuntimeLocal-XCJLRWQE.js} +26 -23
  16. package/{agentSlice-ODKF4J6M.js → agentSlice-F6DOP4IW.js} +8 -7
  17. package/{appDeleteCommands-XUXMFDI4.js → appDeleteCommands-3BCFTRFJ.js} +30 -27
  18. package/{appDeployCommands-37F4GPCU.js → appDeployCommands-B4GMHCYA.js} +30 -27
  19. package/{appDeployStatusCommands-WSPU7TUK.js → appDeployStatusCommands-4MN36WIG.js} +30 -27
  20. package/{appGetCommands-YLOBA3EM.js → appGetCommands-4GJIEUAX.js} +30 -27
  21. package/{appListCommands-UD62R5ME.js → appListCommands-CHU53GSX.js} +30 -27
  22. package/{authCommand-OK6HLHGS.js → authCommand-WOTWLJNF.js} +35 -29
  23. package/{authCommands-2DUIUEMT.js → authCommands-ILTBI6JV.js} +7 -5
  24. package/{chatQueueReduxAdapter-TV2TUOQS.js → chatQueueReduxAdapter-HNSQXNIR.js} +20 -18
  25. package/{chunk-HPW5MNDQ.js → chunk-22BTGNSP.js} +113 -57
  26. package/{chunk-TR4DXUYX.js → chunk-2HPRMEEZ.js} +1180 -736
  27. package/{chunk-UNZDCI3O.js → chunk-2KDR4CWE.js} +35 -4
  28. package/{chunk-3ZTR7ZO4.js → chunk-2PGGC63K.js} +1 -1
  29. package/{chunk-JXIP6ZWH.js → chunk-37QVS7BU.js} +18 -5
  30. package/{chunk-EA5OYZVD.js → chunk-37XDGCY7.js} +1 -1
  31. package/chunk-3BLB7QKO.js +433 -0
  32. package/{chunk-CS6TCJ7E.js → chunk-3JQ2NRYU.js} +30 -7
  33. package/{chunk-RHMDMTDK.js → chunk-3JWKQDA4.js} +2 -2
  34. package/{chunk-3LKZRP7E.js → chunk-3QGUVVX5.js} +2 -2
  35. package/{chunk-SSXTSPSG.js → chunk-45YO6H7P.js} +71 -30
  36. package/{chunk-EJE33XNR.js → chunk-4C4ST2YE.js} +1521 -565
  37. package/{chunk-YLCUU3WM.js → chunk-4NJEIGBQ.js} +5 -5
  38. package/{chunk-K4NISKOR.js → chunk-5ZYA4JJ3.js} +47 -17
  39. package/{chunk-3Y2K5O2R.js → chunk-7A3RRUCQ.js} +125 -40
  40. package/{chunk-5FCIPEKT.js → chunk-7O7KH4X5.js} +1051 -926
  41. package/{chunk-6HDYSFLO.js → chunk-7UF7CQ6B.js} +3 -3
  42. package/{chunk-SUEIAK5N.js → chunk-AQMVUA7N.js} +1 -0
  43. package/{chunk-WQHGJHAL.js → chunk-AVE2YR4F.js} +732 -726
  44. package/{chunk-6COJEAYH.js → chunk-B7DXRX7F.js} +44 -37
  45. package/chunk-BFU6C242.js +66 -0
  46. package/{chunk-IA3A5373.js → chunk-C3FZR5EC.js} +1 -1
  47. package/{chunk-IWUMSAQF.js → chunk-CJCJF5XB.js} +26 -3
  48. package/{chunk-UGBHDMHI.js → chunk-CP7VIDZ7.js} +1 -1
  49. package/{chunk-JON2PHYT.js → chunk-CTCW7U7N.js} +1 -1
  50. package/{chunk-YBFJQC2M.js → chunk-D5XKNNUV.js} +65 -42
  51. package/{chunk-7NYDJAQ7.js → chunk-DNNSCSA2.js} +5 -5
  52. package/{chunk-NI2BS6UD.js → chunk-DWUCB2A3.js} +1 -1
  53. package/{chunk-AA564GBL.js → chunk-DZZL7UBV.js} +1 -1
  54. package/{chunk-75MSWWUE.js → chunk-E6RGHPDR.js} +5 -3
  55. package/chunk-EDKF7RX4.js +30 -0
  56. package/{chunk-FJHMLRDQ.js → chunk-ES6CVKVD.js} +21 -27
  57. package/{chunk-SYYUU7EV.js → chunk-FHAGENAS.js} +2 -3
  58. package/{chunk-NJUQBYFJ.js → chunk-FKFMIBTT.js} +3 -1
  59. package/{chunk-INZZJSQF.js → chunk-FZGV4FGK.js} +24 -12
  60. package/{chunk-YQBXOHE6.js → chunk-GAL47RNP.js} +1 -1
  61. package/{chunk-UOWXD4VN.js → chunk-HBPV76EK.js} +335 -243
  62. package/{chunk-MLEZPE3U.js → chunk-HLU5Q2GV.js} +4 -4
  63. package/{chunk-TC6P4NDR.js → chunk-HQP7HJDL.js} +6 -6
  64. package/{chunk-7FAS3NEF.js → chunk-IYCUMIYS.js} +19 -15
  65. package/{chunk-AUVFJGPC.js → chunk-JX5PJCWS.js} +7 -5
  66. package/{chunk-LYGNQHUW.js → chunk-JYYZCK2Z.js} +2 -4
  67. package/{chunk-XOJRZUPF.js → chunk-KWSQR2KK.js} +14 -29
  68. package/{chunk-2WBFJHQA.js → chunk-L7B47JXR.js} +34 -39
  69. package/{chunk-EICIFHVS.js → chunk-LAFC3B2I.js} +1 -1
  70. package/{chunk-N4JKMCY3.js → chunk-LJKICKVC.js} +2 -2
  71. package/chunk-M3JEW6N6.js +193 -0
  72. package/{chunk-LRGKOI5Y.js → chunk-MBOEV4L2.js} +7 -3
  73. package/{chunk-SVDMVX4G.js → chunk-MMZ6ZTVO.js} +112 -73
  74. package/{chunk-JDSUTNYY.js → chunk-MP64VFGD.js} +2 -2
  75. package/{chunk-NFLA6GSU.js → chunk-MXUDQZXQ.js} +44 -5
  76. package/chunk-N4G4PKQ6.js +23 -0
  77. package/{chunk-KXKQO4Q6.js → chunk-NTW5GWDM.js} +58 -1
  78. package/chunk-ONXOABJR.js +215 -0
  79. package/{chunk-TY3ADTX5.js → chunk-OZX2IPKM.js} +7 -2
  80. package/{chunk-Q4XZVZPN.js → chunk-P7OOB7QP.js} +1 -1
  81. package/{chunk-XIJZOCSP.js → chunk-PEZJEQAO.js} +1 -1
  82. package/{chunk-SWJGJMTW.js → chunk-PQDIDWGX.js} +1 -1
  83. package/chunk-PSCNXBYA.js +11 -0
  84. package/{chunk-BY2FF2C4.js → chunk-QEFJJS2I.js} +55 -73
  85. package/{chunk-BG7J6Y5X.js → chunk-QEW2MFDQ.js} +1 -1
  86. package/{chunk-KLIBF3BY.js → chunk-RDBARW6T.js} +8 -3
  87. package/{chunk-ZVOHVJI3.js → chunk-RJ2SAFB5.js} +82 -35
  88. package/{chunk-MYMBBB6Q.js → chunk-RVWRKFUB.js} +5 -3
  89. package/{chunk-43CXXVJD.js → chunk-RXX4GDIH.js} +1 -1
  90. package/chunk-SEJ5OS6F.js +49 -0
  91. package/{chunk-SAJSBPI2.js → chunk-SOJM57FX.js} +5 -2
  92. package/{chunk-EKLRRZIN.js → chunk-SPAQ4PVV.js} +0 -5
  93. package/{chunk-L7NG2M6H.js → chunk-TRV2MIDW.js} +89 -74
  94. package/{chunk-5UAYZEXO.js → chunk-UZPQSVM6.js} +1 -1
  95. package/{chunk-SVC3GGUA.js → chunk-VMWYBIXG.js} +7 -5
  96. package/{chunk-ZHXJ6M7T.js → chunk-W7XHHYWM.js} +4 -0
  97. package/{chunk-UR66XPVF.js → chunk-XAVSS3KE.js} +21 -3
  98. package/{chunk-A65UV3M5.js → chunk-XOKOSO35.js} +10 -19
  99. package/{chunk-VZMUOPYG.js → chunk-XTJTN3RW.js} +46 -3
  100. package/{chunk-T5HJEUQN.js → chunk-YCDWJX45.js} +1 -1
  101. package/{chunk-BBTN4NQD.js → chunk-Z4QSJILV.js} +85 -13
  102. package/{chunk-O5FLGN2L.js → chunk-ZRSJ3JEH.js} +6 -2
  103. package/{cliExecutor-BBUVQU4L.js → cliExecutor-HG3S345O.js} +1 -1
  104. package/{codingSkills-BCQXRZOI.js → codingSkills-VDXQYWX4.js} +2 -2
  105. package/{contentThunks-KNI6VXLT.js → contentThunks-7YG2ZYQC.js} +21 -19
  106. package/{cooldownCommands-GI5NNWGL.js → cooldownCommands-BSCH2W7P.js} +2 -2
  107. package/{createAgentAutomationAction-OK4L33KF.js → createAgentAutomationAction-PJQSCAIO.js} +23 -21
  108. package/{createDialogAction-JDSMY4AY.js → createDialogAction-SFEJX6SP.js} +23 -21
  109. package/{createPageAction-T7RA3HCG.js → createPageAction-B7WRHOQO.js} +24 -22
  110. package/{dbSlice-TVX6SN2T.js → dbSlice-IBVOBVMS.js} +5 -4
  111. package/{deleteFile-JYKRT7C3.js → deleteFile-FWP2PSBG.js} +3 -2
  112. package/{dialogCommands-UQZYWOOV.js → dialogCommands-VL2X22QC.js} +30 -27
  113. package/{dialogSlice-TYW2G7IL.js → dialogSlice-ANMACABO.js} +20 -18
  114. package/{docCreateCommands-OA6HZBWO.js → docCreateCommands-ITLGZ5YI.js} +29 -26
  115. package/{docDeleteCommands-KBB3YQI2.js → docDeleteCommands-LH3YNL4C.js} +30 -27
  116. package/{docReadCommands-ZLMFVC67.js → docReadCommands-YAJ77F36.js} +29 -26
  117. package/{docStore-2URPBVCS.js → docStore-D4HGHPWI.js} +6 -5
  118. package/{docUpdateCommands-HMH5KUON.js → docUpdateCommands-DQBOMH2G.js} +29 -26
  119. package/{getPricing-RFOPUWHY.js → getPricing-NM3NUTAS.js} +4 -4
  120. package/handleSendMessageAction-DF2OABGW.js +675 -0
  121. package/index.js +79 -88
  122. package/{lib-2ZTNRXR4.js → lib-FRRS27KN.js} +63 -28
  123. package/{localRuntimeAuthority-KQDAE64E.js → localRuntimeAuthority-R5UBODT3.js} +6 -4
  124. package/{localRuntimeDb-PF7CFKDL.js → localRuntimeDb-P37ZTX55.js} +1 -1
  125. package/{machineCommands-RK6L7ZWL.js → machineCommands-JXDYQ5LB.js} +296 -79
  126. package/{machineWsRunDispatch-3X64DW2Z.js → machineWsRunDispatch-3QHI7JX5.js} +55 -52
  127. package/{memberThunks-THZYZFSN.js → memberThunks-VZI6G7YZ.js} +10 -8
  128. package/{models-JVKUEER5.js → models-FAMINFZ7.js} +2 -2
  129. package/package.json +3 -2
  130. package/{read-K4JU4MQC.js → read-2BYWW7AA.js} +3 -2
  131. package/{readDocTool-LQGR6FUN.js → readDocTool-LC3A7QTB.js} +1 -1
  132. package/{readlineWorkspace-XUFJV3RS.js → readlineWorkspace-KVZTEAHB.js} +4365 -2795
  133. package/{removeDialogAgentAction-ECHCFB7N.js → removeDialogAgentAction-SFYZXHNK.js} +8 -7
  134. package/{runAgentClientLoop-24GQ2AW6.js → runAgentClientLoop-KGTEL7ZP.js} +49 -45
  135. package/{runtimeDoctorCommands-JKTTN723.js → runtimeDoctorCommands-CROTMULY.js} +7 -5
  136. package/{setDialogExtraReferencesAction-KCVJNGMB.js → setDialogExtraReferencesAction-Q32RGFTA.js} +6 -5
  137. package/{setPrimaryDialogAgentAction-VDOBOMKC.js → setPrimaryDialogAgentAction-BFYJHUJS.js} +8 -7
  138. package/{settingSlice-VR2IJSXC.js → settingSlice-IRUU4VFB.js} +6 -5
  139. package/{skillDiscovery-2QTZINON.js → skillDiscovery-NTRLM6KP.js} +1 -1
  140. package/{spaceCommands-S5YJJXL7.js → spaceCommands-KNAYWMCZ.js} +33 -215
  141. package/{streamAgentChatTurn-QHKP3ABO.js → streamAgentChatTurn-FLYPTXKZ.js} +105 -73
  142. package/{switchDialogAgentAction-5L4UP7VI.js → switchDialogAgentAction-L2KOKCGG.js} +5 -4
  143. package/{tableCommands-R6WFRDYF.js → tableCommands-SUNTHAYX.js} +1 -1
  144. package/{toolApiClient-53U4UDFF.js → toolApiClient-VGYUB4P5.js} +2 -1
  145. package/{tools-SSXSTC3O.js → tools-CVLUXK6P.js} +37 -34
  146. package/{tuiSummaryLlmCaller-URFJHFC5.js → tuiSummaryLlmCaller-F3DPFFZM.js} +15 -13
  147. package/{updateCommands-IYKLF3JX.js → updateCommands-AJYSD73Y.js} +2 -2
  148. package/{updateDialogTitleAction-YFYAEW3T.js → updateDialogTitleAction-HWJIZEIV.js} +23 -21
  149. package/agentSuperviseCommands-5AR3DKNN.js +0 -640
  150. package/chunk-6IGD47IC.js +0 -19
  151. package/chunk-FD36SCCD.js +0 -105
  152. package/chunk-GRFK2XP4.js +0 -230
  153. package/chunk-HJTAGT3W.js +0 -370
  154. package/handleSendMessageAction-GO53TY7U.js +0 -409
@@ -1,13 +1,12 @@
1
1
  import {
2
2
  defaultOpenBrowser
3
- } from "./chunk-75MSWWUE.js";
3
+ } from "./chunk-E6RGHPDR.js";
4
4
  import {
5
5
  generateCloudflareEmailRoutingToken,
6
6
  parseFlagWithOptionalValue,
7
7
  runCloudflareOAuthLogin,
8
8
  upsertEnvVariable
9
- } from "./chunk-SWJGJMTW.js";
10
- import "./chunk-ESHYE7WU.js";
9
+ } from "./chunk-PQDIDWGX.js";
11
10
  import {
12
11
  ANTHROPIC_OAUTH_AUTHORIZE_URL,
13
12
  ANTHROPIC_OAUTH_CALLBACK_PORT,
@@ -40,34 +39,36 @@ import {
40
39
  generatePkcePair,
41
40
  normalizeAnthropicTokenPayload,
42
41
  readJsonBody,
42
+ renderDeviceCodeDisplay,
43
43
  runAntigravityOAuthLogin,
44
44
  runOpenAiCodexBrowserPkce,
45
45
  runOpenAiCodexDeviceCode,
46
46
  startCallbackServer,
47
47
  validateXAIEndpoint,
48
48
  xaiOAuthDiscovery
49
- } from "./chunk-NFLA6GSU.js";
49
+ } from "./chunk-MXUDQZXQ.js";
50
+ import "./chunk-ESHYE7WU.js";
50
51
  import "./chunk-JBTJAPUF.js";
51
- import "./chunk-BG7J6Y5X.js";
52
- import "./chunk-IA3A5373.js";
52
+ import "./chunk-C3FZR5EC.js";
53
53
  import "./chunk-GLKOYSRU.js";
54
- import "./chunk-KLIBF3BY.js";
55
- import "./chunk-N4JKMCY3.js";
56
- import "./chunk-SVDMVX4G.js";
54
+ import "./chunk-QEW2MFDQ.js";
55
+ import "./chunk-RDBARW6T.js";
56
+ import "./chunk-LJKICKVC.js";
57
+ import "./chunk-MMZ6ZTVO.js";
57
58
  import {
58
59
  createOAuthTokenStore
59
- } from "./chunk-FD36SCCD.js";
60
- import "./chunk-ZHXJ6M7T.js";
60
+ } from "./chunk-ONXOABJR.js";
61
+ import "./chunk-W7XHHYWM.js";
61
62
  import {
62
63
  toErrorMessage
63
64
  } from "./chunk-HNMXYYJR.js";
64
65
  import {
65
66
  buildEnvFromProfile,
66
67
  loadProfileConfig
67
- } from "./chunk-UNZDCI3O.js";
68
+ } from "./chunk-2KDR4CWE.js";
68
69
  import "./chunk-A7GB5UGH.js";
69
70
  import "./chunk-OLZBQWZU.js";
70
- import "./chunk-HPW5MNDQ.js";
71
+ import "./chunk-22BTGNSP.js";
71
72
  import "./chunk-NHRQCXIQ.js";
72
73
  import {
73
74
  asOptionalFiniteNumber
@@ -383,15 +384,17 @@ async function runXaiOAuthDeviceCode(deps = {}) {
383
384
  const start = await requestXaiDeviceCode(fetchImpl, deviceAuthorizationEndpoint);
384
385
  const browserUrl = start.verificationUriComplete ?? start.verificationUri;
385
386
  const expiresMinutes = Math.max(1, Math.round(start.expiresInMs / 6e4));
386
- output.log("Authorize nolo-cli for xAI Grok (device code / headless):");
387
- output.log(` URL: ${start.verificationUri}`);
388
- if (start.verificationUriComplete) {
389
- output.log(` Complete URL: ${start.verificationUriComplete}`);
387
+ for (const line of renderDeviceCodeDisplay({
388
+ provider: "xAI Grok",
389
+ verificationUrl: start.verificationUri,
390
+ completeUrl: start.verificationUriComplete,
391
+ userCode: start.userCode,
392
+ notes: [
393
+ `Code expires in ~${expiresMinutes} minute(s). Never share the code or tokens.`
394
+ ]
395
+ })) {
396
+ output.log(line);
390
397
  }
391
- output.log(` Code: ${start.userCode}`);
392
- output.log(
393
- ` Code expires in ~${expiresMinutes} minute(s). Never share the code or tokens.`
394
- );
395
398
  if (deps.openBrowser) {
396
399
  try {
397
400
  const opened = await deps.openBrowser(browserUrl);
@@ -653,7 +656,7 @@ Waiting for browser authentication... (polling ${CURSOR_POLL_URL})`
653
656
  var SYNC_HELP_LINE = ` --sync-to-server After local save, push the credential to your nolo server
654
657
  (default when NOLO_SERVER + AUTH_TOKEN / profile are set).
655
658
  --no-sync-to-server Skip server sync even when server config is available.
656
- --sync-only Push ~/.nolo/credentials/<provider>.json to the server without re-login.`;
659
+ --sync-only Push $NOLO_HOME/credentials/<provider>.json (or ~/.nolo/credentials when NOLO_HOME is unset) to the server without re-login.`;
657
660
  var CHATGPT_HELP_TEXT = `Authorize nolo-cli to call the OpenAI Codex / ChatGPT Plus API on your behalf.
658
661
 
659
662
  This authorizes model API access only. It does NOT log you into the Nolo platform.
@@ -670,7 +673,7 @@ ${SYNC_HELP_LINE}
670
673
 
671
674
  The default flow is device-code, which works headless: open the printed URL on any
672
675
  machine with a browser where you are already logged into ChatGPT. After approval, the
673
- access and refresh tokens are stored in ~/.nolo/credentials/chatgpt.json.
676
+ access and refresh tokens are stored in $NOLO_HOME/credentials/chatgpt.json (or ~/.nolo/credentials/chatgpt.json when NOLO_HOME is unset).
674
677
 
675
678
  Agents can reference the stored token by setting apiKeyRef: "chatgpt" with
676
679
  apiSource: "custom" and provider: "openai".
@@ -686,7 +689,7 @@ Usage:
686
689
  Default (interactive desktop): OIDC PKCE loopback on 127.0.0.1:56121.
687
690
  Headless / SSH / Docker: use --device-code or --no-browser (RFC 8628 device
688
691
  authorization; no localhost callback). After approval, tokens are stored in
689
- ~/.nolo/credentials/xai.json.
692
+ $NOLO_HOME/credentials/xai.json (or ~/.nolo/credentials/xai.json when NOLO_HOME is unset).
690
693
 
691
694
  The OAuth client_id is the same fixed value used by NousResearch/hermes-agent
692
695
  (MIT), oh-my-pi, and OpenClaw; xAI does not publish a public client registration flow.
@@ -711,7 +714,7 @@ Usage:
711
714
 
712
715
  Opens a browser to https://accounts.google.com (OIDC PKCE loopback on 127.0.0.1:51121).
713
716
  After approval, the flow provisions a Cloud Code Assist project and stores the
714
- access and refresh tokens in ~/.nolo/credentials/antigravity.json.
717
+ access and refresh tokens in $NOLO_HOME/credentials/antigravity.json (or ~/.nolo/credentials/antigravity.json when NOLO_HOME is unset).
715
718
 
716
719
  The OAuth client_id/secret are the same base64-decoded values used by
717
720
  oh-my-pi; Google does not publish a public Cloud Code Assist client registration.
@@ -735,7 +738,7 @@ Usage:
735
738
 
736
739
  The default flow returns to a loopback callback on localhost:54545. With
737
740
  --no-browser, paste the final callback URL or authorization code into the
738
- terminal. Tokens are stored in ~/.nolo/credentials/claude.json.
741
+ terminal. Tokens are stored in $NOLO_HOME/credentials/claude.json (or ~/.nolo/credentials/claude.json when NOLO_HOME is unset).
739
742
 
740
743
  Options:
741
744
  --browser Open the Anthropic authorization page (default).
@@ -759,7 +762,7 @@ https://api2.cursor.sh/auth/poll until you approve. There is no loopback
759
762
  callback \u2014 this is a poll-based device flow, so it works in headless / SSH /
760
763
  Docker environments too.
761
764
 
762
- After approval, tokens are stored in ~/.nolo/credentials/cursor.json.
765
+ After approval, tokens are stored in $NOLO_HOME/credentials/cursor.json (or ~/.nolo/credentials/cursor.json when NOLO_HOME is unset).
763
766
  Agents can reference the stored token with apiKeyRef: "cursor".
764
767
 
765
768
  Options:
@@ -777,7 +780,7 @@ Usage:
777
780
 
778
781
  Opens a browser to https://dash.cloudflare.com (OAuth 2.0 PKCE loopback on
779
782
  127.0.0.1:56122). After approval, the OAuth access token is stored locally in
780
- ~/.nolo/credentials/cloudflare.json.
783
+ $NOLO_HOME/credentials/cloudflare.json (or ~/.nolo/credentials/cloudflare.json when NOLO_HOME is unset).
781
784
 
782
785
  To use this flow you must first create a Cloudflare OAuth client in the
783
786
  Cloudflare Dashboard (Manage Account > OAuth clients) and obtain a client_id.
@@ -890,7 +893,10 @@ async function syncCredentialToServer(provider, credential, deps) {
890
893
  async function runAuthProviderCommand(provider, args, _ctx, deps = {}) {
891
894
  const output = deps.output ?? console;
892
895
  const error = deps.error ?? console;
893
- const tokenStore = deps.tokenStore ?? createOAuthTokenStore();
896
+ const tokenStore = deps.tokenStore ?? createOAuthTokenStore(
897
+ void 0,
898
+ deps.credentialMigration ?? { enableLegacyMigration: true }
899
+ );
894
900
  if (args.includes("--help") || args.includes("-h")) {
895
901
  output.log(HELP_BY_PROVIDER[provider]);
896
902
  return 0;
@@ -5,13 +5,14 @@ import {
5
5
  defaultOpenBrowser,
6
6
  runLoginCommand,
7
7
  runLogoutCommand,
8
- runWhoamiCommand
9
- } from "./chunk-75MSWWUE.js";
8
+ runWhoamiCommand,
9
+ saveTokenLogin
10
+ } from "./chunk-E6RGHPDR.js";
10
11
  import "./chunk-ESHYE7WU.js";
11
12
  import "./chunk-JBTJAPUF.js";
12
- import "./chunk-IA3A5373.js";
13
+ import "./chunk-C3FZR5EC.js";
13
14
  import "./chunk-GLKOYSRU.js";
14
- import "./chunk-UNZDCI3O.js";
15
+ import "./chunk-2KDR4CWE.js";
15
16
  import "./chunk-A7GB5UGH.js";
16
17
  import "./chunk-OLZBQWZU.js";
17
18
  import "./chunk-NHRQCXIQ.js";
@@ -31,5 +32,6 @@ export {
31
32
  defaultOpenBrowser,
32
33
  runLoginCommand,
33
34
  runLogoutCommand,
34
- runWhoamiCommand
35
+ runWhoamiCommand,
36
+ saveTokenLogin
35
37
  };
@@ -4,13 +4,13 @@ import {
4
4
  } from "./chunk-YPREESF4.js";
5
5
  import {
6
6
  handleSendMessage
7
- } from "./chunk-YBFJQC2M.js";
7
+ } from "./chunk-D5XKNNUV.js";
8
8
  import "./chunk-EVBFYPDC.js";
9
9
  import "./chunk-HQUORJTM.js";
10
10
  import "./chunk-YYLHWIW6.js";
11
11
  import "./chunk-AGGIDPCZ.js";
12
- import "./chunk-TC6P4NDR.js";
13
- import "./chunk-YLCUU3WM.js";
12
+ import "./chunk-HQP7HJDL.js";
13
+ import "./chunk-4NJEIGBQ.js";
14
14
  import "./chunk-5RGU3J7P.js";
15
15
  import {
16
16
  clearPendingUserInputQueue,
@@ -21,36 +21,38 @@ import {
21
21
  } from "./chunk-6YTOJY35.js";
22
22
  import "./chunk-M76ECQRD.js";
23
23
  import "./chunk-YDH3FDFQ.js";
24
- import "./chunk-K4NISKOR.js";
25
- import "./chunk-BBTN4NQD.js";
26
- import "./chunk-N4JKMCY3.js";
24
+ import "./chunk-5ZYA4JJ3.js";
25
+ import "./chunk-Z4QSJILV.js";
26
+ import "./chunk-LJKICKVC.js";
27
+ import "./chunk-PSCNXBYA.js";
27
28
  import "./chunk-BYXBJQAS.js";
28
- import "./chunk-SVDMVX4G.js";
29
+ import "./chunk-MMZ6ZTVO.js";
29
30
  import "./chunk-DWLEOOGR.js";
30
- import "./chunk-CS6TCJ7E.js";
31
- import "./chunk-FD36SCCD.js";
32
- import "./chunk-ZHXJ6M7T.js";
31
+ import "./chunk-3JQ2NRYU.js";
32
+ import "./chunk-ONXOABJR.js";
33
+ import "./chunk-W7XHHYWM.js";
33
34
  import "./chunk-HNMXYYJR.js";
34
35
  import "./chunk-BYEJ7K2Z.js";
35
- import "./chunk-NJUQBYFJ.js";
36
- import "./chunk-HPW5MNDQ.js";
37
- import "./chunk-SVC3GGUA.js";
36
+ import "./chunk-FKFMIBTT.js";
37
+ import "./chunk-22BTGNSP.js";
38
+ import "./chunk-VMWYBIXG.js";
38
39
  import "./chunk-Y5GCAMGP.js";
39
40
  import "./chunk-UZ6XXCVR.js";
40
41
  import "./chunk-KX6YBIHG.js";
41
- import "./chunk-MYMBBB6Q.js";
42
+ import "./chunk-RVWRKFUB.js";
42
43
  import "./chunk-UAD2WT54.js";
43
- import "./chunk-7NYDJAQ7.js";
44
+ import "./chunk-DNNSCSA2.js";
44
45
  import "./chunk-NHRQCXIQ.js";
45
46
  import "./chunk-WWC7I6TA.js";
46
47
  import "./chunk-I42VC5KR.js";
47
- import "./chunk-SAJSBPI2.js";
48
+ import "./chunk-SOJM57FX.js";
48
49
  import "./chunk-QSJ3HFEF.js";
49
- import "./chunk-2WBFJHQA.js";
50
+ import "./chunk-L7B47JXR.js";
50
51
  import "./chunk-BJIRLHJR.js";
51
- import "./chunk-XOJRZUPF.js";
52
+ import "./chunk-KWSQR2KK.js";
52
53
  import "./chunk-QOKAKDPE.js";
53
54
  import "./chunk-OW765XBU.js";
55
+ import "./chunk-SEJ5OS6F.js";
54
56
  import "./chunk-GBRG75BQ.js";
55
57
  import "./chunk-3EUW3WEO.js";
56
58
  import "./chunk-U6VC4MU4.js";
@@ -37,14 +37,18 @@ var PLATFORM_HOSTED_KIMI_K26_OPENROUTER_MODEL_ID = "qwen/qwen3.8-27b";
37
37
  var PLATFORM_HOSTED_GLM_53_MODEL = "glm-5.3";
38
38
  var PLATFORM_HOSTED_GLM_52_MODEL = "glm-5.2";
39
39
  var PLATFORM_HOSTED_GLM_53_FLASH_MODEL = "glm-5-3-flash";
40
+ var PLATFORM_HOSTED_GEMINI_38_FLASH_MODEL = "gemini-3.8-flash";
40
41
  var PLATFORM_HOSTED_GEMINI_37_FLASH_MODEL = "gemini-3.7-flash";
42
+ var PLATFORM_HOSTED_GEMINI_25_PRO_MODEL = "gemini-2.5-pro";
43
+ var PLATFORM_HOSTED_GEMINI_31_PRO_MODEL = "gemini-3.1-pro";
41
44
  var PLATFORM_HOSTED_GEMINI_FLASH_IMAGE_MODEL = "gemini-3.1-flash-image-preview";
42
45
  var PLATFORM_HOSTED_GEMINI_PRO_IMAGE_MODEL = "gemini-3-pro-image-preview";
43
46
  var PLATFORM_HOSTED_GEMINI_FLASH_LITE_IMAGE_MODEL = "gemini-3.1-flash-lite-image";
44
47
  var PLATFORM_HOSTED_OPENAI_IMAGE_MODEL = "gpt-image-2";
45
- var PLATFORM_HOSTED_DEEPSEEK_FLASH_MODEL = "deepseek-v4-flash";
48
+ var PLATFORM_HOSTED_DEEPSEEK_FLASH_MODEL = "deepseek-flash";
46
49
  var PLATFORM_HOSTED_DEEPSEEK_FLASH_VISION_EXP_MODEL = "deepseek-v4-flash-vision-exp";
47
50
  var PLATFORM_HOSTED_DEEPSEEK_PRO_MODEL = "deepseek-v4-pro";
51
+ var PLATFORM_HOSTED_LEGACY_DEEPSEEK_V4_FLASH_MODEL = "deepseek-v4-flash";
48
52
  var PLATFORM_HOSTED_NEMOTRON_35_LIGHTNING_MODEL = "nemotron-3-5-lightning-30b";
49
53
  var PLATFORM_HOSTED_KIMI_K3_MIN_CLIENT_VERSION = "0.38.0-alpha.4";
50
54
  var PLATFORM_HOSTED_GLM_53_FLASH_MIN_CLIENT_VERSION = "0.33.0-alpha.1";
@@ -98,7 +102,15 @@ var PLATFORM_HOSTED_ROUTING_TABLE = {
98
102
  agentRunHosted: true,
99
103
  minClientVersion: PLATFORM_HOSTED_KIMI_K3_MIN_CLIENT_VERSION
100
104
  },
101
- // Gemini 3.7 Flash -> Google official OpenAI-compatible endpoint
105
+ // Gemini 3.8 Flash -> Google official OpenAI-compatible endpoint
106
+ [PLATFORM_HOSTED_GEMINI_38_FLASH_MODEL]: {
107
+ endpoint: "https://generativelanguage.googleapis.com/v1beta/openai/chat/completions",
108
+ usageProvider: "google",
109
+ keyName: "google",
110
+ wire: "chat.completions",
111
+ agentRunHosted: true
112
+ },
113
+ // Gemini 3.7 Flash -> Google official OpenAI-compatible endpoint (historical compat)
102
114
  [PLATFORM_HOSTED_GEMINI_37_FLASH_MODEL]: {
103
115
  endpoint: "https://generativelanguage.googleapis.com/v1beta/openai/chat/completions",
104
116
  usageProvider: "google",
@@ -106,6 +118,22 @@ var PLATFORM_HOSTED_ROUTING_TABLE = {
106
118
  wire: "chat.completions",
107
119
  agentRunHosted: true
108
120
  },
121
+ // Gemini 2.5 Pro -> Google official OpenAI-compatible endpoint
122
+ [PLATFORM_HOSTED_GEMINI_25_PRO_MODEL]: {
123
+ endpoint: "https://generativelanguage.googleapis.com/v1beta/openai/chat/completions",
124
+ usageProvider: "google",
125
+ keyName: "google",
126
+ wire: "chat.completions",
127
+ agentRunHosted: true
128
+ },
129
+ // Gemini 3.1 Pro -> Google official OpenAI-compatible endpoint
130
+ [PLATFORM_HOSTED_GEMINI_31_PRO_MODEL]: {
131
+ endpoint: "https://generativelanguage.googleapis.com/v1beta/openai/chat/completions",
132
+ usageProvider: "google",
133
+ keyName: "google",
134
+ wire: "chat.completions",
135
+ agentRunHosted: true
136
+ },
109
137
  // Gemini Image models -> Google
110
138
  [PLATFORM_HOSTED_GEMINI_FLASH_IMAGE_MODEL]: {
111
139
  endpoint: "https://generativelanguage.googleapis.com/v1beta/openai/chat/completions",
@@ -180,7 +208,7 @@ var PLATFORM_HOSTED_ROUTING_TABLE = {
180
208
  wire: "chat.completions",
181
209
  agentRunHosted: false
182
210
  },
183
- // DeepSeek Flash / Vision -> DeepSeek Responses API(agentRun 走专用 responses 编排)
211
+ // DeepSeek Flash -> DeepSeek Responses API(agentRun 走专用 responses 编排)
184
212
  [PLATFORM_HOSTED_DEEPSEEK_FLASH_MODEL]: {
185
213
  endpoint: "https://api.deepseek.com/responses",
186
214
  usageProvider: "deepseek",
@@ -188,20 +216,30 @@ var PLATFORM_HOSTED_ROUTING_TABLE = {
188
216
  wire: "responses",
189
217
  agentRunHosted: false
190
218
  },
219
+ // Legacy DeepSeek model aliases -> remap upstreamModelId to deepseek-flash
220
+ [PLATFORM_HOSTED_LEGACY_DEEPSEEK_V4_FLASH_MODEL]: {
221
+ endpoint: "https://api.deepseek.com/responses",
222
+ usageProvider: "deepseek",
223
+ keyName: "deepseek",
224
+ upstreamModelId: PLATFORM_HOSTED_DEEPSEEK_FLASH_MODEL,
225
+ wire: "responses",
226
+ agentRunHosted: false
227
+ },
191
228
  [PLATFORM_HOSTED_DEEPSEEK_FLASH_VISION_EXP_MODEL]: {
192
229
  endpoint: "https://api.deepseek.com/responses",
193
230
  usageProvider: "deepseek",
194
231
  keyName: "deepseek",
232
+ upstreamModelId: PLATFORM_HOSTED_DEEPSEEK_FLASH_MODEL,
195
233
  wire: "responses",
196
234
  agentRunHosted: false
197
235
  },
198
- // deepseek-v4-pro 独立于 flash 走 RunInfra(官方 chat.completions wire,非 DeepSeek responses)
199
236
  [PLATFORM_HOSTED_DEEPSEEK_PRO_MODEL]: {
200
- endpoint: "https://api.runinfra.ai/v1/chat/completions",
201
- usageProvider: "runinfra",
202
- keyName: "runinfra",
203
- wire: "chat.completions",
204
- agentRunHosted: true
237
+ endpoint: "https://api.deepseek.com/responses",
238
+ usageProvider: "deepseek",
239
+ keyName: "deepseek",
240
+ upstreamModelId: PLATFORM_HOSTED_DEEPSEEK_FLASH_MODEL,
241
+ wire: "responses",
242
+ agentRunHosted: false
205
243
  }
206
244
  };
207
245
  function resolvePlatformHostedRouting(model) {
@@ -390,7 +428,7 @@ var PLATFORM_HOSTED_GLM_53_FLASH_BASETEN_PRICE = {
390
428
  inputCacheHit: 0.168,
391
429
  output: toPlatformCredits(0.4)
392
430
  };
393
- var PLATFORM_HOSTED_GEMINI_37_FLASH_PRICE = {
431
+ var PLATFORM_HOSTED_GEMINI_38_FLASH_PRICE = {
394
432
  input: 4.2,
395
433
  // 6.0 credits
396
434
  output: 21,
@@ -400,6 +438,26 @@ var PLATFORM_HOSTED_GEMINI_37_FLASH_PRICE = {
400
438
  cachingRead: 0.42
401
439
  // 0.6 credits
402
440
  };
441
+ var PLATFORM_HOSTED_GEMINI_25_PRO_PRICE = {
442
+ input: toPlatformCredits(1.25),
443
+ // 10.0 credits
444
+ output: toPlatformCredits(5),
445
+ // 40.0 credits
446
+ cachingWrite: toPlatformCredits(0.3125),
447
+ // 2.5 credits
448
+ cachingRead: toPlatformCredits(0.3125)
449
+ // 2.5 credits
450
+ };
451
+ var PLATFORM_HOSTED_GEMINI_31_PRO_PRICE = {
452
+ input: toPlatformCredits(2),
453
+ // 16.0 credits
454
+ output: toPlatformCredits(12),
455
+ // 96.0 credits
456
+ cachingWrite: toPlatformCredits(0.5),
457
+ // 4.0 credits
458
+ cachingRead: toPlatformCredits(0.5)
459
+ // 4.0 credits
460
+ };
403
461
  var isPlatformHostedOpenAIImageModel = (model) => asTrimmedLowercaseString(model) === PLATFORM_HOSTED_OPENAI_IMAGE_MODEL;
404
462
  var PLATFORM_HOSTED_GEMINI_IMAGE_MODELS = [
405
463
  PLATFORM_HOSTED_GEMINI_FLASH_LITE_IMAGE_MODEL,
@@ -449,34 +507,31 @@ var createPlatformHostedGeminiImageModel = ({
449
507
  supportsTool: false
450
508
  });
451
509
  var PLATFORM_HOSTED_DEEPSEEK_FLASH_PEAK_PRICE = {
452
- input: toCnyCredits(3),
453
- // ¥3
454
- inputCacheHit: toCnyCredits(0.1),
455
- // ¥0.1
456
- output: toCnyCredits(9)
457
- // ¥9
510
+ input: toCnyCredits(2),
511
+ // ¥2
512
+ inputCacheHit: toCnyCredits(0.04),
513
+ // ¥0.04
514
+ output: toCnyCredits(8)
515
+ // ¥8
458
516
  };
459
517
  var PLATFORM_HOSTED_DEEPSEEK_FLASH_OFF_PEAK_PRICE = {
460
- input: toCnyCredits(1.5),
461
- // ¥1.5
462
- inputCacheHit: toCnyCredits(0.05),
463
- // ¥0.05
464
- output: toCnyCredits(4.5)
465
- // ¥4.5
518
+ input: toCnyCredits(1),
519
+ // ¥1
520
+ inputCacheHit: toCnyCredits(0.02),
521
+ // ¥0.02
522
+ output: toCnyCredits(4)
523
+ // ¥4
466
524
  };
467
525
  var PLATFORM_HOSTED_NEMOTRON_35_LIGHTNING_PRICE = {
468
526
  input: toPlatformCredits(0.05),
469
527
  inputCacheHit: toPlatformCredits(0.01),
470
528
  output: toPlatformCredits(0.15)
471
529
  };
472
- var PLATFORM_HOSTED_DEEPSEEK_PRO_PRICE = {
473
- input: 3.36,
474
- // 4.8 credits
475
- inputCacheHit: 0.168,
476
- // 0.24 credits
477
- output: toPlatformCredits(1.9)
478
- // 15.2 credits
479
- };
530
+ var PLATFORM_HOSTED_LEGACY_DEEPSEEK_MODELS = [
531
+ "deepseek-v4-flash",
532
+ "deepseek-v4-flash-vision-exp",
533
+ "deepseek-v4-pro"
534
+ ];
480
535
  var isDeepSeekOffPeakBeijingTime = (nowMs = Date.now()) => {
481
536
  const beijing = new Date(nowMs + 8 * 60 * 60 * 1e3);
482
537
  const beijingDay = beijing.getUTCDay();
@@ -489,8 +544,12 @@ var getPlatformHostedDeepSeekV4Price = (_model, nowMs = Date.now()) => {
489
544
  const isOffPeak = isDeepSeekOffPeakBeijingTime(nowMs);
490
545
  return isOffPeak ? PLATFORM_HOSTED_DEEPSEEK_FLASH_OFF_PEAK_PRICE : PLATFORM_HOSTED_DEEPSEEK_FLASH_PEAK_PRICE;
491
546
  };
492
- var isPlatformHostedDeepSeekV4Model = (model) => model === PLATFORM_HOSTED_DEEPSEEK_FLASH_MODEL || model === PLATFORM_HOSTED_DEEPSEEK_FLASH_VISION_EXP_MODEL;
493
- var isPlatformHostedDeepseekModel = (model) => model === PLATFORM_HOSTED_DEEPSEEK_FLASH_MODEL || model === PLATFORM_HOSTED_DEEPSEEK_FLASH_VISION_EXP_MODEL;
547
+ var isPlatformHostedDeepSeekModel = (model) => {
548
+ const m = asTrimmedLowercaseString(model);
549
+ return m === PLATFORM_HOSTED_DEEPSEEK_FLASH_MODEL || PLATFORM_HOSTED_LEGACY_DEEPSEEK_MODELS.includes(m);
550
+ };
551
+ var isPlatformHostedDeepseekModel = isPlatformHostedDeepSeekModel;
552
+ var isPlatformHostedDeepSeekV4Model = isPlatformHostedDeepSeekModel;
494
553
  var platformHostedModels = [
495
554
  {
496
555
  name: PLATFORM_HOSTED_NEMOTRON_35_LIGHTNING_MODEL,
@@ -536,44 +595,42 @@ var platformHostedModels = [
536
595
  supportsReasoningEffort: true
537
596
  },
538
597
  {
539
- name: PLATFORM_HOSTED_GEMINI_37_FLASH_MODEL,
540
- displayName: "Gemini 3.7 Flash",
598
+ name: PLATFORM_HOSTED_GEMINI_38_FLASH_MODEL,
599
+ displayName: "Gemini 3.8 Flash",
541
600
  hasVision: true,
542
- price: { ...PLATFORM_HOSTED_GEMINI_37_FLASH_PRICE },
601
+ price: { ...PLATFORM_HOSTED_GEMINI_38_FLASH_PRICE },
543
602
  maxOutputTokens: 65536,
544
603
  contextWindow: 1048576,
545
604
  supportsTool: true,
546
605
  supportsReasoningEffort: true
547
606
  },
548
607
  {
549
- name: PLATFORM_HOSTED_DEEPSEEK_FLASH_MODEL,
550
- displayName: "DeepSeek V4 Flash",
551
- hasVision: false,
552
- price: { ...PLATFORM_HOSTED_DEEPSEEK_FLASH_PEAK_PRICE },
553
- peakPrice: { ...PLATFORM_HOSTED_DEEPSEEK_FLASH_PEAK_PRICE },
554
- offPeakPrice: { ...PLATFORM_HOSTED_DEEPSEEK_FLASH_OFF_PEAK_PRICE },
555
- maxOutputTokens: 384e3,
556
- contextWindow: 1e6,
608
+ name: PLATFORM_HOSTED_GEMINI_25_PRO_MODEL,
609
+ displayName: "Gemini 2.5 Pro",
610
+ hasVision: true,
611
+ price: { ...PLATFORM_HOSTED_GEMINI_25_PRO_PRICE },
612
+ maxOutputTokens: 65536,
613
+ contextWindow: 1048576,
557
614
  supportsTool: true,
558
615
  supportsReasoningEffort: true
559
616
  },
560
617
  {
561
- name: PLATFORM_HOSTED_DEEPSEEK_FLASH_VISION_EXP_MODEL,
562
- displayName: "DeepSeek V4 Flash Vision Exp",
618
+ name: PLATFORM_HOSTED_GEMINI_31_PRO_MODEL,
619
+ displayName: "Gemini 3.1 Pro",
563
620
  hasVision: true,
564
- price: { ...PLATFORM_HOSTED_DEEPSEEK_FLASH_PEAK_PRICE },
565
- peakPrice: { ...PLATFORM_HOSTED_DEEPSEEK_FLASH_PEAK_PRICE },
566
- offPeakPrice: { ...PLATFORM_HOSTED_DEEPSEEK_FLASH_OFF_PEAK_PRICE },
567
- maxOutputTokens: 384e3,
568
- contextWindow: 1e6,
621
+ price: { ...PLATFORM_HOSTED_GEMINI_31_PRO_PRICE },
622
+ maxOutputTokens: 65536,
623
+ contextWindow: 1048576,
569
624
  supportsTool: true,
570
625
  supportsReasoningEffort: true
571
626
  },
572
627
  {
573
- name: PLATFORM_HOSTED_DEEPSEEK_PRO_MODEL,
574
- displayName: "DeepSeek V4 Pro",
575
- hasVision: false,
576
- price: { ...PLATFORM_HOSTED_DEEPSEEK_PRO_PRICE },
628
+ name: PLATFORM_HOSTED_DEEPSEEK_FLASH_MODEL,
629
+ displayName: "DeepSeek Flash",
630
+ hasVision: true,
631
+ price: { ...PLATFORM_HOSTED_DEEPSEEK_FLASH_PEAK_PRICE },
632
+ peakPrice: { ...PLATFORM_HOSTED_DEEPSEEK_FLASH_PEAK_PRICE },
633
+ offPeakPrice: { ...PLATFORM_HOSTED_DEEPSEEK_FLASH_OFF_PEAK_PRICE },
577
634
  maxOutputTokens: 384e3,
578
635
  contextWindow: 1e6,
579
636
  supportsTool: true,
@@ -735,7 +792,7 @@ var platformHostedModels = [
735
792
  ];
736
793
 
737
794
  // packages/ai/llm/cloudflare.ts
738
- var getCloudflareWorkersAiChatCompletionsUrl = (accountId = process.env.CLOUDFLARE_ACCOUNT_ID?.trim()) => {
795
+ var getCloudflareWorkersAiChatCompletionsUrl = (accountId = (typeof process !== "undefined" ? process.env?.CLOUDFLARE_ACCOUNT_ID : void 0)?.trim()) => {
739
796
  if (!accountId) {
740
797
  throw new Error(
741
798
  "CLOUDFLARE_ACCOUNT_ID is required for Cloudflare Workers AI chat completions"
@@ -762,7 +819,6 @@ export {
762
819
  resolveFireworksKimiModel,
763
820
  PLATFORM_HOSTED_GLM_53_FLASH_MODEL,
764
821
  PLATFORM_HOSTED_DEEPSEEK_FLASH_MODEL,
765
- PLATFORM_HOSTED_DEEPSEEK_FLASH_VISION_EXP_MODEL,
766
822
  resolvePlatformHostedRouting,
767
823
  NOLO_CLIENT_VERSION_HEADER,
768
824
  CLIENT_VERSION_TOO_OLD_CODE,
@@ -775,8 +831,8 @@ export {
775
831
  isPlatformHostedOpenAIImageModel,
776
832
  isPlatformHostedImageModel,
777
833
  getPlatformHostedDeepSeekV4Price,
778
- isPlatformHostedDeepSeekV4Model,
779
834
  isPlatformHostedDeepseekModel,
835
+ isPlatformHostedDeepSeekV4Model,
780
836
  platformHostedModels,
781
837
  getCloudflareWorkersAiChatCompletionsUrl,
782
838
  cloudflareModels,