nolo-cli 0.16.0-alpha.16 → 0.16.0-alpha.18

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 (108) hide show
  1. package/{_executeModel-UD2KY354.js → _executeModel-UREJOVS3.js} +39 -35
  2. package/{action-F5JACQBG.js → action-LT7BRFLK.js} +10 -9
  3. package/{addContentAction-AQXEYRBE.js → addContentAction-PL3KKBDH.js} +9 -8
  4. package/{addDialogAgentAction-EJHHJZWW.js → addDialogAgentAction-FCMSKYAF.js} +8 -7
  5. package/{agentDeleteCommand-UVL3YSRK.js → agentDeleteCommand-TJ2EAYDA.js} +27 -25
  6. package/{agentEmailCommands-77H4MECZ.js → agentEmailCommands-TOPVS5Q3.js} +50 -46
  7. package/{agentListCommands-J2F4E5C6.js → agentListCommands-WD5XYVGK.js} +25 -23
  8. package/{agentMachineCommands-DKDXHUDO.js → agentMachineCommands-24BLT7M4.js} +25 -23
  9. package/{agentPullCommand-6HWUT3SW.js → agentPullCommand-ZZGU5KOY.js} +4 -4
  10. package/{agentRecordCommands-KESYXWJZ.js → agentRecordCommands-FYRQB7SX.js} +45 -41
  11. package/{agentRunCommand-LZMUCDVH.js → agentRunCommand-TLW6PYPA.js} +46 -42
  12. package/{agentRuntimeLocal-44OVOJQ7.js → agentRuntimeLocal-K2J7IS6O.js} +18 -16
  13. package/{agentSlice-R4TX7ZSI.js → agentSlice-B6FQEOAF.js} +9 -8
  14. package/{appDeleteCommands-KXZCWKF2.js → appDeleteCommands-X7YGULGZ.js} +22 -20
  15. package/{appDeployCommands-JNXA3HP7.js → appDeployCommands-IMNPBUN7.js} +22 -20
  16. package/{appDeployStatusCommands-IZ225RMY.js → appDeployStatusCommands-2KFZUEET.js} +22 -20
  17. package/{appGetCommands-WALF7VTA.js → appGetCommands-AYG44S7G.js} +22 -20
  18. package/{appListCommands-Y3KMGFVO.js → appListCommands-Z7CLYPLH.js} +22 -20
  19. package/{authCommand-MSSBXCQ6.js → authCommand-WJZPOLSS.js} +9 -8
  20. package/{authCommands-YXGOXNBZ.js → authCommands-XTBV7OFZ.js} +6 -5
  21. package/{chunk-LBOJLRSS.js → chunk-37XKBS4O.js} +368 -320
  22. package/{chunk-XPC5C7BK.js → chunk-3ND52WIL.js} +2 -2
  23. package/{chunk-SOTZ6RDN.js → chunk-3Q7WHGCB.js} +1 -1
  24. package/{chunk-IPY6NKPP.js → chunk-4CQFPP2G.js} +9 -5
  25. package/{chunk-6N4KODMN.js → chunk-4T5F7YZQ.js} +1 -1
  26. package/{chunk-IRLFPNG7.js → chunk-5ICZUVFN.js} +2 -2
  27. package/chunk-7BUYEZ6U.js +671 -0
  28. package/{chunk-RADTZFVM.js → chunk-7TENCSE7.js} +40 -50
  29. package/{chunk-4PIVMGLG.js → chunk-A7QNCVO5.js} +10 -3
  30. package/{chunk-SR4IC7DS.js → chunk-B26VDWID.js} +2 -8
  31. package/{chunk-MTU75CZ2.js → chunk-B5TOXZAK.js} +1 -1
  32. package/{chunk-HYURMZU3.js → chunk-BLQ3U7UK.js} +3 -3
  33. package/{chunk-6HV3GSA4.js → chunk-BUTE3AHD.js} +6 -6
  34. package/{chunk-PXZY7NIS.js → chunk-C5SQSDB7.js} +6 -6
  35. package/{chunk-TX6S7JCM.js → chunk-C75ONZYN.js} +2 -2
  36. package/{chunk-UIVHASVR.js → chunk-CZAAQLAW.js} +3 -3
  37. package/{chunk-OSIJVBXP.js → chunk-DKZFOK24.js} +14 -85
  38. package/{chunk-IIHJMUV5.js → chunk-EGPCU42M.js} +6 -6
  39. package/{chunk-IWLUTMYX.js → chunk-ELT65PZW.js} +2 -2
  40. package/{chunk-X6LNYUFU.js → chunk-GO7R5K32.js} +5 -5
  41. package/{chunk-3ZLCL32L.js → chunk-I2NSE23G.js} +1 -1
  42. package/{chunk-SOW2GCA5.js → chunk-IOOMJJ4Z.js} +1 -1
  43. package/{setDialogExtraReferencesAction-LR6MSIXO.js → chunk-JLA4FXYC.js} +2 -17
  44. package/{chunk-FQLNGLOX.js → chunk-KO4PXGVN.js} +1 -1
  45. package/{chunk-ARJBFRBT.js → chunk-LP5UAY5I.js} +38 -54
  46. package/{chunk-QW7K3Y7V.js → chunk-LRYORNMJ.js} +63 -163
  47. package/{chunk-KFHN5NGJ.js → chunk-MVQ4TBSD.js} +1 -1
  48. package/{chunk-5PWAAPWU.js → chunk-OOKISU7J.js} +4 -4
  49. package/{chunk-Y62XMRMG.js → chunk-QCJITMYO.js} +10 -8
  50. package/{chunk-OOSFSFMA.js → chunk-R5V5G73M.js} +2 -0
  51. package/{chunk-EABWT43X.js → chunk-RVOUXDFU.js} +5 -5
  52. package/{chunk-JTINRTBT.js → chunk-SKDNBYZK.js} +2 -2
  53. package/{chunk-PVHN3TZV.js → chunk-TKV34RQ6.js} +138 -56
  54. package/{chunk-IAXU3LK5.js → chunk-TP6TE4L7.js} +16 -16
  55. package/{chunk-KMQPSTMJ.js → chunk-TRT4I4UD.js} +2 -2
  56. package/{chunk-YJKXGHJ6.js → chunk-UGUW3FHG.js} +4 -4
  57. package/{chunk-W4NVOSFF.js → chunk-WFHXMLHZ.js} +1 -1
  58. package/{chunk-H33743XH.js → chunk-WJRJDX2W.js} +1 -1
  59. package/chunk-X4Q4UZEY.js +26 -0
  60. package/{chunk-RPDGJO4D.js → chunk-XHG22OEX.js} +4 -4
  61. package/{chunk-DVRHHFEA.js → chunk-XMLRJUU5.js} +1 -1
  62. package/{chunk-3S2VOMIF.js → chunk-XRZJGPFI.js} +7 -7
  63. package/{chunk-DLH6BOUO.js → chunk-XU6XCPWB.js} +1 -1
  64. package/{chunk-NKN2NIW7.js → chunk-YEFSRF54.js} +10 -8
  65. package/chunk-ZZ2MH7LE.js +84 -0
  66. package/{cliExecutor-K3F7DMRO.js → cliExecutor-DNE7TCC4.js} +2 -2
  67. package/codingSkills-36KN5NQT.js +48 -0
  68. package/{createAgentAutomationAction-HXIGGMHG.js → createAgentAutomationAction-F62DAY54.js} +18 -17
  69. package/{createDialogAction-HDNEXHMH.js → createDialogAction-RPB6W3QN.js} +20 -19
  70. package/{createPageAction-F37QJEHE.js → createPageAction-APL7B2KC.js} +24 -23
  71. package/{dbSlice-7KQH6GOU.js → dbSlice-CGSRFJN3.js} +8 -7
  72. package/{deleteFile-WPWVZE4B.js → deleteFile-WDZ3VM7B.js} +3 -3
  73. package/{dialogCommands-6HHOMMSZ.js → dialogCommands-J7C6MB3Q.js} +23 -21
  74. package/{dialogSlice-ZCVFV3WX.js → dialogSlice-DMJVC2XX.js} +18 -17
  75. package/{docCreateCommands-C6DUOJZQ.js → docCreateCommands-Y7OSXNB6.js} +21 -19
  76. package/{docDeleteCommands-WAKYWSKE.js → docDeleteCommands-ALZGQRCE.js} +22 -20
  77. package/{docReadCommands-QXWKU7NB.js → docReadCommands-4BDDESGT.js} +21 -19
  78. package/{docStore-CSWTGKJJ.js → docStore-YAPW55HZ.js} +19 -18
  79. package/{docUpdateCommands-7AX4KLZZ.js → docUpdateCommands-LU2ZM2VE.js} +21 -19
  80. package/{fetchMessages-KTNM7QAR.js → fetchMessages-BMGVZVSE.js} +4 -3
  81. package/{handleSendMessageAction-3KHB7J7E.js → handleSendMessageAction-YDCWKDVY.js} +19 -18
  82. package/index.js +62 -62
  83. package/{localDialogRead-2VRI24F4.js → localDialogRead-HQZPVIE3.js} +1 -1
  84. package/{localRuntimeDb-LGDF6FQP.js → localRuntimeDb-THJZGAOJ.js} +1 -1
  85. package/{machineCommands-GKOAG4SD.js → machineCommands-QKGBDYER.js} +52 -48
  86. package/{machineWsRunDispatch-CBRB2L3Q.js → machineWsRunDispatch-25LT4UG6.js} +43 -39
  87. package/package.json +1 -1
  88. package/queryRunOverlay-O5IAGNXY.js +203 -0
  89. package/{read-CN3TNXIP.js → read-3FMPZPER.js} +3 -3
  90. package/{readDocTool-WF3675ED.js → readDocTool-VSYHKK3V.js} +1 -1
  91. package/{readlineWorkspace-LTW3NLCR.js → readlineWorkspace-U6UCWL4I.js} +66 -62
  92. package/{removeDialogAgentAction-YDHBFEGI.js → removeDialogAgentAction-OAGA2G3U.js} +10 -9
  93. package/{runAgentClientLoop-LVE52RH4.js → runAgentClientLoop-PDE63NNW.js} +35 -31
  94. package/runOverlayPresentation-BHD5POEM.js +79 -0
  95. package/{runtimeDoctorCommands-THIHX2SY.js → runtimeDoctorCommands-E2OUORHK.js} +6 -6
  96. package/setDialogExtraReferencesAction-JZEXA5SL.js +27 -0
  97. package/{setPrimaryDialogAgentAction-57GRIGX5.js → setPrimaryDialogAgentAction-4ZUQQKDG.js} +10 -9
  98. package/{settingSlice-O23YDK2O.js → settingSlice-7MNKHZ6R.js} +9 -8
  99. package/{spaceCommands-7RB3OWGN.js → spaceCommands-UG4QHSHD.js} +24 -22
  100. package/{spaceSlice-HLNFOVCA.js → spaceSlice-DPX4F5V3.js} +18 -17
  101. package/{streamAgentChatTurn-VS5W3C3N.js → streamAgentChatTurn-LYN66RLC.js} +66 -41
  102. package/{tableCommands-3P7MJ3PF.js → tableCommands-BEQAGE4I.js} +1 -1
  103. package/{tools-RWQXREN7.js → tools-VAJZFXRP.js} +29 -25
  104. package/types-ZSTJ7MPR.js +7 -0
  105. package/{updateDialogTitleAction-C6WFIIAW.js → updateDialogTitleAction-LE7SCNSB.js} +21 -20
  106. package/{chunk-O4BU24WZ.js → chunk-6Y7A3OQQ.js} +3 -3
  107. package/{chunk-CMKUBIGW.js → chunk-X7W4TNB4.js} +3 -3
  108. package/{localRuntimeAuthority-TEGCOWX4.js → localRuntimeAuthority-4IXJCHZ7.js} +3 -3
@@ -6,7 +6,7 @@ import {
6
6
  clipMultilineText,
7
7
  fetchAndSerializeTable,
8
8
  waitForAbortableDelay
9
- } from "./chunk-PVHN3TZV.js";
9
+ } from "./chunk-TKV34RQ6.js";
10
10
  import {
11
11
  createDrainExhaustedResponse,
12
12
  isCoreDrainingBody,
@@ -16,27 +16,29 @@ import {
16
16
  } from "./chunk-RQSOAMPJ.js";
17
17
  import {
18
18
  slateToSimplifiedMarkdown
19
- } from "./chunk-6N4KODMN.js";
19
+ } from "./chunk-4T5F7YZQ.js";
20
20
  import {
21
21
  extractCategorizedMentions
22
22
  } from "./chunk-VP4WJWKW.js";
23
- import {
24
- resolvePageSkillMetadata
25
- } from "./chunk-VC6OZXO5.js";
26
23
  import {
27
24
  fetchAndCacheMessages,
28
25
  shouldUseServerProxy
29
- } from "./chunk-LBOJLRSS.js";
26
+ } from "./chunk-37XKBS4O.js";
30
27
  import {
31
28
  fetchServerSyncedCredential
32
- } from "./chunk-PXZY7NIS.js";
29
+ } from "./chunk-C5SQSDB7.js";
30
+ import {
31
+ buildSkillGuidancePromptBlock,
32
+ extractRuntimePageCapabilities,
33
+ resolveSkillGraphFromRoots
34
+ } from "./chunk-7BUYEZ6U.js";
33
35
  import {
34
36
  buildCurrentTimeBlock,
35
37
  buildIdentityBlock,
36
38
  buildRuntimeGuidanceBlocks,
37
39
  requiresBareImageUrl,
38
40
  toBareImageUrlMessages
39
- } from "./chunk-SOW2GCA5.js";
41
+ } from "./chunk-IOOMJJ4Z.js";
40
42
  import {
41
43
  convertMessagesToResponsesInput,
42
44
  preserveAgentStateFields
@@ -47,53 +49,50 @@ import {
47
49
  resolvePlatformChatCompletionsEndpoint,
48
50
  resolvePlatformResponsesEndpoint
49
51
  } from "./chunk-MUCU6ATG.js";
50
- import {
51
- canonicalizeToolNames
52
- } from "./chunk-OSIJVBXP.js";
53
52
  import {
54
53
  estimateTokenCount
55
- } from "./chunk-IIHJMUV5.js";
54
+ } from "./chunk-EGPCU42M.js";
55
+ import {
56
+ createFileCredentialBroker
57
+ } from "./chunk-5CS33IBL.js";
56
58
  import {
57
59
  clampReasoningEffort,
58
60
  getModelConfig,
59
61
  isModelSupportReasoningEffort
60
62
  } from "./chunk-HQPG2PIV.js";
61
63
  import {
62
- createFileCredentialBroker
63
- } from "./chunk-5CS33IBL.js";
64
+ toErrorMessage
65
+ } from "./chunk-HNMXYYJR.js";
66
+ import {
67
+ createSpaceKey
68
+ } from "./chunk-ELT65PZW.js";
64
69
  import {
65
70
  MEMORY_USE_GUIDANCE,
66
71
  wrapHistoricalSummaryWithReplayGuard
67
72
  } from "./chunk-4PWB7JRR.js";
73
+ import {
74
+ canonicalizeToolNames
75
+ } from "./chunk-ZZ2MH7LE.js";
68
76
  import {
69
77
  extractCustomId
70
78
  } from "./chunk-DFFIZ25G.js";
71
- import {
72
- toErrorMessage
73
- } from "./chunk-HNMXYYJR.js";
74
79
  import {
75
80
  isDeepInfraKimiModel,
76
81
  isFireworksKimiModel,
77
82
  resolveFireworksKimiModel
78
83
  } from "./chunk-O6W2O2DA.js";
79
- import {
80
- createSpaceKey
81
- } from "./chunk-IWLUTMYX.js";
82
84
  import {
83
85
  read
84
- } from "./chunk-3S2VOMIF.js";
85
- import {
86
- asNonEmptyStringArray
87
- } from "./chunk-I42VC5KR.js";
86
+ } from "./chunk-XRZJGPFI.js";
88
87
  import {
89
88
  asTrimmedLowercaseString
90
89
  } from "./chunk-QSJ3HFEF.js";
91
90
  import {
92
91
  getRuntimeServerContext
93
- } from "./chunk-DVRHHFEA.js";
92
+ } from "./chunk-XMLRJUU5.js";
94
93
  import {
95
94
  isAbortError
96
- } from "./chunk-OOSFSFMA.js";
95
+ } from "./chunk-R5V5G73M.js";
97
96
  import {
98
97
  asTrimmedString
99
98
  } from "./chunk-3EUW3WEO.js";
@@ -107,126 +106,6 @@ import {
107
106
  asOptionalTrimmedString
108
107
  } from "./chunk-G3SUCT4W.js";
109
108
 
110
- // packages/ai/skills/referenceRuntime.ts
111
- var joinUniqueStrings = (...groups) => Array.from(new Set(groups.flatMap((items) => asNonEmptyStringArray(items))));
112
- var extractRuntimePageCapabilities = (content) => {
113
- const meta = resolvePageSkillMetadata(content);
114
- const directTools = asNonEmptyStringArray(content?.tools);
115
- const skillConfig = meta?.skillConfig;
116
- const skillTools = skillConfig?.toolNames ?? [];
117
- const softSkillHints = asNonEmptyStringArray([
118
- skillConfig?.name,
119
- ...meta?.recommendedSkills ?? []
120
- ]);
121
- return {
122
- directTools,
123
- hardSkillKeys: meta?.requiredSkills ?? [],
124
- softSkillKeys: meta?.recommendedSkills ?? [],
125
- hardSkillTools: meta?.kind === "skill" ? skillTools : [],
126
- softSkillHints,
127
- promptPatches: skillConfig?.promptPatch ? [skillConfig.promptPatch] : [],
128
- shouldUpgradeReference: directTools.length > 0 || meta?.kind === "skill" || !!skillConfig?.promptPatch
129
- };
130
- };
131
- var buildSkillGuidancePromptBlock = (options) => {
132
- const title = asOptionalTrimmedString(options.title) ?? "--- \u6280\u80FD\u63D0\u793A ---";
133
- const recommendedSkillHints = joinUniqueStrings(options.recommendedSkillHints);
134
- const skillPromptPatches = joinUniqueStrings(options.skillPromptPatches);
135
- if (recommendedSkillHints.length === 0 && skillPromptPatches.length === 0) {
136
- return "";
137
- }
138
- return [
139
- title,
140
- recommendedSkillHints.length > 0 ? `\u4EE5\u4E0B\u6280\u80FD\u4E0E\u5F53\u524D\u4EFB\u52A1\u66F4\u76F8\u5173\uFF0C\u53EF\u4F18\u5148\u8003\u8651\uFF1A${recommendedSkillHints.join("\u3001")}` : "",
141
- ...skillPromptPatches
142
- ].filter(Boolean).join("\n");
143
- };
144
- var buildIdentifierCandidates = (identifier, contentByKey) => {
145
- const trimmed = identifier.trim();
146
- if (!trimmed || contentByKey.has(trimmed)) return trimmed;
147
- const candidateToKey = /* @__PURE__ */ new Map();
148
- for (const [key, page] of Array.from(contentByKey.entries())) {
149
- const meta = resolvePageSkillMetadata(page);
150
- for (const value of [key, page?.dbKey, page?.title, meta?.skillConfig?.id, meta?.skillConfig?.name]) {
151
- const trimmedValue = asOptionalTrimmedString(value);
152
- if (trimmedValue) {
153
- candidateToKey.set(trimmedValue, key);
154
- }
155
- }
156
- }
157
- return candidateToKey.get(trimmed) ?? trimmed;
158
- };
159
- async function resolveSkillGraphFromRoots(options) {
160
- const contentByKey = new Map(options.contentByKey ?? []);
161
- const requiredTools = /* @__PURE__ */ new Set();
162
- const recommendedTools = /* @__PURE__ */ new Set();
163
- const recommendedSkillHints = /* @__PURE__ */ new Set();
164
- const skillPromptPatches = /* @__PURE__ */ new Set();
165
- const visits = [];
166
- const visited = /* @__PURE__ */ new Set();
167
- const loadPageCached = async (identifier) => {
168
- const resolvedIdentifier = buildIdentifierCandidates(identifier, contentByKey);
169
- if (!resolvedIdentifier) return null;
170
- if (contentByKey.has(resolvedIdentifier)) {
171
- return contentByKey.get(resolvedIdentifier) ?? null;
172
- }
173
- const page = await options.loadPage(resolvedIdentifier);
174
- if (page) {
175
- contentByKey.set(resolvedIdentifier, page);
176
- if (page.dbKey) {
177
- contentByKey.set(page.dbKey, page);
178
- }
179
- }
180
- return page ?? null;
181
- };
182
- const visit = async (identifier, mode, sourceLabel) => {
183
- const page = await loadPageCached(identifier);
184
- if (!page?.dbKey) return;
185
- const visitKey = `${mode}:${page.dbKey}`;
186
- if (visited.has(visitKey)) return;
187
- visited.add(visitKey);
188
- const meta = resolvePageSkillMetadata(page);
189
- const directTools = canonicalizeToolNames(page.tools ?? []);
190
- const skillTools = canonicalizeToolNames(meta?.skillConfig?.toolNames ?? []);
191
- const mergedTools = joinUniqueStrings(directTools, skillTools);
192
- visits.push({
193
- dbKey: page.dbKey,
194
- title: page.title,
195
- mode,
196
- sourceLabel,
197
- meta
198
- });
199
- if (mode === "required") {
200
- mergedTools.forEach((toolName) => requiredTools.add(toolName));
201
- if (meta?.skillConfig?.promptPatch) {
202
- skillPromptPatches.add(meta.skillConfig.promptPatch);
203
- }
204
- } else {
205
- mergedTools.forEach((toolName) => recommendedTools.add(toolName));
206
- if (meta?.skillConfig?.name) {
207
- recommendedSkillHints.add(meta.skillConfig.name);
208
- }
209
- }
210
- const nextHard = meta?.requiredSkills ?? meta?.skillConfig?.requiredSkills ?? [];
211
- const nextSoft = meta?.recommendedSkills ?? meta?.skillConfig?.recommendedSkills ?? [];
212
- if (mode === "required") {
213
- await Promise.all(nextHard.map((childKey) => visit(childKey, "required", page.dbKey)));
214
- await Promise.all(nextSoft.map((childKey) => visit(childKey, "recommended", page.dbKey)));
215
- return;
216
- }
217
- await Promise.all([...nextHard, ...nextSoft].map((childKey) => visit(childKey, "recommended", page.dbKey)));
218
- };
219
- await Promise.all(options.roots.map((root) => visit(root.identifier, root.mode, root.sourceLabel)));
220
- return {
221
- requiredTools: Array.from(requiredTools),
222
- recommendedTools: Array.from(recommendedTools),
223
- recommendedSkillHints: Array.from(recommendedSkillHints),
224
- skillPromptPatches: Array.from(skillPromptPatches),
225
- contentByKey,
226
- visits
227
- };
228
- }
229
-
230
109
  // packages/ai/agent/referenceUtils.ts
231
110
  function mergeReferences(base, extra) {
232
111
  const safeBase = Array.isArray(base) ? base : [];
@@ -762,38 +641,59 @@ var CONTEXT_USAGE_INSTRUCTIONS = `\u53C2\u8003\u8D44\u6599\u4F7F\u7528\u8BF4\u66
762
641
  var AGENT_ORCHESTRATION_RUN_INSTRUCTIONS = `--- \u591A Agent \u7F16\u6392\uFF08\u540E\u53F0 Run\uFF09 ---
763
642
  \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
764
643
  1. \u5148\u53D1\u73B0\u518D\u6D3E\u53D1\u3002\u8C03\u7528 listAgents \u8BFB\u53D6\u5B89\u5168\u6458\u8981\u3002\u9009\u4EBA\u6309\u4F18\u5148\u7EA7\uFF1A\u7279\u5B9A\u5DE5\u5177\u9700\u6C42 \u2192 \u81EA\u5EFA agent \u4F18\u5148\uFF08isOwned=true \u6216 apiSource="custom"\uFF1A\u8D70\u7528\u6237\u81EA\u5DF1\u7684 API/OAuth\uFF0C\u4E0D\u6D88\u8017\u5E73\u53F0 credits\uFF0C\u4E0D\u82B1\u94B1\uFF09\u2192 \u4EFB\u52A1\u6863\u4E0E\u6210\u672C/\u80FD\u529B\u5339\u914D \u2192 \u80DC\u4EFB\u8005\u4E2D\u7684 isFavorite \u2192 modelAbility / inputPrice/outputPrice\u3002
765
- - \u6D3E\u53D1\u524D\u5148\u5224\u65AD"\u8BE5\u4E0D\u8BE5\u6D3E\u53D1"\uFF1A\u7236 agent \u8F6E\u8BE2 + \u4E0A\u4E0B\u6587\u4F20\u9012\u672C\u8EAB\u6709\u6210\u672C\uFF0C\u5B50\u4EE3\u7406\u5355\u4EF7\u4F4E\u4E0D\u7B49\u4E8E\u603B\u6210\u672C\u66F4\u4F4E\u3002\u5C0F\u4EFB\u52A1\u76F4\u63A5\u505A\uFF1B\u53EA\u6709\u4EFB\u52A1\u5927\u5230\u5355 agent \u88C5\u4E0D\u4E0B\u3001\u6216\u53EF\u5E76\u884C\u7701\u65F6\u95F4\uFF0C\u7F16\u6392\u624D\u5212\u7B97\u3002
766
- - \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
644
+ - \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
645
+ - \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
767
646
  - \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
768
647
  - \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\uFF08\u5982 DeepSeek V4 Flash\u3001agy-flash\u3001GLM \u7B49\uFF09\uFF0C\u4E0D\u6D3E\u9876\u6863\u3002
769
648
  - \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\uFF0C\u4F46\u5141\u8BB8\u7528\u4EF7\u683C\u3001modelAbility \u53CA\u660E\u663E\u9876\u6863\u65CF\u7CFB\u505A\u7C97\u6863\u4F4D\u5339\u914D\u3002
770
649
  - \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
771
650
  - \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\u3002listAgents \u5361\u7247\u91CC\u81EA\u5EFA\u6807\u8BB0\u4E3A \u25CE\u3001\u6536\u85CF\u4E3A \u2605\u3002
772
- 2. coding \u662F\u9ED8\u8BA4\u80FD\u529B\u3002tools \u53EA\u7528\u4E8E\u6D4F\u89C8\u5668\u3001\u56FE\u7247\u3001\u8868\u683C\u3001\u90AE\u4EF6\u3001\u6570\u636E\u5E93\u7B49\u7279\u5B9A\u5DE5\u5177\u4EFB\u52A1\uFF1B\u4E0D\u8981\u56E0\u4E3A coding agent \u7684 tools \u6458\u8981\u4E3A\u7A7A\u5C31\u6DD8\u6C70\u5B83\u3002
773
- 3. listAgents \u8FD4\u56DE\u7684 id\u3001publicKey\u3001handle \u53EA\u662F\u5019\u9009\u6807\u8BC6\u3002\u9009\u4E2D\u540E\u4F18\u5148\u8C03\u7528 readAgent \u89E3\u6790\u53EF\u8FD0\u884C\u7684 agentKey\uFF0C\u518D\u628A\u8BE5 agentKey \u4F20\u7ED9 startAgentRun\uFF1B\u4E0D\u8981\u51ED\u5C55\u793A\u540D\u79F0\u6216 id \u731C key\uFF0C\u4E5F\u4E0D\u8981\u7D22\u53D6 prompt\u3001\u5BC6\u94A5\u6216\u6570\u636E\u5E93 key \u6765\u9009\u4EBA\u3002\u6CA1\u6709 readAgent \u65F6\u53EA\u80FD\u4F7F\u7528\u5DF2\u6709\u4E0A\u4E0B\u6587\u4E2D\u660E\u786E\u7684 agentKey\u3002
651
+ 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
652
+ 3. **agentKey \u7981\u6B62\u624B\u5DE5\u62FC\u63A5\u6216\u4ECE id/userId \u63A8\u5BFC\uFF08\u786C\u95E8\uFF09**\u3002\u5408\u6CD5\u6765\u6E90\u4EC5\u4E24\u79CD\uFF1A(a) \u672C\u8F6E\u6216\u8FD1\u671F\u4E0A\u4E0B\u6587\u4E2D\u5DF2\u5B8C\u6574\u51FA\u73B0\u7684 agentKey\uFF1B(b) \u5BF9\u672C\u8F6E\u9009\u4E2D\u5019\u9009\u8C03\u7528 readAgent \u540E\u8FD4\u56DE\u7684 agentKey \u5B57\u6BB5\u3002
653
+ - listAgents \u7684 id\u3001publicKey\u3001handle \u53EA\u662F\u5019\u9009\u6807\u8BC6\uFF0C**\u4E0D\u662F agentKey**\u3002\u4E25\u7981\u62FC\u63A5 "agent-<userId>-<id>"\uFF1AdbKey \u672B\u6BB5\u53EF\u80FD\u662F alias/handle \u800C\u975E id\uFF0C\u62FC\u51FA\u6765\u7684 key \u5728\u5E93\u91CC\u4E0D\u5B58\u5728\u3002
654
+ - \u6362\u4EBA\u3001\u6362\u5019\u9009\u3001\u6216\u4E0A\u6B21 key \u6D3E\u53D1\u62A5 not found \u65F6\uFF0C\u5FC5\u987B\u91CD\u65B0 readAgent\uFF0C\u4E0D\u5F97\u5957\u7528\u4E0A\u4E00\u4E2A key \u7684\u62FC\u63A5\u683C\u5F0F\u3002
655
+ - \u5931\u8D25\u75C7\u72B6\uFF1A\u51FA\u73B0\u300Cagent not found\u300D\u300CLocal agent config not found: \u2026\u300D\u65F6\uFF0C\u5148 readAgent \u590D\u6838 key\uFF1B\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
656
+ - \u4E0D\u8981\u7D22\u53D6 prompt\u3001\u5BC6\u94A5\u6216\u6570\u636E\u5E93 key \u6765\u9009\u4EBA\u3002
774
657
  4. \u6D3E\u53D1\u540E\u8F7B\u8F6E\u8BE2\u3002startAgentRun \u62FF\u5230 runId \u540E\uFF0C\u7528 controlAgentRun(action:"status", runId, tailLines:0) \u8F6E\u8BE2\u2014\u2014tailLines:0 \u53EA\u8FD4\u56DE\u72B6\u6001\u6458\u8981\uFF08\u4E0D\u62C9\u65E5\u5FD7\uFF09\uFF0C\u7701 token\u3002\u6BCF\u6B21\u8F6E\u8BE2 = \u7236 agent \u591A\u4E00\u4E2A turn = \u5168\u524D\u7F00\u91CD\u65B0\u8BA1\u4EF7\uFF0C\u6240\u4EE5\u95F4\u9694\u4E0D\u8981\u592A\u5BC6\uFF08\u5EFA\u8BAE 10\u201315s\uFF09\uFF0C\u4E0D\u8981 5s \u4E00\u6B21\u3002\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
775
658
  5. \u5F02\u5E38\u624D\u62C9\u65E5\u5FD7\u3002tailLines:0 \u663E\u793A running \u4E14\u8FDB\u5EA6\u6B63\u5E38 \u2192 \u7EE7\u7EED\u8F7B\u8F6E\u8BE2\uFF1B\u53EA\u6709 status=failed/\u8D85\u65F6/\u7591\u4F3C\u5361\u6B7B\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
776
- 6. 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
659
+ 6. **\u6D3E\u53D1\u5931\u8D25\u5148\u5206\u8BCA\uFF0C\u518D\u4E0B\u7ED3\u8BBA**\u3002\u987A\u5E8F\uFF1A
660
+ \u2460 \u786E\u8BA4\u672C\u6B21 agentKey \u6765\u81EA readAgent \u6216\u4E0A\u4E0B\u6587\u5B8C\u6574\u7ED9\u51FA\uFF08\u5426\u5219\u5148\u4FEE\u6B63 key\uFF0C\u4E0D\u7B97\u901A\u9053\u6545\u969C\uFF09\uFF1B
661
+ \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
662
+ \u2462 \u540C\u4E00\u5DF2\u9A8C\u8BC1 agentKey \u4E0A\u4ECD\u5931\u8D25\uFF0C\u4E14\u9519\u8BEF\u660E\u786E\u6307\u5411\u901A\u9053\uFF08429\u3001\u9274\u6743\u5931\u8D25\u3001machine offline\uFF09\u2192 \u8BB0\u4E3A\u8BE5\u901A\u9053\u6545\u969C\u3002
663
+ - \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
664
+ - \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
665
+ 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
777
666
  \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`;
778
- var AGENT_COLLABORATION_INSTRUCTIONS = `--- \u591A Agent \u534F\u4F5C\uFF08\u8BA1\u5212 \u2192 \u6D3E\u53D1 \u2192 \u5BA1\u67E5\uFF09 ---
779
- \u7528\u5B50\u4EE3\u7406\u5B8C\u6210\u4E2D\u5927\u578B\u4EFB\u52A1\u65F6\uFF0C\u6309\u4E09\u6BB5\u7EAA\u5F8B\u6267\u884C\uFF1A
780
- 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\uFF0C\u518D\u51B3\u5B9A\u81EA\u5DF1\u505A\u5B8C\u8FD8\u662F\u6D3E\u53D1\u3002
781
- - \u6D3E\u53D1\u524D\u505A\u6210\u672C\u6743\u8861\uFF1A\u7236 agent \u8F6E\u8BE2\u3001\u4E0A\u4E0B\u6587\u4F20\u9012\u3001\u534F\u8C03\u5F00\u9500\u672C\u8EAB\u8981\u6D88\u8017 token\uFF1B\u5B50\u4EE3\u7406\u66F4\u4FBF\u5B9C\u4E0D\u7B49\u4E8E\u7F16\u6392\u4E00\u5B9A\u66F4\u7701\u3002\u7B80\u5355/\u4E2D\u7B49\u4EFB\u52A1\u7528\u5F3A\u6A21\u578B\u76F4\u63A5\u505A\uFF0C\u5F80\u5F80\u6BD4"\u5F3A\u6A21\u578B\u6307\u6325 + \u5F31\u6A21\u578B\u5B9E\u73B0"\u66F4\u7701\uFF08\u5B9E\u6D4B\uFF1A\u6307\u6325+\u5B9E\u73B0\u7684\u53CC\u5C42 credits \u5E38\u8D85\u8FC7\u5355\u5C42\u5F3A\u6A21\u578B\u76F4\u505A\uFF09\u3002\u53EA\u6709\u4EFB\u52A1\u8DB3\u591F\u5927\uFF08\u591A\u6587\u4EF6\u6DF1\u6539\u3001\u53EF\u5E76\u884C\u3001\u5355 agent \u4E0A\u4E0B\u6587\u88C5\u4E0D\u4E0B\uFF09\u65F6\uFF0C\u7F16\u6392\u7684\u62C6\u5206\u6536\u76CA\u624D\u660E\u663E\u8D85\u8FC7\u534F\u8C03\u6210\u672C\u3002
782
- 2. \u6D3E\u53D1\u539F\u5219\uFF1A\u5B50\u4EFB\u52A1\u81EA\u5305\u542B\u3001\u8FB9\u754C\u6E05\u6670\u3001\u80FD\u5E76\u884C\u5219\u5E76\u884C\uFF1B\u7ED9\u6267\u884C\u8005\u5199\u6E05\u4EFB\u52A1\u3001\u9A8C\u6536\u548C\u7981\u533A\uFF0C\u4E0D\u4F20\u65E0\u5173\u5386\u53F2\u3002\u6D3E\u53D1\u540E\u8F6E\u8BE2\u7ED3\u679C\uFF0C\u4E0D\u5047\u8BBE\u6210\u529F\u3002
783
- 3. \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\u8BE6\u7EC6\u6D41\u7A0B\uFF08\u591A\u8F6E\u65E0\u4E0A\u4E0B\u6587 review\u3001\u901A\u8FC7\u6761\u4EF6\u3001ephemeral \u6D3E\u53D1\u3001\u9003\u9038\u673A\u5236\uFF09\u89C1 nolo-commit skill \u7684\u63D0\u4EA4\u524D\u81EA\u68C0\u7B2C 0 \u9879\u3002
784
- \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\u788C\u800C\u6D3E\u53D1\u6216\u8FC7\u5EA6\u8BBE\u8BA1\u3002`;
667
+ var AGENT_COLLABORATION_INSTRUCTIONS = `--- \u591A Agent \u534F\u4F5C\uFF08\u8BA1\u5212 \u2192 \u5E76\u53D1\u6D3E\u53D1 \u2192 \u5BA1\u67E5\uFF09 ---
668
+ \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
669
+ 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
670
+ - **\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
671
+ - \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
672
+ - **\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
673
+ 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
674
+ - \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
675
+ - **\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
676
+ - \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
677
+ - **\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
678
+ - **\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
679
+ - \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
680
+ 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
681
+ 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
682
+ \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**
683
+ \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`;
785
684
  var MENU_USAGE_INSTRUCTIONS = `--- \u4EA4\u4E92\u8BF4\u660E ---
786
685
  \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
787
686
 
788
- ## \u4F55\u65F6\u8C03\u7528 ui_ask_choice
789
- \u9ED8\u8BA4\u503E\u5411"\u76F4\u63A5\u884C\u52A8"\uFF1A\u5F53\u4F60\u80FD\u57FA\u4E8E\u73B0\u6709\u4E0A\u4E0B\u6587\u7ED9\u51FA\u9AD8\u8D28\u91CF\u7B54\u6848\u6216\u6267\u884C\u65F6\uFF0C\u4F18\u5148\u76F4\u63A5\u505A\uFF0C\u4E0D\u8981\u4E3A\u4E86\u95EE\u800C\u95EE\u3002\u4EC5\u5728\u4EE5\u4E0B\u60C5\u51B5\u8C03\u7528 ui_ask_choice\uFF1A
687
+ ## \u4F55\u65F6\u8C03\u7528 ask_user
688
+ \u9ED8\u8BA4\u503E\u5411"\u76F4\u63A5\u884C\u52A8"\uFF1A\u5F53\u4F60\u80FD\u57FA\u4E8E\u73B0\u6709\u4E0A\u4E0B\u6587\u7ED9\u51FA\u9AD8\u8D28\u91CF\u7B54\u6848\u6216\u6267\u884C\u65F6\uFF0C\u4F18\u5148\u76F4\u63A5\u505A\uFF0C\u4E0D\u8981\u4E3A\u4E86\u95EE\u800C\u95EE\u3002\u4EC5\u5728\u4EE5\u4E0B\u60C5\u51B5\u8C03\u7528 ask_user\uFF1A
790
689
  1\uFF09\u7528\u6237\u9700\u6C42\u5BBD\u6CDB\u6216\u6A21\u7CCA\uFF0C\u4E14\u4F60\u80FD\u7ED9\u51FA 2\uFF5E5 \u4E2A\u4E92\u65A5\u3001\u90FD\u5408\u7406\u7684\u65B9\u5411\u5019\u9009\u2014\u2014\u8BA9\u7528\u6237\u5148\u9009\u4E00\u4E2A\u65B9\u5411\u518D\u6DF1\u5165\uFF1B
791
690
  2\uFF09\u8BA1\u5212/\u6D41\u7A0B\u5230\u4E86\u771F\u6B63\u7684\u5206\u652F\u8282\u70B9\uFF0C\u4E0D\u540C\u9009\u62E9\u4F1A\u5BFC\u81F4\u663E\u8457\u4E0D\u540C\u7684\u6210\u672C\u3001\u9690\u79C1\u6216\u7ED3\u679C\u8D70\u5411\uFF0C\u4E14\u4F60\u65E0\u6CD5\u4ECE\u4E0A\u4E0B\u6587\u63A8\u65AD\u7528\u6237\u504F\u597D\uFF1B
792
691
  3\uFF09\u65B0\u4F1A\u8BDD\u5F00\u5934\uFF0C\u6839\u636E\u7528\u6237\u753B\u50CF\u7ED9\u51FA\u82E5\u5E72"\u63A5\u4E0B\u6765\u53EF\u4EE5\u5C1D\u8BD5\u7684\u4E8B\u60C5"\u4F5C\u4E3A\u529F\u80FD\u5BFC\u822A\u6216\u4F7F\u7528\u5F15\u5BFC\u3002
793
692
 
794
- ## \u8C03\u7528 ui_ask_choice \u7684\u89C4\u8303
693
+ ## \u8C03\u7528 ask_user \u7684\u89C4\u8303
795
694
  - \u8C03\u7528\u524D\u5FC5\u987B\u5148\u5728\u666E\u901A\u56DE\u590D\u6587\u672C\u91CC\u5199\u6E05\u80CC\u666F\u3001\u7406\u7531\u6216\u6743\u8861\uFF08\u5148\u89E3\u91CA\uFF0C\u518D\u8C03\u7528\u5DE5\u5177\uFF09\uFF1B
796
- - \u63D0\u4F9B 2\uFF5E5 \u4E2A\u4E92\u65A5\u9009\u9879\uFF1B\u5982\u679C\u4F60\u6709\u63A8\u8350\u65B9\u5411\uFF0C\u628A\u5B83\u653E\u5728 choices \u7684\u7B2C\u4E00\u4F4D\uFF1B
695
+ - \u63D0\u4F9B 2\uFF5E5 \u4E2A\u4E92\u65A5\u9009\u9879\uFF1B\u5982\u679C\u4F60\u6709\u63A8\u8350\u65B9\u5411\uFF0C\u628A\u5B83\u653E\u5728 choices \u7684\u7B2C\u4E00\u4F4D\uFF0C\u5E76\u7ED9\u8BE5\u9009\u9879\u6807 recommended: true\uFF1B
696
+ - \u82E5\u6CA1\u6709\u660E\u786E\u7684\u63A8\u8350\u9879\uFF0C\u5FC5\u987B\u5728\u8C03\u7528\u524D\u7684\u666E\u901A\u56DE\u590D\u6587\u672C\u91CC\u7B80\u8981\u8BF4\u660E\u6BCF\u4E2A\u9009\u9879\u7684\u4F18\u7F3A\u70B9\uFF08\u6216\u5404\u9009\u9879\u7684\u5173\u952E\u5DEE\u5F02\uFF09\uFF0C\u5E2E\u52A9\u7528\u6237\u6743\u8861\uFF0C\u800C\u4E0D\u662F\u53EA\u5217\u51FA\u9009\u9879\u5C31\u5B8C\u4E8B\uFF1B
797
697
  - \u9009\u9879\u53EA\u627F\u8F7D\u9002\u5EA6\u4FE1\u606F\uFF1Alabel \u4E3A\u7B80\u77ED\u6309\u94AE\u6587\u6848\uFF1Bdetail \u4E3A\u53EF\u9009\u3001\u81F3\u591A\u4E00\u53E5\u8BDD\u7684\u7B80\u77ED\u8865\u5145\uFF1B\u7981\u6B62\u628A\u957F\u6BB5\u89E3\u91CA\u6216\u6743\u8861\u585E\u8FDB choices/detail\uFF1B
798
698
  - \u6BCF\u4E2A\u9009\u9879\u7684 userMessage \u5199\u6210\u5B8C\u6574\u7684\u4E0B\u4E00\u53E5\u8BDD\uFF0C\u65B9\u4FBF\u7528\u6237\u70B9\u51FB\u540E\u4E0A\u4E0B\u6587\u8FDE\u8D2F\uFF1B
799
699
  - \u4E0D\u8981\u5728\u9009\u9879\u5217\u8868\u91CC\u653E"\u5176\u4ED6/Other"\u2014\u2014\u5BA2\u6237\u7AEF\u4F1A\u81EA\u52A8\u4E3A\u7528\u6237\u8FFD\u52A0\u81EA\u7531\u8F93\u5165\u7684\u9000\u8DEF\uFF1B
@@ -909,7 +809,7 @@ var TOOL_GUIDED_SECTIONS = [
909
809
  ],
910
810
  build: () => AGENT_COLLABORATION_INSTRUCTIONS
911
811
  },
912
- { id: "menuUsage", triggerTools: ["ui_ask_choice"], build: () => MENU_USAGE_INSTRUCTIONS },
812
+ { id: "menuUsage", triggerTools: ["ask_user"], build: () => MENU_USAGE_INSTRUCTIONS },
913
813
  {
914
814
  id: "webAccess",
915
815
  triggerTools: ["exa_search", "fetchWebpage", "browser_openSession", "read_x_post"],
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  DEFAULT_AGENT_BASE_POLICY,
3
3
  DEFAULT_USER_PREFERENCE_PROFILE
4
- } from "./chunk-EABWT43X.js";
4
+ } from "./chunk-RVOUXDFU.js";
5
5
 
6
6
  // packages/ai/policy/runtimePolicy.ts
7
7
  var clampLevel = (value, fallback) => {
@@ -1,19 +1,19 @@
1
1
  import {
2
2
  readDbRecord,
3
3
  writeAgentRecord
4
- } from "./chunk-4PIVMGLG.js";
4
+ } from "./chunk-A7QNCVO5.js";
5
5
  import {
6
6
  buildSkillSummaryMarker
7
7
  } from "./chunk-VF4K2QE6.js";
8
+ import {
9
+ createSpaceKey
10
+ } from "./chunk-ELT65PZW.js";
8
11
  import {
9
12
  parseUserIdFromAuthToken,
10
13
  readOption,
11
14
  resolveAuthToken,
12
15
  resolveServerUrl
13
16
  } from "./chunk-A7GB5UGH.js";
14
- import {
15
- createSpaceKey
16
- } from "./chunk-IWLUTMYX.js";
17
17
  import {
18
18
  asTrimmedLowercaseString
19
19
  } from "./chunk-QSJ3HFEF.js";
@@ -2,17 +2,14 @@ import {
2
2
  buildCurrentTimeBlock,
3
3
  buildIdentityBlock,
4
4
  buildRuntimeGuidanceBlocks
5
- } from "./chunk-SOW2GCA5.js";
6
- import {
7
- canonicalizeToolNames
8
- } from "./chunk-OSIJVBXP.js";
5
+ } from "./chunk-IOOMJJ4Z.js";
9
6
  import {
10
7
  estimateTokenCount,
11
8
  getModelContextWindow,
12
9
  planCompression,
13
10
  planContextUsage,
14
11
  serializeMessageContent
15
- } from "./chunk-IIHJMUV5.js";
12
+ } from "./chunk-EGPCU42M.js";
16
13
  import {
17
14
  clipCompactText
18
15
  } from "./chunk-5MMAK75Q.js";
@@ -20,12 +17,15 @@ import {
20
17
  findModelConfig,
21
18
  getProviderByModelName
22
19
  } from "./chunk-HQPG2PIV.js";
20
+ import {
21
+ toErrorMessage
22
+ } from "./chunk-HNMXYYJR.js";
23
23
  import {
24
24
  buildDialogSummaryLayer
25
25
  } from "./chunk-AL2V7U3E.js";
26
26
  import {
27
- toErrorMessage
28
- } from "./chunk-HNMXYYJR.js";
27
+ canonicalizeToolNames
28
+ } from "./chunk-ZZ2MH7LE.js";
29
29
  import {
30
30
  asRecordOrEmpty
31
31
  } from "./chunk-KX6YBIHG.js";
@@ -1151,7 +1151,9 @@ function applyPersistedTurnInput(messages, persistedInput, persistedInputReferen
1151
1151
  async function runLocalAgentTurn(input) {
1152
1152
  const agentConfig = await input.adapter.loadAgentConfig(input.agentRef);
1153
1153
  if (!agentConfig) {
1154
- const error = new Error(`Local agent config not found: ${input.agentRef}`);
1154
+ const error = new Error(
1155
+ `agentRef "${input.agentRef}" \u672A\u5339\u914D\u5230\u672C\u5730 agent\u3002\u8FD9\u4E0D\u662F\u914D\u7F6E\u7F3A\u5931\uFF0C\u8BF7\u7528 listAgents \u67E5\u770B\u53EF\u7528 agent\uFF0C\u518D\u7528 readAgent \u89E3\u6790 agentKey\uFF0C\u52FF\u624B\u5DE5\u62FC key\u3002`
1156
+ );
1155
1157
  error.code = LOCAL_AGENT_CONFIG_MISSING_CODE;
1156
1158
  error.agentRef = input.agentRef;
1157
1159
  throw error;
@@ -13,6 +13,7 @@ import {
13
13
  var processEnv = typeof process !== "undefined" ? process.env : void 0;
14
14
  var reactNativeDev = typeof globalThis !== "undefined" && "__DEV__" in globalThis ? globalThis.__DEV__ : void 0;
15
15
  var isProduction = processEnv?.NOLO_FORCE_PRODUCTION === "1" || processEnv?.NODE_ENV === "production" || reactNativeDev === false;
16
+ var isDevelopment = !isProduction;
16
17
  var getIsDesktopApp = () => (typeof process !== "undefined" ? process.env?.NOLO_DESKTOP : processEnv?.NOLO_DESKTOP) === "1" || typeof window !== "undefined" && window.__NOLO_DESKTOP__ === true;
17
18
  var isDesktopApp = getIsDesktopApp();
18
19
 
@@ -258,6 +259,7 @@ var normalizeTimeFields = (data) => ({
258
259
 
259
260
  export {
260
261
  isProduction,
262
+ isDevelopment,
261
263
  getIsDesktopApp,
262
264
  createClientLogger,
263
265
  isAbortError,
@@ -10,18 +10,18 @@ import {
10
10
  toTimestampMs,
11
11
  upsert,
12
12
  write
13
- } from "./chunk-3S2VOMIF.js";
13
+ } from "./chunk-XRZJGPFI.js";
14
14
  import {
15
15
  createUserKey,
16
16
  createUserPreferenceKey,
17
17
  ulid
18
- } from "./chunk-O4BU24WZ.js";
18
+ } from "./chunk-6Y7A3OQQ.js";
19
19
  import {
20
20
  asTrimmedLowercaseString
21
21
  } from "./chunk-QSJ3HFEF.js";
22
22
  import {
23
23
  BUILTIN_NOLO_AGENT_KEY
24
- } from "./chunk-XPC5C7BK.js";
24
+ } from "./chunk-3ND52WIL.js";
25
25
  import {
26
26
  asyncThunkCreator,
27
27
  buildCreateSlice,
@@ -29,12 +29,12 @@ import {
29
29
  createAsyncThunk,
30
30
  createSelector,
31
31
  selectIdentityUserId
32
- } from "./chunk-DVRHHFEA.js";
32
+ } from "./chunk-XMLRJUU5.js";
33
33
  import {
34
34
  getAllServers,
35
35
  getIsDesktopApp,
36
36
  isProduction
37
- } from "./chunk-OOSFSFMA.js";
37
+ } from "./chunk-R5V5G73M.js";
38
38
  import {
39
39
  SERVERS
40
40
  } from "./chunk-LCBAMY2M.js";
@@ -1,10 +1,10 @@
1
1
  import {
2
2
  getRuntimeServerContext,
3
3
  scheduleDeleteReplication
4
- } from "./chunk-DVRHHFEA.js";
4
+ } from "./chunk-XMLRJUU5.js";
5
5
  import {
6
6
  fetchFromClientDb
7
- } from "./chunk-OOSFSFMA.js";
7
+ } from "./chunk-R5V5G73M.js";
8
8
  import {
9
9
  buildTombstoneRecord
10
10
  } from "./chunk-GBRG75BQ.js";