nolo-cli 0.76.0 → 0.77.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (86) hide show
  1. package/{_executeModel-I3XRMAJ2.js → _executeModel-G6BRN2BO.js} +21 -21
  2. package/{agentDeleteCommand-DCTG26JW.js → agentDeleteCommand-C5JTDBIX.js} +15 -14
  3. package/{agentEmailCommands-MRRHBLDQ.js → agentEmailCommands-AYSYNUSH.js} +28 -27
  4. package/{agentListCommands-CUE46CSP.js → agentListCommands-CVFL3P3D.js} +17 -16
  5. package/{agentMachineCommands-FYDEKBIO.js → agentMachineCommands-2EPX7IYC.js} +15 -14
  6. package/{agentProviderCommands-X3FA6BUM.js → agentProviderCommands-EHR3PV2V.js} +1 -1
  7. package/{agentRecordCommands-P2MSNP7R.js → agentRecordCommands-DPZVHOOA.js} +27 -26
  8. package/{agentRunCommand-YJOW3VB3.js → agentRunCommand-BE53VNNN.js} +27 -26
  9. package/{agentRuntimeLocal-T43UNWAY.js → agentRuntimeLocal-BPN5IOFT.js} +13 -12
  10. package/{agentSlice-7GDS5Q2S.js → agentSlice-PYJFXGZL.js} +1 -1
  11. package/{appDeleteCommands-YBKY3VEI.js → appDeleteCommands-TREMNXCA.js} +16 -15
  12. package/{appDeployCommands-EBC76HO4.js → appDeployCommands-7FYCMERT.js} +16 -15
  13. package/{appDeployStatusCommands-WXRC5KEK.js → appDeployStatusCommands-7LAYH7IX.js} +16 -15
  14. package/{appGetCommands-VZZQEDOV.js → appGetCommands-BONTQ2XH.js} +16 -15
  15. package/{appListCommands-HYSPVQ77.js → appListCommands-BYIELWUL.js} +16 -15
  16. package/{authCommand-E4GDVKMW.js → authCommand-J5C7GS33.js} +9 -8
  17. package/{builtinSkillRegistry-5SYVTS6Z.js → builtinSkillRegistry-YITVDLWG.js} +1 -1
  18. package/{chatQueueReduxAdapter-CXEWIDFZ.js → chatQueueReduxAdapter-PIOXZBGH.js} +8 -8
  19. package/{chunk-UO66QKGI.js → chunk-2F4VYGFW.js} +2 -2
  20. package/{chunk-3T4PRBHV.js → chunk-3DZIWHJ6.js} +1 -1
  21. package/{chunk-IO7DYRPW.js → chunk-4PAFEM6V.js} +3 -3
  22. package/{chunk-BNMZ7QUV.js → chunk-5DAMTON3.js} +1 -1
  23. package/chunk-5ZUL4CUO.js +10 -0
  24. package/{chunk-WSOMSDQB.js → chunk-6HCLDVEI.js} +35 -1
  25. package/{chunk-GRJTR4PU.js → chunk-6LWO3QQS.js} +2 -2
  26. package/{chunk-JC2WQS66.js → chunk-7TEU3WX2.js} +17 -13
  27. package/{chunk-L2VNQQ7M.js → chunk-ACFF7U3F.js} +273 -13
  28. package/{chunk-MFW4BGJS.js → chunk-AGX5TE5W.js} +1 -1
  29. package/{chunk-UWMQ6FPM.js → chunk-ASGDO77C.js} +118 -1
  30. package/{chunk-4FRNB4ZG.js → chunk-D4TJCP3V.js} +3 -3
  31. package/{chunk-TGRQUFLU.js → chunk-DNQPPRHY.js} +1 -1
  32. package/{chunk-NVHJWYUO.js → chunk-DQD4PYQY.js} +13 -13
  33. package/{chunk-KO7QCXLL.js → chunk-FSISQCCB.js} +13 -13
  34. package/{chunk-VQD6BTML.js → chunk-FWGPT6VI.js} +3 -3
  35. package/{chunk-Y2IFJ7VM.js → chunk-HLRYI5XO.js} +1 -1
  36. package/{chunk-IMDA4FW4.js → chunk-IEILL33V.js} +48 -37
  37. package/{chunk-6RCZYDDC.js → chunk-JRFQPOPS.js} +3 -3
  38. package/{chunk-P3AS5IPM.js → chunk-JT7FRJP5.js} +1 -0
  39. package/{chunk-X77EN2BJ.js → chunk-K7M3MWCE.js} +2 -2
  40. package/{chunk-VARZWSKW.js → chunk-LGSXBNWH.js} +1 -1
  41. package/{chunk-EVBFYPDC.js → chunk-MC4XLIJ7.js} +6 -2
  42. package/{chunk-DS3SQTDT.js → chunk-MJHQ3NRV.js} +1 -1
  43. package/{chunk-W7PGACND.js → chunk-MRT4KARW.js} +7 -7
  44. package/{chunk-T4F2EQGN.js → chunk-ND2J3NRB.js} +2 -2
  45. package/{chunk-LEYH5NOH.js → chunk-PGO7O65Q.js} +3 -3
  46. package/{chunk-FMODTASJ.js → chunk-Q5FJJ6XI.js} +1 -7
  47. package/{chunk-Q246OUG5.js → chunk-RHB6OCZS.js} +3 -3
  48. package/{chunk-ZSG2AQU4.js → chunk-RJ3TDODF.js} +50 -11
  49. package/{chunk-EXWOCYCR.js → chunk-TIJK4PBP.js} +9 -4
  50. package/{chunk-S6STPUMG.js → chunk-UDK3ZSMN.js} +1 -1
  51. package/{chunk-ZKGIAM7I.js → chunk-UQ45IHLM.js} +1 -1
  52. package/{chunk-VW3YGKWR.js → chunk-UQYEVBMM.js} +89 -15
  53. package/{chunk-Q4KVAB6L.js → chunk-UUVQJZ75.js} +26 -7
  54. package/{chunk-OCL2YCAU.js → chunk-VEJ4BOQV.js} +38 -38
  55. package/{chunk-6H7GN3JL.js → chunk-VRLI2WNW.js} +10 -1
  56. package/{chunk-23RQKXP6.js → chunk-WS22FPWT.js} +1 -1
  57. package/{chunk-AYT2OKNM.js → chunk-XIYOAH3S.js} +2 -2
  58. package/{chunk-ZIHJVHFH.js → chunk-Z33ARZCP.js} +1 -1
  59. package/{contentThunks-Y2ACIFDB.js → contentThunks-RYZTYVUV.js} +9 -9
  60. package/{createAgentAutomationAction-TNE3QMJR.js → createAgentAutomationAction-GUBB2LWY.js} +9 -9
  61. package/{createDialogAction-BMGHBTQB.js → createDialogAction-577E6FB2.js} +10 -10
  62. package/{createPageAction-FFNIZPIS.js → createPageAction-4CNYIRJ5.js} +9 -9
  63. package/{dialogCommands-3JC3BIXC.js → dialogCommands-U4RQIRKK.js} +16 -15
  64. package/{dialogSlice-3E7Z7HZV.js → dialogSlice-YXMORK5T.js} +8 -8
  65. package/{docCreateCommands-6LNQLCTA.js → docCreateCommands-AXXATGCL.js} +15 -14
  66. package/{docDeleteCommands-ZJOAPWZS.js → docDeleteCommands-CRPIFYFA.js} +16 -15
  67. package/{docReadCommands-LJTRSBG6.js → docReadCommands-4IMZXFDR.js} +15 -14
  68. package/{docStore-R47ABXBB.js → docStore-3U5FBN2O.js} +1 -1
  69. package/{docUpdateCommands-7P3QF3N2.js → docUpdateCommands-RRPRZXCE.js} +15 -14
  70. package/{getPricing-TV6ZB7ES.js → getPricing-F2C65RIX.js} +3 -3
  71. package/{handleSendMessageAction-FFYOGXAO.js → handleSendMessageAction-BQIRKHC6.js} +8 -8
  72. package/index.js +50 -50
  73. package/{machineCommands-FN5GGQV3.js → machineCommands-RNBADNTE.js} +26 -25
  74. package/{machineWsRunDispatch-H47IA7ZT.js → machineWsRunDispatch-7J6WNF57.js} +26 -25
  75. package/{models-CMXFDBQH.js → models-WW7VFNXB.js} +2 -2
  76. package/package.json +1 -1
  77. package/{providerPresetApply-D2GGHPI7.js → providerPresetApply-SAJAK7C3.js} +6 -6
  78. package/{providerRegistry-MU6C4ABD.js → providerRegistry-COD57OVY.js} +6 -6
  79. package/{readlineWorkspace-2RP77YDN.js → readlineWorkspace-ZO2W3N4U.js} +30 -29
  80. package/{runAgentClientLoop-CEBV5UPD.js → runAgentClientLoop-KJZ7DK6D.js} +19 -19
  81. package/{spaceCommands-JHT4ALCQ.js → spaceCommands-VZRYKVWZ.js} +15 -14
  82. package/{streamAgentChatTurn-SFCZP4GY.js → streamAgentChatTurn-L3SO4N2R.js} +26 -24
  83. package/{tools-K3YOTESV.js → tools-GRV74JPO.js} +16 -16
  84. package/tuiSummaryLlmCaller-ATDKMGI5.js +127 -0
  85. package/{updateDialogTitleAction-CSPKYQRO.js → updateDialogTitleAction-KRUWX66L.js} +29 -12
  86. package/tuiSummaryLlmCaller-T2OA5ZVB.js +0 -116
@@ -0,0 +1,10 @@
1
+ // packages/agent-runtime/devinOAuthPure.ts
2
+ function isDevinOAuthAgent(agent) {
3
+ const ref = agent.apiKeyRef?.trim().toLowerCase();
4
+ const prov = agent.provider?.trim().toLowerCase();
5
+ return ref === "devin" || prov === "devin";
6
+ }
7
+
8
+ export {
9
+ isDevinOAuthAgent
10
+ };
@@ -1,7 +1,13 @@
1
+ import {
2
+ isDevinOAuthAgent
3
+ } from "./chunk-5ZUL4CUO.js";
4
+ import {
5
+ getModelContextWindow
6
+ } from "./chunk-VEJ4BOQV.js";
1
7
  import {
2
8
  findModelConfig,
3
9
  getProviderByModelName
4
- } from "./chunk-6H7GN3JL.js";
10
+ } from "./chunk-VRLI2WNW.js";
5
11
  import {
6
12
  asOptionalFiniteNumber
7
13
  } from "./chunk-WWC7I6TA.js";
@@ -120,6 +126,33 @@ async function stripImagePartsForTextOnlyAgent(messages, agentConfig) {
120
126
  return { messages: !supportsVision && hasImages ? stripImagePartsFromMessages(messages) : messages };
121
127
  }
122
128
 
129
+ // packages/agent-runtime/devin/devinChannelWindows.ts
130
+ var DEVIN_CHANNEL_CONTEXT_WINDOWS = {
131
+ // SWE-2 家族(catalog 无裸 swe-2 selector;旧点号/裸写法如 swe-2、
132
+ // swe-1.7 实测均 permission_denied,已不是可用 selector)。
133
+ "swe-2-max": 262e3,
134
+ "swe-2-high": 262e3,
135
+ "swe-2-medium": 262e3,
136
+ // SWE-1.7 家族。
137
+ "swe-1-7": 262e3,
138
+ "swe-1-7-medium": 262e3,
139
+ "swe-1-7-lightning": 202752,
140
+ // SWE-1.6 家族(免费档默认)。
141
+ "swe-1-6": 2e5,
142
+ "swe-1-6-fast": 2e5,
143
+ // 经 devin 通道转售、且与厂商原生窗口不同的模型(catalog 枚举型 selector)。
144
+ "MODEL_GPT_5_2_LOW": 384e3,
145
+ "MODEL_GPT_5_2_MEDIUM": 384e3,
146
+ "MODEL_GPT_5_2_HIGH": 384e3,
147
+ "MODEL_GPT_5_2_XHIGH": 384e3
148
+ };
149
+ var devinChannelContextWindow = (model) => {
150
+ const raw = model?.trim();
151
+ if (!raw) return void 0;
152
+ return DEVIN_CHANNEL_CONTEXT_WINDOWS[raw];
153
+ };
154
+ var resolveAgentContextWindow = (agent) => (isDevinOAuthAgent(agent) ? devinChannelContextWindow(agent.model) : void 0) ?? getModelContextWindow(agent.model ?? "");
155
+
123
156
  // packages/agent-runtime/agentRecordConfig.ts
124
157
  function stringField(record, key) {
125
158
  const value = record[key];
@@ -540,6 +573,7 @@ export {
540
573
  resolveHistoricalToolContentCap,
541
574
  projectToolMessageContent,
542
575
  clipToolText,
576
+ resolveAgentContextWindow,
543
577
  resolveAgentRuntimeConfigFromRecord,
544
578
  buildDesktopAgentRuntimeAgentConfigSnapshot,
545
579
  buildDesktopAgentRuntimeDialogHistorySnapshot,
@@ -6,10 +6,10 @@ import {
6
6
  } from "./chunk-OKCTLCKS.js";
7
7
  import {
8
8
  isAntigravityOAuthAgent
9
- } from "./chunk-DS3SQTDT.js";
9
+ } from "./chunk-MJHQ3NRV.js";
10
10
  import {
11
11
  getModelAbility
12
- } from "./chunk-23RQKXP6.js";
12
+ } from "./chunk-WS22FPWT.js";
13
13
  import {
14
14
  isOwnedAgentKey,
15
15
  ownedAgentKey,
@@ -7,7 +7,7 @@ import {
7
7
  import {
8
8
  clipMultilineText,
9
9
  fetchAndSerializeTable
10
- } from "./chunk-NVHJWYUO.js";
10
+ } from "./chunk-DQD4PYQY.js";
11
11
  import {
12
12
  isGatewayHttpStatus
13
13
  } from "./chunk-NF64D32W.js";
@@ -28,26 +28,26 @@ import {
28
28
  } from "./chunk-MEYIRKDN.js";
29
29
  import {
30
30
  fetchAndCacheMessages
31
- } from "./chunk-L2VNQQ7M.js";
31
+ } from "./chunk-ACFF7U3F.js";
32
32
  import {
33
33
  shouldUseServerProxy
34
34
  } from "./chunk-YYLHWIW6.js";
35
35
  import {
36
36
  fetchServerSyncedCredential
37
- } from "./chunk-4FRNB4ZG.js";
37
+ } from "./chunk-D4TJCP3V.js";
38
38
  import {
39
39
  buildSkillGuidancePromptBlock,
40
40
  extractRuntimePageCapabilities,
41
41
  resolveBuiltinSkillPage,
42
42
  resolveSkillGraphFromRoots
43
- } from "./chunk-P3AS5IPM.js";
43
+ } from "./chunk-JT7FRJP5.js";
44
44
  import {
45
45
  buildIdentityBlock,
46
46
  buildRuntimeGuidanceBlocks,
47
47
  compileContextLayers,
48
48
  normalizeChatCompletionsBodyForProvider,
49
49
  resolveToolGuidedSections
50
- } from "./chunk-Q4KVAB6L.js";
50
+ } from "./chunk-UUVQJZ75.js";
51
51
  import {
52
52
  convertMessagesToResponsesInput,
53
53
  getUsageRequestOptions,
@@ -57,10 +57,10 @@ import {
57
57
  import {
58
58
  ANTIGRAVITY_CLOUD_CODE_BASE_URL,
59
59
  isAntigravityOAuthAgent
60
- } from "./chunk-DS3SQTDT.js";
60
+ } from "./chunk-MJHQ3NRV.js";
61
61
  import {
62
62
  buildProviderAuthHeaders
63
- } from "./chunk-X77EN2BJ.js";
63
+ } from "./chunk-K7M3MWCE.js";
64
64
  import {
65
65
  estimateTokenCount
66
66
  } from "./chunk-PSCNXBYA.js";
@@ -68,12 +68,12 @@ import {
68
68
  isOpenAiResponsesModel,
69
69
  resolvePlatformChatCompletionsEndpoint,
70
70
  resolvePlatformResponsesEndpoint
71
- } from "./chunk-T4F2EQGN.js";
71
+ } from "./chunk-ND2J3NRB.js";
72
72
  import {
73
73
  clampReasoningEffort,
74
74
  getModelConfig,
75
75
  isModelSupportReasoningEffort
76
- } from "./chunk-6H7GN3JL.js";
76
+ } from "./chunk-VRLI2WNW.js";
77
77
  import {
78
78
  createFileCredentialBroker
79
79
  } from "./chunk-HVURBGF3.js";
@@ -91,8 +91,9 @@ import {
91
91
  import {
92
92
  isDeepInfraKimiModel,
93
93
  isFireworksKimiModel,
94
+ isPlatformMimoProviderModel,
94
95
  resolveFireworksKimiModel
95
- } from "./chunk-UWMQ6FPM.js";
96
+ } from "./chunk-ASGDO77C.js";
96
97
  import {
97
98
  createSpaceKey
98
99
  } from "./chunk-UAD2WT54.js";
@@ -718,9 +719,12 @@ var shouldInjectLlamaCppThinkingToggle = (agentConfig) => {
718
719
  if (!isLoopbackUrl(agentConfig.customProviderUrl)) return false;
719
720
  return /qwen/i.test(agentConfig.model ?? "");
720
721
  };
721
- var shouldDisableMiMoThinking = (agentConfig) => {
722
+ var shouldDisableMiMoThinking = (agentConfig, resolvedModel) => {
722
723
  if (agentConfig.enableThinking === true) return false;
723
- return /xiaomimimo\.com/i.test(agentConfig.customProviderUrl ?? "") || (agentConfig.provider ?? "").toLowerCase() === "mimo";
724
+ if (/xiaomimimo\.com/i.test(agentConfig.customProviderUrl ?? "") || (agentConfig.provider ?? "").toLowerCase() === "mimo") {
725
+ return true;
726
+ }
727
+ return isPlatformMimoProviderModel(agentConfig.provider, resolvedModel);
724
728
  };
725
729
  var shouldDisableKimiThinking = (agentConfig, providerName, resolvedModel) => {
726
730
  if (agentConfig.enableThinking !== false) return false;
@@ -835,7 +839,7 @@ var generateOpenAIRequestBody = (agentConfig, providerName, messages, contexts,
835
839
  enable_thinking: agentConfig.enableThinking
836
840
  };
837
841
  }
838
- if (shouldDisableMiMoThinking(agentConfig)) {
842
+ if (shouldDisableMiMoThinking(agentConfig, resolvedModel)) {
839
843
  requestBody.thinking = { type: "disabled" };
840
844
  }
841
845
  if (shouldDisableKimiThinking(agentConfig, providerName, resolvedModel)) {
@@ -1,6 +1,7 @@
1
1
  import {
2
+ BUILTIN_DIALOG_LLM_FALLBACK_MODEL,
2
3
  BUILTIN_SUMMARY_LLM_CONFIG
3
- } from "./chunk-EVBFYPDC.js";
4
+ } from "./chunk-MC4XLIJ7.js";
4
5
  import {
5
6
  buildDialogAttachmentPlan,
6
7
  extractFileContentIds
@@ -13,7 +14,7 @@ import {
13
14
  } from "./chunk-AGGIDPCZ.js";
14
15
  import {
15
16
  runLlm
16
- } from "./chunk-4FRNB4ZG.js";
17
+ } from "./chunk-D4TJCP3V.js";
17
18
  import {
18
19
  cleanupCliSessionForDialog
19
20
  } from "./chunk-US463UAD.js";
@@ -54,7 +55,7 @@ import {
54
55
  getModelInfo,
55
56
  normalizeUsage,
56
57
  resolveAutoExecutionProfile
57
- } from "./chunk-OCL2YCAU.js";
58
+ } from "./chunk-VEJ4BOQV.js";
58
59
  import {
59
60
  COMPACTION_SUMMARY_SYSTEM_PROMPT,
60
61
  buildCompactionMetricsFromPlan,
@@ -69,7 +70,7 @@ import {
69
70
  import {
70
71
  findModelConfig,
71
72
  getModelConfig
72
- } from "./chunk-6H7GN3JL.js";
73
+ } from "./chunk-VRLI2WNW.js";
73
74
  import {
74
75
  toErrorMessage
75
76
  } from "./chunk-HNMXYYJR.js";
@@ -84,7 +85,7 @@ import {
84
85
  isPlatformHostedDeepSeekV4Model,
85
86
  isPlatformHostedImageModel,
86
87
  isPlatformHostedOpenAIImageModel
87
- } from "./chunk-UWMQ6FPM.js";
88
+ } from "./chunk-ASGDO77C.js";
88
89
  import {
89
90
  nolotusId
90
91
  } from "./chunk-IZAWJCG7.js";
@@ -7991,6 +7992,47 @@ var interface_locale_default = {
7991
7992
  home: "Home",
7992
7993
  // === Combined Welcome Section ===
7993
7994
  welcomeSection: {
7995
+ brandLanding: {
7996
+ kicker: "Nolo \xB7 Agent Harness",
7997
+ title: "Let AI adapt to the way you work",
7998
+ description: "Nolo gives agents persistent context and routes each task to the model and tools that fit its quality, capability, speed, and cost requirements.",
7999
+ continuity: "Models change. Your way of working should not have to start over.",
8000
+ primaryCta: "Start free",
8001
+ secondaryCta: "Download Nolo",
8002
+ contrasts: [
8003
+ "Not another chat box",
8004
+ "Not an AI that decides everything for you"
8005
+ ],
8006
+ contrastsLabel: "What Nolo is not",
8007
+ proofKicker: "Nolo in action",
8008
+ balanceKicker: "Human judgment",
8009
+ principles: [
8010
+ {
8011
+ title: "Good collaboration compounds",
8012
+ proof: "Memory \xB7 Space \xB7 Context",
8013
+ description: "Real work has history, rules, files, and lessons learned. Agents keep useful long-term context, so working together gets smoother over time."
8014
+ },
8015
+ {
8016
+ title: "Use the right intelligence for the right work",
8017
+ proof: "Routing \xB7 Delegation",
8018
+ description: "No model is best at everything. Use stronger models for important judgment, faster and cheaper agents for routine execution, and adopt new models as they improve."
8019
+ },
8020
+ {
8021
+ title: "Respect your judgment. Challenge your blind spots.",
8022
+ proof: "Divergence \xB7 Review",
8023
+ description: "Nolo does more than execute. It respects your intent and choices while surfacing alternatives, risks, and possibilities worth considering."
8024
+ }
8025
+ ],
8026
+ balanceTitle: "Automate what should be automated. Keep the choices that matter.",
8027
+ balanceDescription: "Attention is finite. Nolo keeps routine complexity in the background and asks for your judgment only where it truly matters.",
8028
+ systemLabel: "Nolo handles",
8029
+ systemItems: ["Model selection", "Agent orchestration", "Context management", "Cost and speed", "Repeatable execution"],
8030
+ youLabel: "You decide",
8031
+ youItems: ["Goals", "Which risks are worth taking", "Taste", "Direction", "What you truly want to create"],
8032
+ closingLead: "AI can research, execute, compare, verify, and move in parallel.",
8033
+ closingLines: ["Why you do it.", "What good looks like.", "What you truly want to create."],
8034
+ closingEnd: "That remains yours."
8035
+ },
7994
8036
  heroTitle: "Let your strongest model plan. Let lower-cost agents execute.",
7995
8037
  heroDescription: "Nolo orchestrates your coding agents across models \u2014 so premium capacity handles the hard decisions, not every routine step.",
7996
8038
  ctaButton: "Start free",
@@ -9250,6 +9292,47 @@ var interface_locale_default = {
9250
9292
  home: "\u9996\u9875",
9251
9293
  // === Combined Welcome Section ===
9252
9294
  welcomeSection: {
9295
+ brandLanding: {
9296
+ kicker: "Nolo \xB7 Agent Harness",
9297
+ title: "\u8BA9 AI \u9002\u5E94\u4F60\u7684\u5DE5\u4F5C\u65B9\u5F0F",
9298
+ description: "Nolo \u8BA9 Agent \u8BB0\u4F4F\u4F60\u7684\u5DE5\u4F5C\uFF0C\u5728\u4EFB\u52A1\u4E4B\u95F4\u5EF6\u7EED\u4E0A\u4E0B\u6587\uFF0C\u5E76\u6839\u636E\u80FD\u529B\u3001\u8D28\u91CF\u3001\u901F\u5EA6\u548C\u4EF7\u683C\uFF0C\u628A\u5DE5\u4F5C\u4EA4\u7ED9\u66F4\u5408\u9002\u7684\u6A21\u578B\u548C\u5DE5\u5177\u3002",
9299
+ continuity: "\u6A21\u578B\u4F1A\u53D8\u3002\u4F60\u7684\u5DE5\u4F5C\u65B9\u5F0F\u4E0D\u5FC5\u91CD\u6765\u3002",
9300
+ primaryCta: "\u514D\u8D39\u5F00\u59CB",
9301
+ secondaryCta: "\u4E0B\u8F7D Nolo",
9302
+ contrasts: [
9303
+ "\u4E0D\u662F\u53E6\u4E00\u4E2A\u804A\u5929\u6846",
9304
+ "\u4E0D\u662F\u66FF\u4F60\u5305\u529E\u4E00\u5207"
9305
+ ],
9306
+ contrastsLabel: "Nolo \u7684\u5B9A\u4F4D\u8FB9\u754C",
9307
+ proofKicker: "\u4EA7\u54C1\u5B9E\u51B5",
9308
+ balanceKicker: "\u4EBA\u7684\u5224\u65AD",
9309
+ principles: [
9310
+ {
9311
+ title: "\u597D\u7684\u5408\u4F5C\u4F1A\u79EF\u7D2F",
9312
+ proof: "\u8BB0\u5FC6 \xB7 \u7A7A\u95F4 \xB7 \u4E0A\u4E0B\u6587",
9313
+ description: "\u771F\u6B63\u7684\u5DE5\u4F5C\u6709\u5386\u53F2\u3001\u6709\u89C4\u5219\u3001\u6709\u6587\u4EF6\uFF0C\u4E5F\u6709\u8E29\u8FC7\u7684\u5751\u3002Agent \u4F1A\u4FDD\u7559\u957F\u671F\u8BB0\u5FC6\u548C\u6709\u4EF7\u503C\u7684\u4E0A\u4E0B\u6587\uFF0C\u5408\u4F5C\u8D8A\u4E45\uFF0C\u8D8A\u987A\u624B\u3002"
9314
+ },
9315
+ {
9316
+ title: "\u5408\u9002\u7684\u667A\u80FD\uFF0C\u505A\u5408\u9002\u7684\u5DE5\u4F5C",
9317
+ proof: "\u8DEF\u7531 \xB7 \u6D3E\u53D1",
9318
+ description: "\u6CA1\u6709\u4E00\u4E2A\u6A21\u578B\u9002\u5408\u6240\u6709\u4EFB\u52A1\u3002\u91CD\u8981\u5224\u65AD\u7528\u66F4\u5F3A\u7684\u6A21\u578B\uFF0C\u5E38\u89C4\u6267\u884C\u7528\u66F4\u5FEB\u3001\u66F4\u4FBF\u5B9C\u7684 Agent\uFF1B\u65B0\u7684\u6A21\u578B\u51FA\u73B0\uFF0C\u4E5F\u53EF\u4EE5\u968F\u65F6\u6210\u4E3A\u65B0\u7684\u80FD\u529B\u3002"
9319
+ },
9320
+ {
9321
+ title: "\u5C0A\u91CD\u4F60\u7684\u5224\u65AD\uFF0C\u4E5F\u6311\u6218\u4F60\u7684\u76F2\u533A",
9322
+ proof: "\u53D1\u6563 \xB7 \u590D\u6838",
9323
+ description: "Nolo \u4E0D\u53EA\u57CB\u5934\u6267\u884C\u3002\u5B83\u5C0A\u91CD\u4F60\u7684\u521B\u610F\u548C\u9009\u62E9\uFF0C\u4E5F\u4F1A\u5728\u503C\u5F97\u7684\u65F6\u5019\u63D0\u51FA\u4E0D\u540C\u65B9\u6848\u3001\u6307\u51FA\u98CE\u9669\u3001\u8865\u5145\u4F60\u6CA1\u6709\u770B\u5230\u7684\u53EF\u80FD\u6027\u3002"
9324
+ }
9325
+ ],
9326
+ balanceTitle: "\u8BE5\u81EA\u52A8\u7684\u81EA\u52A8\uFF0C\u8BE5\u9009\u62E9\u7684\u7531\u4F60\u9009\u62E9",
9327
+ balanceDescription: "\u6CE8\u610F\u529B\u662F\u6709\u9650\u7684\u3002Nolo \u5C3D\u91CF\u628A\u53EF\u4EE5\u88AB\u7CFB\u7EDF\u5224\u65AD\u7684\u590D\u6742\u6027\u653E\u5230\u80CC\u540E\uFF0C\u53EA\u5728\u771F\u6B63\u9700\u8981\u4F60\u7684\u5224\u65AD\u65F6\u6253\u6270\u4F60\u3002",
9328
+ systemLabel: "Nolo \u5C3D\u91CF\u5904\u7406",
9329
+ systemItems: ["\u6A21\u578B\u9009\u62E9", "Agent \u8C03\u5EA6", "\u4E0A\u4E0B\u6587\u6574\u7406", "\u6210\u672C\u4E0E\u901F\u5EA6", "\u91CD\u590D\u6267\u884C"],
9330
+ youLabel: "\u7559\u7ED9\u4F60\u51B3\u5B9A",
9331
+ youItems: ["\u76EE\u6807", "\u613F\u610F\u627F\u62C5\u4EC0\u4E48\u98CE\u9669", "\u5BA1\u7F8E", "\u65B9\u5411", "\u771F\u6B63\u60F3\u521B\u9020\u4EC0\u4E48"],
9332
+ closingLead: "AI \u53EF\u4EE5\u7814\u7A76\u3001\u6267\u884C\u3001\u6BD4\u8F83\u3001\u68C0\u67E5\u548C\u5E76\u884C\u63A8\u8FDB\u3002",
9333
+ closingLines: ["\u4F60\u4E3A\u4EC0\u4E48\u505A\u3002", "\u4EC0\u4E48\u662F\u597D\u7684\u3002", "\u4F60\u771F\u6B63\u60F3\u521B\u9020\u4EC0\u4E48\u3002"],
9334
+ closingEnd: "\u59CB\u7EC8\u662F\u4F60\u3002"
9335
+ },
9253
9336
  heroTitle: "\u8BA9\u6700\u5F3A\u7684\u6A21\u578B\u89C4\u5212\uFF0C\u8BA9\u66F4\u4F4E\u6210\u672C\u7684 Agent \u6267\u884C\u3002",
9254
9337
  heroDescription: "Nolo \u8DE8\u6A21\u578B\u7F16\u6392\u4F60\u7684\u7F16\u7801 Agent\u2014\u2014\u8BA9\u9AD8\u4EF7\u503C\u7B97\u529B\u4E13\u6CE8\u6838\u5FC3\u51B3\u7B56\uFF0C\u800C\u4E0D\u662F\u6D88\u8017\u5728\u6BCF\u4E2A\u5E38\u89C4\u6B65\u9AA4\u4E0A\u3002",
9255
9338
  ctaButton: "\u514D\u8D39\u5F00\u59CB",
@@ -10509,6 +10592,47 @@ var interface_locale_default = {
10509
10592
  home: "\u9996\u9801",
10510
10593
  // === Combined Welcome Section ===
10511
10594
  welcomeSection: {
10595
+ brandLanding: {
10596
+ kicker: "Nolo \xB7 Agent Harness",
10597
+ title: "\u8B93 AI \u9069\u61C9\u4F60\u7684\u5DE5\u4F5C\u65B9\u5F0F",
10598
+ description: "Nolo \u8B93 Agent \u8A18\u4F4F\u4F60\u7684\u5DE5\u4F5C\uFF0C\u5728\u4EFB\u52D9\u4E4B\u9593\u5EF6\u7E8C\u4E0A\u4E0B\u6587\uFF0C\u4E26\u6839\u64DA\u80FD\u529B\u3001\u54C1\u8CEA\u3001\u901F\u5EA6\u548C\u50F9\u683C\uFF0C\u628A\u5DE5\u4F5C\u4EA4\u7D66\u66F4\u5408\u9069\u7684\u6A21\u578B\u548C\u5DE5\u5177\u3002",
10599
+ continuity: "\u6A21\u578B\u6703\u8B8A\u3002\u4F60\u7684\u5DE5\u4F5C\u65B9\u5F0F\u4E0D\u5FC5\u91CD\u4F86\u3002",
10600
+ primaryCta: "\u514D\u8CBB\u958B\u59CB",
10601
+ secondaryCta: "\u4E0B\u8F09 Nolo",
10602
+ contrasts: [
10603
+ "\u4E0D\u662F\u53E6\u4E00\u500B\u804A\u5929\u6846",
10604
+ "\u4E0D\u662F\u66FF\u4F60\u5305\u8FA6\u4E00\u5207"
10605
+ ],
10606
+ contrastsLabel: "Nolo \u7684\u5B9A\u4F4D\u908A\u754C",
10607
+ proofKicker: "\u7522\u54C1\u5BE6\u6CC1",
10608
+ balanceKicker: "\u4EBA\u7684\u5224\u65B7",
10609
+ principles: [
10610
+ {
10611
+ title: "\u597D\u7684\u5408\u4F5C\u6703\u7D2F\u7A4D",
10612
+ proof: "\u8A18\u61B6 \xB7 \u7A7A\u9593 \xB7 \u4E0A\u4E0B\u6587",
10613
+ description: "\u771F\u6B63\u7684\u5DE5\u4F5C\u6709\u6B77\u53F2\u3001\u6709\u898F\u5247\u3001\u6709\u6587\u4EF6\uFF0C\u4E5F\u6709\u8E29\u904E\u7684\u5751\u3002Agent \u6703\u4FDD\u7559\u9577\u671F\u8A18\u61B6\u548C\u6709\u50F9\u503C\u7684\u4E0A\u4E0B\u6587\uFF0C\u5408\u4F5C\u8D8A\u4E45\uFF0C\u8D8A\u9806\u624B\u3002"
10614
+ },
10615
+ {
10616
+ title: "\u5408\u9069\u7684\u667A\u80FD\uFF0C\u505A\u5408\u9069\u7684\u5DE5\u4F5C",
10617
+ proof: "\u8DEF\u7531 \xB7 \u59D4\u6D3E",
10618
+ description: "\u6C92\u6709\u4E00\u500B\u6A21\u578B\u9069\u5408\u6240\u6709\u4EFB\u52D9\u3002\u91CD\u8981\u5224\u65B7\u7528\u66F4\u5F37\u7684\u6A21\u578B\uFF0C\u5E38\u898F\u57F7\u884C\u7528\u66F4\u5FEB\u3001\u66F4\u4FBF\u5B9C\u7684 Agent\uFF1B\u65B0\u7684\u6A21\u578B\u51FA\u73FE\uFF0C\u4E5F\u53EF\u4EE5\u96A8\u6642\u6210\u70BA\u65B0\u7684\u80FD\u529B\u3002"
10619
+ },
10620
+ {
10621
+ title: "\u5C0A\u91CD\u4F60\u7684\u5224\u65B7\uFF0C\u4E5F\u6311\u6230\u4F60\u7684\u76F2\u5340",
10622
+ proof: "\u767C\u6563 \xB7 \u8907\u6838",
10623
+ description: "Nolo \u4E0D\u53EA\u57CB\u982D\u57F7\u884C\u3002\u5B83\u5C0A\u91CD\u4F60\u7684\u5275\u610F\u548C\u9078\u64C7\uFF0C\u4E5F\u6703\u5728\u503C\u5F97\u7684\u6642\u5019\u63D0\u51FA\u4E0D\u540C\u65B9\u6848\u3001\u6307\u51FA\u98A8\u96AA\u3001\u88DC\u5145\u4F60\u6C92\u6709\u770B\u5230\u7684\u53EF\u80FD\u6027\u3002"
10624
+ }
10625
+ ],
10626
+ balanceTitle: "\u8A72\u81EA\u52D5\u7684\u81EA\u52D5\uFF0C\u8A72\u9078\u64C7\u7684\u7531\u4F60\u9078\u64C7",
10627
+ balanceDescription: "\u6CE8\u610F\u529B\u662F\u6709\u9650\u7684\u3002Nolo \u76E1\u91CF\u628A\u53EF\u4EE5\u88AB\u7CFB\u7D71\u5224\u65B7\u7684\u8907\u96DC\u6027\u653E\u5230\u80CC\u5F8C\uFF0C\u53EA\u5728\u771F\u6B63\u9700\u8981\u4F60\u7684\u5224\u65B7\u6642\u6253\u64FE\u4F60\u3002",
10628
+ systemLabel: "Nolo \u76E1\u91CF\u8655\u7406",
10629
+ systemItems: ["\u6A21\u578B\u9078\u64C7", "Agent \u8ABF\u5EA6", "\u4E0A\u4E0B\u6587\u6574\u7406", "\u6210\u672C\u8207\u901F\u5EA6", "\u91CD\u8907\u57F7\u884C"],
10630
+ youLabel: "\u7559\u7D66\u4F60\u6C7A\u5B9A",
10631
+ youItems: ["\u76EE\u6A19", "\u9858\u610F\u627F\u64D4\u4EC0\u9EBC\u98A8\u96AA", "\u5BE9\u7F8E", "\u65B9\u5411", "\u771F\u6B63\u60F3\u5275\u9020\u4EC0\u9EBC"],
10632
+ closingLead: "AI \u53EF\u4EE5\u7814\u7A76\u3001\u57F7\u884C\u3001\u6BD4\u8F03\u3001\u6AA2\u67E5\u548C\u4E26\u884C\u63A8\u9032\u3002",
10633
+ closingLines: ["\u4F60\u70BA\u4EC0\u9EBC\u505A\u3002", "\u4EC0\u9EBC\u662F\u597D\u7684\u3002", "\u4F60\u771F\u6B63\u60F3\u5275\u9020\u4EC0\u9EBC\u3002"],
10634
+ closingEnd: "\u59CB\u7D42\u662F\u4F60\u3002"
10635
+ },
10512
10636
  heroTitle: "\u8B93\u6700\u5F37\u6A21\u578B\u898F\u5283\uFF0C\u8B93\u66F4\u4F4E\u6210\u672C\u7684 Agent \u57F7\u884C\u3002",
10513
10637
  heroDescription: "Nolo \u8DE8\u6A21\u578B\u7DE8\u6392\u60A8\u7684\u7DE8\u78BC Agent\u2014\u2014\u8B93\u9AD8\u50F9\u503C\u7B97\u529B\u5C08\u6CE8\u6838\u5FC3\u6C7A\u7B56\uFF0C\u800C\u4E0D\u662F\u6D88\u8017\u5728\u6BCF\u500B\u5E38\u898F\u6B65\u9A5F\u4E0A\u3002",
10514
10638
  ctaButton: "\u514D\u8CBB\u958B\u59CB",
@@ -11690,6 +11814,47 @@ var interface_locale_default = {
11690
11814
  home: "\u30DB\u30FC\u30E0",
11691
11815
  // === Combined Welcome Section ===
11692
11816
  welcomeSection: {
11817
+ brandLanding: {
11818
+ kicker: "Nolo \xB7 Agent Harness",
11819
+ title: "AI \u3092\u3042\u306A\u305F\u306E\u50CD\u304D\u65B9\u306B\u5408\u308F\u305B\u308B",
11820
+ description: "Nolo \u306F\u30A8\u30FC\u30B8\u30A7\u30F3\u30C8\u306B\u6C38\u7D9A\u7684\u306A\u30B3\u30F3\u30C6\u30AD\u30B9\u30C8\u3092\u6301\u305F\u305B\u3001\u54C1\u8CEA\u30FB\u80FD\u529B\u30FB\u901F\u5EA6\u30FB\u30B3\u30B9\u30C8\u306E\u8981\u4EF6\u306B\u5408\u3046\u30E2\u30C7\u30EB\u3068\u30C4\u30FC\u30EB\u3078\u5404\u30BF\u30B9\u30AF\u3092\u632F\u308A\u5206\u3051\u307E\u3059\u3002",
11821
+ continuity: "\u30E2\u30C7\u30EB\u306F\u5909\u308F\u308B\u3002\u3042\u306A\u305F\u306E\u50CD\u304D\u65B9\u306F\u3084\u308A\u76F4\u3059\u5FC5\u8981\u304C\u306A\u3044\u3002",
11822
+ primaryCta: "\u7121\u6599\u3067\u59CB\u3081\u308B",
11823
+ secondaryCta: "Nolo \u3092\u30C0\u30A6\u30F3\u30ED\u30FC\u30C9",
11824
+ contrasts: [
11825
+ "\u3082\u3046\u4E00\u3064\u306E\u30C1\u30E3\u30C3\u30C8\u30DC\u30C3\u30AF\u30B9\u3067\u306F\u306A\u3044",
11826
+ "\u3059\u3079\u3066\u3092\u4EE3\u884C\u3059\u308B AI \u3067\u306F\u306A\u3044"
11827
+ ],
11828
+ contrastsLabel: "Nolo \u306E\u4F4D\u7F6E\u3065\u3051",
11829
+ proofKicker: "\u88FD\u54C1\u306E\u5B9F\u969B",
11830
+ balanceKicker: "\u4EBA\u306E\u5224\u65AD",
11831
+ principles: [
11832
+ {
11833
+ title: "\u826F\u3044\u5354\u50CD\u306F\u84C4\u7A4D\u3055\u308C\u308B",
11834
+ proof: "\u30E1\u30E2\u30EA \xB7 \u30B9\u30DA\u30FC\u30B9 \xB7 \u30B3\u30F3\u30C6\u30AD\u30B9\u30C8",
11835
+ description: "\u5B9F\u969B\u306E\u4ED5\u4E8B\u306B\u306F\u5C65\u6B74\u3001\u30EB\u30FC\u30EB\u3001\u30D5\u30A1\u30A4\u30EB\u3001\u305D\u3057\u3066\u5B66\u3093\u3060\u6559\u8A13\u304C\u3042\u308B\u3002\u30A8\u30FC\u30B8\u30A7\u30F3\u30C8\u306F\u6709\u7528\u306A\u9577\u671F\u30B3\u30F3\u30C6\u30AD\u30B9\u30C8\u3092\u4FDD\u6301\u3059\u308B\u306E\u3067\u3001\u5354\u50CD\u306F\u7D9A\u3051\u308B\u307B\u3069\u6ED1\u3089\u304B\u306B\u306A\u308B\u3002"
11836
+ },
11837
+ {
11838
+ title: "\u9069\u5207\u306A\u77E5\u80FD\u3092\u3001\u9069\u5207\u306A\u4ED5\u4E8B\u306B",
11839
+ proof: "\u30EB\u30FC\u30C6\u30A3\u30F3\u30B0 \xB7 \u59D4\u8B72",
11840
+ description: "\u3042\u3089\u3086\u308B\u9762\u3067\u6700\u5F37\u306E\u30E2\u30C7\u30EB\u306F\u5B58\u5728\u3057\u306A\u3044\u3002\u91CD\u8981\u306A\u5224\u65AD\u306B\u306F\u5F37\u3044\u30E2\u30C7\u30EB\u3092\u3001\u5B9A\u578B\u51E6\u7406\u306B\u306F\u901F\u304F\u3066\u5B89\u3044\u30A8\u30FC\u30B8\u30A7\u30F3\u30C8\u3092\u3002\u65B0\u3057\u3044\u30E2\u30C7\u30EB\u304C\u51FA\u308C\u3070\u3001\u3044\u3064\u3067\u3082\u65B0\u3057\u3044\u80FD\u529B\u3068\u3057\u3066\u53D6\u308A\u8FBC\u3081\u308B\u3002"
11841
+ },
11842
+ {
11843
+ title: "\u3042\u306A\u305F\u306E\u5224\u65AD\u3092\u5C0A\u91CD\u3057\u3001\u76F2\u70B9\u306B\u6311\u3080",
11844
+ proof: "\u767A\u6563 \xB7 \u30EC\u30D3\u30E5\u30FC",
11845
+ description: "Nolo \u306F\u5B9F\u884C\u3059\u308B\u3060\u3051\u3067\u306F\u306A\u3044\u3002\u3042\u306A\u305F\u306E\u610F\u56F3\u3068\u9078\u629E\u3092\u5C0A\u91CD\u3057\u306A\u304C\u3089\u3001\u691C\u8A0E\u306B\u5024\u3059\u308B\u4EE3\u66FF\u6848\u3001\u30EA\u30B9\u30AF\u3001\u53EF\u80FD\u6027\u3092\u63D0\u793A\u3059\u308B\u3002"
11846
+ }
11847
+ ],
11848
+ balanceTitle: "\u81EA\u52D5\u5316\u3059\u3079\u304D\u3053\u3068\u306F\u81EA\u52D5\u5316\u3057\u3001\u91CD\u8981\u306A\u9078\u629E\u306F\u3042\u306A\u305F\u306B\u6B8B\u3059",
11849
+ balanceDescription: "\u6CE8\u610F\u529B\u306F\u6709\u9650\u3060\u3002Nolo \u306F\u5B9A\u578B\u306E\u8907\u96D1\u3055\u3092\u80CC\u5F8C\u306B\u96A0\u3057\u3001\u672C\u5F53\u306B\u5FC5\u8981\u306A\u3068\u3053\u308D\u3067\u3060\u3051\u3042\u306A\u305F\u306E\u5224\u65AD\u3092\u6C42\u3081\u308B\u3002",
11850
+ systemLabel: "Nolo \u304C\u51E6\u7406\u3059\u308B",
11851
+ systemItems: ["\u30E2\u30C7\u30EB\u9078\u629E", "\u30A8\u30FC\u30B8\u30A7\u30F3\u30C8\u7D71\u62EC", "\u30B3\u30F3\u30C6\u30AD\u30B9\u30C8\u7BA1\u7406", "\u30B3\u30B9\u30C8\u3068\u901F\u5EA6", "\u53CD\u5FA9\u5B9F\u884C"],
11852
+ youLabel: "\u3042\u306A\u305F\u304C\u6C7A\u3081\u308B",
11853
+ youItems: ["\u76EE\u6A19", "\u3069\u306E\u30EA\u30B9\u30AF\u3092\u5F15\u304D\u53D7\u3051\u308B\u304B", "\u5BE9\u7F8E", "\u65B9\u5411", "\u672C\u5F53\u306B\u4F5C\u308A\u305F\u3044\u3082\u306E"],
11854
+ closingLead: "AI \u306F\u8ABF\u67FB\u3057\u3001\u5B9F\u884C\u3057\u3001\u6BD4\u8F03\u3057\u3001\u691C\u8A3C\u3057\u3001\u4E26\u884C\u3057\u3066\u9032\u3081\u3089\u308C\u308B\u3002",
11855
+ closingLines: ["\u306A\u305C\u3084\u308B\u306E\u304B\u3002", "\u4F55\u304C\u826F\u3044\u306E\u304B\u3002", "\u672C\u5F53\u306B\u4F5C\u308A\u305F\u3044\u3082\u306E\u306F\u4F55\u304B\u3002"],
11856
+ closingEnd: "\u305D\u308C\u306F\u3001\u3042\u306A\u305F\u306E\u3082\u306E\u3060\u3002"
11857
+ },
11693
11858
  heroTitle: "\u6700\u3082\u5F37\u3044\u30E2\u30C7\u30EB\u304C\u8A08\u753B\u3057\u3001\u3088\u308A\u4F4E\u30B3\u30B9\u30C8\u306A\u30A8\u30FC\u30B8\u30A7\u30F3\u30C8\u304C\u5B9F\u884C\u3059\u308B\u3002",
11694
11859
  heroDescription: "Nolo \u306F\u30E2\u30C7\u30EB\u3092\u6A2A\u65AD\u3057\u3066\u30B3\u30FC\u30C7\u30A3\u30F3\u30B0\u30A8\u30FC\u30B8\u30A7\u30F3\u30C8\u3092\u7D71\u62EC\u3057\u3001\u30D7\u30EC\u30DF\u30A2\u30E0\u306A\u5BB9\u91CF\u3092\u5B9A\u578B\u4F5C\u696D\u3067\u306F\u306A\u304F\u91CD\u8981\u306A\u610F\u601D\u6C7A\u5B9A\u306B\u96C6\u4E2D\u3055\u305B\u307E\u3059\u3002",
11695
11860
  ctaButton: "\u7121\u6599\u3067\u59CB\u3081\u308B",
@@ -14646,6 +14811,77 @@ var localFirst_locale_default = {
14646
14811
  }
14647
14812
  };
14648
14813
 
14814
+ // packages/app/i18n/translations/openAuditable.locale.ts
14815
+ var english = {
14816
+ openAuditable: {
14817
+ kicker: "Open & Auditable",
14818
+ title: "Don\u2019t trust the binary. Verify it.",
14819
+ description: "Nolo\u2019s client source is public. Official desktop release metadata records the exact public repository commit used for the build and the SHA-256 of each artifact.",
14820
+ viewSource: "View source",
14821
+ verifyRelease: "Verify current release",
14822
+ publicCommitTitle: "Exact public commit",
14823
+ publicCommitText: "Release metadata records the exact public projection SHA used for the build.",
14824
+ hashTitle: "Artifact checksum",
14825
+ hashText: "The public manifest records SHA-256 for each downloadable desktop artifact.",
14826
+ auditTitle: "Auditable client",
14827
+ auditText: "Inspect how the client reads files, invokes tools, and talks to model providers."
14828
+ }
14829
+ };
14830
+ var openAuditable_locale_default = {
14831
+ ["en" /* EN */]: { translation: english },
14832
+ ["zh-CN" /* ZH_CN */]: {
14833
+ translation: {
14834
+ openAuditable: {
14835
+ kicker: "\u5F00\u653E \xB7 \u53EF\u5BA1\u8BA1",
14836
+ title: "\u4E0D\u8981\u53EA\u4FE1\u5B89\u88C5\u5305\uFF0C\u81EA\u5DF1\u9A8C\u8BC1\u3002",
14837
+ description: "Nolo \u5BA2\u6237\u7AEF\u6E90\u7801\u516C\u5F00\u3002\u5B98\u65B9\u684C\u9762\u7248\u53D1\u5E03\u5143\u6570\u636E\u4F1A\u8BB0\u5F55\u6784\u5EFA\u6240\u5BF9\u5E94\u7684\u516C\u5F00\u4ED3\u5E93\u63D0\u4EA4\uFF0C\u4EE5\u53CA\u6BCF\u4E2A\u5B89\u88C5\u5305\u7684 SHA-256 \u6821\u9A8C\u503C\u3002",
14838
+ viewSource: "\u67E5\u770B\u6E90\u7801",
14839
+ verifyRelease: "\u9A8C\u8BC1\u5F53\u524D\u7248\u672C",
14840
+ publicCommitTitle: "\u5BF9\u5E94\u516C\u5F00\u63D0\u4EA4",
14841
+ publicCommitText: "\u53D1\u5E03\u5143\u6570\u636E\u4F1A\u8BB0\u5F55\u6784\u5EFA\u4F7F\u7528\u7684\u51C6\u786E\u516C\u5F00 projection SHA\u3002",
14842
+ hashTitle: "\u5B89\u88C5\u5305\u6821\u9A8C\u503C",
14843
+ hashText: "\u516C\u5F00 manifest \u4F1A\u8BB0\u5F55\u6BCF\u4E2A\u53EF\u4E0B\u8F7D\u684C\u9762\u5B89\u88C5\u5305\u7684 SHA-256\u3002",
14844
+ auditTitle: "\u5BA2\u6237\u7AEF\u53EF\u5BA1\u8BA1",
14845
+ auditText: "\u4F60\u53EF\u4EE5\u68C0\u67E5\u5BA2\u6237\u7AEF\u5982\u4F55\u8BFB\u53D6\u6587\u4EF6\u3001\u8C03\u7528\u5DE5\u5177\uFF0C\u4EE5\u53CA\u8FDE\u63A5\u6A21\u578B\u63D0\u4F9B\u65B9\u3002"
14846
+ }
14847
+ }
14848
+ },
14849
+ ["zh-Hant" /* ZH_HANT */]: {
14850
+ translation: {
14851
+ openAuditable: {
14852
+ kicker: "\u958B\u653E \xB7 \u53EF\u7A3D\u6838",
14853
+ title: "\u4E0D\u8981\u53EA\u76F8\u4FE1\u5B89\u88DD\u6A94\uFF0C\u81EA\u5DF1\u9A57\u8B49\u3002",
14854
+ description: "Nolo \u7528\u6236\u7AEF\u539F\u59CB\u78BC\u516C\u958B\u3002\u5B98\u65B9\u684C\u9762\u7248\u767C\u5E03\u4E2D\u7E7C\u8CC7\u6599\u6703\u8A18\u9304\u5EFA\u7F6E\u6240\u5C0D\u61C9\u7684\u516C\u958B\u5132\u5B58\u5EAB\u63D0\u4EA4\uFF0C\u4EE5\u53CA\u6BCF\u500B\u5B89\u88DD\u6A94\u7684 SHA-256 \u6821\u9A57\u503C\u3002",
14855
+ viewSource: "\u67E5\u770B\u539F\u59CB\u78BC",
14856
+ verifyRelease: "\u9A57\u8B49\u76EE\u524D\u7248\u672C",
14857
+ publicCommitTitle: "\u5C0D\u61C9\u516C\u958B\u63D0\u4EA4",
14858
+ publicCommitText: "\u767C\u5E03\u4E2D\u7E7C\u8CC7\u6599\u6703\u8A18\u9304\u5EFA\u7F6E\u4F7F\u7528\u7684\u7CBE\u78BA\u516C\u958B projection SHA\u3002",
14859
+ hashTitle: "\u5B89\u88DD\u6A94\u6821\u9A57\u503C",
14860
+ hashText: "\u516C\u958B manifest \u6703\u8A18\u9304\u6BCF\u500B\u53EF\u4E0B\u8F09\u684C\u9762\u5B89\u88DD\u6A94\u7684 SHA-256\u3002",
14861
+ auditTitle: "\u7528\u6236\u7AEF\u53EF\u7A3D\u6838",
14862
+ auditText: "\u4F60\u53EF\u4EE5\u6AA2\u67E5\u7528\u6236\u7AEF\u5982\u4F55\u8B80\u53D6\u6A94\u6848\u3001\u547C\u53EB\u5DE5\u5177\uFF0C\u4EE5\u53CA\u9023\u63A5\u6A21\u578B\u63D0\u4F9B\u65B9\u3002"
14863
+ }
14864
+ }
14865
+ },
14866
+ ["ja" /* JA */]: {
14867
+ translation: {
14868
+ openAuditable: {
14869
+ kicker: "Open & Auditable",
14870
+ title: "\u30D0\u30A4\u30CA\u30EA\u3092\u305F\u3060\u4FE1\u3058\u305A\u3001\u81EA\u5206\u3067\u691C\u8A3C\u3067\u304D\u307E\u3059\u3002",
14871
+ description: "Nolo \u306E\u30AF\u30E9\u30A4\u30A2\u30F3\u30C8\u30BD\u30FC\u30B9\u306F\u516C\u958B\u3055\u308C\u3066\u3044\u307E\u3059\u3002\u516C\u5F0F\u30C7\u30B9\u30AF\u30C8\u30C3\u30D7\u7248\u306E\u30EA\u30EA\u30FC\u30B9\u30E1\u30BF\u30C7\u30FC\u30BF\u306B\u306F\u3001\u30D3\u30EB\u30C9\u306B\u5BFE\u5FDC\u3059\u308B\u516C\u958B\u30EA\u30DD\u30B8\u30C8\u30EA\u306E\u6B63\u78BA\u306A\u30B3\u30DF\u30C3\u30C8\u3068\u3001\u5404\u6210\u679C\u7269\u306E SHA-256 \u304C\u8A18\u9332\u3055\u308C\u307E\u3059\u3002",
14872
+ viewSource: "\u30BD\u30FC\u30B9\u3092\u898B\u308B",
14873
+ verifyRelease: "\u73FE\u5728\u306E\u30EA\u30EA\u30FC\u30B9\u3092\u691C\u8A3C",
14874
+ publicCommitTitle: "\u6B63\u78BA\u306A\u516C\u958B\u30B3\u30DF\u30C3\u30C8",
14875
+ publicCommitText: "\u30EA\u30EA\u30FC\u30B9\u30E1\u30BF\u30C7\u30FC\u30BF\u306B\u306F\u3001\u30D3\u30EB\u30C9\u306B\u4F7F\u7528\u3057\u305F\u516C\u958B projection SHA \u304C\u8A18\u9332\u3055\u308C\u307E\u3059\u3002",
14876
+ hashTitle: "\u6210\u679C\u7269\u30C1\u30A7\u30C3\u30AF\u30B5\u30E0",
14877
+ hashText: "\u516C\u958B manifest \u306B\u306F\u3001\u30C0\u30A6\u30F3\u30ED\u30FC\u30C9\u53EF\u80FD\u306A\u5404\u30C7\u30B9\u30AF\u30C8\u30C3\u30D7\u6210\u679C\u7269\u306E SHA-256 \u304C\u8A18\u9332\u3055\u308C\u307E\u3059\u3002",
14878
+ auditTitle: "\u76E3\u67FB\u53EF\u80FD\u306A\u30AF\u30E9\u30A4\u30A2\u30F3\u30C8",
14879
+ auditText: "\u30AF\u30E9\u30A4\u30A2\u30F3\u30C8\u304C\u30D5\u30A1\u30A4\u30EB\u3092\u8AAD\u307F\u3001\u30C4\u30FC\u30EB\u3092\u547C\u3073\u51FA\u3057\u3001\u30E2\u30C7\u30EB\u30D7\u30ED\u30D0\u30A4\u30C0\u30FC\u3068\u901A\u4FE1\u3059\u308B\u65B9\u6CD5\u3092\u78BA\u8A8D\u3067\u304D\u307E\u3059\u3002"
14880
+ }
14881
+ }
14882
+ }
14883
+ };
14884
+
14649
14885
  // packages/app/i18n/i18n.config.ts
14650
14886
  var resources = {
14651
14887
  ["en" /* EN */]: {
@@ -14660,6 +14896,7 @@ var resources = {
14660
14896
  ...aup_locale_default["en" /* EN */].translation,
14661
14897
  ...footer_locale_default["en" /* EN */].translation,
14662
14898
  ...localFirst_locale_default["en" /* EN */].translation,
14899
+ ...openAuditable_locale_default["en" /* EN */].translation,
14663
14900
  seo: seo_locale_default["en" /* EN */]
14664
14901
  },
14665
14902
  space: space_locale_default["en" /* EN */].translation,
@@ -14678,6 +14915,7 @@ var resources = {
14678
14915
  ...aup_locale_default["zh-CN" /* ZH_CN */].translation,
14679
14916
  ...footer_locale_default["zh-CN" /* ZH_CN */].translation,
14680
14917
  ...localFirst_locale_default["zh-CN" /* ZH_CN */].translation,
14918
+ ...openAuditable_locale_default["zh-CN" /* ZH_CN */].translation,
14681
14919
  seo: seo_locale_default["zh-CN" /* ZH_CN */]
14682
14920
  },
14683
14921
  space: space_locale_default["zh-CN" /* ZH_CN */].translation,
@@ -14696,6 +14934,7 @@ var resources = {
14696
14934
  ...aup_locale_default["zh-Hant" /* ZH_HANT */].translation,
14697
14935
  ...footer_locale_default["zh-Hant" /* ZH_HANT */].translation,
14698
14936
  ...localFirst_locale_default["zh-Hant" /* ZH_HANT */].translation,
14937
+ ...openAuditable_locale_default["zh-Hant" /* ZH_HANT */].translation,
14699
14938
  seo: seo_locale_default["zh-Hant" /* ZH_HANT */]
14700
14939
  },
14701
14940
  space: space_locale_default["zh-Hant" /* ZH_HANT */].translation,
@@ -14714,6 +14953,7 @@ var resources = {
14714
14953
  ...aup_locale_default["ja" /* JA */].translation,
14715
14954
  ...footer_locale_default["ja" /* JA */].translation,
14716
14955
  ...localFirst_locale_default["ja" /* JA */].translation,
14956
+ ...openAuditable_locale_default["ja" /* JA */].translation,
14717
14957
  seo: seo_locale_default["ja" /* JA */]
14718
14958
  },
14719
14959
  space: space_locale_default["ja" /* JA */].translation,
@@ -14732,6 +14972,7 @@ var resources = {
14732
14972
  ...aup_locale_default["ko" /* KO */]?.translation ?? aup_locale_default["en" /* EN */].translation,
14733
14973
  ...footer_locale_default["ko" /* KO */]?.translation ?? footer_locale_default["en" /* EN */].translation,
14734
14974
  ...localFirst_locale_default["ko" /* KO */]?.translation ?? localFirst_locale_default["en" /* EN */].translation,
14975
+ ...openAuditable_locale_default["ko" /* KO */]?.translation ?? openAuditable_locale_default["en" /* EN */].translation,
14735
14976
  seo: seo_locale_default["ko" /* KO */]
14736
14977
  },
14737
14978
  space: space_locale_default["ko" /* KO */]?.translation ?? space_locale_default["en" /* EN */].translation,
@@ -14928,16 +15169,35 @@ var updateDialogSummaryAction = async (args, thunkApi) => {
14928
15169
  fileOpsText
14929
15170
  });
14930
15171
  try {
14931
- const newSummary = await dispatch(
15172
+ const runSummaryLlm = (model) => dispatch(
14932
15173
  runLlm({
14933
15174
  llmConfig: {
14934
15175
  ...BUILTIN_SUMMARY_LLM_CONFIG,
15176
+ ...model ? { model } : {},
14935
15177
  prompt: COMPACTION_SUMMARY_SYSTEM_PROMPT
14936
15178
  },
14937
15179
  content: promptContent,
14938
15180
  billingDialogKey: dialogKey
14939
15181
  })
14940
15182
  ).unwrap();
15183
+ const isUsableSummary = (value) => typeof value === "string" && value.trim().length > 0;
15184
+ let newSummary = "";
15185
+ let primaryError;
15186
+ try {
15187
+ newSummary = await runSummaryLlm();
15188
+ } catch (error) {
15189
+ primaryError = error;
15190
+ }
15191
+ if (!isUsableSummary(newSummary)) {
15192
+ try {
15193
+ newSummary = await runSummaryLlm(BUILTIN_DIALOG_LLM_FALLBACK_MODEL);
15194
+ } catch (fallbackError) {
15195
+ throw primaryError ?? fallbackError;
15196
+ }
15197
+ if (!isUsableSummary(newSummary) && primaryError) {
15198
+ throw primaryError;
15199
+ }
15200
+ }
14941
15201
  if (newSummary && typeof newSummary === "string" && newSummary.trim()) {
14942
15202
  const currentCount = dialogConfig.compressionCount || 0;
14943
15203
  await dispatch(
@@ -17126,7 +17386,7 @@ var messageSlice = createSliceWithThunks({
17126
17386
  runtimeOptions: args.runtimeOptions
17127
17387
  });
17128
17388
  if (agentKeyToUse) {
17129
- const { streamAgentChatTurn } = await import("./agentSlice-7GDS5Q2S.js");
17389
+ const { streamAgentChatTurn } = await import("./agentSlice-PYJFXGZL.js");
17130
17390
  await dispatch(
17131
17391
  streamAgentChatTurn({
17132
17392
  agentKey: agentKeyToUse,
@@ -18259,7 +18519,7 @@ var deleteDialogThunk = async (payload, thunkApi) => {
18259
18519
  }
18260
18520
  if (isCurrentDialog) {
18261
18521
  await thunkApi.dispatch(resetMsgs());
18262
- const { clearPendingAttachments: clearPendingAttachments2 } = await import("./dialogSlice-3E7Z7HZV.js");
18522
+ const { clearPendingAttachments: clearPendingAttachments2 } = await import("./dialogSlice-YXMORK5T.js");
18263
18523
  dispatch(clearPendingAttachments2());
18264
18524
  }
18265
18525
  return { dialogKey, isCurrentDialog, attachmentPlan };
@@ -18267,15 +18527,15 @@ var deleteDialogThunk = async (payload, thunkApi) => {
18267
18527
 
18268
18528
  // packages/chat/dialog/dialogSlice.ts
18269
18529
  var runCreateDialogAction = async (args, thunkApi) => {
18270
- const { createDialogAction } = await import("./createDialogAction-BMGHBTQB.js");
18530
+ const { createDialogAction } = await import("./createDialogAction-577E6FB2.js");
18271
18531
  return createDialogAction(args, thunkApi);
18272
18532
  };
18273
18533
  var runCreateAgentAutomationAction = async (args, thunkApi) => {
18274
- const { createAgentAutomationAction } = await import("./createAgentAutomationAction-TNE3QMJR.js");
18534
+ const { createAgentAutomationAction } = await import("./createAgentAutomationAction-GUBB2LWY.js");
18275
18535
  return createAgentAutomationAction(args, thunkApi);
18276
18536
  };
18277
18537
  var runUpdateDialogTitleAction = async (args, thunkApi) => {
18278
- const { updateDialogTitleAction } = await import("./updateDialogTitleAction-CSPKYQRO.js");
18538
+ const { updateDialogTitleAction } = await import("./updateDialogTitleAction-KRUWX66L.js");
18279
18539
  return updateDialogTitleAction(args, thunkApi);
18280
18540
  };
18281
18541
  var runAddDialogAgentAction = async (args, thunkApi) => {
@@ -18299,7 +18559,7 @@ var runSetDialogExtraReferencesAction = async (args, thunkApi) => {
18299
18559
  return setDialogExtraReferencesAction(args, thunkApi);
18300
18560
  };
18301
18561
  var runHandleSendMessageAction = async (args, thunkApi) => {
18302
- const { handleSendMessageAction } = await import("./handleSendMessageAction-FFYOGXAO.js");
18562
+ const { handleSendMessageAction } = await import("./handleSendMessageAction-BQIRKHC6.js");
18303
18563
  return handleSendMessageAction(args, thunkApi);
18304
18564
  };
18305
18565
  function clearDialogState() {
@@ -18312,7 +18572,7 @@ var createPageAndAddReference = createAsyncThunk(
18312
18572
  async (payload, { dispatch, getState, rejectWithValue }) => {
18313
18573
  const { slateData, jsonData, title, type, fileId, groupId, dialogKey } = payload;
18314
18574
  try {
18315
- const { createDocState } = await import("./docStore-R47ABXBB.js");
18575
+ const { createDocState } = await import("./docStore-3U5FBN2O.js");
18316
18576
  const pageKey = await createDocState(
18317
18577
  { slateData, title },
18318
18578
  { dispatch, getState }
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  readDbRecord,
3
3
  writeAgentRecord
4
- } from "./chunk-Y2IFJ7VM.js";
4
+ } from "./chunk-HLRYI5XO.js";
5
5
  import {
6
6
  buildSkillSummaryMarker
7
7
  } from "./chunk-VF4K2QE6.js";