nolo-cli 0.16.0-alpha.17 → 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 (87) hide show
  1. package/{_executeModel-GP2DXECM.js → _executeModel-UREJOVS3.js} +24 -24
  2. package/{action-TK62YXTY.js → action-LT7BRFLK.js} +7 -7
  3. package/{addContentAction-IEEBATAA.js → addContentAction-PL3KKBDH.js} +6 -6
  4. package/{addDialogAgentAction-XUZNC36X.js → addDialogAgentAction-FCMSKYAF.js} +5 -5
  5. package/{agentDeleteCommand-6C77LXAA.js → agentDeleteCommand-TJ2EAYDA.js} +13 -13
  6. package/{agentEmailCommands-7KZPAGIW.js → agentEmailCommands-TOPVS5Q3.js} +27 -27
  7. package/{agentListCommands-EFFASIR2.js → agentListCommands-WD5XYVGK.js} +14 -14
  8. package/{agentMachineCommands-XHLRGCLP.js → agentMachineCommands-24BLT7M4.js} +13 -13
  9. package/{agentRecordCommands-ITBT7MPU.js → agentRecordCommands-FYRQB7SX.js} +27 -27
  10. package/{agentRunCommand-HEBSX6ER.js → agentRunCommand-TLW6PYPA.js} +27 -27
  11. package/{agentRuntimeLocal-KV6MQJQS.js → agentRuntimeLocal-K2J7IS6O.js} +10 -10
  12. package/{agentSlice-HOLDB2UY.js → agentSlice-B6FQEOAF.js} +6 -6
  13. package/{appDeleteCommands-ROPKN6PL.js → appDeleteCommands-X7YGULGZ.js} +14 -14
  14. package/{appDeployCommands-65E4ARQN.js → appDeployCommands-IMNPBUN7.js} +14 -14
  15. package/{appDeployStatusCommands-RFWMQDSJ.js → appDeployStatusCommands-2KFZUEET.js} +14 -14
  16. package/{appGetCommands-LDO2HNAL.js → appGetCommands-AYG44S7G.js} +14 -14
  17. package/{appListCommands-S4MBG4KD.js → appListCommands-Z7CLYPLH.js} +14 -14
  18. package/{chunk-HETVWFFQ.js → chunk-37XKBS4O.js} +24 -24
  19. package/{chunk-XPC5C7BK.js → chunk-3ND52WIL.js} +2 -2
  20. package/{chunk-LFTQYP3K.js → chunk-4CQFPP2G.js} +8 -4
  21. package/{chunk-6N4KODMN.js → chunk-4T5F7YZQ.js} +1 -1
  22. package/{chunk-NJYEXLKX.js → chunk-5ICZUVFN.js} +2 -2
  23. package/{chunk-YZ2PZFC6.js → chunk-7BUYEZ6U.js} +1 -1
  24. package/{chunk-WWWIRXLT.js → chunk-7TENCSE7.js} +11 -13
  25. package/{chunk-N77EBDJJ.js → chunk-A7QNCVO5.js} +9 -2
  26. package/{chunk-Y3GNPBAB.js → chunk-B26VDWID.js} +2 -8
  27. package/{chunk-V3A3PXQQ.js → chunk-BLQ3U7UK.js} +1 -1
  28. package/{chunk-JQOWVDDX.js → chunk-BUTE3AHD.js} +3 -3
  29. package/{chunk-3J6QER3H.js → chunk-C5SQSDB7.js} +5 -5
  30. package/{chunk-MT2DOPXQ.js → chunk-C75ONZYN.js} +1 -1
  31. package/{chunk-DS2YYH6W.js → chunk-CZAAQLAW.js} +3 -3
  32. package/{chunk-XV5I4HHL.js → chunk-DKZFOK24.js} +1 -1
  33. package/{chunk-EWLAMUG5.js → chunk-EGPCU42M.js} +4 -4
  34. package/{chunk-27MGYWLZ.js → chunk-ELT65PZW.js} +2 -2
  35. package/{chunk-ETXKHE7J.js → chunk-GO7R5K32.js} +2 -2
  36. package/{chunk-N3IKVYLL.js → chunk-I2NSE23G.js} +1 -1
  37. package/{chunk-WVQXRCCZ.js → chunk-JLA4FXYC.js} +1 -1
  38. package/{chunk-KF27FHVT.js → chunk-KO4PXGVN.js} +1 -1
  39. package/{chunk-CIF5XTPN.js → chunk-LP5UAY5I.js} +10 -28
  40. package/{chunk-HRLDQJW7.js → chunk-LRYORNMJ.js} +34 -16
  41. package/{chunk-XGJRT3IK.js → chunk-MVQ4TBSD.js} +1 -1
  42. package/{chunk-IG3SA64O.js → chunk-OOKISU7J.js} +2 -2
  43. package/{chunk-DXOUTEQC.js → chunk-QCJITMYO.js} +4 -2
  44. package/{chunk-OOSFSFMA.js → chunk-R5V5G73M.js} +2 -0
  45. package/{chunk-L2DKNKL4.js → chunk-RVOUXDFU.js} +4 -4
  46. package/{chunk-JTINRTBT.js → chunk-SKDNBYZK.js} +2 -2
  47. package/{chunk-PH7SXF5R.js → chunk-TKV34RQ6.js} +24 -24
  48. package/{chunk-LD6DKWMF.js → chunk-TP6TE4L7.js} +11 -11
  49. package/{chunk-JKUL77KQ.js → chunk-UGUW3FHG.js} +3 -3
  50. package/{chunk-YPAO6HUT.js → chunk-XHG22OEX.js} +4 -4
  51. package/{chunk-DVRHHFEA.js → chunk-XMLRJUU5.js} +1 -1
  52. package/{chunk-NLQBLZUO.js → chunk-XRZJGPFI.js} +6 -6
  53. package/{chunk-VE7PIZFT.js → chunk-XU6XCPWB.js} +1 -1
  54. package/{chunk-JJPANCH2.js → chunk-YEFSRF54.js} +2 -2
  55. package/{codingSkills-3RK4CIL2.js → codingSkills-36KN5NQT.js} +1 -1
  56. package/{createAgentAutomationAction-63XOK7PE.js → createAgentAutomationAction-F62DAY54.js} +11 -11
  57. package/{createDialogAction-NBFEO4SU.js → createDialogAction-RPB6W3QN.js} +12 -12
  58. package/{createPageAction-JYVUSH57.js → createPageAction-APL7B2KC.js} +11 -11
  59. package/{dbSlice-CJJKYYXK.js → dbSlice-CGSRFJN3.js} +5 -5
  60. package/{deleteFile-WPWVZE4B.js → deleteFile-WDZ3VM7B.js} +3 -3
  61. package/{dialogCommands-JO7YCVND.js → dialogCommands-J7C6MB3Q.js} +14 -14
  62. package/{dialogSlice-6SOMUMGM.js → dialogSlice-DMJVC2XX.js} +11 -11
  63. package/{docCreateCommands-H7KQ345X.js → docCreateCommands-Y7OSXNB6.js} +13 -13
  64. package/{docDeleteCommands-OSEFFFJ5.js → docDeleteCommands-ALZGQRCE.js} +14 -14
  65. package/{docReadCommands-7A5PGQ7J.js → docReadCommands-4BDDESGT.js} +13 -13
  66. package/{docStore-K2SEQBBX.js → docStore-YAPW55HZ.js} +12 -12
  67. package/{docUpdateCommands-3COEELBB.js → docUpdateCommands-LU2ZM2VE.js} +13 -13
  68. package/{handleSendMessageAction-L6NJXNIP.js → handleSendMessageAction-YDCWKDVY.js} +11 -11
  69. package/index.js +51 -51
  70. package/{machineCommands-DGDX3GHH.js → machineCommands-QKGBDYER.js} +26 -26
  71. package/{machineWsRunDispatch-ZV6BHKXA.js → machineWsRunDispatch-25LT4UG6.js} +26 -26
  72. package/package.json +1 -1
  73. package/{queryRunOverlay-KQDJBH32.js → queryRunOverlay-O5IAGNXY.js} +6 -6
  74. package/{read-CN3TNXIP.js → read-3FMPZPER.js} +3 -3
  75. package/{readDocTool-WF3675ED.js → readDocTool-VSYHKK3V.js} +1 -1
  76. package/{readlineWorkspace-BUSQQXPY.js → readlineWorkspace-U6UCWL4I.js} +30 -30
  77. package/{removeDialogAgentAction-XRTUVGAN.js → removeDialogAgentAction-OAGA2G3U.js} +7 -7
  78. package/{runAgentClientLoop-2YPEUG3Q.js → runAgentClientLoop-PDE63NNW.js} +21 -21
  79. package/{setDialogExtraReferencesAction-WNZINFOX.js → setDialogExtraReferencesAction-JZEXA5SL.js} +6 -6
  80. package/{setPrimaryDialogAgentAction-ECVV6DJ3.js → setPrimaryDialogAgentAction-4ZUQQKDG.js} +7 -7
  81. package/{settingSlice-UVDEFVMQ.js → settingSlice-7MNKHZ6R.js} +6 -6
  82. package/{spaceCommands-XPHOVJTB.js → spaceCommands-UG4QHSHD.js} +13 -13
  83. package/{spaceSlice-EGOJICFM.js → spaceSlice-DPX4F5V3.js} +11 -11
  84. package/{streamAgentChatTurn-LAFUD4KS.js → streamAgentChatTurn-LYN66RLC.js} +25 -25
  85. package/{tableCommands-3P7MJ3PF.js → tableCommands-BEQAGE4I.js} +1 -1
  86. package/{tools-O6DVCZ3R.js → tools-VAJZFXRP.js} +19 -19
  87. package/{updateDialogTitleAction-DVQFOG64.js → updateDialogTitleAction-LE7SCNSB.js} +11 -11
@@ -6,9 +6,8 @@ import {
6
6
  } from "./chunk-UB4RYYNQ.js";
7
7
  import {
8
8
  buildLocalAgentLookupKeys,
9
- normalizeAgentHandle,
10
9
  shouldReadAgentKeyRemotely
11
- } from "./chunk-Y3GNPBAB.js";
10
+ } from "./chunk-B26VDWID.js";
12
11
  import {
13
12
  LOCAL_CODEX_AGENT_ID,
14
13
  LOCAL_CODEX_AGENT_KEY,
@@ -17,11 +16,11 @@ import {
17
16
  } from "./chunk-VHBWHNVT.js";
18
17
  import {
19
18
  inferCaptureIntent
20
- } from "./chunk-XGJRT3IK.js";
19
+ } from "./chunk-MVQ4TBSD.js";
21
20
  import {
22
21
  inlineImageUrlsForCustomProvider,
23
22
  prepareTools
24
- } from "./chunk-MT2DOPXQ.js";
23
+ } from "./chunk-C75ONZYN.js";
25
24
  import {
26
25
  getAntigravityUserAgent,
27
26
  isAntigravityOAuthAgent,
@@ -42,7 +41,7 @@ import {
42
41
  readXhsProfileFunctionSchema,
43
42
  rememberMemoryFunctionSchema,
44
43
  resolveEffectiveEnabledPacks
45
- } from "./chunk-PH7SXF5R.js";
44
+ } from "./chunk-TKV34RQ6.js";
46
45
  import {
47
46
  createDrainExhaustedResponse,
48
47
  isCoreDrainingBody,
@@ -57,13 +56,13 @@ import {
57
56
  } from "./chunk-WJRJDX2W.js";
58
57
  import {
59
58
  prepareTokenUsageData
60
- } from "./chunk-HETVWFFQ.js";
59
+ } from "./chunk-37XKBS4O.js";
61
60
  import {
62
61
  BUILTIN_TITLE_LLM_CONFIG
63
62
  } from "./chunk-XOIF2TNF.js";
64
63
  import {
65
64
  fetchServerSyncedCredential
66
- } from "./chunk-3J6QER3H.js";
65
+ } from "./chunk-C5SQSDB7.js";
67
66
  import {
68
67
  buildAgentRuntimeDialogWritePlan,
69
68
  buildLocalWorkspaceOpenAiTools,
@@ -77,7 +76,7 @@ import {
77
76
  parseSseDataLineObject,
78
77
  readOpenAiCompatibleSseCompletion,
79
78
  resolveOpenAiCompatibleProviderConfig
80
- } from "./chunk-JJPANCH2.js";
79
+ } from "./chunk-YEFSRF54.js";
81
80
  import {
82
81
  buildPlatformChatCompletionRequest,
83
82
  canUsePlatformChatProvider,
@@ -92,7 +91,7 @@ import {
92
91
  } from "./chunk-OIQPORYI.js";
93
92
  import {
94
93
  summarizeToolArguments
95
- } from "./chunk-DXOUTEQC.js";
94
+ } from "./chunk-QCJITMYO.js";
96
95
  import {
97
96
  convertMessagesToResponsesInput,
98
97
  toResponsesTools
@@ -106,7 +105,7 @@ import {
106
105
  buildNoloWorkspaceOpenAiTools,
107
106
  parseNoloWorkspaceToolArguments,
108
107
  resolveRuntimeToolSurfaceForAgent
109
- } from "./chunk-XV5I4HHL.js";
108
+ } from "./chunk-DKZFOK24.js";
110
109
  import {
111
110
  clipCompactText
112
111
  } from "./chunk-5MMAK75Q.js";
@@ -188,7 +187,7 @@ import {
188
187
  PUBLIC_DEEPSEEK_V4_PRO_AGENT_KEY,
189
188
  PUBLIC_GLM_52_AGENT_KEY,
190
189
  PUBLIC_KIMI_K26_IMAGE_AGENT_KEY
191
- } from "./chunk-XPC5C7BK.js";
190
+ } from "./chunk-3ND52WIL.js";
192
191
  import {
193
192
  asTrimmedString
194
193
  } from "./chunk-3EUW3WEO.js";
@@ -1797,23 +1796,6 @@ async function readAgentFromStore(args) {
1797
1796
  if (!record || typeof record !== "object") continue;
1798
1797
  return resolveAgentRuntimeConfigFromRecord(key, record);
1799
1798
  }
1800
- const normalizedRef = normalizeAgentHandle(args.agentRef);
1801
- if (!normalizedRef) {
1802
- return resolveBuiltinPlatformAgentConfig(args.agentRef);
1803
- }
1804
- try {
1805
- const iterator = args.store.iterator({
1806
- gte: "agent-",
1807
- lte: "agent-\uFFFF"
1808
- });
1809
- for await (const [key, record] of iterator) {
1810
- if (!record || typeof record !== "object") continue;
1811
- const handle = normalizeAgentHandle(record.handle);
1812
- if (handle !== normalizedRef) continue;
1813
- return resolveAgentRuntimeConfigFromRecord(key, record);
1814
- }
1815
- } catch {
1816
- }
1817
1799
  return resolveBuiltinPlatformAgentConfig(args.agentRef);
1818
1800
  }
1819
1801
  async function readDialogMessages(args) {
@@ -6,7 +6,7 @@ import {
6
6
  clipMultilineText,
7
7
  fetchAndSerializeTable,
8
8
  waitForAbortableDelay
9
- } from "./chunk-PH7SXF5R.js";
9
+ } from "./chunk-TKV34RQ6.js";
10
10
  import {
11
11
  createDrainExhaustedResponse,
12
12
  isCoreDrainingBody,
@@ -16,22 +16,22 @@ 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
23
  import {
24
24
  fetchAndCacheMessages,
25
25
  shouldUseServerProxy
26
- } from "./chunk-HETVWFFQ.js";
26
+ } from "./chunk-37XKBS4O.js";
27
27
  import {
28
28
  fetchServerSyncedCredential
29
- } from "./chunk-3J6QER3H.js";
29
+ } from "./chunk-C5SQSDB7.js";
30
30
  import {
31
31
  buildSkillGuidancePromptBlock,
32
32
  extractRuntimePageCapabilities,
33
33
  resolveSkillGraphFromRoots
34
- } from "./chunk-YZ2PZFC6.js";
34
+ } from "./chunk-7BUYEZ6U.js";
35
35
  import {
36
36
  buildCurrentTimeBlock,
37
37
  buildIdentityBlock,
@@ -51,7 +51,7 @@ import {
51
51
  } from "./chunk-MUCU6ATG.js";
52
52
  import {
53
53
  estimateTokenCount
54
- } from "./chunk-EWLAMUG5.js";
54
+ } from "./chunk-EGPCU42M.js";
55
55
  import {
56
56
  createFileCredentialBroker
57
57
  } from "./chunk-5CS33IBL.js";
@@ -65,7 +65,7 @@ import {
65
65
  } from "./chunk-HNMXYYJR.js";
66
66
  import {
67
67
  createSpaceKey
68
- } from "./chunk-27MGYWLZ.js";
68
+ } from "./chunk-ELT65PZW.js";
69
69
  import {
70
70
  MEMORY_USE_GUIDANCE,
71
71
  wrapHistoricalSummaryWithReplayGuard
@@ -83,16 +83,16 @@ import {
83
83
  } from "./chunk-O6W2O2DA.js";
84
84
  import {
85
85
  read
86
- } from "./chunk-NLQBLZUO.js";
86
+ } from "./chunk-XRZJGPFI.js";
87
87
  import {
88
88
  asTrimmedLowercaseString
89
89
  } from "./chunk-QSJ3HFEF.js";
90
90
  import {
91
91
  getRuntimeServerContext
92
- } from "./chunk-DVRHHFEA.js";
92
+ } from "./chunk-XMLRJUU5.js";
93
93
  import {
94
94
  isAbortError
95
- } from "./chunk-OOSFSFMA.js";
95
+ } from "./chunk-R5V5G73M.js";
96
96
  import {
97
97
  asTrimmedString
98
98
  } from "./chunk-3EUW3WEO.js";
@@ -648,11 +648,21 @@ var AGENT_ORCHESTRATION_RUN_INSTRUCTIONS = `--- \u591A Agent \u7F16\u6392\uFF08\
648
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
649
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
650
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
651
- 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
652
- 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
653
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
654
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
655
- 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
656
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`;
657
667
  var AGENT_COLLABORATION_INSTRUCTIONS = `--- \u591A Agent \u534F\u4F5C\uFF08\u8BA1\u5212 \u2192 \u5E76\u53D1\u6D3E\u53D1 \u2192 \u5BA1\u67E5\uFF09 ---
658
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
@@ -660,9 +670,17 @@ var AGENT_COLLABORATION_INSTRUCTIONS = `--- \u591A Agent \u534F\u4F5C\uFF08\u8BA
660
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
661
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
662
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
663
- 2. \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
664
- 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\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
665
- \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**`;
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`;
666
684
  var MENU_USAGE_INSTRUCTIONS = `--- \u4EA4\u4E92\u8BF4\u660E ---
667
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
668
686
 
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  DEFAULT_AGENT_BASE_POLICY,
3
3
  DEFAULT_USER_PREFERENCE_PROFILE
4
- } from "./chunk-L2DKNKL4.js";
4
+ } from "./chunk-RVOUXDFU.js";
5
5
 
6
6
  // packages/ai/policy/runtimePolicy.ts
7
7
  var clampLevel = (value, fallback) => {
@@ -1,13 +1,13 @@
1
1
  import {
2
2
  readDbRecord,
3
3
  writeAgentRecord
4
- } from "./chunk-N77EBDJJ.js";
4
+ } from "./chunk-A7QNCVO5.js";
5
5
  import {
6
6
  buildSkillSummaryMarker
7
7
  } from "./chunk-VF4K2QE6.js";
8
8
  import {
9
9
  createSpaceKey
10
- } from "./chunk-27MGYWLZ.js";
10
+ } from "./chunk-ELT65PZW.js";
11
11
  import {
12
12
  parseUserIdFromAuthToken,
13
13
  readOption,
@@ -9,7 +9,7 @@ import {
9
9
  planCompression,
10
10
  planContextUsage,
11
11
  serializeMessageContent
12
- } from "./chunk-EWLAMUG5.js";
12
+ } from "./chunk-EGPCU42M.js";
13
13
  import {
14
14
  clipCompactText
15
15
  } from "./chunk-5MMAK75Q.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,7 +10,7 @@ import {
10
10
  toTimestampMs,
11
11
  upsert,
12
12
  write
13
- } from "./chunk-NLQBLZUO.js";
13
+ } from "./chunk-XRZJGPFI.js";
14
14
  import {
15
15
  createUserKey,
16
16
  createUserPreferenceKey,
@@ -21,7 +21,7 @@ import {
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";
@@ -19,7 +19,7 @@ import {
19
19
  readPageFunc,
20
20
  readPageFunctionSchema,
21
21
  slateToSimplifiedMarkdown
22
- } from "./chunk-6N4KODMN.js";
22
+ } from "./chunk-4T5F7YZQ.js";
23
23
  import {
24
24
  markdownToSlate
25
25
  } from "./chunk-3LY4F7SV.js";
@@ -28,10 +28,10 @@ import {
28
28
  } from "./chunk-VF4K2QE6.js";
29
29
  import {
30
30
  createDocState
31
- } from "./chunk-JQOWVDDX.js";
31
+ } from "./chunk-BUTE3AHD.js";
32
32
  import {
33
33
  setDialogExtraReferencesAction
34
- } from "./chunk-WVQXRCCZ.js";
34
+ } from "./chunk-JLA4FXYC.js";
35
35
  import {
36
36
  extractMentionsFromSlate
37
37
  } from "./chunk-VP4WJWKW.js";
@@ -40,7 +40,7 @@ import {
40
40
  } from "./chunk-63W5N6P3.js";
41
41
  import {
42
42
  createDialogAction
43
- } from "./chunk-LFTQYP3K.js";
43
+ } from "./chunk-4CQFPP2G.js";
44
44
  import {
45
45
  addCategory,
46
46
  addContentToSpace,
@@ -71,18 +71,18 @@ import {
71
71
  updateContentCategory,
72
72
  updateContentTitle,
73
73
  updateStep
74
- } from "./chunk-HETVWFFQ.js";
74
+ } from "./chunk-37XKBS4O.js";
75
75
  import {
76
76
  createAgent,
77
77
  runLlm,
78
78
  streamAgentChatTurn,
79
79
  updateAgent
80
- } from "./chunk-3J6QER3H.js";
80
+ } from "./chunk-C5SQSDB7.js";
81
81
  import {
82
82
  buildCodingSkillContentBySlug,
83
83
  buildCodingSkillPageKey,
84
84
  resolveCodingBuiltinSlug
85
- } from "./chunk-YZ2PZFC6.js";
85
+ } from "./chunk-7BUYEZ6U.js";
86
86
  import {
87
87
  buildSkillDocMarkdown,
88
88
  normalizeSkillBudgetTier,
@@ -105,10 +105,10 @@ import {
105
105
  redactAgentRecordForWorkspaceTool,
106
106
  resolveNoloDialogInput,
107
107
  verifyNoloDialogSubjectRefQuery
108
- } from "./chunk-XV5I4HHL.js";
108
+ } from "./chunk-DKZFOK24.js";
109
109
  import {
110
110
  buildDatabaseFileContentUrl
111
- } from "./chunk-EWLAMUG5.js";
111
+ } from "./chunk-EGPCU42M.js";
112
112
  import {
113
113
  DEFAULT_MODEL
114
114
  } from "./chunk-HQPG2PIV.js";
@@ -119,7 +119,7 @@ import {
119
119
  addContentAction,
120
120
  createSpaceKey,
121
121
  normalizeSpaceId
122
- } from "./chunk-27MGYWLZ.js";
122
+ } from "./chunk-ELT65PZW.js";
123
123
  import {
124
124
  canonicalizeToolName,
125
125
  canonicalizeToolNames
@@ -154,7 +154,7 @@ import {
154
154
  } from "./chunk-FKXFCYVO.js";
155
155
  import {
156
156
  shareResourceAction
157
- } from "./chunk-JKUL77KQ.js";
157
+ } from "./chunk-UGUW3FHG.js";
158
158
  import {
159
159
  AGENT_UPDATE_FIELD_NAMES,
160
160
  SYSTEM_AGENT_CAPABILITIES,
@@ -163,7 +163,7 @@ import {
163
163
  selectAutoApproveSelfUpdateFields,
164
164
  selectCurrentServer,
165
165
  selectSyncServers
166
- } from "./chunk-L2DKNKL4.js";
166
+ } from "./chunk-RVOUXDFU.js";
167
167
  import {
168
168
  asRecordOrEmpty
169
169
  } from "./chunk-KX6YBIHG.js";
@@ -175,7 +175,7 @@ import {
175
175
  selectById,
176
176
  toTimestampMs,
177
177
  write
178
- } from "./chunk-NLQBLZUO.js";
178
+ } from "./chunk-XRZJGPFI.js";
179
179
  import {
180
180
  SEPARATOR,
181
181
  createAgentKey,
@@ -200,7 +200,7 @@ import {
200
200
  } from "./chunk-QSJ3HFEF.js";
201
201
  import {
202
202
  readAction
203
- } from "./chunk-XPC5C7BK.js";
203
+ } from "./chunk-3ND52WIL.js";
204
204
  import {
205
205
  createAsyncThunk,
206
206
  getRuntimeServerContext,
@@ -208,10 +208,10 @@ import {
208
208
  selectIdentityToken,
209
209
  selectIdentityUserId,
210
210
  selectRuntimeSnapshot
211
- } from "./chunk-DVRHHFEA.js";
211
+ } from "./chunk-XMLRJUU5.js";
212
212
  import {
213
213
  isAbortError
214
- } from "./chunk-OOSFSFMA.js";
214
+ } from "./chunk-R5V5G73M.js";
215
215
  import {
216
216
  asTrimmedString
217
217
  } from "./chunk-3EUW3WEO.js";
@@ -13060,7 +13060,7 @@ async function loadSkillFunc(args, thunkApi) {
13060
13060
  const dbKey = userId ? buildCodingSkillPageKey(userId, builtinSlug) : builtinSlug;
13061
13061
  if (userId) {
13062
13062
  try {
13063
- const { ensureCodingSkills } = await import("./codingSkills-3RK4CIL2.js");
13063
+ const { ensureCodingSkills } = await import("./codingSkills-36KN5NQT.js");
13064
13064
  await ensureCodingSkills(userId)(thunkApi?.dispatch ?? (() => Promise.resolve()));
13065
13065
  } catch {
13066
13066
  }
@@ -14250,7 +14250,7 @@ async function deleteDialogsFunc(args, thunkApi) {
14250
14250
  const deletedDialogIds = [];
14251
14251
  const deletedDialogKeys = [];
14252
14252
  const failures = [];
14253
- const { deleteDialog } = await import("./dialogSlice-6SOMUMGM.js");
14253
+ const { deleteDialog } = await import("./dialogSlice-DMJVC2XX.js");
14254
14254
  for (const target of targets) {
14255
14255
  try {
14256
14256
  await thunkApi.dispatch(deleteDialog(target.dbKey)).unwrap();
@@ -14518,7 +14518,7 @@ var readSkillDocFunctionSchema = {
14518
14518
  }
14519
14519
  };
14520
14520
  async function readSkillDocFunc(args, thunkApi) {
14521
- const { buildReadDocResult } = await import("./readDocTool-WF3675ED.js");
14521
+ const { buildReadDocResult } = await import("./readDocTool-VSYHKK3V.js");
14522
14522
  const id = args?.id ?? args?.doc ?? args?.docKey ?? args?.pageKey;
14523
14523
  if (typeof id !== "string" || !id.trim()) {
14524
14524
  throw new Error("readSkillDoc requires id or doc.");
@@ -19968,7 +19968,7 @@ var selectUserIdFromState = (state) => typeof state?.auth?.currentUser?.userId =
19968
19968
  var selectCurrentServerFromState = (state) => typeof state?.settings?.currentServer === "string" ? state.settings.currentServer : null;
19969
19969
  async function addImageContentToSpace(input) {
19970
19970
  const injectedAddContentAction = input.thunkApi?.extra?.addContentAction;
19971
- const addContentAction2 = typeof injectedAddContentAction === "function" ? injectedAddContentAction : (await import("./addContentAction-IEEBATAA.js")).addContentAction;
19971
+ const addContentAction2 = typeof injectedAddContentAction === "function" ? injectedAddContentAction : (await import("./addContentAction-PL3KKBDH.js")).addContentAction;
19972
19972
  await addContentAction2(
19973
19973
  {
19974
19974
  spaceId: input.spaceId,
@@ -23514,7 +23514,7 @@ var executeToolRun = createAsyncThunk(
23514
23514
  if (!executionInput) {
23515
23515
  throw new Error(`ToolRun ${id} has no input to execute with.`);
23516
23516
  }
23517
- const { findToolExecutor: findToolExecutor2 } = await import("./tools-O6DVCZ3R.js");
23517
+ const { findToolExecutor: findToolExecutor2 } = await import("./tools-VAJZFXRP.js");
23518
23518
  const { executor } = findToolExecutor2(run.toolName);
23519
23519
  toolRunStarted({
23520
23520
  id: run.id,
@@ -23538,7 +23538,7 @@ var executeToolRun = createAsyncThunk(
23538
23538
  const latestState = thunkApi.getState();
23539
23539
  const userId = latestState.auth?.currentUser?.userId;
23540
23540
  if (userId) {
23541
- const { fetchUserSpaceMemberships } = await import("./spaceSlice-EGOJICFM.js");
23541
+ const { fetchUserSpaceMemberships } = await import("./spaceSlice-DPX4F5V3.js");
23542
23542
  await thunkApi.dispatch(fetchUserSpaceMemberships(userId));
23543
23543
  }
23544
23544
  }
@@ -26021,7 +26021,7 @@ async function updateDocFunc(args, thunkApi) {
26021
26021
  updated_at: (/* @__PURE__ */ new Date()).toISOString()
26022
26022
  };
26023
26023
  await dispatch(write({ data: updatedPageData, customKey: id })).unwrap();
26024
- const { getDocState, applyExternalDocUpdate } = await import("./docStore-K2SEQBBX.js");
26024
+ const { getDocState, applyExternalDocUpdate } = await import("./docStore-YAPW55HZ.js");
26025
26025
  if (getDocState().pageKey === id) {
26026
26026
  applyExternalDocUpdate({
26027
26027
  slateData: finalSlateData,
@@ -26046,7 +26046,7 @@ async function updateDocFunc(args, thunkApi) {
26046
26046
  // packages/ai/tools/updateUserPreferenceProfileTool.ts
26047
26047
  async function dispatchSetSettings(thunkApi, changes) {
26048
26048
  const injectedSetSettings = thunkApi?.extra?.setSettings;
26049
- const setSettings = typeof injectedSetSettings === "function" ? injectedSetSettings : (await import("./settingSlice-UVDEFVMQ.js")).setSettings;
26049
+ const setSettings = typeof injectedSetSettings === "function" ? injectedSetSettings : (await import("./settingSlice-7MNKHZ6R.js")).setSettings;
26050
26050
  await thunkApi.dispatch(setSettings(changes)).unwrap();
26051
26051
  }
26052
26052
  var updateUserPreferenceProfileFunctionSchema = {
@@ -5,10 +5,10 @@ import {
5
5
  inlineImageUrlsForCustomProvider,
6
6
  prepareTools,
7
7
  shouldInlineImageUrlsForAgent
8
- } from "./chunk-MT2DOPXQ.js";
8
+ } from "./chunk-C75ONZYN.js";
9
9
  import {
10
10
  performFetchRequest
11
- } from "./chunk-HRLDQJW7.js";
11
+ } from "./chunk-LRYORNMJ.js";
12
12
  import {
13
13
  createSSEParser,
14
14
  createToolRunId,
@@ -19,7 +19,7 @@ import {
19
19
  toolRunSetPending,
20
20
  toolRunStarted,
21
21
  toolRunSucceeded
22
- } from "./chunk-PH7SXF5R.js";
22
+ } from "./chunk-TKV34RQ6.js";
23
23
  import {
24
24
  getPublicImageAgentMode
25
25
  } from "./chunk-VIDPVFP3.js";
@@ -29,13 +29,13 @@ import {
29
29
  messageStreaming,
30
30
  selectCurrentSpaceId,
31
31
  updateToolMessage
32
- } from "./chunk-HETVWFFQ.js";
32
+ } from "./chunk-37XKBS4O.js";
33
33
  import {
34
34
  streamAgentChatTurn
35
- } from "./chunk-3J6QER3H.js";
35
+ } from "./chunk-C5SQSDB7.js";
36
36
  import {
37
37
  EMPTY_ASSISTANT_REPAIR_PROMPT
38
- } from "./chunk-DXOUTEQC.js";
38
+ } from "./chunk-QCJITMYO.js";
39
39
  import {
40
40
  accumulateToolCallDelta,
41
41
  createThinkParserState,
@@ -47,7 +47,7 @@ import {
47
47
  } from "./chunk-LSFAWXKC.js";
48
48
  import {
49
49
  getModelInfo
50
- } from "./chunk-EWLAMUG5.js";
50
+ } from "./chunk-EGPCU42M.js";
51
51
  import {
52
52
  getApiEndpoint
53
53
  } from "./chunk-HQPG2PIV.js";
@@ -64,10 +64,10 @@ import {
64
64
  } from "./chunk-3ASDTTEI.js";
65
65
  import {
66
66
  selectCurrentServer
67
- } from "./chunk-L2DKNKL4.js";
67
+ } from "./chunk-RVOUXDFU.js";
68
68
  import {
69
69
  write
70
- } from "./chunk-NLQBLZUO.js";
70
+ } from "./chunk-XRZJGPFI.js";
71
71
  import {
72
72
  createDialogMessageKeyAndId,
73
73
  dialogMessageKey,
@@ -76,10 +76,10 @@ import {
76
76
  import {
77
77
  createAsyncThunk,
78
78
  selectIdentityToken
79
- } from "./chunk-DVRHHFEA.js";
79
+ } from "./chunk-XMLRJUU5.js";
80
80
  import {
81
81
  isAbortError
82
- } from "./chunk-OOSFSFMA.js";
82
+ } from "./chunk-R5V5G73M.js";
83
83
  import {
84
84
  asTrimmedString
85
85
  } from "./chunk-3EUW3WEO.js";
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  selectCurrentServer,
3
3
  selectRemoteServers
4
- } from "./chunk-L2DKNKL4.js";
4
+ } from "./chunk-RVOUXDFU.js";
5
5
  import {
6
6
  createUserKey,
7
7
  extractAgentInfo,
@@ -16,10 +16,10 @@ import {
16
16
  noloWriteRequest,
17
17
  selectIdentityUser,
18
18
  selectIdentityUserId
19
- } from "./chunk-DVRHHFEA.js";
19
+ } from "./chunk-XMLRJUU5.js";
20
20
  import {
21
21
  normalizeTimeFields
22
- } from "./chunk-OOSFSFMA.js";
22
+ } from "./chunk-R5V5G73M.js";
23
23
 
24
24
  // packages/share/action.ts
25
25
  var generateToken = () => {