nolo-cli 0.153.0-alpha.1 → 0.153.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 (152) hide show
  1. package/{_executeModel-4KHFMQT4.js → _executeModel-NID5KIUZ.js} +46 -48
  2. package/{accountResolver-7RYB4D2P.js → accountResolver-55EDKEIK.js} +1 -1
  3. package/{action-SXJD5N5R.js → action-GPPJC5TI.js} +4 -4
  4. package/{addContentAction-ZV774PHH.js → addContentAction-BI6RDRTQ.js} +8 -8
  5. package/{addDialogAgentAction-A6SMKAGH.js → addDialogAgentAction-4RJYUSIK.js} +7 -7
  6. package/{agentDeleteCommand-EKFV5FC7.js → agentDeleteCommand-6HYGISLC.js} +59 -60
  7. package/{agentEmailCommands-MNV3MUH5.js → agentEmailCommands-Q7UW4SRL.js} +61 -62
  8. package/{agentListCommands-E6FYKXC3.js → agentListCommands-MM5OLPBY.js} +23 -23
  9. package/{agentMachineCommands-2GFUU7GF.js → agentMachineCommands-V5TSZ2QN.js} +22 -21
  10. package/{agentProviderCommands-HL6MBLCL.js → agentProviderCommands-MKG2OOEY.js} +2 -2
  11. package/{agentRecordCommands-LPHHTEPM.js → agentRecordCommands-P2YXZEWY.js} +59 -60
  12. package/{agentRunCommand-JSPW7W32.js → agentRunCommand-B2MBD56K.js} +61 -61
  13. package/{agentRunControl-IFM7IGMG.js → agentRunControl-2C5GM3BW.js} +5 -5
  14. package/{agentRuntimeLocal-ARS4TV77.js → agentRuntimeLocal-RJKTDWNN.js} +16 -16
  15. package/{agentSlice-IP4DZNNV.js → agentSlice-636W6M5A.js} +8 -8
  16. package/{appDeleteCommands-JHTLKQSX.js → appDeleteCommands-7EOM274T.js} +21 -21
  17. package/{appDeployCommands-5V26M2KA.js → appDeployCommands-2I3QYJ5G.js} +21 -21
  18. package/{appDeployStatusCommands-SBSPS627.js → appDeployStatusCommands-LEML7FPR.js} +21 -21
  19. package/{appGetCommands-NKPD2L45.js → appGetCommands-ZQSVHGQM.js} +21 -21
  20. package/{appListCommands-ZOGRZFYY.js → appListCommands-BVA7XKQO.js} +21 -21
  21. package/{authCommand-QYN47CQD.js → authCommand-NIV3DKPF.js} +13 -293
  22. package/{authCommands-77CHYBGF.js → authCommands-AMNIAKEG.js} +2 -2
  23. package/{builtinSkillRegistry-TDQ6JB2E.js → builtinSkillRegistry-H3AY27TR.js} +3 -3
  24. package/{chromeCommands-OBBNJCLS.js → chromeCommands-IY4NVSXZ.js} +17 -10
  25. package/{chunk-SW4S4XYB.js → chunk-2AB2HA4M.js} +84 -34
  26. package/{chunk-4PXHOOFA.js → chunk-2MTE2PEH.js} +3 -3
  27. package/{chunk-4YRTZIVN.js → chunk-2SGAI64X.js} +2 -2
  28. package/{chunk-QFEW2ULV.js → chunk-32ZKZET7.js} +1 -1
  29. package/{chunk-GQV5KHJU.js → chunk-3C2QLERX.js} +1 -1
  30. package/{chunk-XPWGOTBQ.js → chunk-3L2WKC3W.js} +1 -8
  31. package/{chunk-WD4XYDYC.js → chunk-3WIXU4XO.js} +224 -1
  32. package/{chunk-6LIKQYG4.js → chunk-42QZQ6QG.js} +21 -23
  33. package/{chunk-YBNHPX4S.js → chunk-4RJJDA57.js} +1 -1
  34. package/{chunk-PFBIXTFB.js → chunk-6CTXMBXD.js} +56 -30
  35. package/{chunk-HL3O3PCQ.js → chunk-6TF64IF2.js} +2 -2
  36. package/{chunk-PMYAE4OZ.js → chunk-7HVMGI5M.js} +3 -3
  37. package/{chunk-BNDETALN.js → chunk-7NSQJKGA.js} +45 -13
  38. package/{chunk-UUPR3TD7.js → chunk-7RF4O6AT.js} +1 -3
  39. package/{chunk-HSJPKBLC.js → chunk-ANJTRG52.js} +2 -2
  40. package/{chunk-2GGXHQIW.js → chunk-BLVSFYQ3.js} +4 -2
  41. package/{chunk-ISQL4V7C.js → chunk-C3OK72G3.js} +1 -1
  42. package/{chunk-CHCS6XPJ.js → chunk-CGFNDIKK.js} +65 -0
  43. package/{chunk-5MM7NNO6.js → chunk-CNWKLQRL.js} +8 -3
  44. package/{chunk-F32Z66T4.js → chunk-CON6SI7N.js} +1 -1
  45. package/{chunk-AHYBQP3M.js → chunk-CQFBGOKS.js} +3 -3
  46. package/{chunk-HIQ4GF53.js → chunk-DC3SZCRR.js} +7 -3
  47. package/{chunk-RVWMAFIT.js → chunk-FYYSDHVQ.js} +1 -1
  48. package/{chunk-TYYRSFBG.js → chunk-HB4XPBC7.js} +3 -35
  49. package/{chunk-6MJNEXUU.js → chunk-HGDKT2D6.js} +4 -0
  50. package/{chunk-KMM2X7LP.js → chunk-HHNNUPAB.js} +3 -3
  51. package/{chunk-JWTSWUPS.js → chunk-HSPGMGTN.js} +7 -6
  52. package/{chunk-UBUH2TCC.js → chunk-I2RMFLLH.js} +2 -2
  53. package/{chunk-VJXHL6MH.js → chunk-ICRRXBRN.js} +3 -3
  54. package/{chunk-XS47QOFV.js → chunk-IE5PXKVU.js} +2 -264
  55. package/{chunk-T5BHHWA5.js → chunk-IJVJUAHF.js} +7 -7
  56. package/{chunk-KFHQQ3NO.js → chunk-INFHX73M.js} +1 -1
  57. package/{chunk-XRUSXPCQ.js → chunk-IPAW7XLD.js} +57 -4
  58. package/{chunk-PLSVXHSA.js → chunk-IRTOYSA2.js} +3 -3
  59. package/{chunk-RQ6E3G5L.js → chunk-IUMO3L46.js} +18 -2
  60. package/{chunk-GCKHQECX.js → chunk-IYBIRCQV.js} +1 -1
  61. package/{chunk-ILU2NPWY.js → chunk-J2ATF74A.js} +2 -2
  62. package/{chunk-XZNCX52W.js → chunk-JGRPBIZZ.js} +1 -1
  63. package/{chunk-E2AKSW7L.js → chunk-JPJGMOIM.js} +2 -2
  64. package/{chunk-44WXLHFI.js → chunk-K43ZF2C3.js} +1 -1
  65. package/{chunk-I2ZMGXXF.js → chunk-KFHREHUQ.js} +1 -1
  66. package/{chunk-MZHOLWW5.js → chunk-KKQAAL57.js} +3 -3
  67. package/{chunk-JKMLSTZK.js → chunk-KLA62VVE.js} +3 -3
  68. package/{chunk-EHFS4XZO.js → chunk-KXFN2UYT.js} +12 -8
  69. package/{chunk-DYYMIUN4.js → chunk-L6EQV5OC.js} +4 -4
  70. package/{chunk-EZVK3N5L.js → chunk-LOEO7LRC.js} +56 -0
  71. package/{chunk-EDX5XSJM.js → chunk-M2P3OGXZ.js} +3 -3
  72. package/{chunk-LC23WBCU.js → chunk-M3KPY3TH.js} +6 -6
  73. package/{chunk-YVLQXTUB.js → chunk-MM3662RS.js} +1 -1
  74. package/{chunk-CBHGZRCE.js → chunk-MYOH447Z.js} +1 -1
  75. package/{chunk-A4MW3YZL.js → chunk-NDZOXXIM.js} +18 -4
  76. package/{chunk-I5V3V2H4.js → chunk-OAVSTXC7.js} +37 -25
  77. package/{chunk-36OMEXXR.js → chunk-OON4OBWI.js} +1 -1
  78. package/{chunk-VNP54NZL.js → chunk-P42RHYS3.js} +14 -14
  79. package/chunk-PLQYH5XK.js +2685 -0
  80. package/{chunk-SEJ5OS6F.js → chunk-PXYBUFDB.js} +4 -0
  81. package/{chunk-USHQX6VT.js → chunk-QPY264HO.js} +1 -1
  82. package/{chunk-XCA6HQGS.js → chunk-QQ72PAGR.js} +5 -5
  83. package/{chunk-TNIX77YM.js → chunk-R5GO3YZP.js} +34 -1
  84. package/{chunk-AIZE5TDM.js → chunk-SPKLALBU.js} +2 -2
  85. package/{chunk-PPU323UE.js → chunk-SRGKEBQ6.js} +184 -67
  86. package/{chunk-64PFYIAY.js → chunk-STAG2AHQ.js} +677 -640
  87. package/{chunk-K2AER7RX.js → chunk-SUKSWFLP.js} +2 -2
  88. package/{chunk-I4SN4NUQ.js → chunk-TRW43TSC.js} +1 -1
  89. package/{chunk-D2QN6CTI.js → chunk-UCLSOLX4.js} +8 -6
  90. package/{chunk-TYJ5XFEA.js → chunk-UFYBYB26.js} +1 -1
  91. package/{chunk-SCMHQUMK.js → chunk-US6MKPE7.js} +1 -1
  92. package/{chunk-ZIWPQEFU.js → chunk-VYNMQ6HW.js} +1 -28
  93. package/{chunk-IJERIUXS.js → chunk-WRCZXJ4N.js} +6 -3
  94. package/chunk-Y5GCAMGP.js +9 -0
  95. package/{chunk-XTWDF6RU.js → chunk-Y5NUMYMH.js} +21 -17
  96. package/{chunk-GKXCHNTE.js → chunk-Y6ORVLSS.js} +1 -1
  97. package/{chunk-RSHPU4PD.js → chunk-YANF2RR4.js} +2 -2
  98. package/{chunk-EYWJT7A2.js → chunk-YPG7TUQD.js} +3 -3
  99. package/{chunk-ZF6526IQ.js → chunk-ZEY4NJRE.js} +2 -2
  100. package/{chunk-74RAWNQN.js → chunk-ZVQHBIWV.js} +6 -6
  101. package/{chunk-DTODXBHK.js → chunk-ZWG3C7VI.js} +2 -2
  102. package/{commandRegistry-VBALU4Q4.js → commandRegistry-6MVZTG5Y.js} +79 -87
  103. package/{contentThunks-HPY2QNWZ.js → contentThunks-F7XJS5WV.js} +21 -21
  104. package/{createAgentAutomationAction-6ADGPGY6.js → createAgentAutomationAction-Z2AW4ZPK.js} +21 -21
  105. package/{createDialogAction-6ABMSEW2.js → createDialogAction-PWG7C7VG.js} +22 -22
  106. package/{createPageAction-OC4NNRPC.js → createPageAction-2L5Q2KOB.js} +22 -23
  107. package/{dbSlice-J37OGIXH.js → dbSlice-DC2J53RC.js} +7 -7
  108. package/{deleteFile-6JWDDRVP.js → deleteFile-KYWEMNFX.js} +4 -4
  109. package/{dialogCommands-EIGBRSQP.js → dialogCommands-MUFYPVMP.js} +24 -23
  110. package/{dialogSlice-SI45KJOH.js → dialogSlice-G5EIKHJA.js} +20 -20
  111. package/{docCreateCommands-3JDBBMU5.js → docCreateCommands-OPWOKG62.js} +19 -19
  112. package/{docDeleteCommands-5M6C7UUB.js → docDeleteCommands-IBV3WMKI.js} +20 -20
  113. package/{docReadCommands-DUB57F6V.js → docReadCommands-LVALHMLZ.js} +19 -19
  114. package/{docStore-L43MDEK4.js → docStore-CUFUJQGC.js} +8 -8
  115. package/{docUpdateCommands-WF7MAMPK.js → docUpdateCommands-Z5OUEAK7.js} +19 -19
  116. package/{getPricing-FKK3F5EJ.js → getPricing-TX35D7PI.js} +3 -3
  117. package/{handleSendMessageAction-BSMU7SVS.js → handleSendMessageAction-26HUY2ZV.js} +34 -34
  118. package/index.js +7 -7
  119. package/{localRuntimeAdapter-N5PDR26F.js → localRuntimeAdapter-SV22ZUP3.js} +59 -58
  120. package/{machineCommands-TMXJKZCE.js → machineCommands-2G5ESGDC.js} +63 -62
  121. package/{machineWsRunDispatch-25H63KEH.js → machineWsRunDispatch-NXKGHYPP.js} +58 -59
  122. package/{memberThunks-66DH6ABQ.js → memberThunks-2DWKLE6W.js} +8 -8
  123. package/{models-LAS4B2B5.js → models-PZQC7VV4.js} +2 -2
  124. package/package.json +4 -2
  125. package/{profileConfig-ZGOFORWV.js → profileConfig-KN3N2BLF.js} +7 -1
  126. package/{providerPresetApply-MY66I6NT.js → providerPresetApply-GSJI4JBJ.js} +6 -6
  127. package/{providerRegistry-QOE2FT57.js → providerRegistry-TSSTPGWF.js} +6 -6
  128. package/{read-DC4NUGN6.js → read-L7QEJETH.js} +5 -5
  129. package/{readDocTool-NCJ5NT25.js → readDocTool-QELXV2GW.js} +1 -1
  130. package/{readlineWorkspace-BS7WVCL2.js → readlineWorkspace-AYCWJVXF.js} +334 -123
  131. package/{removeDialogAgentAction-E2H3OZU6.js → removeDialogAgentAction-376XSUP2.js} +9 -9
  132. package/{runAgentClientLoop-BVKRI4SY.js → runAgentClientLoop-SJQUUBEC.js} +50 -47
  133. package/{runtimeDoctorCommands-GIOGC5SC.js → runtimeDoctorCommands-56NWKNON.js} +5 -5
  134. package/{secretCommands-ZXZRLR3R.js → secretCommands-DNY56NSU.js} +11 -1
  135. package/{setDialogExtraReferencesAction-SITRPMYU.js → setDialogExtraReferencesAction-QBDSH63D.js} +8 -8
  136. package/{setPrimaryDialogAgentAction-U7N45TGC.js → setPrimaryDialogAgentAction-537QFGW3.js} +9 -9
  137. package/settingThunks-4Z43ZSAT.js +923 -0
  138. package/{spaceCommands-5EWREUWS.js → spaceCommands-AWIIP7J5.js} +19 -19
  139. package/{streamAgentChatTurn-B4VFUV52.js → streamAgentChatTurn-OITCT4FF.js} +55 -106
  140. package/{switchDialogAgentAction-OMGBD3N2.js → switchDialogAgentAction-CSO6AKRL.js} +7 -7
  141. package/{tableCommands-U3QDY4L6.js → tableCommands-LBH3QPPO.js} +1 -1
  142. package/{toolApiClient-7WSJJJBV.js → toolApiClient-HGNO53TC.js} +2 -2
  143. package/{tools-5WYAUKMK.js → tools-KH4MMAFG.js} +39 -40
  144. package/{tuiSummaryLlmCaller-PPU7YDBG.js → tuiSummaryLlmCaller-KLK6K3Q3.js} +8 -8
  145. package/{updateCommands-NQXAGFM7.js → updateCommands-LXZLG44Y.js} +2 -2
  146. package/{updateDialogTitleAction-YJHDKHFX.js → updateDialogTitleAction-PDJUW7Z7.js} +22 -22
  147. package/{workloadLifecycle-36DXRZKU.js → workloadLifecycle-6O6PMISX.js} +2 -2
  148. package/chunk-IA7TRNNR.js +0 -11
  149. package/chunk-OFVFQYIE.js +0 -7012
  150. package/chunk-W4S6OTSC.js +0 -35
  151. package/clipboardy-GCO3GT3I.js +0 -11793
  152. package/settingThunks-Y7SVJOMZ.js +0 -1371
@@ -296,21 +296,49 @@ var STRINGS = {
296
296
  en: "Usage: /altscreen <on|off>",
297
297
  zh: "\u7528\u6CD5\uFF1A/altscreen <on|off>"
298
298
  },
299
- autoCurrent: {
300
- en: "Permission auto-approve: {0}",
301
- zh: "\u6743\u9650\u81EA\u52A8\u5316\uFF1A{0}"
302
- },
303
299
  autoUsage: {
304
- en: "Usage: /auto <on|off>",
305
- zh: "\u7528\u6CD5\uFF1A/auto <on|off>"
300
+ en: "Usage: /auto [local|remote] <on|off> \xB7 /auto reset (clear both)",
301
+ zh: "\u7528\u6CD5\uFF1A/auto [local|remote] <on|off> \xB7 /auto reset\uFF08\u4E24\u6876\u6E05\u96F6\uFF09"
302
+ },
303
+ autoStateLine: {
304
+ en: "Local-run grant: {0} \xB7 Remote-origin shell grant: {1}",
305
+ zh: "\u672C\u673A run \u6388\u6743\uFF1A{0} \xB7 \u8FDC\u7A0B\u6765\u6E90\u5728\u672C\u673A\u6267\u884C shell \u6388\u6743\uFF1A{1}"
306
+ },
307
+ autoStateOnPersisted: {
308
+ en: "granted (saved)",
309
+ zh: "\u5DF2\u6388\u6743\uFF08\u5DF2\u4FDD\u5B58\uFF09"
310
+ },
311
+ autoStateOff: {
312
+ en: "ask every time",
313
+ zh: "\u9010\u6B21\u8BE2\u95EE"
314
+ },
315
+ autoKindLocal: {
316
+ en: "local-run confirmations (destructive shell / outside-workspace files / file writes)",
317
+ zh: "\u672C\u673A run \u7684\u786E\u8BA4\uFF08\u7834\u574F\u6027\u547D\u4EE4 / \u5DE5\u4F5C\u533A\u5916\u6587\u4EF6 / \u5199\u6587\u4EF6\uFF09"
318
+ },
319
+ autoKindRemote: {
320
+ en: "a remote origin running shell on this machine",
321
+ zh: "\u8FDC\u7A0B\u6765\u6E90\u5728\u672C\u673A\u6267\u884C shell"
322
+ },
323
+ autoGrantOn: {
324
+ en: "Approved and saved: {0}. That class no longer asks (this session and future starts). Undo with {1}.",
325
+ zh: "\u5DF2\u6279\u51C6\u5E76\u4FDD\u5B58\uFF1A{0}\u3002\u8BE5\u7C7B\u786E\u8BA4\u4E0D\u518D\u8BE2\u95EE\uFF08\u672C\u6B21\u4E0E\u540E\u7EED\u542F\u52A8\u90FD\u751F\u6548\uFF09\u3002\u64A4\u9500\u7528 {1}\u3002"
306
326
  },
307
- autoOn: {
308
- en: "Permission auto-approve ON \u2014 destructive shell and external-file confirmations will be skipped for this session.",
309
- zh: "\u6743\u9650\u81EA\u52A8\u5316\u5DF2\u5F00\u542F\uFF1A\u672C\u4F1A\u8BDD\u5185\u7834\u574F\u6027 shell \u4E0E\u5916\u90E8\u6587\u4EF6\u8BBF\u95EE\u786E\u8BA4\u5C06\u81EA\u52A8\u653E\u884C\u3002"
327
+ autoGrantOff: {
328
+ en: "Revoked and saved: {0}. Those confirmations ask again (this session and future starts). Re-enable with {1}.",
329
+ zh: "\u5DF2\u64A4\u9500\u5E76\u4FDD\u5B58\uFF1A{0}\u3002\u8BE5\u7C7B\u786E\u8BA4\u6062\u590D\u9010\u6B21\u8BE2\u95EE\uFF08\u672C\u4F1A\u8BDD\u4E0E\u540E\u7EED\u542F\u52A8\u90FD\u751F\u6548\uFF09\u3002\u91CD\u65B0\u5F00\u542F\u7528 {1}\u3002"
310
330
  },
311
- autoOff: {
312
- en: "Permission auto-approve OFF \u2014 confirmations will ask again.",
313
- zh: "\u6743\u9650\u81EA\u52A8\u5316\u5DF2\u5173\u95ED\uFF1A\u6062\u590D\u9010\u6B21\u786E\u8BA4\u3002"
331
+ autoReset: {
332
+ en: "Cleared and saved: both permission buckets are reset \u2014 every confirmation asks again.",
333
+ zh: "\u5DF2\u6E05\u7A7A\u5E76\u4FDD\u5B58\uFF1A\u672C\u673A\u4E0E\u8FDC\u7A0B\u4E24\u6876\u6388\u6743\u90FD\u6E05\u96F6\uFF0C\u6240\u6709\u786E\u8BA4\u6062\u590D\u9010\u6B21\u8BE2\u95EE\u3002"
334
+ },
335
+ autoPersistFailed: {
336
+ en: "This grant applies to this session only \u2014 it could not be saved to your config (no profile?).",
337
+ zh: "\u8BE5\u6388\u6743\u4EC5\u672C\u6B21\u4F1A\u8BDD\u6709\u6548\uFF1A\u672A\u80FD\u4FDD\u5B58\u5230\u914D\u7F6E\uFF08\u53EF\u80FD\u8FD8\u6CA1\u6709 profile\uFF09\u3002"
338
+ },
339
+ autoPersistedStartup: {
340
+ en: "Approved from your saved config: {0}. Those confirmations are skipped; undo with /auto reset.",
341
+ zh: "\u5DF2\u4ECE\u4FDD\u5B58\u7684\u914D\u7F6E\u751F\u6548\u7684\u6388\u6743\uFF1A{0}\u3002\u8FD9\u4E9B\u786E\u8BA4\u5DF2\u88AB\u8DF3\u8FC7\uFF1B\u64A4\u9500\u7528 /auto reset\u3002"
314
342
  },
315
343
  langSwitched: {
316
344
  en: "Language switched to English.",
@@ -580,40 +608,52 @@ var STRINGS = {
580
608
  zh: "\uFF08\u2191\u2193 \u79FB\u52A8 \xB7 Enter \u9009\u62E9 \xB7 Esc \u53D6\u6D88\uFF09"
581
609
  },
582
610
  dialogConfirmTitle: {
583
- en: "Confirm destructive shell command",
584
- zh: "\u786E\u8BA4\u6267\u884C\u7834\u574F\u6027 shell \u547D\u4EE4"
611
+ en: "Allow destructive shell commands from local runs?",
612
+ zh: "\u5141\u8BB8\u672C\u673A run \u6267\u884C\u7834\u574F\u6027 shell \u547D\u4EE4\u5417\uFF1F"
585
613
  },
586
614
  dialogConfirmBody: {
587
- en: "This command may delete or reset user content and needs explicit confirmation before it runs.",
588
- zh: "\u8BE5\u547D\u4EE4\u53EF\u80FD\u5220\u9664\u6216\u91CD\u7F6E\u7528\u6237\u5185\u5BB9\uFF0C\u9700\u8981\u7528\u6237\u660E\u786E\u786E\u8BA4\u540E\u624D\u80FD\u6267\u884C\u3002"
615
+ en: "This command may delete or reset user content \u2014 a local-run destructive shell command.",
616
+ zh: "\u8BE5\u547D\u4EE4\u53EF\u80FD\u5220\u9664\u6216\u91CD\u7F6E\u7528\u6237\u5185\u5BB9\uFF0C\u5C5E\u4E8E\u672C\u673A run \u7684\u7834\u574F\u6027 shell \u547D\u4EE4\u3002"
589
617
  },
590
618
  dialogConfirmExternalFileTitle: {
591
- en: "Confirm reading a file outside the workspace",
592
- zh: "\u786E\u8BA4\u8BFB\u53D6\u5DE5\u4F5C\u533A\u5916\u90E8\u6587\u4EF6"
619
+ en: "Allow reading files outside the workspace?",
620
+ zh: "\u5141\u8BB8\u8BFB\u53D6\u5DE5\u4F5C\u533A\u5916\u90E8\u6587\u4EF6\u5417\uFF1F"
593
621
  },
594
622
  dialogConfirmExternalFileBody: {
595
- en: "This path is outside the current workspace. Allow this one-time access, or deny it.",
596
- zh: "\u8BE5\u8DEF\u5F84\u4F4D\u4E8E\u5F53\u524D\u5DE5\u4F5C\u533A\u4E4B\u5916\u3002\u786E\u8BA4\u540E\u672C\u6B21\u8BBF\u95EE\u653E\u884C\uFF0C\u5426\u5219\u62D2\u7EDD\u3002"
623
+ en: "This path is outside the current workspace \u2014 a local-run outside-workspace file access.",
624
+ zh: "\u8BE5\u8DEF\u5F84\u4F4D\u4E8E\u5F53\u524D\u5DE5\u4F5C\u533A\u4E4B\u5916\uFF0C\u5C5E\u4E8E\u672C\u673A run \u7684\u5DE5\u4F5C\u533A\u5916\u6587\u4EF6\u8BBF\u95EE\u3002"
625
+ },
626
+ dialogConfirmFileWriteTitle: {
627
+ en: "Allow writing files from local runs?",
628
+ zh: "\u5141\u8BB8\u672C\u673A run \u5199\u5165\u6587\u4EF6\u5417\uFF1F"
629
+ },
630
+ dialogConfirmFileWriteBody: {
631
+ en: "This action writes into the workspace \u2014 a local-run file-write confirmation.",
632
+ zh: "\u8BE5\u64CD\u4F5C\u4F1A\u5199\u5165\u5DE5\u4F5C\u533A\u6587\u4EF6\uFF0C\u5C5E\u4E8E\u672C\u673A run \u7684\u5199\u6587\u4EF6\u786E\u8BA4\u3002"
633
+ },
634
+ dialogConfirmRememberLocal: {
635
+ en: "Approving covers all three local-run classes (destructive shell / outside-workspace files / file writes) and is saved, so they stop asking \u2014 this session and future starts. Undo with /auto local off or /auto reset.",
636
+ zh: "\u6279\u51C6\u540E\u672C\u673A run \u7684\u4E09\u7C7B\u786E\u8BA4\uFF08\u7834\u574F\u6027\u547D\u4EE4 / \u5DE5\u4F5C\u533A\u5916\u6587\u4EF6 / \u5199\u6587\u4EF6\uFF09\u90FD\u4E0D\u518D\u8BE2\u95EE\uFF0C\u5E76\u4FDD\u5B58\u5230\u914D\u7F6E\uFF08\u672C\u6B21\u4E0E\u540E\u7EED\u542F\u52A8\u90FD\u751F\u6548\uFF09\u3002\u64A4\u9500\u7528 /auto local off \u6216 /auto reset\u3002"
597
637
  },
598
638
  dialogConfirmCommandTruncated: {
599
639
  en: "(truncated)",
600
640
  zh: "\uFF08\u5DF2\u622A\u65AD\uFF09"
601
641
  },
602
642
  dialogConfirmAllowLabel: {
603
- en: "Allow",
604
- zh: "\u5141\u8BB8"
643
+ en: "Approve & remember",
644
+ zh: "\u6279\u51C6\u5E76\u8BB0\u4F4F"
605
645
  },
606
646
  dialogConfirmAllowDetail: {
607
- en: "execute this time",
608
- zh: "\u672C\u6B21\u6267\u884C"
647
+ en: "stop asking for this class (saved)",
648
+ zh: "\u540C\u7C7B\u786E\u8BA4\u4E0D\u518D\u8BE2\u95EE\uFF08\u5DF2\u4FDD\u5B58\uFF09"
609
649
  },
610
650
  dialogConfirmCancelLabel: {
611
- en: "Cancel",
612
- zh: "\u53D6\u6D88"
651
+ en: "Reject",
652
+ zh: "\u62D2\u7EDD"
613
653
  },
614
654
  dialogConfirmCancelDetail: {
615
- en: "abort the operation",
616
- zh: "\u4E2D\u6B62\u64CD\u4F5C"
655
+ en: "do not run it; ask again next time",
656
+ zh: "\u4E0D\u6267\u884C\uFF0C\u4E0B\u6B21\u4ECD\u4F1A\u8BE2\u95EE"
617
657
  },
618
658
  // --- Ask choice (ask_user) ------------------------------------------
619
659
  askChoiceTitle: {
@@ -859,7 +899,7 @@ var STRINGS = {
859
899
  " Drag a file in Drop an image file on the terminal to attach it; audio/video transcribes; other files stay paths",
860
900
  " Shift+Enter / Ctrl+J Insert a newline in the draft",
861
901
  " /mouse <on|off> Toggle mouse mode (off = drag to select text)",
862
- " /auto <on|off> Toggle permission auto-approve (skip destructive-shell, external-file & file-write confirms)",
902
+ " /auto [local|remote] <on|off> Approve one permission bucket (local-run confirms / remote-origin shell) so it stops asking; saved to your config. /auto reset clears both",
863
903
  " /shell-revoke Revoke this session's shell grant; the next shell call re-asks (works while a reply runs; does not interrupt a running command)",
864
904
  " /math <on|off> Toggle math formula rendering (Unicode transcription)",
865
905
  " /altscreen <on|off> Toggle the terminal alternate screen (default on; off shares shell scrollback)",
@@ -905,7 +945,7 @@ var STRINGS = {
905
945
  " \u62D6\u5165\u6587\u4EF6 \u628A\u56FE\u7247\u6587\u4EF6\u62D6\u8FDB\u7EC8\u7AEF\u5373\u6210\u4E3A\u9644\u4EF6\uFF1B\u97F3\u89C6\u9891\u81EA\u52A8\u8F6C\u5199\uFF1B\u5176\u4ED6\u6587\u4EF6\u53EA\u7559\u8DEF\u5F84",
906
946
  " Shift+Enter / Ctrl+J \u5728\u8349\u7A3F\u91CC\u6362\u884C",
907
947
  " /mouse <on|off> \u5207\u6362\u9F20\u6807\u6A21\u5F0F\uFF08off \u540E\u53EF\u76F4\u63A5\u62D6\u9009\u6587\u672C\uFF09",
908
- " /auto <on|off> \u5207\u6362\u6743\u9650\u81EA\u52A8\u5316\uFF08\u81EA\u52A8\u653E\u884C\u7834\u574F\u6027 shell\u3001\u5916\u90E8\u6587\u4EF6\u4E0E\u5199\u6587\u4EF6\u786E\u8BA4\uFF09",
948
+ " /auto [local|remote] <on|off> \u6388\u6743\u67D0\u4E00\u6876\uFF08\u672C\u673A run \u786E\u8BA4 / \u8FDC\u7A0B\u6765\u6E90 shell\uFF09\u4E0D\u518D\u9010\u6B21\u8BE2\u95EE\uFF0C\u5E76\u4FDD\u5B58\u5230\u914D\u7F6E\uFF1B/auto reset \u4E24\u6876\u6E05\u96F6",
909
949
  " /shell-revoke \u64A4\u9500\u672C\u4F1A\u8BDD\u7684 shell \u6267\u884C\u6388\u6743\uFF0C\u4E0B\u4E00\u6B21 shell \u8C03\u7528\u91CD\u65B0\u786E\u8BA4\uFF08\u56DE\u590D\u8FDB\u884C\u4E2D\u4E5F\u53EF\u7528\uFF1B\u4E0D\u4E2D\u65AD\u5DF2\u653E\u884C\u7684\u547D\u4EE4\uFF09",
910
950
  " /math <on|off> \u5207\u6362\u6570\u5B66\u516C\u5F0F\u6E32\u67D3\uFF08Unicode \u8F6C\u5199\uFF09",
911
951
  " /altscreen <on|off> \u5207\u6362\u7EC8\u7AEF\u5907\u7528\u5C4F\uFF08\u9ED8\u8BA4 on\uFF1Boff \u6539\u4E3A\u4E0E shell \u5171\u7528\u56DE\u6EDA\uFF09",
@@ -1567,13 +1607,23 @@ Use /switch, /switch list, /switch minimax-m3, or a full agent key.`,
1567
1607
  // 分享 OAuth agent 的 shell 会话授权确认(块 D):首次 execShell/
1568
1608
  // launchProcess 前弹。必须把三件事说清——这是谁的 agent / 命令在哪台
1569
1609
  // 设备哪个工作区跑 / 任意 shell 可读写该用户可访问的资源。
1610
+ // 子 run 的 per-call shell 确认(远程来源在本机跑一条命令):与会话授权同一套
1611
+ // 语义,参数为 runId / agentKey / owner / device / workspace / 权限提示。
1612
+ "shellPerCall.title": {
1613
+ en: "Allow a remote origin to run this command on this machine?",
1614
+ zh: "\u5141\u8BB8\u8FDC\u7A0B\u6765\u6E90\u5728\u672C\u673A\u6267\u884C\u8FD9\u6761\u547D\u4EE4\u5417\uFF1F"
1615
+ },
1616
+ "shellPerCall.body": {
1617
+ en: "A remote origin asked to run one shell command on this device.\nRun: {0}\nAgent: {1}\nOwner: {2}\nDevice: {3}\nWorkspace: {4}\n{5}\n\nShell commands can read/write anything this user can access. Approving covers this whole class: remote-origin shell confirmations stop asking one by one (this session and future starts). Undo with /shell-revoke or /auto remote off.",
1618
+ zh: "\u8FDC\u7A0B\u6765\u6E90\u8BF7\u6C42\u5728\u672C\u673A\u6267\u884C\u4E00\u6761 shell \u547D\u4EE4\u3002\nRun\uFF1A{0}\nAgent\uFF1A{1}\n\u4E3B\u4EBA\uFF1A{2}\n\u8BBE\u5907\uFF1A{3}\n\u5DE5\u4F5C\u533A\uFF1A{4}\n{5}\n\n\u4EFB\u610F shell \u547D\u4EE4\u53EF\u8BFB\u5199\u672C\u673A\u8BE5\u7528\u6237\u80FD\u8BBF\u95EE\u7684\u8D44\u6E90\u3002\u6279\u51C6\u540E\u300C\u8FDC\u7A0B\u6765\u6E90\u5728\u672C\u673A\u6267\u884C shell\u300D\u8FD9\u4E00\u7C7B\u786E\u8BA4\u4E0D\u518D\u9010\u6761\u8BE2\u95EE\uFF08\u672C\u6B21\u4E0E\u540E\u7EED\u542F\u52A8\u90FD\u751F\u6548\uFF09\u3002\u64A4\u9500\uFF1A/shell-revoke \u6216 /auto remote off\u3002"
1619
+ },
1570
1620
  "shellGrant.confirmTitle": {
1571
- en: "Allow shell commands for shared agent {0}?",
1572
- zh: "\u5141\u8BB8\u5206\u4EAB agent {0} \u6267\u884C shell \u547D\u4EE4\u5417\uFF1F"
1621
+ en: "Allow remote agent {0} to run shell commands on this machine?",
1622
+ zh: "\u5141\u8BB8\u8FDC\u7A0B agent {0} \u5728\u672C\u673A\u6267\u884C shell \u547D\u4EE4\u5417\uFF1F"
1573
1623
  },
1574
1624
  "shellGrant.confirmBody": {
1575
- en: "Agent {0} (owner {1}) asked to run shell commands on this device.\nDevice: {2} ({3})\nWorkspace: {4}\n\nShell commands can read/write anything this user can access. Allowed for the rest of this session; revoke any time with /shell-revoke.",
1576
- zh: "\u5206\u4EAB agent {0}\uFF08\u4E3B\u4EBA {1}\uFF09\u8BF7\u6C42\u5728\u672C\u673A\u6267\u884C shell \u547D\u4EE4\u3002\n\u8BBE\u5907\uFF1A{2}\uFF08{3}\uFF09\n\u5DE5\u4F5C\u533A\uFF1A{4}\n\n\u4EFB\u610F shell \u547D\u4EE4\u53EF\u8BFB\u5199\u672C\u673A\u8BE5\u7528\u6237\u80FD\u8BBF\u95EE\u7684\u5168\u90E8\u8D44\u6E90\u3002\u5141\u8BB8\u540E\u5728\u672C\u4F1A\u8BDD\u6301\u7EED\u6709\u6548\uFF1B\u968F\u65F6\u53EF\u7528 /shell-revoke \u64A4\u9500\u3002"
1625
+ en: "Remote agent {0} (owner {1}) requested to run a shell command on this machine.\nDevice: {2} ({3})\nWorkspace: {4}\nCommand: {5}\n\nShell commands can read/write anything this user can access. Approving covers this whole class: remote-origin shell confirmations stop asking one by one (this session and future starts). Undo with /shell-revoke (this session) or /auto remote off (also clears the saved grant).",
1626
+ zh: "\u8FDC\u7A0B agent {0}\uFF08\u4E3B\u4EBA {1}\uFF09\u8BF7\u6C42\u5728\u672C\u673A\u6267\u884C shell \u547D\u4EE4\u3002\n\u8BBE\u5907\uFF1A{2}\uFF08{3}\uFF09\n\u5DE5\u4F5C\u533A\uFF1A{4}\n\u547D\u4EE4\uFF1A{5}\n\n\u4EFB\u610F shell \u547D\u4EE4\u53EF\u8BFB\u5199\u672C\u673A\u8BE5\u7528\u6237\u80FD\u8BBF\u95EE\u7684\u8D44\u6E90\u3002\u6279\u51C6\u540E\u300C\u8FDC\u7A0B\u6765\u6E90\u5728\u672C\u673A\u6267\u884C shell\u300D\u8FD9\u4E00\u7C7B\u786E\u8BA4\u4E0D\u518D\u9010\u6761\u8BE2\u95EE\uFF08\u672C\u6B21\u4E0E\u540E\u7EED\u542F\u52A8\u90FD\u751F\u6548\uFF09\u3002\u64A4\u9500\uFF1A/shell-revoke\uFF08\u672C\u4F1A\u8BDD\uFF09\u6216 /auto remote off\uFF08\u540C\u65F6\u6E05\u9664\u6301\u4E45\u6388\u6743\uFF09\u3002"
1577
1627
  },
1578
1628
  "shellGrant.revoked": {
1579
1629
  en: "[nolo] Shell permission revoked for shared agents in this session.",
@@ -3,13 +3,13 @@ import {
3
3
  } from "./chunk-PSCNXBYA.js";
4
4
  import {
5
5
  MODEL_LOOKUP_MAP
6
- } from "./chunk-I4SN4NUQ.js";
6
+ } from "./chunk-TRW43TSC.js";
7
7
  import {
8
8
  ALL_MODELS
9
- } from "./chunk-RVWMAFIT.js";
9
+ } from "./chunk-FYYSDHVQ.js";
10
10
  import {
11
11
  isPlatformManagedProvider
12
- } from "./chunk-CHCS6XPJ.js";
12
+ } from "./chunk-CGFNDIKK.js";
13
13
  import {
14
14
  __commonJS,
15
15
  __require,
@@ -8,7 +8,7 @@ import {
8
8
  noloUploadRequest,
9
9
  noloWriteRequest,
10
10
  syncWithServers
11
- } from "./chunk-IJERIUXS.js";
11
+ } from "./chunk-WRCZXJ4N.js";
12
12
  import {
13
13
  getAllServers,
14
14
  getIsDesktopApp
@@ -17,7 +17,7 @@ import {
17
17
  selectIdentityToken,
18
18
  selectIdentityUser,
19
19
  selectIdentityUserId
20
- } from "./chunk-SEJ5OS6F.js";
20
+ } from "./chunk-PXYBUFDB.js";
21
21
  import {
22
22
  asOptionalPositiveFiniteNumber
23
23
  } from "./chunk-U6VC4MU4.js";
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  createSelector
3
- } from "./chunk-IJERIUXS.js";
3
+ } from "./chunk-WRCZXJ4N.js";
4
4
  import {
5
5
  getAllServers,
6
6
  getIsDesktopApp
@@ -5,7 +5,7 @@ import {
5
5
  getAntigravityUserAgent,
6
6
  readAntigravityProjectId,
7
7
  resolveAntigravityCloudCodeBaseUrl
8
- } from "./chunk-XZNCX52W.js";
8
+ } from "./chunk-JGRPBIZZ.js";
9
9
  import {
10
10
  asOptionalTrimmedString
11
11
  } from "./chunk-G3SUCT4W.js";
@@ -24,12 +24,6 @@ async function isDrainExhaustedResponse(response) {
24
24
  }
25
25
  }
26
26
 
27
- // packages/core/positiveFiniteNumberOrFallback.ts
28
- function parsePositiveFiniteNumberOrFallback(value, fallback) {
29
- const parsed = Number(value);
30
- return Number.isFinite(parsed) && parsed > 0 ? parsed : fallback;
31
- }
32
-
33
27
  // packages/core/retryAfterMs.ts
34
28
  function normalizeNonNegativeMs(value, fallbackMs) {
35
29
  const parsed = Number(value);
@@ -57,6 +51,5 @@ export {
57
51
  createDrainExhaustedResponse,
58
52
  isDrainExhaustedResponse,
59
53
  normalizeNonNegativeMs,
60
- parseRetryAfterHeaderMs,
61
- parsePositiveFiniteNumberOrFallback
54
+ parseRetryAfterHeaderMs
62
55
  };
@@ -4,12 +4,78 @@ import {
4
4
  import {
5
5
  canonicalizeToolNames
6
6
  } from "./chunk-5EBLANFT.js";
7
+ import {
8
+ BUILTIN_AGENT_CATALOG
9
+ } from "./chunk-LOEO7LRC.js";
10
+ import {
11
+ publicAgentKey
12
+ } from "./chunk-M2EJHDJP.js";
7
13
  import {
8
14
  estimateTokenCount
9
15
  } from "./chunk-PSCNXBYA.js";
16
+ import {
17
+ getModelConfig
18
+ } from "./chunk-TRW43TSC.js";
10
19
  import {
11
20
  asTrimmedString
12
21
  } from "./chunk-3EUW3WEO.js";
22
+ import {
23
+ asTrimmedLowercaseString
24
+ } from "./chunk-QSJ3HFEF.js";
25
+
26
+ // packages/core/gptProTier.ts
27
+ var GPT_PRO_REQUIRED_RECHARGE_AMOUNT = 199;
28
+ var SUPPORTED_TIER_PROVIDERS = /* @__PURE__ */ new Set([
29
+ "nolo",
30
+ "openai",
31
+ "deepinfra"
32
+ ]);
33
+ var CLAUDE_PREMIUM_RE = /^(?:anthropic\/)?claude-(opus|fable)(?:-\d+(?:[.-]\d+)*(?:-[a-z0-9]+)*)?$/i;
34
+ var GPT_PRO_RE = /^(?:openai\/)?gpt-[a-z0-9.-]+-pro(?:-[a-z0-9]+(?:[.-][a-z0-9]+)*)?$/i;
35
+ var GPT_SOL_RE = /^(?:openai\/)?gpt-\d+(?:\.\d+)*-sol(?:-[a-z0-9]+(?:[.-][a-z0-9]+)*)?$/i;
36
+ var GPT_ASTRA_RE = /^(?:openai\/)?gpt-\d+(?:\.\d+)*-astra(?:-[a-z0-9]+(?:[.-][a-z0-9]+)*)?$/i;
37
+ var KIMI_K3_MODELS = /* @__PURE__ */ new Set([
38
+ "kimi-k3",
39
+ "moonshotai/kimi-k3"
40
+ ]);
41
+ function classifyPremiumModel(model) {
42
+ const normalizedModel = asTrimmedLowercaseString(model);
43
+ if (!normalizedModel) return void 0;
44
+ const claudeMatch = CLAUDE_PREMIUM_RE.exec(normalizedModel);
45
+ if (claudeMatch) {
46
+ return claudeMatch[1].toLowerCase() === "opus" ? "claude-opus" : "claude-fable";
47
+ }
48
+ if (GPT_PRO_RE.test(normalizedModel)) {
49
+ return "gpt-pro";
50
+ }
51
+ if (GPT_SOL_RE.test(normalizedModel)) {
52
+ return "gpt-sol";
53
+ }
54
+ if (GPT_ASTRA_RE.test(normalizedModel)) {
55
+ return "gpt-astra";
56
+ }
57
+ if (KIMI_K3_MODELS.has(normalizedModel)) {
58
+ return "kimi-k3";
59
+ }
60
+ return void 0;
61
+ }
62
+ function isGptProModel(provider, model) {
63
+ const normalizedProvider = asTrimmedLowercaseString(provider);
64
+ if (!SUPPORTED_TIER_PROVIDERS.has(normalizedProvider)) {
65
+ return false;
66
+ }
67
+ return classifyPremiumModel(model) !== void 0;
68
+ }
69
+ var GPT_PRO_BLOCKED_MESSAGE = `GPT Pro / Kimi K3 \u7B49\u9AD8\u7EA7\u6A21\u578B\u9700\u8981\u5148\u5F00\u901A ${GPT_PRO_REQUIRED_RECHARGE_AMOUNT} \u79EF\u5206\u6863\u4F4D\u3002`;
70
+ function shouldBlockForGptPro(input) {
71
+ if (input?.premium !== true || input?.platformPaid !== true) {
72
+ return { blocked: false };
73
+ }
74
+ if (asTrimmedLowercaseString(input.gptProStatus) === "active") {
75
+ return { blocked: false };
76
+ }
77
+ return { blocked: true, message: GPT_PRO_BLOCKED_MESSAGE };
78
+ }
13
79
 
14
80
  // packages/agent-runtime/identityBlock.ts
15
81
  var buildIdentityBlock = (input) => {
@@ -29,6 +95,13 @@ var DELETE_SAFETY_RED_LINE = [
29
95
  "\u552F\u4E00\u4F8B\u5916\xB7\u53EF\u9A8C\u8BC1\u6062\u590D\u7684\u4EFB\u52A1\u6E05\u7406\uFF1A\u672C\u6B21\u4EFB\u52A1\u4EB2\u81EA\u521B\u5EFA/\u542F\u52A8\u3001\u4E14\u6E05\u7406\u524D\u5DF2\u7528\u5B9E\u9645\u547D\u4EE4\u9010\u9879\u9A8C\u8BC1\u300C\u8981\u5220\u7684\u5168\u90E8\u5185\u5BB9\u53E6\u6709\u5B8C\u6574\u526F\u672C\u3001\u5220\u4E86\u53EF\u65E0\u635F\u6062\u590D\u300D\u7684\u8D44\u6E90\uFF0C\u53EF\u514D\u4E8B\u524D\u6E05\u5355\u4E0E\u786E\u8BA4\uFF0C\u6E05\u7406\u540E\u5728\u6C47\u62A5\u4E2D\u9010\u9879\u5217\u660E\uFF1B\u7CBE\u786E\u5B9A\u4F4D\u4ECD\u5FC5\u987B\u3002\u4EC5\u9650\uFF1A\u2460 \u5DF2\u5B8C\u6574\u5408\u5165\u4FDD\u7559\u7684\u96C6\u6210\u5206\u652F\uFF08git merge-base --is-ancestor \u9A8C\u8BC1\uFF09\u7684\u672C\u5730\u5206\u652F\u4E0E worktree\uFF0C\u4E14\u9664 a)\u3001b) \u4E24\u7C7B\u5916\uFF0C`git status --porcelain --ignored` \u8F93\u51FA\u5FC5\u987B\u4E3A\u7A7A\uFF1Aa) `!! node_modules/`\u2014\u2014\u987B\u5148\u7528 find \u6838\u5B9E\u5176\u4E2D\u53EA\u6709\u6307\u5411\u672C worktree \u5185\u7684\u5DE5\u4F5C\u533A\u5305\u7B26\u53F7\u94FE\u63A5\u3001\u4EE5\u53CA\u53EA\u88C5\u8FD9\u7C7B\u94FE\u63A5\u7684 scope \u5BB9\u5668\u76EE\u5F55\uFF0C\u65E0\u4EFB\u4F55\u666E\u901A\u6587\u4EF6\u6216\u5176\u4ED6\u7C7B\u578B\u6761\u76EE\uFF0C\u94FE\u63A5\u65E0\u6CD5\u89E3\u6790\u5373\u4E0D\u901A\u8FC7\uFF1Bb) \u88AB\u5FFD\u7565\u7684**\u53EF\u518D\u751F\u6784\u5EFA\u4EA7\u7269**\uFF08\u5982 `*.tsbuildinfo`\u3001\u6784\u5EFA/\u7F16\u8BD1\u7F13\u5B58\uFF09\u2014\u2014\u987B\u9010\u9879\u5217\u51FA\u8DEF\u5F84\uFF0C\u5E76\u7ED9\u51FA\u80FD\u91CD\u65B0\u751F\u6210\u5B83\u7684**\u4ED3\u5E93\u5185\u65E2\u6709\u547D\u4EE4**\uFF08\u5F53\u6B21\u5B9E\u9645\u6267\u884C\u901A\u8FC7\uFF1B\u6307\u4E0D\u51FA\u547D\u4EE4\u6216\u8DD1\u4E0D\u901A\u7684\u4E00\u5F8B\u4E0D\u653E\u884C\uFF09\uFF0C\u786E\u8BA4\u53EF\u7531\u8BE5\u547D\u4EE4\u65E0\u635F\u518D\u751F\u3001\u4E0D\u542B\u552F\u4E00\u7ED3\u679C\u6216\u7528\u6237\u6570\u636E\u3001\u4E14\u4E0D\u662F\u624B\u5DE5\u6539\u52A8\u8FC7\u7684\u4EA7\u7269\uFF1B\u4E0B\u5217\u4E00\u5F8B\u4E0D\u5C5E\u6B64\u7C7B\uFF1A`.env*` \u7B49\u51ED\u8BC1\u3001`data/`\u3001`nolo/`\u3001`.nolo/`\u3001\u4EFB\u4F55\u6570\u636E\u5E93/LevelDB/WAL/\u5BA1\u8BA1/\u65E5\u5FD7/\u62A5\u544A/\u5BFC\u51FA\u76EE\u5F55\u3001`artifacts/`\u3001\u624B\u5DE5\u6539\u52A8\u8FC7\u7684 `dist/`\u3001`public/` \u4E0B\u7684\u4EA7\u7269\u76EE\u5F55\uFF1B\u300C\u5DF2\u88AB gitignore\u300D\u300C\u662F\u6784\u5EFA\u4EA7\u7269\u300D\u300C\u53EF\u91CD\u65B0\u6784\u5EFA\u300D\u7B49\u672A\u7ECF\u547D\u4EE4\u6838\u5B9E\u7684\u8BF4\u6CD5\u4E0D\u6784\u6210\u653E\u884C\u7406\u7531\u3002\u6CE8\u610F `git worktree remove` \u4E0D\u4F1A\u56E0 ignored \u5185\u5BB9\u800C\u62D2\u7EDD\uFF08\u4F1A\u8FDE\u5176\u4E00\u5E76\u5220\u9664\uFF09\uFF0C\u672C\u4F8B\u5916\u6CA1\u6709\u673A\u68B0\u515C\u5E95\uFF0C\u4E0A\u8FF0\u9010\u9879\u6838\u5B9E\u662F\u552F\u4E00\u9632\u7EBF\uFF1B\u53EA\u7528\u4E0D\u5E26 --force \u7684 git worktree remove \u4E0E git branch -d\uFF0C\u7981\u6B62 -D\u3001--force\u3001rm -rf \u66FF\u4EE3\uFF1B\u2461 \u672C\u6B21\u521B\u5EFA\u3001\u5185\u5BB9\u53EA\u662F\u53EF\u518D\u751F\u4E2D\u95F4\u4EA7\u7269\uFF08\u65E5\u5FD7\u3001\u63A2\u9488\u811A\u672C\u3001\u622A\u56FE\u3001\u6784\u5EFA\u7F13\u5B58\uFF09\u7684 /tmp \u6587\u4EF6\uFF0C\u542B\u552F\u4E00\u7ED3\u679C\u6216\u7528\u6237\u6570\u636E\u7684\u4E0D\u7B97\uFF1B\u2462 \u672C\u6B21\u542F\u52A8\u3001\u6309\u5F53\u6B21\u8BB0\u5F55\u7684 PID \u6838\u5B9E\u8EAB\u4EFD\u3001\u7EC8\u6B62\u4E0D\u4E22\u672A\u4FDD\u5B58\u72B6\u6001\u7684\u540E\u53F0\u8FDB\u7A0B\u3002\u201C\u6709\u5907\u4EFD\u201D\u201C\u5728 /tmp\u201D\u201C\u5DF2\u5408\u5E76\u201D\u7B49\u672A\u7ECF\u547D\u4EE4\u6838\u5B9E\u7684\u5224\u65AD\u4E0D\u6784\u6210\u9A8C\u8BC1\uFF1B\u4EFB\u4E00\u9879\u65E0\u6CD5\u9A8C\u8BC1\uFF0C\u4E00\u5F8B\u56DE\u5230\u4E0A\u9762\u7684\u786E\u8BA4\u6D41\u7A0B\u3002\u7528\u6237\u6570\u636E\u3001\u8FDC\u7AEF/\u5E73\u53F0\u5185\u5BB9\u3001\u4ED6\u4EBA\u6216\u65E2\u6709\u7684\u6587\u4EF6\u3001\u5206\u652F\u3001stash \u6C38\u8FDC\u4E0D\u9002\u7528\u6B64\u4F8B\u5916\u3002"
30
96
  ].join("\n");
31
97
 
98
+ // packages/agent-runtime/credentialHygiene.ts
99
+ var CREDENTIAL_HYGIENE_RULE = `--- \u51ED\u636E\u7EAA\u5F8B ---
100
+ - \u9700\u8981\u4EFB\u4F55\u51ED\u636E / API key \u65F6\uFF1A\u5148 \`nolo secret list --json\` \u770B\u5DF2\u6709\u6761\u76EE\uFF08\u53EA\u51FA\u540D\u5B57\u4E0E\u5F62\u6001\uFF0C\u4E0D\u542B\u503C\uFF09\uFF0C\u518D\u7528 \`nolo secret run --with <name> -- <cmd>\` \u6CE8\u5165\u73AF\u5883\u53D8\u91CF\u6267\u884C\uFF1B\u4E0D\u8981\u5728\u547D\u4EE4\u884C\u91CC\u62FC\u63A5\u5BC6\u94A5\u503C\u3002
101
+ - \u65B0\u589E\u51ED\u636E\uFF1A\u8BF7\u7528\u6237\u672C\u4EBA\u6267\u884C \`nolo secret set <name> <value>\`\uFF08\u503C\u4E0D\u8981\u7ECF\u8FC7 agent \u7684\u547D\u4EE4\u884C\u6216\u56DE\u590D\uFF09\uFF0C\u4E4B\u540E\u7167\u5E38\u7528 \`run --with\` \u4F7F\u7528\u3002
102
+ - \u7981\u6B62\u628A\u5BC6\u94A5\u5199\u8FDB\u6587\u4EF6\uFF08\u542B \`~/.config/*.env\`\uFF09\u3001\u7981\u6B62\u5728\u53C2\u6570\u6216\u56DE\u590D\u91CC\u56DE\u663E\uFF1B\`nolo secret get\` \u4E0E\u76F4\u63A5\u8BFB\u53D6 \`$NOLO_HOME/credentials/secrets.json\` \u5747\u4EC5\u4F9B\u4EBA\u5DE5\u8C03\u8BD5\uFF0CAgent \u4E0D\u5F97\u8BFB\u53D6\u3002
103
+ - \u7528\u6237\u628A\u5BC6\u94A5\u76F4\u63A5\u8D34\u8FDB\u5BF9\u8BDD\u65F6\uFF1A\u7167\u5E38\u4F7F\u7528\uFF0C\u4F46\u63D0\u9192\u4E8B\u540E\u8F6E\u6362\uFF0C\u5E76\u63D0\u793A\u7528\u6237\u628A\u5B83\u8FC1\u8FDB \`nolo secret\`\u3002`;
104
+
32
105
  // packages/agent-runtime/parallelDispatchDefault.ts
33
106
  var PARALLEL_DISPATCH_DEFAULT_RULE = [
34
107
  "\u3010\u5E76\u884C\u662F\u9ED8\u8BA4 \xB7 \u6D3E\u53D1\u7EAA\u5F8B\u3011",
@@ -51,6 +124,101 @@ var PLATFORM_RISK_CONTROL_RULE = [
51
124
  "\u8FD9\u4E9B\u662F\u964D\u4F4E\u8BEF\u5224\u6982\u7387\u4E0E\u63D0\u9AD8\u53EF\u9760\u6027\u7684\u64CD\u4F5C\u8981\u6C42\uFF0C\u4E0D\u627F\u8BFA\u5E73\u53F0\u4E00\u5B9A\u5982\u4F55\u5904\u7F6E\uFF1B\u5177\u4F53\u98CE\u63A7\u4EE5\u5E73\u53F0\u63D0\u793A\u4E0E\u5F53\u6B21\u5B9E\u6D4B\u4E3A\u51C6\u3002"
52
125
  ].join("\n");
53
126
 
127
+ // packages/core/consultantTier.ts
128
+ var USER_OWN_BILLING_SOURCES = [
129
+ "user_subscription",
130
+ "user_api",
131
+ "owner_subscription",
132
+ "local"
133
+ ];
134
+ var isUserOwnChannelBilling = (source) => USER_OWN_BILLING_SOURCES.includes(source);
135
+ var PLATFORM_CONSULTANT_BILLING_SOURCE = "platform_credits";
136
+ var CONSULTANT_TIER_MODEL_IDS = [
137
+ "anthropic/claude-fable-5-1",
138
+ "gpt-6-astra",
139
+ "anthropic/claude-opus-5-5",
140
+ "kimi-k3",
141
+ "gpt-6.1-sol"
142
+ ];
143
+ var readModelDisplayName = (model) => {
144
+ try {
145
+ const config = getModelConfig("nolo", model);
146
+ return config.displayName?.trim() || model;
147
+ } catch {
148
+ return model;
149
+ }
150
+ };
151
+ var readModelPrice = (model) => {
152
+ try {
153
+ const config = getModelConfig("nolo", model);
154
+ const price = config?.price;
155
+ return {
156
+ input: typeof price?.input === "number" ? price.input : null,
157
+ output: typeof price?.output === "number" ? price.output : null
158
+ };
159
+ } catch {
160
+ return { input: null, output: null };
161
+ }
162
+ };
163
+ var readModelSupportsTool = (model) => {
164
+ try {
165
+ const config = getModelConfig("nolo", model);
166
+ return typeof config.supportsTool === "boolean" ? config.supportsTool : null;
167
+ } catch {
168
+ return null;
169
+ }
170
+ };
171
+ var lookupConsultantAgentKey = (model) => {
172
+ const entry = BUILTIN_AGENT_CATALOG.find((item) => item.model === model);
173
+ if (!entry) return null;
174
+ return publicAgentKey(entry.id);
175
+ };
176
+ var resolveConsultantTier = () => CONSULTANT_TIER_MODEL_IDS.map((model) => {
177
+ const price = readModelPrice(model);
178
+ return {
179
+ model,
180
+ displayName: readModelDisplayName(model),
181
+ agentKey: lookupConsultantAgentKey(model),
182
+ inputCreditsPerMTokens: price.input,
183
+ outputCreditsPerMTokens: price.output,
184
+ requiresProTier: isGptProModel("nolo", model),
185
+ supportsTool: readModelSupportsTool(model),
186
+ billingSource: PLATFORM_CONSULTANT_BILLING_SOURCE
187
+ };
188
+ });
189
+ var resolveDispatchableConsultantTier = () => resolveConsultantTier().filter(
190
+ (entry) => typeof entry.agentKey === "string" && entry.agentKey.length > 0
191
+ );
192
+
193
+ // packages/agent-runtime/consultationMode.ts
194
+ function buildConsultationModeBlock() {
195
+ const dispatchable = resolveDispatchableConsultantTier();
196
+ const noDispatchableEntries = dispatchable.length === 0;
197
+ const targets = noDispatchableEntries ? resolveConsultantTier() : dispatchable;
198
+ const targetLines = targets.map((entry) => {
199
+ const pricing = entry.inputCreditsPerMTokens === null || entry.outputCreditsPerMTokens === null ? "\u4EF7\u76EE\u672A\u77E5\uFF1B\u4E0D\u5F97\u5047\u8BBE\u514D\u8D39\u6216\u989D\u5EA6\u8DB3\u591F\uFF0C\u987B\u5148\u544A\u77E5\u7528\u6237\u8D39\u7528\u672A\u77E5\u5E76\u8BE2\u95EE\u3002" : `\u79EF\u5206\u4EF7\u76EE\uFF1Ainput ${entry.inputCreditsPerMTokens} / output ${entry.outputCreditsPerMTokens} \u79EF\u5206 / 1M tokens\u3002`;
200
+ const key = entry.agentKey ? `\uFF0CagentKey: ${entry.agentKey}` : "\uFF0C\u5F53\u524D\u65E0\u53EF\u6D3E\u53D1 agentKey";
201
+ const pro = entry.requiresProTier ? "\u9700\u5F00\u901A 199 \u79EF\u5206\u6863\u4F4D\u6216\u8D26\u6237\u4FDD\u6301\u6709\u6548\u4F59\u989D\uFF08\u2265 19 \u79EF\u5206\uFF09\uFF1B\u672A\u8FBE\u6807\u4F1A\u88AB\u670D\u52A1\u7AEF\u4EE5 402\uFF08gpt_pro_tier_required\uFF09\u62D2\u7EDD\u3002" : "\u4E0D\u9700\u8981\u7279\u5B9A\u5145\u503C\u6863\u4F4D\u95E8\u69DB\u3002";
202
+ const capability = entry.supportsTool === true ? "\u652F\u6301\u5DE5\u5177\u8C03\u7528\uFF0C\u53EF\u63A5\u5DE5\u5177\u578B\u5B50\u4EFB\u52A1\u3002" : entry.supportsTool === false ? "\u4E0D\u652F\u6301\u5DE5\u5177\u8C03\u7528\uFF0C\u53EA\u80FD\u4F5C\u4E3A\u987E\u95EE\u63D0\u4F9B\u65B9\u6848\uFF1B\u7531\u5F53\u524D agent \u52A8\u624B\u6267\u884C\uFF0C\u4E0D\u5F97\u58F0\u79F0\u5B50 run \u5DF2\u5B8C\u6210\u6539\u52A8\u3002" : "\u5DE5\u5177\u80FD\u529B\u672A\u58F0\u660E\uFF1B\u4F18\u5148\u6D3E\u5B83\u505A\u9700\u8981\u63A8\u7406/\u5224\u65AD\u7684\u90E8\u5206\uFF1B\u9700\u8981\u6539\u52A8\u843D\u5730\u65F6\u7531\u5F53\u524D agent \u6267\u884C\uFF0C\u4E0D\u627F\u8BFA\u5B83\u80FD\u8C03\u7528\u5DE5\u5177\u3002";
203
+ const billing = isUserOwnChannelBilling(entry.billingSource) ? "\u7528\u6237\u81EA\u5E26\u901A\u9053\uFF0C\u4E0D\u6D88\u8017\u5E73\u53F0\u79EF\u5206\u3002" : entry.billingSource === PLATFORM_CONSULTANT_BILLING_SOURCE ? "\u5E73\u53F0\u6258\u7BA1\u987E\u95EE\u6863\uFF0C\u6D88\u8017\u5E73\u53F0\u79EF\u5206\u3002" : "\u8BA1\u8D39\u6765\u6E90\u672A\u77E5\uFF1B\u4E0D\u5F97\u58F0\u79F0\u4E0D\u6D88\u8017\u5E73\u53F0\u79EF\u5206\u3002";
204
+ return `- ${entry.displayName}\uFF08model: ${entry.model}${key}\uFF09\uFF1A${billing} ${pricing} ${pro} ${capability}`;
205
+ });
206
+ return [
207
+ "\u3010\u8BF7\u6559\u6A21\u5F0F \xB7 \u987E\u95EE\u6863\u8BF7\u6559\u3011",
208
+ "\u5F53\u540C\u4E00\u95EE\u9898\u53CD\u590D\u5931\u8D25\u3001\u5DE5\u5177\u6216\u80FD\u529B\u4E0D\u8DB3\uFF0C\u6216\u660E\u786E\u8D85\u51FA\u5F53\u524D\u6A21\u578B\u80FD\u529B\u65F6\uFF0C\u4E3B\u52A8\u53D1\u8D77\u8BF7\u6559\uFF1B\u4E0D\u8BB8\u786C\u625B\u3001\u4E0D\u8BB8\u7F16\u9020\u7B54\u6848\u3001\u4E0D\u8BB8\u6084\u6084\u964D\u7EA7\u3002",
209
+ "\u5347\u7EA7\u524D\u5148\u5224\u65AD\u7528\u6237\u662F\u5426\u5DF2\u6709\u53EF\u7528\u7684\u81EA\u5E26\u6863\u4F4D\uFF1A\u82E5 listAgents \u53EF\u7528\uFF0C\u67E5\u770B\u5176 billingSource \u4E3A user_subscription\u3001user_api\u3001owner_subscription \u6216 local \u7684\u5DF2\u6536\u85CF/\u62E5\u6709 agent\uFF0C\u5E76\u4F18\u5148\u6D3E\u53D1\u8BE5\u7528\u6237\u81EA\u5E26\u901A\u9053\u7684 agent\u3002\u7528\u6237\u81EA\u5E26\u901A\u9053\u4E0D\u6D88\u8017\u5E73\u53F0\u79EF\u5206\uFF0C\u4E0D\u9700\u8D70\u5E73\u53F0\u79EF\u5206\u786E\u8BA4\u3002\u4E0D\u5F97\u628A\u7528\u6237\u901A\u9053\u7684\u7528\u91CF\u8BF4\u6210\u5E73\u53F0\u79EF\u5206\u3002",
210
+ "\u82E5\u5F53\u524D\u6CA1\u6709 listAgents \u5DE5\u5177\uFF0C\u4E0D\u5F97\u63A8\u65AD\u7528\u6237\u6709\u6216\u6CA1\u6709\u81EA\u5E26\u901A\u9053\uFF1B\u5148\u7528 ask_user \u8BE2\u95EE\u201C\u4F60\u5DF2\u6709\u81EA\u5E26\u901A\u9053\u7684\u6863\u4F4D\u5417\uFF1F\u201D\uFF0C\u6216\u5728\u660E\u786E\u544A\u77E5\u5E73\u53F0\u79EF\u5206\u8D39\u7528\u540E\u518D\u8BE2\u95EE\u662F\u5426\u4F7F\u7528\u5E73\u53F0\u6258\u7BA1\u987E\u95EE\u6863\u3002",
211
+ "\u53EA\u6709\u786E\u8BA4\u6CA1\u6709\u53EF\u7528\u7528\u6237\u81EA\u5E26\u901A\u9053\u540E\uFF0C\u624D\u8003\u8651\u5E73\u53F0\u6258\u7BA1\u987E\u95EE\u6863\uFF1B\u5E73\u53F0\u6258\u7BA1\u6863\u6D88\u8017\u5E73\u53F0\u79EF\u5206\uFF0C\u5FC5\u987B\u7528 ask_user \u4E3B\u52A8\u544A\u77E5\u79EF\u5206\u4EF7\u76EE\u5E76\u8BE2\u95EE\u3002",
212
+ ...noDispatchableEntries ? ["\u5F53\u524D\u987E\u95EE\u6863\u6CA1\u6709\u53EF\u6D3E\u53D1\u5165\u53E3\uFF1B\u4EE5\u4E0B\u662F\u987E\u95EE\u6863\u4FE1\u606F\uFF0C\u4EC5\u4F9B\u8BF4\u660E\uFF0C\u4E0D\u5F97\u7F16\u9020 agentKey \u6216\u5C1D\u8BD5\u6D3E\u53D1\u3002"] : [],
213
+ ...targetLines.length ? targetLines : ["\u5F53\u524D\u6CA1\u6709\u987E\u95EE\u6863\u6761\u76EE\u3002"],
214
+ "\u989D\u5EA6\u95E8\u69DB\uFF1A\u81EA\u52A8\u6267\u884C\u989D\u5EA6\uFF08\u79EF\u5206\uFF09\u5B57\u6BB5\u4E3A autoApproveCredits\uFF0C\u7531\u670D\u52A1\u7AEF\u72EC\u5360\u5199\u5165\u3002\u53EA\u6709\u7528\u6237\u65E0\u81EA\u5E26\u901A\u9053\u3001\u6B63\u5728\u8003\u8651\u5E73\u53F0\u79EF\u5206\u6863\u65F6\uFF0C\u989D\u5EA6\u53EF\u77E5\u4E14\u9884\u4F30\u6D88\u8017 \u2264 \u989D\u5EA6\u624D\u53EF\u514D\u95EE\uFF1B\u989D\u5EA6\u4E0D\u53EF\u77E5\u65F6\u9ED8\u8BA4\u6BCF\u6B21\u90FD\u95EE\u3002",
215
+ "\u7528\u6237\u540C\u610F\u540E\uFF0C\u4EC5\u5728\u5B58\u5728\u771F\u5B9E agentKey \u65F6\u7528 startAgentRun \u6D3E\u53D1\uFF1B\u4EC5\u4F20\u9012\u5361\u4F4F\u7684\u5B50\u95EE\u9898\u548C\u5FC5\u8981\u4E0A\u4E0B\u6587\u3002supportsTool=false \u7684\u987E\u95EE\u53EA\u51FA\u65B9\u6848\uFF0C\u7531\u5F53\u524D agent \u6267\u884C\uFF1BsupportsTool=true \u7684\u987E\u95EE\u53EF\u63A5\u5DE5\u5177\u578B\u5B50\u4EFB\u52A1\uFF1B\u80FD\u529B\u672A\u77E5\u65F6\u4E0D\u5F97\u58F0\u79F0\u53EF\u6267\u884C\u5DE5\u5177\u4EFB\u52A1\u3002\u7ED3\u8BBA\u4E00\u5F8B\u7531\u5F53\u524D agent \u6C47\u603B\u4EA4\u4ED8\uFF0C\u4E0D\u8F6C\u4EA4\u539F\u59CB\u8F93\u51FA\u3002",
216
+ "\u82E5\u5B50 run \u56E0 402 \u6216 gpt_pro_tier_required \u5931\u8D25\uFF0C\u5982\u5B9E\u544A\u77E5\u7528\u6237\u9700\u5F00\u901A\u9AD8\u9636\u6863\u4F4D\u6216\u5145\u503C\u4F7F\u8D26\u6237\u4F59\u989D\u8FBE\u5230 19 \u79EF\u5206\u4EE5\u4E0A\uFF1B\u4E0D\u5F97\u5047\u88C5\u6210\u529F\u6216\u53CD\u590D\u91CD\u8BD5\u3002",
217
+ "\u7981\u6B62\u64C5\u81EA\u4FEE\u6539\u5F53\u524D agent \u7684 model/provider\uFF1B\u5185\u7F6E nolo \u7684 provider/model \u7531\u4EE3\u7801\u6258\u7BA1\u3002",
218
+ "ask_user \u5728\u5F53\u524D\u5BBF\u4E3B\u4E0D\u53EF\u7528\u65F6\uFF0C\u964D\u7EA7\u4E3A\u666E\u901A\u6587\u5B57\u8BE2\u95EE\uFF0C\u4E0D\u5F97\u56E0\u6B64\u5361\u4F4F\u3002"
219
+ ].join("\n");
220
+ }
221
+
54
222
  // packages/agent-runtime/contextLayerContract.ts
55
223
  var buildContextLayerContractBlock = (options = {}) => {
56
224
  const lines = [
@@ -488,6 +656,55 @@ function detectDispatchIntentFromMessages(messages) {
488
656
  return false;
489
657
  }
490
658
 
659
+ // packages/agent-runtime/responseGuidelines.ts
660
+ var RESPONSE_BEHAVIOR_GUIDELINES = `--- \u56DE\u590D\u884C\u4E3A\u51C6\u5219\uFF08\u8DE8\u7AEF\u901A\u7528\uFF09 ---
661
+ \u4EE5\u4E0B\u662F\u6240\u6709\u56DE\u590D\u5171\u4EAB\u7684\u884C\u4E3A\u57FA\u7EBF\uFF0C\u4E0E\u5F53\u524D\u89C6\u53E3\u3001\u6392\u7248\u65E0\u5173\uFF1A
662
+ - **\u4FE1\u606F\u4F18\u5148\u7EA7**\uFF1A\u5148\u7ED9\u5F53\u524D\u6700\u6709\u7528\u7684\u4FE1\u606F\u2014\u2014\u7ED3\u8BBA\u3001\u7ED3\u679C\u3001\u72B6\u6001\u6216\u4E0B\u4E00\u6B65\u52A8\u4F5C\uFF08\u4E0B\u4E00\u6B65\u52A8\u4F5C\u53EA\u5728\u95EE\u9898\u672C\u8EAB\u6D89\u53CA\u884C\u52A8\u65F6\u624D\u7ED9\uFF0C\u89C1\u300C\u884C\u52A8\u4E0E\u63D0\u9192\u300D\uFF09\uFF0C\u6309\u4EFB\u52A1\u7C7B\u578B\u9009\u5176\u4E00\uFF1B\u4E0D\u7528\u5BD2\u6684\u3001\u94FA\u57AB\u6216\u300C\u8BA9\u6211\u5206\u6790\u4E00\u4E0B\u300D\u5F00\u573A\u3002
663
+ - **\u4E3B\u52A8\u9884\u5224**\uFF1A\u5728\u4E0A\u4E0B\u6587\u91CC\u80FD\u9884\u5224\u5230\u7684\u4E0B\u4E00\u6B65\u3001\u98CE\u9669\u6216\u7701\u4E8B\u505A\u6CD5\uFF0C\u4E3B\u52A8\u7528\u4E00\u53E5\u8BDD\u8BF4\u51FA\uFF08\u5305\u62EC\u65F6\u95F4\u3001\u8FDB\u5EA6\u3001\u72B6\u6001\u63D0\u9192\uFF09\uFF1B\u9884\u5224\u662F\u63D0\u8BAE\u800C\u975E\u51B3\u5B9A\uFF0C\u4E0D\u5FC5\u7B49\u7528\u6237\u95EE\u3002\u4E0A\u6587\u300C\u4E0D\u7528\u5BD2\u6684\u300D\u53CD\u7684\u662F\u7A7A\u8BDD\uFF0C\u4E0D\u662F\u8FD9\u7C7B\u6709\u4FE1\u606F\u91CF\u7684\u4E3B\u52A8\u63D0\u9192\u3002\u4EC5\u5728\u63D0\u9192\u4E0E\u5F53\u524D\u95EE\u9898\u76F4\u63A5\u76F8\u5173\u3001\u4E14\u80FD\u6539\u53D8\u7528\u6237\u773C\u4E0B\u7684\u5224\u65AD\u6216\u64CD\u4F5C\u65F6\u8865\u5145\uFF1B\u6CA1\u6709\u5177\u4F53\u4F9D\u636E\u7684\u901A\u7528\u5EFA\u8BAE\u4E0D\u9644\u9001\u3002
664
+ - **\u4F4E\u8D1F\u8377\u8868\u8FBE**\uFF1A\u4E00\u53E5\u4E00\u4E8B\uFF0C\u4E3B\u8BED\u660E\u786E\u3001\u7528\u5177\u4F53\u52A8\u8BCD\uFF0C\u540C\u4E00\u6982\u5FF5\u59CB\u7EC8\u7528\u540C\u4E00\u672F\u8BED\uFF1B\u5220\u53BB\u5957\u8BDD\u4E0E\u5D4C\u5957\u4ECE\u53E5\uFF0C\u4F46\u4E0D\u5220\u524D\u63D0\u3001\u98CE\u9669\u4E0E\u4E0D\u786E\u5B9A\u6027\u2014\u2014\u8BA9\u7528\u6237\u80FD\u5FEB\u901F\u6838\u67E5\u548C\u51B3\u7B56\uFF0C\u800C\u4E0D\u662F\u4FE1\u606F\u53D8\u5C11\u3002\u9700\u8981\u5C55\u5F00\u65F6\u6309\u4E3B\u9898\u5206\u6210\u77ED\u6BB5\u843D\uFF0C\u6BB5\u843D\u4E4B\u95F4\u7559\u7A7A\u884C\uFF1B\u8FDE\u7EED\u64CD\u4F5C\u7528\u6709\u5E8F\u5217\u8868\uFF1B\u6B64\u8981\u6C42\u4E0D\u4F9D\u8D56\u89C6\u53E3\u3002
665
+ - **\u4EFB\u52A1\u8FDE\u7EED\u6027**\uFF1A\u591A\u6B65\u9AA4\u4EFB\u52A1\u4FDD\u6301\u5F53\u524D\u72B6\u6001\u4E0E\u4E0B\u4E00\u6B65\u53EF\u89C1\uFF1B\u4EC5\u5728\u72B6\u6001\u53D8\u5316\u3001\u4ECE\u4E2D\u65AD/\u540E\u53F0\u4EFB\u52A1\u6062\u590D\u6216\u4E0A\u4E0B\u6587\u53EF\u80FD\u4E22\u5931\u65F6\u91CD\u8FF0\u8FDB\u5EA6\uFF0C\u4E0D\u673A\u68B0\u91CD\u590D\u3002
666
+ - **\u4E13\u6CE8\u4E3B\u7EBF\uFF08\u6C9F\u901A\u7126\u70B9\uFF0C\u975E\u8C03\u5EA6\uFF09**\uFF1A\u53D1\u73B0\u6B21\u8981\u95EE\u9898\u4E0D\u5207\u6362\u4E3B\u7EBF\uFF0C\u9664\u975E\u5B83\u963B\u585E\u6B63\u786E\u6027\u3001\u5B89\u5168\u6027\u6216\u5F53\u524D\u4EFB\u52A1\u672C\u8EAB\uFF1B\u503C\u5F97\u5904\u7406\u7684\u6B21\u8981\u9879\uFF0C\u5728\u4E3B\u7EBF\u5B8C\u6210\u540E\u7B80\u77ED\u6307\u51FA\u3002\u672C\u6761\u53EA\u7EA6\u675F**\u56DE\u590D\u7684\u53D9\u8FF0\u7126\u70B9**\uFF08\u5148\u8BB2\u4E3B\u7EBF\u3001\u65C1\u652F\u9760\u540E\uFF09\uFF0C\u4E0D\u662F\u6267\u884C\u8C03\u5EA6\uFF1A\u5B83\u4E0D\u8981\u6C42\u628A\u53EF\u72EC\u7ACB\u5E76\u884C\u7684\u65E0\u4F9D\u8D56\u5DE5\u4F5C\u4E32\u884C\u5316\uFF0C\u4E5F\u4E0D\u7981\u6B62\u5728\u4E3B\u7EBF\u672A\u5B8C\u6210\u65F6\u5E76\u53D1\u63A8\u8FDB\u5176\u5B83\u4EFB\u52A1\uFF08\u5982\u53E6\u4E00 worktree \u7684\u72EC\u7ACB\u6539\u52A8\uFF09\uFF1B\u51E1\u662F\u6587\u4EF6/\u6570\u636E/\u63A5\u53E3\u65E0\u4EA4\u96C6\u7684\u72EC\u7ACB\u6388\u6743\u5DE5\u4F5C\uFF0C\u9ED8\u8BA4\u5E76\u884C\uFF0C\u53EA\u5728\u6C47\u62A5\u65F6\u6309\u4E3B\u7EBF\u4F18\u5148\u7EC4\u7EC7\u3002
667
+ - **\u9519\u8BEF\u4E8B\u5B9E\u5316**\uFF1A\u51FA\u9519\u65F6\u76F4\u63A5\u8BF4\u660E\u53D1\u751F\u4E86\u4EC0\u4E48\u3001\u5DF2\u77E5\u539F\u56E0\u6216\u4ECD\u4E0D\u786E\u5B9A\u4E4B\u5904\u3001\u5F53\u524D\u5F71\u54CD\u4E0E\u4E0B\u4E00\u6B65\uFF08\u540C\u300C\u884C\u52A8\u4E0E\u63D0\u9192\u300D\uFF1A\u4EC5\u5F53\u95EE\u9898\u6D89\u53CA\u884C\u52A8\u65F6\u624D\u7ED9\uFF09\uFF1B\u4E0D\u7528\u65E0\u4FE1\u606F\u91CF\u7684\u60C5\u7EEA\u5316\u63AA\u8F9E\uFF0C\u4E5F\u4E0D\u628A\u4E0D\u786E\u5B9A\u6027\u5305\u88C5\u6210\u7ED3\u8BBA\u3002
668
+ - **\u7406\u89E3\u5931\u8D25\u6062\u590D**\uFF1A\u7528\u6237\u8868\u793A\u6CA1\u61C2\u3001\u6CA1\u8DDF\u4E0A\u6216\u8981\u6C42\u6362\u79CD\u8BF4\u6CD5\u65F6\uFF0C\u56DE\u9000\u5230\u6700\u53EF\u80FD\u7F3A\u5931\u7684\u524D\u63D0\u91CD\u65B0\u89E3\u91CA\uFF0C\u800C\u4E0D\u662F\u53EA\u7F29\u77ED\u6216\u91CD\u590D\u4E0A\u4E00\u6761\uFF1B\u4F18\u5148\u590D\u7528\u5BF9\u8BDD\u4E0E\u9879\u76EE\u8D44\u6599\u4E2D\u5DF2\u5EFA\u7ACB\u7684\u672F\u8BED\uFF0C\u672F\u8BED\u672C\u8EAB\u53EF\u80FD\u9020\u6210\u56F0\u60D1\u65F6\u5148\u7B80\u77ED\u5B9A\u4E49\u3002
669
+ - **\u672F\u8BED\u5C31\u5730\u89E3\u91CA**\uFF1A\u53EA\u89E3\u91CA\u7528\u6237\u53EF\u80FD\u4E0D\u719F\u3001\u4E14\u65E0\u6CD5\u4ECE\u4E0A\u4E0B\u6587\u63A8\u65AD\u7684\u4E13\u4E1A\u672F\u8BED\u6216\u5E73\u53F0\u6982\u5FF5\uFF0C\u9996\u6B21\u51FA\u73B0\u65F6\u5C31\u5730\u8865\u4E00\u53E5\u65E5\u5E38\u8BDD\u8BF4\u660E\u5B83\u662F\u4EC0\u4E48\u3001\u5F71\u54CD\u4EC0\u4E48\uFF1B\u7528\u6237\u672C\u8F6E\u5DF2\u8868\u73B0\u51FA\u7406\u89E3\u7684\u8BCD\u4E0D\u91CD\u590D\u89E3\u91CA\uFF0C\u9879\u76EE\u8D44\u6599\u5DF2\u6709\u5B9A\u4E49\u65F6\u4F18\u5148\u6CBF\u7528\u8BE5\u5B9A\u4E49\u3001\u4F46\u4E0D\u80FD\u4EC5\u56E0\u8D44\u6599\u5B9A\u4E49\u8FC7\u5C31\u5047\u5B9A\u7528\u6237\u5DF2\u7406\u89E3\u3002\u901A\u5E38\u4F18\u5148\u89E3\u91CA\u4E00\u4E24\u4E2A\u6700\u5F71\u54CD\u5F53\u524D\u5224\u65AD\u7684\u672F\u8BED\uFF0C\u5B8C\u6210\u5F53\u524D\u95EE\u9898\u6240\u5FC5\u9700\u7684\u6982\u5FF5\u4E0D\u53D7\u6570\u91CF\u9650\u5236\uFF1B\u4F46\u7528\u6237\u8868\u793A\u6CA1\u61C2\u3001\u6CA1\u8DDF\u4E0A\u3001\u8981\u6C42\u6362\u79CD\u8BF4\u6CD5\u65F6\u91CD\u8BB2\u8BE5\u672F\u8BED\u4E0D\u53D7\u672C\u6761\u9650\u5236\uFF08\u89C1\u300C\u7406\u89E3\u5931\u8D25\u6062\u590D\u300D\u7684\u5168\u90E8\u89E6\u53D1\u6761\u4EF6\uFF09\uFF1B\u975E\u5F53\u524D\u95EE\u9898\u5FC5\u9700\u7684\u672F\u8BED\u4E0D\u5C55\u5F00\uFF0C\u5FC5\u8981\u65F6\u518D\u8865\uFF0C\u4F46\u4E0D\u5F97\u4E3A\u63A7\u5236\u89E3\u91CA\u6570\u91CF\u800C\u7701\u7565\u7406\u89E3\u7ED3\u8BBA\u3001\u6838\u67E5\u53E3\u5F84\u6216\u6267\u884C\u6B65\u9AA4\u6240\u5FC5\u9700\u7684\u8BF4\u660E\u3002
670
+ - **\u4E8B\u5B9E\u4E0D\u7FFB\u8BD1**\uFF1A\u62A5\u9519\u539F\u6587\u3001\u6807\u8BC6\u7B26\u3001\u6587\u4EF6\u8DEF\u5F84\u3001\u547D\u4EE4\u4E0E\u53C2\u6570\u3001\u5B57\u6BB5\u540D\u3001\u6570\u503C\u4FDD\u6301\u539F\u6837\uFF1A\u5355\u884C\u7684\u7528\u884C\u5185\u53CD\u5F15\u53F7\uFF0C\u591A\u884C\u62A5\u9519\u6216\u547D\u4EE4\u8F93\u51FA\u7528\u56F4\u680F\u4EE3\u7801\u5757\u5E76\u6807\u660E\u8BED\u8A00\uFF1B\u98CE\u9669\u4E0E\u4E0D\u786E\u5B9A\u6027\u4FDD\u6301\u4E0E\u8BC1\u636E\u76F8\u7B26\u7684\u5224\u65AD\u5F3A\u5EA6\uFF08\u5B9E\u6D4B\u3001\u63A8\u6D4B\u3001\u672A\u77E5\u5206\u5F00\u8BF4\uFF09\uFF0C\u4E0D\u6DE1\u5316\u3001\u4E0D\u7701\u7565\u2014\u2014\u767D\u8BDD\u53EA\u7528\u6765\u89E3\u91CA\uFF0C\u4E0D\u7528\u6765\u66FF\u4EE3\u53EF\u6267\u884C\u4E8B\u5B9E\uFF0C\u4E5F\u4E0D\u7528\u6765\u7A00\u91CA\u98CE\u9669\u3002
671
+ - **\u7BC7\u5E45\u4E0E\u5B8C\u6574\u6027**\uFF1A\u56DE\u7B54\u7684\u7BC7\u5E45\u5339\u914D\u63D0\u95EE\u89C4\u6A21\u2014\u2014\u4E00\u53E5\u8BDD\u80FD\u7B54\u7684\u5C31\u76F4\u63A5\u7B54\u5B8C\uFF0C\u4E0D\u9ED8\u8BA4\u4EA4\u4ED8\u5206\u8282\u3001\u52A0\u6807\u9898\u3001\u5217\u8BC1\u636E\u6E05\u5355\u7684\u5DE5\u7A0B\u62A5\u544A\uFF1B\u7528\u6237\u8981\u65B9\u6848\u3001\u6392\u67E5\u6216\u5BF9\u6BD4\u65F6\u518D\u5C55\u5F00\u3002\u7BC7\u5E45\u53EF\u4EE5\u77ED\uFF0C\u4F46\u4E0D\u7701\u652F\u6491\u7ED3\u8BBA\u7684\u524D\u63D0\u3001\u8BC1\u636E\u4E0E\u98CE\u9669\uFF08\u300C\u4E3B\u52A8\u9884\u5224\u300D\u8BB8\u53EF\u7684\u90A3\u4E00\u53E5\u63D0\u9192\u4E0D\u53D7\u672C\u6761\u7BC7\u5E45\u9ED8\u8BA4\u7EA6\u675F\uFF09\u3002
672
+ - **\u884C\u52A8\u4E0E\u63D0\u9192**\uFF1A\u95EE\u9898\u6D89\u53CA\u884C\u52A8\u65F6\u624D\u7ED9\u4E0B\u4E00\u6B65\uFF0C\u4E0D\u989D\u5916\u9644\u9001\u4E0E\u672C\u9898\u65E0\u5173\u7684\u884C\u52A8\u6E05\u5355\uFF1B\u4EFB\u52A1\u672C\u8EAB\u9700\u8981\u591A\u6B65\u64CD\u4F5C\u3001\u6392\u67E5\u6216\u6267\u884C\u65B9\u6848\u65F6\uFF0C\u4FDD\u7559\u5B8C\u6210\u4EFB\u52A1\u6240\u9700\u7684\u6B65\u9AA4\uFF1B\u300C\u4E3B\u52A8\u9884\u5224\u300D\u8BB8\u53EF\u7684\u90A3\u4E00\u53E5\u63D0\u9192\u4E0D\u53D7\u300C\u4E0D\u989D\u5916\u9644\u9001\u300D\u9650\u5236\u3002
673
+ - **\u6392\u7248\u4F18\u5148\u7EA7**\uFF1A\u51B3\u5B9A\u8981\u4E0D\u8981\u5206\u8282\u3001\u52A0\u6807\u9898\u6216\u753B\u56FE\u65F6\uFF0C\u666E\u901A\u95EE\u7B54\u4E0D\u56E0\u89C6\u53E3\u5BBD\u7A84\u5C31\u5957\u5206\u8282\u62A5\u544A\uFF1B\u5BBF\u4E3B\u63D0\u4F9B\u4E86\u89C6\u53E3\u6392\u7248\u6307\u5F15\u65F6\uFF0C\u4EE5\u8BE5\u6307\u5F15\u4E3A\u51C6\u3002\u672C prompt \u672A\u542B\u89C6\u53E3\u6392\u7248\u6307\u5F15\u65F6\uFF0C\u53EA\u9075\u5B88\u672C\u884C\u4E3A\u57FA\u7EBF\uFF0C\u4E0D\u81EA\u884C\u8865\u6392\u7248\u89C4\u5219\u3002
674
+ - **\u5BF9\u8BDD\u4F53\uFF0C\u4E0D\u662F\u6587\u6863\u4F53**\uFF1A\u7528\u666E\u901A\u5BF9\u8BDD\u53E5\u5B50\u53D9\u8FF0\uFF0C\u4E0D\u8981\u7528\u300C\u5DF2\u786E\u8BA4\uFF0F\u63A8\u6D4B\uFF0F\u5B9E\u6D4B\u8BC1\u636E\uFF0F\u9A8C\u6536\u95ED\u73AF\u300D\u8FD9\u7C7B\u72B6\u6001\u6807\u7B7E\u7ED9\u6BCF\u53E5\u5206\u7C7B\uFF0C\u4E5F\u4E0D\u7528\u62A5\u544A\u9AA8\u67B6\uFF08\u80CC\u666F\uFF0F\u5206\u6790\uFF0F\u5EFA\u8BAE\uFF0F\u7ED3\u8BBA\uFF09\u7EC4\u7EC7\u56DE\u590D\uFF1B\u4F46\u9700\u8981\u8BF4\u6E05\u54EA\u4E9B\u662F\u5B9E\u6D4B\u3001\u54EA\u4E9B\u662F\u63A8\u6D4B\u65F6\uFF0C\u7528\u4E00\u53E5\u65E5\u5E38\u8BDD\u70B9\u660E\u5224\u65AD\u5F3A\u5EA6\uFF08\u89C1\u300C\u9519\u8BEF\u4E8B\u5B9E\u5316\u300D\u300C\u4E8B\u5B9E\u4E0D\u7FFB\u8BD1\u300D\uFF09\uFF0C\u4E0D\u5F97\u4E3A\u56DE\u907F\u6807\u7B7E\u800C\u628A\u63A8\u6D4B\u5199\u6210\u7ED3\u8BBA\u3002\u5217\u8868\u4E0E\u8868\u683C\u7167\u5E38\u53EF\u7528\uFF1B\u4EFB\u52A1\u672C\u8EAB\u8981\u6C42\u4EA4\u4ED8\u6587\u6863\u3001\u62A5\u544A\u6216\u56FA\u5B9A\u683C\u5F0F\u65F6\uFF08\u5199\u6587\u4EF6\u3001\u751F\u6210\u6587\u6863\u3001\u8BC4\u5BA1\u62A5\u544A\uFF09\uFF0C\u6309\u4EA4\u4ED8\u683C\u5F0F\u7EC4\u7EC7\uFF0C\u672C\u6761\u53EA\u7BA1\u5BF9\u8BDD\u91CC\u7684\u53E3\u5934\u56DE\u590D\u3002
675
+ - **\u7528\u6237\u5F53\u8F6E\u8868\u8FF0\u4F18\u5148**\uFF1A\u7528\u6237\u672C\u8F6E\u660E\u786E\u8BF4\u7684\u98CE\u683C\u3001\u957F\u5EA6\u3001\u63AA\u8F9E\u8981\u6C42\uFF0C\u4F18\u5148\u4E8E\u672C\u51C6\u5219\u4E2D\u5173\u4E8E\u98CE\u683C\u3001\u7BC7\u5E45\u4E0E\u7ED3\u6784\u7684\u9ED8\u8BA4\u8BBE\u5B9A\uFF08\u4E0D\u4F18\u5148\u4E8E\u300C\u9519\u8BEF\u4E8B\u5B9E\u5316\u300D\u300C\u4E8B\u5B9E\u4E0D\u7FFB\u8BD1\u300D\u8FD9\u7C7B\u6B63\u786E\u6027\u4E0E\u5B89\u5168\u7EA6\u675F\uFF09\uFF1B\u4F46\u4E8B\u5B9E\u4E0D\u7FFB\u8BD1\u3001\u524D\u63D0\u4E0D\u7701\u7565\u3001\u8BC1\u636E\u4E0D\u7701\u7565\u3001\u98CE\u9669\u4E0D\u7701\u7565\u4E0D\u56E0\u957F\u5EA6\u8981\u6C42\u6216\u63AA\u8F9E\u8981\u6C42\u8C41\u514D\u3002`;
676
+ var buildResponsePresentationGuidelines = (isMobile) => {
677
+ if (isMobile) {
678
+ return `--- \u54CD\u5E94\u5C55\u793A\u6307\u5357\uFF08\u7A84\u5C4F / TUI / \u79FB\u52A8\u7AEF\uFF09 ---
679
+ \uFF08\u4EE5\u4E0B\u6392\u7248\u5EFA\u8BAE\u5728\u300C\u7BC7\u5E45\u4E0E\u5B8C\u6574\u6027\u300D\u300C\u884C\u52A8\u4E0E\u63D0\u9192\u300D\u300C\u6392\u7248\u4F18\u5148\u7EA7\u300D\u7684\u8FB9\u754C\u5185\u6267\u884C\u3002\uFF09
680
+ \u5F53\u524D\u5904\u4E8E\u7A84\u5C4F\u6216\u7EC8\u7AEF\u89C6\u56FE\uFF0C\u91C7\u7528\u7D27\u51D1\u3001\u9AD8\u626B\u63CF\u7387\u6392\u7248\uFF1A\u7ED3\u8BBA/\u5173\u952E\u72B6\u6001\u7F6E\u9876\uFF0C\u77ED\u6BB5\u843D\uFF082-4 \u53E5\uFF09\u5E76\u4FDD\u6301\u7A7A\u884C\uFF0C\u62D2\u7EDD\u6587\u5B57\u5899\u3002
681
+ - \u5217\u8868\u9879\u7528\u300C- **\u6838\u5FC3\u8BCD**\uFF1A\u8BF4\u660E\u300D\uFF1B\u5D4C\u5957\u6700\u591A 2 \u5C42\uFF0C\u5B50\u5217\u8868\u7F29\u8FDB 2 \u7A7A\u683C\uFF1B\u5E76\u5217\u7528\u65E0\u5E8F\u5217\u8868\uFF0C\u6B65\u9AA4\u7528\u6709\u5E8F\u5217\u8868\u3002
682
+ - **\u8868\u683C\u964D\u7EA7**\uFF1A\u4E25\u7981\u4F7F\u7528 \u22654 \u5217\u7684\u5927\u5BBD\u8868\uFF08\u7A84\u5C4F/\u7EC8\u7AEF\u6298\u884C\u4E25\u91CD\u9519\u4F4D\uFF09\uFF0C\u6539\u7528\u952E\u503C\u6E05\u5355\u6216\u7EB5\u5411\u5361\u7247\u3002
683
+ - **\u56FE\u8868\u8868\u8FBE**\uFF1A\u6D41\u7A0B\u3001\u65F6\u5E8F\u3001\u72B6\u6001\u8FC1\u79FB\u3001\u7C7B/\u5B9E\u4F53\u5173\u7CFB\u7B49\u7ED3\u6784\u5316\u5185\u5BB9\u7528 \`\`\`mermaid \u4EE3\u7801\u5757\uFF08\u652F\u6301\u7684\u5BA2\u6237\u7AEF\u4F1A\u6E32\u67D3\u4E3A\u56FE\uFF09\uFF0C\u4E0D\u8981\u7528 ASCII \u624B\u7ED8\u6216\u957F\u6BB5\u6587\u5B57\u786C\u63CF\u8FF0\uFF1B\u56FE\u7528\u6765\u66FF\u4EE3\u6587\u5B57\uFF0C\u753B\u4E86\u56FE\u5C31\u5220\u6389\u91CD\u590D\u63CF\u8FF0\uFF1B\u4E00\u6B65\u6D41\u7A0B\u4E0D\u5FC5\u753B\u56FE\u3002
684
+ - \u514B\u5236\u5206\u5272\u7EBF\uFF08\u4EC5\u5927\u4E3B\u9898\u5207\u6362\u6216\u7ED3\u8BBA\u524D\uFF0C\u524D\u540E\u7559\u7A7A\u884C\uFF09\uFF1B\u8DEF\u5F84\u3001\u547D\u4EE4\u4E0E\u53C2\u6570\u7528\u53CD\u5F15\u53F7 \` \` \u5305\u88F9\uFF1B\u4EE3\u7801\u5757\u6807\u660E\u8BED\u8A00\u4E14\u907F\u514D\u6A2A\u5411\u8D85\u957F\u884C\uFF1B\u514B\u5236 Emoji\u3002`;
685
+ }
686
+ return `--- \u54CD\u5E94\u5C55\u793A\u6307\u5357\uFF08\u5BBD\u5C4F / \u684C\u9762\u7AEF\uFF09 ---
687
+ \uFF08\u4EE5\u4E0B\u6392\u7248\u5EFA\u8BAE\u5728\u300C\u7BC7\u5E45\u4E0E\u5B8C\u6574\u6027\u300D\u300C\u884C\u52A8\u4E0E\u63D0\u9192\u300D\u300C\u6392\u7248\u4F18\u5148\u7EA7\u300D\u7684\u8FB9\u754C\u5185\u6267\u884C\u3002\uFF09
688
+ \u5F53\u524D\u5904\u4E8E\u5927\u5C4F\u89C6\u56FE\uFF1A\u5185\u5BB9\u786E\u5B9E\u5305\u542B\u591A\u4E2A\u6A21\u5757\u65F6\u624D\u7528\u4E8C\u7EA7/\u4E09\u7EA7\u6807\u9898\u5212\u5206\u3001\u5448\u73B0\u5168\u666F\u7ED3\u6784\uFF0C\u666E\u901A\u95EE\u7B54\u4E0D\u5F3A\u884C\u52A0\u6807\u9898\uFF1B\u8981\u70B9\u5C42\u6B21\u6E05\u6670\uFF0C\u6BB5\u843D 2-4 \u53E5\u5E76\u7559\u7A7A\u884C\uFF0C\u76F4\u5954\u4E3B\u9898\u3002
689
+ - \u5217\u8868\u9879\u7528\u300C- **\u6838\u5FC3\u8BCD**\uFF1A\u8BF4\u660E\u300D\uFF1B\u5D4C\u5957\u6700\u591A 2 \u5C42\uFF0C\u5B50\u5217\u8868\u7F29\u8FDB 2 \u7A7A\u683C\uFF1B\u5E76\u5217\u7528\u65E0\u5E8F\u5217\u8868\uFF0C\u6B65\u9AA4\u7528\u6709\u5E8F\u5217\u8868\u3002
690
+ - **\u8868\u683C\u4E0E\u5BF9\u6BD4**\uFF1A\u5BBD\u5C4F\u4E0B\u53EF\u9002\u5EA6\u4F7F\u7528 Markdown \u591A\u5217\u8868\u683C\u505A\u65B9\u6848\u5BF9\u6BD4\u3001\u53C2\u6570\u6C47\u603B\u6216\u77E9\u9635\u5206\u6790\u3002
691
+ - **\u56FE\u8868\u8868\u8FBE**\uFF1A\u6D41\u7A0B\u3001\u65F6\u5E8F\u3001\u72B6\u6001\u8FC1\u79FB\u3001\u7C7B/\u5B9E\u4F53\u5173\u7CFB\u7B49\u7ED3\u6784\u5316\u5185\u5BB9\u7528 \`\`\`mermaid \u4EE3\u7801\u5757\uFF08\u652F\u6301\u7684\u5BA2\u6237\u7AEF\u4F1A\u6E32\u67D3\u4E3A\u56FE\uFF09\uFF0C\u6BD4\u957F\u6BB5\u6587\u5B57\u66F4\u6E05\u695A\uFF1B\u56FE\u7528\u6765\u66FF\u4EE3\u6587\u5B57\uFF0C\u753B\u4E86\u56FE\u5C31\u5220\u6389\u91CD\u590D\u63CF\u8FF0\uFF1B\u7B80\u5355\u5185\u5BB9\u4E0D\u5FC5\u753B\u56FE\u3002
692
+ - **\u4EA4\u4E92\u5236\u54C1**\uFF1A\u53EA\u6709\u5F53\u7ED3\u6784\u5FC5\u987B\u9760\u4EA4\u4E92\u624D\u80FD\u7406\u89E3\uFF08\u8C03\u53C2\u3001\u5206\u6B65\u6F14\u793A\u3001\u591A\u7EF4\u5BF9\u6BD4\uFF09\uFF0C\u4E14\u7528\u6237\u8981\u6C42\u6216\u5B83\u662F\u51B3\u7B56\u5173\u952E\u65F6\uFF0C\u624D\u6309 show-me skill \u4EA4\u4ED8\u4E00\u6B21\u6027\u5236\u54C1\uFF1B\u5176\u4F59\u60C5\u51B5\u7528\u6587\u5B57\u6216\u56FE\u3002
693
+ - \u53EF\u5C55\u793A\u66F4\u5B8C\u6574\u7684\u4EE3\u7801\u4E0A\u4E0B\u6587\u4E0E\u591A\u6B65\u6267\u884C\u793A\u4F8B\uFF1B\u8DEF\u5F84\u3001\u547D\u4EE4\u4E0E\u53C2\u6570\u7528\u53CD\u5F15\u53F7 \` \` \u5305\u88F9\uFF0C\u4EE3\u7801\u5757\u6807\u660E\u8BED\u8A00\uFF1B\u514B\u5236\u5206\u5272\u7EBF\u4E0E Emoji\u3002`;
694
+ };
695
+ var resolveResponseGuidelines = (viewport) => ({
696
+ behavior: RESPONSE_BEHAVIOR_GUIDELINES,
697
+ presentation: viewport === "wide" ? buildResponsePresentationGuidelines(false) : viewport === "narrow" ? buildResponsePresentationGuidelines(true) : ""
698
+ });
699
+ var buildResponseGuidelines = (isMobile) => {
700
+ const { behavior, presentation } = resolveResponseGuidelines(
701
+ isMobile ? "narrow" : "wide"
702
+ );
703
+ return `${behavior}
704
+
705
+ ${presentation}`;
706
+ };
707
+
491
708
  // packages/ai/agent/contextCompiler.ts
492
709
  function createHash(_algo) {
493
710
  let buf = "";
@@ -557,11 +774,17 @@ export {
557
774
  compileContextLayers,
558
775
  buildIdentityBlock,
559
776
  DELETE_SAFETY_RED_LINE,
777
+ CREDENTIAL_HYGIENE_RULE,
560
778
  PARALLEL_DISPATCH_DEFAULT_RULE,
561
779
  PLATFORM_RISK_CONTROL_RULE,
780
+ isGptProModel,
781
+ shouldBlockForGptPro,
782
+ buildConsultationModeBlock,
562
783
  buildRuntimeGuidanceBlocks,
563
784
  TOOL_GUIDED_SECTION_ORDER,
564
785
  resolveToolGuidedSections,
565
786
  detectDispatchIntent,
566
- detectDispatchIntentFromMessages
787
+ detectDispatchIntentFromMessages,
788
+ resolveResponseGuidelines,
789
+ buildResponseGuidelines
567
790
  };