nolo-cli 0.30.0-alpha.2 → 0.30.0-alpha.3

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 (71) hide show
  1. package/{_executeModel-VBHHG7LT.js → _executeModel-FYUR7PQU.js} +17 -17
  2. package/{agentDeleteCommand-LLGZXUYJ.js → agentDeleteCommand-HHP47ZB2.js} +14 -14
  3. package/{agentEmailCommands-LC2FPN6G.js → agentEmailCommands-H6KRDTQW.js} +22 -22
  4. package/{agentListCommands-A6OBQ3QX.js → agentListCommands-GNVFOTB4.js} +16 -16
  5. package/{agentMachineCommands-4O4Q5B5X.js → agentMachineCommands-4HJHI26F.js} +14 -14
  6. package/{agentRecordCommands-W22RIQRV.js → agentRecordCommands-W6ITUONM.js} +21 -21
  7. package/{agentRunCommand-V4OBU4FB.js → agentRunCommand-VDLU4VKR.js} +21 -21
  8. package/{agentRuntimeLocal-I57YSGH4.js → agentRuntimeLocal-3X3ZTFT2.js} +11 -11
  9. package/{agentSlice-3ZHY7RAO.js → agentSlice-5HYCSSTE.js} +1 -1
  10. package/{appDeleteCommands-DJJF466K.js → appDeleteCommands-WFUF34TE.js} +15 -15
  11. package/{appDeployCommands-WJZGIOEZ.js → appDeployCommands-J2EAE53G.js} +15 -15
  12. package/{appDeployStatusCommands-ICYXUJNO.js → appDeployStatusCommands-RLXDEHTV.js} +15 -15
  13. package/{appGetCommands-UOCWYJPV.js → appGetCommands-ZGV3CKCM.js} +15 -15
  14. package/{appListCommands-EOKWTXPW.js → appListCommands-3VRX3EJI.js} +15 -15
  15. package/{authCommand-H5KE7K7K.js → authCommand-RR5LAYSW.js} +5 -5
  16. package/{chunk-TJYWZ3LO.js → chunk-2NYIVLAY.js} +1 -1
  17. package/{chunk-OYK7PA5U.js → chunk-2TZP235J.js} +3 -3
  18. package/{chunk-W2YKDXT7.js → chunk-3IPBZISR.js} +1 -1
  19. package/{chunk-MMCVBEAD.js → chunk-3Z6SPX5X.js} +24 -22
  20. package/{chunk-GAGUBI42.js → chunk-4ZMTXQFB.js} +3 -3
  21. package/{chunk-3RIWR23B.js → chunk-5NPAOURO.js} +1 -1
  22. package/{chunk-SWOTB2TX.js → chunk-6QP7LEI6.js} +10 -10
  23. package/{chunk-66O5MZYH.js → chunk-72NVMKWA.js} +1 -1
  24. package/{chunk-UKC5HU2C.js → chunk-7QW64TCG.js} +5 -5
  25. package/{chunk-GVKTKT3O.js → chunk-CTLXD6HB.js} +3 -3
  26. package/{chunk-VSTUQGLT.js → chunk-EIQDGAAE.js} +147 -1
  27. package/{chunk-SZ5CBYMZ.js → chunk-F3A5IZSX.js} +1 -1
  28. package/{chunk-HLG6GAUD.js → chunk-GABCPUMC.js} +1 -1
  29. package/{chunk-KW47OSRJ.js → chunk-IUA36RS4.js} +39 -61
  30. package/{chunk-QLV2GKU5.js → chunk-JRI2BRJY.js} +1 -1
  31. package/{chunk-KWKD3BCC.js → chunk-KH3JS4D5.js} +9 -9
  32. package/{chunk-CV6I4HBA.js → chunk-LWP3HB56.js} +1 -1
  33. package/{chunk-G6VITLCZ.js → chunk-LWYIHJKD.js} +2 -2
  34. package/{chunk-56IUA7RU.js → chunk-MNUJETMH.js} +1 -1
  35. package/{chunk-DCWBP2O7.js → chunk-MV6UZXZU.js} +8 -8
  36. package/{chunk-THTAR67C.js → chunk-O6YCGBJB.js} +9 -9
  37. package/{chunk-YWGSCF37.js → chunk-PACNSC37.js} +1 -1
  38. package/{chunk-7CD24PU4.js → chunk-QDNVDGLN.js} +2 -2
  39. package/{chunk-HI7QZNWX.js → chunk-R2JHVPHL.js} +4 -4
  40. package/{chunk-UTQZ73QQ.js → chunk-S342XWCB.js} +1 -1
  41. package/{chunk-L3VQOVKK.js → chunk-TAS3THIF.js} +2 -2
  42. package/{chunk-2XM5KUNE.js → chunk-V5BWE46D.js} +2 -2
  43. package/{chunk-T3Y5EMJS.js → chunk-WJD5RNVB.js} +1 -1
  44. package/{chunk-XD5NQEOH.js → chunk-WTPC3XD4.js} +1 -1
  45. package/{chunk-MEUZFIAJ.js → chunk-XORE26Z4.js} +1 -1
  46. package/{chunk-FS5TTXPS.js → chunk-YK2QRWTO.js} +2 -2
  47. package/{chunk-DI6MXJK5.js → chunk-YX26YZL4.js} +9 -9
  48. package/{createAgentAutomationAction-3GMH6ORX.js → createAgentAutomationAction-EKABYSSA.js} +3 -3
  49. package/{createDialogAction-R5MCL4RE.js → createDialogAction-HLP6TV4H.js} +4 -4
  50. package/{createPageAction-QYTG656R.js → createPageAction-4NEEWW6S.js} +3 -3
  51. package/{dialogCommands-NUQGIXVZ.js → dialogCommands-XB3ZNSP3.js} +15 -15
  52. package/{dialogSlice-CFDECXEU.js → dialogSlice-4IWM2WIY.js} +3 -3
  53. package/{docCreateCommands-UNFCXB5N.js → docCreateCommands-QSPTTAN7.js} +14 -14
  54. package/{docDeleteCommands-NG5IVKE5.js → docDeleteCommands-2E6JZXCP.js} +15 -15
  55. package/{docReadCommands-6J7MUUX6.js → docReadCommands-N2DQVLLT.js} +14 -14
  56. package/{docStore-MZZWJM4F.js → docStore-PFZCPHPC.js} +4 -4
  57. package/{docUpdateCommands-6AW3VZOX.js → docUpdateCommands-53KFSYEP.js} +14 -14
  58. package/{getPricing-XQYSSVV6.js → getPricing-67TQVKFV.js} +2 -2
  59. package/{handleSendMessageAction-IU2QNTLM.js → handleSendMessageAction-4IYJTQAL.js} +3 -3
  60. package/index.js +47 -47
  61. package/{machineCommands-Z2QEWTHZ.js → machineCommands-CR34SD5W.js} +20 -20
  62. package/{machineWsRunDispatch-SJTYHZHN.js → machineWsRunDispatch-G4O3NQ3I.js} +20 -20
  63. package/package.json +1 -1
  64. package/{readlineWorkspace-BGKPABK4.js → readlineWorkspace-OOXRR2NG.js} +24 -24
  65. package/{runAgentClientLoop-N3YDLTMS.js → runAgentClientLoop-R5WNOWHI.js} +13 -13
  66. package/{spaceCommands-R6AEQNLG.js → spaceCommands-RZN5K5ND.js} +14 -14
  67. package/{spaceSlice-MCH7RLLP.js → spaceSlice-3BVGRL3V.js} +3 -3
  68. package/{streamAgentChatTurn-Q4U2CVMI.js → streamAgentChatTurn-RVOJZ2HO.js} +16 -16
  69. package/{tools-Y3UBLLYW.js → tools-QAKUH2P6.js} +8 -8
  70. package/{tuiSummaryLlmCaller-4474IBTI.js → tuiSummaryLlmCaller-YQBN5IMG.js} +3 -3
  71. package/{updateDialogTitleAction-3J7GH67I.js → updateDialogTitleAction-4O5PZVQR.js} +3 -3
@@ -4,14 +4,14 @@ import {
4
4
  providerHttpFailure,
5
5
  readSseFrames,
6
6
  throwIfChatCompletionStreamFailed
7
- } from "./chunk-MEUZFIAJ.js";
7
+ } from "./chunk-XORE26Z4.js";
8
8
  import {
9
9
  sanitizeForOutbound
10
10
  } from "./chunk-T27IEBNQ.js";
11
11
  import {
12
12
  parseToolArgumentsJson,
13
13
  resolveHistoricalToolContentCap
14
- } from "./chunk-KW47OSRJ.js";
14
+ } from "./chunk-IUA36RS4.js";
15
15
  import {
16
16
  createThinkParserState,
17
17
  createToolCallAccumulator,
@@ -22,7 +22,7 @@ import {
22
22
  import {
23
23
  requiresBareImageUrl,
24
24
  toBareImageUrlMessages
25
- } from "./chunk-7CD24PU4.js";
25
+ } from "./chunk-QDNVDGLN.js";
26
26
  import {
27
27
  shouldStripReasoningContentForOutbound,
28
28
  toOpenAiCompatibleMessages
@@ -30,7 +30,7 @@ import {
30
30
  import {
31
31
  buildProviderAuthHeaders,
32
32
  buildProviderExecutionPlan
33
- } from "./chunk-XD5NQEOH.js";
33
+ } from "./chunk-WTPC3XD4.js";
34
34
  import {
35
35
  buildDialogFallbackTitleFromUserInput
36
36
  } from "./chunk-2MBTWINN.js";
@@ -39,7 +39,7 @@ import {
39
39
  buildNoloWorkspaceCommandArgs,
40
40
  noloStringArg,
41
41
  parseNoloWorkspaceToolArguments
42
- } from "./chunk-OYK7PA5U.js";
42
+ } from "./chunk-2TZP235J.js";
43
43
  import {
44
44
  toErrorMessage
45
45
  } from "./chunk-HNMXYYJR.js";
@@ -1,13 +1,13 @@
1
1
  import {
2
2
  listUserRecordsFromServers,
3
3
  readLiveDbRecordAfterTombstoneMerge
4
- } from "./chunk-HLG6GAUD.js";
4
+ } from "./chunk-GABCPUMC.js";
5
5
  import {
6
6
  agentRecordHasConfiguredCredential
7
- } from "./chunk-56IUA7RU.js";
7
+ } from "./chunk-MNUJETMH.js";
8
8
  import {
9
9
  toSafeAgentSummary
10
- } from "./chunk-UTQZ73QQ.js";
10
+ } from "./chunk-S342XWCB.js";
11
11
  import {
12
12
  PUBLIC_AGENT_KEY_PREFIX,
13
13
  isOwnedAgentKey,
@@ -505,6 +505,150 @@ var kimiCodeModels = [
505
505
  }
506
506
  ];
507
507
 
508
+ // packages/integrations/opencode/models.ts
509
+ var opencodeGoModels = [
510
+ // ── OpenAI ──
511
+ {
512
+ name: "gpt-5.6-luna",
513
+ displayName: "GPT-5.6 Luna (Fast)",
514
+ hasVision: true,
515
+ contextWindow: 272e3,
516
+ maxOutputTokens: 128e3,
517
+ jsonOutput: true,
518
+ fnCall: true,
519
+ supportsTool: true,
520
+ price: { input: 0, output: 0 },
521
+ provider: "opencode-go",
522
+ description: "OpenAI GPT-5.6 Luna \u5FEB\u901F\u6A21\u578B\uFF0COpenCode Go \u8BA2\u9605\u542B\u3002"
523
+ },
524
+ // gpt-5.6-sol 不在 Go 订阅内:GET /models 不返回它,直接调用返回
525
+ // 401 "Model gpt-5.6-sol is not supported"(实测 2026-08-03)。
526
+ // ── Grok ──
527
+ {
528
+ name: "grok-4.5",
529
+ displayName: "Grok 4.5",
530
+ hasVision: true,
531
+ contextWindow: 5e5,
532
+ maxOutputTokens: 262144,
533
+ jsonOutput: true,
534
+ fnCall: true,
535
+ supportsTool: true,
536
+ price: { input: 0, output: 0 },
537
+ provider: "opencode-go",
538
+ description: "xAI Grok 4.5\uFF0COpenCode Go \u8BA2\u9605\u542B\u3002"
539
+ },
540
+ // ── Kimi ──
541
+ {
542
+ name: "kimi-k3",
543
+ displayName: "Kimi K3",
544
+ hasVision: true,
545
+ contextWindow: 1e6,
546
+ maxOutputTokens: 262144,
547
+ jsonOutput: true,
548
+ fnCall: true,
549
+ supportsTool: true,
550
+ price: { input: 0, output: 0 },
551
+ provider: "opencode-go",
552
+ description: "Kimi K3 \u65D7\u8230\uFF0COpenCode Go \u8BA2\u9605\u542B\u3002"
553
+ },
554
+ // ── Qwen ──
555
+ {
556
+ name: "qwen3.8-max",
557
+ displayName: "Qwen3.8 Max",
558
+ hasVision: true,
559
+ contextWindow: 262144,
560
+ maxOutputTokens: 32768,
561
+ jsonOutput: true,
562
+ fnCall: true,
563
+ supportsTool: true,
564
+ price: { input: 0, output: 0 },
565
+ provider: "opencode-go",
566
+ description: "\u5343\u95EE 3.8 Max \u65D7\u8230\uFF0COpenCode Go \u8BA2\u9605\u542B\u3002"
567
+ },
568
+ {
569
+ name: "qwen3.7-max",
570
+ displayName: "Qwen3.7 Max",
571
+ hasVision: false,
572
+ contextWindow: 262144,
573
+ maxOutputTokens: 32768,
574
+ jsonOutput: true,
575
+ fnCall: true,
576
+ supportsTool: true,
577
+ price: { input: 0, output: 0 },
578
+ provider: "opencode-go",
579
+ description: "\u5343\u95EE 3.7 Max\uFF0COpenCode Go \u8BA2\u9605\u542B\u3002"
580
+ },
581
+ // ── GLM ──
582
+ {
583
+ name: "glm-5.2",
584
+ displayName: "GLM 5.2",
585
+ hasVision: false,
586
+ contextWindow: 1e6,
587
+ maxOutputTokens: 16384,
588
+ jsonOutput: true,
589
+ fnCall: true,
590
+ supportsTool: true,
591
+ price: { input: 0, output: 0 },
592
+ provider: "opencode-go",
593
+ description: "\u667A\u8C31 GLM 5.2\uFF0COpenCode Go \u8BA2\u9605\u542B\u3002"
594
+ },
595
+ // ── MiMo ──
596
+ {
597
+ name: "mimo-v2.5-pro",
598
+ displayName: "MiMo V2.5 Pro",
599
+ hasVision: false,
600
+ contextWindow: 131072,
601
+ maxOutputTokens: 16384,
602
+ jsonOutput: true,
603
+ fnCall: true,
604
+ supportsTool: true,
605
+ price: { input: 0, output: 0 },
606
+ provider: "opencode-go",
607
+ description: "\u5C0F\u7C73 MiMo V2.5 Pro\uFF0COpenCode Go \u8BA2\u9605\u542B\u3002"
608
+ },
609
+ // ── MiniMax ──
610
+ {
611
+ name: "minimax-m3",
612
+ displayName: "MiniMax M3",
613
+ hasVision: true,
614
+ contextWindow: 1e6,
615
+ maxOutputTokens: 262144,
616
+ jsonOutput: true,
617
+ fnCall: true,
618
+ supportsTool: true,
619
+ price: { input: 0, output: 0 },
620
+ provider: "opencode-go",
621
+ description: "MiniMax M3\uFF0COpenCode Go \u8BA2\u9605\u542B\u3002"
622
+ },
623
+ // ── DeepSeek ──
624
+ {
625
+ name: "deepseek-v4-pro",
626
+ displayName: "DeepSeek V4 Pro",
627
+ hasVision: false,
628
+ contextWindow: 1e6,
629
+ maxOutputTokens: 384e3,
630
+ jsonOutput: true,
631
+ fnCall: true,
632
+ supportsTool: true,
633
+ price: { input: 0, output: 0 },
634
+ provider: "opencode-go",
635
+ description: "DeepSeek V4 Pro\uFF0COpenCode Go \u8BA2\u9605\u542B\u3002"
636
+ },
637
+ {
638
+ name: "deepseek-v4-flash",
639
+ displayName: "DeepSeek V4 Flash",
640
+ hasVision: false,
641
+ contextWindow: 1e6,
642
+ maxOutputTokens: 384e3,
643
+ jsonOutput: true,
644
+ fnCall: true,
645
+ supportsTool: true,
646
+ price: { input: 0, output: 0 },
647
+ provider: "opencode-go",
648
+ description: "DeepSeek V4 Flash\uFF0COpenCode Go \u8BA2\u9605\u542B\u3002"
649
+ }
650
+ ];
651
+
508
652
  // node_modules/zod/dist/esm/v3/external.js
509
653
  var external_exports = {};
510
654
  __export(external_exports, {
@@ -4723,6 +4867,8 @@ var MODEL_MAP = {
4723
4867
  var MODEL_LOOKUP_MAP = {
4724
4868
  anthropic: [...anthropicModels, ...anthropicOAuthModels],
4725
4869
  xai: xaiModels,
4870
+ "opencode-go": opencodeGoModels,
4871
+ opencode: opencodeGoModels,
4726
4872
  ...MODEL_MAP
4727
4873
  };
4728
4874
  var ANTHROPIC_MODEL_ALIASES = {
@@ -4856,7 +5002,7 @@ function getModelConfig(provider, name) {
4856
5002
  return model;
4857
5003
  }
4858
5004
  function getProviderByModelName(modelName) {
4859
- for (const [provider, models] of Object.entries(MODEL_MAP)) {
5005
+ for (const [provider, models] of Object.entries(MODEL_LOOKUP_MAP)) {
4860
5006
  if (models.some((m) => m.name === modelName)) {
4861
5007
  return provider;
4862
5008
  }
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  readDbRecord,
3
3
  writeAgentRecord
4
- } from "./chunk-56IUA7RU.js";
4
+ } from "./chunk-MNUJETMH.js";
5
5
  import {
6
6
  createSpaceKey
7
7
  } from "./chunk-YLADSPDU.js";
@@ -2,7 +2,7 @@ import {
2
2
  deleteDbRecord,
3
3
  queryUserRecords,
4
4
  readDbRecord
5
- } from "./chunk-56IUA7RU.js";
5
+ } from "./chunk-MNUJETMH.js";
6
6
  import {
7
7
  mergeAndDedupUserData
8
8
  } from "./chunk-KQHGZWSV.js";
@@ -9,15 +9,15 @@ import {
9
9
  buildRuntimeGuidanceBlocks,
10
10
  fetchReferenceContents,
11
11
  resolveToolGuidedSections
12
- } from "./chunk-7CD24PU4.js";
12
+ } from "./chunk-QDNVDGLN.js";
13
13
  import {
14
14
  getAllToolRuns,
15
15
  resolveAgentRecommendedSkillNames,
16
16
  resolveAgentRequiredPackIds
17
- } from "./chunk-OYK7PA5U.js";
17
+ } from "./chunk-2TZP235J.js";
18
18
  import {
19
19
  getDocState
20
- } from "./chunk-FS5TTXPS.js";
20
+ } from "./chunk-YK2QRWTO.js";
21
21
  import {
22
22
  resolveToolBaseUrl
23
23
  } from "./chunk-44HACRCK.js";
@@ -26,7 +26,7 @@ import {
26
26
  getModelPricing,
27
27
  getPrices,
28
28
  hasExplicitAgentPricing
29
- } from "./chunk-YWGSCF37.js";
29
+ } from "./chunk-PACNSC37.js";
30
30
  import {
31
31
  PERSONALIZATION_DIALOG_CATEGORY,
32
32
  buildPersonalizationDialogPolicyContext,
@@ -42,7 +42,7 @@ import {
42
42
  selectTableRows,
43
43
  selectViewMode,
44
44
  serializeMessageContent
45
- } from "./chunk-THTAR67C.js";
45
+ } from "./chunk-O6YCGBJB.js";
46
46
  import {
47
47
  clipCompactText
48
48
  } from "./chunk-OB6FBSH3.js";
@@ -56,7 +56,7 @@ import {
56
56
  findModelConfig,
57
57
  getModelConfig,
58
58
  getProviderByModelName
59
- } from "./chunk-VSTUQGLT.js";
59
+ } from "./chunk-EIQDGAAE.js";
60
60
  import {
61
61
  PLATFORM_HOSTED_QWEN_37_FLASH_MODEL
62
62
  } from "./chunk-CAENRKNJ.js";
@@ -858,11 +858,6 @@ var buildEditingContextSummary = (state, runtimeOptions) => {
858
858
  };
859
859
 
860
860
  // packages/ai/llm/agentCapabilities.ts
861
- var isCustomAgent = (agent) => {
862
- const apiSource = agent.apiSource?.toLowerCase();
863
- const provider = agent.provider?.toLowerCase();
864
- return apiSource === "custom" || provider === "custom";
865
- };
866
861
  var ANTIGRAVITY_EFFORT_SUFFIXES = [
867
862
  "-tiered",
868
863
  "-extra-low",
@@ -893,21 +888,21 @@ var lookupKnownModelVision = (provider, model) => {
893
888
  const strippedPreview = stripPreviewSuffix(model);
894
889
  if (strippedPreview !== model) candidates.push(strippedPreview);
895
890
  for (const candidate of candidates) {
896
- if (provider) {
891
+ if (provider && provider !== "custom") {
897
892
  const direct = findModelConfig(provider, candidate);
898
- if (direct) return direct.hasVision;
893
+ if (direct && typeof direct.hasVision === "boolean") return direct.hasVision;
899
894
  }
900
895
  const detected = getProviderByModelName(candidate);
901
896
  if (detected) {
902
897
  const found = findModelConfig(detected, candidate)?.hasVision;
903
898
  if (found !== void 0) return found;
904
899
  }
905
- if (!provider && candidate.includes("/")) {
900
+ if (candidate.includes("/")) {
906
901
  const slash = candidate.indexOf("/");
907
902
  const modelProvider = candidate.slice(0, slash).toLowerCase();
908
903
  const modelName = candidate.slice(slash + 1);
909
904
  const nested = findModelConfig(modelProvider, modelName);
910
- if (nested) return nested.hasVision;
905
+ if (nested && typeof nested.hasVision === "boolean") return nested.hasVision;
911
906
  }
912
907
  }
913
908
  return void 0;
@@ -916,18 +911,13 @@ var resolveAgentImageInputSupport = (agent) => {
916
911
  if (!agent) return true;
917
912
  const provider = asTrimmedLowercaseString(agent.provider) || null;
918
913
  const model = asOptionalTrimmedString(agent.model) ?? "";
919
- const custom = isCustomAgent(agent);
920
914
  const catalogHasVision = lookupKnownModelVision(
921
- custom ? null : provider,
915
+ provider,
922
916
  model
923
917
  );
924
- if (!custom && catalogHasVision !== void 0) {
918
+ if (catalogHasVision !== void 0) {
925
919
  return catalogHasVision;
926
920
  }
927
- if (custom) {
928
- if (catalogHasVision === true) return true;
929
- return true;
930
- }
931
921
  if (typeof agent.hasVision === "boolean") {
932
922
  return agent.hasVision;
933
923
  }
@@ -2887,13 +2877,35 @@ async function runLocalAgentTurn(input) {
2887
2877
  input: input.input,
2888
2878
  contextReferenceResolver: input.adapter.host === "cli" ? input.contextReferenceResolver : void 0
2889
2879
  });
2890
- const messages = builtMessages.messages;
2880
+ let messages = builtMessages.messages;
2891
2881
  const supportsImages = resolveAgentImageInputSupport({
2892
2882
  apiSource: agentConfig.apiSource,
2893
2883
  provider: agentConfig.provider,
2894
2884
  model: agentConfig.model,
2895
2885
  hasVision: agentConfig.hasVision
2896
2886
  });
2887
+ if (!supportsImages && hasImageInRuntimeMessages(messages)) {
2888
+ const imageUrls = extractImageUrlsFromMessages(messages);
2889
+ const preprocessed = await preprocessImagesForTextOnlyAgent(
2890
+ messages,
2891
+ (urls) => describeImageWithLocalProvider(input.adapter, urls)
2892
+ );
2893
+ if (preprocessed !== messages) {
2894
+ messages = preprocessed;
2895
+ emitLoopEvent(input, {
2896
+ kind: "image-preprocessed",
2897
+ atMs: Date.now(),
2898
+ imageCount: imageUrls.length
2899
+ });
2900
+ } else {
2901
+ messages = filterImagePartsFromMessages(messages, false);
2902
+ emitLoopEvent(input, {
2903
+ kind: "image-downgraded",
2904
+ reason: "no-vision",
2905
+ atMs: Date.now()
2906
+ });
2907
+ }
2908
+ }
2897
2909
  const userInputText = extractUserInputText(input.input);
2898
2910
  let toolCallCount = 0;
2899
2911
  let result;
@@ -2904,7 +2916,6 @@ async function runLocalAgentTurn(input) {
2904
2916
  let round = 0;
2905
2917
  let emptyAssistantRepairPending = false;
2906
2918
  let emptyAssistantRepairUsed = false;
2907
- let imageDowngradeNotified = false;
2908
2919
  let skipFinalAppend = false;
2909
2920
  let partialContent = "";
2910
2921
  try {
@@ -2913,43 +2924,10 @@ async function runLocalAgentTurn(input) {
2913
2924
  partialContent = "";
2914
2925
  throwIfAborted(input);
2915
2926
  const preparedMessages = prepareMessagesForProviderCall(messages);
2916
- let baseRequestMessages;
2917
- if (!supportsImages && hasImageInRuntimeMessages(preparedMessages.messages)) {
2918
- const imageUrls = extractImageUrlsFromMessages(preparedMessages.messages);
2919
- const preprocessed = await preprocessImagesForTextOnlyAgent(
2920
- preparedMessages.messages,
2921
- (urls) => describeImageWithLocalProvider(input.adapter, urls)
2922
- );
2923
- if (preprocessed !== preparedMessages.messages) {
2924
- baseRequestMessages = preprocessed;
2925
- if (!imageDowngradeNotified) {
2926
- imageDowngradeNotified = true;
2927
- emitLoopEvent(input, {
2928
- kind: "image-preprocessed",
2929
- atMs: Date.now(),
2930
- imageCount: imageUrls.length
2931
- });
2932
- }
2933
- } else {
2934
- baseRequestMessages = filterImagePartsFromMessages(
2935
- preparedMessages.messages,
2936
- supportsImages
2937
- );
2938
- if (!imageDowngradeNotified) {
2939
- imageDowngradeNotified = true;
2940
- emitLoopEvent(input, {
2941
- kind: "image-downgraded",
2942
- reason: "no-vision",
2943
- atMs: Date.now()
2944
- });
2945
- }
2946
- }
2947
- } else {
2948
- baseRequestMessages = filterImagePartsFromMessages(
2949
- preparedMessages.messages,
2950
- supportsImages
2951
- );
2952
- }
2927
+ const baseRequestMessages = filterImagePartsFromMessages(
2928
+ preparedMessages.messages,
2929
+ supportsImages
2930
+ );
2953
2931
  const requestMessages = emptyAssistantRepairPending ? [...baseRequestMessages, { role: "user", content: EMPTY_ASSISTANT_REPAIR_PROMPT }] : baseRequestMessages;
2954
2932
  const contextMetrics = {
2955
2933
  ...preparedMessages.metrics,
@@ -6,7 +6,7 @@ import {
6
6
  prepareAndPersistMessage,
7
7
  uiAskChoiceFunc,
8
8
  uiAskChoiceFunctionSchema
9
- } from "./chunk-THTAR67C.js";
9
+ } from "./chunk-O6YCGBJB.js";
10
10
  import {
11
11
  require_date_fns
12
12
  } from "./chunk-M76ECQRD.js";
@@ -19,7 +19,7 @@ import {
19
19
  parseAgentRunEvent,
20
20
  t,
21
21
  toolLabel
22
- } from "./chunk-MMCVBEAD.js";
22
+ } from "./chunk-3Z6SPX5X.js";
23
23
  import {
24
24
  createRunActivityTracker,
25
25
  finalizeRunRecord,
@@ -38,7 +38,7 @@ import {
38
38
  normalizeAgentHandle,
39
39
  readDbRecord,
40
40
  resolveAgentRecordFromHybridStore
41
- } from "./chunk-56IUA7RU.js";
41
+ } from "./chunk-MNUJETMH.js";
42
42
  import {
43
43
  NOLO_PROJECT_MANAGER_AGENT_KEY,
44
44
  isLocalCliAgentKey
@@ -58,7 +58,7 @@ import {
58
58
  LOCAL_TURN_ABORTED_CODE,
59
59
  readActionGate,
60
60
  readCommandActionGatePayload
61
- } from "./chunk-KW47OSRJ.js";
61
+ } from "./chunk-IUA36RS4.js";
62
62
  import {
63
63
  createThinkParserState,
64
64
  flushThinkParser,
@@ -73,10 +73,10 @@ import {
73
73
  } from "./chunk-PJY5AH5A.js";
74
74
  import {
75
75
  resolvePlatformAuthToken
76
- } from "./chunk-XD5NQEOH.js";
76
+ } from "./chunk-WTPC3XD4.js";
77
77
  import {
78
78
  formatAgentListCard
79
- } from "./chunk-SWOTB2TX.js";
79
+ } from "./chunk-6QP7LEI6.js";
80
80
  import {
81
81
  isGatewayHttpStatus
82
82
  } from "./chunk-Z5MXSEOJ.js";
@@ -95,14 +95,14 @@ import {
95
95
  chooseMemoryOwners,
96
96
  loadMemoryCandidatesFromDb,
97
97
  resolveAgentMemoryPolicy
98
- } from "./chunk-QLV2GKU5.js";
98
+ } from "./chunk-JRI2BRJY.js";
99
99
  import {
100
100
  API_REPORTED_COST_MULTIPLIER,
101
101
  DEFAULT_CONTEXT_WINDOW,
102
102
  getModelContextWindow,
103
103
  normalizeUsage,
104
104
  parseUiAskChoiceContent
105
- } from "./chunk-THTAR67C.js";
105
+ } from "./chunk-O6YCGBJB.js";
106
106
  import {
107
107
  clipCompactText
108
108
  } from "./chunk-OB6FBSH3.js";
@@ -114,7 +114,7 @@ import {
114
114
  } from "./chunk-DWLEOOGR.js";
115
115
  import {
116
116
  findModelConfig
117
- } from "./chunk-VSTUQGLT.js";
117
+ } from "./chunk-EIQDGAAE.js";
118
118
  import {
119
119
  readPipeText,
120
120
  spawnProcess
@@ -3538,7 +3538,7 @@ function findCollapsedPasteSpanAt(buffer, pos, opts = {}) {
3538
3538
  // packages/cli/client/agentRun.ts
3539
3539
  import { ulid } from "ulid";
3540
3540
  async function loadRunLocalAgentTurn() {
3541
- const { runLocalAgentTurn } = await import("./agentRuntimeLocal-I57YSGH4.js");
3541
+ const { runLocalAgentTurn } = await import("./agentRuntimeLocal-3X3ZTFT2.js");
3542
3542
  return runLocalAgentTurn;
3543
3543
  }
3544
3544
  async function resolveCurrentMachineId(options) {
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  generatePkcePair,
3
3
  startCallbackServer
4
- } from "./chunk-T3Y5EMJS.js";
4
+ } from "./chunk-WJD5RNVB.js";
5
5
  import {
6
6
  toErrorMessage
7
7
  } from "./chunk-HNMXYYJR.js";
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  clearCliLocalRuntimePreparedAgentCache
3
- } from "./chunk-MMCVBEAD.js";
3
+ } from "./chunk-3Z6SPX5X.js";
4
4
  import {
5
5
  getReadableCliDb
6
6
  } from "./chunk-WFHXMLHZ.js";
@@ -12,7 +12,7 @@ import {
12
12
  resolveAgentRecordFromHybridStore,
13
13
  sanitizeAgentRecordForCliOutput,
14
14
  writeAgentRecord
15
- } from "./chunk-56IUA7RU.js";
15
+ } from "./chunk-MNUJETMH.js";
16
16
  import {
17
17
  resolveCliAgentKeyInput
18
18
  } from "./chunk-K6QEHQZ3.js";
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  buildLocalAgentLookupKeys,
3
3
  shouldReadAgentKeyRemotely
4
- } from "./chunk-66O5MZYH.js";
4
+ } from "./chunk-72NVMKWA.js";
5
5
  import {
6
6
  resolveCliAgentKeyInput
7
7
  } from "./chunk-K6QEHQZ3.js";
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  ANTIGRAVITY_CLOUD_CODE_BASE_URL,
3
3
  isAntigravityOAuthAgent
4
- } from "./chunk-TJYWZ3LO.js";
4
+ } from "./chunk-2NYIVLAY.js";
5
5
  import {
6
6
  buildCurrentTimeBlock,
7
7
  buildIdentityBlock,
@@ -9,7 +9,7 @@ import {
9
9
  requiresBareImageUrl,
10
10
  resolveToolGuidedSections,
11
11
  toBareImageUrlMessages
12
- } from "./chunk-7CD24PU4.js";
12
+ } from "./chunk-QDNVDGLN.js";
13
13
  import {
14
14
  convertMessagesToResponsesInput,
15
15
  preserveAgentStateFields
@@ -19,14 +19,14 @@ import {
19
19
  isOpenAiResponsesModel,
20
20
  resolvePlatformChatCompletionsEndpoint,
21
21
  resolvePlatformResponsesEndpoint
22
- } from "./chunk-XD5NQEOH.js";
22
+ } from "./chunk-WTPC3XD4.js";
23
23
  import {
24
24
  MEMORY_USE_GUIDANCE,
25
25
  wrapHistoricalSummaryWithReplayGuard
26
26
  } from "./chunk-4PWB7JRR.js";
27
27
  import {
28
28
  waitForAbortableDelay
29
- } from "./chunk-SWOTB2TX.js";
29
+ } from "./chunk-6QP7LEI6.js";
30
30
  import {
31
31
  createDrainExhaustedResponse,
32
32
  isCoreDrainingBody,
@@ -36,15 +36,15 @@ import {
36
36
  } from "./chunk-Z5MXSEOJ.js";
37
37
  import {
38
38
  resolveBuiltinSkillPage
39
- } from "./chunk-OYK7PA5U.js";
39
+ } from "./chunk-2TZP235J.js";
40
40
  import {
41
41
  estimateTokenCount,
42
42
  shouldUseServerProxy
43
- } from "./chunk-THTAR67C.js";
43
+ } from "./chunk-O6YCGBJB.js";
44
44
  import {
45
45
  createFileCredentialBroker,
46
46
  fetchServerSyncedCredential
47
- } from "./chunk-GAGUBI42.js";
47
+ } from "./chunk-4ZMTXQFB.js";
48
48
  import {
49
49
  toErrorMessage
50
50
  } from "./chunk-HNMXYYJR.js";
@@ -52,7 +52,7 @@ import {
52
52
  clampReasoningEffort,
53
53
  getModelConfig,
54
54
  isModelSupportReasoningEffort
55
- } from "./chunk-VSTUQGLT.js";
55
+ } from "./chunk-EIQDGAAE.js";
56
56
  import {
57
57
  isDeepInfraKimiModel,
58
58
  isFireworksKimiModel,