nolo-cli 0.79.0-alpha.2 → 0.79.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 (152) hide show
  1. package/README.md +2 -2
  2. package/{_executeModel-T3FPYFVF.js → _executeModel-U5V7LOJX.js} +46 -46
  3. package/{action-D22U6CTH.js → action-EXQVY3UO.js} +11 -11
  4. package/{addContentAction-XAPUTGL4.js → addContentAction-6IXQSRD2.js} +9 -9
  5. package/{addDialogAgentAction-M7VLLBZM.js → addDialogAgentAction-FZOB4BYM.js} +8 -8
  6. package/{agentDeleteCommand-2TYFURBN.js → agentDeleteCommand-4MIJFQQB.js} +30 -28
  7. package/{agentEmailCommands-7P35ZMUA.js → agentEmailCommands-JUXT36BY.js} +62 -60
  8. package/{agentGrantCommands-R3VQEZJR.js → agentGrantCommands-YW6PQAQ2.js} +2 -2
  9. package/{agentListCommands-IFUOWXP3.js → agentListCommands-MUVKMMZ5.js} +38 -30
  10. package/{agentMachineCommands-G46ZZ2ZQ.js → agentMachineCommands-56FTZLYV.js} +30 -28
  11. package/{agentProviderCommands-65ZC2WB4.js → agentProviderCommands-TOMVKJOV.js} +87 -0
  12. package/{agentPullCommand-N7L2CT7L.js → agentPullCommand-GLOOXJ2E.js} +3 -3
  13. package/{agentRecordCommands-R74LTQEQ.js → agentRecordCommands-FST3KAKG.js} +59 -57
  14. package/{agentRunCommand-UKJAECQ6.js → agentRunCommand-UMUEVIY2.js} +60 -58
  15. package/{agentRunControl-T44MESII.js → agentRunControl-XLGD3UZ5.js} +1 -1
  16. package/{agentRuntimeLocal-PUZINLWJ.js → agentRuntimeLocal-NH6GSGAJ.js} +28 -26
  17. package/{agentSlice-EACXUOWW.js → agentSlice-YZK6KG73.js} +10 -10
  18. package/{appDeleteCommands-U4NTEJYQ.js → appDeleteCommands-U45KXYX7.js} +30 -28
  19. package/{appDeployCommands-FXF45Q7F.js → appDeployCommands-LWQIQCFX.js} +30 -28
  20. package/{appDeployStatusCommands-KONVRM53.js → appDeployStatusCommands-LZO33PGD.js} +30 -28
  21. package/{appGetCommands-3VOGIZ7T.js → appGetCommands-OJSO6BCF.js} +30 -28
  22. package/{appListCommands-A6ROBW7P.js → appListCommands-NE56V7DI.js} +30 -28
  23. package/{authCommand-EVGFLAHO.js → authCommand-U5LA6H4Y.js} +164 -24
  24. package/{authCommands-ILTBI6JV.js → authCommands-RGOGCPP6.js} +4 -5
  25. package/builtinSkillRegistry-4NB7PCOF.js +33 -0
  26. package/{chatQueueReduxAdapter-XEIJO5WR.js → chatQueueReduxAdapter-FRMSYX7N.js} +24 -24
  27. package/{chunk-C3FZR5EC.js → chunk-2F7RJC6L.js} +1 -1
  28. package/{chunk-U6LKJRJB.js → chunk-377KM42Z.js} +42 -26
  29. package/{chunk-HQUORJTM.js → chunk-3BMYXEUW.js} +1 -1
  30. package/{chunk-AFIWC5NH.js → chunk-3XMOAYRC.js} +1 -1
  31. package/{chunk-UJ63UXGE.js → chunk-4CAPEGHN.js} +1077 -752
  32. package/{chunk-DWPNOYMB.js → chunk-4JBZUECA.js} +1 -1
  33. package/{chunk-NG4UT4K4.js → chunk-4QKBQHPQ.js} +1 -1
  34. package/{chunk-UZ6XXCVR.js → chunk-546FPOW3.js} +15 -2
  35. package/{chunk-5XTOKQLW.js → chunk-5UTFL4QJ.js} +6 -2
  36. package/chunk-5ZUL4CUO.js +10 -0
  37. package/{chunk-E6RGHPDR.js → chunk-6D6VBVEW.js} +4 -6
  38. package/{chunk-G3NT6BM3.js → chunk-7IBK6MYW.js} +142 -59
  39. package/{chunk-BYEJ7K2Z.js → chunk-7S4YWN7P.js} +1 -1
  40. package/{chunk-SREASRV5.js → chunk-ABQYVJBJ.js} +1 -1
  41. package/{chunk-H7UKKEIS.js → chunk-AQDH76OK.js} +1 -1
  42. package/{chunk-L2Y24GRM.js → chunk-B4S7MR5S.js} +16 -12
  43. package/{chunk-E36HZARC.js → chunk-BF2K6MRF.js} +3 -3
  44. package/{chunk-MGU5ADIQ.js → chunk-BKP7CFUD.js} +10 -10
  45. package/{chunk-2KDR4CWE.js → chunk-BYMV6QZG.js} +24 -1
  46. package/{chunk-AFIKMMGC.js → chunk-COM7GG76.js} +1 -1
  47. package/{chunk-HH65VA5U.js → chunk-CPH3W5A7.js} +15 -3
  48. package/{chunk-XWNRAIUL.js → chunk-DM4UNXPK.js} +6 -16
  49. package/{chunk-ZLPA7K55.js → chunk-DSX6K7C2.js} +29 -10
  50. package/{chunk-QA6YKM3H.js → chunk-E2NP7ZQU.js} +32 -4
  51. package/{chunk-FSFQ3A7S.js → chunk-E3VQ6S3A.js} +10 -10
  52. package/{chunk-YFADVSZE.js → chunk-F3UTRUDO.js} +6 -6
  53. package/{chunk-KIS76A2P.js → chunk-G5X57NDE.js} +38 -4
  54. package/{chunk-BJIRLHJR.js → chunk-GII32WZW.js} +1 -0
  55. package/{chunk-DSRXPQWA.js → chunk-GRDSMV4V.js} +43 -43
  56. package/{chunk-733J6D44.js → chunk-HGRDL36J.js} +6 -6
  57. package/{chunk-OZX2IPKM.js → chunk-HQCSU3DI.js} +1 -1
  58. package/{chunk-3JQ2NRYU.js → chunk-HVURBGF3.js} +4 -4
  59. package/{chunk-QC5LGHYP.js → chunk-HWZAXNO7.js} +10 -5
  60. package/{chunk-Q6FF2MCK.js → chunk-IIKPWSPX.js} +1 -1
  61. package/{chunk-KC5FAHVS.js → chunk-JEDZAO7L.js} +1 -1
  62. package/{chunk-6XIE5ZGI.js → chunk-JPGCXHNM.js} +1 -1
  63. package/{chunk-AJHEFRGJ.js → chunk-JTYPAMGP.js} +155 -1
  64. package/{chunk-UDQWGU7F.js → chunk-KR3YI36B.js} +1 -1
  65. package/{chunk-RXX4GDIH.js → chunk-LS2ZANRJ.js} +1 -1
  66. package/{chunk-SZLVDREM.js → chunk-LSSBA2TN.js} +3 -3
  67. package/{chunk-CMH2SYHX.js → chunk-MBEEYLGL.js} +2 -2
  68. package/{chunk-EVBFYPDC.js → chunk-MC4XLIJ7.js} +6 -2
  69. package/{chunk-PGSKWZCB.js → chunk-NKIH4Q7W.js} +1 -1
  70. package/{chunk-FPTQQSS6.js → chunk-OH7H6LPC.js} +26 -5
  71. package/{chunk-5J7W2VWW.js → chunk-OOLWKQSM.js} +6 -265
  72. package/{chunk-AETZ7AD6.js → chunk-Q554LLSI.js} +1 -1
  73. package/chunk-Q5FJJ6XI.js +103 -0
  74. package/{chunk-JYYZCK2Z.js → chunk-QFMFJZLO.js} +1 -1
  75. package/{chunk-P7FA2HMM.js → chunk-QMASIHYZ.js} +13 -15
  76. package/{chunk-ZY4K4CZR.js → chunk-R2YY6MWV.js} +909 -304
  77. package/chunk-RLEWGSM5.js +677 -0
  78. package/{chunk-PYXL2CJL.js → chunk-RZYQMSQA.js} +1 -1
  79. package/{chunk-EOU7ZSTU.js → chunk-S3UI4IUJ.js} +1198 -50
  80. package/{chunk-SPAQ4PVV.js → chunk-SAFZABH7.js} +1 -1
  81. package/{chunk-QRBAZ5PW.js → chunk-SASGLNUD.js} +3 -3
  82. package/{chunk-D74EWXL4.js → chunk-SUERPXJZ.js} +390 -47
  83. package/{chunk-3QPYFHAH.js → chunk-TMAZ3VHN.js} +1 -1
  84. package/{chunk-BJCWNHVU.js → chunk-U47DH2WO.js} +2 -2
  85. package/{chunk-MEVSATIF.js → chunk-UBNV6CS6.js} +66 -792
  86. package/{chunk-EXMHJN7C.js → chunk-UDEFS2PV.js} +4 -3
  87. package/{chunk-NHRQCXIQ.js → chunk-VMFTFOWF.js} +13 -3
  88. package/{chunk-4EJ5QYB5.js → chunk-VOOTT7HA.js} +1 -1
  89. package/{chunk-PZM3EENV.js → chunk-W2E6HIIK.js} +1 -1
  90. package/chunk-WKEUHK57.js +1625 -0
  91. package/{chunk-GBPZKFYK.js → chunk-WON762L4.js} +4 -4
  92. package/{chunk-X7Z7U4Z6.js → chunk-WP6BC7OF.js} +15 -15
  93. package/{chunk-QUH3XHL5.js → chunk-X2ZTVRXP.js} +7 -7
  94. package/{chunk-MYU3MJCF.js → chunk-XAQAF25W.js} +175 -7
  95. package/chunk-XGJAR4T5.js +283 -0
  96. package/{chunk-ZZCJUXUI.js → chunk-XLGHBHGP.js} +2 -2
  97. package/{chunk-V3ZKNK5D.js → chunk-YOXYA2GU.js} +10 -10
  98. package/{chunk-ALGK6TIE.js → chunk-YPYMGGPJ.js} +3 -3
  99. package/{chunk-K7AG465Q.js → chunk-ZHUTWJ3N.js} +4 -2
  100. package/{chunk-CDVGNZDA.js → chunk-ZKMYGRO7.js} +11 -173
  101. package/{contentThunks-3SPROFG5.js → contentThunks-TC3AENBY.js} +25 -25
  102. package/{createAgentAutomationAction-EIP2EG3O.js → createAgentAutomationAction-67EOD3WK.js} +25 -25
  103. package/{createDialogAction-RLUSTN4D.js → createDialogAction-4OCQC5MW.js} +28 -28
  104. package/{createPageAction-4Y52G7WG.js → createPageAction-JLGVP57B.js} +26 -26
  105. package/{dbSlice-GKGGFNOB.js → dbSlice-RDGCE5MU.js} +8 -8
  106. package/{deleteFile-LWSR674W.js → deleteFile-YG6QMJLU.js} +3 -3
  107. package/{dialogCommands-G223U5WU.js → dialogCommands-JHSDKCR5.js} +32 -30
  108. package/{dialogSlice-THY45JWM.js → dialogSlice-I2DK32ZT.js} +24 -24
  109. package/{docCreateCommands-2P47IJDK.js → docCreateCommands-QUL6VWK2.js} +31 -29
  110. package/{docDeleteCommands-N3EGDOIC.js → docDeleteCommands-DMQ2MU6I.js} +32 -30
  111. package/{docReadCommands-6BFV2HI7.js → docReadCommands-FVHENBU6.js} +31 -29
  112. package/{docStore-ZQ3ECOPY.js → docStore-OLC6MD7B.js} +9 -9
  113. package/{docUpdateCommands-ZTMPXHC5.js → docUpdateCommands-VA6V5C6L.js} +31 -29
  114. package/{fetchMessages-DRABNDPZ.js → fetchMessages-EIU7UFFK.js} +3 -4
  115. package/{getPricing-HRMSOF3E.js → getPricing-YYXTEPBP.js} +4 -4
  116. package/{handleSendMessageAction-CE4M5XIE.js → handleSendMessageAction-GRDIRXAK.js} +24 -24
  117. package/index.js +88 -80
  118. package/{localDialogRead-PUQKFI73.js → localDialogRead-BTFJ4V2I.js} +2 -2
  119. package/{localRuntimeDb-P37ZTX55.js → localRuntimeDb-SYQGUF4U.js} +1 -1
  120. package/{machineCommands-4OT7KVCD.js → machineCommands-IJJ66MYU.js} +59 -57
  121. package/{machineWsRunDispatch-TR3EYESP.js → machineWsRunDispatch-PP2ZBS6D.js} +57 -55
  122. package/{memberThunks-KATHH3F4.js → memberThunks-WQGQWYYT.js} +9 -9
  123. package/{models-GS72DVJS.js → models-UN7YGMPM.js} +2 -2
  124. package/{offlineMarxistsAgentCommand-GEH6SNNA.js → offlineMarxistsAgentCommand-JEWCIAWM.js} +1 -1
  125. package/package.json +1 -1
  126. package/providerPresetApply-NO73BG45.js +214 -0
  127. package/providerRegistry-OVY4VKNN.js +31 -0
  128. package/{read-LC6HVYBN.js → read-S4WC2OUK.js} +5 -4
  129. package/{readDocTool-N3ERJHHF.js → readDocTool-PQNM63KV.js} +1 -1
  130. package/{readlineWorkspace-RE3P324X.js → readlineWorkspace-ASJECDJD.js} +192 -109
  131. package/{removeDialogAgentAction-F5GPTALR.js → removeDialogAgentAction-YJZ6XJV6.js} +11 -11
  132. package/{runAgentClientLoop-NE5EHXSS.js → runAgentClientLoop-KIOQSDRC.js} +45 -45
  133. package/{runtimeDoctorCommands-CROTMULY.js → runtimeDoctorCommands-X6WDBEQX.js} +2 -2
  134. package/{setDialogExtraReferencesAction-AY4ZCF3A.js → setDialogExtraReferencesAction-E6A3WL4E.js} +9 -9
  135. package/{setPrimaryDialogAgentAction-HPMG7V3R.js → setPrimaryDialogAgentAction-WBLIVICQ.js} +11 -11
  136. package/{settingSlice-OEJA4NQO.js → settingSlice-JR6S7TRD.js} +10 -10
  137. package/{spaceCommands-MRP5U3C3.js → spaceCommands-WDUNCAK5.js} +29 -27
  138. package/{streamAgentChatTurn-A6L6O22P.js → streamAgentChatTurn-EGQDPMAO.js} +57 -56
  139. package/{switchDialogAgentAction-HMDZTZ4I.js → switchDialogAgentAction-DTR36ZY2.js} +8 -8
  140. package/{tableCommands-SUNTHAYX.js → tableCommands-O6NWHFKV.js} +1 -1
  141. package/{toolApiClient-VGYUB4P5.js → toolApiClient-7PSIFQPJ.js} +2 -2
  142. package/{tools-JS475NYO.js → tools-AOVE5LKM.js} +41 -39
  143. package/tuiSummaryLlmCaller-XRQCSNYQ.js +127 -0
  144. package/{updateCommands-Y363MC3L.js → updateCommands-2M74UL7P.js} +2 -2
  145. package/{updateDialogTitleAction-GMZUT6RP.js → updateDialogTitleAction-T66TXHIR.js} +45 -28
  146. package/chunk-3IT2PFHL.js +0 -611
  147. package/chunk-I42VC5KR.js +0 -15
  148. package/codingSkills-E6KSDNSJ.js +0 -48
  149. package/tuiSummaryLlmCaller-3Z24VUWM.js +0 -116
  150. package/{chunk-3RAG2NAD.js → chunk-UKWGR5SS.js} +3 -3
  151. package/{db-VQSAOWAO.js → db-WK5MDZVN.js} +1 -1
  152. package/{localRuntimeAuthority-R5UBODT3.js → localRuntimeAuthority-6IR6BBXE.js} +3 -3
@@ -1,10 +1,11 @@
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
7
- } from "./chunk-HQUORJTM.js";
8
+ } from "./chunk-3BMYXEUW.js";
8
9
  import {
9
10
  isOAuthApiKeyRef
10
11
  } from "./chunk-YYLHWIW6.js";
@@ -13,10 +14,10 @@ import {
13
14
  } from "./chunk-AGGIDPCZ.js";
14
15
  import {
15
16
  runLlm
16
- } from "./chunk-QUH3XHL5.js";
17
+ } from "./chunk-X2ZTVRXP.js";
17
18
  import {
18
19
  cleanupCliSessionForDialog
19
- } from "./chunk-BJCWNHVU.js";
20
+ } from "./chunk-U47DH2WO.js";
20
21
  import {
21
22
  getActiveDialogAgentId,
22
23
  getDialogAgentIds,
@@ -54,7 +55,7 @@ import {
54
55
  getModelInfo,
55
56
  normalizeUsage,
56
57
  resolveAutoExecutionProfile
57
- } from "./chunk-DSRXPQWA.js";
58
+ } from "./chunk-GRDSMV4V.js";
58
59
  import {
59
60
  COMPACTION_SUMMARY_SYSTEM_PROMPT,
60
61
  buildCompactionMetricsFromPlan,
@@ -65,17 +66,17 @@ import {
65
66
  normalizeAssistantContentBuffer,
66
67
  planCompression,
67
68
  serializeMessageContent
68
- } from "./chunk-E36HZARC.js";
69
+ } from "./chunk-BF2K6MRF.js";
69
70
  import {
70
71
  findModelConfig,
71
72
  getModelConfig
72
- } from "./chunk-UJ63UXGE.js";
73
+ } from "./chunk-4CAPEGHN.js";
73
74
  import {
74
75
  toErrorMessage
75
76
  } from "./chunk-HNMXYYJR.js";
76
77
  import {
77
78
  fetchMessages
78
- } from "./chunk-BYEJ7K2Z.js";
79
+ } from "./chunk-7S4YWN7P.js";
79
80
  import {
80
81
  PLATFORM_HOSTED_DEEPSEEK_FLASH_MODEL,
81
82
  PLATFORM_HOSTED_DEEPSEEK_PRO_MODEL,
@@ -84,10 +85,10 @@ import {
84
85
  isPlatformHostedDeepSeekV4Model,
85
86
  isPlatformHostedImageModel,
86
87
  isPlatformHostedOpenAIImageModel
87
- } from "./chunk-AJHEFRGJ.js";
88
+ } from "./chunk-JTYPAMGP.js";
88
89
  import {
89
90
  nolotusId
90
- } from "./chunk-XWNRAIUL.js";
91
+ } from "./chunk-546FPOW3.js";
91
92
  import {
92
93
  asRecordOrEmpty
93
94
  } from "./chunk-KX6YBIHG.js";
@@ -97,7 +98,7 @@ import {
97
98
  remove,
98
99
  selectById,
99
100
  write
100
- } from "./chunk-YFADVSZE.js";
101
+ } from "./chunk-F3UTRUDO.js";
101
102
  import {
102
103
  buildDialogAgentListIndexDeleteOps,
103
104
  createDialogMessageKeyAndId,
@@ -108,7 +109,7 @@ import {
108
109
  isDialogRecordKey,
109
110
  isPageKey,
110
111
  isTableMetaKey
111
- } from "./chunk-NHRQCXIQ.js";
112
+ } from "./chunk-VMFTFOWF.js";
112
113
  import {
113
114
  asOptionalFiniteNumber
114
115
  } from "./chunk-WWC7I6TA.js";
@@ -119,13 +120,13 @@ import {
119
120
  builtinAgentCatalogEntryById,
120
121
  builtinRuntimeFallbackEntries,
121
122
  isBuiltinPlatformAgentKey
122
- } from "./chunk-5J7W2VWW.js";
123
+ } from "./chunk-XGJAR4T5.js";
123
124
  import {
124
125
  extractCustomId,
125
126
  extractUserId,
126
127
  parsePublicAgentId,
127
128
  publicAgentKey
128
- } from "./chunk-BJIRLHJR.js";
129
+ } from "./chunk-GII32WZW.js";
129
130
  import {
130
131
  asyncThunkCreator,
131
132
  buildCreateSlice,
@@ -135,7 +136,7 @@ import {
135
136
  getRuntimeServerContext,
136
137
  parseOwnerUserIdFromDbKey,
137
138
  scheduleDeleteReplication
138
- } from "./chunk-3RAG2NAD.js";
139
+ } from "./chunk-UKWGR5SS.js";
139
140
  import {
140
141
  createClientLogger,
141
142
  isAbortError
@@ -149,12 +150,12 @@ import {
149
150
  isTombstoneRecord,
150
151
  shouldReplaceWithNextRecord
151
152
  } from "./chunk-GBRG75BQ.js";
152
- import {
153
- asTrimmedString
154
- } from "./chunk-3EUW3WEO.js";
155
153
  import {
156
154
  isRecord
157
155
  } from "./chunk-KUG52IAP.js";
156
+ import {
157
+ asTrimmedString
158
+ } from "./chunk-3EUW3WEO.js";
158
159
  import {
159
160
  asOptionalTrimmedString
160
161
  } from "./chunk-G3SUCT4W.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,10 +9292,51 @@ 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",
9256
- secondaryExplore: "\u5148\u901B\u901B\u516C\u5F00 AI",
9339
+ secondaryExplore: "\u6D4F\u89C8\u516C\u5F00 AI",
9257
9340
  secondaryDownload: "\u4E0B\u8F7D\u684C\u9762\u7AEF\u6216\u79FB\u52A8\u7AEF",
9258
9341
  secondaryPricing: "\u4E86\u89E3\u5B9A\u4EF7",
9259
9342
  trustMicro: "\u514D\u8D39\u6CE8\u518C \xB7 \u65E0\u9700\u4FE1\u7528\u5361 \xB7 \u968F\u65F6\u53EF\u505C",
@@ -9276,7 +9359,7 @@ var interface_locale_default = {
9276
9359
  },
9277
9360
  proof: {
9278
9361
  kicker: "\u4E3A\u4EC0\u4E48\u4ECE\u8FD9\u91CC\u5F00\u59CB",
9279
- title: "\u66F4\u9002\u5408\u60F3\u8981\u63A8\u8FDB\u7ED3\u679C\u7684\u4EBA\uFF0C\u800C\u4E0D\u53EA\u662F\u60F3\u6362\u4E2A prompt \u76AE\u80A4\u7684\u4EBA",
9362
+ title: "\u66F4\u9002\u5408\u60F3\u628A\u7ED3\u679C\u63A8\u8FDB\u4E0B\u53BB\u7684\u4EBA\uFF0C\u800C\u4E0D\u662F\u53EA\u60F3\u6362\u5957\u63D0\u793A\u8BCD\u7684\u4EBA",
9280
9363
  description: "\u5982\u679C\u4F60\u9700\u8981\u7684\u662F\u8BB0\u4F4F\u4E0A\u4E0B\u6587\u3001\u628A\u4EFB\u52A1\u59D4\u6258\u51FA\u53BB\u3001\u6700\u540E\u62FF\u5230\u771F\u5B9E\u6210\u679C\uFF0C\u800C\u4E0D\u662F\u540C\u65F6\u5F00\u5F88\u591A AI \u6807\u7B7E\u9875\u81EA\u5DF1\u62FC\uFF0CNolo \u7684\u4EF7\u503C\u4F1A\u66F4\u660E\u663E\u3002",
9281
9364
  label: "\u9996\u9875\u80FD\u529B\u8BC1\u660E",
9282
9365
  multiAgent: "\u628A\u6700\u5F3A\u6A21\u578B\u7684\u7B97\u529B\u7559\u7ED9\u771F\u6B63\u96BE\u7684\u95EE\u9898\uFF0C\u65E5\u5E38\u4EFB\u52A1\u4EA4\u7ED9\u6210\u672C\u66F4\u4F4E\u7684 Agent",
@@ -9293,7 +9376,7 @@ var interface_locale_default = {
9293
9376
  faq: {
9294
9377
  kicker: "\u5E38\u89C1\u95EE\u9898",
9295
9378
  title: "Agent \u73A9\u5BB6\u771F\u6B63\u60F3\u77E5\u9053\u7684",
9296
- description: "\u7ED9\u5DF2\u7ECF\u5728\u73A9 Agent\u3001\u60F3\u771F\u6B63\u62FF\u6765\u5E72\u6D3B\u7684\u4EBA\uFF0C\u4E0D\u662F\u53EA\u60F3\u6362\u4E2A prompt \u76AE\u80A4\u7684\u4EBA\u3002",
9379
+ description: "\u7ED9\u5DF2\u7ECF\u5728\u7528 Agent\u3001\u60F3\u771F\u6B63\u62FF\u6765\u5E72\u6D3B\u7684\u4EBA\uFF0C\u4E0D\u662F\u53EA\u60F3\u6362\u5957\u63D0\u793A\u8BCD\u7684\u4EBA\u3002",
9297
9380
  context: {
9298
9381
  question: "Agent \u4E4B\u95F4\u7684\u4E0A\u4E0B\u6587\u662F\u5171\u4EAB\u7684\u5417\uFF1F",
9299
9382
  answer: "\u53EF\u4EE5\u3002\u4F60\u5B9A\u4E49\u7684\u89C4\u5219\u3001\u6302\u8F7D\u7684\u77E5\u8BC6\u548C\u5BF9\u8BDD\u5386\u53F2\u4F1A\u4FDD\u7559\u5728 Agent \u8EAB\u4E0A\u3002\u591A\u4E2A Agent \u534F\u4F5C\u65F6\uFF0C\u4E0A\u4E0B\u6587\u6309\u9700\u6D41\u8F6C\uFF0C\u4E0D\u4F1A\u6BCF\u4E2A\u4EFB\u52A1\u90FD\u4ECE\u96F6\u5F00\u59CB\u3002"
@@ -9304,7 +9387,7 @@ var interface_locale_default = {
9304
9387
  },
9305
9388
  entry: {
9306
9389
  question: "\u4E00\u4E2A\u4EFB\u52A1\u91CC\u53EF\u4EE5\u8C03\u5EA6\u591A\u4E2A Agent \u5417\uFF1F",
9307
- answer: "\u53EF\u4EE5\u3002Nolo \u4F1A\u6839\u636E\u4EFB\u52A1\u81EA\u52A8\u6216\u624B\u52A8\u5206\u53D1\u7ED9\u4E0D\u540C\u7684 Agent\uFF0C\u5B83\u4EEC\u53EF\u4EE5\u5E76\u884C\u5DE5\u4F5C\u3001\u4E92\u76F8 Review\uFF0C\u6700\u540E\u628A\u7ED3\u679C\u6C47\u603B\u7ED9\u4F60\u3002"
9390
+ answer: "\u53EF\u4EE5\u3002Nolo \u4F1A\u6839\u636E\u4EFB\u52A1\u81EA\u52A8\u6216\u624B\u52A8\u5206\u53D1\u7ED9\u4E0D\u540C\u7684 Agent\uFF0C\u5B83\u4EEC\u53EF\u4EE5\u5E76\u884C\u5DE5\u4F5C\u3001\u4E92\u76F8\u590D\u6838\uFF0C\u6700\u540E\u628A\u7ED3\u679C\u6C47\u603B\u7ED9\u4F60\u3002"
9308
9391
  },
9309
9392
  orchestration: {
9310
9393
  question: "\u7F16\u6392\u65B9\u5F0F\u662F\u56FA\u5B9A\u7684\u5417\uFF1F",
@@ -9491,8 +9574,8 @@ var interface_locale_default = {
9491
9574
  finalCta: {
9492
9575
  kicker: "\u51C6\u5907\u597D\u5C31\u5F00\u59CB",
9493
9576
  title: "\u77E5\u9053\u81EA\u5DF1\u8981\u505A\u4EC0\u4E48\uFF0C\u5C31\u76F4\u63A5\u642D\u8D77\u6765\u3002",
9494
- description: "\u514D\u8D39\u6CE8\u518C\uFF0C\u51E0\u5206\u949F\u5C31\u80FD\u914D\u597D\u4F60\u7684\u7B2C\u4E00\u4E2A\u642D\u6863\u3002\u7EE7\u7EED\u5F80\u4E0B\uFF0C\u4E5F\u80FD\u901B\u793E\u533A\u91CC\u7684\u516C\u5F00 AI\u3002",
9495
- primary: "\u521B\u5EFA\u6211\u7684\u5DE5\u4F5C\u53F0"
9577
+ description: "\u514D\u8D39\u6CE8\u518C\uFF0C\u51E0\u5206\u949F\u5C31\u80FD\u914D\u597D\u4F60\u7684\u7B2C\u4E00\u4E2A\u642D\u6863\u3002\u7EE7\u7EED\u5F80\u4E0B\uFF0C\u4E5F\u80FD\u6D4F\u89C8\u793E\u533A\u91CC\u7684\u516C\u5F00 AI\u3002",
9578
+ primary: "\u514D\u8D39\u5F00\u59CB"
9496
9579
  },
9497
9580
  cards: {
9498
9581
  create: {
@@ -10509,10 +10592,51 @@ 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",
10515
- secondaryExplore: "\u5148\u901B\u901B\u516C\u958B AI",
10639
+ secondaryExplore: "\u700F\u89BD\u516C\u958B AI",
10516
10640
  secondaryDownload: "\u4E0B\u8F09\u684C\u9762\u7AEF\u6216\u884C\u52D5\u7AEF",
10517
10641
  secondaryPricing: "\u4E86\u89E3\u5B9A\u50F9",
10518
10642
  trustMicro: "\u514D\u8CBB\u8A3B\u518A \xB7 \u7121\u9700\u4FE1\u7528\u5361 \xB7 \u96A8\u6642\u53EF\u505C",
@@ -10535,7 +10659,7 @@ var interface_locale_default = {
10535
10659
  },
10536
10660
  proof: {
10537
10661
  kicker: "\u70BA\u4EC0\u9EBC\u5F9E\u9019\u88E1\u958B\u59CB",
10538
- title: "\u66F4\u9069\u5408\u60F3\u63A8\u9032\u7D50\u679C\u7684\u4EBA\uFF0C\u800C\u4E0D\u53EA\u662F\u60F3\u63DB\u500B prompt \u5916\u76AE\u7684\u4EBA",
10662
+ title: "\u66F4\u9069\u5408\u60F3\u628A\u7D50\u679C\u63A8\u9032\u4E0B\u53BB\u7684\u4EBA\uFF0C\u800C\u4E0D\u662F\u53EA\u60F3\u63DB\u5957\u63D0\u793A\u8A5E\u7684\u4EBA",
10539
10663
  description: "\u5982\u679C\u60A8\u9700\u8981\u7684\u662F\u8A18\u4F4F\u4E0A\u4E0B\u6587\u3001\u628A\u4EFB\u52D9\u59D4\u8A17\u51FA\u53BB\u3001\u6700\u5F8C\u62FF\u5230\u771F\u5BE6\u6210\u679C\uFF0C\u800C\u4E0D\u662F\u540C\u6642\u958B\u5F88\u591A AI \u5206\u9801\u81EA\u5DF1\u62FC\uFF0CNolo \u7684\u50F9\u503C\u6703\u66F4\u660E\u986F\u3002",
10540
10664
  label: "\u9996\u9801\u80FD\u529B\u8B49\u660E",
10541
10665
  multiAgent: "\u628A\u6700\u5F37\u6A21\u578B\u7684\u7B97\u529B\u7559\u7D66\u771F\u6B63\u96E3\u7684\u554F\u984C\uFF0C\u65E5\u5E38\u4EFB\u52D9\u4EA4\u7D66\u6210\u672C\u66F4\u4F4E\u7684 Agent",
@@ -10552,7 +10676,7 @@ var interface_locale_default = {
10552
10676
  faq: {
10553
10677
  kicker: "\u5E38\u898B\u554F\u984C",
10554
10678
  title: "Agent \u73A9\u5BB6\u771F\u6B63\u60F3\u77E5\u9053\u7684",
10555
- description: "\u7D66\u5DF2\u7D93\u5728\u73A9 Agent\u3001\u60F3\u771F\u6B63\u62FF\u4F86\u5E79\u6D3B\u7684\u4EBA\uFF0C\u4E0D\u662F\u53EA\u60F3\u63DB\u500B prompt \u5916\u76AE\u7684\u4EBA\u3002",
10679
+ description: "\u7D66\u5DF2\u7D93\u5728\u7528 Agent\u3001\u60F3\u771F\u6B63\u62FF\u4F86\u5E79\u6D3B\u7684\u4EBA\uFF0C\u4E0D\u662F\u53EA\u60F3\u63DB\u5957\u63D0\u793A\u8A5E\u7684\u4EBA\u3002",
10556
10680
  context: {
10557
10681
  question: "Agent \u4E4B\u9593\u7684\u4E0A\u4E0B\u6587\u662F\u5171\u4EAB\u7684\u55CE\uFF1F",
10558
10682
  answer: "\u53EF\u4EE5\u3002\u60A8\u5B9A\u7FA9\u7684\u898F\u5247\u3001\u639B\u8F09\u7684\u77E5\u8B58\u548C\u5C0D\u8A71\u6B77\u53F2\u6703\u4FDD\u7559\u5728 Agent \u8EAB\u4E0A\u3002\u591A\u500B Agent \u5354\u4F5C\u6642\uFF0C\u4E0A\u4E0B\u6587\u6309\u9700\u6D41\u8F49\uFF0C\u4E0D\u6703\u6BCF\u500B\u4EFB\u52D9\u90FD\u5F9E\u96F6\u958B\u59CB\u3002"
@@ -10563,7 +10687,7 @@ var interface_locale_default = {
10563
10687
  },
10564
10688
  entry: {
10565
10689
  question: "\u4E00\u500B\u4EFB\u52D9\u88E1\u53EF\u4EE5\u8ABF\u5EA6\u591A\u500B Agent \u55CE\uFF1F",
10566
- answer: "\u53EF\u4EE5\u3002Nolo \u6703\u6839\u64DA\u4EFB\u52D9\u81EA\u52D5\u6216\u624B\u52D5\u5206\u767C\u7D66\u4E0D\u540C\u7684 Agent\uFF0C\u5B83\u5011\u53EF\u4EE5\u4E26\u884C\u5DE5\u4F5C\u3001\u4E92\u76F8 Review\uFF0C\u6700\u5F8C\u628A\u7D50\u679C\u532F\u7E3D\u7D66\u60A8\u3002"
10690
+ answer: "\u53EF\u4EE5\u3002Nolo \u6703\u6839\u64DA\u4EFB\u52D9\u81EA\u52D5\u6216\u624B\u52D5\u5206\u767C\u7D66\u4E0D\u540C\u7684 Agent\uFF0C\u5B83\u5011\u53EF\u4EE5\u4E26\u884C\u5DE5\u4F5C\u3001\u4E92\u76F8\u8907\u6838\uFF0C\u6700\u5F8C\u628A\u7D50\u679C\u532F\u7E3D\u7D66\u60A8\u3002"
10567
10691
  },
10568
10692
  orchestration: {
10569
10693
  question: "\u7DE8\u6392\u65B9\u5F0F\u662F\u56FA\u5B9A\u7684\u55CE\uFF1F",
@@ -10750,8 +10874,8 @@ var interface_locale_default = {
10750
10874
  finalCta: {
10751
10875
  kicker: "\u6E96\u5099\u597D\u5C31\u958B\u59CB",
10752
10876
  title: "\u77E5\u9053\u81EA\u5DF1\u8981\u505A\u4EC0\u9EBC\uFF0C\u5C31\u76F4\u63A5\u642D\u8D77\u4F86\u3002",
10753
- description: "\u514D\u8CBB\u8A3B\u518A\uFF0C\u5E7E\u5206\u9418\u5C31\u80FD\u642D\u51FA\u60A8\u7684\u7B2C\u4E00\u500B AI\u3002\u7E7C\u7E8C\u5F80\u4E0B\uFF0C\u4E5F\u80FD\u901B\u793E\u7FA4\u88E1\u7684\u516C\u958B AI\u3002",
10754
- primary: "\u5EFA\u7ACB\u6211\u7684\u5DE5\u4F5C\u53F0"
10877
+ description: "\u514D\u8CBB\u8A3B\u518A\uFF0C\u5E7E\u5206\u9418\u5C31\u80FD\u642D\u51FA\u60A8\u7684\u7B2C\u4E00\u500B AI\u3002\u7E7C\u7E8C\u5F80\u4E0B\uFF0C\u4E5F\u80FD\u700F\u89BD\u793E\u7FA4\u88E1\u7684\u516C\u958B AI\u3002",
10878
+ primary: "\u514D\u8CBB\u958B\u59CB"
10755
10879
  },
10756
10880
  cards: {
10757
10881
  create: {
@@ -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",
@@ -13109,12 +13274,14 @@ var pricing_locale_default = {
13109
13274
  title: "Pay-As-You-Go",
13110
13275
  subtitle: `Billed by actual token usage. Points never expire.
13111
13276
  Pro unlocks at ${ADVANCED_FEATURE_MIN_BALANCE} points. No subscription lock-in.`,
13277
+ headerTrust: ["No subscription", "Pay per use", "Points never expire"],
13112
13278
  free: "Free",
13113
13279
  points: "{{num}} Points",
13114
13280
  tiers: {
13115
13281
  starter: {
13116
13282
  name: "Starter",
13117
13283
  meta: "Free upon Signup",
13284
+ bestFor: "Just exploring",
13118
13285
  price: "Free",
13119
13286
  features: [
13120
13287
  "Standard LLM models",
@@ -13126,6 +13293,7 @@ Pro unlocks at ${ADVANCED_FEATURE_MIN_BALANCE} points. No subscription lock-in.`
13126
13293
  pro: {
13127
13294
  name: "Pro",
13128
13295
  meta: `Balance at ${ADVANCED_FEATURE_MIN_BALANCE} Points`,
13296
+ bestFor: "Daily driver",
13129
13297
  price: `Unlock at ${ADVANCED_FEATURE_MIN_BALANCE} Points`,
13130
13298
  features: [
13131
13299
  "Batch file analysis",
@@ -13137,6 +13305,7 @@ Pro unlocks at ${ADVANCED_FEATURE_MIN_BALANCE} points. No subscription lock-in.`
13137
13305
  advanced: {
13138
13306
  name: "Advanced",
13139
13307
  meta: `Single recharge \u2265 ${GPT_PRO_REQUIRED_RECHARGE_AMOUNT} Points`,
13308
+ bestFor: "Heavy lifting",
13140
13309
  price: `Unlock with a ${GPT_PRO_REQUIRED_RECHARGE_AMOUNT}-Point recharge`,
13141
13310
  features: [
13142
13311
  "Advanced reasoning models",
@@ -13192,6 +13361,22 @@ Pro unlocks at ${ADVANCED_FEATURE_MIN_BALANCE} points. No subscription lock-in.`
13192
13361
  {
13193
13362
  q: "Is it more cost-effective than subscriptions?",
13194
13363
  a: "Usually yes. Nolo uses transparent pay-as-you-go pricing based on actual token usage, with no subscription lock-in."
13364
+ },
13365
+ {
13366
+ q: "Can I get a refund after recharging?",
13367
+ a: "Yes, but only for points you purchased yourself; bonus or gifted points are non-refundable. Refunds cover the unused portion of purchased points\u2014consumed and gifted points are not returned."
13368
+ },
13369
+ {
13370
+ q: `Does Pro expire if my balance drops below ${ADVANCED_FEATURE_MIN_BALANCE} points?`,
13371
+ a: `Pro is determined by your current balance in real time: it unlocks at ${ADVANCED_FEATURE_MIN_BALANCE} points and falls back to Starter when you drop below, then restores on your next recharge. Nothing you've used is affected.`
13372
+ },
13373
+ {
13374
+ q: "Which models does the Advanced tier unlock?",
13375
+ a: `It unlocks higher-tier models such as the GPT Pro series, Claude Opus, and Kimi K3, plus an isolated VM execution environment and support for long-running tasks. A single recharge of ${GPT_PRO_REQUIRED_RECHARGE_AMOUNT} points activates it.`
13376
+ },
13377
+ {
13378
+ q: "How are points deducted?",
13379
+ a: "Each call deducts the model's unit price times the actual input/output tokens consumed; cached repeated input is billed at a lower cached rate. See the comparison table below for each model's unit price."
13195
13380
  }
13196
13381
  ]
13197
13382
  }
@@ -13203,12 +13388,14 @@ Pro unlocks at ${ADVANCED_FEATURE_MIN_BALANCE} points. No subscription lock-in.`
13203
13388
  title: "\u6309\u91CF\u4ED8\u8D39",
13204
13389
  subtitle: `\u6309\u5B9E\u9645\u6D88\u8017\u7684 Token \u6263\u8D39\uFF0C\u79EF\u5206\u6C38\u4E45\u6709\u6548\u3002
13205
13390
  \u4F59\u989D\u8FBE\u5230 ${ADVANCED_FEATURE_MIN_BALANCE} \u81EA\u52A8\u89E3\u9501\u4E13\u4E1A\u7248\uFF0C\u65E0\u8BA2\u9605\u7ED1\u5B9A\uFF0C\u968F\u65F6\u964D\u6863\u3002`,
13391
+ headerTrust: ["\u65E0\u8BA2\u9605\u7ED1\u5B9A", "\u6309\u91CF\u8BA1\u8D39", "\u79EF\u5206\u6C38\u4E45\u6709\u6548"],
13206
13392
  free: "\u514D\u8D39",
13207
13393
  points: "{{num}} \u79EF\u5206",
13208
13394
  tiers: {
13209
13395
  starter: {
13210
13396
  name: "\u57FA\u7840\u7248",
13211
13397
  meta: "\u6CE8\u518C\u5373\u53EF\u4F7F\u7528",
13398
+ bestFor: "\u5148\u8BD5\u8BD5\u6C34",
13212
13399
  price: "\u514D\u8D39",
13213
13400
  features: [
13214
13401
  "\u6807\u51C6 LLM \u6A21\u578B",
@@ -13220,6 +13407,7 @@ Pro unlocks at ${ADVANCED_FEATURE_MIN_BALANCE} points. No subscription lock-in.`
13220
13407
  pro: {
13221
13408
  name: "\u4E13\u4E1A\u7248",
13222
13409
  meta: `\u4F59\u989D\u8FBE\u5230 ${ADVANCED_FEATURE_MIN_BALANCE} \u79EF\u5206`,
13410
+ bestFor: "\u65E5\u5E38\u4E3B\u529B",
13223
13411
  price: `\u4F59\u989D\u6EE1 ${ADVANCED_FEATURE_MIN_BALANCE} \u79EF\u5206\u89E3\u9501`,
13224
13412
  features: [
13225
13413
  "\u6279\u91CF\u6587\u4EF6\u5206\u6790",
@@ -13231,6 +13419,7 @@ Pro unlocks at ${ADVANCED_FEATURE_MIN_BALANCE} points. No subscription lock-in.`
13231
13419
  advanced: {
13232
13420
  name: "\u9AD8\u9636\u7248",
13233
13421
  meta: `\u5355\u7B14\u5145\u503C \u2265 ${GPT_PRO_REQUIRED_RECHARGE_AMOUNT} \u79EF\u5206`,
13422
+ bestFor: "\u91CD\u8F7D\u4EFB\u52A1",
13234
13423
  price: `\u5145\u503C ${GPT_PRO_REQUIRED_RECHARGE_AMOUNT} \u79EF\u5206\u89E3\u9501`,
13235
13424
  features: [
13236
13425
  "GPT Pro \u7CFB\u5217\u6A21\u578B",
@@ -13287,6 +13476,22 @@ Pro unlocks at ${ADVANCED_FEATURE_MIN_BALANCE} points. No subscription lock-in.`
13287
13476
  {
13288
13477
  q: "\u6BD4\u5305\u6708\u8BA2\u9605\u66F4\u5212\u7B97\u5417\uFF1F",
13289
13478
  a: "\u901A\u5E38\u66F4\u5212\u7B97\u3002Nolo \u6309\u5B9E\u9645 Token \u6D88\u8017\u900F\u660E\u8BA1\u8D39\uFF0C\u65E0\u8BA2\u9605\u7ED1\u5B9A\uFF0C\u53EA\u4E3A\u5B9E\u9645\u7528\u91CF\u4ED8\u8D39\u3002"
13479
+ },
13480
+ {
13481
+ q: "\u5145\u503C\u540E\u80FD\u9000\u6B3E\u5417\uFF1F",
13482
+ a: "\u652F\u6301\uFF0C\u4F46\u4EC5\u9650\u4F60\u81EA\u5DF1\u5145\u503C\u7684\u79EF\u5206\uFF1B\u6D3B\u52A8\u6216\u6CE8\u518C\u8D60\u9001\u7684\u79EF\u5206\u4E0D\u53EF\u9000\u3002\u9000\u6B3E\u6309\u5145\u503C\u79EF\u5206\u7684\u672A\u6D88\u8017\u90E8\u5206\u8FD4\u8FD8\uFF0C\u5DF2\u6D88\u8017\u4E0E\u8D60\u9001\u90E8\u5206\u4E0D\u9000\u3002"
13483
+ },
13484
+ {
13485
+ q: `\u4F59\u989D\u964D\u5230 ${ADVANCED_FEATURE_MIN_BALANCE} \u79EF\u5206\u4EE5\u4E0B\uFF0C\u4E13\u4E1A\u7248\u4F1A\u5931\u6548\u5417\uFF1F`,
13486
+ a: `\u4E13\u4E1A\u7248\u6309\u5F53\u524D\u4F59\u989D\u5B9E\u65F6\u5224\u5B9A\uFF1A\u4F59\u989D\u8FBE\u5230 ${ADVANCED_FEATURE_MIN_BALANCE} \u79EF\u5206\u5373\u89E3\u9501\uFF0C\u4F4E\u4E8E\u540E\u81EA\u52A8\u56DE\u843D\u5230\u57FA\u7840\u7248\uFF0C\u518D\u5145\u503C\u5373\u6062\u590D\uFF0C\u4E0D\u5F71\u54CD\u5DF2\u7528\u529F\u80FD\u3002`
13487
+ },
13488
+ {
13489
+ q: "\u9AD8\u9636\u7248\u80FD\u7528\u54EA\u4E9B\u6A21\u578B\uFF1F",
13490
+ a: `\u89E3\u9501 GPT Pro \u7CFB\u5217\u3001Claude Opus\u3001Kimi K3 \u7B49\u9AD8\u9636\u6A21\u578B\uFF0C\u5E76\u83B7\u5F97\u72EC\u7ACB\u865A\u62DF\u673A\u6267\u884C\u73AF\u5883\u4E0E\u957F\u65F6\u95F4\u4EFB\u52A1\u652F\u6301\u3002\u5355\u7B14\u5145\u503C ${GPT_PRO_REQUIRED_RECHARGE_AMOUNT} \u79EF\u5206\u5373\u5F00\u901A\u3002`
13491
+ },
13492
+ {
13493
+ q: "\u79EF\u5206\u6309\u4EC0\u4E48\u6263\uFF1F",
13494
+ a: "\u6309\u6BCF\u6B21\u8C03\u7528\u7684\u5B9E\u9645\u8F93\u5165/\u8F93\u51FA Token \u6570\uFF0C\u4E58\u4EE5\u5BF9\u5E94\u6A21\u578B\u5355\u4EF7\u6263\u9664\uFF1B\u547D\u4E2D\u7F13\u5B58\u7684\u91CD\u590D\u8F93\u5165\u6309\u66F4\u4F4E\u7684\u7F13\u5B58\u4EF7\u8BA1\u3002\u5404\u6A21\u578B\u5355\u4EF7\u89C1\u4E0B\u65B9\u5BF9\u6BD4\u8868\u3002"
13290
13495
  }
13291
13496
  ]
13292
13497
  }
@@ -13298,12 +13503,14 @@ Pro unlocks at ${ADVANCED_FEATURE_MIN_BALANCE} points. No subscription lock-in.`
13298
13503
  title: "\u6309\u91CF\u4ED8\u8CBB",
13299
13504
  subtitle: `\u6309\u5BE6\u969B\u6D88\u8017\u7684 Token \u6263\u8CBB\uFF0C\u7A4D\u5206\u6C38\u4E45\u6709\u6548\u3002
13300
13505
  \u9918\u984D\u9054\u5230 ${ADVANCED_FEATURE_MIN_BALANCE} \u81EA\u52D5\u89E3\u9396\u5C08\u696D\u7248\uFF0C\u7121\u8A02\u95B1\u7D81\u5B9A\uFF0C\u96A8\u6642\u964D\u6A94\u3002`,
13506
+ headerTrust: ["\u7121\u8A02\u95B1\u7D81\u5B9A", "\u6309\u91CF\u8A08\u8CBB", "\u7A4D\u5206\u6C38\u4E45\u6709\u6548"],
13301
13507
  free: "\u514D\u8CBB",
13302
13508
  points: "{{num}} \u7A4D\u5206",
13303
13509
  tiers: {
13304
13510
  starter: {
13305
13511
  name: "\u57FA\u790E\u7248",
13306
13512
  meta: "\u8A3B\u518A\u5373\u53EF\u4F7F\u7528",
13513
+ bestFor: "\u5148\u8A66\u8A66\u6C34",
13307
13514
  price: "\u514D\u8CBB",
13308
13515
  features: [
13309
13516
  "\u6A19\u6E96 LLM \u6A21\u578B",
@@ -13315,6 +13522,7 @@ Pro unlocks at ${ADVANCED_FEATURE_MIN_BALANCE} points. No subscription lock-in.`
13315
13522
  pro: {
13316
13523
  name: "\u5C08\u696D\u7248",
13317
13524
  meta: `\u9918\u984D\u9054\u5230 ${ADVANCED_FEATURE_MIN_BALANCE} \u7A4D\u5206`,
13525
+ bestFor: "\u65E5\u5E38\u4E3B\u529B",
13318
13526
  price: `\u9918\u984D\u6EFF ${ADVANCED_FEATURE_MIN_BALANCE} \u7A4D\u5206\u89E3\u9396`,
13319
13527
  features: [
13320
13528
  "\u6279\u6B21\u6A94\u6848\u5206\u6790",
@@ -13326,6 +13534,7 @@ Pro unlocks at ${ADVANCED_FEATURE_MIN_BALANCE} points. No subscription lock-in.`
13326
13534
  advanced: {
13327
13535
  name: "\u9AD8\u968E\u7248",
13328
13536
  meta: `\u55AE\u7B46\u5145\u503C \u2265 ${GPT_PRO_REQUIRED_RECHARGE_AMOUNT} \u7A4D\u5206`,
13537
+ bestFor: "\u91CD\u8F09\u4EFB\u52D9",
13329
13538
  price: `\u5145\u503C ${GPT_PRO_REQUIRED_RECHARGE_AMOUNT} \u7A4D\u5206\u89E3\u9396`,
13330
13539
  features: [
13331
13540
  "GPT Pro \u7CFB\u5217\u6A21\u578B",
@@ -13381,6 +13590,22 @@ Pro unlocks at ${ADVANCED_FEATURE_MIN_BALANCE} points. No subscription lock-in.`
13381
13590
  {
13382
13591
  q: "\u6BD4\u5305\u6708\u8A02\u95B1\u66F4\u5212\u7B97\u55CE\uFF1F",
13383
13592
  a: "\u901A\u5E38\u66F4\u5212\u7B97\u3002Nolo \u6309\u5BE6\u969B API \u6210\u672C\u900F\u660E\u8A08\u8CBB\uFF0C\u6C92\u6709\u8A02\u95B1\u6EA2\u50F9\uFF0C\u53EA\u70BA\u5BE6\u969B\u6D88\u8017\u4ED8\u8CBB\u3002"
13593
+ },
13594
+ {
13595
+ q: "\u5145\u503C\u5F8C\u80FD\u9000\u6B3E\u55CE\uFF1F",
13596
+ a: "\u652F\u63F4\uFF0C\u4F46\u50C5\u9650\u60A8\u81EA\u884C\u5145\u503C\u7684\u7A4D\u5206\uFF1B\u6D3B\u52D5\u6216\u8A3B\u518A\u8D08\u9001\u7684\u7A4D\u5206\u4E0D\u53EF\u9000\u3002\u9000\u6B3E\u6309\u5145\u503C\u7A4D\u5206\u7684\u672A\u6D88\u8017\u90E8\u5206\u8FD4\u9084\uFF0C\u5DF2\u6D88\u8017\u8207\u8D08\u9001\u90E8\u5206\u4E0D\u9000\u3002"
13597
+ },
13598
+ {
13599
+ q: `\u9918\u984D\u964D\u5230 ${ADVANCED_FEATURE_MIN_BALANCE} \u7A4D\u5206\u4EE5\u4E0B\uFF0C\u5C08\u696D\u7248\u6703\u5931\u6548\u55CE\uFF1F`,
13600
+ a: `\u5C08\u696D\u7248\u6309\u7576\u524D\u9918\u984D\u5373\u6642\u5224\u5B9A\uFF1A\u9918\u984D\u9054\u5230 ${ADVANCED_FEATURE_MIN_BALANCE} \u7A4D\u5206\u5373\u89E3\u9396\uFF0C\u4F4E\u65BC\u5F8C\u81EA\u52D5\u56DE\u843D\u5230\u57FA\u790E\u7248\uFF0C\u518D\u5145\u503C\u5373\u6062\u5FA9\uFF0C\u4E0D\u5F71\u97FF\u5DF2\u7528\u529F\u80FD\u3002`
13601
+ },
13602
+ {
13603
+ q: "\u9AD8\u968E\u7248\u80FD\u7528\u54EA\u4E9B\u6A21\u578B\uFF1F",
13604
+ a: `\u89E3\u9396 GPT Pro \u7CFB\u5217\u3001Claude Opus\u3001Kimi K3 \u7B49\u9AD8\u968E\u6A21\u578B\uFF0C\u4E26\u7372\u5F97\u7368\u7ACB\u865B\u64EC\u6A5F\u57F7\u884C\u74B0\u5883\u8207\u9577\u6642\u9593\u4EFB\u52D9\u652F\u63F4\u3002\u55AE\u7B46\u5145\u503C ${GPT_PRO_REQUIRED_RECHARGE_AMOUNT} \u7A4D\u5206\u5373\u958B\u901A\u3002`
13605
+ },
13606
+ {
13607
+ q: "\u7A4D\u5206\u6309\u4EC0\u9EBC\u6263\uFF1F",
13608
+ a: "\u6309\u6BCF\u6B21\u8ABF\u7528\u7684\u5BE6\u969B\u8F38\u5165/\u8F38\u51FA Token \u6578\uFF0C\u4E58\u4EE5\u5C0D\u61C9\u6A21\u578B\u55AE\u50F9\u6263\u9664\uFF1B\u547D\u4E2D\u5FEB\u53D6\u7684\u91CD\u8907\u8F38\u5165\u6309\u66F4\u4F4E\u7684\u5FEB\u53D6\u50F9\u8A08\u3002\u5404\u6A21\u578B\u55AE\u50F9\u898B\u4E0B\u65B9\u5C0D\u6BD4\u8868\u3002"
13384
13609
  }
13385
13610
  ]
13386
13611
  }
@@ -13392,12 +13617,14 @@ Pro unlocks at ${ADVANCED_FEATURE_MIN_BALANCE} points. No subscription lock-in.`
13392
13617
  title: "\u5F93\u91CF\u8AB2\u91D1\u5236",
13393
13618
  subtitle: `\u5B9F\u969B\u306E\u30C8\u30FC\u30AF\u30F3\u6D88\u8CBB\u91CF\u306B\u57FA\u3065\u3044\u3066\u30DD\u30A4\u30F3\u30C8\u3092\u6E1B\u7B97\u3002\u30DD\u30A4\u30F3\u30C8\u306E\u6709\u52B9\u671F\u9650\u306F\u3042\u308A\u307E\u305B\u3093\u3002
13394
13619
  \u6B8B\u9AD8\u304C${ADVANCED_FEATURE_MIN_BALANCE}\u30DD\u30A4\u30F3\u30C8\u306B\u9054\u3059\u308B\u3068\u81EA\u52D5\u7684\u306B\u30D7\u30ED\u7248\u304C\u30A2\u30F3\u30ED\u30C3\u30AF\u3055\u308C\u307E\u3059\u3002\u3044\u3064\u3067\u3082\u30C0\u30A6\u30F3\u30B0\u30EC\u30FC\u30C9\u53EF\u80FD\u3067\u3001\u5B9A\u671F\u8CFC\u5165\u306E\u7E1B\u308A\u306F\u3042\u308A\u307E\u305B\u3093\u3002`,
13620
+ headerTrust: ["\u30B5\u30D6\u30B9\u30AF\u4E0D\u8981", "\u5F93\u91CF\u8AB2\u91D1", "\u30DD\u30A4\u30F3\u30C8\u7121\u671F\u9650"],
13395
13621
  free: "\u7121\u6599",
13396
13622
  points: "{{num}} \u30DD\u30A4\u30F3\u30C8",
13397
13623
  tiers: {
13398
13624
  starter: {
13399
13625
  name: "\u30B9\u30BF\u30FC\u30BF\u30FC",
13400
13626
  meta: "\u767B\u9332\u3067\u3059\u3050\u306B\u4F7F\u7528\u53EF\u80FD",
13627
+ bestFor: "\u307E\u305A\u8A66\u3059",
13401
13628
  price: "\u7121\u6599",
13402
13629
  features: [
13403
13630
  "\u6A19\u6E96\u7684\u306ALLM\u30E2\u30C7\u30EB",
@@ -13409,6 +13636,7 @@ Pro unlocks at ${ADVANCED_FEATURE_MIN_BALANCE} points. No subscription lock-in.`
13409
13636
  pro: {
13410
13637
  name: "\u30D7\u30ED",
13411
13638
  meta: `\u6B8B\u9AD8${ADVANCED_FEATURE_MIN_BALANCE}\u30DD\u30A4\u30F3\u30C8\u5230\u9054`,
13639
+ bestFor: "\u65E5\u5E38\u306E\u4E3B\u529B",
13412
13640
  price: `${ADVANCED_FEATURE_MIN_BALANCE}\u30DD\u30A4\u30F3\u30C8\u3067\u30A2\u30F3\u30ED\u30C3\u30AF`,
13413
13641
  features: [
13414
13642
  "\u8907\u6570\u30D5\u30A1\u30A4\u30EB\u5206\u6790",
@@ -13420,6 +13648,7 @@ Pro unlocks at ${ADVANCED_FEATURE_MIN_BALANCE} points. No subscription lock-in.`
13420
13648
  advanced: {
13421
13649
  name: "\u30A2\u30C9\u30D0\u30F3\u30B9\u30C9",
13422
13650
  meta: `1\u56DE\u306E\u30C1\u30E3\u30FC\u30B8\u304C${GPT_PRO_REQUIRED_RECHARGE_AMOUNT}\u30DD\u30A4\u30F3\u30C8\u4EE5\u4E0A`,
13651
+ bestFor: "\u91CD\u3044\u30BF\u30B9\u30AF",
13423
13652
  price: `${GPT_PRO_REQUIRED_RECHARGE_AMOUNT}\u30DD\u30A4\u30F3\u30C8\u306E\u30C1\u30E3\u30FC\u30B8\u3067\u30A2\u30F3\u30ED\u30C3\u30AF`,
13424
13653
  features: [
13425
13654
  "GPT Pro \u7CFB\u5217\u30E2\u30C7\u30EB",
@@ -13475,6 +13704,22 @@ Pro unlocks at ${ADVANCED_FEATURE_MIN_BALANCE} points. No subscription lock-in.`
13475
13704
  {
13476
13705
  q: "\u6708\u984D\u30B5\u30D6\u30B9\u30AF\u30EA\u30D7\u30B7\u30E7\u30F3\u3088\u308A\u304A\u5F97\u3067\u3059\u304B\uFF1F",
13477
13706
  a: "\u901A\u5E38\u306F\u304A\u5F97\u3067\u3059\u3002Nolo \u306F\u5B9F\u969B\u306E API \u30B3\u30B9\u30C8\u306B\u57FA\u3065\u3044\u3066\u900F\u660E\u6027\u306E\u9AD8\u3044\u8AB2\u91D1\u3092\u884C\u3044\u3001\u5B9F\u969B\u306E\u6D88\u8CBB\u5206\u3060\u3051\u3092\u652F\u6255\u3044\u307E\u3059\u3002"
13707
+ },
13708
+ {
13709
+ q: "\u30C1\u30E3\u30FC\u30B8\u5F8C\u306B\u8FD4\u91D1\u3067\u304D\u307E\u3059\u304B\uFF1F",
13710
+ a: "\u306F\u3044\u3002\u305F\u3060\u3057\u3054\u81EA\u8EAB\u3067\u30C1\u30E3\u30FC\u30B8\u3057\u305F\u30DD\u30A4\u30F3\u30C8\u306E\u307F\u5BFE\u8C61\u3067\u3001\u30AD\u30E3\u30F3\u30DA\u30FC\u30F3\u3084\u767B\u9332\u6642\u306B\u4ED8\u4E0E\u3055\u308C\u305F\u30DD\u30A4\u30F3\u30C8\u306F\u8FD4\u91D1\u3067\u304D\u307E\u305B\u3093\u3002\u8FD4\u91D1\u306F\u30C1\u30E3\u30FC\u30B8\u5206\u306E\u672A\u4F7F\u7528\u90E8\u5206\u306E\u307F\u3067\u3001\u6D88\u8CBB\u6E08\u307F\u30FB\u4ED8\u4E0E\u5206\u306F\u542B\u307E\u308C\u307E\u305B\u3093\u3002"
13711
+ },
13712
+ {
13713
+ q: `\u6B8B\u9AD8\u304C${ADVANCED_FEATURE_MIN_BALANCE}\u30DD\u30A4\u30F3\u30C8\u3092\u4E0B\u56DE\u308B\u3068 Pro \u306F\u5931\u52B9\u3057\u307E\u3059\u304B\uFF1F`,
13714
+ a: `Pro \u306F\u73FE\u5728\u306E\u6B8B\u9AD8\u306B\u5FDC\u3058\u3066\u30EA\u30A2\u30EB\u30BF\u30A4\u30E0\u3067\u5224\u5B9A\u3055\u308C\u307E\u3059\u3002${ADVANCED_FEATURE_MIN_BALANCE}\u30DD\u30A4\u30F3\u30C8\u3067\u30A2\u30F3\u30ED\u30C3\u30AF\u3055\u308C\u3001\u4E0B\u56DE\u308B\u3068 Starter \u306B\u623B\u308A\u3001\u6B21\u56DE\u30C1\u30E3\u30FC\u30B8\u3067\u5FA9\u5E30\u3057\u307E\u3059\u3002\u5229\u7528\u6E08\u307F\u306E\u6A5F\u80FD\u306B\u306F\u5F71\u97FF\u3057\u307E\u305B\u3093\u3002`
13715
+ },
13716
+ {
13717
+ q: "\u30A2\u30C9\u30D0\u30F3\u30B9\u30C9\u30C6\u30A3\u30A2\u3067\u306F\u3069\u306E\u30E2\u30C7\u30EB\u304C\u4F7F\u3048\u307E\u3059\u304B\uFF1F",
13718
+ a: `GPT Pro \u30B7\u30EA\u30FC\u30BA\u3001Claude Opus\u3001Kimi K3 \u306A\u3069\u306E\u4E0A\u4F4D\u30E2\u30C7\u30EB\u306B\u52A0\u3048\u3001\u5206\u96E2\u3055\u308C\u305F VM \u5B9F\u884C\u74B0\u5883\u3068\u9577\u6642\u9593\u30BF\u30B9\u30AF\u306E\u30B5\u30DD\u30FC\u30C8\u304C\u5229\u7528\u3067\u304D\u307E\u3059\u3002${GPT_PRO_REQUIRED_RECHARGE_AMOUNT}\u30DD\u30A4\u30F3\u30C8\u306E\u4E00\u56DE\u30C1\u30E3\u30FC\u30B8\u3067\u6709\u52B9\u306B\u306A\u308A\u307E\u3059\u3002`
13719
+ },
13720
+ {
13721
+ q: "\u30DD\u30A4\u30F3\u30C8\u306F\u3069\u306E\u3088\u3046\u306B\u5DEE\u3057\u5F15\u304B\u308C\u307E\u3059\u304B\uFF1F",
13722
+ a: "\u5404\u547C\u3073\u51FA\u3057\u3067\u3001\u30E2\u30C7\u30EB\u306E\u5358\u4FA1\u306B\u5B9F\u969B\u306E\u5165\u51FA\u529B\u30C8\u30FC\u30AF\u30F3\u6570\u3092\u639B\u3051\u3066\u5DEE\u3057\u5F15\u304D\u307E\u3059\u3002\u30AD\u30E3\u30C3\u30B7\u30E5\u306B\u30D2\u30C3\u30C8\u3057\u305F\u91CD\u8907\u5165\u529B\u306F\u4F4E\u3044\u30AD\u30E3\u30C3\u30B7\u30E5\u6599\u91D1\u304C\u9069\u7528\u3055\u308C\u307E\u3059\u3002\u5404\u30E2\u30C7\u30EB\u306E\u5358\u4FA1\u306F\u4E0B\u306E\u6BD4\u8F03\u8868\u3092\u3054\u89A7\u304F\u3060\u3055\u3044\u3002"
13478
13723
  }
13479
13724
  ]
13480
13725
  }
@@ -14008,7 +14253,7 @@ var terms_locale_default = {
14008
14253
  ["zh-CN" /* ZH_CN */]: {
14009
14254
  translation: {
14010
14255
  terms: {
14011
- title: "\u670D\u52A1\u6761\u6B3E",
14256
+ title: "\u670D\u52A1\u6761\u6B3E (Terms of Service)",
14012
14257
  lastUpdated: "\u6700\u540E\u66F4\u65B0\u65E5\u671F\uFF1A2026\u5E748\u670827\u65E5",
14013
14258
  intro: "\u6B22\u8FCE\u4F7F\u7528 Nolo \u63D0\u4F9B\u7684\u670D\u52A1\uFF08\u4EE5\u4E0B\u7B80\u79F0\u201C\u672C\u670D\u52A1\u201D\uFF09\u3002\u8BBF\u95EE\u3001\u6CE8\u518C\u6216\u8D2D\u4E70\u672C\u670D\u52A1\u79EF\u5206\uFF0C\u5373\u8868\u793A\u60A8\u540C\u610F\u53D7\u672C\u670D\u52A1\u6761\u6B3E\u7684\u7EA6\u675F\u3002",
14014
14259
  section1: {
@@ -14049,7 +14294,7 @@ var terms_locale_default = {
14049
14294
  ["zh-Hant" /* ZH_HANT */]: {
14050
14295
  translation: {
14051
14296
  terms: {
14052
- title: "\u670D\u52D9\u689D\u6B3E",
14297
+ title: "\u670D\u52D9\u689D\u6B3E (Terms of Service)",
14053
14298
  lastUpdated: "\u6700\u5F8C\u66F4\u65B0\u65E5\u671F\uFF1A2026\u5E748\u670827\u65E5",
14054
14299
  intro: "\u6B61\u8FCE\u4F7F\u7528 Nolo \u63D0\u4F9B\u7684\u670D\u52D9\uFF08\u4EE5\u4E0B\u7C21\u7A31\u201C\u672C\u670D\u52D9\u201D\uFF09\u3002\u9020\u8A2A\u3001\u8A3B\u518A\u6216\u8CFC\u8CB7\u672C\u670D\u52D9\u7A4D\u5206\uFF0C\u5373\u8868\u793A\u60A8\u540C\u610F\u53D7\u672C\u670D\u52D9\u689D\u6B3E\u7684\u7D04\u675F\u3002",
14055
14300
  section1: {
@@ -14646,6 +14891,77 @@ var localFirst_locale_default = {
14646
14891
  }
14647
14892
  };
14648
14893
 
14894
+ // packages/app/i18n/translations/openAuditable.locale.ts
14895
+ var english = {
14896
+ openAuditable: {
14897
+ kicker: "Open & Auditable",
14898
+ title: "Don\u2019t trust the binary. Verify it.",
14899
+ 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.",
14900
+ viewSource: "View source",
14901
+ verifyRelease: "Verify current release",
14902
+ publicCommitTitle: "Exact public commit",
14903
+ publicCommitText: "Release metadata records the exact public projection SHA used for the build.",
14904
+ hashTitle: "Artifact checksum",
14905
+ hashText: "The public manifest records SHA-256 for each downloadable desktop artifact.",
14906
+ auditTitle: "Auditable client",
14907
+ auditText: "Inspect how the client reads files, invokes tools, and talks to model providers."
14908
+ }
14909
+ };
14910
+ var openAuditable_locale_default = {
14911
+ ["en" /* EN */]: { translation: english },
14912
+ ["zh-CN" /* ZH_CN */]: {
14913
+ translation: {
14914
+ openAuditable: {
14915
+ kicker: "\u5F00\u653E \xB7 \u53EF\u5BA1\u8BA1",
14916
+ title: "\u4E0D\u8981\u53EA\u4FE1\u5B89\u88C5\u5305\uFF0C\u81EA\u5DF1\u9A8C\u8BC1\u3002",
14917
+ 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",
14918
+ viewSource: "\u67E5\u770B\u6E90\u7801",
14919
+ verifyRelease: "\u9A8C\u8BC1\u5F53\u524D\u7248\u672C",
14920
+ publicCommitTitle: "\u5BF9\u5E94\u516C\u5F00\u63D0\u4EA4",
14921
+ publicCommitText: "\u53D1\u5E03\u5143\u6570\u636E\u4F1A\u8BB0\u5F55\u6784\u5EFA\u4F7F\u7528\u7684\u51C6\u786E\u516C\u5F00 projection SHA\u3002",
14922
+ hashTitle: "\u5B89\u88C5\u5305\u6821\u9A8C\u503C",
14923
+ hashText: "\u516C\u5F00 manifest \u4F1A\u8BB0\u5F55\u6BCF\u4E2A\u53EF\u4E0B\u8F7D\u684C\u9762\u5B89\u88C5\u5305\u7684 SHA-256\u3002",
14924
+ auditTitle: "\u5BA2\u6237\u7AEF\u53EF\u5BA1\u8BA1",
14925
+ 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"
14926
+ }
14927
+ }
14928
+ },
14929
+ ["zh-Hant" /* ZH_HANT */]: {
14930
+ translation: {
14931
+ openAuditable: {
14932
+ kicker: "\u958B\u653E \xB7 \u53EF\u7A3D\u6838",
14933
+ title: "\u4E0D\u8981\u53EA\u76F8\u4FE1\u5B89\u88DD\u6A94\uFF0C\u81EA\u5DF1\u9A57\u8B49\u3002",
14934
+ 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",
14935
+ viewSource: "\u67E5\u770B\u539F\u59CB\u78BC",
14936
+ verifyRelease: "\u9A57\u8B49\u76EE\u524D\u7248\u672C",
14937
+ publicCommitTitle: "\u5C0D\u61C9\u516C\u958B\u63D0\u4EA4",
14938
+ publicCommitText: "\u767C\u5E03\u4E2D\u7E7C\u8CC7\u6599\u6703\u8A18\u9304\u5EFA\u7F6E\u4F7F\u7528\u7684\u7CBE\u78BA\u516C\u958B projection SHA\u3002",
14939
+ hashTitle: "\u5B89\u88DD\u6A94\u6821\u9A57\u503C",
14940
+ hashText: "\u516C\u958B manifest \u6703\u8A18\u9304\u6BCF\u500B\u53EF\u4E0B\u8F09\u684C\u9762\u5B89\u88DD\u6A94\u7684 SHA-256\u3002",
14941
+ auditTitle: "\u7528\u6236\u7AEF\u53EF\u7A3D\u6838",
14942
+ 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"
14943
+ }
14944
+ }
14945
+ },
14946
+ ["ja" /* JA */]: {
14947
+ translation: {
14948
+ openAuditable: {
14949
+ kicker: "Open & Auditable",
14950
+ title: "\u30D0\u30A4\u30CA\u30EA\u3092\u305F\u3060\u4FE1\u3058\u305A\u3001\u81EA\u5206\u3067\u691C\u8A3C\u3067\u304D\u307E\u3059\u3002",
14951
+ 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",
14952
+ viewSource: "\u30BD\u30FC\u30B9\u3092\u898B\u308B",
14953
+ verifyRelease: "\u73FE\u5728\u306E\u30EA\u30EA\u30FC\u30B9\u3092\u691C\u8A3C",
14954
+ publicCommitTitle: "\u6B63\u78BA\u306A\u516C\u958B\u30B3\u30DF\u30C3\u30C8",
14955
+ 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",
14956
+ hashTitle: "\u6210\u679C\u7269\u30C1\u30A7\u30C3\u30AF\u30B5\u30E0",
14957
+ 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",
14958
+ auditTitle: "\u76E3\u67FB\u53EF\u80FD\u306A\u30AF\u30E9\u30A4\u30A2\u30F3\u30C8",
14959
+ 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"
14960
+ }
14961
+ }
14962
+ }
14963
+ };
14964
+
14649
14965
  // packages/app/i18n/i18n.config.ts
14650
14966
  var resources = {
14651
14967
  ["en" /* EN */]: {
@@ -14660,6 +14976,7 @@ var resources = {
14660
14976
  ...aup_locale_default["en" /* EN */].translation,
14661
14977
  ...footer_locale_default["en" /* EN */].translation,
14662
14978
  ...localFirst_locale_default["en" /* EN */].translation,
14979
+ ...openAuditable_locale_default["en" /* EN */].translation,
14663
14980
  seo: seo_locale_default["en" /* EN */]
14664
14981
  },
14665
14982
  space: space_locale_default["en" /* EN */].translation,
@@ -14678,6 +14995,7 @@ var resources = {
14678
14995
  ...aup_locale_default["zh-CN" /* ZH_CN */].translation,
14679
14996
  ...footer_locale_default["zh-CN" /* ZH_CN */].translation,
14680
14997
  ...localFirst_locale_default["zh-CN" /* ZH_CN */].translation,
14998
+ ...openAuditable_locale_default["zh-CN" /* ZH_CN */].translation,
14681
14999
  seo: seo_locale_default["zh-CN" /* ZH_CN */]
14682
15000
  },
14683
15001
  space: space_locale_default["zh-CN" /* ZH_CN */].translation,
@@ -14696,6 +15014,7 @@ var resources = {
14696
15014
  ...aup_locale_default["zh-Hant" /* ZH_HANT */].translation,
14697
15015
  ...footer_locale_default["zh-Hant" /* ZH_HANT */].translation,
14698
15016
  ...localFirst_locale_default["zh-Hant" /* ZH_HANT */].translation,
15017
+ ...openAuditable_locale_default["zh-Hant" /* ZH_HANT */].translation,
14699
15018
  seo: seo_locale_default["zh-Hant" /* ZH_HANT */]
14700
15019
  },
14701
15020
  space: space_locale_default["zh-Hant" /* ZH_HANT */].translation,
@@ -14714,6 +15033,7 @@ var resources = {
14714
15033
  ...aup_locale_default["ja" /* JA */].translation,
14715
15034
  ...footer_locale_default["ja" /* JA */].translation,
14716
15035
  ...localFirst_locale_default["ja" /* JA */].translation,
15036
+ ...openAuditable_locale_default["ja" /* JA */].translation,
14717
15037
  seo: seo_locale_default["ja" /* JA */]
14718
15038
  },
14719
15039
  space: space_locale_default["ja" /* JA */].translation,
@@ -14732,6 +15052,7 @@ var resources = {
14732
15052
  ...aup_locale_default["ko" /* KO */]?.translation ?? aup_locale_default["en" /* EN */].translation,
14733
15053
  ...footer_locale_default["ko" /* KO */]?.translation ?? footer_locale_default["en" /* EN */].translation,
14734
15054
  ...localFirst_locale_default["ko" /* KO */]?.translation ?? localFirst_locale_default["en" /* EN */].translation,
15055
+ ...openAuditable_locale_default["ko" /* KO */]?.translation ?? openAuditable_locale_default["en" /* EN */].translation,
14735
15056
  seo: seo_locale_default["ko" /* KO */]
14736
15057
  },
14737
15058
  space: space_locale_default["ko" /* KO */]?.translation ?? space_locale_default["en" /* EN */].translation,
@@ -14928,16 +15249,35 @@ var updateDialogSummaryAction = async (args, thunkApi) => {
14928
15249
  fileOpsText
14929
15250
  });
14930
15251
  try {
14931
- const newSummary = await dispatch(
15252
+ const runSummaryLlm = (model) => dispatch(
14932
15253
  runLlm({
14933
15254
  llmConfig: {
14934
15255
  ...BUILTIN_SUMMARY_LLM_CONFIG,
15256
+ ...model ? { model } : {},
14935
15257
  prompt: COMPACTION_SUMMARY_SYSTEM_PROMPT
14936
15258
  },
14937
15259
  content: promptContent,
14938
15260
  billingDialogKey: dialogKey
14939
15261
  })
14940
15262
  ).unwrap();
15263
+ const isUsableSummary = (value) => typeof value === "string" && value.trim().length > 0;
15264
+ let newSummary = "";
15265
+ let primaryError;
15266
+ try {
15267
+ newSummary = await runSummaryLlm();
15268
+ } catch (error) {
15269
+ primaryError = error;
15270
+ }
15271
+ if (!isUsableSummary(newSummary)) {
15272
+ try {
15273
+ newSummary = await runSummaryLlm(BUILTIN_DIALOG_LLM_FALLBACK_MODEL);
15274
+ } catch (fallbackError) {
15275
+ throw primaryError ?? fallbackError;
15276
+ }
15277
+ if (!isUsableSummary(newSummary) && primaryError) {
15278
+ throw primaryError;
15279
+ }
15280
+ }
14941
15281
  if (newSummary && typeof newSummary === "string" && newSummary.trim()) {
14942
15282
  const currentCount = dialogConfig.compressionCount || 0;
14943
15283
  await dispatch(
@@ -17126,7 +17466,7 @@ var messageSlice = createSliceWithThunks({
17126
17466
  runtimeOptions: args.runtimeOptions
17127
17467
  });
17128
17468
  if (agentKeyToUse) {
17129
- const { streamAgentChatTurn } = await import("./agentSlice-EACXUOWW.js");
17469
+ const { streamAgentChatTurn } = await import("./agentSlice-YZK6KG73.js");
17130
17470
  await dispatch(
17131
17471
  streamAgentChatTurn({
17132
17472
  agentKey: agentKeyToUse,
@@ -17232,6 +17572,9 @@ var sanitizeCost = (raw) => {
17232
17572
  };
17233
17573
  var resolveModelPrice = (model, usage) => {
17234
17574
  let activePrice = { ...model.price };
17575
+ if (typeof activePrice.inputCacheHit !== "number" && typeof activePrice.cachingRead === "number") {
17576
+ activePrice = { ...activePrice, inputCacheHit: activePrice.cachingRead };
17577
+ }
17235
17578
  if (model.pricingStrategy?.type === "tiered_context") {
17236
17579
  const contextSize = usage.input_tokens || 0;
17237
17580
  const tiers = model.pricingStrategy.tiers || [];
@@ -17592,7 +17935,7 @@ var calculatePrice = ({
17592
17935
  billingServiceTier,
17593
17936
  nowMs
17594
17937
  );
17595
- const openAIImageSurcharge = provider === "openai" ? resolveOpenAIBuiltInImageSurcharge(model, usage) : 0;
17938
+ const openAIImageSurcharge = provider === "openai" || isPlatformHostedOpenAIImageModel(modelName) ? resolveOpenAIBuiltInImageSurcharge(model, usage) : 0;
17596
17939
  const adjustedCosts = openAIImageSurcharge > 0 ? {
17597
17940
  ...costs,
17598
17941
  regular: costs.regular + openAIImageSurcharge,
@@ -18197,7 +18540,7 @@ var deleteOwnedDialogAttachments = async (args) => {
18197
18540
  metadataReadFailures
18198
18541
  });
18199
18542
  if (!plan.deleteCandidates.length) return plan;
18200
- const { deleteFileAction } = await import("./deleteFile-LWSR674W.js");
18543
+ const { deleteFileAction } = await import("./deleteFile-YG6QMJLU.js");
18201
18544
  for (const candidate of plan.deleteCandidates) {
18202
18545
  if (candidate.fileDbKey) {
18203
18546
  await deleteFileAction(candidate.fileDbKey, args.thunkApi);
@@ -18259,7 +18602,7 @@ var deleteDialogThunk = async (payload, thunkApi) => {
18259
18602
  }
18260
18603
  if (isCurrentDialog) {
18261
18604
  await thunkApi.dispatch(resetMsgs());
18262
- const { clearPendingAttachments: clearPendingAttachments2 } = await import("./dialogSlice-THY45JWM.js");
18605
+ const { clearPendingAttachments: clearPendingAttachments2 } = await import("./dialogSlice-I2DK32ZT.js");
18263
18606
  dispatch(clearPendingAttachments2());
18264
18607
  }
18265
18608
  return { dialogKey, isCurrentDialog, attachmentPlan };
@@ -18267,39 +18610,39 @@ var deleteDialogThunk = async (payload, thunkApi) => {
18267
18610
 
18268
18611
  // packages/chat/dialog/dialogSlice.ts
18269
18612
  var runCreateDialogAction = async (args, thunkApi) => {
18270
- const { createDialogAction } = await import("./createDialogAction-RLUSTN4D.js");
18613
+ const { createDialogAction } = await import("./createDialogAction-4OCQC5MW.js");
18271
18614
  return createDialogAction(args, thunkApi);
18272
18615
  };
18273
18616
  var runCreateAgentAutomationAction = async (args, thunkApi) => {
18274
- const { createAgentAutomationAction } = await import("./createAgentAutomationAction-EIP2EG3O.js");
18617
+ const { createAgentAutomationAction } = await import("./createAgentAutomationAction-67EOD3WK.js");
18275
18618
  return createAgentAutomationAction(args, thunkApi);
18276
18619
  };
18277
18620
  var runUpdateDialogTitleAction = async (args, thunkApi) => {
18278
- const { updateDialogTitleAction } = await import("./updateDialogTitleAction-GMZUT6RP.js");
18621
+ const { updateDialogTitleAction } = await import("./updateDialogTitleAction-T66TXHIR.js");
18279
18622
  return updateDialogTitleAction(args, thunkApi);
18280
18623
  };
18281
18624
  var runAddDialogAgentAction = async (args, thunkApi) => {
18282
- const { addDialogAgentAction } = await import("./addDialogAgentAction-M7VLLBZM.js");
18625
+ const { addDialogAgentAction } = await import("./addDialogAgentAction-FZOB4BYM.js");
18283
18626
  return addDialogAgentAction(args, thunkApi);
18284
18627
  };
18285
18628
  var runRemoveDialogAgentAction = async (args, thunkApi) => {
18286
- const { removeDialogAgentAction } = await import("./removeDialogAgentAction-F5GPTALR.js");
18629
+ const { removeDialogAgentAction } = await import("./removeDialogAgentAction-YJZ6XJV6.js");
18287
18630
  return removeDialogAgentAction(args, thunkApi);
18288
18631
  };
18289
18632
  var runSetPrimaryDialogAgentAction = async (args, thunkApi) => {
18290
- const { setPrimaryDialogAgentAction } = await import("./setPrimaryDialogAgentAction-HPMG7V3R.js");
18633
+ const { setPrimaryDialogAgentAction } = await import("./setPrimaryDialogAgentAction-WBLIVICQ.js");
18291
18634
  return setPrimaryDialogAgentAction(args, thunkApi);
18292
18635
  };
18293
18636
  var runSwitchDialogAgentAction = async (args, thunkApi) => {
18294
- const { switchDialogAgentAction } = await import("./switchDialogAgentAction-HMDZTZ4I.js");
18637
+ const { switchDialogAgentAction } = await import("./switchDialogAgentAction-DTR36ZY2.js");
18295
18638
  return switchDialogAgentAction(args, thunkApi);
18296
18639
  };
18297
18640
  var runSetDialogExtraReferencesAction = async (args, thunkApi) => {
18298
- const { setDialogExtraReferencesAction } = await import("./setDialogExtraReferencesAction-AY4ZCF3A.js");
18641
+ const { setDialogExtraReferencesAction } = await import("./setDialogExtraReferencesAction-E6A3WL4E.js");
18299
18642
  return setDialogExtraReferencesAction(args, thunkApi);
18300
18643
  };
18301
18644
  var runHandleSendMessageAction = async (args, thunkApi) => {
18302
- const { handleSendMessageAction } = await import("./handleSendMessageAction-CE4M5XIE.js");
18645
+ const { handleSendMessageAction } = await import("./handleSendMessageAction-GRDIRXAK.js");
18303
18646
  return handleSendMessageAction(args, thunkApi);
18304
18647
  };
18305
18648
  function clearDialogState() {
@@ -18312,7 +18655,7 @@ var createPageAndAddReference = createAsyncThunk(
18312
18655
  async (payload, { dispatch, getState, rejectWithValue }) => {
18313
18656
  const { slateData, jsonData, title, type, fileId, groupId, dialogKey } = payload;
18314
18657
  try {
18315
- const { createDocState } = await import("./docStore-ZQ3ECOPY.js");
18658
+ const { createDocState } = await import("./docStore-OLC6MD7B.js");
18316
18659
  const pageKey = await createDocState(
18317
18660
  { slateData, title },
18318
18661
  { dispatch, getState }