nolo-cli 0.212.0-alpha.1 → 0.213.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (124) hide show
  1. package/{_executeModel-KE6MBNUJ.js → _executeModel-CUJLCFWR.js} +35 -35
  2. package/{addContentAction-N2YC5IL3.js → addContentAction-WERAONNY.js} +5 -5
  3. package/{addDialogAgentAction-3NKVQCEC.js → addDialogAgentAction-7VI7YRML.js} +4 -4
  4. package/{agentDeleteCommand-NWK7VU4N.js → agentDeleteCommand-XJORXPGU.js} +42 -42
  5. package/{agentEmailCommands-UZ4DHEX2.js → agentEmailCommands-XTYYFR6Z.js} +43 -43
  6. package/{agentListCommands-HE7L2A6L.js → agentListCommands-OBLRBLHS.js} +60 -51
  7. package/{agentMachineCommands-6TE4MBMP.js → agentMachineCommands-5FMT3OT5.js} +13 -12
  8. package/{agentRecordCommands-L3QQ7HZ4.js → agentRecordCommands-ZQ7SVYGG.js} +42 -42
  9. package/{agentRunCommand-2IFGQHCO.js → agentRunCommand-WS7IGO2W.js} +43 -43
  10. package/{agentRunControl-OI3LOENH.js → agentRunControl-TAMHJQSR.js} +3 -3
  11. package/{agentRuntimeLocal-HL526DNQ.js → agentRuntimeLocal-SOO2OPJG.js} +10 -10
  12. package/{agentSlice-TMYP2UEA.js → agentSlice-CHR6KOZN.js} +5 -5
  13. package/{appDeleteCommands-ZERW4AXY.js → appDeleteCommands-GUP6P5YE.js} +15 -14
  14. package/{appDeployCommands-DUWSMYHL.js → appDeployCommands-MH2FX4O5.js} +15 -14
  15. package/{appDeployStatusCommands-N2KIE4BF.js → appDeployStatusCommands-SUHN3HPJ.js} +15 -14
  16. package/{appGetCommands-YVR4NPVY.js → appGetCommands-YWDEX6Z4.js} +15 -14
  17. package/{appListCommands-JS6HOHZS.js → appListCommands-ZQVMLPAY.js} +15 -14
  18. package/{authCommand-FE2C3ZUM.js → authCommand-PWX2ZNUP.js} +2 -2
  19. package/{builtinSkillRegistry-3YOIGEF6.js → builtinSkillRegistry-2QETTQPM.js} +2 -2
  20. package/{chromeOpsCommands-HEN5AX2J.js → chromeOpsCommands-DIVM2K3T.js} +1 -1
  21. package/{chunk-YUXQAVRD.js → chunk-3UKL3HPD.js} +251 -14
  22. package/{chunk-PDGKOTO7.js → chunk-4T2WNOY7.js} +4 -4
  23. package/{chunk-NOMIGOST.js → chunk-5MQRBSMW.js} +35 -41
  24. package/{chunk-5RYBGBQH.js → chunk-6DWMYIUY.js} +3 -3
  25. package/{chunk-KSTEXKL6.js → chunk-75XIDFBW.js} +4 -3
  26. package/{chunk-CZM5YTZ7.js → chunk-7BT37FK3.js} +193 -305
  27. package/{chunk-GPO7FCEZ.js → chunk-7QTZCMKL.js} +159 -106
  28. package/{chunk-NJR3WKVP.js → chunk-7Y4YTDQF.js} +6 -6
  29. package/{chunk-CKAHAVMK.js → chunk-A7TFUNZO.js} +35 -25
  30. package/{chunk-PJNFNEJE.js → chunk-ALQ3657A.js} +28 -2
  31. package/{chunk-YJMRHHGY.js → chunk-BBJ22CLB.js} +5 -5
  32. package/{chunk-AVTVGMDY.js → chunk-COFEN36Z.js} +1 -1
  33. package/{chunk-DM6UMOEL.js → chunk-CRHOO2ZR.js} +1 -1
  34. package/{chunk-EYUBHHFB.js → chunk-EHGEOAHI.js} +2 -2
  35. package/{chunk-Y2WUYX4I.js → chunk-EHSZD5OI.js} +1 -1
  36. package/{chunk-QT6PKHYJ.js → chunk-FUGMREBO.js} +2 -2
  37. package/{chunk-BFM34N54.js → chunk-FW6YHHLI.js} +4 -4
  38. package/{chunk-3FOQHGHN.js → chunk-G2BQWAVT.js} +2 -2
  39. package/{chunk-VPAZOH2D.js → chunk-GPVRUGGY.js} +1 -1
  40. package/{chunk-JNKSDZFS.js → chunk-H4UOTUOX.js} +162 -48
  41. package/{chunk-UTV2AYEG.js → chunk-H5HF7TJA.js} +1 -1
  42. package/{chunk-IJXYFTV7.js → chunk-H7PPIYWP.js} +1 -1
  43. package/{chunk-NRFKLKRU.js → chunk-HSVBJRF4.js} +1 -1
  44. package/{chunk-GNDJKC4B.js → chunk-HUBHAQK2.js} +8 -8
  45. package/{chunk-LKDF3ATR.js → chunk-INUFILG6.js} +1 -1
  46. package/{chunk-OHNELDTO.js → chunk-IXNGOHV5.js} +2 -2
  47. package/{chunk-WXYLV624.js → chunk-J2NHJ7WX.js} +4 -4
  48. package/{chunk-YPD3VJZW.js → chunk-KFLT5KAD.js} +4 -4
  49. package/{chunk-OOF4UPC5.js → chunk-LLRPJECG.js} +4 -4
  50. package/{chunk-B7NJ3T4A.js → chunk-MDB67IWP.js} +4 -4
  51. package/{chunk-IF45XG7K.js → chunk-MOIJOHA5.js} +9 -4
  52. package/{chunk-IIQ6JGRI.js → chunk-NJLL224W.js} +1 -1
  53. package/{chunk-YOIW77S2.js → chunk-NOKUNJON.js} +2 -2
  54. package/{chunk-HIRC32DV.js → chunk-NSAPDIN2.js} +8 -4
  55. package/{chunk-JIT6FSXJ.js → chunk-O2TZF4AI.js} +1 -1
  56. package/{chunk-4KH4J3G5.js → chunk-OQPKUBPB.js} +1 -1
  57. package/{chunk-OXME3PEE.js → chunk-PCLE46CE.js} +1 -1
  58. package/{chunk-CJRONOYL.js → chunk-QG4AOSON.js} +8 -45
  59. package/{chunk-6OQUPIQF.js → chunk-QHPRUL4O.js} +3 -3
  60. package/{chunk-MMNYUVLW.js → chunk-R5O4QAWG.js} +1 -1
  61. package/{chunk-IAPCBNEE.js → chunk-RLBNLZVC.js} +1 -1
  62. package/{chunk-FHU44LN3.js → chunk-RSHTSUEG.js} +246 -77
  63. package/{chunk-25JZEIXN.js → chunk-RZOV7OMV.js} +11 -11
  64. package/{chunk-D2MDMY2M.js → chunk-SVYO6AO7.js} +7 -1
  65. package/{chunk-INSBKSBB.js → chunk-TAKB25RM.js} +1 -1
  66. package/{chunk-RU4SD66C.js → chunk-TX5EYMGT.js} +5 -5
  67. package/{chunk-D5RCRX4A.js → chunk-UYD5HQ6T.js} +746 -177
  68. package/{chunk-JTDORD5P.js → chunk-V5Y3R6BT.js} +110 -2
  69. package/{chunk-3RQVYR4B.js → chunk-VNYYOX3V.js} +59 -20
  70. package/{chunk-3AKFVZ2I.js → chunk-VO4WSAVP.js} +3 -3
  71. package/{chunk-6NSSLV67.js → chunk-WMTBPBMP.js} +6 -6
  72. package/{chunk-EZFQ6XRV.js → chunk-WRYQ35LQ.js} +4 -4
  73. package/{chunk-SOHTHFV2.js → chunk-WYDI6TGM.js} +14 -14
  74. package/{chunk-M6RL5JCD.js → chunk-X7SDOJUM.js} +3 -3
  75. package/{chunk-CQ46IRNN.js → chunk-XHQC4PXX.js} +48 -34
  76. package/{chunk-2WZXXAQD.js → chunk-YB3YZK56.js} +67 -1
  77. package/{chunk-22CIEBYO.js → chunk-YJAFKXMU.js} +11 -11
  78. package/{chunk-GSQNH63I.js → chunk-YTF4WH7J.js} +3 -19
  79. package/{chunk-5AQR3DGV.js → chunk-ZNWI6OVT.js} +2 -2
  80. package/{chunk-VZKUKCA6.js → chunk-ZXOUUDCG.js} +49 -40
  81. package/{commandRegistry-VVMTPFAX.js → commandRegistry-W63CYRZJ.js} +64 -64
  82. package/{contentThunks-N52O67MI.js → contentThunks-U7PL5MQD.js} +12 -12
  83. package/{cooldownCommands-YXLWOXWR.js → cooldownCommands-TIGUHXTD.js} +3 -3
  84. package/{createAgentAutomationAction-ZC57YRSV.js → createAgentAutomationAction-OLBQDD6R.js} +12 -12
  85. package/{createDialogAction-VQW5WDYX.js → createDialogAction-SVH6B3SB.js} +14 -14
  86. package/{createPageAction-M5VDA7SC.js → createPageAction-F4DIWZ2Z.js} +14 -14
  87. package/{dbSlice-HP7G4LX3.js → dbSlice-BVH2YZPQ.js} +4 -4
  88. package/{deleteFile-7VQGLK2V.js → deleteFile-5YOEKV4U.js} +2 -2
  89. package/{dialogCommands-JHMR2N2Y.js → dialogCommands-KHIEPY3M.js} +18 -18
  90. package/{dialogSlice-GRSVGDTF.js → dialogSlice-ZCTDV2PZ.js} +11 -11
  91. package/{docCreateCommands-F2K3UPSQ.js → docCreateCommands-DPMZI7G5.js} +14 -13
  92. package/{docDeleteCommands-XGXB5RFT.js → docDeleteCommands-IRQQLUBT.js} +16 -16
  93. package/{docReadCommands-7HWZZV6J.js → docReadCommands-LK37XH6L.js} +14 -13
  94. package/{docStore-KNZK6Y2G.js → docStore-V2KECILA.js} +5 -5
  95. package/{docUpdateCommands-OZZ7NQII.js → docUpdateCommands-O6T3HJHH.js} +14 -13
  96. package/{fetchMessages-M3QU7ZCQ.js → fetchMessages-NR4KNQLO.js} +2 -2
  97. package/{handleSendMessageAction-SHIH74GJ.js → handleSendMessageAction-2PE25WM3.js} +25 -25
  98. package/{hostCredentialCreate-X64WK4JD.js → hostCredentialCreate-S233UMAP.js} +42 -42
  99. package/index.js +7 -7
  100. package/{localDialogRead-XRLAH4CZ.js → localDialogRead-7NNDVVF7.js} +1 -1
  101. package/{localRuntimeAdapter-A7K3ABA6.js → localRuntimeAdapter-KY6WXNBR.js} +41 -41
  102. package/{machineCommands-DE3MR7CJ.js → machineCommands-Q6HA3IXF.js} +42 -42
  103. package/{machineWsRunDispatch-R26P5V36.js → machineWsRunDispatch-WWJQ6WR3.js} +42 -42
  104. package/{memberThunks-7WJAY5V6.js → memberThunks-7EDJADWU.js} +5 -5
  105. package/package.json +1 -1
  106. package/{projectArchive-GGL5HLMD.js → projectArchive-DRTDIMEV.js} +14 -14
  107. package/{read-4VZQODSN.js → read-4V2RMG7N.js} +2 -2
  108. package/{readDocTool-AVD32RUJ.js → readDocTool-BH6ATGQO.js} +1 -1
  109. package/{readlineWorkspace-XKYKNL2I.js → readlineWorkspace-2W4WRCOU.js} +322 -159
  110. package/{removeDialogAgentAction-FKL4BYMR.js → removeDialogAgentAction-LYAZGNKW.js} +5 -5
  111. package/{runAgentClientLoop-V7E2WBVM.js → runAgentClientLoop-J2VQBS2Z.js} +33 -33
  112. package/{secretCommands-4QS3HCA2.js → secretCommands-LXDWOLZ6.js} +1 -1
  113. package/{setDialogExtraReferencesAction-TLIOLWWI.js → setDialogExtraReferencesAction-OCRPGPYH.js} +5 -5
  114. package/{setPrimaryDialogAgentAction-2OLWRFYR.js → setPrimaryDialogAgentAction-HFJDQIBU.js} +5 -5
  115. package/{settingThunks-UGBPCNYF.js → settingThunks-RAMHMTGM.js} +7 -7
  116. package/{spaceCommands-4KSLKVNF.js → spaceCommands-KVJZVKVO.js} +14 -14
  117. package/{streamAgentChatTurn-7FR7X2NU.js → streamAgentChatTurn-GHBMJJ6S.js} +37 -37
  118. package/{switchDialogAgentAction-UZSAG2N5.js → switchDialogAgentAction-EBRMW3RA.js} +4 -4
  119. package/{tools-ZLKCC25W.js → tools-EWKCPKMS.js} +28 -28
  120. package/{tuiSummaryLlmCaller-WC54MVGP.js → tuiSummaryLlmCaller-ALQYUUWB.js} +41 -12
  121. package/{updateCommands-4744PL3P.js → updateCommands-ZQYU6SCI.js} +3 -3
  122. package/{updateDialogTitleAction-U53ZT7PJ.js → updateDialogTitleAction-5GGMBTDF.js} +12 -12
  123. package/{windowsSelfUpdate-XSQVF2GK.js → windowsSelfUpdate-257DV2T6.js} +2 -2
  124. package/{workloadLifecycle-4BEQHMSD.js → workloadLifecycle-4C42SVBD.js} +1 -0
@@ -226,6 +226,15 @@ function formatStartRunCard(agentName, status = "running", opts) {
226
226
  }
227
227
  return lines.join("\n");
228
228
  }
229
+ function formatControlRunMessageCard(opts) {
230
+ const action = opts.labels?.[opts.action] ?? opts.action;
231
+ const target = opts.targetId ? `
232
+ ${opts.labels?.target ?? "target"} ${opts.targetId}` : "";
233
+ const message = opts.userInput.replace(/[\r\t]/g, " ").replace(/\u001b\[[0-?]*[ -/]*[@-~]|[\u0000-\u0008\u000b\u000c\u000e-\u001f\u007f-\u009f]/g, "");
234
+ return `${action}
235
+ ${opts.labels?.run ?? "run"} ${opts.runId}${target}
236
+ ${opts.labels?.message ?? "message"} ${message}`;
237
+ }
229
238
  var TASK_PREVIEW_MAX = 72;
230
239
  var NOTE_PREVIEW_MAX = 72;
231
240
  function formatProgressRow(toolCallCount, lastToolNames, labels = DEFAULT_LABELS) {
@@ -334,7 +343,7 @@ var AGENT_RUN_TERMINAL_STATUSES = /* @__PURE__ */ new Set([
334
343
  function isAgentRunTerminalStatus(status) {
335
344
  return typeof status === "string" && AGENT_RUN_TERMINAL_STATUSES.has(status);
336
345
  }
337
- function formatAgentListCard(agents, maxDisplay = 8) {
346
+ function formatAgentListCard(agents, maxDisplay = 8, now = /* @__PURE__ */ new Date(), includeKeys = true) {
338
347
  const total = agents.length;
339
348
  const lines = [`Agents (${total})`];
340
349
  const visible = agents.slice(0, maxDisplay);
@@ -345,13 +354,27 @@ function formatAgentListCard(agents, maxDisplay = 8) {
345
354
  const model = agent.model || "\u2014";
346
355
  const source = agent.apiSource || agent.provider || agent.cliProvider || "\u2014";
347
356
  const key = agent.agentKey || "(agentKey unavailable)";
348
- lines.push(`${star}${own} ${name} ${model} ${source} ${key}`);
357
+ lines.push(`${star}${own} ${name} ${model} ${source}${includeKeys ? ` ${key}` : ""}`);
358
+ if (agent.availabilityStatus === "rate_limited" || agent.availabilityStatus === "quota_exhausted") {
359
+ const until = typeof agent.nextAvailableAt === "number" ? formatLocalClockUntil(agent.nextAvailableAt, now) : void 0;
360
+ lines.push(
361
+ until ? ` \u989D\u5EA6\u53D7\u9650\u81F3 ${until}\uFF08\u53C2\u8003\u4FE1\u606F\uFF0C\u4E0D\u9650\u5236\u6D3E\u53D1\uFF09` : " \u989D\u5EA6\u53D7\u9650\uFF08\u6062\u590D\u65F6\u95F4\u672A\u77E5\uFF09\uFF08\u53C2\u8003\u4FE1\u606F\uFF0C\u4E0D\u9650\u5236\u6D3E\u53D1\uFF09"
362
+ );
363
+ }
349
364
  }
350
365
  if (total > maxDisplay) {
351
366
  lines.push(`\u2026 +${total - maxDisplay} more`);
352
367
  }
353
368
  return lines.join("\n");
354
369
  }
370
+ function formatLocalClockUntil(atMs, now) {
371
+ const at = new Date(atMs);
372
+ if (!Number.isFinite(at.getTime())) return void 0;
373
+ const pad = (value) => String(value).padStart(2, "0");
374
+ const time = `${pad(at.getHours())}:${pad(at.getMinutes())}`;
375
+ const sameDay = at.getFullYear() === now.getFullYear() && at.getMonth() === now.getMonth() && at.getDate() === now.getDate();
376
+ return sameDay ? time : `${pad(at.getMonth() + 1)}-${pad(at.getDate())} ${time}`;
377
+ }
355
378
 
356
379
  // packages/ai/tools/agent/runTitle.ts
357
380
  var RUN_TITLE_MAX = 60;
@@ -365,13 +388,16 @@ function normalizeRunTitle(value) {
365
388
  export {
366
389
  buildDelegatedTaskContent,
367
390
  calculateDelegatedPayloadMetrics,
391
+ getAgentRunStatusIcon,
368
392
  shortRunId,
369
393
  clipText,
370
394
  formatDuration,
371
395
  formatRunAge,
396
+ formatIdentityRow,
372
397
  isAgentNameFallback,
373
398
  resolveRunLabel,
374
399
  formatStartRunCard,
400
+ formatControlRunMessageCard,
375
401
  TASK_PREVIEW_MAX,
376
402
  formatStatusRunCard,
377
403
  formatFinishedRunCard,
@@ -3,13 +3,13 @@ import {
3
3
  } from "./chunk-HS7MLR74.js";
4
4
  import {
5
5
  performServerProxyFetchWithRetry
6
- } from "./chunk-RU4SD66C.js";
6
+ } from "./chunk-TX5EYMGT.js";
7
7
  import {
8
8
  fetchServerSyncedCredential
9
- } from "./chunk-YPD3VJZW.js";
9
+ } from "./chunk-KFLT5KAD.js";
10
10
  import {
11
11
  buildSkillGuidancePromptBlock
12
- } from "./chunk-EZFQ6XRV.js";
12
+ } from "./chunk-WRYQ35LQ.js";
13
13
  import {
14
14
  CREDENTIAL_HYGIENE_RULE,
15
15
  DELETE_SAFETY_RED_LINE,
@@ -25,7 +25,7 @@ import {
25
25
  compileContextLayers,
26
26
  detectDispatchIntentFromMessages,
27
27
  resolveToolGuidedSections
28
- } from "./chunk-NOMIGOST.js";
28
+ } from "./chunk-5MQRBSMW.js";
29
29
  import {
30
30
  convertMessagesToResponsesInput,
31
31
  getUsageRequestOptions,
@@ -34,7 +34,7 @@ import {
34
34
  resolveReasoningReplayOptions,
35
35
  shouldStripReasoningContentForOutbound,
36
36
  stablePromptCacheKey
37
- } from "./chunk-UTV2AYEG.js";
37
+ } from "./chunk-H5HF7TJA.js";
38
38
  import {
39
39
  resolveAgentCallPlan,
40
40
  resolveClientWire
@@ -10,7 +10,7 @@ import {
10
10
  } from "./chunk-PXYBUFDB.js";
11
11
  import {
12
12
  buildTombstoneRecord
13
- } from "./chunk-D2MDMY2M.js";
13
+ } from "./chunk-SVYO6AO7.js";
14
14
 
15
15
  // packages/database/fileStorage.ts
16
16
  var DB_NAME = "nolo-file-storage";
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  readDbRecord,
3
3
  writeAgentRecord
4
- } from "./chunk-IF45XG7K.js";
4
+ } from "./chunk-MOIJOHA5.js";
5
5
  import {
6
6
  buildSkillSummaryMarker
7
7
  } from "./chunk-VF4K2QE6.js";
@@ -59,8 +59,8 @@ var CODE_WORK_DISCIPLINE_BODY = `## \u6548\u7387\u4F18\u5148\uFF08\u7701 token\u
59
59
  - **\u5EFA\u8BAE\u6C47\u62A5**\uFF1A\u4EA4\u4ED8\u65F6\u628A\u8FC7\u7A0B\u4E2D\u53D1\u73B0\u7684**\u4EFB\u4F55\u503C\u5F97\u7528\u6237\u77E5\u9053\u7684\u4E8B**\u90FD\u5217\u51FA\u6765\uFF08\u9884\u5B58\u65E0\u5173\u6539\u52A8\u3001\u65E2\u6709\u6D4B\u8BD5\u9694\u79BB\u95EE\u9898\u3001\u6F5C\u5728\u98CE\u9669\u3001\u540E\u7EED\u53EF\u4F18\u5316\u70B9\u3001\u9700\u7528\u6237\u51B3\u7B56\u7684\u4E8B\u9879\uFF09\uFF0C\u4E0D\u8981\u53EA\u62A5\u300C\u505A\u5B8C\u4E86\u300D\u3002
60
60
 
61
61
  ## Review \u7EAA\u5F8B\uFF08commit \u524D\u786C\u95E8\uFF09
62
- - **\u9636\u6BB5\u5212\u5206**\uFF1A\u4E25\u683C\u533A\u5206\u300C\u5B9E\u73B0/\u6784\u5EFA/\u5B89\u88C5/\u7528\u6237\u6D4B\u8BD5/\u6839\u636E\u53CD\u9988\u8FED\u4EE3\u300D\u4E0E\u300C\u51C6\u5907\u63D0\u4EA4/\u5408\u5E76\u300D\u9636\u6BB5\u3002UI/\u524D\u7AEF\u53CA\u5176\u4ED6\u9700\u7528\u6237\u9A8C\u6536\u7684\u4EFB\u52A1\uFF0C\u5728\u5B9E\u73B0\u9636\u6BB5\u4E0D\u5F97\u89E6\u53D1\u6216\u7B49\u5F85\u6700\u7EC8\u72EC\u7ACB review\uFF0C\u5E94\u5148\u4EA4\u4ED8\u53EF\u6D4B\u8BD5\u4EA7\u7269\u7B49\u5F85\u7528\u6237\u53CD\u9988\u3002
63
- - \u6700\u7EC8 review \u4EC5\u5728\u7528\u6237\u660E\u786E\u786E\u8BA4\u51C6\u5907\u63D0\u4EA4/\u5408\u5E76\u65F6\u8FDB\u884C\uFF08\u9664\u975E\u8C03\u7528\u65B9\u660E\u786E\u8BF4\u300C\u53EA\u6539\u4E0D\u5BA1\u300D\u6216\u7528\u6237\u660E\u786E\u8DF3\u8FC7\uFF09\u3002\u9664 \u22642 \u6B65\u96F6\u903B\u8F91\u98CE\u9669\u7684\u673A\u68B0\u6539\u52A8\uFF08\u9519\u522B\u5B57/\u683C\u5F0F/CSS \u5FAE\u8C03\uFF09\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 \u5DE5\u4F5C\u533A diff\uFF08\`git diff\`\uFF0C\u672A\u63D0\u4EA4\u7684\u6539\u52A8\uFF09\u3002reviewer \u4E0D\u53EF\u662F\u672C\u6B21\u6539\u52A8\u7684\u4F5C\u8005\uFF08\u7F16\u6392\u8005\u4EE5\u81EA\u8EAB agent \u8EAB\u4EFD\u6D3E\u51FA\u7684\u5168\u65B0\u5B9E\u4F8B\u4E0D\u5171\u4EAB\u7F16\u6392\u8005\u4E0A\u4E0B\u6587\uFF0C\u4E0E\u4F5C\u8005\u8DE8\u6A21\u578B\u5BB6\u65CF\u65F6\u4E0D\u7B97\u300C\u81EA\u5DF1\u300D\uFF0C\u8DE8\u5BB6\u65CF\u4F18\u5148\u975E\u5F3A\u5236\uFF09\u3002\u65E0 review \u4E0D commit\u2014\u2014\u8FD9\u662F\u786C\u95E8\uFF0C\u4E0D\u662F\u5EFA\u8BAE\u3002
62
+ - **\u9636\u6BB5\u5212\u5206**\uFF1A\u9ED8\u8BA4\u4E25\u683C\u533A\u5206\u300C\u5B9E\u73B0/\u6784\u5EFA/\u5B89\u88C5/\u7528\u6237\u6D4B\u8BD5/\u6839\u636E\u53CD\u9988\u8FED\u4EE3\u300D\u4E0E\u300C\u51C6\u5907\u63D0\u4EA4/\u5408\u5E76\u300D\u9636\u6BB5\u3002\u82E5\u7528\u6237\u5DF2\u663E\u5F0F\u542F\u7528\u4E14\u5F53\u524D\u4EFB\u52A1\u5728 auto-review \u4F5C\u7528\u57DF\u5185\uFF0Creview\u3001\u4FEE\u590D\u3001\u63D0\u4EA4\u4E0E\u672C\u5730\u96C6\u6210\u6301\u7EED\u6388\u6743\uFF0C\u4E0D\u91CD\u590D\u8BE2\u95EE\uFF1B\u672A\u542F\u7528\u4E0D\u5F97\u81EA\u52A8\u6388\u6743\uFF0Cstop/\u6682\u505C/\u5355\u6B21\u8986\u76D6\u7ACB\u5373\u751F\u6548\u3002UI/\u524D\u7AEF\u53CA\u5176\u4ED6\u9700\u7528\u6237\u9A8C\u6536\u7684\u4EFB\u52A1\uFF0C\u5148\u4EA4\u4ED8\u53EF\u6D4B\u8BD5\u4EA7\u7269\u5E76\u7B49\u5F85\u7528\u6237\u9A8C\u6536\uFF1B\u9A8C\u6536\u901A\u8FC7\u4E14 auto-review \u6388\u6743\u4ECD\u9002\u7528\u65F6\u76F4\u63A5\u8FDB\u5165\u6700\u7EC8 review\uFF1B\u5426\u5219\u987B\u7528\u6237\u786E\u8BA4\u51C6\u5907\u63D0\u4EA4\u3002push\u3001main/production \u5408\u5E76\u3001\u53D1\u5E03\u4E0E\u56DE\u6EDA\u4ECD\u72EC\u7ACB\u6388\u6743\u3002
63
+ - \u6700\u7EC8 review \u9ED8\u8BA4\u4EC5\u5728\u7528\u6237\u660E\u786E\u786E\u8BA4\u51C6\u5907\u63D0\u4EA4/\u5408\u5E76\u65F6\u8FDB\u884C\uFF1Bauto-review \u4F5C\u7528\u57DF\u5185\u4F9D\u6301\u7EED\u6388\u6743\u6267\u884C\u3002\u9664 \u22642 \u6B65\u96F6\u903B\u8F91\u98CE\u9669\u7684\u673A\u68B0\u6539\u52A8\uFF08\u9519\u522B\u5B57/\u683C\u5F0F/CSS \u5FAE\u8C03\uFF09\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 \u5DE5\u4F5C\u533A diff\uFF08\`git diff\`\uFF0C\u672A\u63D0\u4EA4\u7684\u6539\u52A8\uFF09\u3002reviewer \u4E0D\u53EF\u662F\u672C\u6B21\u6539\u52A8\u7684\u4F5C\u8005\uFF08\u7F16\u6392\u8005\u4EE5\u81EA\u8EAB agent \u8EAB\u4EFD\u6D3E\u51FA\u7684\u5168\u65B0\u5B9E\u4F8B\u4E0D\u5171\u4EAB\u7F16\u6392\u8005\u4E0A\u4E0B\u6587\uFF0C\u4E0E\u4F5C\u8005\u8DE8\u6A21\u578B\u5BB6\u65CF\u65F6\u4E0D\u7B97\u300C\u81EA\u5DF1\u300D\uFF0C\u8DE8\u5BB6\u65CF\u4F18\u5148\u975E\u5F3A\u5236\uFF09\u3002\u65E0 review \u4E0D commit\u2014\u2014\u8FD9\u662F\u786C\u95E8\uFF0C\u4E0D\u662F\u5EFA\u8BAE\u3002
64
64
  - \u6D3E\u53D1\u8D70 \`startAgentRun(agentKey, task)\`\uFF08web/\u684C\u9762\u7AEF\u6CA1\u6709 nolo CLI\uFF0C\u6240\u6709 host \u90FD\u6709\u8FD9\u4E2A\u5DE5\u5177\uFF09\u3002
65
65
  - task \u91CC\u5FC5\u987B\u5199\u660E\u5BA1\u67E5\u5BF9\u8C61\uFF08\`git diff\` \u770B\u5DE5\u4F5C\u533A\u6539\u52A8\uFF0C\u6216 \`git diff alpha...HEAD\` \u770B\u5DF2\u63D0\u4EA4\u6539\u52A8\uFF09\uFF0C\u5426\u5219 reviewer \u4E0D\u77E5\u9053\u5BA1\u4EC0\u4E48\u3002
66
66
  - \u6309\u89D2\u8272\u52A0\u8F7D\u5BF9\u5E94 skill\uFF1Areviewer \u5148 \`loadSkill("coding-review")\` \u62FF\u901A\u7528\u6D41\u7A0B\uFF0C\u518D\u6309\u89D2\u8272 \`loadSkill("coding-review-<role>")\` \u62FF\u68C0\u67E5\u9879\u3002\u89D2\u8272\u6E05\u5355\uFF1Acode-quality\uFF08**\u5FC5\u8DD1**\uFF09/ architecture\uFF08**\u5355\u72EC\u6D3E\u53D1**\uFF0C\u4E2D\u7EA7\u4EE5\u4E0A\u95EE\u9898\uFF09/ security\uFF08\u6309\u9700 + \u5B89\u5168\u654F\u611F\u89E6\u53D1\u5FC5\u8DD1\uFF09/ frontend-ux\uFF08\u6D89\u53CA UI \u65F6\uFF09/ backend-data\uFF08\u6D89\u53CA server \u65F6\uFF09\u3002\u89D2\u8272\u5207\u5272\u7684\u76EE\u7684\u662F\u6CE8\u610F\u529B\u9694\u79BB\u2014\u2014\u6BCF\u4E2A\u89D2\u8272\u53EA\u76EF\u81EA\u5DF1\u7684\u68C0\u67E5\u9762\uFF0C\u6309\u9700\u542F\u7528\uFF0C\u907F\u514D\u4E00\u4E2A reviewer \u80CC\u6240\u6709\u89D2\u8272\u5BFC\u81F4\u6CE8\u610F\u529B\u7A00\u91CA\u3002
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  isTombstoneRecord
3
- } from "./chunk-D2MDMY2M.js";
3
+ } from "./chunk-SVYO6AO7.js";
4
4
  import {
5
5
  isRecord
6
6
  } from "./chunk-KUG52IAP.js";
@@ -1,12 +1,12 @@
1
1
  import {
2
2
  requireTokenUser
3
- } from "./chunk-DM6UMOEL.js";
3
+ } from "./chunk-CRHOO2ZR.js";
4
4
  import {
5
5
  resolveServerUrl
6
6
  } from "./chunk-WACI5I6V.js";
7
7
  import {
8
8
  t
9
- } from "./chunk-3RQVYR4B.js";
9
+ } from "./chunk-VNYYOX3V.js";
10
10
 
11
11
  // packages/cli/cliApiClient.ts
12
12
  var CliApiError = class extends Error {
@@ -6,12 +6,12 @@ import {
6
6
  loadFileFromIndexedDb,
7
7
  removeAction,
8
8
  saveFileToIndexedDb
9
- } from "./chunk-AVTVGMDY.js";
9
+ } from "./chunk-COFEN36Z.js";
10
10
  import {
11
11
  readAction,
12
12
  readRequestManager,
13
13
  resolveAgentReadServers
14
- } from "./chunk-JIT6FSXJ.js";
14
+ } from "./chunk-O2TZF4AI.js";
15
15
  import {
16
16
  beginWriteAck,
17
17
  compareRemoteRecordsByComparableTime,
@@ -43,7 +43,7 @@ import {
43
43
  } from "./chunk-AGP3YSEC.js";
44
44
  import {
45
45
  isTombstoneRecord
46
- } from "./chunk-D2MDMY2M.js";
46
+ } from "./chunk-SVYO6AO7.js";
47
47
  import {
48
48
  isRecord
49
49
  } from "./chunk-KUG52IAP.js";
@@ -708,7 +708,7 @@ var dbSlice = createSliceWithThunks({
708
708
  // 动态 import 在调用期解析,避开 TDZ/求值顺序问题(同下方 share)。
709
709
  read: create.asyncThunk(
710
710
  async (payload, thunkApi) => {
711
- const { readAction: readAction2 } = await import("./read-4VZQODSN.js");
711
+ const { readAction: readAction2 } = await import("./read-4V2RMG7N.js");
712
712
  return readAction2(payload, thunkApi);
713
713
  },
714
714
  {
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  toolRegistry
3
- } from "./chunk-CQ46IRNN.js";
3
+ } from "./chunk-XHQC4PXX.js";
4
4
  import {
5
5
  runtime_default
6
- } from "./chunk-VZKUKCA6.js";
6
+ } from "./chunk-ZXOUUDCG.js";
7
7
  import {
8
8
  canonicalizeToolNames
9
9
  } from "./chunk-ZCWRMUWT.js";
@@ -4,7 +4,7 @@ import {
4
4
  import {
5
5
  patch,
6
6
  read
7
- } from "./chunk-BFM34N54.js";
7
+ } from "./chunk-FW6YHHLI.js";
8
8
  import {
9
9
  DEVICE_LOCAL_OWNER_ID,
10
10
  isDeviceLocalSpaceBody