nolo-cli 0.19.0 → 0.24.0-alpha.6

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-X5PCIZN6.js → _executeModel-ARCMGGMY.js} +46 -44
  2. package/{action-LT7BRFLK.js → action-5MNAXR5B.js} +7 -6
  3. package/{addContentAction-PL3KKBDH.js → addContentAction-UNSYTVTB.js} +5 -5
  4. package/{addDialogAgentAction-FCMSKYAF.js → addDialogAgentAction-LJGNP2AO.js} +5 -5
  5. package/{agentDeleteCommand-2BZDQV36.js → agentDeleteCommand-C5PIEBMZ.js} +27 -26
  6. package/{agentEmailCommands-2QJDGRMB.js → agentEmailCommands-QTGQ3ZAD.js} +57 -55
  7. package/{agentListCommands-6VEPTKBI.js → agentListCommands-LRHBS3A5.js} +30 -26
  8. package/{agentMachineCommands-NVVHNWYI.js → agentMachineCommands-4PXIT4BP.js} +25 -24
  9. package/{agentRecordCommands-4GGRDMD4.js → agentRecordCommands-ZZPTYTYR.js} +52 -50
  10. package/{agentRunCommand-XOLQNKBZ.js → agentRunCommand-7ZTPZNUX.js} +55 -54
  11. package/{agentRunControl-Y5AFH5PQ.js → agentRunControl-SNUKXN6J.js} +6 -2
  12. package/{agentRuntimeLocal-7WYWCGL4.js → agentRuntimeLocal-QOYY5UV2.js} +19 -18
  13. package/{agentSlice-EAXPGEYV.js → agentSlice-J3W3RX2I.js} +5 -5
  14. package/{appDeleteCommands-77KR2RJ4.js → appDeleteCommands-7NS46XDH.js} +23 -22
  15. package/{appDeployCommands-K7CAHGBI.js → appDeployCommands-RSRNQ67U.js} +23 -22
  16. package/{appDeployStatusCommands-4OEKLTBT.js → appDeployStatusCommands-EF4RSGC6.js} +23 -22
  17. package/{appGetCommands-VM2WDLAZ.js → appGetCommands-YA7JWYUX.js} +23 -22
  18. package/{appListCommands-GX6BBA6U.js → appListCommands-WM2ON6JW.js} +23 -22
  19. package/{authCommand-DY6UUL6O.js → authCommand-HJP7FURK.js} +12 -13
  20. package/{authCommands-XTBV7OFZ.js → authCommands-NYZM2B2I.js} +4 -5
  21. package/{chunk-MKA6QE5E.js → chunk-2IPEVBUO.js} +126 -68
  22. package/{chunk-OWOHNGCN.js → chunk-2MBTWINN.js} +42 -3
  23. package/{chunk-K6EUAOW3.js → chunk-35RYGII3.js} +1 -1
  24. package/{chunk-TRT4I4UD.js → chunk-4POUK2BV.js} +2 -2
  25. package/{chunk-LLWKHDG4.js → chunk-4ULSC37S.js} +1 -3
  26. package/{chunk-EDV7EBOI.js → chunk-4ZH6GUJF.js} +2151 -1500
  27. package/{chunk-MVQ4TBSD.js → chunk-54VHTARN.js} +1 -1
  28. package/{chunk-L4F3I4SR.js → chunk-5HQQ4LUU.js} +4 -6
  29. package/{chunk-Z4NR32XR.js → chunk-5RGU3J7P.js} +13 -0
  30. package/{chunk-7BUYEZ6U.js → chunk-7H3UTGPM.js} +12 -72
  31. package/{chunk-RQN4SEKL.js → chunk-7W6GFNJL.js} +1 -1
  32. package/{chunk-HEGV7BH3.js → chunk-AQZCWJOG.js} +1 -1
  33. package/{chunk-3ND52WIL.js → chunk-ATWUOTJP.js} +180 -24
  34. package/chunk-CF7S2RYZ.js +376 -0
  35. package/{chunk-I2ZJKTG5.js → chunk-CGVRC2TB.js} +7 -7
  36. package/{chunk-UAIVG4J6.js → chunk-CHSCAUZN.js} +1 -8
  37. package/{chunk-KFEVY3ST.js → chunk-D34RI6NI.js} +18 -8
  38. package/{chunk-ROWQEJRP.js → chunk-DXJS7VSG.js} +3 -2
  39. package/{chunk-MHSGJW4Z.js → chunk-EHOYZRTI.js} +44 -14
  40. package/{chunk-XRZJGPFI.js → chunk-FON47ACC.js} +4 -4
  41. package/{chunk-SCTYAHYK.js → chunk-H2NAWOLH.js} +217 -141
  42. package/{chunk-MPVYDS7I.js → chunk-H6ODMJR3.js} +3 -3
  43. package/{chunk-R35XMF6F.js → chunk-H73ZV2GL.js} +352 -30
  44. package/{chunk-4T5F7YZQ.js → chunk-I6RJGORZ.js} +1 -1
  45. package/{chunk-OK6YSWLH.js → chunk-IICW77GI.js} +1 -1
  46. package/{chunk-VDXCXCXH.js → chunk-IUDMBCXC.js} +1 -1
  47. package/{chunk-AHCY2S2I.js → chunk-JADNODCQ.js} +1 -1
  48. package/{chunk-DFCFMCY6.js → chunk-JBLY6HQP.js} +2 -2
  49. package/{chunk-UGUW3FHG.js → chunk-JMSCXQUG.js} +2 -2
  50. package/{chunk-N54HIJVJ.js → chunk-KFUCLS7Z.js} +101 -9
  51. package/{chunk-FQZZLA3C.js → chunk-KXKQO4Q6.js} +17 -0
  52. package/{chunk-3Q7WHGCB.js → chunk-L65QKSVJ.js} +1 -1
  53. package/{chunk-3ZX7PERL.js → chunk-LALVWNE4.js} +20 -7
  54. package/{chunk-PJSV3IZ5.js → chunk-M3TMVJKG.js} +1 -1
  55. package/{chunk-REA4JLBH.js → chunk-M5OZCOBV.js} +7 -6
  56. package/{chunk-JLA4FXYC.js → chunk-MALVZUYL.js} +1 -1
  57. package/{chunk-GFUIQ4RY.js → chunk-MXFQHRSS.js} +1 -1
  58. package/{chunk-LSFAWXKC.js → chunk-N7J63Q6C.js} +1 -0
  59. package/{chunk-6Y7A3OQQ.js → chunk-NRY4GCKJ.js} +2 -0
  60. package/{chunk-G5U6LDLG.js → chunk-NVHPMDSZ.js} +6 -6
  61. package/{chunk-23FZYPLC.js → chunk-OJFYT3ZQ.js} +842 -1060
  62. package/{chunk-ELT65PZW.js → chunk-OXLLFZNF.js} +1 -1
  63. package/{chunk-CZ6NYQTV.js → chunk-P4QWLZGU.js} +2 -2
  64. package/{chunk-5MIDPSSK.js → chunk-PB7G5MAM.js} +3 -3
  65. package/{chunk-HWW2M4SN.js → chunk-QLVWFXZQ.js} +5 -4
  66. package/{chunk-VYHDJEQD.js → chunk-QNLLGS37.js} +136 -78
  67. package/{chunk-XHG22OEX.js → chunk-ROJI6DRT.js} +2 -2
  68. package/{chunk-BV4VEE3W.js → chunk-ROYOKSX4.js} +243 -354
  69. package/{chunk-VNAEBGDK.js → chunk-RZNYL4LW.js} +123 -26
  70. package/{chunk-RVOUXDFU.js → chunk-S6KVFOUG.js} +6 -34
  71. package/{chunk-V3ED5AWK.js → chunk-S77SCVBU.js} +27 -16
  72. package/{chunk-UBHAWFQ6.js → chunk-S7RWIPDI.js} +42 -19
  73. package/{chunk-B5TOXZAK.js → chunk-SIZQB7BD.js} +1 -1
  74. package/{chunk-DFFIZ25G.js → chunk-SLOGKB7M.js} +4 -1
  75. package/{chunk-FXUSIQC2.js → chunk-SROR5TSM.js} +1 -1
  76. package/{chunk-PIZYJVHQ.js → chunk-TN4YHAI3.js} +4 -4
  77. package/{chunk-IYEXFJPC.js → chunk-TW35GDNW.js} +64 -57
  78. package/chunk-UZ6XXCVR.js +50 -0
  79. package/{chunk-DKZFOK24.js → chunk-UZH44DWK.js} +7 -288
  80. package/{chunk-YGW4G5W5.js → chunk-X546QUDT.js} +61 -12
  81. package/chunk-YYLHWIW6.js +48 -0
  82. package/{chunk-SWDPIPOY.js → chunk-ZGVW7MSZ.js} +1 -1
  83. package/{chunk-34WPV75U.js → chunk-ZUXIXYJI.js} +1 -1
  84. package/{chunk-VC6OZXO5.js → chunk-ZWJOGMKH.js} +2 -26
  85. package/{cliExecutor-DNE7TCC4.js → cliExecutor-K3F7DMRO.js} +2 -2
  86. package/{codingSkills-36KN5NQT.js → codingSkills-EN6Z6G6U.js} +4 -4
  87. package/{createAgentAutomationAction-GNFF524X.js → createAgentAutomationAction-MKQWN4VQ.js} +19 -18
  88. package/{createDialogAction-RB55KCLO.js → createDialogAction-YWIZPLFS.js} +22 -20
  89. package/{createPageAction-Y7343GLU.js → createPageAction-74TTEIPC.js} +20 -19
  90. package/{db-W3O47YGF.js → db-W5UHK4P3.js} +150 -0
  91. package/{dbSlice-CGSRFJN3.js → dbSlice-5BKDURDL.js} +4 -4
  92. package/{dialogCommands-IAZK6YHQ.js → dialogCommands-MJIP32FL.js} +24 -23
  93. package/{dialogSlice-UQAXF23P.js → dialogSlice-KLLVH4WI.js} +24 -18
  94. package/{docCreateCommands-I2EWZGCI.js → docCreateCommands-5DN472U6.js} +24 -27
  95. package/{docDeleteCommands-IZ45UZKG.js → docDeleteCommands-HE76LBN4.js} +25 -24
  96. package/{docReadCommands-R6Z4QJYU.js → docReadCommands-XVGZSCBS.js} +24 -23
  97. package/{docStore-5HOJ4D7D.js → docStore-SPH3D6BT.js} +20 -19
  98. package/{docUpdateCommands-2LRBKQPY.js → docUpdateCommands-P7IAWUAD.js} +24 -27
  99. package/{fetchMessages-BMGVZVSE.js → fetchMessages-W4IKHPCS.js} +2 -3
  100. package/{getPricing-G7DLAST6.js → getPricing-WENPBVWH.js} +3 -3
  101. package/{handleSendMessageAction-Q4HY35WX.js → handleSendMessageAction-ZU6WJVL7.js} +23 -20
  102. package/index.js +74 -74
  103. package/{localDialogRead-4H3QJFLW.js → localDialogRead-JXTAHW2E.js} +2 -2
  104. package/{machineCommands-PKBPQKTY.js → machineCommands-NI76PVHK.js} +59 -57
  105. package/{machineWsRunDispatch-UZAW4OXJ.js → machineWsRunDispatch-W3G6NJVQ.js} +51 -49
  106. package/{models-DJFSJ7SW.js → models-DB27UAE3.js} +2 -2
  107. package/package.json +1 -1
  108. package/{read-3FMPZPER.js → read-F3L3T2WJ.js} +2 -1
  109. package/{readDocTool-VSYHKK3V.js → readDocTool-FOHWVA4R.js} +1 -1
  110. package/{readlineWorkspace-Y2RDOFZG.js → readlineWorkspace-BDH4G477.js} +880 -425
  111. package/{removeDialogAgentAction-OAGA2G3U.js → removeDialogAgentAction-QCFGIUIH.js} +8 -7
  112. package/{runAgentClientLoop-NBPIKJ6J.js → runAgentClientLoop-ZPKMXCM5.js} +45 -38
  113. package/{setDialogExtraReferencesAction-JZEXA5SL.js → setDialogExtraReferencesAction-DK4CKERU.js} +5 -5
  114. package/{setPrimaryDialogAgentAction-4ZUQQKDG.js → setPrimaryDialogAgentAction-SJSO6N27.js} +8 -7
  115. package/{settingSlice-7MNKHZ6R.js → settingSlice-XNM5AFPU.js} +6 -5
  116. package/{spaceCommands-DHCZ7J5I.js → spaceCommands-3GGBJRQR.js} +25 -24
  117. package/{spaceSlice-ZXLLG3CR.js → spaceSlice-47Z6XLFQ.js} +21 -18
  118. package/{streamAgentChatTurn-L3YW6LSB.js → streamAgentChatTurn-VT5K5JSD.js} +140 -98
  119. package/switchDialogAgentAction-4OAC6QRN.js +61 -0
  120. package/{tableCommands-BEQAGE4I.js → tableCommands-HEQYT2KP.js} +1 -1
  121. package/{toolApiClient-QI3YBNWB.js → toolApiClient-ISM4ZQX4.js} +2 -2
  122. package/{tools-ECGXR5QF.js → tools-L7RCHAPT.js} +36 -33
  123. package/{tuiSummaryLlmCaller-OMSCNHXA.js → tuiSummaryLlmCaller-3DYOLTVN.js} +6 -6
  124. package/{updateCommands-XTW55TOT.js → updateCommands-HTCOBXCA.js} +2 -2
  125. package/{updateDialogTitleAction-HQ2EUDFT.js → updateDialogTitleAction-KMPVPQ4A.js} +28 -27
  126. package/chunk-DL6EPNIK.js +0 -50
  127. package/chunk-V5R4NZP2.js +0 -78
  128. package/chunk-X4Q4UZEY.js +0 -26
  129. package/queryRunOverlay-O4LOMMPO.js +0 -161
  130. package/runOverlayPresentation-ZO4VCWEU.js +0 -11
  131. package/types-ZSTJ7MPR.js +0 -7
  132. package/{chunk-X7W4TNB4.js → chunk-CMKUBIGW.js} +3 -3
  133. package/{runtimeDoctorCommands-E2OUORHK.js → runtimeDoctorCommands-HSU632DY.js} +3 -3
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  patch,
3
3
  read
4
- } from "./chunk-XRZJGPFI.js";
4
+ } from "./chunk-FON47ACC.js";
5
5
  import {
6
6
  DEVICE_LOCAL_OWNER_ID,
7
7
  isDeviceLocalSpaceBody,
@@ -1,13 +1,13 @@
1
1
  import {
2
2
  i18n_default,
3
3
  toolRegistry
4
- } from "./chunk-EDV7EBOI.js";
4
+ } from "./chunk-4ZH6GUJF.js";
5
5
  import {
6
6
  canonicalizeToolNames
7
7
  } from "./chunk-ZZ2MH7LE.js";
8
8
  import {
9
9
  isNoloHostedProvider
10
- } from "./chunk-MKA6QE5E.js";
10
+ } from "./chunk-2IPEVBUO.js";
11
11
  import {
12
12
  asTrimmedLowercaseString
13
13
  } from "./chunk-QSJ3HFEF.js";
@@ -1,6 +1,3 @@
1
- import {
2
- extractCustomId
3
- } from "./chunk-DFFIZ25G.js";
4
1
  import {
5
2
  getActiveDialogKey
6
3
  } from "./chunk-3ASDTTEI.js";
@@ -10,6 +7,9 @@ import {
10
7
  import {
11
8
  asTrimmedLowercaseString
12
9
  } from "./chunk-QSJ3HFEF.js";
10
+ import {
11
+ extractCustomId
12
+ } from "./chunk-SLOGKB7M.js";
13
13
  import {
14
14
  isRecord
15
15
  } from "./chunk-KUG52IAP.js";
@@ -1,13 +1,13 @@
1
1
  import {
2
2
  listUserRecordsFromServers,
3
3
  readLiveDbRecordAfterTombstoneMerge
4
- } from "./chunk-HEGV7BH3.js";
4
+ } from "./chunk-AQZCWJOG.js";
5
5
  import {
6
6
  agentRecordHasConfiguredCredential
7
- } from "./chunk-DFCFMCY6.js";
7
+ } from "./chunk-JBLY6HQP.js";
8
8
  import {
9
9
  toSafeAgentSummary
10
- } from "./chunk-3ZX7PERL.js";
10
+ } from "./chunk-LALVWNE4.js";
11
11
 
12
12
  // packages/cli/agentListHelpers.ts
13
13
  function parseAgentRecordId(privateKey, explicitId) {
@@ -51,7 +51,8 @@ function normalizeListedAgent(record) {
51
51
  credentialRef,
52
52
  apiKeyRef,
53
53
  ...typeof record?.apiSource === "string" && record.apiSource ? { apiSource: record.apiSource } : {},
54
- ...typeof record?.cliProvider === "string" && record.cliProvider ? { cliProvider: record.cliProvider } : {}
54
+ ...typeof record?.cliProvider === "string" && record.cliProvider ? { cliProvider: record.cliProvider } : {},
55
+ ...typeof record?.nextAvailableAt === "number" && Number.isFinite(record.nextAvailableAt) ? { nextAvailableAt: record.nextAvailableAt } : {}
55
56
  };
56
57
  }
57
58
  function toSafeListedAgentSummary(agent, options) {
@@ -1,12 +1,13 @@
1
1
  import {
2
2
  ANTIGRAVITY_CLOUD_CODE_BASE_URL,
3
3
  isAntigravityOAuthAgent
4
- } from "./chunk-FXUSIQC2.js";
4
+ } from "./chunk-SROR5TSM.js";
5
5
  import {
6
6
  clipMultilineText,
7
7
  fetchAndSerializeTable,
8
+ resolveBuiltinSkillPage,
8
9
  waitForAbortableDelay
9
- } from "./chunk-EDV7EBOI.js";
10
+ } from "./chunk-4ZH6GUJF.js";
10
11
  import {
11
12
  createDrainExhaustedResponse,
12
13
  isCoreDrainingBody,
@@ -16,22 +17,24 @@ import {
16
17
  } from "./chunk-RQSOAMPJ.js";
17
18
  import {
18
19
  slateToSimplifiedMarkdown
19
- } from "./chunk-4T5F7YZQ.js";
20
+ } from "./chunk-I6RJGORZ.js";
20
21
  import {
21
22
  extractCategorizedMentions
22
23
  } from "./chunk-VP4WJWKW.js";
23
24
  import {
24
- fetchAndCacheMessages,
25
- shouldUseServerProxy
26
- } from "./chunk-SCTYAHYK.js";
25
+ fetchAndCacheMessages
26
+ } from "./chunk-H2NAWOLH.js";
27
27
  import {
28
28
  fetchServerSyncedCredential
29
- } from "./chunk-REA4JLBH.js";
29
+ } from "./chunk-M5OZCOBV.js";
30
+ import {
31
+ shouldUseServerProxy
32
+ } from "./chunk-YYLHWIW6.js";
30
33
  import {
31
34
  buildSkillGuidancePromptBlock,
32
35
  extractRuntimePageCapabilities,
33
36
  resolveSkillGraphFromRoots
34
- } from "./chunk-7BUYEZ6U.js";
37
+ } from "./chunk-7H3UTGPM.js";
35
38
  import {
36
39
  MENU_USAGE_INSTRUCTIONS,
37
40
  buildCurrentTimeBlock,
@@ -39,20 +42,20 @@ import {
39
42
  buildRuntimeGuidanceBlocks,
40
43
  requiresBareImageUrl,
41
44
  toBareImageUrlMessages
42
- } from "./chunk-34WPV75U.js";
45
+ } from "./chunk-ZUXIXYJI.js";
43
46
  import {
44
47
  convertMessagesToResponsesInput,
45
48
  preserveAgentStateFields
46
- } from "./chunk-KFEVY3ST.js";
49
+ } from "./chunk-D34RI6NI.js";
47
50
  import {
48
51
  buildProviderAuthHeaders,
49
52
  isOpenAiResponsesModel,
50
53
  resolvePlatformChatCompletionsEndpoint,
51
54
  resolvePlatformResponsesEndpoint
52
- } from "./chunk-MHSGJW4Z.js";
55
+ } from "./chunk-EHOYZRTI.js";
53
56
  import {
54
57
  estimateTokenCount
55
- } from "./chunk-I2ZJKTG5.js";
58
+ } from "./chunk-CGVRC2TB.js";
56
59
  import {
57
60
  createFileCredentialBroker
58
61
  } from "./chunk-5CS33IBL.js";
@@ -60,13 +63,7 @@ import {
60
63
  clampReasoningEffort,
61
64
  getModelConfig,
62
65
  isModelSupportReasoningEffort
63
- } from "./chunk-UAIVG4J6.js";
64
- import {
65
- toErrorMessage
66
- } from "./chunk-HNMXYYJR.js";
67
- import {
68
- createSpaceKey
69
- } from "./chunk-ELT65PZW.js";
66
+ } from "./chunk-CHSCAUZN.js";
70
67
  import {
71
68
  MEMORY_USE_GUIDANCE,
72
69
  wrapHistoricalSummaryWithReplayGuard
@@ -75,16 +72,19 @@ import {
75
72
  canonicalizeToolNames
76
73
  } from "./chunk-ZZ2MH7LE.js";
77
74
  import {
78
- extractCustomId
79
- } from "./chunk-DFFIZ25G.js";
75
+ toErrorMessage
76
+ } from "./chunk-HNMXYYJR.js";
80
77
  import {
81
78
  isDeepInfraKimiModel,
82
79
  isFireworksKimiModel,
83
80
  resolveFireworksKimiModel
84
- } from "./chunk-MKA6QE5E.js";
81
+ } from "./chunk-2IPEVBUO.js";
82
+ import {
83
+ createSpaceKey
84
+ } from "./chunk-OXLLFZNF.js";
85
85
  import {
86
86
  read
87
- } from "./chunk-XRZJGPFI.js";
87
+ } from "./chunk-FON47ACC.js";
88
88
  import {
89
89
  asTrimmedLowercaseString
90
90
  } from "./chunk-QSJ3HFEF.js";
@@ -97,6 +97,9 @@ import {
97
97
  import {
98
98
  asTrimmedString
99
99
  } from "./chunk-3EUW3WEO.js";
100
+ import {
101
+ extractCustomId
102
+ } from "./chunk-SLOGKB7M.js";
100
103
  import {
101
104
  API_ENDPOINTS
102
105
  } from "./chunk-LCBAMY2M.js";
@@ -131,6 +134,11 @@ var loadContentsByKeys = async (keys, dispatch, preloaded) => {
131
134
  if (content) contentByKey.set(dbKey, content);
132
135
  return;
133
136
  }
137
+ const builtin = resolveBuiltinSkillPage(dbKey);
138
+ if (builtin) {
139
+ contentByKey.set(dbKey, builtin);
140
+ return;
141
+ }
134
142
  try {
135
143
  const content = await dispatch(read({ dbKey })).unwrap();
136
144
  if (content) contentByKey.set(dbKey, content);
@@ -153,6 +161,8 @@ var resolveReferenceAssets = async (references, dispatch) => {
153
161
  }
154
162
  const entries = await Promise.all(
155
163
  references.filter((ref) => ref?.dbKey).map(async (ref) => {
164
+ const builtin = resolveBuiltinSkillPage(ref.dbKey);
165
+ if (builtin) return { ref, content: builtin };
156
166
  try {
157
167
  const content = await dispatch(read({ dbKey: ref.dbKey })).unwrap();
158
168
  return { ref, content };
@@ -453,7 +463,7 @@ function resolveAgentCallPlan(agentConfig, _env) {
453
463
  endpointKey: agentConfig.endpointKey
454
464
  });
455
465
  const upstreamWire = useResponses ? "responses" : "chat.completions";
456
- const endpoint = useResponses ? resolvePlatformResponsesEndpoint(provider) ?? "" : resolvePlatformChatCompletionsEndpoint(provider) ?? "";
466
+ const endpoint = useResponses ? resolvePlatformResponsesEndpoint(provider) ?? "" : resolvePlatformChatCompletionsEndpoint(provider, agentConfig.model) ?? "";
457
467
  return {
458
468
  authMethod: { kind: "platform-key" },
459
469
  transport,
@@ -641,28 +651,30 @@ var CONTEXT_USAGE_INSTRUCTIONS = `\u53C2\u8003\u8D44\u6599\u4F7F\u7528\u8BF4\u66
641
651
  - \u5F53\u901A\u7528\u6307\u4EE4\u4E0E\u66F4\u5177\u4F53\u7684"\u6309 Agent / \u6309\u6587\u6863"\u7684\u89C4\u5219\u53D1\u751F\u51B2\u7A81\u65F6\uFF0C\u5FC5\u987B\u4F18\u5148\u9075\u5B88\u66F4\u5177\u4F53\u3001\u4F18\u5148\u7EA7\u66F4\u9AD8\u7684\u89C4\u5219\u3002`;
642
652
  var AGENT_ORCHESTRATION_RUN_INSTRUCTIONS = `--- \u591A Agent \u7F16\u6392\uFF08\u540E\u53F0 Run\uFF09 ---
643
653
  \u4F60\u53EF\u7528 startAgentRun \u540E\u53F0\u542F\u52A8\u5B50 Agent\uFF08fork+exec\uFF0C\u8FD4\u56DE runId\uFF09\uFF0C\u7528 controlAgentRun \u89C2\u5BDF/\u505C\u6B62\uFF08wait+signal+proc\uFF09\u3002\u6838\u5FC3\u7EAA\u5F8B\uFF08\u53CD\u9762\u6559\u6750\uFF1A\u5B50\u4EE3\u7406\u5D29\u6E83/\u6302\u8D77\u800C\u7F16\u6392\u5668\u6BEB\u65E0\u5BDF\u89C9\uFF09\uFF1A
644
- 1. \u5148\u53D1\u73B0\u518D\u6D3E\u53D1\u3002\u8C03\u7528 listAgents\u3002**\u8FD4\u56DE\u7684 agents \u6570\u7EC4\u91CC\u6BCF\u4E2A\u6761\u76EE\u76F4\u63A5\u7ED9\u51FA\u53EF\u6D3E\u53D1\u7684 agentKey\u3001\u4EF7\u683C\u3001tools\u3001\u4EE5\u53CA isOwned/isFavorite \u6807\u8BB0\u2014\u2014\u9009\u4EBA\u552F\u4E00\u4F9D\u636E\u5C31\u662F\u8FD9\u6761\u8BB0\u5F55\uFF0C\u76F4\u63A5\u4ECE agentKey \u5B57\u6BB5\u53D6\u503C\uFF0C\u4E0D\u8981\u624B\u5DE5\u62FC\u63A5\u6216\u63A8\u65AD\u3002** \u9009\u4EBA\u4F18\u5148\u7EA7\uFF1A\u7279\u5B9A\u5DE5\u5177\u9700\u6C42\uFF08\u770B tools \u662F\u5426\u8986\u76D6\uFF09\u2192 \u81EA\u5EFA agent \u4F18\u5148\uFF08isOwned=true\uFF0C\u8D70\u7528\u6237\u81EA\u5DF1\u914D\u989D\u4E0D\u82B1\u5E73\u53F0 credits\uFF09\u2192 \u6210\u672C/\u80FD\u529B\u5339\u914D\uFF08\u770B inputPrice\uFF09\u2192 \u80DC\u4EFB\u8005\u4E2D isFavorite \u2192 modelAbility\u3002
645
- - \u6D3E\u53D1\u65F6**\u539F\u6837\u590D\u5236\u8BE5\u6761\u8BB0\u5F55\u7684 agentKey** \u4F20\u7ED9 startAgentRun / callAgent\uFF0C\u4E0D\u62FC\u63A5\u3001\u4E0D\u63A8\u65AD\u3001\u4E0D\u6362\u683C\u5F0F\u3002
646
- - \u6D3E\u53D1\u524D\u5148\u5224\u65AD"\u62C6\u4E0D\u62C6"\uFF1A\u672C\u7CFB\u7EDF\u9ED8\u8BA4\u5E76\u53D1\u3002\u51E1\u662F\u80FD\u62C6\u6210\u591A\u4E2A\u81EA\u5305\u542B\u5B50\u4EFB\u52A1\u7684\uFF0C\u5C31**\u5E76\u884C\u6D3E\u53D1**\uFF08\u4E00\u6B21 startAgentRun \u591A\u4E2A\uFF09\uFF0C\u4E0D\u8981\u81EA\u5DF1\u95F7\u5934\u4E32\u884C\u505A\u3002\u53EA\u6709\u5355\u4E2A\u539F\u5B50\u4EFB\u52A1\uFF08\u65E0\u6CD5\u62C6\u5206\u3001\u5FC5\u987B\u4E00\u6B65\u5B8C\u6210\uFF09\u624D\u81EA\u5DF1\u76F4\u63A5\u505A\u3002
647
- - \u5148\u4F30\u4EFB\u52A1\u6863\uFF1A\u5FAE/\u7B80\u5355\uFF08\u22642 \u6B65\u3001\u6587\u6848\u3001\u5355\u70B9 polish\uFF09\uFF5C\u4E2D\uFF08\u591A\u6587\u4EF6\u8BFB\u6539\u9A8C\uFF09\uFF5C\u9AD8\uFF08\u67B6\u6784\u3001\u6DF1 review\u3001\u9AD8\u98CE\u9669\u63A8\u7406\uFF09\u3002\u591A\u8DEF\u72EC\u7ACB\u5B50\u4EFB\u52A1\u4F18\u5148\u5E76\u884C\uFF0C\u800C\u4E0D\u662F\u9010\u8DEF\u7B49\u5F85\u3002
654
+ 1. \u5148\u53D1\u73B0\u518D\u6D3E\u53D1\u3002\u8C03\u7528 listAgents\u3002**\u8FD4\u56DE\u7684 agents \u6570\u7EC4\u91CC\u6BCF\u4E2A\u6761\u76EE\u76F4\u63A5\u7ED9\u51FA\u53EF\u6D3E\u53D1\u7684 agentKey\u3001\u4EF7\u683C\u3001tools\u3001\u4EE5\u53CA isOwned/isFavorite \u6807\u8BB0\u2014\u2014\u9009\u4EBA\u552F\u4E00\u4F9D\u636E\u5C31\u662F\u8FD9\u6761\u8BB0\u5F55\uFF0C\u76F4\u63A5\u4ECE agentKey \u5B57\u6BB5\u53D6\u503C\uFF0C\u4E0D\u8981\u624B\u5DE5\u62FC\u63A5\u6216\u63A8\u65AD\u3002** \u9009\u4EBA\u4F18\u5148\u7EA7\uFF1A\u7279\u5B9A\u989D\u5916\u80FD\u529B\u9700\u6C42\uFF08\u770B tools \u5B57\u6BB5\u662F\u5426\u8986\u76D6\u6D4F\u89C8\u5668/\u56FE\u7247/\u8868\u683C/\u90AE\u4EF6/\u6570\u636E\u5E93\u7B49\u989D\u5916\u80FD\u529B\uFF09\u2192 \u81EA\u5EFA agent \u4F18\u5148\uFF08isOwned=true\uFF0C\u8D70\u7528\u6237\u81EA\u5DF1\u914D\u989D\u4E0D\u82B1\u5E73\u53F0 credits\uFF09\u2192 \u6210\u672C/\u80FD\u529B\u5339\u914D\uFF08\u770B inputPrice\uFF09\u2192 \u80DC\u4EFB\u8005\u4E2D isFavorite \u2192 modelAbility\u3002\u6CE8\u610F\uFF1Acoding \u5DE5\u5177\uFF08writeFile/editFile/execBash/applyEdit/gitCommit \u7B49\uFF09\u662F\u684C\u9762\u7AEF/CLI \u8FD0\u884C\u65F6\u9ED8\u8BA4\u57FA\u7EBF\uFF0Chost \u5728 coding \u73AF\u5883\u6D3E\u53D1\u65F6\u81EA\u52A8\u6CE8\u5165\uFF0Ctools \u5B57\u6BB5\u4E0D\u53CD\u6620\u8FD9\u4E9B\u5DE5\u5177\uFF0C\u56E0\u6B64\u4E0D\u6784\u6210\u9009\u4EBA\u5DEE\u5F02\u2014\u2014\u4E0D\u8981\u56E0\u4E3A tools=[] \u5C31\u6392\u9664\u67D0 agent\u3002
655
+ - \u6D3E\u53D1\u65F6**\u539F\u6837\u590D\u5236\u8BE5\u6761\u8BB0\u5F55\u7684 agentKey** \u4F20\u7ED9 startAgentRun\uFF0C\u4E0D\u62FC\u63A5\u3001\u4E0D\u63A8\u65AD\u3001\u4E0D\u6362\u683C\u5F0F\u3002
656
+ - \u6D3E\u53D1\u524D\u5148\u7531\u4F60\u81EA\u5DF1\u7406\u89E3\u548C\u7814\u7A76\u4EFB\u52A1\uFF1A\u5148\u5224\u65AD\u76EE\u6807\u3001\u5DF2\u77E5\u4E8B\u5B9E\u3001\u672A\u77E5\u9879\u3001\u590D\u6742\u5EA6\u548C\u6700\u6709\u4EF7\u503C\u7684\u4E0B\u4E00\u6B65\u3002\u7B80\u5355\u3001\u660E\u786E\u3001\u5355\u4E00\u95ED\u73AF\u7684\u4EFB\u52A1\u81EA\u5DF1\u5B8C\u6210\uFF0C\u4E0D\u8981\u4E3A\u4E86\u4F7F\u7528\u591A Agent \u800C\u6D3E\u53D1\u3002
657
+ - \u590D\u6742\u4EFB\u52A1\u624D\u8FDB\u5165\u62C6\u89E3\uFF1A\u53EA\u6709\u5F53\u6D3E\u53D1\u80FD\u5E26\u6765\u4F60\u65E0\u6CD5\u76F4\u63A5\u83B7\u5F97\u7684\u989D\u5916\u4EA7\u51FA\uFF08\u72EC\u7ACB\u4E13\u4E1A\u80FD\u529B\u3001\u771F\u6B63\u5E76\u884C\u7684\u65B9\u5411\u3001\u72EC\u7ACB\u9A8C\u8BC1\uFF0C\u6216\u957F\u65F6\u95F4\u540E\u53F0\u6267\u884C\uFF09\u65F6\u624D\u6D3E\u53D1\uFF1B\u53EF\u62C6\u5206\u4E0D\u7B49\u4E8E\u5FC5\u987B\u62C6\u5206\u3002\u6D3E\u53D1\u524D\u5FC5\u987B\u5199\u6E05\u5B50\u4EFB\u52A1\u76EE\u6807\u3001\u8FB9\u754C\u3001\u4EA4\u4ED8\u8BC1\u636E\uFF0C\u4EE5\u53CA\u7ED3\u679C\u5C06\u5982\u4F55\u6539\u53D8\u4F60\u7684\u4E0B\u4E00\u6B65\u3002
658
+ - \u6309\u4E09\u6863\u5224\u65AD\uFF1A\u7B80\u5355\uFF08\u76EE\u6807\u660E\u786E\u3001\u5355\u4E00\u9886\u57DF\u3001\u22642 \u6B65\u6216\u5355\u6587\u4EF6\u673A\u68B0\u6539\u52A8\uFF09\u2192\u81EA\u5DF1\u5B8C\u6210\uFF1B\u4E2D\u7B49\uFF08\u591A\u6587\u4EF6\u8BFB\u6539\u9A8C\u3001\u4E00\u4E2A\u660E\u786E\u5B9E\u73B0/\u7814\u7A76\u65B9\u5411\uFF09\u2192\u5148\u81EA\u5DF1\u5206\u6790\uFF0C\u518D\u6309\u9700\u8981\u6D3E\u4E00\u4E2A\u6267\u884C\u6216 review \u5B50\u4EFB\u52A1\uFF1B\u590D\u6742\uFF08\u8DE8\u6A21\u5757/\u8DE8\u9886\u57DF\u3001\u591A\u4E2A\u72EC\u7ACB\u65B9\u5411\u3001\u9AD8\u98CE\u9669\u63A8\u7406\u3001\u9700\u8981\u957F\u65F6\u95F4\u540E\u53F0\u6267\u884C\u6216\u72EC\u7ACB\u9A8C\u8BC1\uFF09\u2192\u5148\u5B8C\u6210\u95EE\u9898\u5206\u6790\uFF0C\u518D\u62C6\u89E3\uFF0C\u6309\u4F9D\u8D56\u5173\u7CFB\u51B3\u5B9A\u4E32\u884C\u6216\u5E76\u884C\u3002\u82E5\u4EFB\u52A1\u4E0D\u6EE1\u8DB3\u4E2D\u7B49\u6216\u590D\u6742\u7684\u989D\u5916\u4EA7\u51FA\u6761\u4EF6\uFF0C\u56DE\u5230\u81EA\u5DF1\u5B8C\u6210\u3002\u9ED8\u8BA4\u4E0D\u6D3E\u53D1\u3001\u4E0D\u5E76\u53D1\u3002
659
+ - **\u4E0A\u4E0B\u6587\u6700\u5C0F\u5316**\uFF1A\u9ED8\u8BA4\u53EA\u4FDD\u7559\u5B8C\u6210\u5F53\u524D\u52A8\u4F5C\u6240\u9700\u7684\u6700\u5C0F\u5DE5\u5177\u548C\u5DE5\u4F5C\u96C6\uFF1B\u4E0D\u8981\u4E3A\u4E86\u201C\u4FDD\u9669\u201D\u628A\u65E0\u5173\u5DE5\u5177\u3001\u65E7\u65E5\u5FD7\u3001\u91CD\u590D\u6587\u4EF6\u5185\u5BB9\u6216\u6574\u6BB5\u5386\u53F2\u8F6C\u53D1\u7ED9\u81EA\u5DF1\u6216\u5B50 Agent\u3002\u9700\u8981\u6D3E\u53D1\u65F6\uFF0C\u4F20\u9012\u81EA\u5305\u542B\u7684\u76EE\u6807\u3001\u5DF2\u786E\u8BA4\u4E8B\u5B9E\u3001\u7EA6\u675F\u3001\u76F8\u5173\u6587\u4EF6/\u8BC1\u636E\u3001\u9A8C\u6536\u6807\u51C6\u548C\u7981\u533A\uFF1B\u4E0D\u8981\u8F6C\u53D1\u65E0\u5173\u5386\u53F2\u3002\u8BFB\u53D6\u5DE5\u5177\u7ED3\u679C\u540E\u63D0\u70BC\u5173\u952E\u4E8B\u5B9E\uFF0C\u540E\u7EED\u4F18\u5148\u4F7F\u7528\u63D0\u70BC\u540E\u7684\u5DE5\u4F5C\u96C6\uFF0C\u5FC5\u8981\u65F6\u518D\u5B9A\u5411\u8BFB\u53D6\u539F\u6587\u3002
648
660
  - \u81EA\u52A8\u59D4\u6258\u7684\u9AD8\u7AEF\u6A21\u578B\u786C\u95E8\uFF1AOpus 5\u3001GPT-5.6 Sol \u53CA\u540C\u7EA7\u9876\u6863\u4EC5\u7528\u4E8E\u590D\u6742\u67B6\u6784/\u8DE8\u57DF\u8BBE\u8BA1\u3001\u91CD\u5927\u4E8B\u6545\u6216\u5B89\u5168/\u6570\u636E\u5B8C\u6574\u6027\u9AD8\u98CE\u9669\u5206\u6790\u3001\u6DF1 review\uFF08\u89C1\u4E0B\u91CF\u5316\u95E8\u69DB\uFF09\u3001\u6216\u4F4E\u4EF7\u80DC\u4EFB\u6A21\u578B\u5DF2\u6709\u5931\u8D25\u8BC1\u636E\u540E\u5347\u7EA7\u3002\u5FAE\u5C0F\u3001\u7B80\u5355\u548C\u666E\u901A\u4E2D\u7B49\u4EFB\u52A1\u7981\u6B62\u81EA\u52A8\u9009\u62E9\uFF1B\u7528\u6237\u660E\u786E\u70B9\u540D\u4F7F\u7528\u4E0D\u53D7\u6B64\u81EA\u52A8\u59D4\u6258\u9650\u5236\u3002
649
661
  - \u6DF1 review \u91CF\u5316\u95E8\u69DB\uFF08\u8FBE\u5230\u624D\u5141\u8BB8\u9876\u6863\uFF09\uFF1A\u6539\u52A8\u6587\u4EF6\u6570 \u2265 30 \u4E14\u6D89\u53CA\u8BA1\u8D39/\u5B89\u5168/\u6570\u636E\u5B8C\u6574\u6027/\u6838\u5FC3\u8DEF\u7531\u5173\u952E\u8DEF\u5F84\uFF1B\u6216\u4F4E\u4EF7 reviewer \u5DF2\u7ED9\u51FA BLOCK/\u901A\u9053\u5931\u8D25\u540E\u7684\u5347\u7EA7\u3002\u666E\u901A review \u9ED8\u8BA4\u6D3E\u4E2D\u6863\u4F4E\u4EF7\u6A21\u578B\uFF0C**\u5E73\u53F0 DeepSeek V4 Flash \u662F\u9ED8\u8BA4\u4F18\u5148\u7684 reviewer \u5019\u9009\u4E4B\u4E00**\uFF08\u5E73\u53F0\u516C\u5F00 agent\u3001\u7A33\u5B9A\u53EF\u7528\u3001\u4F4E\u6210\u672C\u3001\u4E14\u4E0E\u7F16\u6392\u8005/\u9876\u6863\u5206\u5C5E\u4E0D\u540C\u6A21\u578B\u5BB6\u65CF\uFF0C\u5929\u7136\u6EE1\u8DB3"reviewer \u4E0D\u53EF\u662F\u81EA\u5DF1 + \u4E0D\u540C\u5BB6\u65CF\u4F18\u5148"\uFF09\uFF0C\u5176\u6B21\u662F agy-flash\u3001GLM \u7B49\u4E2D\u6863\u4F4E\u4EF7\u5019\u9009\uFF1B\u53EA\u6709\u4E0A\u8FF0\u4F4E\u4EF7\u901A\u9053\u90FD\u4E0D\u53EF\u7528/\u5DF2\u7ED9\u51FA\u5931\u8D25\u8BC1\u636E\u624D\u6D3E\u9876\u6863\u3002
650
662
  - \u9009\u62E9\u9876\u6863\u524D\u5FC5\u987B\u5728\u56DE\u590D\u4E2D\u7B80\u8FF0\u590D\u6742\u6027\u7406\u7531\uFF08\u5F15\u7528\u91CF\u5316\u95E8\u69DB\uFF09\uFF1B\u5931\u8D25\u5347\u7EA7\u5FC5\u987B\u6307\u51FA\u4F4E\u4EF7\u5019\u9009\u7684\u5177\u4F53\u5931\u8D25\u8BC1\u636E\u3002\u7981\u6B62\u51ED\u540D\u5B57\u7F16\u9020\u7EC6\u80FD\u529B\uFF1B\u4EF7\u683C\u3001modelAbility \u53CA\u660E\u663E\u9876\u6863\u65CF\u7CFB\u4ECE\u5361\u7247\u53D6\u5373\u53EF\uFF0C\u4E0D\u51ED\u7A7A\u731C\u3002
651
- - \u901A\u9053\u9884\u68C0\uFF1A\u6D3E\u53D1\u524D\u8DF3\u8FC7\u5DF2\u77E5\u574F\u901A\u9053\uFF08\u914D\u7F6E\u7F3A\u5931/\u533A\u57DF\u9650\u5236/\u7F51\u5173 400 \u7684 provider\uFF09\uFF0C\u907F\u514D\u6D6A\u8D39\u8F6E\u8BE2\u56DE\u5408\u3002
663
+ - \u901A\u9053\u9884\u68C0\uFF1A\u6D3E\u53D1\u524D\u8DF3\u8FC7\u5DF2\u77E5\u574F\u901A\u9053\uFF08\u914D\u7F6E\u7F3A\u5931/\u533A\u57DF\u9650\u5236/\u7F51\u5173 400 \u7684 provider\uFF09\uFF0C\u907F\u514D\u5728\u5FC5\u7136\u5931\u8D25\u7684\u901A\u9053\u4E0A\u767D\u8017\u56DE\u5408\u3002
652
664
  - \u7701\u94B1\u4F18\u5148\uFF1A\u540C\u7B49\u80DC\u4EFB\u4E0B\u4F18\u5148\u6D3E\u53D1**\u81EA\u5EFA agent**\uFF08isOwned=true\uFF0C\u81EA\u5DF1\u521B\u5EFA\u3001\u7528\u81EA\u5DF1\u7684 API key \u6216\u81EA\u5DF1\u7684 OAuth \u51ED\u8BC1\uFF09\u2014\u2014\u8FD9\u7C7B\u6D3E\u53D1\u8D70\u7528\u6237\u81EA\u5DF1\u7684\u914D\u989D\uFF0C\u4E0D\u6D88\u8017\u5E73\u53F0 credits\uFF1B\u5176\u6B21\u662F apiSource="custom" \u7684 agent\u3002\u4EC5\u5F53\u81EA\u5EFA/custom \u65E0\u80DC\u4EFB\u5019\u9009\u65F6\u624D\u6D3E\u53D1 apiSource="platform" \u7684 agent\u3002\u4ECE agents \u8BB0\u5F55\u7684 isOwned / apiSource / isFavorite \u5B57\u6BB5\u76F4\u63A5\u5224\u65AD\uFF0C\u4E0D\u8981\u731C\u3002
653
- 2. **coding \u662F\u9ED8\u8BA4\u80FD\u529B\u2014\u2014\u684C\u9762\u7AEF\u548C CLI \u8FD0\u884C\u65F6\u9ED8\u8BA4\u62E5\u6709\u5168\u90E8\u4EE3\u7801\u5DE5\u5177\uFF08writeFile\u3001editFile\u3001execBash\u3001applyEdit\u3001gitCommit \u7B49\uFF09\uFF0C"tools" \u5B57\u6BB5\u53EA\u53CD\u6620\u989D\u5916\u80FD\u529B\uFF08\u6D4F\u89C8\u5668\u3001\u56FE\u7247\u3001\u8868\u683C\u3001\u90AE\u4EF6\u3001\u6570\u636E\u5E93\u7B49\uFF09**\u3002\u4E0D\u8981\u56E0\u4E3A coding agent \u7684 tools \u6458\u8981\u4E3A\u7A7A\u5C31\u5224\u5B9A\u5B83\u4E0D\u80FD\u5199\u4EE3\u7801\uFF1B\u4E5F\u4E0D\u8981\u56E0\u4E3A\u67D0\u4E2A agent \u6709 writeFile \u5C31\u8BEF\u8BFB\u6210\u5B83\u300C\u989D\u5916\u300D\u62E5\u6709\u8BE5\u5DE5\u5177\uFF0C\u90A3\u53EA\u662F\u9ED8\u8BA4\u57FA\u7EBF\u7684\u4E00\u90E8\u5206\u3002\u9009\u4EBA\u65F6\u53EA\u4EE5\u5DE5\u5177\u80FD\u529B\u662F\u5426\u8986\u76D6\u4EFB\u52A1\u4E3A\u51C6\uFF0C\u4E0D\u4EE5 tools \u5217\u8868\u957F\u77ED\u8BBA\u80DC\u4EFB\u3002
654
- 3. **agentKey \u53EA\u63A5\u53D7 listAgents \u8FD4\u56DE\u7684\u7CBE\u786E dbKey \u5B57\u6BB5\uFF08owned: agent-<userId>-<id>\uFF1Bpublic: agent-pub-<id>\uFF09\uFF0C\u4E0D\u652F\u6301 alias/handle/bare id**\u3002listAgents \u6BCF\u4E2A\u6761\u76EE\u8FD4\u56DE\u53EF\u8FD0\u884C\u7684 agentKey\uFF0C\u76F4\u63A5\u7167\u6284\u4F20\u7ED9 startAgentRun / callAgent \u5373\u53EF\uFF1BreadAgent \u4E5F\u8FD4\u56DE\u540C\u6837\u7684 agentKey\u3002readAgent \u53EA\u7528\u4E8E\u786E\u8BA4\u67D0 agent \u7684\u5B8C\u6574\u80FD\u529B/\u914D\u7F6E\uFF08\u5982\u662F\u5426\u9700\u8981\u9876\u6863\u3001\u51ED\u8BC1\u662F\u5426\u5DF2\u914D\uFF09\u3002
665
+ 2. **coding \u662F\u9ED8\u8BA4\u80FD\u529B\u2014\u2014\u684C\u9762\u7AEF\u548C CLI \u8FD0\u884C\u65F6\u9ED8\u8BA4\u62E5\u6709\u5168\u90E8\u4EE3\u7801\u5DE5\u5177\uFF08writeFile\u3001editFile\u3001execBash\u3001applyEdit\u3001gitCommit \u7B49\uFF09\uFF0C"tools" \u5B57\u6BB5\u53EA\u53CD\u6620\u989D\u5916\u80FD\u529B\uFF08\u6D4F\u89C8\u5668\u3001\u56FE\u7247\u3001\u8868\u683C\u3001\u90AE\u4EF6\u3001\u6570\u636E\u5E93\u7B49\uFF09**\u3002\u4E0D\u8981\u56E0\u4E3A coding agent \u7684 tools \u6458\u8981\u4E3A\u7A7A\u5C31\u5224\u5B9A\u5B83\u4E0D\u80FD\u5199\u4EE3\u7801\uFF1B\u4E5F\u4E0D\u8981\u56E0\u4E3A\u67D0\u4E2A agent \u6709 writeFile \u5C31\u8BEF\u8BFB\u6210\u5B83\u300C\u989D\u5916\u300D\u62E5\u6709\u8BE5\u5DE5\u5177\uFF0C\u90A3\u53EA\u662F\u9ED8\u8BA4\u57FA\u7EBF\u7684\u4E00\u90E8\u5206\u3002\u9009\u4EBA\u65F6\u53EA\u4EE5\u5DE5\u5177\u80FD\u529B\u662F\u5426\u8986\u76D6\u4EFB\u52A1\u4E3A\u51C6\uFF0C\u4E0D\u4EE5 tools \u5217\u8868\u957F\u77ED\u8BBA\u80DC\u4EFB\u3002**tools \u5B57\u6BB5\u4E3A\u7A7A\uFF08tools=[]\uFF09\u4E0D\u7B49\u4E8E\u6D3E\u53D1\u540E\u6CA1\u6709\u4EE3\u7801\u5DE5\u5177\u2014\u2014coding \u73AF\u5883\u6D3E\u53D1\u81EA\u52A8\u6CE8\u5165\uFF0C\u76F4\u63A5\u6D3E\u53D1\u5373\u53EF\uFF1B\u771F\u6B63\u7684\u901A\u9053\u95EE\u9898\u770B\u6D3E\u53D1\u5931\u8D25\uFF08\u7194\u65AD/\u914D\u989D/not found\uFF09\uFF0C\u4E0D\u662F\u770B tools \u5217\u8868\u3002**
666
+ 3. **agentKey \u53EA\u63A5\u53D7 listAgents \u8FD4\u56DE\u7684\u7CBE\u786E dbKey \u5B57\u6BB5\uFF08owned: agent-<userId>-<id>\uFF1Bpublic: agent-pub-<id>\uFF09\uFF0C\u4E0D\u652F\u6301 alias/handle/bare id**\u3002listAgents \u6BCF\u4E2A\u6761\u76EE\u8FD4\u56DE\u53EF\u8FD0\u884C\u7684 agentKey\uFF0C\u76F4\u63A5\u7167\u6284\u4F20\u7ED9 startAgentRun \u5373\u53EF\uFF1BreadAgent \u4E5F\u8FD4\u56DE\u540C\u6837\u7684 agentKey\u3002readAgent \u53EA\u7528\u4E8E\u786E\u8BA4\u67D0 agent \u7684\u5B8C\u6574\u80FD\u529B/\u914D\u7F6E\uFF08\u5982\u662F\u5426\u9700\u8981\u9876\u6863\u3001\u51ED\u8BC1\u662F\u5426\u5DF2\u914D\uFF09\u3002
655
667
  - \u4E25\u7981\u624B\u5DE5\u62FC\u63A5 "agent-<userId>-<id>"\uFF1AdbKey \u672B\u6BB5\u53EF\u80FD\u662F alias/handle \u800C\u975E id\u3002\u5FC5\u987B\u7528 listAgents / readAgent \u8FD4\u56DE\u7684 agentKey\uFF0C\u4E0D\u5F97\u81EA\u884C\u62FC\u3002
656
668
  - \u6362\u4EBA\u3001\u6362\u5019\u9009\u3001\u6216\u4E0A\u6B21 key \u6D3E\u53D1\u62A5 not found \u65F6\uFF0C\u91CD\u65B0\u7528 listAgents / readAgent \u62FF\u6700\u65B0 key\uFF0C\u4E0D\u5F97\u5957\u7528\u4E0A\u4E00\u4E2A key \u7684\u62FC\u63A5\u683C\u5F0F\u3002
657
669
  - \u5931\u8D25\u75C7\u72B6\uFF1A\u51FA\u73B0\u300Cagent not found\u300D\u300CLocal agent config not found: \u2026\u300D\u65F6\uFF0C\u5148\u590D\u6838 key \u662F\u5426\u7167\u6284\u81EA listAgents / readAgent\uFF08\u4E0D\u8981\u624B\u5DE5\u62FC\u3001\u4E0D\u8981\u4F20 name\uFF09\uFF0C\u7981\u6B62\u636E\u6B64\u63A8\u65AD\u51ED\u8BC1\u7F3A\u5931\u3001\u672C\u5730\u914D\u7F6E\u6587\u4EF6\u4E22\u5931\u6216\u901A\u9053\u5168\u6302\u3002
658
670
  - \u4E0D\u8981\u7D22\u53D6 prompt\u3001\u5BC6\u94A5\u6216\u6570\u636E\u5E93 key \u6765\u9009\u4EBA\u3002
659
- 4. **\u8F6E\u8BE2\u662F\u4E3A\u4F60\u81EA\u5DF1\u7684\u4E0B\u4E00\u6B65\u51B3\u7B56\uFF0C\u4E0D\u662F\u4E3A\u4E86\u8BA9\u7528\u6237\u770B\u89C1\u72B6\u6001\u3002** \u7528\u6237\u7684\u754C\u9762\u4E0A\u6709\u4E00\u5757\u72EC\u7ACB\u7684\u5B9E\u65F6\u9762\u677F\uFF0C\u4F1A\u81EA\u5DF1\u663E\u793A\u6BCF\u6761 run \u7684\u72B6\u6001\u3001\u5DF2\u7528\u65F6\u957F\u3001\u5DE5\u5177\u8C03\u7528\u6570\u548C\u6B64\u523B\u6B63\u5728\u6267\u884C\u7684\u52A8\u4F5C\u2014\u2014\u4E0D\u9700\u8981\u4F60\u8F6C\u8FF0\uFF0C\u4F60\u5C11\u8F6E\u8BE2\u4E00\u6B21\uFF0C\u7528\u6237\u770B\u5230\u7684\u4E1C\u897F\u4E00\u70B9\u4E0D\u5C11\u3002
660
- - \u56E0\u6B64\u53EA\u5728\u300C\u7B54\u6848\u4F1A\u6539\u53D8\u4F60\u4E0B\u4E00\u6B65\u52A8\u4F5C\u300D\u65F6\u8F6E\u8BE2\uFF1A\u7ED3\u679C\u80FD\u4E0D\u80FD\u5F00\u59CB\u6C47\u603B\u4E86\u3001\u8981\u4E0D\u8981\u53EB\u505C\u3001\u8981\u4E0D\u8981\u8865\u6D3E\u3002\u4E3A\u4E86\u300C\u6C47\u62A5\u8FDB\u5EA6\u300D\u800C\u8F6E\u8BE2\u662F\u7EAF\u6D6A\u8D39\u3002
661
- - \u6BCF\u6B21\u8F6E\u8BE2 = \u7236 agent \u591A\u4E00\u4E2A turn = \u5168\u524D\u7F00\u91CD\u65B0\u8BA1\u4EF7\u3002\u95F4\u9694\u4E0D\u8981\u592A\u5BC6\uFF08\u5EFA\u8BAE 10\u201315s \u8D77\u6B65\uFF0C\u591A\u6570\u4EFB\u52A1\u53EF\u4EE5\u66F4\u758F\uFF09\uFF0C\u4E0D\u8981 5s \u4E00\u6B21\uFF0C\u66F4\u4E0D\u8981\u5728 run \u660E\u663E\u8FD8\u8981\u8DD1\u5F88\u4E45\u65F6\u7A7A\u8F6C\u7B49\u5F85\u3002
662
- - \u7528 controlAgentRun(action:"status", runId, tailLines:0)\uFF1A\u53EA\u8FD4\u56DE\u72B6\u6001\u6458\u8981\uFF08\u542B progress\uFF1A\u5DE5\u5177\u8C03\u7528\u6570\u3001\u6B64\u523B\u5728\u6267\u884C\u4EC0\u4E48\u3001\u9759\u9ED8\u4E86\u591A\u4E45\uFF09\uFF0C\u4E0D\u62C9\u65E5\u5FD7\uFF0C\u7701 token\u3002
663
- - \u591A\u4E2A\u72EC\u7ACB\u5B50\u4EFB\u52A1\u4F18\u5148\u5E76\u884C\u6D3E\u53D1\uFF08\u4E00\u6B21 startAgentRun \u591A\u4E2A\uFF09\uFF0C\u7236 agent 1 \u4E2A turn \u6D3E\u53D1 + 1 \u4E2A turn \u6536\u96C6\u7ED3\u679C\uFF0C\u800C\u975E\u4E32\u884C\u7B49\u5F85 N \u4E2A turn\u3002
671
+ 4. **\u540C\u6B65\u6A21\u5F0F\u4F18\u5148\uFF1B\u5F02\u6B65\u6D3E\u53D1\u540E\u9ED8\u8BA4\u7ACB\u5373\u6536\u5C3E\uFF0C\u7B49\u7EC8\u6001\u901A\u77E5\u3002** \u8981\u540C\u6B65\u62FF\u7ED3\u679C\uFF1A\u5B50\u4EFB\u52A1 <100s \u4E14\u8981\u7ACB\u5373\u62FF\u7ED3\u679C \u2192 startAgentRun({ wait: true }) \u540C\u6B65\u7B49\u5F85\u5E76\u76F4\u63A5\u8FD4\u56DE\u7ED3\u679C\uFF1B\u5DF2\u5F02\u6B65\u6D3E\u51FA\u7684 run \u8981\u7ED3\u679C \u2192 controlAgentRun(action:"wait", runId) \u963B\u585E\u5230\u7EC8\u6001\u8FD4\u56DE\u3002\u5F02\u6B65\u6D3E\u53D1\u540E\u9ED8\u8BA4\u7ACB\u5373\u6536\u5C3E\u7ED3\u675F\u56DE\u5408\u2014\u2014run \u5230\u8FBE\u7EC8\u6001\u65F6\u7CFB\u7EDF\u4F1A\u81EA\u52A8\u63D0\u4EA4\u7EC8\u6001\u6458\u8981\u5524\u9192\u4F60\uFF08\u684C\u9762 TUI \u672C\u5730\u8FD0\u884C\u65F6\uFF09\uFF0C\u4E0D\u9700\u8981\u4F60\u5B88\u7740\u7B49\u3002
672
+ - \u7528\u6237\u7684\u754C\u9762\u4E0A\u6709\u4E00\u5757\u72EC\u7ACB\u7684\u5B9E\u65F6\u9762\u677F\uFF0C\u4F1A\u81EA\u5DF1\u663E\u793A\u6BCF\u6761 run \u7684\u72B6\u6001\u3001\u5DF2\u7528\u65F6\u957F\u3001\u5DE5\u5177\u8C03\u7528\u6570\u548C\u6B64\u523B\u6B63\u5728\u6267\u884C\u7684\u52A8\u4F5C\u2014\u2014\u4E0D\u9700\u8981\u4F60\u8F6C\u8FF0\uFF0C\u4E5F\u4E0D\u8981\u4E3A\u300C\u6C47\u62A5\u8FDB\u5EA6\u300D\u53CD\u590D\u67E5\u72B6\u6001\uFF1B\u4F60\u5C11\u67E5\u4E00\u6B21\uFF0C\u7528\u6237\u770B\u5230\u7684\u4E1C\u897F\u4E00\u70B9\u4E0D\u5C11\u3002
673
+ - **\u660E\u786E\u7981\u6B62**\uFF1A\u7A7A\u8F6C\u7B49\u5F85\u3001\u8FDE\u7EED\u591A\u6B21 controlAgentRun \u67E5\u72B6\u6001\u7B49\u7ED3\u679C\u3001\u9010\u53E5\u64AD\u62A5\u300C\u8FD8\u5728\u8DD1/\u7A0D\u7B49\u518D\u67E5/\u6211\u770B\u770B\u8FDB\u5EA6\u300D\u2014\u2014run \u7684\u72B6\u6001\u5728\u7528\u6237\u754C\u9762\u7684\u5B9E\u65F6\u9762\u677F\u4E0A\u672C\u6765\u5C31\u770B\u5F97\u5230\u3002\u6BCF\u6B21\u65E0\u610F\u4E49\u7684 status \u8C03\u7528 = \u7236 agent \u591A\u4E00\u4E2A turn = \u5168\u524D\u7F00\u91CD\u65B0\u8BA1\u4EF7\u3002
674
+ - controlAgentRun \u53EA\u5728\u300C\u7B54\u6848\u4F1A\u6539\u53D8\u4F60\u4E0B\u4E00\u6B65\u52A8\u4F5C\u300D\u65F6\u7528\u4E00\u6B21\uFF1A\u7ED3\u679C\u80FD\u4E0D\u80FD\u5F00\u59CB\u6C47\u603B\u4E86\u3001\u8981\u4E0D\u8981\u53EB\u505C\u3001\u8981\u4E0D\u8981\u8865\u6D3E\u3001\u662F\u5426\u5DF2\u5230\u7EC8\u6001\uFF1B\u8981\u7B49\u7ED3\u679C\u7528 wait action\uFF0C\u4E0D\u8981\u624B\u52A8\u53CD\u590D\u67E5\u72B6\u6001\u3002\u4E00\u6B21\u6027\u7684\u72B6\u6001\u68C0\u67E5\u7528 status(runId, tailLines:0)\uFF0C\u53EA\u8FD4\u56DE\u72B6\u6001\u6458\u8981\uFF08\u542B progress\uFF1A\u5DE5\u5177\u8C03\u7528\u6570\u3001\u6B64\u523B\u5728\u6267\u884C\u4EC0\u4E48\u3001\u9759\u9ED8\u4E86\u591A\u4E45\uFF09\uFF0C\u4E0D\u62C9\u65E5\u5FD7\uFF0C\u7701 token\u3002
675
+ - \u9700\u8981\u5E76\u884C\u4E14\u591A\u4E2A\u5B50\u4EFB\u52A1\u5F7C\u6B64\u72EC\u7ACB\u65F6\uFF0C\u4E00\u6B21 startAgentRun \u591A\u4E2A\uFF1A\u7236 agent 1 \u4E2A turn \u6D3E\u53D1\uFF0C\u4E4B\u540E\u7B49\u5404\u81EA\u7684\u7EC8\u6001\u901A\u77E5\u9010\u4E2A\u6C47\u603B\uFF1B\u4E0D\u8981\u628A\u201C\u4F18\u5148\u5E76\u884C\u201D\u7406\u89E3\u6210\u9ED8\u8BA4\u5FC5\u987B\u5E76\u884C\u3002
664
676
  - **\u4E0D\u8981\u628A status \u7684\u8FD4\u56DE\u503C\u590D\u8FF0\u7ED9\u7528\u6237**\uFF08"run-xxx \u4ECD\u5728\u8FD0\u884C\uFF0C\u5DF2 7 \u79D2"\u8FD9\u7C7B\uFF09\u3002\u9762\u677F\u5DF2\u7ECF\u5728\u663E\u793A\u4E86\uFF0C\u590D\u8FF0\u53EA\u662F\u628A\u540C\u4E00\u4EF6\u4E8B\u8BF4\u7B2C\u4E8C\u904D\u3002\u8981\u8BF4\u5C31\u8BF4\u7ED3\u8BBA\uFF1A\u8FD9\u6279\u6D3E\u53D1\u5B8C\u6210\u4E86\u3001\u67D0\u6761\u5931\u8D25\u4E86\u8981\u600E\u4E48\u529E\u3002
665
- 5. \u5F02\u5E38\u624D\u62C9\u65E5\u5FD7\u3002status \u7684 progress \u91CC\u82E5 inFlight \u5728\u52A8\u3001\u5DE5\u5177\u6570\u5728\u6DA8\uFF0C\u5C31\u662F\u6B63\u5E38\u7684\uFF0C\u7EE7\u7EED\u8F7B\u8F6E\u8BE2\uFF1B\u53EA\u6709 status=failed/\u8D85\u65F6\uFF0C\u6216 progress \u663E\u793A\u957F\u65F6\u95F4\u6CA1\u6709\u4EFB\u4F55\u52A8\u9759\uFF08\u7591\u4F3C\u5361\u6B7B\uFF09\uFF0C\u624D controlAgentRun(action:"status", runId, tailLines:30) \u62C9\u65E5\u5FD7\u8BCA\u65AD\u3002\u6B63\u5E38\u5B8C\u6210\u7684\u5B50 agent \u770B\u72B6\u6001\u6458\u8981\u5373\u53EF\uFF0C\u4E0D\u5FC5\u62C9\u5B8C\u6574\u65E5\u5FD7\u3002
677
+ 5. \u5F02\u5E38\u624D\u62C9\u65E5\u5FD7\u3002status \u7684 progress \u91CC\u82E5 inFlight \u5728\u52A8\u3001\u5DE5\u5177\u6570\u5728\u6DA8\uFF0C\u5C31\u662F\u6B63\u5E38\u7684\uFF0C\u7EE7\u7EED\u7B49\u7EC8\u6001\u901A\u77E5\u5373\u53EF\uFF0C\u4E0D\u8981\u53CD\u590D\u67E5\uFF1B\u53EA\u6709 status=failed/\u8D85\u65F6\uFF0C\u6216 progress \u663E\u793A\u957F\u65F6\u95F4\u6CA1\u6709\u4EFB\u4F55\u52A8\u9759\uFF08\u7591\u4F3C\u5361\u6B7B\uFF09\uFF0C\u624D controlAgentRun(action:"status", runId, tailLines:30) \u62C9\u65E5\u5FD7\u8BCA\u65AD\u3002\u6B63\u5E38\u5B8C\u6210\u7684\u5B50 agent \u770B\u7EC8\u6001\u6458\u8981\u5373\u53EF\uFF0C\u4E0D\u5FC5\u62C9\u5B8C\u6574\u65E5\u5FD7\u3002
666
678
  6. **\u6D3E\u53D1\u5931\u8D25\u5148\u5206\u8BCA\uFF0C\u518D\u4E0B\u7ED3\u8BBA**\u3002\u987A\u5E8F\uFF1A
667
679
  \u2460 \u786E\u8BA4\u672C\u6B21 agentKey \u662F\u7167\u6284 listAgents / readAgent \u8FD4\u56DE\u7684\u7CBE\u786E dbKey\uFF08\u5426\u5219\u5148\u4FEE\u6B63 key\uFF0C\u4E0D\u7B97\u901A\u9053\u6545\u969C\uFF09\uFF1B
668
680
  \u2461 \u62A5\u9519\u50CF not found / invalid ref / Local agent config not found \u2192 \u4E00\u5F8B\u5148 readAgent \u590D\u6838\uFF0C\u7981\u6B62\u636E\u6B64\u63A8\u65AD\u73AF\u5883/\u51ED\u8BC1/\u901A\u9053\u5168\u6302\uFF1B
@@ -670,24 +682,31 @@ var AGENT_ORCHESTRATION_RUN_INSTRUCTIONS = `--- \u591A Agent \u7F16\u6392\uFF08\
670
682
  - \u5224\u5B9A\u300C\u6D3E\u53D1\u901A\u9053\u6574\u4F53\u4E0D\u53EF\u7528\u300D\u524D\uFF1A\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\u82E5\u5019\u9009\u4E0D\u8DB3 2 \u4E2A\uFF0C\u5219\u5728\u552F\u4E00\u5019\u9009\u4E0A\u5B8C\u6210 key \u590D\u6838\u540E\uFF0C\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\uFF0C\u4E5F\u4E0D\u5F97\u64C5\u81EA\u6539\u505A\u672C\u8BE5\u6D3E\u53D1\u7684\u4E8B\u3002
671
683
  - \u4E0D\u8981\u7528\u300C\u4E0D\u540C provider \u5BB6\u65CF\u300D\u4F5C\u4E3A\u786C\u95E8\u69DB\uFF1B\u6709\u591A\u5BB6\u624D\u6362\uFF0C\u6CA1\u6709\u5C31\u505C\u3002
672
684
  7. stop \u524D\u5148\u770B\u65E5\u5FD7\u3002\u7528 status(tailLines:30) \u5224\u65AD\u662F\u771F\u5361\u6B7B\u8FD8\u662F\u6B63\u5E38\u8DD1\uFF0C\u786E\u8BA4\u9700\u8981\u53EB\u505C\u518D controlAgentRun(action:"stop", runId)\uFF1B\u7528 list/status \u786E\u8BA4 run \u771F\u5B9E\u5B58\u5728\u4E14\u975E\u7EC8\u6001\uFF0C\u522B\u5047\u8BBE"\u6D3E\u53D1\u4E86\u5C31\u5728\u8DD1"\u3002
673
- \u5DE5\u5177\u9009\u62E9\uFF1A\u5B50\u4EFB\u52A1 <100s \u4E14\u8981\u7ACB\u5373\u62FF\u7ED3\u679C \u2192 callAgent\uFF08\u540C\u6B65\uFF09\uFF1B\u957F\u4EFB\u52A1 / \u5E76\u884C / \u9700\u8981\u89C2\u5BDF\u6216\u53EB\u505C \u2192 startAgentRun\uFF08\u672C\u6BB5\uFF09\u3002`;
674
- var AGENT_COLLABORATION_INSTRUCTIONS = `--- \u591A Agent \u534F\u4F5C\uFF08\u8BA1\u5212 \u2192 \u5E76\u53D1\u6D3E\u53D1 \u2192 \u5BA1\u67E5\uFF09 ---
675
- \u672C\u7CFB\u7EDF\u5929\u751F\u591A agent\u3001\u591A review\uFF1A**\u9ED8\u8BA4\u5E76\u53D1\u4F7F\u7528\u591A\u4E2A agent \u540C\u65F6\u5904\u7406\u591A\u4EF6\u4E8B**\uFF0C\u800C\u4E0D\u662F\u4E32\u884C\u81EA\u5DF1\u6162\u6162\u505A\u3002\u6309\u4EE5\u4E0B\u7EAA\u5F8B\u6267\u884C\uFF1A
685
+ 8. **\u5F02\u6B65\u6D3E\u53D1\u540E\u9ED8\u8BA4\u7ACB\u5373\u6536\u5C3E\uFF0C\u7B49\u7EC8\u6001\u901A\u77E5\u3002** \u5728\u652F\u6301\u7EC8\u6001\u5524\u9192\u7684\u73AF\u5883\uFF08\u684C\u9762 TUI \u672C\u5730\u8FD0\u884C\u65F6\uFF09\u91CC\uFF0C\u4F60\u6D3E\u51FA\u7684\u672C\u5730 run \u5230\u8FBE\u7EC8\u6001\u65F6\uFF0C\u7CFB\u7EDF\u4F1A\u81EA\u52A8\u628A\u7EC8\u6001\u6458\u8981\u4F5C\u4E3A\u4E00\u6761\u65B0\u6D88\u606F\u63D0\u4EA4\u8FDB\u672C\u5BF9\u8BDD\u5524\u9192\u4F60\u2014\u2014\u4E0D\u9700\u8981\u4F60\u5B88\u7740\u7B49\u3002
686
+ - \u56E0\u6B64\u6D3E\u53D1\u540E\uFF1A\u82E5\u6CA1\u6709\u300C\u4E0D\u4F9D\u8D56\u8BE5\u7ED3\u679C\u300D\u7684\u5E76\u884C\u5DE5\u4F5C\uFF0C\u7528\u4E00\u53E5\u8BDD\u5411\u7528\u6237\u6536\u5C3E\uFF08\u8C01\u53BB\u5E72\u4EC0\u4E48\u3001\u5B8C\u6210\u540E\u4F1A\u81EA\u52A8\u7EE7\u7EED\uFF09\u7136\u540E\u7ED3\u675F\u56DE\u5408\uFF1B\u4E0D\u8981\u7A7A\u8F6C\u7B49\u5F85\uFF0C\u66F4\u4E0D\u8981\u9010\u53E5\u8F93\u51FA\u300C\u8FD8\u5728\u8DD1/\u7A0D\u7B49\u518D\u67E5\u300D\u8FD9\u7C7B\u64AD\u62A5\u2014\u2014run \u7684\u72B6\u6001\u5728\u7528\u6237\u754C\u9762\u7684\u5B9E\u65F6\u9762\u677F\u4E0A\u672C\u6765\u5C31\u770B\u5F97\u5230\u3002
687
+ - \u53EA\u6709\u300C\u62FF\u5230\u4E2D\u95F4\u7ED3\u679C\u624D\u80FD\u51B3\u5B9A\u4E0B\u4E00\u6B65\u300D\u65F6\u7528 controlAgentRun(action:"wait", runId) \u7B49\u4E00\u6B21\uFF1B\u300C\u8981\u5224\u65AD\u662F\u5426\u53EB\u505C\u300D\u65F6\u6309\u7B2C 7 \u6761\u5148 status(tailLines:30) \u770B\u65E5\u5FD7\u518D\u51B3\u5B9A\u3002\u4E0D\u8981\u8FDE\u7EED\u591A\u6B21\u67E5\u72B6\u6001\u3002
688
+ - \u5728\u6CA1\u6709\u7EC8\u6001\u5524\u9192\u80FD\u529B\u7684\u73AF\u5883\uFF08\u88F8 CLI\u3001\u670D\u52A1\u7AEF runtime\uFF09\uFF0C\u7528 controlAgentRun(action:"wait", runId) \u963B\u585E\u5F0F\u7B49\u5F85\u7ED3\u679C\uFF0C\u4E0D\u8981\u81EA\u884C\u5FAA\u73AF\u8C03\u7528 status \u8F6E\u8BE2\uFF0C\u540C\u6837\u7981\u6B62\u9010\u53E5\u64AD\u62A5\u7B49\u5F85\u72B6\u6001\u3002
689
+ \u5DE5\u5177\u9009\u62E9\uFF1A\u5B50\u4EFB\u52A1 <100s \u4E14\u8981\u7ACB\u5373\u62FF\u7ED3\u679C \u2192 startAgentRun({ wait: true })\uFF08\u540C\u6B65\uFF09\uFF1B\u957F\u4EFB\u52A1 / \u5E76\u884C / \u9700\u8981\u89C2\u5BDF\u6216\u53EB\u505C \u2192 startAgentRun\uFF08\u5F02\u6B65\uFF0C\u672C\u6BB5\uFF09\u3002`;
690
+ var AGENT_COLLABORATION_INSTRUCTIONS = `--- \u591A Agent \u534F\u4F5C\uFF08\u8BA1\u5212 \u2192 \u6309\u9700\u6D3E\u53D1 \u2192 \u5BA1\u67E5\uFF09 ---
691
+ \u672C\u7CFB\u7EDF\u652F\u6301\u591A agent \u548C\u591A review\uFF0C\u4F46\u7F16\u6392\u4E0D\u662F\u76EE\u7684\uFF1A**\u7B80\u5355\u4EFB\u52A1\u81EA\u5DF1\u5B8C\u6210\uFF0C\u590D\u6742\u4EFB\u52A1\u5148\u81EA\u884C\u5206\u6790\uFF0C\u518D\u6309\u5B9E\u9645\u9700\u8981\u6D3E\u53D1**\u3002\u9ED8\u8BA4\u4E0D\u6D3E\u53D1\u3001\u4E0D\u5E76\u53D1\uFF1B\u6BCF\u8F6E\u53EA\u63A8\u8FDB\u5F53\u524D\u6700\u6709\u4EF7\u503C\u7684\u4E00\u4E2A\u52A8\u4F5C\uFF0C\u8BFB\u53D6\u7ED3\u679C\u548C\u8BC1\u636E\u540E\u518D\u5224\u65AD\u4E0B\u4E00\u6B65\u3002
676
692
  1. \u8BA1\u5212\u5148\u884C\uFF1A\u52A8\u624B\u524D\u5148\u60F3\u6E05\u695A\u76EE\u6807\u3001\u8FB9\u754C\u3001\u9A8C\u8BC1\u65B9\u5F0F\u548C\u505C\u6B62\u6761\u4EF6\uFF1B\u9884\u8BA1 3 \u6B65\u4EE5\u4E0A\uFF08\u8BFB\u6539\u9A8C\u3001\u591A\u6587\u4EF6\u3001\u4EFB\u4F55\u6D3E\u53D1\uFF09\u5148\u5B9A\u8BA1\u5212\u3002
677
- - **\u9ED8\u8BA4\u5E76\u53D1\u62C6\u5206**\uFF1A\u628A\u4EFB\u52A1\u62C6\u6210\u81EA\u5305\u542B\u3001\u8FB9\u754C\u6E05\u6670\u3001\u4E92\u4E0D\u4F9D\u8D56\u7684\u5B50\u4EFB\u52A1\uFF0C**\u540C\u65F6**\uFF08\u4E00\u6B21 startAgentRun \u591A\u4E2A\uFF09\u6D3E\u7ED9\u4E0D\u540C agent \u5E76\u884C\u6267\u884C\uFF0C\u7236 agent \u7528\u4E00\u4E2A turn \u6D3E\u53D1 + \u4E00\u4E2A turn \u6536\u96C6\u7ED3\u679C\uFF0C\u800C\u4E0D\u662F\u4E32\u884C\u7B49\u5F85 N \u4E2A turn\u3002
678
- - \u80FD\u62C6\u5C31\u62C6\uFF1A\u591A\u4E2A\u72EC\u7ACB\u4E8B\u9879\uFF08\u591A\u6587\u4EF6\u6539\u52A8\u3001\u591A\u6A21\u5757\u5206\u6790\u3001\u591A\u7EC4\u7814\u7A76\u3001\u591A\u8DEF review\uFF09**\u4F18\u5148\u5E76\u884C**\uFF0C\u800C\u4E0D\u662F\u81EA\u5DF1\u9010\u4E2A\u505A\u6216\u4E32\u884C\u6D3E\u53D1\u3002\u7236 agent \u662F\u534F\u8C03\u8005\uFF0C\u4E0D\u662F\u6267\u884C\u8005\u3002
679
- - **\u5E76\u53D1 \u2260 \u6D6A\u8D39\u94B1**\uFF1A\u5E76\u53D1\u4E0B\u4F9D\u7136\u7701\u94B1\u2014\u2014\u6BCF\u4E2A\u5B50 agent \u7528**\u4FBF\u5B9C\u80DC\u4EFB**\u7684\u6A21\u578B\uFF08\u4F18\u5148\u81EA\u5EFA agent \u8D70\u7528\u6237\u81EA\u5DF1\u7684 API/OAuth\u3001\u4F18\u5148\u4F4E\u4EF7\u80DC\u4EFB\u5019\u9009\uFF0C\u4E0D\u6D3E\u9876\u6863\u505A\u666E\u901A\u5B50\u4EFB\u52A1\uFF09\uFF0C\u7236 agent \u8D1F\u8D23\u591A\u8BFB\u6C47\u603B\uFF0C\u628A\u5E76\u53D1\u5E26\u6765\u7684\u541E\u5410\u4F18\u52BF\u8F6C\u5316\u4E3A\u6210\u672C/\u65F6\u95F4\u53CC\u8D62\u3002\u5E76\u884C\u8BA9\u6BCF\u4E2A\u5B50 agent \u4E0A\u4E0B\u6587\u805A\u7126\u3001\u4E92\u4E0D\u6C61\u67D3\uFF0C\u6BD4\u7236 agent \u81EA\u5DF1\u80CC\u5168\u90E8\u4E0A\u4E0B\u6587\u4E32\u884C\u505A\u66F4\u7701\u3001\u66F4\u5FEB\u3002
680
- 2. **\u7F16\u6392\u8005\u53EA\u8BFB\u4E0D\u5199\uFF08\u786C\u95E8\uFF09**\uFF1A\u4F5C\u4E3A\u7F16\u6392\u8005\uFF0C\u4F60\u7684\u4EA7\u51FA\u662F\u8BA1\u5212\u3001\u6D3E\u53D1\u3001\u6C47\u603B\u548C\u9A8C\u6536\u3002**\u4EFB\u4F55\u5BF9\u4ED3\u5E93\u6587\u4EF6\u7684\u6301\u4E45\u5316\u5199\u5165\uFF08writeFile / editFile\uFF0C\u65E0\u8BBA\u4EE3\u7801\u3001\u914D\u7F6E\u3001\u6587\u6863\u3001\u6837\u5F0F\u3001\u811A\u672C\u8FD8\u662F\u6570\u636E\uFF09\u4E00\u5F8B\u6D3E\u53D1\u7ED9\u5B50 agent**\u2014\u2014\u5224\u5B9A\u770B\u7684\u662F"\u662F\u5426\u5199\u5165\u4ED3\u5E93\u6587\u4EF6"\uFF0C\u4E0D\u662F"\u7B97\u4E0D\u7B97\u4EE3\u7801"\u3002
681
- - \u5141\u8BB8\u81EA\u5199\u7684\u4F8B\u5916**\u4EC5\u9650\u4E09\u79CD**\uFF1A\u2460\u5355\u6587\u4EF6\u4E14 \u22645 \u884C\u7684\u673A\u68B0\u6539\u52A8\uFF08typo\u3001\u5E38\u91CF\u503C\u3001\u5BFC\u5165\u884C\u3001\u7248\u672C\u53F7\u7B49\u65E0\u903B\u8F91\u5224\u65AD\u7684\u7F16\u8F91\uFF09\uFF1B\u2461\u6240\u6709\u6D3E\u53D1\u901A\u9053\u5747\u5DF2\u5B9E\u6D4B\u4E0D\u53EF\u7528\uFF08\u4EC5\u9650 429/\u9274\u6743\u5931\u8D25/\u670D\u52A1\u5B95\u673A\u7B49\u7CFB\u7EDF\u7EA7\u6545\u969C\uFF0C\u987B\u9644\u539F\u59CB\u62A5\u9519\uFF1B\u5B50 agent \u7ED3\u679C\u4E0D\u8FBE\u9884\u671F**\u4E0D\u7B97**\u901A\u9053\u5931\u8D25\uFF0C\u5E94\u4FEE\u6B63 task \u540E\u91CD\u6D3E\uFF09\uFF1B\u2462\u7528\u6237\u660E\u786E\u8981\u6C42\u4F60\u4EB2\u81EA\u505A\uFF08\u987B\u5F15\u7528\u7528\u6237\u539F\u8BDD\uFF09\u3002\u4F7F\u7528\u4F8B\u5916\u5FC5\u987B\u5728\u56DE\u590D\u4E2D\u5199\u660E\u5C5E\u4E8E\u54EA\u4E00\u6761\u5E76\u7ED9\u51FA\u4F9D\u636E\uFF0C**\u6CA1\u5199 = \u8FDD\u89C4**\u3002
682
- - **\u63A2\u9488\u8C41\u514D**\uFF1A\u4E3A\u8BCA\u65AD\u6216\u9A8C\u8BC1\u6267\u884C\u7684\u4E00\u6B21\u6027 shell \u547D\u4EE4\u3001\u4E0D\u5199\u5165\u4ED3\u5E93\u7684\u4E34\u65F6\u811A\u672C\uFF08\u5982 /tmp \u4E0B\u7684\u63A2\u9488\uFF09\u4E0D\u53D7\u672C\u6761\u9650\u5236\u2014\u2014\u9F13\u52B1\u4F60\u5145\u5206\u9A8C\u8BC1\u3002
683
- - \u7981\u62C6\u5206\u7ED5\u8FC7\uFF1A\u4E0D\u5F97\u628A\u540C\u4E00\u76EE\u6807\u7684\u6539\u52A8\u62C6\u6210\u591A\u4E2A"\u22645 \u884C"\u5206\u6B65\u81EA\u5199\uFF1B\u53EA\u8981\u540C\u4E00\u76EE\u6807\u7D2F\u8BA1 >5 \u884C\u6216\u6D89\u53CA\u903B\u8F91\u5224\u65AD\uFF0C\u5373\u5FC5\u987B\u6D3E\u53D1\u3002
684
- - **\u7981\u6B62\u7528"\u8FD9\u662F\u539F\u5B50\u4EFB\u52A1/\u4E0D\u53EF\u62C6"\u7ED9\u81EA\u5DF1\u514D\u8D23**\u3002\u4E0D\u53EF\u62C6\u53EA\u8BF4\u660E\u5B83\u662F**\u4E00\u4E2A**\u5B50\u4EFB\u52A1\uFF0C\u4E0D\u8BF4\u660E\u5B83\u8BE5\u7531**\u4F60**\u6765\u505A\u2014\u2014\u5355\u4E2A\u5B50\u4EFB\u52A1\u540C\u6837\u5E94\u8BE5\u6D3E\u53D1\u3002
685
- - **\u8B66\u60D5"\u4E0A\u4E0B\u6587\u5DF2\u5728\u624B"\u6ED1\u5761**\uFF1A\u8BFB\u5B8C\u6587\u4EF6\u540E\u4F1A\u5929\u7136\u4EA7\u751F"\u6211\u5DF2\u7ECF\u61C2\u4E86\uFF0C\u81EA\u5DF1\u5199\u66F4\u5FEB"\u7684\u51B2\u52A8\uFF0C\u8FD9\u662F\u6700\u5E38\u89C1\u7684\u8FDD\u89C4\u8DEF\u5F84\u3002\u4F60\u80FD\u7ED9 reviewer \u8D34\u51E0\u767E\u884C\u6750\u6599\uFF0C\u5C31\u80FD\u7ED9\u6267\u884C\u8005\u8D34\u540C\u6837\u7684\u6750\u6599\u3002
686
- - \u6B63\u786E\u52A8\u4F5C\uFF1A\u628A\u5DF2\u8BFB\u5230\u7684\u5173\u952E\u7247\u6BB5\u3001\u7EA6\u675F\u3001\u9A8C\u6536\u6807\u51C6\u5199\u8FDB task\uFF0C\u7528 startAgentRun \u6D3E\u7ED9\u6267\u884C\u8005\uFF0C\u7136\u540E\u8F6E\u8BE2\u3001\u9A8C\u6536\u3001\u6C47\u603B\u3002
687
- 3. \u6D3E\u53D1\u539F\u5219\uFF1A\u5B50\u4EFB\u52A1\u81EA\u5305\u542B\u3001\u8FB9\u754C\u6E05\u6670\uFF1B**\u7ED9\u6267\u884C\u8005\u5199\u6E05\u4EFB\u52A1\u3001\u9A8C\u6536\u548C\u7981\u533A\uFF0C\u4FDD\u8BC1\u4EFB\u52A1\u786E\u5B9A\u6027**\uFF08\u7ED3\u679C\u53EF\u6838\u5BF9\u3001\u4E0D\u4F20\u65E0\u5173\u5386\u53F2\u3001\u660E\u786E\u5B8C\u6210\u6761\u4EF6\uFF09\uFF0C\u6D3E\u53D1\u540E\u8F7B\u8F6E\u8BE2\u7ED3\u679C\uFF0C\u4E0D\u5047\u8BBE\u6210\u529F\u3002
693
+ - \u5148\u5224\u65AD\u590D\u6742\u5EA6\uFF1A\u7B80\u5355\u3001\u660E\u786E\u3001\u5355\u4E00\u95ED\u73AF\u7684\u4EFB\u52A1\u81EA\u5DF1\u5B8C\u6210\uFF1B\u590D\u6742\u4EFB\u52A1\u5148\u5F62\u6210\u76EE\u6807\u3001\u5DF2\u77E5\u4E8B\u5B9E\u3001\u672A\u77E5\u9879\u3001\u5B50\u4EFB\u52A1\u8FB9\u754C\u548C\u9A8C\u6536\u6807\u51C6\uFF0C\u518D\u51B3\u5B9A\u662F\u5426\u62C6\u89E3\u3002
694
+ - \u53EA\u6709\u5F53\u5B50\u4EFB\u52A1\u5177\u6709\u72EC\u7ACB\u4EF7\u503C\uFF0C\u4E14\u6D3E\u53D1\u80FD\u5E26\u6765\u72EC\u7ACB\u4E13\u4E1A\u80FD\u529B\u3001\u771F\u6B63\u5E76\u884C\u3001\u72EC\u7ACB\u9A8C\u8BC1\u6216\u957F\u65F6\u95F4\u540E\u53F0\u6267\u884C\u7B49\u989D\u5916\u4EA7\u51FA\u65F6\uFF0C\u624D\u6D3E\u53D1\u3002\u53EF\u62C6\u5206\u4E0D\u7B49\u4E8E\u5FC5\u987B\u62C6\u5206\uFF1B\u4E0D\u4E3A\u4E86\u201C\u4F7F\u7528\u591A Agent\u201D\u800C\u6D3E\u53D1\u3002
695
+ - \u5B50\u4EFB\u52A1\u5F7C\u6B64\u72EC\u7ACB\u4E14\u5E76\u884C\u786E\u5B9E\u6539\u5584\u6700\u7EC8\u4EA7\u51FA\u65F6\u624D\u5E76\u53D1\uFF1B\u5426\u5219\u4F18\u5148\u81EA\u5DF1\u5B8C\u6210\u6216\u5B89\u6392\u4E00\u4E2A\u660E\u786E\u7684\u5B50\u4EFB\u52A1\u3002\u7236 agent \u8D1F\u8D23\u95EE\u9898\u7406\u89E3\u3001\u6D3E\u53D1\u51B3\u7B56\u3001\u7ED3\u679C\u6C47\u603B\u548C\u6700\u7EC8\u9A8C\u6536\u3002
696
+ 2. **\u7F16\u6392\u8005\u6309\u590D\u6742\u5EA6\u51B3\u5B9A\u662F\u5426\u81EA\u5DF1\u5199**\uFF1A\u7B80\u5355\u4EFB\u52A1\u7531\u7F16\u6392\u8005\u76F4\u63A5\u5B8C\u6210\uFF1B\u4E2D\u7B49\u4EFB\u52A1\u5148\u5206\u6790\u540E\u6309\u9700\u8981\u6D3E\u4E00\u4E2A\u660E\u786E\u7684\u6267\u884C\u6216 review \u5B50\u4EFB\u52A1\uFF1B\u590D\u6742\u4EFB\u52A1\u5148\u5206\u6790\u540E\u51B3\u5B9A\u6267\u884C\u8005\u548C\u534F\u4F5C\u65B9\u5F0F\u3002\u6D89\u53CA\u4ED3\u5E93\u6587\u4EF6\u5199\u5165\u65F6\uFF0C\u4ECD\u5FC5\u987B\u4F7F\u7528\u72EC\u7ACB worktree\uFF0C\u5E76\u9075\u5B88 review \u4E0E\u63D0\u4EA4\u89C4\u5219\uFF1B\u4E0D\u80FD\u7528\u81EA\u52A8\u6D3E\u53D1\u66FF\u4EE3\u590D\u6742\u5EA6\u5224\u65AD\u3002
697
+ - \u590D\u6742\u5EA6\u5224\u65AD\u4EE5\u76EE\u6807\u3001\u9886\u57DF\u6570\u91CF\u3001\u6B65\u9AA4\u6570\u3001\u4F9D\u8D56\u5173\u7CFB\u3001\u98CE\u9669\u548C\u989D\u5916\u4EA7\u51FA\u4E3A\u51C6\uFF0C\u4E0D\u4EE5\u201C\u80FD\u4E0D\u80FD\u62C6\u201D\u6216\u201C\u6587\u4EF6\u662F\u5426\u8D85\u8FC7 5 \u884C\u201D\u4E3A\u51C6\u3002\u7528\u6237\u660E\u786E\u8981\u6C42\u4F60\u4EB2\u81EA\u5B8C\u6210\u65F6\uFF0C\u6309\u7528\u6237\u8981\u6C42\u6267\u884C\uFF1B\u82E5\u6240\u6709\u5DF2\u9A8C\u8BC1\u6D3E\u53D1\u901A\u9053\u90FD\u4E0D\u53EF\u7528\uFF0C\u53EF\u4FDD\u7559\u539F\u59CB\u9519\u8BEF\u8BC1\u636E\u540E\u964D\u7EA7\u81EA\u884C\u5B8C\u6210\u5E76\u8BF4\u660E\u539F\u56E0\u3002
698
+ - **\u63A2\u9488\u8C41\u514D**\uFF1A\u4E3A\u8BCA\u65AD\u6216\u9A8C\u8BC1\u6267\u884C\u7684\u4E00\u6B21\u6027 shell \u547D\u4EE4\u3001\u4E0D\u5199\u5165\u4ED3\u5E93\u7684\u4E34\u65F6\u811A\u672C\uFF08\u5982 /tmp \u4E0B\u7684\u63A2\u9488\uFF09\u4E0D\u53D7\u4ED3\u5E93\u5199\u5165\u89C4\u5219\u9650\u5236\u2014\u2014\u9F13\u52B1\u4F60\u5145\u5206\u9A8C\u8BC1\u3002
699
+ - \u5982\u679C\u81EA\u5DF1\u5B8C\u6210\u80FD\u8FBE\u5230\u540C\u7B49\u76EE\u6807\uFF0C\u5C31\u4E0D\u8981\u589E\u52A0 Agent \u534F\u4F5C\u5C42\uFF1B\u5982\u679C\u6D3E\u53D1\uFF0C\u5FC5\u987B\u7ED9\u6267\u884C\u8005\u5199\u6E05\u4EFB\u52A1\u3001\u9A8C\u6536\u548C\u7981\u533A\uFF0C\u7528\u7ED3\u679C\u548C\u8BC1\u636E\u5B8C\u6210\u6700\u7EC8\u9A8C\u6536\u3002
700
+ 3. \u6D3E\u53D1\u539F\u5219\uFF1A\u5B50\u4EFB\u52A1\u81EA\u5305\u542B\u3001\u8FB9\u754C\u6E05\u6670\uFF1B**\u7ED9\u6267\u884C\u8005\u5199\u6E05\u4EFB\u52A1\u3001\u9A8C\u6536\u548C\u7981\u533A\uFF0C\u4FDD\u8BC1\u4EFB\u52A1\u786E\u5B9A\u6027**\uFF08\u7ED3\u679C\u53EF\u6838\u5BF9\u3001\u4E0D\u4F20\u65E0\u5173\u5386\u53F2\u3001\u660E\u786E\u5B8C\u6210\u6761\u4EF6\uFF09\u3002\u8981\u540C\u6B65\u7ED3\u679C\u7528 startAgentRun({ wait: true }) \u6216 controlAgentRun(action:"wait")\uFF1B\u5F02\u6B65\u6D3E\u53D1\u540E\u7B49\u7EC8\u6001\u901A\u77E5\uFF0C\u4E0D\u5047\u8BBE\u6210\u529F\uFF0C\u4E5F\u4E0D\u53CD\u590D\u67E5\u72B6\u6001\u3002
688
701
  4. \u72EC\u7ACB\u5BA1\u67E5\uFF08commit \u524D\u786C\u95E8\uFF09\uFF1A\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**\u5176\u4ED6 agent**\uFF08\u4E0D\u540C\u6A21\u578B\u5BB6\u65CF\u4F18\u5148\uFF09review\u3002reviewer \u4E0D\u53EF\u662F\u81EA\u5DF1\u3002\u65E0 review \u4E0D commit\u2014\u2014\u8FD9\u662F\u786C\u95E8\uFF0C\u4E0D\u662F\u5EFA\u8BAE\u3002\u591A\u4E2A\u72EC\u7ACB\u6539\u52A8\u9762\u4F18\u5148\u5E76\u884C\u6D3E\u591A\u4E2A reviewer \u5404\u5BA1\u5404\u7684\u3002\u8BE6\u7EC6\u6D41\u7A0B\u89C1 coding-review\uFF08\u4EE3\u7801\u5C42\uFF09\u7684 Dispatch \u89C4\u8303\u3002
689
- \u6700\u5C0F\u5B9E\u73B0\uFF1A\u80FD\u5220\u89E3\u51B3\u5C31\u4E0D\u52A0\uFF0C\u80FD\u590D\u7528\u5C31\u4E0D\u65B0\u5EFA\uFF1B\u65B0\u62BD\u8C61\u524D\u5148\u641C\u5DF2\u6709\u5B9E\u73B0\u3002**\u4E0D\u8981\u56E0\u4E3A"\u89C9\u5F97\u6D3E\u53D1\u663E\u5F97\u5FD9"\u5C31\u81EA\u5DF1\u95F7\u5934\u4E32\u884C\u505A\u2014\u2014\u5E76\u53D1\u662F\u672C\u7CFB\u7EDF\u7684\u9ED8\u8BA4\u5DE5\u4F5C\u65B9\u5F0F\uFF1B\u5E76\u53D1\u65F6\u4F9D\u7136\u8981\u7701\u94B1\u3001\u8981\u7ED9\u786E\u5B9A\u6027\u4EFB\u52A1\u3001\u8981\u7236 agent \u6C47\u603B\u3002**
690
- \u81EA\u68C0\uFF08\u56DE\u590D\u524D\u95EE\u81EA\u5DF1\uFF09\uFF1A\u8FD9\u4E00\u8F6E\u6211\u662F\u5426\u4EB2\u624B\u5199\u4E86\u8D85\u51FA\u8C41\u514D\u8303\u56F4\u7684\u4EE3\u7801\uFF1F\u5982\u679C\u662F\uFF0C\u5E94\u5F53\u6D3E\u53D1\u800C\u975E\u81EA\u5199\uFF1B\u5DF2\u7ECF\u5199\u4E86\u5C31\u5982\u5B9E\u8BF4\u660E\u5E76\u7EA0\u6B63\uFF0C\u4E0D\u8981\u4E8B\u540E\u7F16\u9020"\u539F\u5B50\u4EFB\u52A1""\u91CD\u4F20\u6210\u672C\u9AD8"\u4E4B\u7C7B\u7684\u7406\u7531\u3002
702
+ - **\u81EA\u52A8 review \u5FAA\u73AF**\uFF1A\u4EFB\u52A1\u5B8C\u6210\u540E\u81EA\u52A8\u8FDB\u5165 review \u5FAA\u73AF\uFF0C\u4E0D\u8981\u505C\u5728"\u6539\u5B8C\u4EA4\u4ED8"\u5C31\u7B49\u8C03\u7528\u65B9\u3002\u6D41\u7A0B\uFF1A\u6539\u5B8C \u2192 \u6D3E reviewer \u5BA1\u5DE5\u4F5C\u533A diff \u2192 \u51FA finding \u5C31\u4FEE\u590D \u2192 \u590D\u5BA1 \u2192 \u76F4\u5230 APPROVE\uFF08\u65E0 CRITICAL/HIGH\uFF09\u624D\u63D0\u4EA4\u3002\u6BCF\u8F6E review \u65E0\u4E0A\u4E0B\u6587\uFF0C\u53EA\u770B\u5F53\u524D diff\u3002BLOCK\uFF08\u6709 CRITICAL\uFF09\u5FC5\u987B\u5148\u4FEE\uFF1BWARNING\uFF08\u4EC5 HIGH\uFF09\u62A5\u544A\u7528\u6237\u51B3\u5B9A\u3002
703
+ - **review \u8BC1\u636E\u786C\u95E8**\uFF1A\u53EA\u6709 reviewer \u8FD4\u56DE\u53EF\u8BFB\u53D6\u7684\u6700\u7EC8\u6587\u672C\uFF0C\u4E14\u660E\u786E\u5305\u542B APPROVE\u3001\u6CA1\u6709 CRITICAL/HIGH\uFF0C\u624D\u7B97\u901A\u8FC7\u3002run \u72B6\u6001 done\u3001exit code 0\u3001\u7A7A dialog\u3001messagesCount=0\u3001agentReply=null\u3001\u8D85\u65F6\u6216\u53EA\u6709\u5143\u6570\u636E\uFF0C\u90FD\u4E0D\u662F review \u7ED3\u679C\uFF1B\u4EFB\u4F55\u4E00\u79CD\u60C5\u51B5\u90FD\u5FC5\u987B\u89C6\u4E3A\u672A\u5BA1\u67E5\uFF0C\u4E0D\u5F97\u63D0\u4EA4\u3002
704
+ - **review 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 .agents/skills/<name>/SKILL.md\u3001.agents/skills/references/ \u4E13\u9879 reference\u3001\u6D89\u53CA\u4EA7\u54C1\u53D6\u820D\u65F6\u7684 docs/product-positioning.md\uFF0C\u4EE5\u53CA touched files \u7684\u5B8C\u6574 diff\uFF1Breview brief \u5FC5\u987B\u5217\u51FA\u5B9E\u9645\u52A0\u8F7D\u7684 context \u6587\u4EF6\uFF0C\u53EA\u52A0\u8F7D\u4E0E\u5F53\u524D\u6539\u52A8\u76F8\u5173\u7684 skill/context\u3002
705
+ - **\u4EE3\u7801\u5BA1\u67E5\u6E05\u5355**\uFF1Areview task \u5FC5\u987B\u9010\u9879\u68C0\u67E5\u53EF\u8BFB\u6027/\u53EF\u641C\u7D22\u6027\u3001\u53EF\u7EF4\u62A4\u6027/\u5220\u9664\u6539\u52A8\u6210\u672C\u3001\u53EF\u7EC4\u5408\u6027/\u7EAF\u51FD\u6570\u4E0E\u4E8C\u6B21\u590D\u7528\u3001\u91CD\u590D\u5B9E\u73B0/\u53EF\u62BD\u53D6\u51FD\u6570\u3001\u53EF\u5220\u9664\u4EE3\u7801/\u66F4\u597D\u8868\u8FBE\u65B9\u5F0F\uFF0C\u5E76\u62A5\u544A\u672A\u5B8C\u6210\u7684\u540E\u7EED\u9879\u3002
706
+ - **\u81EA\u52A8\u63D0\u4EA4**\uFF1A\u53EA\u6709\u6EE1\u8DB3 review \u8BC1\u636E\u786C\u95E8\u540E\uFF0C\u624D\u6309 Conventional Commits \u524D\u7F00\uFF08feat/fix/perf/refactor/chore/docs/test/style/ci\uFF09\u63D0\u4EA4\uFF0C\u5E26 "Assistant-Model" \u548C "Assistant-Harness" \u7F72\u540D trailer\u3002\u5408\u5E76\u5230\u96C6\u6210\u7EBF\u524D\u5148\u95EE\u7528\u6237\u3002
707
+ - **\u5EFA\u8BAE\u6C47\u62A5**\uFF1A\u4EA4\u4ED8\u65F6\u628A\u8FC7\u7A0B\u4E2D\u53D1\u73B0\u7684\u4EFB\u4F55\u503C\u5F97\u7528\u6237\u77E5\u9053\u7684\u4E8B\u90FD\u5217\u51FA\u6765\uFF08\u9884\u5B58\u65E0\u5173\u6539\u52A8\u3001\u65E2\u6709\u6D4B\u8BD5\u9694\u79BB\u95EE\u9898\u3001\u6F5C\u5728\u98CE\u9669\u3001\u540E\u7EED\u53EF\u4F18\u5316\u70B9\u3001\u9700\u7528\u6237\u51B3\u7B56\u4E8B\u9879\uFF09\uFF0C\u4E0D\u8981\u53EA\u62A5"\u505A\u5B8C\u4E86"\u3002
708
+ \u6700\u5C0F\u5B9E\u73B0\uFF1A\u80FD\u5220\u89E3\u51B3\u5C31\u4E0D\u52A0\uFF0C\u80FD\u590D\u7528\u5C31\u4E0D\u65B0\u5EFA\uFF1B\u65B0\u62BD\u8C61\u524D\u5148\u641C\u5DF2\u6709\u5B9E\u73B0\u3002**\u4E0D\u8981\u4E3A\u4E86\u663E\u5F97\u5FD9\u800C\u6D3E\u53D1\uFF1B\u9ED8\u8BA4\u81EA\u5DF1\u5B8C\u6210\u7B80\u5355\u4EFB\u52A1\uFF0C\u53EA\u6709\u786E\u8BA4\u534F\u4F5C\u80FD\u589E\u52A0\u4EA7\u51FA\u65F6\u624D\u6D3E\u53D1\u3002**
709
+ \u81EA\u68C0\uFF08\u56DE\u590D\u524D\u95EE\u81EA\u5DF1\uFF09\uFF1A\u8FD9\u4E00\u8F6E\u662F\u5426\u5DF2\u5148\u5B8C\u6210\u4EFB\u52A1\u7406\u89E3\u548C\u590D\u6742\u5EA6\u5224\u65AD\uFF1F\u662F\u5426\u53EA\u4FDD\u7559\u4E86\u5F53\u524D\u52A8\u4F5C\u9700\u8981\u7684\u5DE5\u5177\u3001\u5386\u53F2\u548C\u6587\u4EF6\u5185\u5BB9\uFF1F\u5982\u679C\u51B3\u5B9A\u6D3E\u53D1\uFF0C\u662F\u5426\u5199\u6E05\u4E86\u72EC\u7ACB\u4EA7\u51FA\u3001\u5B50\u4EFB\u52A1\u8FB9\u754C\u548C\u9A8C\u6536\u8BC1\u636E\uFF1F\u5982\u679C\u4EFB\u52A1\u7B80\u5355\uFF0C\u662F\u5426\u907F\u514D\u4E86\u4E0D\u5FC5\u8981\u7684 Agent \u534F\u4F5C\uFF1F
691
710
 
692
711
  \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\u3002\u5C06\u5DF2\u5B8C\u6210\u7684\u7ED3\u679C\u8FD4\u56DE\u7ED9\u7236\u5BF9\u8BDD\u5373\u53EF\u3002`;
693
712
  var WEBPAGE_ACCESS_INSTRUCTIONS = `--- \u7F51\u9875\u8BBF\u95EE\u80FD\u529B (Web Access) ---
@@ -698,16 +717,18 @@ var WEBPAGE_ACCESS_INSTRUCTIONS = `--- \u7F51\u9875\u8BBF\u95EE\u80FD\u529B (Web
698
717
  3. \u9700\u767B\u5F55/\u586B\u8868/\u591A\u6B65\u4EA4\u4E92 \u2192 browser_openSession\uFF08openSession \u62FF ID \u2192 typeText/click/readContent\uFF09\u3002
699
718
  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`;
700
719
  var AGENT_ORCHESTRATION_INSTRUCTIONS = `--- Agent \u7F16\u6392\u4E0E\u534F\u4F5C ---
701
- \u4F60\u6240\u5728\u7684\u7CFB\u7EDF\u652F\u6301\u591A\u4E2A\u5B50 Agent \u548C\u5DE5\u4F5C\u6D41\u5DE5\u5177\uFF0C\u8BF7\u628A\u81EA\u5DF1\u89C6\u4E3A"\u603B\u534F\u8C03\u8005"\uFF1A
720
+ \u4F60\u6240\u5728\u7684\u7CFB\u7EDF\u652F\u6301\u591A\u4E2A\u5B50 Agent \u548C\u5DE5\u4F5C\u6D41\u5DE5\u5177\uFF0C\u8BF7\u628A\u81EA\u5DF1\u89C6\u4E3A"\u603B\u534F\u8C03\u8005"\uFF0C\u4F46\u4E0D\u8981\u628A\u534F\u8C03\u672C\u8EAB\u5F53\u6210\u76EE\u6807\uFF1A\u7B80\u5355\u4EFB\u52A1\u81EA\u5DF1\u5B8C\u6210\uFF0C\u590D\u6742\u4EFB\u52A1\u5148\u81EA\u884C\u5206\u6790\u540E\u518D\u51B3\u5B9A\u662F\u5426\u6D3E\u53D1\u3002
721
+
722
+ \u7F16\u6392\u603B\u539F\u5219\uFF1A\u5148\u7814\u7A76\uFF0C\u540E\u5B89\u6392\uFF1B\u7B80\u5355\u81EA\u5DF1\u505A\uFF0C\u590D\u6742\u5206\u6790\u540E\u6D3E\u53D1\uFF1B\u6D3E\u53D1\u4E0D\u662F\u9ED8\u8BA4\u52A8\u4F5C\uFF0C\u4EA7\u51FA\u624D\u662F\u76EE\u6807\u3002\u6BCF\u4E00\u8F6E\u53EA\u63A8\u8FDB\u5F53\u524D\u6700\u6709\u4EF7\u503C\u7684\u4E00\u4E2A\u52A8\u4F5C\uFF0C\u8BFB\u53D6\u7ED3\u679C\u548C\u8BC1\u636E\u540E\u518D\u91CD\u65B0\u5224\u65AD\u4E0B\u4E00\u6B65\u3002
702
723
 
703
724
  1\uFF09\u5B50 Agent \u534F\u4F5C
704
725
  - \u5982\u679C\u76EE\u6807 Agent \u8BB0\u5F55\u5DF2\u7ECF\u58F0\u660E delegation.serverBase / runtimeServerBase\uFF0C\u5DE5\u5177\u4F1A\u81EA\u52A8\u8DEF\u7531\u5230\u5BF9\u5E94 nolo server\uFF1B\u4F60\u4E0D\u9700\u8981\u91CD\u590D\u586B\u5199 serverBase\u3002
705
726
  - \u5982\u679C\u7528\u6237\u660E\u786E\u7ED9\u4E86\u53E6\u4E00\u4E2A\u53EF\u8BBF\u95EE\u7684 server origin\uFF08\u4F8B\u5982 Windows \u673A\u5668\u7684 Cloudflare \u57DF\u540D\uFF09\uFF0C\u53EF\u4EE5\u5728\u5DE5\u5177\u53C2\u6570\u91CC\u4F20 serverBase \u8986\u76D6\u81EA\u52A8\u8DEF\u7531\uFF1B\u4E0D\u8981\u81C6\u9020\u5730\u5740\uFF0C\u4E5F\u4E0D\u8981\u628A\u666E\u901A localhost \u5F53\u6210\u8FDC\u7AEF\u673A\u5668\u3002
706
- - \u9700\u8981\u5F02\u6B65\u542F\u52A8\u4E00\u4E2A\u5B50\u5BF9\u8BDD\u3001\u8BA9\u5F53\u524D\u5BF9\u8BDD\u7A0D\u540E\u6839\u636E\u5B50 Agent \u7684\u5B8C\u6210/\u5931\u8D25\u7EE7\u7EED\u5224\u65AD\u65F6\uFF0C\u4F7F\u7528 callAgent({ background: true })\u3002\u5B83\u53EA\u8868\u793A child dialog \u5DF2\u542F\u52A8\u6216\u6392\u961F\uFF0C\u4E0D\u8868\u793A\u4EFB\u52A1\u5DF2\u7ECF\u5B8C\u6210\uFF1Bchild \u8FDB\u5165 done/failed \u540E\uFF0C\u7CFB\u7EDF\u4F1A\u7528 terminal wake \u7EE7\u7EED\u7236\u5BF9\u8BDD\uFF0C\u4F60\u518D\u8BFB\u53D6 child evidence \u51B3\u5B9A\u4E0B\u4E00\u6B65\u3002
707
- - callAgent({ background: true }) \u662F\u901A\u7528\u591A Agent \u534F\u4F5C\u80FD\u529B\uFF0C\u4E0D\u9650\u4E8E\u4EE3\u7801\u4EFB\u52A1\uFF1B\u6E38\u620F\u8BBE\u8BA1\u3001\u7535\u5F71\u7B56\u5212\u3001\u5199\u4F5C\u3001\u8FD0\u8425\u3001\u7814\u7A76\u7B49\u9700\u8981\u5F02\u6B65\u5206\u5DE5\u7684\u573A\u666F\u4E5F\u53EF\u4EE5\u4F7F\u7528\u3002
708
- - \u9700\u8981\u7B49\u5F85\u4E00\u4E2A\u77ED\u7ED3\u679C\u5E76\u76F4\u63A5\u7EFC\u5408\u65F6\uFF0C\u4F7F\u7528 callAgent\uFF08\u9ED8\u8BA4\u540C\u6B65\u7B49\u5F85\uFF09\uFF1B\u9700\u8981\u7528\u6237\u524D\u53F0\u5B9E\u65F6\u770B\u5230\u53E6\u4E00\u4E2A Agent \u53D1\u8A00\u65F6\uFF0C\u4F7F\u7528 runStreamingAgent\u3002
727
+ - \u9700\u8981\u5F02\u6B65\u542F\u52A8\u4E00\u4E2A\u5B50\u5BF9\u8BDD\u3001\u8BA9\u5F53\u524D\u5BF9\u8BDD\u7A0D\u540E\u6839\u636E\u5B50 Agent \u7684\u5B8C\u6210/\u5931\u8D25\u7EE7\u7EED\u5224\u65AD\u65F6\uFF0C\u4F7F\u7528 startAgentRun\uFF08\u5F02\u6B65\uFF0C\u9ED8\u8BA4 wait:false\uFF09\u3002\u5B83\u53EA\u8868\u793A child run \u5DF2\u542F\u52A8\u6216\u6392\u961F\uFF0C\u4E0D\u8868\u793A\u4EFB\u52A1\u5DF2\u7ECF\u5B8C\u6210\uFF1Bchild run \u8FDB\u5165 done/failed \u540E\uFF0C\u7CFB\u7EDF\u4F1A\u7528 terminal wake \u7EE7\u7EED\u7236\u5BF9\u8BDD\uFF0C\u4F60\u518D\u8BFB\u53D6 child evidence \u51B3\u5B9A\u4E0B\u4E00\u6B65\u3002
728
+ - startAgentRun \u5F02\u6B65\u6D3E\u53D1\u662F\u901A\u7528\u591A Agent \u534F\u4F5C\u80FD\u529B\uFF0C\u4E0D\u9650\u4E8E\u4EE3\u7801\u4EFB\u52A1\uFF1B\u6E38\u620F\u8BBE\u8BA1\u3001\u7535\u5F71\u7B56\u5212\u3001\u5199\u4F5C\u3001\u8FD0\u8425\u3001\u7814\u7A76\u7B49\u9700\u8981\u5F02\u6B65\u5206\u5DE5\u7684\u573A\u666F\u4E5F\u53EF\u4EE5\u4F7F\u7528\u3002
729
+ - \u9700\u8981\u7B49\u5F85\u4E00\u4E2A\u77ED\u7ED3\u679C\u5E76\u76F4\u63A5\u7EFC\u5408\u65F6\uFF0C\u4F7F\u7528 startAgentRun({ wait: true })\uFF08\u540C\u6B65\u7B49\u5F85\uFF09\uFF1B\u9700\u8981\u7528\u6237\u524D\u53F0\u5B9E\u65F6\u770B\u5230\u53E6\u4E00\u4E2A Agent \u53D1\u8A00\u65F6\uFF0C\u4F7F\u7528 runStreamingAgent\u3002
709
730
  - \u5F53\u7528\u6237\u9700\u8981\u591A\u89C6\u89D2\u5206\u6790\u6216\u8FA9\u8BBA\u65F6\uFF0C\u4F60\u53EF\u4EE5\uFF1A
710
- - \u5148\u7528 callAgent \u4F9D\u6B21\u8BE2\u95EE\u591A\u4E2A Agent \u5BF9\u540C\u4E00\u95EE\u9898\u7684\u770B\u6CD5\uFF1B
731
+ - \u5148\u7528 startAgentRun({ wait: true }) \u4F9D\u6B21\u8BE2\u95EE\u591A\u4E2A Agent \u5BF9\u540C\u4E00\u95EE\u9898\u7684\u770B\u6CD5\uFF1B
711
732
  - \u5728\u6700\u540E\u4E00\u6761\u56DE\u590D\u4E2D\uFF0C\u7528\u4F60\u81EA\u5DF1\u7684\u8BDD\u5E2E\u7528\u6237\u603B\u7ED3\u8FD9\u4E9B\u89C2\u70B9\u7684\u5F02\u540C\uFF0C\u5E76\u7ED9\u51FA\u7EFC\u5408\u7ED3\u8BBA\u3002
712
733
 
713
734
  2\uFF09\u5DE5\u4F5C\u6D41 / Workflow \u5DE5\u5177
@@ -779,7 +800,6 @@ var TOOL_GUIDED_SECTIONS = [
779
800
  {
780
801
  id: "agentOrchestration",
781
802
  triggerTools: [
782
- "callAgent",
783
803
  "runStreamingAgent",
784
804
  "startAgentRun",
785
805
  "controlAgentRun"
@@ -793,7 +813,6 @@ var TOOL_GUIDED_SECTIONS = [
793
813
  {
794
814
  id: "agentCollaboration",
795
815
  triggerTools: [
796
- "callAgent",
797
816
  "runStreamingAgent",
798
817
  "startAgentRun",
799
818
  "controlAgentRun"
@@ -1152,23 +1171,25 @@ var generateOpenAIRequestBody = (agentConfig, providerName, messages, contexts,
1152
1171
  const resolvedModel = providerName === "fireworks" ? resolveFireworksKimiModel(agentConfig.model) : agentConfig.model ?? "";
1153
1172
  let processedStable = [...stableMessages];
1154
1173
  if (isClaudeModel(resolvedModel) && processedStable.length > 0) {
1155
- const lastStableIdx = processedStable.length - 1;
1156
- const lastContent = processedStable[lastStableIdx].content;
1157
- if (typeof lastContent === "string") {
1158
- processedStable[lastStableIdx] = {
1159
- ...processedStable[lastStableIdx],
1160
- content: [
1161
- { type: "text", text: lastContent, cache_control: { type: "ephemeral" } }
1162
- ]
1163
- };
1164
- } else if (Array.isArray(lastContent)) {
1165
- const lastPartIdx = lastContent.length - 1;
1166
- processedStable[lastStableIdx] = {
1167
- ...processedStable[lastStableIdx],
1168
- content: lastContent.map(
1169
- (part, idx) => idx === lastPartIdx && typeof part === "object" ? { ...part, cache_control: { type: "ephemeral" } } : part
1170
- )
1171
- };
1174
+ const indicesToCache = processedStable.length >= 2 ? [processedStable.length - 2, processedStable.length - 1] : [processedStable.length - 1];
1175
+ for (const idx of indicesToCache) {
1176
+ const targetContent = processedStable[idx].content;
1177
+ if (typeof targetContent === "string" && targetContent.trim().length > 0) {
1178
+ processedStable[idx] = {
1179
+ ...processedStable[idx],
1180
+ content: [
1181
+ { type: "text", text: targetContent, cache_control: { type: "ephemeral" } }
1182
+ ]
1183
+ };
1184
+ } else if (Array.isArray(targetContent) && targetContent.length > 0) {
1185
+ const lastPartIdx = targetContent.length - 1;
1186
+ processedStable[idx] = {
1187
+ ...processedStable[idx],
1188
+ content: targetContent.map(
1189
+ (part, pIdx) => pIdx === lastPartIdx && typeof part === "object" && part !== null ? { ...part, cache_control: { type: "ephemeral" } } : part
1190
+ )
1191
+ };
1192
+ }
1172
1193
  }
1173
1194
  }
1174
1195
  const fullMessages = [...processedStable, ...messages];
@@ -1508,6 +1529,10 @@ async function resolveDirectRequestApiKey(agentConfig, options) {
1508
1529
  const broker = factory();
1509
1530
  const local = await safeBrokerGet(broker, credentialRef);
1510
1531
  if (local) return local;
1532
+ if (credentialRef.startsWith("provider-key:") && options?.providerSecretFetcher) {
1533
+ const providerSecret = await options.providerSecretFetcher(credentialRef);
1534
+ if (providerSecret) return providerSecret;
1535
+ }
1511
1536
  if (agentConfig.credentialSynced && options?.syncFetcher) {
1512
1537
  const synced = await options.syncFetcher(credentialRef);
1513
1538
  const trimmed = asTrimmedString(synced);
@@ -1529,6 +1554,27 @@ async function safeBrokerGet(broker, ref) {
1529
1554
  }
1530
1555
  }
1531
1556
 
1557
+ // packages/shared/providerSecrets.ts
1558
+ function providerSecretKey(presetId) {
1559
+ const normalized = presetId.trim().replace(/[^a-zA-Z0-9]+/g, "_").toUpperCase();
1560
+ return `${normalized}_KEY`;
1561
+ }
1562
+
1563
+ // packages/ai/agent/providerSecrets.ts
1564
+ var STORAGE_KEY = "nolo-local-secrets";
1565
+ function readLocalSecrets() {
1566
+ if (typeof localStorage === "undefined") return {};
1567
+ try {
1568
+ const value = JSON.parse(localStorage.getItem(STORAGE_KEY) ?? "{}");
1569
+ return value && typeof value === "object" ? value : {};
1570
+ } catch {
1571
+ return {};
1572
+ }
1573
+ }
1574
+ function getLocalProviderSecret(presetId) {
1575
+ return readLocalSecrets()[providerSecretKey(presetId)] ?? null;
1576
+ }
1577
+
1532
1578
  // packages/ai/chat/fetchUtils.ts
1533
1579
  var buildProxyPayload = (bodyData, api, agentConfig, dialogId) => {
1534
1580
  const apiSource = agentConfig.apiSource === "custom" || agentConfig.apiSource === "cli" ? agentConfig.apiSource : void 0;
@@ -1549,7 +1595,19 @@ var fetchDirectly = async (params) => {
1549
1595
  const { api, agentConfig, bodyData, signal, currentServer, token } = params;
1550
1596
  try {
1551
1597
  const apiKey = await resolveDirectRequestApiKey(agentConfig, {
1552
- syncFetcher: currentServer && token ? (ref) => fetchServerSyncedCredential({ currentServer, authToken: token }, ref) : void 0
1598
+ syncFetcher: currentServer && token ? (ref) => fetchServerSyncedCredential({ currentServer, authToken: token }, ref) : void 0,
1599
+ providerSecretFetcher: currentServer && token ? async (ref) => {
1600
+ const presetId = ref.startsWith("provider-key:") ? ref.slice("provider-key:".length) : ref;
1601
+ const local = getLocalProviderSecret(presetId);
1602
+ if (local) return local;
1603
+ try {
1604
+ const response = await fetch(`${currentServer}/api/user-secrets/get?presetId=${encodeURIComponent(presetId)}`, { headers: { Authorization: `Bearer ${token}` } });
1605
+ if (!response.ok) return null;
1606
+ return (await response.json()).value ?? null;
1607
+ } catch {
1608
+ return null;
1609
+ }
1610
+ } : void 0
1553
1611
  });
1554
1612
  const authHeaders = buildProviderAuthHeaders({
1555
1613
  endpoint: api,
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  selectCurrentServer
3
- } from "./chunk-RVOUXDFU.js";
3
+ } from "./chunk-S6KVFOUG.js";
4
4
  import {
5
5
  patch
6
- } from "./chunk-XRZJGPFI.js";
6
+ } from "./chunk-FON47ACC.js";
7
7
  import {
8
8
  selectIdentityToken
9
9
  } from "./chunk-XMLRJUU5.js";