nolo-cli 0.54.0-alpha.2 → 0.54.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (133) hide show
  1. package/{_executeModel-ANY4SIAS.js → _executeModel-OPTKYHJA.js} +48 -42
  2. package/{action-Q4W5JPI5.js → action-ORXWW2ZG.js} +8 -8
  3. package/{addContentAction-O25HFR37.js → addContentAction-53BZ34AE.js} +8 -7
  4. package/{addDialogAgentAction-GH7AUPPB.js → addDialogAgentAction-JRYUS54Y.js} +10 -9
  5. package/{agentDeleteCommand-JWIKNWWI.js → agentDeleteCommand-FJIWU2BS.js} +30 -28
  6. package/{agentEmailCommands-PL22BEU5.js → agentEmailCommands-CE32L43B.js} +57 -52
  7. package/{agentListCommands-6NR7AQEK.js → agentListCommands-VJNKULIK.js} +42 -33
  8. package/{agentMachineCommands-TASPU6OA.js → agentMachineCommands-HCJ3WQXL.js} +30 -28
  9. package/{agentRecordCommands-Z64TA63M.js → agentRecordCommands-QFWERED4.js} +55 -50
  10. package/{agentRunCommand-4QJQLPRW.js → agentRunCommand-G3GQMUNN.js} +65 -53
  11. package/{agentRunControl-4GHHSXFZ.js → agentRunControl-INKFDXDA.js} +3 -1
  12. package/{agentRuntimeLocal-PCJJ56J2.js → agentRuntimeLocal-K327ELSL.js} +30 -26
  13. package/{agentSlice-KYLDUSNN.js → agentSlice-ODKF4J6M.js} +8 -8
  14. package/{agentSuperviseCommands-VB6BUS5H.js → agentSuperviseCommands-5AR3DKNN.js} +2 -2
  15. package/{appDeleteCommands-WLHMJAVT.js → appDeleteCommands-XUXMFDI4.js} +31 -29
  16. package/{appDeployCommands-CKON7N2E.js → appDeployCommands-37F4GPCU.js} +31 -29
  17. package/{appDeployStatusCommands-PXRLDASH.js → appDeployStatusCommands-WSPU7TUK.js} +31 -29
  18. package/{appGetCommands-RAB5RM4M.js → appGetCommands-YLOBA3EM.js} +31 -29
  19. package/{appListCommands-GU57FB62.js → appListCommands-UD62R5ME.js} +31 -29
  20. package/{authCommand-QOPOEYEK.js → authCommand-OK6HLHGS.js} +13 -13
  21. package/{authCommands-SBQVTD6V.js → authCommands-2DUIUEMT.js} +2 -2
  22. package/{chatQueueReduxAdapter-5O2WLITN.js → chatQueueReduxAdapter-TV2TUOQS.js} +26 -23
  23. package/{chunk-7CH6U3FL.js → chunk-2GRGFCF6.js} +2 -4
  24. package/{chunk-T27IEBNQ.js → chunk-2QDDKFG5.js} +74 -1
  25. package/{chunk-VULELK4T.js → chunk-2WBFJHQA.js} +4 -26
  26. package/{chunk-IKTHA3JH.js → chunk-3LKZRP7E.js} +2 -2
  27. package/{chunk-INXBNYCG.js → chunk-3Y2K5O2R.js} +64 -6
  28. package/{chunk-VRZIH5JO.js → chunk-3ZTR7ZO4.js} +1 -1
  29. package/{chunk-GV35EHNA.js → chunk-5FCIPEKT.js} +262 -96
  30. package/{chunk-RTLJUGQH.js → chunk-5UAYZEXO.js} +2 -2
  31. package/{chunk-TI5BCZCH.js → chunk-6COJEAYH.js} +32 -101
  32. package/{chunk-Y7LNKP32.js → chunk-6HDYSFLO.js} +4 -6
  33. package/chunk-6IGD47IC.js +19 -0
  34. package/chunk-6YTOJY35.js +352 -0
  35. package/{chunk-6FGXGFAH.js → chunk-75MSWWUE.js} +1 -1
  36. package/{chunk-3Z3DXZBD.js → chunk-7FAS3NEF.js} +16 -16
  37. package/{chunk-AV6KQCM5.js → chunk-7NYDJAQ7.js} +19 -14
  38. package/{chunk-CVT7L2WZ.js → chunk-A65UV3M5.js} +4 -4
  39. package/{chunk-7APQB6R6.js → chunk-AUVFJGPC.js} +3 -3
  40. package/{chunk-H4RYESI6.js → chunk-BBTN4NQD.js} +4 -4
  41. package/{chunk-757BGY6Y.js → chunk-BG7J6Y5X.js} +1 -1
  42. package/chunk-BY2FF2C4.js +526 -0
  43. package/{chunk-FA4SY4F5.js → chunk-BYEJ7K2Z.js} +1 -1
  44. package/chunk-BYXBJQAS.js +0 -0
  45. package/{chunk-3AOLVADY.js → chunk-DVINR3PL.js} +1 -1
  46. package/{chunk-UITMHBVK.js → chunk-EA5OYZVD.js} +1 -1
  47. package/{chunk-4NN3EK7H.js → chunk-EICIFHVS.js} +1 -1
  48. package/chunk-EJE33XNR.js +19059 -0
  49. package/{chunk-6SZ52ORL.js → chunk-FJHMLRDQ.js} +9 -9
  50. package/{chunk-RU5D3B22.js → chunk-GRFK2XP4.js} +2 -2
  51. package/{chunk-J3UALFHL.js → chunk-HJTAGT3W.js} +1 -1
  52. package/{chunk-WL3UOGYO.js → chunk-HPW5MNDQ.js} +38 -98
  53. package/{chunk-H2G6JXTR.js → chunk-HQUORJTM.js} +1 -1
  54. package/{chunk-OYNDYVSE.js → chunk-JON2PHYT.js} +1 -1
  55. package/{chunk-7K5VMB4Q.js → chunk-JXIP6ZWH.js} +7 -7
  56. package/{chunk-KUUTWU4I.js → chunk-K4NISKOR.js} +46 -8
  57. package/{chunk-SP3DPVBH.js → chunk-KLIBF3BY.js} +2 -2
  58. package/chunk-LRGKOI5Y.js +297 -0
  59. package/{chunk-LN3OQJGG.js → chunk-MLEZPE3U.js} +2 -2
  60. package/{chunk-FGEYVPPR.js → chunk-MYMBBB6Q.js} +5 -64
  61. package/{chunk-VRJUIUIY.js → chunk-N4JKMCY3.js} +2 -2
  62. package/{chunk-U5Z7LFZF.js → chunk-NFLA6GSU.js} +4 -4
  63. package/{chunk-SVEUG45B.js → chunk-NHRQCXIQ.js} +0 -24
  64. package/{chunk-56W233KG.js → chunk-NJUQBYFJ.js} +3 -1
  65. package/{chunk-Q24S4NDF.js → chunk-Q4XZVZPN.js} +1 -1
  66. package/{chunk-UW4INMD2.js → chunk-RHMDMTDK.js} +2 -2
  67. package/{chunk-MFI4FGHX.js → chunk-SAJSBPI2.js} +1 -1
  68. package/{chunk-WHVQA7PJ.js → chunk-SSXTSPSG.js} +27 -6
  69. package/{chunk-2BWU4ORW.js → chunk-SUEIAK5N.js} +1 -1
  70. package/{chunk-3QJTD6DO.js → chunk-SVC3GGUA.js} +5 -5
  71. package/{chunk-QDHZCAH3.js → chunk-SVDMVX4G.js} +118 -2
  72. package/{chunk-GBADO3SM.js → chunk-SWJGJMTW.js} +1 -1
  73. package/{chunk-DQLYEGP7.js → chunk-SYYUU7EV.js} +2 -2
  74. package/{chunk-U2A47SVI.js → chunk-TC6P4NDR.js} +7 -7
  75. package/{chunk-V4KZGLOI.js → chunk-TR4DXUYX.js} +1983 -447
  76. package/{chunk-BANYWEYY.js → chunk-TY3ADTX5.js} +1 -1
  77. package/chunk-UAD2WT54.js +64 -0
  78. package/{chunk-PAHILFNT.js → chunk-UGBHDMHI.js} +4 -4
  79. package/{chunk-6FQ2552G.js → chunk-UOWXD4VN.js} +799 -956
  80. package/{chunk-5WADL4O7.js → chunk-UR66XPVF.js} +3 -3
  81. package/{chunk-6BYAXNH5.js → chunk-VZMUOPYG.js} +12 -2
  82. package/{chunk-LA4IDAK7.js → chunk-WQHGJHAL.js} +440 -2981
  83. package/{chunk-GLGD2JGY.js → chunk-XIJZOCSP.js} +7 -7
  84. package/{chunk-BJLYCOZK.js → chunk-YBFJQC2M.js} +93 -776
  85. package/{chunk-MRWGHF56.js → chunk-YDH3FDFQ.js} +12 -356
  86. package/{chunk-32I5RVMY.js → chunk-YLCUU3WM.js} +3 -3
  87. package/{chunk-D3JQPONH.js → chunk-YQBXOHE6.js} +1 -1
  88. package/chunk-ZJ7UHBJS.js +89 -0
  89. package/{chunk-TNPCQNGQ.js → chunk-ZVOHVJI3.js} +4 -9
  90. package/contentThunks-KNI6VXLT.js +71 -0
  91. package/{createAgentAutomationAction-UJLNFFFC.js → createAgentAutomationAction-OK4L33KF.js} +27 -23
  92. package/{createDialogAction-TJCX6GUE.js → createDialogAction-JDSMY4AY.js} +28 -24
  93. package/{createPageAction-N3IYABHV.js → createPageAction-T7RA3HCG.js} +29 -24
  94. package/{dbSlice-D5CNGWPD.js → dbSlice-TVX6SN2T.js} +6 -6
  95. package/{deleteFile-44TUM34Y.js → deleteFile-JYKRT7C3.js} +3 -3
  96. package/{dialogCommands-35M6RBAC.js → dialogCommands-UQZYWOOV.js} +32 -30
  97. package/{dialogSlice-KO7ADD7H.js → dialogSlice-TYW2G7IL.js} +26 -23
  98. package/{docCreateCommands-VXHZWQ3P.js → docCreateCommands-OA6HZBWO.js} +34 -32
  99. package/{docDeleteCommands-4WFAJR6A.js → docDeleteCommands-KBB3YQI2.js} +31 -29
  100. package/{docReadCommands-OYREEFAR.js → docReadCommands-ZLMFVC67.js} +30 -28
  101. package/{docStore-5BU76DFK.js → docStore-2URPBVCS.js} +8 -33
  102. package/{docUpdateCommands-A7QERSME.js → docUpdateCommands-HMH5KUON.js} +34 -32
  103. package/{fetchMessages-KZQVBXKY.js → fetchMessages-DRABNDPZ.js} +3 -3
  104. package/{getPricing-HAU62AFM.js → getPricing-RFOPUWHY.js} +4 -4
  105. package/{handleSendMessageAction-OSGQJQ45.js → handleSendMessageAction-GO53TY7U.js} +28 -25
  106. package/index.js +56 -56
  107. package/{localDialogRead-NQ33HBSI.js → localDialogRead-PUQKFI73.js} +1 -1
  108. package/{machineCommands-J43U3TX5.js → machineCommands-RK6L7ZWL.js} +59 -54
  109. package/{machineWsRunDispatch-Z2Z6STXZ.js → machineWsRunDispatch-3X64DW2Z.js} +54 -49
  110. package/memberThunks-THZYZFSN.js +638 -0
  111. package/{models-4QF4BJVY.js → models-JVKUEER5.js} +2 -2
  112. package/package.json +1 -1
  113. package/{read-RGNPI5H2.js → read-K4JU4MQC.js} +3 -3
  114. package/{readDocTool-6ESWKTXD.js → readDocTool-LQGR6FUN.js} +1 -1
  115. package/{readlineWorkspace-YRPV6JPN.js → readlineWorkspace-XUFJV3RS.js} +604 -263
  116. package/{removeDialogAgentAction-JYT73FU2.js → removeDialogAgentAction-ECHCFB7N.js} +12 -11
  117. package/{runAgentClientLoop-5YM5WMAY.js → runAgentClientLoop-24GQ2AW6.js} +46 -40
  118. package/{setDialogExtraReferencesAction-D564LMYQ.js → setDialogExtraReferencesAction-KCVJNGMB.js} +9 -8
  119. package/{setPrimaryDialogAgentAction-ACY3BLYA.js → setPrimaryDialogAgentAction-VDOBOMKC.js} +12 -11
  120. package/{settingSlice-MKI3MNZJ.js → settingSlice-VR2IJSXC.js} +7 -7
  121. package/{skillDiscovery-GPUDHDTZ.js → skillDiscovery-2QTZINON.js} +3 -3
  122. package/{spaceCommands-MY26V52L.js → spaceCommands-S5YJJXL7.js} +30 -28
  123. package/{streamAgentChatTurn-XV5X5TNQ.js → streamAgentChatTurn-QHKP3ABO.js} +77 -64
  124. package/{switchDialogAgentAction-CJ5H6SAR.js → switchDialogAgentAction-5L4UP7VI.js} +10 -9
  125. package/{toolApiClient-B2MFXMEG.js → toolApiClient-53U4UDFF.js} +3 -2
  126. package/{tools-MIMELA2Y.js → tools-SSXSTC3O.js} +37 -32
  127. package/{tuiSummaryLlmCaller-XJ5BKNNS.js → tuiSummaryLlmCaller-URFJHFC5.js} +17 -15
  128. package/{updateDialogTitleAction-EIZUSWHR.js → updateDialogTitleAction-YFYAEW3T.js} +28 -24
  129. package/chunk-6BGAQ3KR.js +0 -7081
  130. package/chunk-YBV6QJKM.js +0 -441
  131. package/spaceSlice-JUIXC365.js +0 -127
  132. package/{chunk-NQ4N4IGO.js → chunk-CS6TCJ7E.js} +3 -3
  133. package/{chunk-PYKV6FSC.js → chunk-XOJRZUPF.js} +3 -3
package/chunk-YBV6QJKM.js DELETED
@@ -1,441 +0,0 @@
1
- import {
2
- isImageUrlPart
3
- } from "./chunk-6BYAXNH5.js";
4
- import {
5
- AGENT_SELECTION_PRIORITY_INSTRUCTIONS
6
- } from "./chunk-TNPCQNGQ.js";
7
- import {
8
- canonicalizeToolNames
9
- } from "./chunk-O6OSWFZQ.js";
10
- import {
11
- PLATFORM_HOSTED_KIMI_K3_MODEL,
12
- isFireworksKimiModel,
13
- isNoloHostedProvider
14
- } from "./chunk-WL3UOGYO.js";
15
- import {
16
- asTrimmedLowercaseString
17
- } from "./chunk-QSJ3HFEF.js";
18
- import {
19
- asTrimmedString
20
- } from "./chunk-3EUW3WEO.js";
21
-
22
- // packages/agent-runtime/identityBlock.ts
23
- var buildIdentityBlock = (input) => {
24
- const lines = [
25
- "--- \u8EAB\u4EFD\u4FE1\u606F ---",
26
- asTrimmedString(input.agentName) ? `\u540D\u79F0: ${asTrimmedString(input.agentName)}` : "",
27
- asTrimmedString(input.agentId) ? `ID: ${asTrimmedString(input.agentId)}` : "",
28
- asTrimmedString(input.model) ? `\u6A21\u578B: ${asTrimmedString(input.model)}` : ""
29
- ].filter(Boolean);
30
- return lines.join("\n");
31
- };
32
-
33
- // packages/agent-runtime/contextLayerContract.ts
34
- var buildContextLayerContractBlock = (options = {}) => {
35
- const lines = [
36
- "--- \u77E5\u8BC6\u5B58\u50A8\u7EA6\u5B9A ---",
37
- "\u4E0D\u8981\u628A\u6240\u6709\u4FE1\u606F\u585E\u8FDB\u540C\u4E00\u5C42\uFF0C\u5408\u7406\u5229\u7528\u5206\u5C42\u8FB9\u754C\uFF1A",
38
- "1. memory layer\uFF1A\u77ED\u5230\u4E2D\u671F\u3001\u53EF\u590D\u7528\u4F46\u4E0D\u5FC5\u6C38\u4E45\u6302\u8F7D\u7684\u504F\u597D\u3001\u8FD1\u671F\u5171\u8BC6\u4E0E\u7ECF\u9A8C\uFF08\u77ED\u3001\u53EF\u68C0\u7D22\u3001\u53EF\u66FF\u6362\uFF09\u3002",
39
- "2. knowledge layer\uFF1A\u7A33\u5B9A\u89C4\u5219\u3001\u957F\u671F\u6709\u6548\u4E8B\u5B9E\u4E0E\u6BCF\u8F6E\u4F9D\u8D56\u7684\u8BF4\u660E\uFF08\u901A\u8FC7 prompt / references \u81EA\u52A8\u52A0\u8F7D\uFF09\u3002",
40
- "3. doc layer\uFF1A\u9700\u8DE8\u8F6E\u6B21\u7EF4\u62A4\u7684\u5916\u90E8\u5DE5\u4F5C\u53F0\uFF08runbook\u3001mission\u3001incident\u3001checkpoint\u3001idea backlog\u3001experiment log \u7B49\uFF0C\u663E\u5F0F\u6309\u9700\u8BFB\u5199\uFF09\u3002",
41
- "",
42
- "\u5199\u5165\u539F\u5219\uFF1A\u4E34\u65F6\u6B65\u9AA4\u3001\u539F\u59CB\u957F\u65E5\u5FD7\u3001\u4E00\u6B21\u6027\u601D\u8DEF\u4E0D\u8981\u76F4\u63A5\u5199\u8FDB memory/knowledge\uFF1B\u7A33\u5B9A\u89C4\u5219\u6C89\u6DC0\u5230 knowledge\u3001\u53EF\u590D\u7528\u504F\u597D/\u5171\u8BC6\u6C89\u6DC0\u5230 memory\u3001\u8DE8\u8F6E\u63A5\u529B\u72B6\u6001/\u6587\u6863\u5199\u5165 doc\u3002"
43
- ];
44
- if (options.hasRememberMemoryTool) {
45
- lines.push(
46
- "- \u9047\u5230\u5BF9\u672A\u6765\u660E\u663E\u6709\u5E2E\u52A9\u7684\u504F\u597D/\u5171\u8BC6\u65F6\u8C03\u7528 rememberMemory\uFF08\u5199\u6210\u7B80\u6D01\u53EF\u590D\u7528\u7684\u4E00\u53E5\u8BDD\uFF1B\u7ED1\u5B9A space \u4E14\u5C5E\u5171\u4EAB\u89C4\u5219\u65F6\u4F20 scope=space\uFF0C\u8BB0\u4E3A space memory\uFF09\u3002"
47
- );
48
- }
49
- if (options.hasDocTools) {
50
- lines.push(
51
- "- \u4EFB\u52A1\u9700 24h \u8FDE\u7EED\u8FD0\u884C\u3001\u8DE8 dialog \u63A5\u529B\u6216\u5171\u8BFB\u65F6\uFF0C\u4F18\u5148\u628A mission / runbook / incident / checkpoint / idea backlog / experiment log \u5199\u5165 doc layer\u3002"
52
- );
53
- }
54
- return lines.join("\n");
55
- };
56
-
57
- // packages/agent-runtime/startupProtocol.ts
58
- var buildStartupProtocolBlock = (options = {}) => {
59
- const lines = [
60
- "--- \u542F\u52A8\u534F\u8BAE ---",
61
- "\u542F\u52A8\u987A\u5E8F\uFF1A\u5148\u8BFB policy / knowledge \u2192 \u63D0\u70BC current mission \u2192 \u5438\u6536 recent memory\uFF08\u53EA\u7559\u5BF9\u672C\u8F6E\u6709\u7528\u7684\uFF09\u2192 \u9700\u8981\u8DE8\u8F6E\u63A5\u529B\u65F6\u518D\u8BFB doc\u3002",
62
- "\u7B2C\u4E00\u6B21\u5DE5\u5177\u8C03\u7528\u524D\u5185\u5316 current_goal / constraints / missing_facts / next_action \u56DB\u9879\u5373\u53EF\u5F00\u59CB\u884C\u52A8\u3002",
63
- "\u51B3\u7B56\u89C4\u5219\uFF1Apolicy/knowledge \u591F\u5C31\u76F4\u63A5\u7B54\u4E0D\u4E71\u8C03\u5DE5\u5177\uFF1Brecent memory \u4E0E\u5F53\u524D\u8F93\u5165\u51B2\u7A81\u4EE5\u8F93\u5165\u4E3A\u51C6\uFF1B\u4F9D\u8D56\u5916\u90E8\u73AF\u5883/\u6587\u4EF6/\u4E8B\u5B9E\u5148\u9A8C\u8BC1\u518D\u884C\u52A8\u3001\u5C0F\u6B65\u63A8\u8FDB\u3002"
64
- ];
65
- if (options.hasCheckEnvTool || options.hasExecShellTool) {
66
- lines.push(
67
- "- \u4EFB\u52A1\u6D89\u53CA\u547D\u4EE4\u6267\u884C\u3001shell \u8BED\u6CD5\u3001\u8DEF\u5F84\u7EA6\u5B9A\u6216\u670D\u52A1\u72B6\u6001\u4E14\u4E8B\u5B9E\u4E0D\u660E\u786E\u65F6\uFF0C\u5148\u786E\u8BA4\u73AF\u5883\u3002"
68
- );
69
- }
70
- if (options.hasCheckEnvTool) {
71
- lines.push(
72
- "- \u73AF\u5883\u4E0D\u660E\u786E\u65F6\uFF0C\u4F18\u5148\u8C03\u7528 checkEnv({ check: 'context' })\uFF0C\u518D\u51B3\u5B9A\u540E\u7EED\u547D\u4EE4\u548C\u5DE5\u5177\u8DEF\u5F84\u3002"
73
- );
74
- }
75
- if (options.hasExecShellTool) {
76
- lines.push(
77
- "- \u6267\u884C\u547D\u4EE4\u65F6\u6839\u636E\u73AF\u5883\u9009 shell\uFF08Windows \u9ED8\u8BA4 PowerShell\uFF0CLinux/macOS \u9ED8\u8BA4 bash\uFF09\uFF1B\u6536\u96C6\u591A\u4E2A\u53EA\u8BFB\u4E8B\u5B9E\u4F18\u5148\u5408\u5E76\u4E3A\u4E00\u6B21 shell \u590D\u5408\u8C03\u7528\uFF0C\u907F\u514D\u62C6\u6210\u7EC6\u788E\u63A2\u9488\u3002"
78
- );
79
- }
80
- return lines.join("\n");
81
- };
82
-
83
- // packages/agent-runtime/runtimeGuidance.ts
84
- var normalizeToolName = (name) => name.replace(/[-_]/g, "").toLowerCase();
85
- var hasAnyTool = (normalizedTools, candidates) => candidates.some((candidate) => normalizedTools.has(normalizeToolName(candidate)));
86
- var hasAllTools = (normalizedTools, candidates) => candidates.every((candidate) => normalizedTools.has(normalizeToolName(candidate)));
87
- var buildEmailRegistrationWorkflowBlock = (enabled) => {
88
- if (!enabled) return "";
89
- return [
90
- "--- \u90AE\u7BB1\u9A8C\u8BC1\u7801\u6CE8\u518C\u6D41\u7A0B ---",
91
- "\u5F53\u7528\u6237\u8981\u6C42\u4F60\u6CE8\u518C\u7F51\u7AD9\u8D26\u53F7\u65F6\uFF0C\u53EA\u5141\u8BB8\u5904\u7406\u7528\u6237\u660E\u786E\u6307\u5B9A\u7684\u5F53\u524D\u76EE\u6807\u7F51\u7AD9\uFF0C\u4E0D\u8981\u81EA\u884C\u6269\u5C55\u5230\u5176\u4ED6\u7F51\u7AD9\u3001\u6279\u91CF\u6CE8\u518C\u6216\u89C4\u907F\u5E73\u53F0\u98CE\u63A7\u3002",
92
- "",
93
- "\u5206\u9636\u6BB5\u534F\u8BAE\uFF1Adiscover before acting -> assess supportability -> register -> verify -> closeout\u3002",
94
- "",
95
- "\u63A8\u8350\u6D41\u7A0B\uFF1A",
96
- "1. discover before acting\uFF1A\u5148\u7528 browser_openSession / browser_readContent \u9605\u8BFB\u9875\u9762\uFF0C\u786E\u8BA4\u76EE\u6807\u6CE8\u518C\u9875 URL\u3001\u8D26\u53F7\u7528\u9014\u3001\u5FC5\u586B\u9879\u548C\u505C\u6B62\u6761\u4EF6\uFF1B\u4E0D\u8981\u4E00\u6253\u5F00\u9875\u9762\u5C31\u76F2\u70B9\u6309\u94AE\u3002\u5982\u679C\u7F3A\u5C11\u76EE\u6807\u7F51\u7AD9\uFF0C\u5148\u8BE2\u95EE\u7528\u6237\u3002",
97
- "2. assess supportability\uFF1A\u5148\u5224\u65AD\u8BE5\u6D41\u7A0B\u662F\u5426\u652F\u6301\u5F53\u524D\u53D7\u63A7\u81EA\u52A8\u5316\u3002\u9047\u5230 CAPTCHA\u3001\u624B\u673A\u53F7\u9A8C\u8BC1\u3001\u652F\u4ED8\u3001\u8EAB\u4EFD/KYC\u3001OAuth-only\u3001\u670D\u52A1\u6761\u6B3E\u786E\u8BA4\u3001\u6216\u4EFB\u4F55\u770B\u8D77\u6765\u50CF\u89C4\u907F\u98CE\u63A7\u7684\u6B65\u9AA4\u65F6\uFF0C\u5FC5\u987B\u7ACB\u5373\u505C\u6B62\u5E76\u5411\u7528\u6237\u8BF4\u660E blockingReason\uFF1B\u4E0D\u8981\u786C\u95EF\u3002",
98
- "3. register\uFF1A\u53EA\u6709\u5728\u786E\u8BA4\u652F\u6301\u540E\uFF0C\u624D\u4F7F\u7528 email_provision_identity \u4E3A\u5F53\u524D agent \u751F\u6210\u53D7\u63A7\u57DF\u540D\u90AE\u7BB1\u8EAB\u4EFD\uFF0C\u518D\u4F7F\u7528 browser_openSession / browser_typeText / browser_click / browser_readContent \u586B\u5199\u5E76\u63D0\u4EA4\u6CE8\u518C\u8868\u5355\u3002",
99
- "4. verify\uFF1A\u63D0\u4EA4\u540E\u4F7F\u7528 email_wait_for \u7B49\u5F85\u8BE5 agent \u6536\u4EF6\u7BB1\u91CC\u7684\u9A8C\u8BC1\u90AE\u4EF6\uFF0C\u518D\u7528 email_extract_verification \u63D0\u53D6\u9A8C\u8BC1\u7801\u6216\u9A8C\u8BC1\u94FE\u63A5\uFF0C\u56DE\u586B\u9A8C\u8BC1\u7801\u6216\u6253\u5F00\u9A8C\u8BC1\u94FE\u63A5\u5B8C\u6210\u9A8C\u8BC1\u3002",
100
- "5. closeout\uFF1A\u65E0\u8BBA\u6210\u529F\u8FD8\u662F\u5931\u8D25\u90FD\u8981 always close sessions\uFF0C\u4E3B\u52A8\u6E05\u7406\u6D4F\u89C8\u5668\u4F1A\u8BDD\uFF08\u4F8B\u5982 browser_closeSession\uFF09\u3002\u5982\u679C\u6D41\u7A0B\u5931\u8D25\uFF0C\u5FC5\u987B\u660E\u786E failedStage \u4E0E blockingReason\uFF0C\u5E76\u8BF4\u660E\u53EF\u6062\u590D\u9009\u9879\uFF1B\u4E0D\u8981\u76F2\u76EE\u5C1D\u8BD5\u65E0\u5173\u7F51\u7AD9\u6216\u7ED5\u8FC7\u9A8C\u8BC1\u3002",
101
- "6. \u6700\u7EC8\u53EA\u5728\u5BF9\u8BDD\u4E2D\u8FD4\u56DE\u8D26\u53F7\u3001\u90AE\u7BB1\u548C\u4E00\u6B21\u6027\u751F\u6210\u7684\u5BC6\u7801\uFF1B\u4E0D\u8981\u6301\u4E45\u5316\u5BC6\u7801\uFF0C\u4E0D\u8981\u5199\u5165 agent metadata\u3001\u6570\u636E\u5E93\u3001\u6587\u6863\u6216\u8BB0\u5FC6\u3002",
102
- "",
103
- "\u5FC5\u987B\u6682\u505C\u5E76\u8BE2\u95EE\u7528\u6237\u7684\u60C5\u51B5\uFF1ACAPTCHA\u3001\u624B\u673A\u53F7\u9A8C\u8BC1\u3001\u652F\u4ED8\u3001\u8EAB\u4EFD/KYC\u3001OAuth \u6388\u6743\u3001OAuth-only\u3001\u670D\u52A1\u6761\u6B3E\u786E\u8BA4\u3001\u6216\u4EFB\u4F55\u770B\u8D77\u6765\u50CF\u89C4\u907F\u98CE\u63A7\u7684\u6B65\u9AA4\u3002",
104
- "\u5982\u679C\u6D41\u7A0B\u5931\u8D25\uFF0C\u8BF4\u660E failedStage\u3001blockingReason \u548C\u53EF\u6062\u590D\u9009\u9879\uFF0C\u4E0D\u8981\u76F2\u76EE\u5C1D\u8BD5\u65E0\u5173\u7F51\u7AD9\u6216\u7ED5\u8FC7\u9A8C\u8BC1\u3002"
105
- ].join("\n");
106
- };
107
- var resolveRuntimeGuidanceToolOptions = (tools = []) => {
108
- const normalizedTools = canonicalizeToolNames(tools);
109
- const normalizedToolSet = new Set(normalizedTools.map(normalizeToolName));
110
- const hasBrowserTools = hasAllTools(normalizedToolSet, [
111
- "browser_openSession",
112
- "browser_readContent",
113
- "browser_typeText",
114
- "browser_click",
115
- "browser_closeSession"
116
- ]);
117
- const hasBrowserProbe = hasAnyTool(normalizedToolSet, ["browser_probePage", "browserProbePage"]);
118
- const hasEmailRegistrationTools = hasAllTools(normalizedToolSet, [
119
- "email_provision_identity",
120
- "email_wait_for",
121
- "email_extract_verification"
122
- ]);
123
- return {
124
- hasCheckEnvTool: normalizedTools.includes("checkEnv"),
125
- hasExecShellTool: normalizedTools.includes("execShell"),
126
- hasRememberMemoryTool: normalizedTools.includes("rememberMemory"),
127
- hasDocTools: normalizedTools.some(
128
- (tool) => ["read", "readDoc", "readPage", "createDoc", "updateDoc"].includes(tool)
129
- ),
130
- hasBrowserTools,
131
- hasEmailRegistrationTools,
132
- // Require browser_probePage to be present before enabling email registration workflow guidance.
133
- hasEmailRegistrationWorkflow: hasBrowserTools && hasBrowserProbe && hasEmailRegistrationTools
134
- };
135
- };
136
- var buildRuntimeGuidanceBlocks = (tools = []) => {
137
- const options = resolveRuntimeGuidanceToolOptions(tools);
138
- const normalizedTools = canonicalizeToolNames(tools);
139
- return {
140
- startupProtocol: buildStartupProtocolBlock({
141
- hasCheckEnvTool: options.hasCheckEnvTool,
142
- hasExecShellTool: options.hasExecShellTool
143
- }),
144
- contextLayerContract: buildContextLayerContractBlock({
145
- hasRememberMemoryTool: options.hasRememberMemoryTool,
146
- hasDocTools: options.hasDocTools
147
- }),
148
- emailRegistrationWorkflow: buildEmailRegistrationWorkflowBlock(
149
- options.hasEmailRegistrationWorkflow
150
- )
151
- };
152
- };
153
-
154
- // packages/agent-runtime/menuUsage.ts
155
- var MENU_USAGE_INSTRUCTIONS = `--- \u4EA4\u4E92\u8BF4\u660E ---
156
- \u6240\u6709\u7528\u6237\u8F93\u5165\u5747\u4E3A\u7EAF\u6587\u672C\u6D88\u606F\uFF0C\u76F4\u63A5\u7406\u89E3\u5373\u53EF\uFF0C\u4E0D\u8981\u5728\u56DE\u590D\u4E2D\u63D0\u53CA\u6309\u94AE\u3001\u83DC\u5355\u3001\u754C\u9762\u7B49 UI \u5143\u7D20\u3002
157
-
158
- ## \u4F55\u65F6\u8C03\u7528 ask_user
159
- \u9ED8\u8BA4\u76F4\u63A5\u884C\u52A8\uFF08\u65E5\u5E38\u5C0F\u4E8B\uFF09\uFF1A\u95EE\u7B54\u3001\u5355\u6587\u4EF6\u5C0F\u6539\u3001\u6267\u884C\u987A\u5E8F/\u8DEF\u5F84\u9009\u62E9\u7B49\u80FD\u57FA\u4E8E\u73B0\u6709\u4E0A\u4E0B\u6587\u7ED9\u51FA\u9AD8\u8D28\u91CF\u7B54\u6848\u7684\u65E5\u5E38\u5C0F\u4E8B\uFF0C\u76F4\u63A5\u505A\uFF0C\u4E0D\u8981\u4E3A\u4E86\u95EE\u800C\u95EE\u3002\u5224\u636E\u662F**\u7528\u6237\u662F\u5426\u9700\u8981\u4E3A\u8FD9\u4E2A\u9009\u62E9\u627F\u62C5\u540E\u679C**\uFF08\u82B1\u94B1\u3001\u6CC4\u9732\u6570\u636E\u3001\u52A8\u7EBF\u4E0A\u3001\u4E0D\u53EF\u56DE\u6EDA\uFF1B\u6216\u8BE5\u9009\u62E9\u7EAF\u5C5E\u4E2A\u4EBA\u53E3\u5473\u3001\u65E0\u4ECE\u63A8\u65AD\uFF09\uFF0C\u800C\u4E0D\u662F"\u8FD9\u4E2A\u9009\u62E9\u4F1A\u4E0D\u4F1A\u5F71\u54CD\u540E\u7EED\u8D70\u5411"\u3002\u4EC5\u4E09\u79CD\u60C5\u51B5\u8C03\u7528\uFF1A1\uFF09\u9700\u6C42\u5BBD\u6CDB\u6216\u6A21\u7CCA\uFF0C\u7ED9\u51FA 2\uFF5E5 \u4E2A\u4E92\u65A5\u4E14\u90FD\u5408\u7406\u7684\u65B9\u5411\u8BA9\u7528\u6237\u5148\u9009\uFF1B2\uFF09\u5206\u53C9\u7684\u540E\u679C\u7531\u7528\u6237\u627F\u62C5\u4E14\u65E0\u6CD5\u4ECE\u4E0A\u4E0B\u6587\u63A8\u65AD\u5176\u504F\u597D\uFF1B3\uFF09\u65B0\u4F1A\u8BDD\u5F00\u5934\u9700\u8981\u6309\u7528\u6237\u753B\u50CF\u505A\u529F\u80FD\u5BFC\u822A\u6216\u5F15\u5BFC\u3002
160
-
161
- \u89C4\u6A21\u5316\u5F00\u5DE5\u5148\u786E\u8BA4\uFF1A\u4EFB\u52A1\u89C4\u6A21\u8D85\u51FA\u65E5\u5E38\u5C0F\u4E8B\uFF08\u9884\u8BA1\u4FEE\u6539 \u22653 \u4E2A\u6587\u4EF6\u3001\u65B0\u589E\u5B8C\u6574\u529F\u80FD/\u5DE5\u4F5C\u6D41\u3001\u957F\u65F6\u8FD0\u884C\u4EFB\u52A1\u3001\u4EA7\u51FA\u6B63\u5F0F\u4EA4\u4ED8\u7269\uFF09\u4E14\u7528\u6237\u53EA\u7528\u4E00\u4E24\u53E5\u8BDD\u5E26\u8FC7\u9700\u6C42\u65F6\uFF0C\u5148\u7ED9\u4E00\u6BB5\u7B80\u77ED\u8BA1\u5212\uFF08\u505A\u4EC0\u4E48 / \u4E0D\u505A\u4EC0\u4E48 / \u4EA4\u4ED8\u4EC0\u4E48\uFF09\u7B49\u7528\u6237\u786E\u8BA4\uFF0C\u6216\u7528 ask_user \u7ED9\u51FA\u65B9\u6848\u9009\u9879\u3002\u5B81\u53EF\u5F00\u5DE5\u524D\u591A\u82B1\u4E00\u8F6E\u786E\u8BA4\uFF0C\u4E0D\u8981\u4EA4\u4ED8\u540E\u8FD4\u5DE5\u3002
162
-
163
- \u4E0D\u8981\u95EE\u7684\uFF08\u5C5E\u4E8E\u4F60\u7684\u804C\u8D23\uFF0C\u95EE\u51FA\u6765\u662F\u628A\u672C\u8BE5\u4F60\u505A\u7684\u5224\u65AD\u63A8\u7ED9\u7528\u6237\uFF09\uFF1A\u5148\u505A\u54EA\u4E2A\u4EFB\u52A1\u3001\u6309\u4EC0\u4E48\u987A\u5E8F\u63A8\u8FDB\u3001\u8981\u4E0D\u8981\u987A\u624B\u4FEE\u67D0\u5904\u3001\u65E5\u5E38\u5B9E\u73B0\u7EC6\u8282\u7528\u54EA\u79CD\u5199\u6CD5\u3001\u8981\u4E0D\u8981\u518D\u68C0\u67E5\u4E00\u904D\u3002\u8FD9\u4E9B\u81EA\u5DF1\u5B9A\uFF0C\u505A\u5B8C\u5728\u56DE\u590D\u91CC\u8BF4\u660E\u7406\u7531\u5373\u53EF\u3002\u8FB9\u754C\uFF1A\u4E0A\u9762\u8FD9\u4E9B\uFF08\u5148\u505A\u54EA\u4E2A\u4EFB\u52A1\u3001\u6309\u4EC0\u4E48\u987A\u5E8F\u63A8\u8FDB\u7B49\uFF09\u5C5E\u4E8E\u987A\u5E8F\u4E0E\u8DEF\u5F84\u9009\u62E9\uFF0C\u81EA\u5B9A\u5373\u53EF\uFF1B**\u4EA4\u4ED8\u8303\u56F4\uFF08\u505A\u4EC0\u4E48\u3001\u505A\u5230\u4EC0\u4E48\u7A0B\u5EA6\u3001\u4EA4\u4ED8\u4EC0\u4E48\u4EA7\u7269\uFF09\u4E0D\u5C5E\u6B64\u7C7B**\u2014\u2014\u8303\u56F4\u6A21\u7CCA\u65F6\u8BE5\u95EE\u5C31\u95EE\u3002\u6CE8\u610F\u533A\u5206\uFF1A\u67B6\u6784\u9009\u578B\u3001\u6280\u672F\u6808\u3001\u6570\u636E\u5B58\u50A8\u65B9\u6848\u7B49\u957F\u671F\u4E14\u96BE\u56DE\u6EDA\u7684\u6280\u672F\u51B3\u7B56\u4E0D\u5728\u6B64\u5217\u2014\u2014\u5B83\u4EEC\u7684\u540E\u679C\u7531\u7528\u6237\u627F\u62C5\uFF0C\u6309\u4E0A\u8FF0\u7B2C 2 \u6761\u8BE5\u95EE\u5C31\u95EE\u3002\u7528\u6237\u76EE\u6807\u5DF2\u5177\u4F53\u6E05\u6670\u65F6\uFF0C\u5373\u4FBF\u5F62\u5F0F\u4E0A\u6EE1\u8DB3\u524D\u8FF0\u4E09\u79CD\u60C5\u51B5\u4E5F\u4F18\u5148\u76F4\u63A5\u56DE\u7B54\uFF0C\u4E0D\u5F3A\u884C\u5F39\u83DC\u5355\uFF1B\u5C31\u540C\u4E00\u4EF6\u4E8B\u7B2C\u4E8C\u6B21\u5F39\u83DC\u5355\u524D\uFF0C\u5148\u81EA\u68C0\u5224\u636E\u662F\u4E0D\u662F\u7528\u9519\u4E86\u3002**\u7528\u6237\u5DF2\u628A\u51B3\u7B56\u6743\u4EA4\u7ED9\u4F60\u65F6\uFF0C\u7981\u6B62\u518D\u5F39\u9009\u9879**\uFF1A\u7528\u6237\u8BF4\u8FC7\u300C\u4F60\u81EA\u5DF1\u9009\u300D\u300C\u6839\u636E\u4F60\u7684\u610F\u613F\u300D\u300C\u6309\u4F60\u7684\u63A8\u8350\u300D\u540E\uFF0C\u76F4\u63A5\u5BA3\u5E03\u9009\u62E9\u4E0E\u7406\u7531\u5E76\u6267\u884C\u2014\u2014\u6B64\u65F6\u5F39\u9009\u9879\u7B49\u4E8E\u628A\u5DF2\u6536\u5230\u7684\u6388\u6743\u63A8\u56DE\u7ED9\u7528\u6237\u3002\u9700\u8981\u7528\u6237\u8865\u5145\u4FE1\u606F\u5C31\u76F4\u63A5\u5728\u6587\u672C\u91CC\u95EE\uFF0C\u4E0D\u5FC5\u6784\u9020\u9009\u9879\u9762\u677F\uFF1B\u9009\u9879\u9762\u677F\u53EA\u7528\u4E8E\u771F\u6B63\u4E92\u65A5\u3001\u4E14\u7ED3\u679C\u7531\u7528\u6237\u627F\u62C5\u7684\u5206\u53C9\u3002
164
-
165
- ## \u8C03\u7528\u89C4\u8303
166
- - \u9009\u9879\u5FC5\u987B\u4F20\u5728 choices \u5B57\u6BB5\uFF08\u5355\u95EE\u9898\uFF09\u6216 questions[].choices\uFF08\u591A\u95EE\u9898\u6A21\u5F0F\uFF09\uFF0C\u4E0D\u8981\u5199\u6210 options \u7B49\u522B\u540D\u2014\u2014\u5B57\u6BB5\u540D\u9519\u8BEF\u4F1A\u8BA9\u9009\u9879\u6E32\u67D3\u4E0D\u51FA\u6765\uFF0C\u9762\u677F\u9000\u5316\u6210\u7EAF\u81EA\u7531\u8F93\u5165\uFF1B
167
- - \u5148\u5728\u666E\u901A\u56DE\u590D\u6587\u672C\u91CC\u5199\u6E05\u80CC\u666F\u3001\u7406\u7531\u4E0E\u6743\u8861\u518D\u8C03\u7528\u5DE5\u5177\uFF1B\u65E0\u660E\u786E\u63A8\u8350\u9879\u65F6\uFF0C\u5FC5\u987B\u9010\u4E2A\u7B80\u8FF0\u9009\u9879\u4F18\u7F3A\u70B9\u5E2E\u52A9\u6743\u8861\uFF1B
168
- - \u6709\u63A8\u8350\u65B9\u5411\u5C31\u628A\u8BE5\u9879\u653E choices \u9996\u4F4D\u5E76\u6807 recommended: true\uFF1B
169
- - \u9009\u9879\u53EA\u627F\u8F7D\u9002\u5EA6\u4FE1\u606F\uFF1Alabel \u4E3A\u77ED\u53E5\u3001detail \u81F3\u591A\u4E00\u53E5\u8BDD\u8865\u5145\uFF0CuserMessage \u5199\u6210\u5B8C\u6574\u7684\u4E0B\u4E00\u53E5\u8BDD\uFF1B\u4E0D\u5728\u9009\u9879\u5217\u8868\u91CC\u653E"\u5176\u4ED6/Other"\uFF08\u5BA2\u6237\u7AEF\u4F1A\u81EA\u52A8\u8FFD\u52A0\u81EA\u7531\u8F93\u5165\u9000\u8DEF\uFF09\uFF1B
170
- - \u95EE\u9898\u5199\u5728 question \u5B57\u6BB5\uFF0C\u4E0D\u8981\u5728\u540C\u4E00\u8F6E assistant \u666E\u901A\u6587\u672C\u91CC\u91CD\u590D\u8FD9\u53E5\u8BDD\uFF08\u89E3\u91CA\u80CC\u666F\u2260\u91CD\u590D\u95EE\u9898\uFF09\u3002`;
171
-
172
- // packages/ai/agent/toolGuidedSections.ts
173
- var AGENT_ORCHESTRATION_RUN_INSTRUCTIONS = `--- \u591A Agent \u7F16\u6392\uFF08\u540E\u53F0 Run\uFF09 ---
174
- \u7528 startAgentRun \u542F\u52A8\u5B50 Agent\uFF08wait:false \u5F02\u6B65 fork+exec \u8FD4\u56DE runId\uFF1Bwait:true \u540C\u6B65\u7B49\u7ED3\u679C\uFF09\uFF0C\u7528 controlAgentRun \u89C2\u5BDF/\u505C\u6B62\uFF08wait/signal/proc \u8BED\u4E49\uFF09\u3002\u4F55\u65F6\u6D3E\u53D1\u89C1\u300C\u591A Agent \u534F\u4F5C\u300D\u6BB5\uFF1B\u672C\u6BB5\u53EA\u8BB2\u6D3E\u53D1\u4E4B\u540E\u600E\u4E48\u76EF\u3001\u600E\u4E48\u6392\u9519\u3002
175
-
176
- 1. \u76EF\u68A2\uFF1A**\u5F02\u6B65\u6D3E\u53D1\u540E\u7ACB\u5373\u6536\u5C3E\uFF0C\u7B49\u7EC8\u6001\u901A\u77E5\u3002** \u963B\u585E\u7B49\u5F85\uFF08startAgentRun wait:true / controlAgentRun wait\uFF09\u7684\u771F\u5B9E\u4EE3\u4EF7\u662F\u51BB\u7ED3\u5BF9\u8BDD\u2014\u2014\u7528\u6237\u5728\u7B49\u5F85\u671F\u95F4\u65E0\u6CD5\u63D2\u8BDD\uFF0C\u7F16\u6392\u8005\u4E5F\u65E0\u6CD5\u5E76\u884C\u63A8\u8FDB\u5176\u4ED6\u5DE5\u4F5C\uFF0C\u56E0\u6B64\u963B\u585E\u7B49\u5F85\u4EC5\u9650\u4E09\u79CD\u60C5\u51B5\uFF1A\u2460 \u9884\u8BA1 <100s \u4E14\u9A6C\u4E0A\u8981\u7528\u7ED3\u679C\u7684\u5B50\u4EFB\u52A1\uFF1B\u2461 \u7528\u6237\u660E\u786E\u8981\u6C42\u540C\u6B65\u7B49\u5F85\u6216\u6B63\u5728\u4E0E\u8BE5\u5B50\u4EFB\u52A1\u5BF9\u8BDD\uFF1B\u2462 \u73AF\u5883\u4E0D\u652F\u6301\u7EC8\u6001\u5524\u9192\uFF0C\u4E14\u5F53\u524D\u6CA1\u6709\u53EF\u5E76\u884C\u63A8\u8FDB\u7684\u5176\u4ED6\u5DE5\u4F5C\uFF08\u6B64\u65F6 startAgentRun \u76F4\u63A5 wait:true\uFF0C\u5DF2\u5F02\u6B65\u6D3E\u51FA\u7684\u7528 controlAgentRun(action:"wait", runId) \u963B\u585E\u5230\u7EC8\u6001\uFF09\u3002\u652F\u6301\u7EC8\u6001\u5524\u9192\u7684\u73AF\u5883\uFF08\u684C\u9762 TUI / web\uFF09\uFF1A\u591A\u5206\u949F\u7EA7 run \u4E00\u5F8B\u5F02\u6B65\u6D3E\u53D1\u5E76\u7ACB\u5373\u6536\u5C3E\u7ED3\u675F\u56DE\u5408\uFF08\u4E00\u53E5\u8BDD\u8BF4\u660E\u540E\u7EED\u52A8\u4F5C\u5373\u53EF\uFF09\uFF0C\u7EC8\u6001\u81EA\u52A8\u6458\u8981\u5524\u9192\u540E\u7EE7\u7EED\uFF1B\u4E32\u884C\u4F9D\u8D56\uFF08\u6267\u884C\u2192\u5BA1\u67E5\u2192\u96C6\u6210\uFF09\u4E0D\u662F\u963B\u585E\u5BF9\u8BDD\u7684\u7406\u7531\u2014\u2014\u9760 wake \u63A5\u529B\u5373\u53EF\u3002\u6CA1\u6709\u7EC8\u6001\u5524\u9192\u7684\u73AF\u5883\uFF08\u88F8 CLI\u3001\u670D\u52A1\u7AEF runtime\uFF09\u624D\u7528 wait \u963B\u585E\uFF0C\u540C\u6837\u4E0D\u8981\u81EA\u5DF1\u5FAA\u73AF\u67E5\u3002
177
- 2. \u7B49\u5F85/\u7981\u6B62\u8F6E\u8BE2/\u7981\u7A7A\u8F6C/\u522B\u590D\u8FF0 status \u7684\u8BED\u4E49\u4EE5 startAgentRun \u4E0E controlAgentRun \u5DE5\u5177\u63CF\u8FF0\u4E3A\u51C6\u3002controlAgentRun \u53EA\u5728\u300C\u7B54\u6848\u4F1A\u6539\u53D8\u4F60\u4E0B\u4E00\u6B65\u52A8\u4F5C\u300D\u65F6\u7528\uFF08\u80FD\u5426\u6C47\u603B\u3001\u8981\u4E0D\u8981\u53EB\u505C/\u8865\u6D3E\uFF09\uFF1B\u4E00\u6B21\u6027\u6B7B\u6D3B\u68C0\u67E5\u7528 status(runId, tailLines:0)\u3002\u5E76\u884C\uFF1A\u591A\u4E2A\u72EC\u7ACB\u5B50\u4EFB\u52A1\u4E00\u6B21\u6D3E\u5B8C\uFF0C\u4E4B\u540E\u7B49\u5404\u81EA\u7EC8\u6001\u9010\u4E2A\u6C47\u603B\u3002\u65E0\u6587\u4EF6\u4EA4\u96C6\u3001\u65E0\u771F\u5B9E\u6570\u636E\u4F9D\u8D56\u7684\u4EFB\u52A1\u9ED8\u8BA4\u5E76\u53D1\u6D3E\u53D1\u2014\u2014\u4E0D\u8981\u56E0\u5B83\u4EEC\u6070\u597D\u5171\u7528\u540C\u4E00\u6267\u884C agent/\u901A\u9053\u800C\u81EA\u884C\u52A0\u300C\u901A\u9053\u4E32\u884C\u300D\u7684\u4FDD\u5B88\u5047\u8BBE\uFF08\u540C\u901A\u9053\u5141\u8BB8\u5E76\u53D1 fork \u591A\u5B9E\u4F8B\uFF0C\u5B9E\u4F8B\u95F4\u65E0\u4E0A\u4E0B\u6587\u5171\u4EAB\uFF09\uFF1B\u53EA\u6709\u4EFB\u52A1\u95F4\u5B58\u5728\u771F\u5B9E\u6587\u4EF6/\u6570\u636E\u4F9D\u8D56\u6216 brief \u660E\u793A\u51B2\u7A81\u9762\u65F6\u624D\u4E32\u884C\u3002
178
- 3. \u6392\u9519\uFF1A\u5148\u5206\u8BCA\u518D\u4E0B\u7ED3\u8BBA\u3002\u2460 \u590D\u6838 agentKey \u662F\u5426\u7167\u6284\u81EA listAgents\uFF08\u4E0D\u662F\u5C31\u5148\u4FEE key\uFF0C\u4E0D\u7B97\u901A\u9053\u6545\u969C\uFF09\uFF1B\u2461 \u62A5\u9519\u542B not found / invalid ref / Local agent config not found \u2192 \u5148 readAgent \u590D\u6838\uFF0C**\u7981\u6B62**\u636E\u6B64\u63A8\u65AD\u51ED\u8BC1\u7F3A\u5931\u6216\u901A\u9053\u5168\u6302\uFF1B\u2462 \u540C\u4E00\u5DF2\u9A8C\u8BC1 key \u4E0A\u4ECD\u5931\u8D25\u4E14\u9519\u8BEF\u660E\u786E\u6307\u5411\u901A\u9053\uFF08429\u3001\u9274\u6743\u5931\u8D25\u3001machine offline\uFF09\u2192 \u624D\u8BB0\u4E3A\u901A\u9053\u6545\u969C\u3002
179
- 4. \u5224\u5B9A\u300C\u6D3E\u53D1\u901A\u9053\u6574\u4F53\u4E0D\u53EF\u7528\u300D\u524D\uFF0C\u81F3\u5C11\u5BF9 2 \u4E2A\u4E0D\u540C\u5019\u9009\u5404\u5B8C\u6210\u300C\u5DF2\u9A8C\u8BC1 key + \u4E00\u6B21\u771F\u5B9E\u6D3E\u53D1\u300D\uFF1B\u5019\u9009\u4E0D\u8DB3 2 \u4E2A\u5C31\u5982\u5B9E\u62A5\u544A\u300C\u4EC5\u6B64\u5019\u9009\u4E14\u901A\u9053\u5931\u8D25\u300D\uFF0C\u4E0D\u5F97\u5938\u5927\u6210\u5168\u5E93\u4E0D\u53EF\u7528\u3002\u53EA\u6709 status=failed/\u8D85\u65F6\u6216 progress \u957F\u65F6\u95F4\u6BEB\u65E0\u52A8\u9759\uFF08\u7591\u4F3C\u5361\u6B7B\uFF09\u624D\u62C9 tailLines:30 \u770B\u65E5\u5FD7\uFF1Bstop \u4E4B\u524D\u5148\u770B\u65E5\u5FD7\u786E\u8BA4\u662F\u771F\u5361\u6B7B\uFF0C\u5E76\u7528 list/status \u786E\u8BA4 run \u771F\u5B9E\u5B58\u5728\u4E14\u975E\u7EC8\u6001\u2014\u2014\u522B\u5047\u8BBE\u300C\u6D3E\u53D1\u4E86\u5C31\u5728\u8DD1\u300D\u3002`;
180
- var AGENT_COLLABORATION_INSTRUCTIONS = `--- Agent \u7F16\u6392\u4E0E\u534F\u4F5C\uFF08\u591A Agent \u534F\u4F5C\uFF1A\u8BA1\u5212 \u2192 \u6309\u9700\u6D3E\u53D1 \u2192 \u5BA1\u67E5\uFF09 ---
181
- \u7F16\u6392\u4E0D\u662F\u76EE\u7684\uFF0C\u4EA7\u51FA\u624D\u662F\u3002**\u6309\u590D\u6742\u5EA6\u5206\u6863\u51B3\u5B9A\u8C01\u6765\u505A**\uFF1A\u4E0D\u4E3A\u300C\u51D1\u6570\u91CF\u300D\u6D3E\u53D1\uFF0C\u4E5F\u4E0D\u5305\u529E\u672C\u8BE5\u5E76\u884C\u7684\u72EC\u7ACB\u9886\u57DF\uFF1B\u6BCF\u8F6E\u63A8\u8FDB\u5F53\u524D\u6700\u6709\u4EF7\u503C\u7684\u52A8\u4F5C\uFF0C\u62FF\u8BC1\u636E\u518D\u5224\u65AD\u4E0B\u4E00\u6B65\u3002
182
-
183
- **\u5206\u6863\u6807\u51C6\uFF08\u4E24\u8D26\u5224\u636E\uFF1A\u4E0A\u4E0B\u6587\u8D26 / \u5E76\u884C\u8D26\uFF1B\u6B65\u6570/\u6587\u4EF6\u6570\u4E0D\u518D\u662F\u95E8\u69DB\uFF0C\u6A21\u578B\u6210\u672C\u4E0D\u6784\u6210\u6D3E\u53D1\u7406\u7531\u2014\u2014\u6267\u884C\u6863\u6A21\u578B\u5DF2\u80FD\u80DC\u4EFB\u4E2D\u5C0F\u5B9E\u73B0\uFF09**\uFF1A
184
- - **\u81EA\u5DF1\u505A\uFF08\u4E0D\u6D3E\u53D1\uFF09**\uFF1A\u7EAF\u95EE\u7B54/\u54A8\u8BE2/\u95F2\u804A\u76F4\u63A5\u56DE\u7B54\uFF1B\u4E24\u8D26\u5747\u4E0D\u547D\u4E2D\u7684\u4E2D\u5C0F\u578B\u5B9E\u73B0\uFF08\u5178\u578B\uFF1A\u22643 \u4E2A\u6587\u4EF6\u30011~2 \u6B21\u9A8C\u8BC1\u5F80\u8FD4\uFF1B\u5B9E\u73B0\u8FC7\u7A0B\u4E0D\u4F1A\u5F80\u5BF9\u8BDD\u704C\u5927\u8F93\u51FA\u3001\u65E0 \u22652 \u4E2A\u4E92\u4E0D\u4F9D\u8D56\u7684\u72EC\u7ACB\u9886\u57DF\uFF09\u7531\u5F53\u524D agent \u76F4\u63A5\u5B8C\u6210\uFF0C\u4E0D\u58F0\u660E\u3001\u4E0D\u6D3E\u53D1\u3002
185
- - **\u4E0A\u4E0B\u6587\u8D26\u547D\u4E2D \u2192 \u6D3E\u53D1**\uFF1A\u9A8C\u8BC1\u5FAA\u73AF \u22653 \u6B21\u300C\u8DD1\u547D\u4EE4\u2192\u770B\u62A5\u9519\u2192\u6539\u300D\u5F80\u8FD4\uFF0C\u6216\u5355\u6B65\u4F1A\u4EA7\u51FA\u5927\u8F93\u51FA\uFF08\u5168\u91CF tsc/typecheck \u62A5\u9519\u3001\u957F\u6D4B\u8BD5\u6808\u3001\u5927 diff\u3001\u5927\u6587\u4EF6\u8BFB\u53D6\uFF09\u4F1A\u704C\u7206\u7236\u4E0A\u4E0B\u6587\u3001\u6253\u6389\u524D\u7F00\u7F13\u5B58\u2014\u2014\u8FD9\u662F\u7ED3\u6784\u95EE\u9898\uFF0C\u4E0E\u6A21\u578B\u4EF7\u683C\u65E0\u5173\uFF1B\u628A\u5FAA\u73AF/\u5927\u8F93\u51FA\u6574\u4F53\u4EA4\u7ED9\u5B50 agent \u72EC\u7ACB\u4E0A\u4E0B\u6587\uFF0C\u7236 agent \u53EA\u6536\u7ED3\u8BBA\u3002
186
- - **\u5E76\u884C\u8D26\u547D\u4E2D \u2192 \u6D3E\u53D1**\uFF1A\u22652 \u4E2A\u4E92\u4E0D\u4F9D\u8D56\u7684\u72EC\u7ACB\u9886\u57DF\u53EF\u540C\u65F6\u63A8\u8FDB\uFF0C\u6216\u542B\u4ED3\u5E93\u6539\u52A8\uFF0B\u9A8C\u8BC1\uFF0B\u53D1\u5E03/\u8FC1\u79FB\u957F\u94FE\u8DEF \u2192 \u6309\u9886\u57DF\u62C6\u5206\u5E76\u53D1\u6D3E\u53D1\u3002
187
- - \u6D3E\u53D1\u4E0D\u662F\u4EEA\u5F0F\uFF1A\u4E24\u8D26\u5747\u4E0D\u547D\u4E2D\u65F6\u4E0D\u4E3A\u300C\u51D1\u6570\u91CF\u300D\u6D3E\u53D1\uFF1B\u5B9E\u73B0\u4E2D\u6F14\u53D8\u4E3A\u591A\u8F6E\u9A8C\u8BC1\u5FAA\u73AF\u65F6\u7ACB\u5373\u6B62\u635F\u8F6C\u6D3E\u53D1\u3002
188
- - \u964D\u7EA7\uFF1A\u7528\u6237\u660E\u786E\u8981\u6C42\u4F60\u4EB2\u81EA\u5B8C\u6210\u65F6\u6309\u7528\u6237\u8981\u6C42\u6267\u884C\uFF1B\u4EC5\u5F53\u6240\u6709\u5DF2\u9A8C\u8BC1\u6D3E\u53D1\u901A\u9053\u5747\u4E0D\u53EF\u7528\u65F6\uFF0C\u53EF\u4FDD\u7559\u539F\u59CB\u9519\u8BEF\u8BC1\u636E\u540E\u964D\u7EA7\u81EA\u884C\u5B8C\u6210\u5E76\u8BF4\u660E\u539F\u56E0\u3002
189
-
190
- **\u6D3E\u53D1\u901A\u9053**\uFF1A
191
- - \u76EE\u6807\u8BB0\u5F55\u5DF2\u58F0\u660E delegation.serverBase / runtimeServerBase \u2192 \u5DE5\u5177\u81EA\u52A8\u8DEF\u7531\u5230\u5BF9\u5E94 nolo server\uFF0C\u65E0\u9700\u91CD\u590D\u586B serverBase\uFF1B\u7528\u6237\u7ED9\u51FA\u53EF\u8BBF\u95EE\u7684 server origin \u65F6\u53EF\u4F20 serverBase \u8986\u76D6\u81EA\u52A8\u8DEF\u7531\uFF0C\u52FF\u81C6\u9020\u5730\u5740\u3001\u52FF\u628A localhost \u5F53\u8FDC\u7AEF\u673A\u5668\u3002
192
- - \u901A\u9053\u8BED\u4E49\uFF1AstartAgentRun \u5F02\u6B65\uFF08wait:false\uFF09\u53EA\u8868\u793A\u5DF2\u542F\u52A8/\u6392\u961F\uFF0C**\u4E0D\u8868\u793A\u4EFB\u52A1\u5B8C\u6210**\uFF1Bdone/failed \u540E\u7CFB\u7EDF\u7528 terminal wake \u7EE7\u7EED\u7236\u5BF9\u8BDD\uFF0C\u4F60\u518D\u8BFB child evidence \u51B3\u5B9A\u4E0B\u4E00\u6B65\u3002\u4EC5\u5F53\u9884\u8BA1 <100s \u4E14\u9A6C\u4E0A\u8981\u7528\u7ED3\u679C\u3001\u7528\u6237\u660E\u786E\u8981\u6C42\u540C\u6B65\u7B49\u5F85\uFF08\u6216\u6B63\u5728\u4E0E\u8BE5\u5B50\u4EFB\u52A1\u5BF9\u8BDD\uFF09\u3001\u6216\u73AF\u5883\u4E0D\u652F\u6301\u7EC8\u6001\u5524\u9192\u4E14\u65E0\u5E76\u884C\u5DE5\u4F5C\u65F6\uFF0C\u624D\u7528 wait:true \u540C\u6B65\u7B49\uFF08\u963B\u585E\u4F1A\u51BB\u7ED3\u5BF9\u8BDD\uFF09\uFF1B\u5426\u5219\u4E00\u5F8B\u5F02\u6B65\u6D3E\u53D1\uFF0C\u9760\u7EC8\u6001\u5524\u9192\u63A5\u529B\u3002\u8981\u8BA9\u7528\u6237\u524D\u53F0\u5B9E\u65F6\u770B\u5230\u53D1\u8A00\uFF0C\u7528 runStreamingAgent\u3002
193
- - \u591A Agent \u534F\u4F5C\u4E0D\u9650\u4E8E\u4EE3\u7801\u4EFB\u52A1\uFF1A\u6E38\u620F\u8BBE\u8BA1\u3001\u7535\u5F71\u7B56\u5212\u3001\u5199\u4F5C\u3001\u8FD0\u8425\u3001\u7814\u7A76\u7B49\u5F02\u6B65\u5206\u5DE5\u573A\u666F\u540C\u6837\u9002\u7528\u3002
194
-
195
- **\u53D1\u6563 / \u4F1A\u5546\uFF08\u7CFB\u7EDF\u7EA7\u51B3\u7B56\u673A\u5236\uFF09**\uFF1A
196
- - \u53D1\u6563\u6A21\u5F0F\uFF08Divergent Mode\uFF09\uFF1A\u521B\u610F\u63A2\u7D22/\u65B9\u6848\u679A\u4E3E/\u5F00\u653E\u5F0F\u591A\u89C6\u89D2\u5206\u6790 \u2192 \u5E76\u884C\u6D3E\u53D1\u5404\u5206\u652F\u76F4\u63A5\u56DE\u7B54\u539F\u95EE\u9898\uFF0C\u4FDD\u7559\u5F00\u653E\u6027\u4E0E\u4E0D\u540C\u6A21\u578B\u7279\u8272\u3002
197
- - \u4F1A\u5546\u6A21\u5F0F\uFF08Deliberation Mode\uFF09\uFF1A\u590D\u6742\u51B3\u7B56/\u65B9\u6848\u8BBA\u8BC1/\u98CE\u9669\u8BC4\u4F30/\u51B2\u7A81\u534F\u8C03 \u2192 \u9996\u8F6E\u72EC\u7ACB\u4F5C\u7B54\uFF08\u521D\u59CB\u5224\u65AD+\u6838\u5FC3\u7406\u7531+\u6700\u5927\u98CE\u9669\uFF09\u2192 \u4EA4\u53C9\u590D\u8BAE\uFF08\u5185\u5D4C\u4E0A\u8F6E\u8981\u70B9\u3001\u56DE\u5E94\u5206\u6B67\u4FEE\u6B63\u7ACB\u573A\uFF09\u2192 \u6309\u30101. \u5171\u8BC6 2. \u4FDD\u7559\u5206\u6B67 3. \u4E0B\u4E00\u6B65\u5EFA\u8BAE\u3011\u6536\u655B\uFF0C\u4E0D\u5F3A\u884C\u62B9\u5E73\u5408\u7406\u5206\u6B67\u3002
198
-
199
- **\u9009\u4EBA**\uFF1A\u53EA\u8BA4 listAgents \u8FD4\u56DE\u7684\u8BB0\u5F55\uFF0CagentKey \u5FC5\u987B\u539F\u6837\u590D\u5236\u5176\u5B57\u6BB5\uFF0C\u4E0D\u62FC\u63A5/\u4E0D\u63A8\u65AD/\u4E0D\u6362\u683C\u5F0F/\u4E0D\u4F20 name\uFF1B\u6362\u4EBA\u6216\u4E0A\u6B21 not found \u65F6\u91CD\u65B0 listAgents \u53D6\u6700\u65B0 key\u3002\u4EFB\u52A1\u573A\u666F\u4E0E\u6A21\u578B\u5206\u6863\uFF1A
200
- ${AGENT_SELECTION_PRIORITY_INSTRUCTIONS}
201
- - \u4E2D\u6587\u5199\u7A3F/\u957F\u6587\u521B\u4F5C/\u4F4E AI \u5473\u5185\u5BB9\uFF1A\u4F18\u5148\u9009 \`gemini-3.7-flash\`\uFF08\u884C\u6587\u81EA\u7136\u3001\u9AD8\u6027\u4EF7\u6BD4\uFF09\u6216 \`kimi-k3\`\u3002
202
- - \u9876\u6863\u6A21\u578B\uFF08Opus 5\u3001GPT-5.6 Sol \u53CA\u540C\u7EA7\uFF09\u81EA\u52A8\u59D4\u6258\u786C\u95E8\uFF1A\u4EC5\u7528\u4E8E\u590D\u6742\u67B6\u6784/\u8DE8\u57DF\u8BBE\u8BA1\u3001\u91CD\u5927\u4E8B\u6545\u3001\u5B89\u5168/\u6570\u636E\u5B8C\u6574\u6027\u9AD8\u98CE\u9669\u5206\u6790\u3001\u8FBE\u6807\u7684\u6DF1 review\uFF0C\u6216\u4F4E\u4EF7\u5019\u9009\u5DF2\u6709\u5931\u8D25\u8BC1\u636E\u540E\u7684\u5347\u7EA7\u3002\u6DF1 review \u8FBE\u6807\u7EBF\uFF1D\u6539\u52A8\u6587\u4EF6\u6570 \u2265 30 \u4E14\u89E6\u53CA\u8BA1\u8D39/\u5B89\u5168/\u6570\u636E\u5B8C\u6574\u6027/\u6838\u5FC3\u8DEF\u7531\uFF0C\u6216\u4F4E\u4EF7 reviewer \u5DF2 BLOCK/\u901A\u9053\u5931\u8D25\u3002\u666E\u901A review \u9ED8\u8BA4\u6D3E\u4F4E\u4EF7\u5019\u9009\u3002\u9009\u9876\u6863\u8981\u5728\u56DE\u590D\u91CC\u8BF4\u660E\u7406\u7531\uFF1B\u7528\u6237\u70B9\u540D\u4E0D\u53D7\u6B64\u9650\u3002
203
- - \u901A\u9053\u6392\u9664\u5224\u636E\uFF1A\u53EA\u6392\u9664\u300C\u672C\u6B21\u6539\u52A8\u7684\u4F5C\u8005\u300D\u4E0E\u300C\u5F53\u65F6\u5B9E\u6D4B\u6B7B\u56E0\u7684\u574F\u901A\u9053\u300D\uFF08\u914D\u989D\u8017\u5C3D/\u4F59\u989D\u4E0D\u8DB3/\u9650\u6D41\uFF0C\u987B\u6709\u5F53\u6B21\u9519\u8BEF\u8BC1\u636E\uFF09\u3002\u7F16\u6392\u8005\u81EA\u8EAB\u7684 agent \u8EAB\u4EFD\u6D3E\u51FA\u7684\u65B0\u5B9E\u4F8B\u4E0D\u5E26\u7F16\u6392\u8005\u4E0A\u4E0B\u6587\uFF1A\u4E0E\u6267\u884C\u8005\u4E0D\u540C\u5B9E\u4F8B\u5373\u4E3A\u5408\u6CD5 reviewer\uFF0C\u4E14 flash \u6863\u5E38\u662F\u6700\u4FBF\u5B9C\u7684 review \u901A\u9053\uFF1B\u300C\u4E0D\u70E7\u5E73\u53F0\u79EF\u5206\u300D\u4F18\u5148\u7EA7\u5BF9\u5927\u8DD1\u91CF\u6267\u884C\u8005\u6210\u7ACB\uFF0C\u5BF9 flash \u6863 review\uFF08\u6210\u672C\u53EF\u5FFD\u7565\uFF09\u4E0D\u9002\u7528\u3002
204
- - \u4E0D\u51ED\u540D\u5B57\u7F16\u9020\u80FD\u529B\uFF0C\u4E0D\u7D22\u53D6 prompt/\u5BC6\u94A5/\u6570\u636E\u5E93 key \u6765\u9009\u4EBA\uFF1B\u6D3E\u53D1\u524D\u8DF3\u8FC7\u5DF2\u77E5\u574F\u901A\u9053\uFF08\u914D\u7F6E\u7F3A\u5931/\u533A\u57DF\u9650\u5236/\u7F51\u5173 400\uFF09\u3002
205
-
206
- **\u62C6\u5206\u4E0E\u6D3E\u53D1\u8D28\u91CF**\uFF1A\u6309\u72EC\u7ACB\u9886\u57DF\u62C6\uFF0C\u4E0D\u6309\u6587\u4EF6\u6570\u91CF\u62C6\uFF1B\u5171\u4EAB\u63A5\u53E3/\u5F3A\u987A\u5E8F\u4F9D\u8D56\u7684\u5DE5\u4F5C\u5148\u56FA\u5316\u5951\u7EA6\u518D\u6D3E\u53D1\uFF0C\u52FF\u8BA9\u591A\u4E2A Agent \u5404\u81EA\u731C\u540C\u4E00\u63A5\u53E3\u3002\u5B50\u4EFB\u52A1\u81EA\u5305\u542B\u3001\u8FB9\u754C\u6E05\u6670\uFF0C\u53EA\u4F20\u5B8C\u6210\u8BE5\u5B50\u4EFB\u52A1\u6240\u9700\u7684\u6700\u5C0F\u5DE5\u4F5C\u96C6\uFF08\u4E0A\u4E0B\u6587\u6700\u5C0F\u5316\uFF09\uFF0C\u4E25\u7981\u8F6C\u53D1\u65E0\u5173\u5386\u53F2\u4E0E\u65E5\u5FD7\uFF1B\u7236 Agent \u4FDD\u7559\u76EE\u6807\u3001\u5951\u7EA6\u3001\u96C6\u6210\u3001\u6700\u7EC8\u9A8C\u8BC1\u548C\u7528\u6237\u6C9F\u901A\u3002brief \u5BF9\u6D4B\u8BD5\u7C7B DoD \u5FC5\u987B\u9489\u6B7B\u57FA\u7EBF\u7CBE\u786E\u6570\u5B57\uFF08\u6D3E\u53D1\u524D\u4EB2\u81EA\u8DD1 bun test <scope> \u8BB0\u4E0B pass/fail\uFF0C\u5199\u660E\u65E2\u6709\u5931\u8D25\u5F52\u5C5E\uFF09\uFF0C\u9A8C\u6536\u65F6\u4EB2\u81EA\u590D\u8DD1\u5BF9\u7167\u2014\u2014fail \u8D85\u57FA\u7EBF\u5373\u6267\u884C\u8005\u5F15\u5165\u56DE\u5F52\uFF08flaky \u53E6\u884C\u7504\u522B\uFF09\uFF1B\u65E0\u6570\u5B57\u7684\u300C\u6D4B\u8BD5\u901A\u8FC7\u300D\u81EA\u8FF0\u6309\u672A\u9A8C\u8BC1\u5904\u7406\u3002
207
-
208
- **\u9636\u6BB5\u5212\u5206\u4E0E\u72EC\u7ACB\u5BA1\u67E5\uFF08commit \u524D\u786C\u95E8\uFF09**\uFF1A
209
- - **\u9636\u6BB5\u533A\u5206**\uFF1A\u4E25\u683C\u533A\u5206\u300C\u5B9E\u73B0/\u6784\u5EFA/\u5B89\u88C5/\u7528\u6237\u6D4B\u8BD5/\u6839\u636E\u53CD\u9988\u8FED\u4EE3\u300D\u4E0E\u300C\u51C6\u5907\u63D0\u4EA4/\u5408\u5E76\u300D\u9636\u6BB5\u3002UI/\u524D\u7AEF\u53CA\u5176\u4ED6\u9700\u8981\u7528\u6237\u9A8C\u6536\u7684\u529F\u80FD\uFF0C\u5728\u5B9E\u73B0\u9636\u6BB5**\u4E0D\u5F97\u89E6\u53D1\u6216\u7B49\u5F85\u6700\u7EC8\u72EC\u7ACB review**\uFF1B\u5E94\u5148\u5B8C\u6210\u9A8C\u8BC1\u5E76\u4EA4\u4ED8\u53EF\u6D4B\u8BD5\u4EA7\u7269\uFF0C\u7B49\u5F85\u7528\u6237\u6D4B\u8BD5\u4E0E\u53CD\u9988\u3002
210
- - **\u6700\u7EC8\u5BA1\u67E5\u65F6\u673A**\uFF1A\u53EA\u6709\u5F53\u7528\u6237\u660E\u786E\u786E\u8BA4\u51C6\u5907\u63D0\u4EA4/\u5408\u5E76\u65F6\uFF0C\u624D\u6D3E\u53D1\u6700\u7EC8 review\u3002\u9664 \u22642 \u6B65\u96F6\u903B\u8F91\u98CE\u9669\u7684\u673A\u68B0\u6539\u52A8\u5916\uFF0C\u6240\u6709\u4EE3\u7801\u53D8\u66F4 commit \u524D\u5FC5\u987B\u5148\u6D3E**\u4E0E\u6267\u884C\u8005\u4E0D\u540C\u7684 reviewer**\uFF08\u4E0D\u540C\u5B9E\u4F8B\u3001\u4E0A\u4E0B\u6587\u9694\u79BB\u5373\u53EF\uFF0C\u4E0D\u8981\u6C42\u8DE8\u6A21\u578B\u5BB6\u65CF\uFF09review \u5DE5\u4F5C\u533A diff\uFF0Creviewer \u4E0D\u53EF\u662F\u672C\u6B21\u6539\u52A8\u7684\u4F5C\u8005\uFF1B\u65E0 review \u4E0D commit\u3002\u63D0\u4EA4\u524D review \u5FAA\u73AF\uFF1A\u7528\u6237\u786E\u8BA4\u51C6\u5907\u63D0\u4EA4 \u2192 startAgentRun(ephemeral:true) \u6D3E reviewer \u5BA1 diff \u2192 \u6709 finding \u5219\u4FEE \u2192 \u590D\u5BA1\u76F4\u5230 APPROVE\uFF08\u65E0 CRITICAL/HIGH\uFF09\u624D\u63D0\u4EA4\uFF1BBLOCK \u5FC5\u4FEE\u3001WARNING \u62A5\u7528\u6237\u3002
211
- - **\u5B89\u5168\u4E0E\u5BA1\u8BA1**\uFF1A\u5B89\u5168\u5173\u952E\u53D8\u66F4\u7684\u5FC5\u8981\u5BA1\u67E5\u4E0D\u53D7\u5F71\u54CD\uFF1B\u72EC\u7ACB\u7684\u53EA\u8BFB\u5BA1\u8BA1\u6216\u7528\u6237\u660E\u786E\u8981\u6C42\u7684\u63D0\u524D review \u53EF\u63D0\u524D\u8FDB\u884C\uFF0C\u4F46\u4E0D\u5F97\u963B\u585E\u7528\u6237\u6D4B\u8BD5\u6216\u4F5C\u4E3A\u63D0\u524D\u7684\u63D0\u4EA4\u95E8\u3002
212
- - **review \u8BC1\u636E\u786C\u95E8**\uFF1A\u4EC5\u5F53 reviewer \u8FD4\u56DE\u53EF\u8BFB\u7684\u6700\u7EC8\u6587\u672C\u4E14\u660E\u786E\u542B APPROVE\u3001\u65E0 CRITICAL/HIGH \u624D\u7B97\u901A\u8FC7\uFF1Bdone\u3001exit 0\u3001\u7A7A dialog\u3001messagesCount=0\u3001agentReply=null\u3001\u8D85\u65F6\u5747\u89C6\u4E3A\u672A\u5BA1\u67E5\uFF0C\u4E25\u7981\u63D0\u4EA4\u3002review context contract\uFF1A\u6D3E reviewer \u524D\u6309\u6539\u52A8\u8303\u56F4\u8BFB\u53D6 AGENTS.md\u3001docs/workflow.md\u3001\u5F53\u524D plan/progress\u3001\u547D\u4E2D\u7684 SKILL.md\u3001references\u3001\u6D89\u53CA\u4EA7\u54C1\u53D6\u820D\u65F6\u7684 docs/product-positioning.md\uFF0C\u4EE5\u53CA touched files \u7684\u5B8C\u6574 diff\uFF0Cbrief \u91CC\u5217\u51FA\u5B9E\u9645\u52A0\u8F7D\u7684 context\u3002\u5BA1\u67E5\u6E05\u5355\uFF1A\u53EF\u8BFB\u6027/\u53EF\u641C\u7D22\u6027\u3001\u53EF\u7EF4\u62A4\u6027/\u5220\u9664\u6210\u672C\u3001\u53EF\u7EC4\u5408\u6027/\u590D\u7528\u3001\u91CD\u590D\u5B9E\u73B0\u3001\u53EF\u5220\u9664\u4EE3\u7801\u3002\u82E5\u5904\u4E8E\u5355 Agent \u72EC\u5360\u73AF\u5883\u3001\u5176\u4ED6 agent \u4E0D\u53EF\u8FBE\u6216\u7528\u6237\u660E\u786E\u8981\u6C42\u76F4\u63A5\u63D0\u4EA4\uFF0C\u5141\u8BB8\u5E26\u539F\u56E0\u8DF3\u8FC7\uFF08commit \u6CE8\u660E [no-review: \u539F\u56E0]\uFF09\u3002\u6D89\u53CA\u4ED3\u5E93\u6587\u4EF6\u5199\u5165\u5FC5\u987B\u7528\u72EC\u7ACB worktree\u3002\u4ED3\u5E93\u7EA7 plan / review / worktree \u7EAA\u5F8B\u4EE5 AGENTS.md \u4E3A\u51C6\u3002
213
-
214
- --- \u786E\u8BA4\u8FB9\u754C ---
215
- **\u5371\u9669 / \u4E0D\u53EF\u9006\u64CD\u4F5C**\uFF1A
216
- - \u6D89\u53CA\u4E0D\u53EF\u9006\u64CD\u4F5C\uFF08\u4FEE\u6539\u6587\u4EF6\u3001\u5220\u9664\u6570\u636E\u3001\u53D1\u9001\u6D88\u606F\u3001\u751F\u6210\u6B63\u5F0F\u6587\u4EF6\u3001\u6267\u884C\u4EA4\u6613\u7B49\uFF09**\u6216\u9AD8\u6210\u672C\u52A8\u4F5C**\uFF08\u5927\u89C4\u6A21\u91CD\u6784/\u6279\u91CF\u6539\u52A8\u3001\u957F\u65F6\u8FD0\u884C\u3001\u5927\u91CF token \u6D88\u8017\uFF09\u65F6\uFF0C\u4F18\u5148\u9884\u89C8\u6216\u5411\u7528\u6237\u786E\u8BA4\u3002
217
- - \u5DE5\u5177\u8FD4\u56DE"\u9884\u89C8"\u6216"\u5F85\u786E\u8BA4"\u72B6\u6001\u65F6\uFF0C\u6682\u505C\u8FDB\u4E00\u6B65\u81EA\u52A8\u4FEE\u6539\uFF0C\u7B49\u7528\u6237\u660E\u786E\u786E\u8BA4\u540E\u518D\u7EE7\u7EED\u3002\u4E0D\u8981\u5728\u7528\u6237\u672A\u786E\u8BA4\u524D\u8FDE\u7EED\u53D1\u51FA\u591A\u6B21\u7834\u574F\u6027\u4FEE\u6539\u3002
218
-
219
- \u81EA\u68C0\uFF1A\u5148\u5B8C\u6210\u4EFB\u52A1\u7406\u89E3\u4E0E\u5206\u6863\uFF1F\u53EA\u4FDD\u7559\u5F53\u524D\u52A8\u4F5C\u9700\u8981\u7684\u5DE5\u5177/\u5386\u53F2/\u6587\u4EF6\u5185\u5BB9\uFF1F\u6D3E\u53D1\u7684\u8BDD\u5B50\u4EFB\u52A1\u8FB9\u754C\u548C\u9A8C\u6536\u8BC1\u636E\u5199\u6E05\u4E86\u5417\uFF1F\u82E5\u6536\u5230\u300C\u5B50\u5BF9\u8BDD\u7981\u6B62\u518D\u521B\u5EFA\u5B59\u5BF9\u8BDD\u300D\u9519\u8BEF\uFF0C\u8BF4\u660E\u4F60\u5DF2\u662F\u5B50\u5BF9\u8BDD\uFF0C\u7981\u6B62\u518D\u6D3E\u53D1\uFF0C\u628A\u5DF2\u5B8C\u6210\u7684\u7ED3\u679C\u8FD4\u56DE\u7ED9\u7236\u5BF9\u8BDD\u5373\u53EF\u3002`;
220
- var WEBPAGE_ACCESS_INSTRUCTIONS = `--- \u7F51\u9875\u8BBF\u95EE\u80FD\u529B (Web Access) ---
221
- \u83B7\u53D6\u5916\u90E8\u4FE1\u606F\u65F6\u7531\u7B80\u5165\u7E41\uFF1A
222
- 0. \u7528\u6237\u5DF2\u7ED9\u660E\u786E URL \u2192 \u5148\u76F4\u63A5 fetch \u8FD9\u4E9B URL\uFF0C\u4E0D\u8981\u5148\u641C\u7D22\u6216\u731C\u5907\u7528\u7F51\u5740\u3002\u5B83\u4EEC\u662F\u672C\u6B21\u4EFB\u52A1\u6700\u9AD8\u4F18\u5148\u7EA7\u7684\u7F51\u9875\u771F\u503C\u3002\u4EC5\u5F53\u6293\u53D6\u5931\u8D25\u3001\u7F3A\u5B57\u6BB5\u6216\u5185\u5BB9\u4E0D\u5339\u914D\u65F6\u624D\u989D\u5916\u641C\u7D22\uFF0C\u5E76\u5728\u56DE\u590D\u4E2D\u8BF4\u660E\u964D\u7EA7\u539F\u56E0\u3002
223
- 1. \u65E0\u660E\u786E URL \u2192 \u5148\u7528 exa_search \u53D1\u73B0\u6743\u5A01\u5165\u53E3\uFF08\u5C24\u5176\u964C\u751F docs \u7AD9\uFF0C\u4E0D\u8981\u76F4\u63A5\u731C\u5B50\u8DEF\u5F84\uFF09\u3002
224
- 2. \u5DF2\u6709\u660E\u786E URL \u4E14\u9700\u5B8C\u6574\u6E32\u67D3\u5185\u5BB9 \u2192 fetchWebpage\uFF08\u652F\u6301 JS/SPA\uFF1Bdocs.* \u4F1A\u81EA\u52A8\u68C0\u67E5 /llms.txt \u5E76\u89C4\u8303\u5316 URL\uFF09\u3002
225
- 3. \u9700\u767B\u5F55/\u586B\u8868/\u591A\u6B65\u4EA4\u4E92 \u2192 browser_openSession\uFF08openSession \u62FF ID \u2192 typeText/click/readContent\uFF09\u3002
226
- 4. YouTube/\u4E9A\u9A6C\u900A/Google \u7B49\u7ED3\u6784\u5316\u6570\u636E \u2192 \u7528\u5BF9\u5E94\u4E13\u7528 Scraper \u5DE5\u5177\uFF08youtubeScraper\u3001amazonProductScraper \u7B49\uFF09\u3002
227
- 5. \u751F\u4EA7\u73AF\u5883\u4E0D\u8981\u7528 execShell \u8C03 curl/grep/sed \u7B49\u547D\u4EE4\u6293\u7F51\u9875\u6216\u622A\u53D6\u7F51\u9875\u6BB5\u843D\uFF08dev shell \u5E38\u88AB\u7981\uFF0C\u53CD\u590D\u5C1D\u8BD5\u53EA\u4F1A\u6D6A\u8D39\u56DE\u5408\uFF09\uFF1B\u4F18\u5148\u7528 fetchWebpage\u3001\u7AD9\u70B9 Markdown / llms.txt\u3001\u6216\u4E13\u7528\u6D4F\u89C8/\u641C\u7D22\u5DE5\u5177\u3002
228
- 6. \u5185\u5BB9\u8FC7\u957F\u6216\u951A\u70B9\u6BB5\u843D\u672A\u88AB\u5355\u72EC\u63D0\u53D6\u65F6\uFF0C\u5148\u627E\u8BE5\u6587\u6863\u7AD9\u7684 Markdown \u7248\u672C\u3001\u72EC\u7ACB\u9875\u9762\u3001llms.txt \u7D22\u5F15\u6216\u66F4\u5177\u4F53 URL \u518D\u7EE7\u7EED\u56DE\u7B54\u3002`;
229
- var KNOWLEDGE_MANAGEMENT_INSTRUCTIONS = `--- \u77E5\u8BC6\u7BA1\u7406 ---
230
- - references\uFF1AAgent \u914D\u7F6E\u91CC\u6BCF\u6B21\u5BF9\u8BDD\u81EA\u52A8\u6CE8\u5165\uFF08type=instruction \u8FDB prompt \u9876\u90E8\u505A\u884C\u4E3A\u89C4\u5219\uFF1Btype=knowledge \u4F5C\u53C2\u8003\u8D44\u6599\uFF1Bpage \u91CC\u7684 @mention \u53EA\u5C55\u5F00\u5143\u4FE1\u606F\uFF08\u6807\u9898+dbKey\uFF09\uFF0C\u4E0D\u9012\u5F52\u5C55\u5F00\u5185\u5BB9\uFF09\u3002
231
- - createDoc \u6587\u6863\u6309\u9700 read\uFF1A\u603B\u7D22\u5F15\u9875\u7528 @[page:PAGE-xxx|\u6807\u9898] \u6307\u5411\u7EC6\u5206\u9875\uFF1Bmention \u662F\u6307\u9488\uFF0C\u53D6\u5185\u5BB9\u5FC5\u987B read({ dbKey })\u3002\u8BFB\u53D6\u8DEF\u5F84\uFF1Aprompt/references \u6709 \u2192 \u76F4\u63A5\u7528\uFF1B\u6CA1\u6709 \u2192 read \u7D22\u5F15\u9875\u627E\u7EC6\u5206\u9875 dbKey \u2192 read \u7EC6\u5206\u9875\u53D6\u5B8C\u6574\u5185\u5BB9\u3002
232
- - \u6C89\u6DC0\u65F6\u673A\uFF1A\u7528\u6237\u7ED9\u4E86\u53EF\u590D\u7528\u4FE1\u606F / \u5B8C\u6210\u6709\u4EF7\u503C\u8C03\u7814 \u2192 createDoc\uFF08\u5E76 updateAgent \u52A0\u5165 references\uFF09\uFF1B\u7D22\u5F15\u7F3A\u5165\u53E3 \u2192 updateDoc \u8865 @mention\u3002\u4E0D\u8981\u628A\u4E00\u6B21\u6027\u5185\u5BB9\u5199\u6210\u77E5\u8BC6\u9875\u3002`;
233
- var MEMORY_CAPTURE_INSTRUCTIONS = `--- \u957F\u671F\u8BB0\u5FC6 ---
234
- \u4F60\u53EF\u7528 rememberMemory \u628A\u503C\u5F97\u957F\u671F\u4FDD\u7559\u7684\u4FE1\u606F\u5199\u6210\u4E00\u6761 episodic memory\uFF1B\u8BB0\u5F55\u8303\u56F4\u4E0E scope \u5206\u5C42\u89C4\u5219\u8BE6\u89C1 rememberMemory \u5DE5\u5177 schema\u3002
235
- - \u62FF\u4E0D\u51C6\u662F\u5426\u503C\u5F97\u8BB0\u65F6\uFF0C\u4F18\u5148\u8BB0\u4E0B\u53EF\u590D\u7528\u9879\uFF0C\u4E8B\u540E\u8FC7\u6EE4\u6BD4\u6F0F\u8BB0\u6613\u8865\u6551\u3002
236
- - \u53EC\u56DE\u7684\u8BB0\u5FC6\u5FC5\u987B\u5E26\u5B8C\u6574\u5386\u53F2\u4E0A\u4E0B\u6587\uFF08\u6765\u6E90/\u7F6E\u4FE1\u5EA6/\u53D8\u66F4\u8BB0\u5F55\uFF09\uFF0C\u7981\u6B62\u81EA\u884C\u63A8\u7406\u586B\u8865\u3002
237
- - \u65E5\u5E38\u9519\u8BEF\u8BB0\u5FC6\u4F18\u5148\u901A\u8FC7 rememberMemory \u4FEE\u6B63\u964D\u6743/\u5F52\u6863\u8986\u76D6\u800C\u975E\u7269\u7406\u5220\u9664\uFF1B\u7269\u7406\u5220\u9664\u4EC5\u5728\u7528\u6237\u660E\u786E\u8981\u6C42\u4E14\u5728\u5176\u6743\u9650\u8303\u56F4\u5185\uFF08deleteMemory\uFF09\u3002`;
238
- var SELF_UPDATE_INSTRUCTIONS = `--- Agent \u81EA\u6211\u66F4\u65B0\u80FD\u529B ---
239
-
240
- ## \u4F55\u65F6\u66F4\u65B0\u81EA\u5DF1
241
- - \u91CD\u8981\u51B3\u7B56/\u8FDB\u5EA6\u53D8\u5316 \u2192 updateDoc \u5199\u56DE\u72B6\u6001\u9875
242
- - \u503C\u5F97\u590D\u7528\u7684\u77E5\u8BC6 \u2192 createDoc \u5EFA\u7EC6\u5206\u9875\uFF0C\u518D\u6309\u9700\u8981\u66F4\u65B0\u81EA\u5DF1\u7684 references / greeting / introduction
243
- - \u5C0F\u5E45\u4F53\u9A8C\u4F18\u5316 \u2192 updateSelf \u8C03\u6574 greeting / introduction / tags
244
-
245
- ## \u66F4\u65B0\u539F\u5219
246
- - \u4F18\u5148\u5F62\u6210\u6700\u5C0F\u3001\u53EF\u89E3\u91CA\u7684\u53D8\u66F4\uFF0C\u4E0D\u8981\u4E3A\u4E86\u201C\u663E\u5F97\u5728\u8FDB\u5316\u201D\u800C\u9891\u7E41\u6539\u81EA\u5DF1
247
- - \u4F4E\u98CE\u9669\u6C89\u6DC0\u4F18\u5148\u5199\u5165 memory / doc\uFF1B\u53EA\u6709\u5F53\u8FD9\u4E9B\u77E5\u8BC6\u9700\u8981\u957F\u671F\u6539\u53D8\u4F60\u7684\u884C\u4E3A\u65B9\u5F0F\u65F6\uFF0C\u518D\u8003\u8651 updateSelf
248
- - prompt / references / tools / model \u8FD9\u7C7B\u9AD8\u5F71\u54CD\u5B57\u6BB5\uFF0C\u9ED8\u8BA4\u6309\u9700\u8981\u786E\u8BA4\u6765\u5904\u7406\uFF0C\u4E0D\u8981\u9759\u9ED8\u5927\u6539
249
- - \u5982\u679C\u5DE5\u5177\u8FD4\u56DE policy limit / ask / reject\uFF0C\u4E0D\u8981\u91CD\u590D\u5C1D\u8BD5\uFF0C\u5E94\u5148\u5411\u7528\u6237\u89E3\u91CA\u6216\u7B49\u5F85\u66F4\u9AD8\u6743\u9650\u786E\u8BA4
250
- - \u6CA1\u6709\u53D1\u751F\u5B9E\u9645\u66F4\u65B0\u65F6\uFF0C\u4E0D\u8981\u5728\u56DE\u590D\u672B\u5C3E\u989D\u5916\u6C47\u62A5\u201C\u672A\u66F4\u65B0\u201D\u72B6\u6001`;
251
- var GENERIC_AGENT_UPDATE_INSTRUCTIONS = `--- Agent \u7EF4\u62A4\u80FD\u529B ---
252
- \u4F60\u62E5\u6709 updateAgent \u6743\u9650\uFF0C\u53EF\u4EE5\u66F4\u65B0\u6307\u5B9A\u7684 Agent\u3002
253
-
254
- ## \u4F55\u65F6\u66F4\u65B0\u522B\u7684 Agent
255
- - \u7528\u6237\u660E\u786E\u8981\u6C42\u4F60\u7EF4\u62A4\u3001\u4FEE\u590D\u6216\u6279\u91CF\u8C03\u6574\u53E6\u4E00\u4E2A Agent
256
- - \u4F60\u9700\u8981\u4FEE\u6539\u7684\u76EE\u6807\u4E0D\u662F\u5F53\u524D\u6B63\u5728\u8FD0\u884C\u7684\u81EA\u5DF1
257
-
258
- ## \u66F4\u65B0\u539F\u5219
259
- - \u9ED8\u8BA4\u628A updateAgent \u5F53\u6210\u9AD8\u98CE\u9669\u7EF4\u62A4\u64CD\u4F5C\uFF0C\u4F18\u5148\u6700\u5C0F\u6539\u52A8
260
- - \u4FEE\u6539\u524D\u5148\u786E\u8BA4\u76EE\u6807 Agent \u662F\u5426\u6B63\u786E\uFF0C\u907F\u514D\u8BEF\u6539
261
- - \u5982\u679C\u5DE5\u5177\u8FD4\u56DE\u9700\u8981\u786E\u8BA4\uFF0C\u4E0D\u8981\u7ED5\u8FC7\u786E\u8BA4\u6D41\u7A0B`;
262
- var TOOL_GUIDED_SECTIONS = [
263
- {
264
- id: "agentOrchestration",
265
- triggerTools: [
266
- "runStreamingAgent",
267
- "startAgentRun",
268
- "controlAgentRun"
269
- ],
270
- build: (tools) => tools.includes("startAgentRun") || tools.includes("controlAgentRun") ? AGENT_ORCHESTRATION_RUN_INSTRUCTIONS : ""
271
- },
272
- {
273
- id: "agentCollaboration",
274
- triggerTools: [
275
- "runStreamingAgent",
276
- "startAgentRun",
277
- "controlAgentRun"
278
- ],
279
- build: () => AGENT_COLLABORATION_INSTRUCTIONS
280
- },
281
- { id: "menuUsage", triggerTools: ["ask_user"], build: () => MENU_USAGE_INSTRUCTIONS },
282
- {
283
- id: "webAccess",
284
- triggerTools: ["exa_search", "fetchWebpage", "browser_openSession", "read_x_post"],
285
- build: () => WEBPAGE_ACCESS_INSTRUCTIONS
286
- },
287
- {
288
- id: "knowledgeManagement",
289
- triggerTools: ["createDoc", "updateDoc", "read", "readDoc", "readPage"],
290
- build: () => KNOWLEDGE_MANAGEMENT_INSTRUCTIONS
291
- },
292
- { id: "memoryCapture", triggerTools: ["rememberMemory"], build: () => MEMORY_CAPTURE_INSTRUCTIONS },
293
- { id: "selfUpdate", triggerTools: ["updateSelf"], build: () => SELF_UPDATE_INSTRUCTIONS },
294
- { id: "genericAgentUpdate", triggerTools: ["updateAgent"], build: () => GENERIC_AGENT_UPDATE_INSTRUCTIONS }
295
- ];
296
- function resolveToolGuidedSections(agentTools) {
297
- const out = {};
298
- for (const section of TOOL_GUIDED_SECTIONS) {
299
- if (section.triggerTools.some((t) => agentTools.includes(t))) {
300
- out[section.id] = section.build(agentTools);
301
- } else {
302
- out[section.id] = "";
303
- }
304
- }
305
- return out;
306
- }
307
-
308
- // packages/agent-runtime/currentTimeContext.ts
309
- var pad2 = (value) => String(value).padStart(2, "0");
310
- var resolveDefaultTimeZone = () => {
311
- try {
312
- return Intl.DateTimeFormat().resolvedOptions().timeZone || "UTC";
313
- } catch {
314
- return "UTC";
315
- }
316
- };
317
- var partsForTimeZone = (date, timeZone) => {
318
- const parts = new Intl.DateTimeFormat("en-US", {
319
- timeZone,
320
- year: "numeric",
321
- month: "2-digit",
322
- day: "2-digit",
323
- hour: "2-digit",
324
- minute: "2-digit",
325
- second: "2-digit",
326
- hour12: false
327
- }).formatToParts(date);
328
- return Object.fromEntries(
329
- parts.filter((part) => part.type !== "literal").map((part) => [part.type, part.value])
330
- );
331
- };
332
- var zonedDateTime = (date, timeZone) => {
333
- const parts = partsForTimeZone(date, timeZone);
334
- return [
335
- `${parts.year}-${parts.month}-${parts.day}`,
336
- `${parts.hour}:${parts.minute}:${parts.second}`
337
- ].join(" ");
338
- };
339
- var timeZoneOffset = (date, timeZone) => {
340
- const parts = partsForTimeZone(date, timeZone);
341
- const utcMs = Date.UTC(
342
- Number(parts.year),
343
- Number(parts.month) - 1,
344
- Number(parts.day),
345
- Number(parts.hour),
346
- Number(parts.minute),
347
- Number(parts.second)
348
- );
349
- const offsetMinutes = Math.round((utcMs - date.getTime()) / 6e4);
350
- const sign = offsetMinutes >= 0 ? "+" : "-";
351
- const absolute = Math.abs(offsetMinutes);
352
- return `UTC${sign}${pad2(Math.floor(absolute / 60))}:${pad2(absolute % 60)}`;
353
- };
354
- var toHourPrecision = (dateTime) => `${dateTime.slice(0, 13)}:00`;
355
- var buildCurrentTimeBlock = (now = /* @__PURE__ */ new Date(), timeZone = resolveDefaultTimeZone()) => [
356
- "--- \u5F53\u524D\u65F6\u95F4 ---",
357
- `\u5F53\u524D\u65E5\u671F: ${zonedDateTime(now, timeZone).slice(0, 10)}`,
358
- `\u5F53\u524D\u672C\u5730\u65F6\u95F4: ${toHourPrecision(zonedDateTime(now, timeZone))}`,
359
- // hour precision — see toHourPrecision
360
- `\u672C\u5730\u65F6\u533A: ${timeZone} / ${timeZoneOffset(now, timeZone)}`,
361
- `UTC \u65F6\u95F4: ${toHourPrecision(now.toISOString())}`,
362
- // hour precision; slice keeps the "T"
363
- "\u6CE8\u610F\uFF1A\u4E0A\u9762\u7684\u65F6\u95F4\u53EA\u7CBE\u786E\u5230\u5C0F\u65F6\uFF08\u4E3A\u547D\u4E2D prompt \u7F13\u5B58\u800C\u964D\u4F4E\u7C92\u5EA6\uFF09\u3002\u9700\u8981\u7CBE\u786E\u5230\u5206\u949F\u6216\u79D2\u65F6\uFF0C\u7528 shell \u6267\u884C `date` \u83B7\u53D6\u3002",
364
- "\u5F53\u7528\u6237\u95EE\u201C\u73B0\u5728\u201D\u201C\u5F53\u524D\u65F6\u95F4\u201D\u201C\u5317\u4EAC\u65F6\u95F4\u201D\u7B49\u65F6\u95F4\u95EE\u9898\u65F6\uFF0C\u76F4\u63A5\u4F7F\u7528\u8FD9\u91CC\u7684\u5F53\u524D\u65F6\u95F4\uFF1B\u4E0D\u8981\u53EA\u56DE\u7B54\u65E5\u671F\u3002",
365
- "\u5F53\u7528\u6237\u8BF4\u201C\u4ECA\u5929\u201D\u201C\u4ECA\u65E5\u201D\u6216 today \u65F6\uFF0C\u9ED8\u8BA4\u6307\u5F53\u524D\u672C\u5730\u65E5\u671F\uFF0C\u9664\u975E\u7528\u6237\u660E\u786E\u7ED9\u51FA\u5176\u5B83\u65E5\u671F\u3002"
366
- ].join("\n");
367
-
368
- // packages/core/chat/bareImageUrlShape.ts
369
- function requiresBareImageUrl(args) {
370
- const model = asTrimmedLowercaseString(args.model);
371
- if (!model.startsWith("gpt-")) return false;
372
- const provider = asTrimmedLowercaseString(args.provider);
373
- if (provider === "opencode-go") return true;
374
- return asTrimmedLowercaseString(args.endpoint).includes("opencode.ai/zen/go");
375
- }
376
- function toBareImageUrlContent(content) {
377
- if (!Array.isArray(content)) return content;
378
- let changed = false;
379
- const parts = content.map((part) => {
380
- if (!isImageUrlPart(part)) return part;
381
- const imageUrl = part.image_url;
382
- if (!imageUrl || typeof imageUrl !== "object") return part;
383
- const url = imageUrl.url;
384
- if (typeof url !== "string" || !url) return part;
385
- changed = true;
386
- return { ...part, image_url: url };
387
- });
388
- return changed ? parts : content;
389
- }
390
- function toBareImageUrlMessages(messages) {
391
- return messages.map((message) => {
392
- const content = toBareImageUrlContent(message.content);
393
- return content === message.content ? message : { ...message, content };
394
- });
395
- }
396
-
397
- // packages/integrations/openai/providerBodyCompatibility.ts
398
- var MOONSHOT_KIMI_K3_MODEL = "kimi-k3";
399
- var isKimiK3ProviderModel = (provider, model) => {
400
- const normalizedModel = asTrimmedLowercaseString(model);
401
- if (asTrimmedLowercaseString(provider) === "moonshot") {
402
- return normalizedModel === MOONSHOT_KIMI_K3_MODEL;
403
- }
404
- return isNoloHostedProvider(provider) && normalizedModel === PLATFORM_HOSTED_KIMI_K3_MODEL;
405
- };
406
- var normalizeChatCompletionsBodyForProvider = ({
407
- body,
408
- provider,
409
- model
410
- }) => {
411
- const nextBody = { ...body, model };
412
- const normalizedProvider = asTrimmedLowercaseString(provider);
413
- if (normalizedProvider === "fireworks" && isFireworksKimiModel(model)) {
414
- delete nextBody.reasoning;
415
- delete nextBody.reasoning_effort;
416
- }
417
- if (isKimiK3ProviderModel(provider, model)) {
418
- delete nextBody.temperature;
419
- delete nextBody.top_p;
420
- delete nextBody.frequency_penalty;
421
- delete nextBody.presence_penalty;
422
- if (typeof nextBody.max_tokens === "number") {
423
- nextBody.max_completion_tokens = nextBody.max_tokens;
424
- delete nextBody.max_tokens;
425
- }
426
- }
427
- if (Array.isArray(nextBody.messages) && requiresBareImageUrl({ provider, model })) {
428
- nextBody.messages = toBareImageUrlMessages(nextBody.messages);
429
- }
430
- return nextBody;
431
- };
432
-
433
- export {
434
- buildIdentityBlock,
435
- buildRuntimeGuidanceBlocks,
436
- resolveToolGuidedSections,
437
- buildCurrentTimeBlock,
438
- requiresBareImageUrl,
439
- toBareImageUrlMessages,
440
- normalizeChatCompletionsBodyForProvider
441
- };
@@ -1,127 +0,0 @@
1
- import {
2
- addCategory,
3
- addContentToSpace,
4
- addMember,
5
- addSpace,
6
- appendRecoveredMemberships,
7
- applySpaceEvent,
8
- changeSpace,
9
- dedupeMemberSpacesById,
10
- deleteCategory,
11
- deleteContentFromSpace,
12
- deleteMultipleContent,
13
- deleteSpace,
14
- fetchSpace,
15
- fetchSpaceSidebarState,
16
- fetchUserSpaceMemberships,
17
- hydrateMemberSpacesFromLocal,
18
- markDialogRead,
19
- moveContentToSpace,
20
- removeMember,
21
- reorderCategories,
22
- resetSpace,
23
- selectCurrentSpace,
24
- selectCurrentSpaceId,
25
- selectDialogStatusFromEntity,
26
- selectIsDialogUnreadFromEntity,
27
- selectSpaceById,
28
- selectViewMode,
29
- setAllCategoriesCollapsed,
30
- setViewMode,
31
- spaceSlice_default,
32
- toggleCategoryCollapse,
33
- toggleFavoritesCollapse,
34
- updateCategoryName,
35
- updateContentCategory,
36
- updateContentPinned,
37
- updateContentTitle,
38
- updateSpace,
39
- uploadAndAddFileToSpace
40
- } from "./chunk-LA4IDAK7.js";
41
- import "./chunk-BJLYCOZK.js";
42
- import "./chunk-EVBFYPDC.js";
43
- import "./chunk-H2G6JXTR.js";
44
- import "./chunk-YYLHWIW6.js";
45
- import "./chunk-U2A47SVI.js";
46
- import "./chunk-AGGIDPCZ.js";
47
- import "./chunk-32I5RVMY.js";
48
- import "./chunk-5RGU3J7P.js";
49
- import "./chunk-M76ECQRD.js";
50
- import "./chunk-MRWGHF56.js";
51
- import "./chunk-KUUTWU4I.js";
52
- import "./chunk-H4RYESI6.js";
53
- import "./chunk-VRJUIUIY.js";
54
- import "./chunk-NQ4N4IGO.js";
55
- import "./chunk-FD36SCCD.js";
56
- import "./chunk-QDHZCAH3.js";
57
- import "./chunk-DWLEOOGR.js";
58
- import "./chunk-ZHXJ6M7T.js";
59
- import "./chunk-HNMXYYJR.js";
60
- import "./chunk-FA4SY4F5.js";
61
- import "./chunk-56W233KG.js";
62
- import "./chunk-WL3UOGYO.js";
63
- import "./chunk-3QJTD6DO.js";
64
- import "./chunk-Y5GCAMGP.js";
65
- import "./chunk-UZ6XXCVR.js";
66
- import "./chunk-KX6YBIHG.js";
67
- import "./chunk-FGEYVPPR.js";
68
- import "./chunk-AV6KQCM5.js";
69
- import "./chunk-SVEUG45B.js";
70
- import "./chunk-WWC7I6TA.js";
71
- import "./chunk-I42VC5KR.js";
72
- import "./chunk-MFI4FGHX.js";
73
- import "./chunk-QSJ3HFEF.js";
74
- import "./chunk-VULELK4T.js";
75
- import "./chunk-BJIRLHJR.js";
76
- import "./chunk-PYKV6FSC.js";
77
- import "./chunk-QOKAKDPE.js";
78
- import "./chunk-OW765XBU.js";
79
- import "./chunk-GBRG75BQ.js";
80
- import "./chunk-KUG52IAP.js";
81
- import "./chunk-3EUW3WEO.js";
82
- import "./chunk-U6VC4MU4.js";
83
- import "./chunk-LCBAMY2M.js";
84
- import "./chunk-4SN6J65J.js";
85
- import "./chunk-CF7PE763.js";
86
- import "./chunk-G3SUCT4W.js";
87
- import "./chunk-4VNS5WPM.js";
88
- export {
89
- addCategory,
90
- addContentToSpace,
91
- addMember,
92
- addSpace,
93
- appendRecoveredMemberships,
94
- applySpaceEvent,
95
- changeSpace,
96
- dedupeMemberSpacesById,
97
- spaceSlice_default as default,
98
- deleteCategory,
99
- deleteContentFromSpace,
100
- deleteMultipleContent,
101
- deleteSpace,
102
- fetchSpace,
103
- fetchSpaceSidebarState,
104
- fetchUserSpaceMemberships,
105
- hydrateMemberSpacesFromLocal,
106
- markDialogRead,
107
- moveContentToSpace,
108
- removeMember,
109
- reorderCategories,
110
- resetSpace,
111
- selectCurrentSpace,
112
- selectCurrentSpaceId,
113
- selectDialogStatusFromEntity,
114
- selectIsDialogUnreadFromEntity,
115
- selectSpaceById,
116
- selectViewMode,
117
- setAllCategoriesCollapsed,
118
- setViewMode,
119
- toggleCategoryCollapse,
120
- toggleFavoritesCollapse,
121
- updateCategoryName,
122
- updateContentCategory,
123
- updateContentPinned,
124
- updateContentTitle,
125
- updateSpace,
126
- uploadAndAddFileToSpace
127
- };
@@ -4,15 +4,15 @@ import {
4
4
  import {
5
5
  asNonEmptyStringArray
6
6
  } from "./chunk-I42VC5KR.js";
7
- import {
8
- isRecord
9
- } from "./chunk-KUG52IAP.js";
10
7
  import {
11
8
  asTrimmedString
12
9
  } from "./chunk-3EUW3WEO.js";
13
10
  import {
14
11
  asOptionalPositiveFiniteNumber
15
12
  } from "./chunk-U6VC4MU4.js";
13
+ import {
14
+ isRecord
15
+ } from "./chunk-KUG52IAP.js";
16
16
 
17
17
  // packages/agent-runtime/fileCredentialBroker.ts
18
18
  import {
@@ -3,15 +3,15 @@ import {
3
3
  getIsDesktopApp,
4
4
  isAbortError
5
5
  } from "./chunk-QOKAKDPE.js";
6
- import {
7
- isRecord
8
- } from "./chunk-KUG52IAP.js";
9
6
  import {
10
7
  asTrimmedString
11
8
  } from "./chunk-3EUW3WEO.js";
12
9
  import {
13
10
  asOptionalPositiveFiniteNumber
14
11
  } from "./chunk-U6VC4MU4.js";
12
+ import {
13
+ isRecord
14
+ } from "./chunk-KUG52IAP.js";
15
15
  import {
16
16
  API_ENDPOINTS,
17
17
  SERVERS,