nolo-cli 0.89.0-alpha.1 → 0.90.0-alpha.1

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 (132) hide show
  1. package/README.md +2 -2
  2. package/{_executeModel-I3XRMAJ2.js → _executeModel-W26HVI75.js} +38 -38
  3. package/{action-7GHFPDSQ.js → action-6DXQGJMX.js} +7 -7
  4. package/{addContentAction-ZNVB2NOV.js → addContentAction-I7VX5SAC.js} +5 -5
  5. package/{addDialogAgentAction-CIDFWATM.js → addDialogAgentAction-OJSFV7DZ.js} +4 -4
  6. package/{agentDeleteCommand-DCTG26JW.js → agentDeleteCommand-XNFWCKBH.js} +24 -23
  7. package/{agentEmailCommands-MRRHBLDQ.js → agentEmailCommands-W3X3EJ3V.js} +50 -49
  8. package/{agentGrantCommands-R3VQEZJR.js → agentGrantCommands-YW6PQAQ2.js} +2 -2
  9. package/{agentListCommands-CUE46CSP.js → agentListCommands-DFWFU6XO.js} +32 -25
  10. package/{agentMachineCommands-FYDEKBIO.js → agentMachineCommands-LMFOAEL4.js} +24 -23
  11. package/{agentProviderCommands-X3FA6BUM.js → agentProviderCommands-ZBYHGTGY.js} +1 -1
  12. package/{agentPullCommand-U73W5IBM.js → agentPullCommand-GLOOXJ2E.js} +2 -2
  13. package/{agentRecordCommands-P2MSNP7R.js → agentRecordCommands-FVVVCQFM.js} +48 -47
  14. package/{agentRunCommand-QJGP7JEN.js → agentRunCommand-HTBVIBGV.js} +49 -48
  15. package/{agentRunControl-T44MESII.js → agentRunControl-XLGD3UZ5.js} +1 -1
  16. package/{agentRuntimeLocal-T43UNWAY.js → agentRuntimeLocal-2JFG4HDU.js} +20 -19
  17. package/{agentSlice-7GDS5Q2S.js → agentSlice-ZNLGFUB5.js} +5 -5
  18. package/{appDeleteCommands-YBKY3VEI.js → appDeleteCommands-2UN4N2NR.js} +25 -24
  19. package/{appDeployCommands-EBC76HO4.js → appDeployCommands-37D74KRR.js} +25 -24
  20. package/{appDeployStatusCommands-WXRC5KEK.js → appDeployStatusCommands-QBLWL2IA.js} +25 -24
  21. package/{appGetCommands-VZZQEDOV.js → appGetCommands-6KXIDF2T.js} +25 -24
  22. package/{appListCommands-HYSPVQ77.js → appListCommands-G2WFGEWQ.js} +25 -24
  23. package/{authCommand-E4GDVKMW.js → authCommand-V2DJ7DB7.js} +84 -18
  24. package/{authCommands-VOTT6XWX.js → authCommands-RGOGCPP6.js} +2 -2
  25. package/{builtinSkillRegistry-5SYVTS6Z.js → builtinSkillRegistry-WBGYKIAZ.js} +5 -5
  26. package/{chatQueueReduxAdapter-CXEWIDFZ.js → chatQueueReduxAdapter-XCJHIY3R.js} +17 -17
  27. package/{chunk-P3AS5IPM.js → chunk-2ADBVBEM.js} +3 -2
  28. package/{chunk-GRJTR4PU.js → chunk-2AYMFHUG.js} +4 -4
  29. package/{chunk-UO66QKGI.js → chunk-2F4VYGFW.js} +2 -2
  30. package/{chunk-LEYH5NOH.js → chunk-3CMTBX3X.js} +4 -4
  31. package/{chunk-GXWEF4IZ.js → chunk-3CR2LC6X.js} +1 -1
  32. package/{chunk-ZKGIAM7I.js → chunk-3R5PH4IP.js} +1 -1
  33. package/{chunk-VW3YGKWR.js → chunk-4BYPU626.js} +294 -203
  34. package/{chunk-PHDKTASK.js → chunk-4DRWWIOL.js} +1 -1
  35. package/{chunk-BNMZ7QUV.js → chunk-576IMUGH.js} +1 -1
  36. package/{chunk-AYT2OKNM.js → chunk-5DFFKASO.js} +3 -3
  37. package/{chunk-Q246OUG5.js → chunk-5NMZNPTN.js} +5 -5
  38. package/{chunk-5XTOKQLW.js → chunk-5UTFL4QJ.js} +6 -2
  39. package/{chunk-6RCZYDDC.js → chunk-5V4NJHRM.js} +6 -6
  40. package/chunk-5ZUL4CUO.js +10 -0
  41. package/{chunk-US463UAD.js → chunk-6BEA566T.js} +2 -2
  42. package/{chunk-UINEAQ2R.js → chunk-6D6VBVEW.js} +1 -1
  43. package/{chunk-JC2WQS66.js → chunk-7MYYE7WX.js} +20 -16
  44. package/{chunk-3T4PRBHV.js → chunk-A2C4AKKM.js} +1 -1
  45. package/{chunk-6ZC5KPXV.js → chunk-AQZRTHDZ.js} +903 -40
  46. package/{chunk-UWMQ6FPM.js → chunk-ASGDO77C.js} +118 -1
  47. package/{chunk-2KDR4CWE.js → chunk-BYMV6QZG.js} +24 -1
  48. package/{chunk-XCSSFPTB.js → chunk-CLI4LFSM.js} +1 -1
  49. package/{chunk-HH65VA5U.js → chunk-CPH3W5A7.js} +15 -3
  50. package/{chunk-TGRQUFLU.js → chunk-DNQPPRHY.js} +1 -1
  51. package/{chunk-2XEVK4BT.js → chunk-DPQ2WVBY.js} +1 -1
  52. package/{chunk-OCL2YCAU.js → chunk-F2CGG72C.js} +40 -40
  53. package/{chunk-S6STPUMG.js → chunk-FQYMLZ6C.js} +5 -5
  54. package/{chunk-BJIRLHJR.js → chunk-GII32WZW.js} +1 -0
  55. package/{chunk-VARZWSKW.js → chunk-GRYGRGPS.js} +3 -3
  56. package/{chunk-L2VNQQ7M.js → chunk-HMEMJ7GH.js} +364 -24
  57. package/{chunk-OZX2IPKM.js → chunk-HQCSU3DI.js} +1 -1
  58. package/{chunk-VQD6BTML.js → chunk-HYZHJ5GW.js} +3 -3
  59. package/{chunk-OAJRZ35U.js → chunk-IIKPWSPX.js} +1 -1
  60. package/{chunk-W7PGACND.js → chunk-JBBZ5KUM.js} +10 -10
  61. package/{chunk-KC5FAHVS.js → chunk-JEDZAO7L.js} +1 -1
  62. package/{chunk-LSV2BOJL.js → chunk-JTK3TJYV.js} +1 -1
  63. package/{chunk-X77EN2BJ.js → chunk-K7M3MWCE.js} +2 -2
  64. package/{chunk-OHUU52T3.js → chunk-L2ICPOAL.js} +1 -1
  65. package/{chunk-EVBFYPDC.js → chunk-MC4XLIJ7.js} +6 -2
  66. package/{chunk-DS3SQTDT.js → chunk-MJHQ3NRV.js} +1 -1
  67. package/{chunk-Q4KVAB6L.js → chunk-N3OAPEZE.js} +28 -9
  68. package/{chunk-T4F2EQGN.js → chunk-ND2J3NRB.js} +2 -2
  69. package/{chunk-IMDA4FW4.js → chunk-NFMHIUY3.js} +61 -46
  70. package/{chunk-JITSBA52.js → chunk-PH5J5VUY.js} +2 -2
  71. package/{chunk-FMODTASJ.js → chunk-Q5FJJ6XI.js} +1 -7
  72. package/{chunk-JYYZCK2Z.js → chunk-QFMFJZLO.js} +1 -1
  73. package/{chunk-WSOMSDQB.js → chunk-QHETQ3KI.js} +35 -1
  74. package/{chunk-IZAWJCG7.js → chunk-RZANZZL2.js} +1 -1
  75. package/{chunk-SPAQ4PVV.js → chunk-SAFZABH7.js} +1 -1
  76. package/{chunk-EXWOCYCR.js → chunk-SMZSWB44.js} +10 -5
  77. package/{chunk-HJKGQPYF.js → chunk-TL6L5XUT.js} +1 -1
  78. package/{chunk-4FRNB4ZG.js → chunk-TVNI5FLG.js} +4 -4
  79. package/{chunk-5EJZGJS2.js → chunk-UA5S3LQQ.js} +3 -3
  80. package/{chunk-Y2IFJ7VM.js → chunk-UTCCPWB2.js} +3 -3
  81. package/{chunk-KT6LENVP.js → chunk-VHJLQHPQ.js} +2 -2
  82. package/{chunk-6H7GN3JL.js → chunk-VRLI2WNW.js} +10 -1
  83. package/{chunk-23RQKXP6.js → chunk-WS22FPWT.js} +1 -1
  84. package/{chunk-NVHJWYUO.js → chunk-WXPVOQD7.js} +35 -33
  85. package/{chunk-MFW4BGJS.js → chunk-XKQJJK4F.js} +1 -1
  86. package/{chunk-GIG262ZG.js → chunk-XMGHGEN6.js} +1 -1
  87. package/{chunk-IO7DYRPW.js → chunk-XTUY5EL4.js} +16 -12
  88. package/{chunk-OKCTLCKS.js → chunk-YOXYA2GU.js} +1 -1
  89. package/{chunk-ZIHJVHFH.js → chunk-Z33ARZCP.js} +1 -1
  90. package/{chunk-ZSG2AQU4.js → chunk-ZAB3A45K.js} +62 -11
  91. package/{chunk-YZHP76TR.js → chunk-ZBT3WNBK.js} +1 -1
  92. package/{contentThunks-Y2ACIFDB.js → contentThunks-VURN3DFW.js} +18 -18
  93. package/{createAgentAutomationAction-TNE3QMJR.js → createAgentAutomationAction-QZAAY77R.js} +18 -18
  94. package/{createDialogAction-BMGHBTQB.js → createDialogAction-CHGXVTAC.js} +20 -20
  95. package/{createPageAction-FFNIZPIS.js → createPageAction-IOGAFIN7.js} +18 -18
  96. package/{dbSlice-4CUQE35F.js → dbSlice-YXQ6RYIH.js} +4 -4
  97. package/{dialogCommands-3JC3BIXC.js → dialogCommands-XREAP6WQ.js} +26 -25
  98. package/{dialogSlice-3E7Z7HZV.js → dialogSlice-DOPGWGS4.js} +17 -17
  99. package/{docCreateCommands-6LNQLCTA.js → docCreateCommands-3PYZGSCL.js} +24 -23
  100. package/{docDeleteCommands-ZJOAPWZS.js → docDeleteCommands-3Y6MU44Q.js} +25 -24
  101. package/{docReadCommands-LJTRSBG6.js → docReadCommands-UBANMAFR.js} +24 -23
  102. package/{docStore-R47ABXBB.js → docStore-SYYFBENY.js} +5 -5
  103. package/{docUpdateCommands-7P3QF3N2.js → docUpdateCommands-4GK2X6BN.js} +24 -23
  104. package/{getPricing-TV6ZB7ES.js → getPricing-F2C65RIX.js} +3 -3
  105. package/{handleSendMessageAction-FFYOGXAO.js → handleSendMessageAction-NPVTY2GE.js} +17 -17
  106. package/index.js +81 -81
  107. package/{machineCommands-FN5GGQV3.js → machineCommands-I66X2XB7.js} +47 -46
  108. package/{machineWsRunDispatch-H47IA7ZT.js → machineWsRunDispatch-W4FVBOUM.js} +47 -46
  109. package/{memberThunks-N35XAOC6.js → memberThunks-5T4J6KXQ.js} +5 -5
  110. package/{models-CMXFDBQH.js → models-WW7VFNXB.js} +2 -2
  111. package/{offlineMarxistsAgentCommand-GEH6SNNA.js → offlineMarxistsAgentCommand-JEWCIAWM.js} +1 -1
  112. package/package.json +1 -1
  113. package/{providerPresetApply-D2GGHPI7.js → providerPresetApply-OCWWKBSD.js} +6 -6
  114. package/{providerRegistry-MU6C4ABD.js → providerRegistry-ZJQU7AJ7.js} +6 -6
  115. package/{read-2PV4PN2E.js → read-M2Q6WEKB.js} +3 -3
  116. package/{readDocTool-FGK5XGAW.js → readDocTool-T37P3YPB.js} +1 -1
  117. package/{readlineWorkspace-NXKHYZEU.js → readlineWorkspace-VY5AMOGR.js} +123 -91
  118. package/{removeDialogAgentAction-O2POGBOE.js → removeDialogAgentAction-HB3JBVAI.js} +7 -7
  119. package/{runAgentClientLoop-CEBV5UPD.js → runAgentClientLoop-3NDADLVE.js} +36 -36
  120. package/{setDialogExtraReferencesAction-KPSVVY3C.js → setDialogExtraReferencesAction-4XLHRV37.js} +5 -5
  121. package/{setPrimaryDialogAgentAction-RMJETONI.js → setPrimaryDialogAgentAction-C3JOFC4W.js} +7 -7
  122. package/{settingSlice-I6MTTNDX.js → settingSlice-CZRURSTH.js} +6 -6
  123. package/{spaceCommands-JHT4ALCQ.js → spaceCommands-ENYCUUZH.js} +24 -23
  124. package/{streamAgentChatTurn-SFCZP4GY.js → streamAgentChatTurn-634OFUSR.js} +44 -42
  125. package/{switchDialogAgentAction-OQSGWVQQ.js → switchDialogAgentAction-C6KVUKJP.js} +4 -4
  126. package/{tableCommands-SUNTHAYX.js → tableCommands-O6NWHFKV.js} +1 -1
  127. package/{toolApiClient-VGYUB4P5.js → toolApiClient-7PSIFQPJ.js} +2 -2
  128. package/{tools-K3YOTESV.js → tools-ILBLCF7D.js} +33 -33
  129. package/tuiSummaryLlmCaller-LFUBZKXK.js +127 -0
  130. package/{updateCommands-Y363MC3L.js → updateCommands-2M74UL7P.js} +2 -2
  131. package/{updateDialogTitleAction-CSPKYQRO.js → updateDialogTitleAction-RKFET73N.js} +38 -21
  132. package/tuiSummaryLlmCaller-T2OA5ZVB.js +0 -116
@@ -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,10 +14,10 @@ import {
13
14
  } from "./chunk-AGGIDPCZ.js";
14
15
  import {
15
16
  runLlm
16
- } from "./chunk-4FRNB4ZG.js";
17
+ } from "./chunk-TVNI5FLG.js";
17
18
  import {
18
19
  cleanupCliSessionForDialog
19
- } from "./chunk-US463UAD.js";
20
+ } from "./chunk-6BEA566T.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-OCL2YCAU.js";
58
+ } from "./chunk-F2CGG72C.js";
58
59
  import {
59
60
  COMPACTION_SUMMARY_SYSTEM_PROMPT,
60
61
  buildCompactionMetricsFromPlan,
@@ -65,11 +66,11 @@ import {
65
66
  normalizeAssistantContentBuffer,
66
67
  planCompression,
67
68
  serializeMessageContent
68
- } from "./chunk-KT6LENVP.js";
69
+ } from "./chunk-VHJLQHPQ.js";
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,10 +85,10 @@ 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
- } from "./chunk-IZAWJCG7.js";
91
+ } from "./chunk-RZANZZL2.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-5EJZGJS2.js";
101
+ } from "./chunk-UA5S3LQQ.js";
101
102
  import {
102
103
  buildDialogAgentListIndexDeleteOps,
103
104
  createDialogMessageKeyAndId,
@@ -119,13 +120,13 @@ import {
119
120
  builtinAgentCatalogEntryById,
120
121
  builtinRuntimeFallbackEntries,
121
122
  isBuiltinPlatformAgentKey
122
- } from "./chunk-HJKGQPYF.js";
123
+ } from "./chunk-TL6L5XUT.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,
@@ -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",
@@ -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
  }
@@ -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-7GDS5Q2S.js");
17469
+ const { streamAgentChatTurn } = await import("./agentSlice-ZNLGFUB5.js");
17130
17470
  await dispatch(
17131
17471
  streamAgentChatTurn({
17132
17472
  agentKey: agentKeyToUse,
@@ -18259,7 +18599,7 @@ var deleteDialogThunk = async (payload, thunkApi) => {
18259
18599
  }
18260
18600
  if (isCurrentDialog) {
18261
18601
  await thunkApi.dispatch(resetMsgs());
18262
- const { clearPendingAttachments: clearPendingAttachments2 } = await import("./dialogSlice-3E7Z7HZV.js");
18602
+ const { clearPendingAttachments: clearPendingAttachments2 } = await import("./dialogSlice-DOPGWGS4.js");
18263
18603
  dispatch(clearPendingAttachments2());
18264
18604
  }
18265
18605
  return { dialogKey, isCurrentDialog, attachmentPlan };
@@ -18267,39 +18607,39 @@ var deleteDialogThunk = async (payload, thunkApi) => {
18267
18607
 
18268
18608
  // packages/chat/dialog/dialogSlice.ts
18269
18609
  var runCreateDialogAction = async (args, thunkApi) => {
18270
- const { createDialogAction } = await import("./createDialogAction-BMGHBTQB.js");
18610
+ const { createDialogAction } = await import("./createDialogAction-CHGXVTAC.js");
18271
18611
  return createDialogAction(args, thunkApi);
18272
18612
  };
18273
18613
  var runCreateAgentAutomationAction = async (args, thunkApi) => {
18274
- const { createAgentAutomationAction } = await import("./createAgentAutomationAction-TNE3QMJR.js");
18614
+ const { createAgentAutomationAction } = await import("./createAgentAutomationAction-QZAAY77R.js");
18275
18615
  return createAgentAutomationAction(args, thunkApi);
18276
18616
  };
18277
18617
  var runUpdateDialogTitleAction = async (args, thunkApi) => {
18278
- const { updateDialogTitleAction } = await import("./updateDialogTitleAction-CSPKYQRO.js");
18618
+ const { updateDialogTitleAction } = await import("./updateDialogTitleAction-RKFET73N.js");
18279
18619
  return updateDialogTitleAction(args, thunkApi);
18280
18620
  };
18281
18621
  var runAddDialogAgentAction = async (args, thunkApi) => {
18282
- const { addDialogAgentAction } = await import("./addDialogAgentAction-CIDFWATM.js");
18622
+ const { addDialogAgentAction } = await import("./addDialogAgentAction-OJSFV7DZ.js");
18283
18623
  return addDialogAgentAction(args, thunkApi);
18284
18624
  };
18285
18625
  var runRemoveDialogAgentAction = async (args, thunkApi) => {
18286
- const { removeDialogAgentAction } = await import("./removeDialogAgentAction-O2POGBOE.js");
18626
+ const { removeDialogAgentAction } = await import("./removeDialogAgentAction-HB3JBVAI.js");
18287
18627
  return removeDialogAgentAction(args, thunkApi);
18288
18628
  };
18289
18629
  var runSetPrimaryDialogAgentAction = async (args, thunkApi) => {
18290
- const { setPrimaryDialogAgentAction } = await import("./setPrimaryDialogAgentAction-RMJETONI.js");
18630
+ const { setPrimaryDialogAgentAction } = await import("./setPrimaryDialogAgentAction-C3JOFC4W.js");
18291
18631
  return setPrimaryDialogAgentAction(args, thunkApi);
18292
18632
  };
18293
18633
  var runSwitchDialogAgentAction = async (args, thunkApi) => {
18294
- const { switchDialogAgentAction } = await import("./switchDialogAgentAction-OQSGWVQQ.js");
18634
+ const { switchDialogAgentAction } = await import("./switchDialogAgentAction-C6KVUKJP.js");
18295
18635
  return switchDialogAgentAction(args, thunkApi);
18296
18636
  };
18297
18637
  var runSetDialogExtraReferencesAction = async (args, thunkApi) => {
18298
- const { setDialogExtraReferencesAction } = await import("./setDialogExtraReferencesAction-KPSVVY3C.js");
18638
+ const { setDialogExtraReferencesAction } = await import("./setDialogExtraReferencesAction-4XLHRV37.js");
18299
18639
  return setDialogExtraReferencesAction(args, thunkApi);
18300
18640
  };
18301
18641
  var runHandleSendMessageAction = async (args, thunkApi) => {
18302
- const { handleSendMessageAction } = await import("./handleSendMessageAction-FFYOGXAO.js");
18642
+ const { handleSendMessageAction } = await import("./handleSendMessageAction-NPVTY2GE.js");
18303
18643
  return handleSendMessageAction(args, thunkApi);
18304
18644
  };
18305
18645
  function clearDialogState() {
@@ -18312,7 +18652,7 @@ var createPageAndAddReference = createAsyncThunk(
18312
18652
  async (payload, { dispatch, getState, rejectWithValue }) => {
18313
18653
  const { slateData, jsonData, title, type, fileId, groupId, dialogKey } = payload;
18314
18654
  try {
18315
- const { createDocState } = await import("./docStore-R47ABXBB.js");
18655
+ const { createDocState } = await import("./docStore-SYYFBENY.js");
18316
18656
  const pageKey = await createDocState(
18317
18657
  { slateData, title },
18318
18658
  { dispatch, getState }