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
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  getModelContextWindow
3
- } from "./chunk-CZM5YTZ7.js";
3
+ } from "./chunk-7BT37FK3.js";
4
4
  import {
5
5
  normalizeTimingMs
6
6
  } from "./chunk-H57T64RA.js";
@@ -33,6 +33,105 @@ import {
33
33
  asOptionalTrimmedString
34
34
  } from "./chunk-G3SUCT4W.js";
35
35
 
36
+ // packages/agent-runtime/codexOAuthPure.ts
37
+ function isCodexOAuthAgent(agent) {
38
+ if (!agent) return false;
39
+ const ref = agent.apiKeyRef?.trim().toLowerCase();
40
+ return ref === "chatgpt";
41
+ }
42
+
43
+ // packages/agent-runtime/codexOAuthModelAliases.ts
44
+ var CODEX_OAUTH_MODEL_ALIASES = {
45
+ // sol 家族最新:gpt-6.1-sol
46
+ "gpt-6-sol": {
47
+ aliasOf: "gpt-6.1-sol",
48
+ since: "2026-11-01",
49
+ reason: "\u540C\u5BB6\u65CF\u6362\u4EE3\uFF0Cowner \u51B3\u5B9A\u900F\u660E\u91CD\u5B9A\u5411\uFF08sol \u5BB6\u65CF\u6700\u65B0\u4E3A gpt-6.1-sol\uFF09\u3002"
50
+ },
51
+ "gpt-5.6-sol": {
52
+ aliasOf: "gpt-6.1-sol",
53
+ since: "2026-11-01",
54
+ reason: "\u540C\u5BB6\u65CF\u6362\u4EE3\uFF0Cowner \u51B3\u5B9A\u900F\u660E\u91CD\u5B9A\u5411\uFF08sol \u5BB6\u65CF\u6700\u65B0\u4E3A gpt-6.1-sol\uFF09\u3002"
55
+ },
56
+ // terra 家族最新:gpt-6.1-terra
57
+ "gpt-5.6-terra": {
58
+ aliasOf: "gpt-6.1-terra",
59
+ since: "2026-11-01",
60
+ reason: "\u540C\u5BB6\u65CF\u6362\u4EE3\uFF0Cowner \u51B3\u5B9A\u900F\u660E\u91CD\u5B9A\u5411\uFF08terra \u5BB6\u65CF\u6700\u65B0\u4E3A gpt-6.1-terra\uFF09\u3002"
61
+ },
62
+ // luna 家族最新:gpt-6-luna(上游无 6.1-luna,luna 家族最新即为 gpt-6-luna)
63
+ "gpt-5.6-luna": {
64
+ aliasOf: "gpt-6-luna",
65
+ since: "2026-11-01",
66
+ reason: "\u540C\u5BB6\u65CF\u6362\u4EE3\uFF0Cowner \u51B3\u5B9A\u900F\u660E\u91CD\u5B9A\u5411\uFF08luna \u5BB6\u65CF\u6700\u65B0\u4E3A gpt-6-luna\uFF09\u3002"
67
+ }
68
+ };
69
+ function resolveCodexOAuthEffectiveModel(model) {
70
+ const raw = asOptionalTrimmedString(model);
71
+ if (!raw) return void 0;
72
+ const normalized = raw.toLowerCase();
73
+ return CODEX_OAUTH_MODEL_ALIASES[normalized]?.aliasOf ?? raw;
74
+ }
75
+
76
+ // packages/agent-runtime/codexOAuthModelCatalogWindow.ts
77
+ var CODEX_OAUTH_CATALOG_DEFAULT_ACCOUNT_KEY = "__default__";
78
+ var CODEX_OAUTH_CATALOG_TTL_MS = 60 * 60 * 1e3;
79
+ var CODEX_OAUTH_CATALOG_RETRY_FLOOR_MS = 5 * 60 * 1e3;
80
+ var catalogBuckets = /* @__PURE__ */ new Map();
81
+ var isUsableContextWindow = (value) => typeof value === "number" && Number.isInteger(value) && value > 0;
82
+ var codexOAuthCatalogAccountKey = (accountId) => {
83
+ const trimmed = accountId?.trim();
84
+ return trimmed ? trimmed : CODEX_OAUTH_CATALOG_DEFAULT_ACCOUNT_KEY;
85
+ };
86
+ var codexOAuthCatalogSnapshot = (accountId) => {
87
+ const bucket = catalogBuckets.get(codexOAuthCatalogAccountKey(accountId));
88
+ return {
89
+ modelCount: bucket?.windows.size ?? 0,
90
+ fetchedAt: bucket?.fetchedAt ?? null,
91
+ lastFailureAt: bucket?.lastFailureAt ?? null
92
+ };
93
+ };
94
+ function commitCodexOAuthCatalogWindows(args) {
95
+ const windows = /* @__PURE__ */ new Map();
96
+ for (const [slug, contextWindow] of Object.entries(args.models)) {
97
+ const normalizedSlug = slug.trim().toLowerCase();
98
+ if (!normalizedSlug) continue;
99
+ if (!isUsableContextWindow(contextWindow)) continue;
100
+ windows.set(normalizedSlug, contextWindow);
101
+ }
102
+ const key = codexOAuthCatalogAccountKey(args.accountId);
103
+ catalogBuckets.set(key, {
104
+ windows,
105
+ fetchedAt: args.now,
106
+ lastFailureAt: null
107
+ });
108
+ }
109
+ function markCodexOAuthCatalogFailure(args) {
110
+ const key = codexOAuthCatalogAccountKey(args.accountId);
111
+ const existing = catalogBuckets.get(key);
112
+ catalogBuckets.set(key, {
113
+ windows: existing?.windows ?? /* @__PURE__ */ new Map(),
114
+ fetchedAt: existing?.fetchedAt ?? null,
115
+ lastFailureAt: args.now
116
+ });
117
+ }
118
+ var codexOAuthCatalogWindow = (model, options) => {
119
+ const effectiveModel = resolveCodexOAuthEffectiveModel(model);
120
+ if (!effectiveModel) return void 0;
121
+ const slug = effectiveModel.toLowerCase();
122
+ const now = options?.now ?? Date.now();
123
+ const ttlMs = options?.ttlMs ?? CODEX_OAUTH_CATALOG_TTL_MS;
124
+ let hit;
125
+ for (const [accountKey, bucket] of catalogBuckets) {
126
+ if (bucket.fetchedAt === null || now - bucket.fetchedAt >= ttlMs) continue;
127
+ const contextWindow = bucket.windows.get(slug);
128
+ if (!isUsableContextWindow(contextWindow)) continue;
129
+ if (hit && hit.accountKey !== accountKey) return void 0;
130
+ hit = { accountKey, contextWindow };
131
+ }
132
+ return hit?.contextWindow;
133
+ };
134
+
36
135
  // packages/agent-runtime/devin/devinChannelWindows.ts
37
136
  var DEVIN_CHANNEL_CONTEXT_WINDOWS = {
38
137
  // SWE-2 家族(catalog 无裸 swe-2 selector;旧点号/裸写法如 swe-2、
@@ -58,7 +157,7 @@ var devinChannelContextWindow = (model) => {
58
157
  if (!raw) return void 0;
59
158
  return DEVIN_CHANNEL_CONTEXT_WINDOWS[raw];
60
159
  };
61
- var resolveAgentContextWindow = (agent) => (isDevinOAuthAgent(agent) ? devinChannelContextWindow(agent.model) : void 0) ?? // provider 透传给全局解析:平台托管通道(CF)与 Codex OAuth 等通道对同一 id
160
+ var resolveAgentContextWindow = (agent) => (isDevinOAuthAgent(agent) ? devinChannelContextWindow(agent.model) : void 0) ?? (isCodexOAuthAgent(agent) ? codexOAuthCatalogWindow(agent.model) : void 0) ?? // provider 透传给全局解析:平台托管通道(CF)与 Codex OAuth 等通道对同一 id
62
161
  // 窗口不同,按通道取真值,不做全局取大/取小。
63
162
  getModelContextWindow(agent.model ?? "", agent.provider);
64
163
 
@@ -397,6 +496,15 @@ export {
397
496
  readCacheReadInputTokens,
398
497
  readCacheReadInputTokensOrNull,
399
498
  readCacheCreationInputTokens,
499
+ isCodexOAuthAgent,
500
+ resolveCodexOAuthEffectiveModel,
501
+ CODEX_OAUTH_CATALOG_TTL_MS,
502
+ CODEX_OAUTH_CATALOG_RETRY_FLOOR_MS,
503
+ codexOAuthCatalogAccountKey,
504
+ codexOAuthCatalogSnapshot,
505
+ commitCodexOAuthCatalogWindows,
506
+ markCodexOAuthCatalogFailure,
507
+ codexOAuthCatalogWindow,
400
508
  devinChannelContextWindow,
401
509
  resolveAgentContextWindow,
402
510
  normalizeUsage,
@@ -241,7 +241,7 @@ var sessionStrings = {
241
241
  " /skill detach <ref> Detach a skill",
242
242
  " /skill clear Detach all skills",
243
243
  " /customize Describe how you want to tune nolo",
244
- " /tasks List background process tasks (aliases: /jobs, /procs)",
244
+ " /tasks List child agent runs and background processes",
245
245
  " /stop <pid|all> Stop background process tasks",
246
246
  " /login Show login/profile hint (/login --server <url> to log in here)",
247
247
  " /auth Show provider OAuth status (/auth <provider> to authorize, /auth logout <provider> to remove)",
@@ -288,7 +288,7 @@ var sessionStrings = {
288
288
  " /skill detach <ref> \u5378\u8F7D\u6307\u5B9A\u6280\u80FD",
289
289
  " /skill clear \u5378\u8F7D\u5168\u90E8\u6280\u80FD",
290
290
  " /customize \u63CF\u8FF0\u4F60\u60F3\u600E\u4E48\u8C03\u6559 nolo",
291
- " /tasks \u5217\u51FA\u540E\u53F0\u5B50\u8FDB\u7A0B\u4EFB\u52A1\uFF08\u522B\u540D\uFF1A/jobs, /procs\uFF09",
291
+ " /tasks \u5217\u51FA\u5B50 agent \u8FD0\u884C\u548C\u540E\u53F0\u8FDB\u7A0B",
292
292
  " /stop <pid|all> \u505C\u6B62\u6307\u5B9A\u7684\u540E\u53F0\u4EFB\u52A1",
293
293
  " /login \u67E5\u770B\u767B\u5F55 / \u914D\u7F6E\u63D0\u793A\uFF08/login --server <url> \u53EF\u5728\u672C\u4F1A\u8BDD\u5185\u767B\u5F55\uFF09",
294
294
  " /auth \u67E5\u770B\u6A21\u578B provider \u6388\u6743\u72B6\u6001\uFF08/auth <provider> \u5F00\u59CB\u6388\u6743\uFF0C/auth logout <provider> \u6CE8\u9500\uFF09",
@@ -464,11 +464,6 @@ var agentStrings = {
464
464
  en: "\u26A0 {0} favorite(s) unavailable right now",
465
465
  zh: "\u26A0 {0} \u4E2A\u6536\u85CF\u9879\u6682\u65F6\u4E0D\u53EF\u7528"
466
466
  },
467
- // 派发前的本地冷却拦截(原两行英文 → 本地化单行压缩)。
468
- agentCooldownBlocked: {
469
- en: "[nolo] Agent {0} is in 429 cooldown until {1}. This dispatch was not sent \u2014 pick another agent, or retry after the cooldown.",
470
- zh: "[nolo] Agent {0} \u51B7\u5374\u4E2D\uFF0C\u81F3 {1}\u3002\u672C\u6B21\u6D3E\u53D1\u672A\u53D1\u51FA\u2014\u2014\u6362\u4E00\u4E2A agent\uFF0C\u6216\u5230\u70B9\u540E\u91CD\u8BD5\u3002"
471
- },
472
467
  // --- Agent-run orchestration cards (injected into packages/ai helpers) ---
473
468
  runStatusLabel: {
474
469
  en: "Run status",
@@ -478,6 +473,9 @@ var agentStrings = {
478
473
  en: "Run started",
479
474
  zh: "\u8FD0\u884C\u5DF2\u542F\u52A8"
480
475
  },
476
+ agentStartingLabel: { en: "Starting agent", zh: "\u6B63\u5728\u542F\u52A8\u667A\u80FD\u4F53" },
477
+ agentStartedLabel: { en: "Agent started", zh: "\u667A\u80FD\u4F53\u5DF2\u542F\u52A8" },
478
+ agentStartFailedLabel: { en: "Agent start failed", zh: "\u667A\u80FD\u4F53\u542F\u52A8\u5931\u8D25" },
481
479
  runStoppedLabel: {
482
480
  en: "Run stopped",
483
481
  zh: "\u8FD0\u884C\u5DF2\u505C\u6B62"
@@ -513,10 +511,13 @@ var agentStrings = {
513
511
  // listAgents card header (`Agents (3)` / `智能体 (3)`). The shared ai
514
512
  // renderer keeps the English default; the CLI relabels the header line.
515
513
  agentsListLabel: { en: "Agents ({0})", zh: "\u667A\u80FD\u4F53 ({0})" },
514
+ agentsCompactCount: { en: "Agents \xB7 {0}", zh: "\u667A\u80FD\u4F53 \xB7 {0} \u4E2A" },
515
+ agentsPageCount: { en: "{0} on this page", zh: "\u672C\u9875 {0} \u4E2A" },
516
+ agentsTruncated: { en: "incomplete", zh: "\u7ED3\u679C\u4E0D\u5B8C\u6574" },
516
517
  // Fallback identity for auto-generated agent ids (run zone / dock / panel).
517
518
  subAgentName: {
518
519
  en: "Sub-agent",
519
- zh: "\u5B50\u667A\u80FD\u4F53"
520
+ zh: "\u667A\u80FD\u4F53"
520
521
  },
521
522
  // Status vocabulary the fixed run zone does not label (running shows only its
522
523
  // elapsed time there). `en` must stay equal to the raw store status so a
@@ -538,13 +539,14 @@ var agentStrings = {
538
539
  zh: "{0}\uFF08\u5F85\u5BF9\u8D26\uFF09"
539
540
  },
540
541
  // --- Fixed run zone (top of composer, replaces the ⚙ running status chip) --
541
- // Each active run renders as `⚙ <title> · <agent> · <elapsed> · N tools`.
542
+ // Each active run renders as `↳ agent <title> · <agent> · <elapsed> · N tools`.
542
543
  // runZoneFor is the elapsed-time fact for a *running* run (`for 1m23s` /
543
544
  // `已运行 1m23s`); terminal runs print `<status> <age>` instead and don't use it.
544
545
  runZoneFor: {
545
546
  en: "for {0}",
546
547
  zh: "\u5DF2\u8FD0\u884C {0}"
547
548
  },
549
+ runZoneAgentType: { en: "agent", zh: "\u667A\u80FD\u4F53" },
548
550
  // Terminal linger line: `✓ <run> · done · took 12m03s`.
549
551
  runZoneDone: { en: "done", zh: "\u5B8C\u6210" },
550
552
  runZoneFailed: { en: "failed", zh: "\u5931\u8D25" },
@@ -605,13 +607,13 @@ Use /switch, /switch list, /switch minimax-m3, or a full agent key.`,
605
607
  zh: "API"
606
608
  },
607
609
  // ── Non-TUI CLI output: nolo agent / nolo run ─────────────────────────────
608
- "agent.unavailableHidden": {
609
- en: "\u26D4 {0} agent(s) temporarily unavailable (429) hidden. Use --show-unavailable to list them.\n",
610
- zh: "\u26D4 \u5DF2\u9690\u85CF {0} \u4E2A\u6682\u65F6\u4E0D\u53EF\u7528\u7684 agent\uFF08429\uFF09\u3002\u7528 --show-unavailable \u5217\u51FA\u5B83\u4EEC\u3002\n"
610
+ "agent.rateLimitedSummary": {
611
+ en: "[nolo] {0} agent(s) have quota/cooldown restrictions (reference info; dispatch is not restricted).\n",
612
+ zh: "[nolo] {0} \u4E2A agent \u6709\u989D\u5EA6/\u51B7\u5374\u53D7\u9650\u8BB0\u5F55\uFF08\u53C2\u8003\u4FE1\u606F\uFF0C\u4E0D\u9650\u5236\u6D3E\u53D1\uFF09\u3002\n"
611
613
  },
612
614
  "agent.rateLimitedRecovery": {
613
- en: " - [429 rate-limited] {0} (id: {1}) recovers in {2}s{3}\n",
614
- zh: " - [429 \u9650\u6D41] {0} (id: {1}) \u9884\u8BA1 {2} \u79D2\u540E\u6062\u590D{3}\n"
615
+ en: " - {0} (id: {1}) quota-limited until {4} ({2}s remaining; reference info, dispatch is not restricted){3}\n",
616
+ zh: " - {0} (id: {1}) \u989D\u5EA6\u53D7\u9650\u81F3 {4}\uFF08\u5269\u4F59 {2} \u79D2\uFF1B\u53C2\u8003\u4FE1\u606F\uFF0C\u4E0D\u9650\u5236\u6D3E\u53D1\uFF09{3}\n"
615
617
  },
616
618
  "agentRun.autoRouteOverrideFailed": {
617
619
  en: "[nolo] auto-route: could not read the source agent, running the selected agent as-is.\n",
@@ -1684,8 +1686,8 @@ var cliSurfaceStrings = {
1684
1686
  "zh": "\u672A\u77E5\u547D\u4EE4\uFF1A{0}"
1685
1687
  },
1686
1688
  "cliCooldownHelp": {
1687
- "en": "Manage per-credential availability cooldowns (429 rate-limit cooldown).\n\nUsage:\n nolo auth cooldown List all active cooldowns\n nolo auth cooldown --clear <credential> Clear one credential's cooldown\n nolo auth cooldown --clear-all Clear all cooldowns\n\nOptions:\n --clear <credential> Clear the cooldown for the given credential\n (e.g. chatgpt / claude / antigravity, or a custom API credential).\n --clear-all Clear every credential cooldown.\n --help Show this help.\n\nNo argument lists the currently cooled credentials with their human-readable\nrecovery time and remaining duration.\n",
1688
- "zh": "\u7BA1\u7406\u5404\u51ED\u636E\u7684\u53EF\u7528\u6027\u51B7\u5374\uFF08429 \u9650\u6D41\u51B7\u5374\uFF09\u3002\n\n\u7528\u6CD5\uFF1A\n nolo auth cooldown \u5217\u51FA\u6240\u6709\u751F\u6548\u4E2D\u7684\u51B7\u5374\n nolo auth cooldown --clear <credential> \u6E05\u9664\u6307\u5B9A\u51ED\u636E\u7684\u51B7\u5374\n nolo auth cooldown --clear-all \u6E05\u9664\u6240\u6709\u51B7\u5374\n\n\u9009\u9879\uFF1A\n --clear <credential> \u6E05\u9664\u6307\u5B9A\u51ED\u636E\u7684\u51B7\u5374\n \uFF08\u4F8B\u5982 chatgpt / claude / antigravity\uFF0C\u6216\u81EA\u5B9A\u4E49 API \u51ED\u636E\uFF09\u3002\n --clear-all \u6E05\u9664\u5168\u90E8\u51ED\u636E\u51B7\u5374\u3002\n --help \u663E\u793A\u6B64\u5E2E\u52A9\u3002\n\n\u4E0D\u5E26\u53C2\u6570\u65F6\u5217\u51FA\u5904\u4E8E\u51B7\u5374\u4E2D\u7684\u51ED\u636E\u3001\u6062\u590D\u65F6\u95F4\u548C\u5269\u4F59\u65F6\u957F\u3002\n"
1689
+ "en": "Manage per-credential availability cooldowns (429 rate-limit cooldown).\n\nNote: cooldowns no longer block requests - quota/cooldown is reference info only\nand every dispatch still goes upstream. This command is for reading that reference\ninfo and for clearing stale entries (e.g. after topping up an account).\n\nUsage:\n nolo auth cooldown List all active cooldowns\n nolo auth cooldown --clear <credential> Clear one credential's cooldown\n nolo auth cooldown --clear-all Clear all cooldowns\n\nOptions:\n --clear <credential> Clear the cooldown for the given credential\n (e.g. chatgpt / claude / antigravity, or a custom API credential).\n --clear-all Clear every credential cooldown.\n --help Show this help.\n\nNo argument lists the currently cooled credentials with their human-readable\nrecovery time and remaining duration.\n",
1690
+ "zh": "\u7BA1\u7406\u5404\u51ED\u636E\u7684\u53EF\u7528\u6027\u51B7\u5374\uFF08429 \u9650\u6D41\u51B7\u5374\uFF09\u3002\n\n\u8BF4\u660E\uFF1A\u51B7\u5374\u4E0D\u518D\u62E6\u622A\u8BF7\u6C42\u2014\u2014\u989D\u5EA6/\u51B7\u5374\u53EA\u4F5C\u53C2\u8003\u4FE1\u606F\uFF0C\u4EFB\u4F55\u6D3E\u53D1\u90FD\u4F1A\u76F4\u8FBE\u4E0A\u6E38\u3002\n\u6B64\u547D\u4EE4\u7528\u4E8E\u67E5\u770B\u8FD9\u4EFD\u53C2\u8003\u4FE1\u606F\uFF0C\u4EE5\u53CA\u6E05\u7406\u9648\u65E7\u8BB0\u5F55\uFF08\u4F8B\u5982\u5145\u503C\u540E\uFF09\u3002\n\n\u7528\u6CD5\uFF1A\n nolo auth cooldown \u5217\u51FA\u6240\u6709\u751F\u6548\u4E2D\u7684\u51B7\u5374\n nolo auth cooldown --clear <credential> \u6E05\u9664\u6307\u5B9A\u51ED\u636E\u7684\u51B7\u5374\n nolo auth cooldown --clear-all \u6E05\u9664\u6240\u6709\u51B7\u5374\n\n\u9009\u9879\uFF1A\n --clear <credential> \u6E05\u9664\u6307\u5B9A\u51ED\u636E\u7684\u51B7\u5374\n \uFF08\u4F8B\u5982 chatgpt / claude / antigravity\uFF0C\u6216\u81EA\u5B9A\u4E49 API \u51ED\u636E\uFF09\u3002\n --clear-all \u6E05\u9664\u5168\u90E8\u51ED\u636E\u51B7\u5374\u3002\n --help \u663E\u793A\u6B64\u5E2E\u52A9\u3002\n\n\u4E0D\u5E26\u53C2\u6570\u65F6\u5217\u51FA\u5904\u4E8E\u51B7\u5374\u4E2D\u7684\u51ED\u636E\u3001\u6062\u590D\u65F6\u95F4\u548C\u5269\u4F59\u65F6\u957F\u3002\n"
1689
1691
  },
1690
1692
  "cliCooldownClearedCount": {
1691
1693
  "en": "Cleared {0} credential cooldown(s).",
@@ -2059,10 +2061,12 @@ var commonStrings = {
2059
2061
  zh: "\uFF08\u4E0A\u6E38\u7EA6 {0}\u540E\u590D\u4F4D\uFF09"
2060
2062
  },
2061
2063
  // 第 2 行:{0} = 冷却截止(本地时间,当天 HH:MM / 跨天 MM-DD HH:MM),
2062
- // {1} = 复位提示或空串,{2} = 自动探测间隔(分钟)。无 cooldownUntil 时整行省略。
2064
+ // {1} = 复位提示或空串。无 cooldownUntil 时整行省略。
2065
+ // 冷却只作参考:额度信息不再有否决权,请求不会被本地拦下,故文案不得承诺
2066
+ // 「每 N 分钟自动试探一次」——那套 gate 节流已随否决权一并拆除。
2063
2067
  localRunRateLimitCooldown: {
2064
- en: " Cooldown until {0}{1}; auto-probing every {2} min meanwhile (the upstream may not be restored by then).",
2065
- zh: " \u51B7\u5374\u81F3 {0}{1}\uFF1B\u671F\u95F4\u6BCF {2} \u5206\u949F\u81EA\u52A8\u8BD5\u63A2\u4E00\u6B21\uFF08\u4E0A\u6E38\u672A\u5FC5\u5C4A\u65F6\u6062\u590D\uFF09\u3002"
2068
+ en: " Cooldown until {0}{1}; requests are not blocked locally by this timestamp \u2014 it is only a reference for when the upstream may recover (it may not have recovered by then).",
2069
+ zh: " \u51B7\u5374\u81F3 {0}{1}\uFF1B\u672C\u5730\u4E0D\u636E\u6B64\u62E6\u622A\u8BF7\u6C42\uFF0C\u8BE5\u65F6\u523B\u4EC5\u4F5C\u53C2\u8003\uFF08\u4E0A\u6E38\u672A\u5FC5\u5C4A\u65F6\u6062\u590D\uFF09\u3002"
2066
2070
  },
2067
2071
  // 第 3 行:三个出口(换 agent / 强制走服务器 / 已充值清冷却)。
2068
2072
  localRunRateLimitExits: {
@@ -2106,6 +2110,14 @@ var commonStrings = {
2106
2110
  en: "Used Skill",
2107
2111
  zh: "\u5DF2\u52A0\u8F7D\u6280\u80FD"
2108
2112
  },
2113
+ loadSkillLabel: {
2114
+ en: "Load Skill",
2115
+ zh: "\u52A0\u8F7D\u6280\u80FD"
2116
+ },
2117
+ unnamedSkillReference: {
2118
+ en: "unknown reference",
2119
+ zh: "\u672A\u77E5\u5F15\u7528"
2120
+ },
2109
2121
  // Background-process rows in the same zone (`❯ npm run dev · 已运行 3m · pid 123`).
2110
2122
  // The pid is how the user targets /stop, so it is a fact, not decoration.
2111
2123
  procZonePid: { en: "pid {0}", zh: "pid {0}" },
@@ -2626,6 +2638,15 @@ var commonStrings = {
2626
2638
  };
2627
2639
 
2628
2640
  // packages/cli/i18n/index.ts
2641
+ var controlMessageStrings = {
2642
+ controlQueued: { en: "queued", zh: "\u5DF2\u5165\u961F" },
2643
+ controlEnqueued: { en: "[enqueued {0}]", zh: "[\u5DF2\u5165\u961F {0}]" },
2644
+ controlContinued: { en: "continued", zh: "\u5DF2\u7EED\u8DD1" },
2645
+ controlConsumed: { en: "consumed", zh: "\u5DF2\u6D88\u8D39" },
2646
+ controlRun: { en: "run", zh: "\u4EFB\u52A1" },
2647
+ controlTarget: { en: "target", zh: "\u76EE\u6807" },
2648
+ controlMessage: { en: "message", zh: "\u6D88\u606F" }
2649
+ };
2629
2650
  var STRINGS = {
2630
2651
  ...turnStrings,
2631
2652
  ...sessionStrings,
@@ -2638,7 +2659,8 @@ var STRINGS = {
2638
2659
  ...docCommandStrings,
2639
2660
  ...cliSurfaceStrings,
2640
2661
  ...dialogCommandStrings,
2641
- ...commonStrings
2662
+ ...commonStrings,
2663
+ ...controlMessageStrings
2642
2664
  };
2643
2665
  function t(key, ...params) {
2644
2666
  const text = STRINGS[key][getCliLocale()];
@@ -3150,6 +3172,10 @@ var COMMAND_DESCRIPTIONS = {
3150
3172
  en: "Evaluate JS in a tab, user-approved per call (--tab <id> --expr <js> [--await] [--timeout-ms N]) (Compatibility alias of `nolo browser eval`)",
3151
3173
  zh: "\u5728\u6807\u7B7E\u9875\u4E2D\u6267\u884C JS\uFF0C\u6BCF\u6B21\u8C03\u7528\u9700\u7528\u6237\u6279\u51C6\uFF08--tab <id> --expr <js> [--await] [--timeout-ms N]\uFF09\uFF08`nolo browser eval` \u7684\u517C\u5BB9\u522B\u540D\uFF09"
3152
3174
  },
3175
+ "ci cancel": {
3176
+ en: "Cancel an alpha deploy job",
3177
+ zh: "\u53D6\u6D88 alpha \u90E8\u7F72\u4EFB\u52A1"
3178
+ },
3153
3179
  "ci status": {
3154
3180
  en: "Show recent nolo-ci deploy jobs (alpha / main)",
3155
3181
  zh: "\u67E5\u770B\u6700\u8FD1\u7684 nolo-ci \u90E8\u7F72\u4EFB\u52A1\uFF08alpha / main\uFF09"
@@ -3158,6 +3184,10 @@ var COMMAND_DESCRIPTIONS = {
3158
3184
  en: "Show dialog tokens, recorded duration and speed by basis",
3159
3185
  zh: "\u663E\u793A\u5BF9\u8BDD\u7684 token \u6570\u3001\u8BB0\u5F55\u65F6\u957F\u4E0E\u6309\u57FA\u51C6\u8BA1\u7B97\u7684\u901F\u5EA6"
3160
3186
  },
3187
+ "usage": {
3188
+ en: "Summarize local token usage by day/provider/model/agent (reads DayStats via LevelDB iterator)",
3189
+ zh: "\u6309\u65E5\u3001\u63D0\u4F9B\u5546\u3001\u6A21\u578B\u548C\u667A\u80FD\u4F53\u6C47\u603B\u672C\u5730 token \u7528\u91CF\uFF08\u901A\u8FC7 LevelDB \u8FED\u4EE3\u5668\u8BFB\u53D6 DayStats\uFF09"
3190
+ },
3161
3191
  "login": {
3162
3192
  en: "Log in to Nolo",
3163
3193
  zh: "\u767B\u5F55 Nolo"
@@ -3300,6 +3330,15 @@ function agentRunStatusWord(status) {
3300
3330
  }
3301
3331
  function agentRunCardLabels() {
3302
3332
  return {
3333
+ controlMessage: {
3334
+ queued: t("controlQueued"),
3335
+ enqueued: (count) => t("controlEnqueued", String(count)),
3336
+ continued: t("controlContinued"),
3337
+ consumed: t("controlConsumed"),
3338
+ run: t("controlRun"),
3339
+ target: t("controlTarget"),
3340
+ message: t("controlMessage")
3341
+ },
3303
3342
  runStatus: t("runStatusLabel"),
3304
3343
  runStarted: t("runStartedLabel"),
3305
3344
  runStopped: t("runStoppedLabel"),
@@ -2,13 +2,13 @@ import {
2
2
  deleteDbRecord,
3
3
  queryUserRecords,
4
4
  readDbRecord
5
- } from "./chunk-IF45XG7K.js";
5
+ } from "./chunk-MOIJOHA5.js";
6
6
  import {
7
7
  mergeAndDedupUserData
8
- } from "./chunk-OXME3PEE.js";
8
+ } from "./chunk-PCLE46CE.js";
9
9
  import {
10
10
  isTombstoneRecord
11
- } from "./chunk-D2MDMY2M.js";
11
+ } from "./chunk-SVYO6AO7.js";
12
12
  import {
13
13
  toErrorMessage
14
14
  } from "./chunk-HNMXYYJR.js";
@@ -7,7 +7,7 @@ import {
7
7
  listUserRecordsFromServers,
8
8
  readDbRecordFromServers,
9
9
  readLiveDbRecordAfterTombstoneMerge
10
- } from "./chunk-3AKFVZ2I.js";
10
+ } from "./chunk-VO4WSAVP.js";
11
11
  import {
12
12
  parsePositiveFiniteNumberOrFallback
13
13
  } from "./chunk-Y5GCAMGP.js";
@@ -43,13 +43,13 @@ import {
43
43
  boundSummaryText,
44
44
  buildDialogReadEnvelope,
45
45
  projectDialogReadForAgent
46
- } from "./chunk-25JZEIXN.js";
46
+ } from "./chunk-RZOV7OMV.js";
47
47
  import {
48
48
  asRecordOrEmpty
49
49
  } from "./chunk-KX6YBIHG.js";
50
50
  import {
51
51
  resolveRunsDir
52
- } from "./chunk-HIRC32DV.js";
52
+ } from "./chunk-NSAPDIN2.js";
53
53
  import {
54
54
  toErrorMessage
55
55
  } from "./chunk-HNMXYYJR.js";
@@ -69,7 +69,7 @@ import {
69
69
  } from "./chunk-4SN6J65J.js";
70
70
  import {
71
71
  t
72
- } from "./chunk-3RQVYR4B.js";
72
+ } from "./chunk-VNYYOX3V.js";
73
73
  import {
74
74
  asNonEmptyStringArray,
75
75
  asTrimmedNonEmptyStringArray
@@ -780,7 +780,7 @@ function isExplicitDialogIdMismatch(meta, dialogId) {
780
780
  return meta && typeof meta === "object" && "id" in meta && meta.id != null && String(meta.id) !== dialogId;
781
781
  }
782
782
  async function readDialogFromLocalDb(dialogKey, dialogId, limit, readLocalDialog) {
783
- const reader = readLocalDialog ?? (await import("./localDialogRead-XRLAH4CZ.js")).readDialogFromLocalDb;
783
+ const reader = readLocalDialog ?? (await import("./localDialogRead-7NNDVVF7.js")).readDialogFromLocalDb;
784
784
  const result = await reader({ dialogKey, dialogId, limit });
785
785
  return {
786
786
  ...result,
@@ -795,7 +795,7 @@ async function readLocalDialogAtDbPathDefault(args) {
795
795
  );
796
796
  }
797
797
  const db = await getDefaultCliLocalRuntimeDb();
798
- const { readDialogFromLocalDb: reader } = await import("./localDialogRead-XRLAH4CZ.js");
798
+ const { readDialogFromLocalDb: reader } = await import("./localDialogRead-7NNDVVF7.js");
799
799
  return reader({ ...args, db });
800
800
  }
801
801
  async function readDialogFromLocalDbWithFallback(args) {
@@ -6,7 +6,7 @@ import {
6
6
  buildBuiltinObjectSkillDbKey,
7
7
  buildBuiltinObjectSkillPageContent,
8
8
  buildCodeWorkDiscipline
9
- } from "./chunk-EYUBHHFB.js";
9
+ } from "./chunk-EHGEOAHI.js";
10
10
  import {
11
11
  buildSkillDocMarkdown,
12
12
  resolvePageSkillMetadata
@@ -1200,7 +1200,7 @@ function buildAutoReviewSkillConfig(slug) {
1200
1200
  id: buildAutoReviewSkillId(slug),
1201
1201
  name: "\u81EA\u52A8\u5BA1\u67E5\u5408\u5E76\uFF08auto-review\uFF09",
1202
1202
  triggerMode: "explicit",
1203
- description: "\u663E\u5F0F\u5F00\u542F\u540E\uFF0C\u5728\u7528\u6237\u6307\u5B9A\u7684\u4EFB\u52A1\u3001\u5F53\u524D\u5BF9\u8BDD\u6216\u9879\u76EE\u4F5C\u7528\u57DF\u6301\u7EED\u6267\u884C\u72EC\u7ACB review\u3001\u4FEE\u590D\u3001\u63D0\u4EA4\u4E0E\u672C\u5730\u96C6\u6210\u5206\u652F\u5408\u5E76\uFF1B\u4E0D\u9ED8\u8BA4\u63A8\u8350\u3002push \u662F\u72EC\u7ACB\u6743\u9650\u3002\u89E6\u53D1\u8BCD\uFF1Aauto-review\u3001\u81EA\u52A8\u5BA1\u67E5\u3001review \u540E\u81EA\u52A8\u5408\u5E76\u3001\u5BA1\u5B8C\u76F4\u63A5\u63D0\u4EA4\u5408\u5E76\u3001auto review\u3002\u53EA\u8BFB\u4EFB\u52A1\u4E0D\u9002\u7528\u3002"
1203
+ description: "\u6B64\u6280\u80FD\u53EF\u88AB\u63A8\u8350\u7528\u4E8E\u53D1\u73B0\uFF0C\u4F46\u5FC5\u987B\u7531\u7528\u6237\u663E\u5F0F\u5F00\u542F\u540E\uFF0C\u624D\u5728\u7528\u6237\u6307\u5B9A\u7684\u4EFB\u52A1\u3001\u5F53\u524D\u5BF9\u8BDD\u6216\u9879\u76EE\u4F5C\u7528\u57DF\u6301\u7EED\u6267\u884C\u72EC\u7ACB review\u3001\u4FEE\u590D\u3001\u63D0\u4EA4\u4E0E\u672C\u5730\u96C6\u6210\u5206\u652F\u5408\u5E76\uFF1B\u63A8\u8350\u4E0D\u4EE3\u8868\u542F\u7528\u3002push \u662F\u72EC\u7ACB\u6743\u9650\u3002\u89E6\u53D1\u8BCD\uFF1Aauto-review\u3001\u81EA\u52A8\u5BA1\u67E5\u3001review \u540E\u81EA\u52A8\u5408\u5E76\u3001\u5BA1\u5B8C\u76F4\u63A5\u63D0\u4EA4\u5408\u5E76\u3001auto review\u3002\u53EA\u8BFB\u4EFB\u52A1\u4E0D\u9002\u7528\u3002"
1204
1204
  };
1205
1205
  }
1206
1206
  var BODY = [
@@ -1208,9 +1208,9 @@ var BODY = [
1208
1208
  "",
1209
1209
  "## \u542F\u7528\u4E0E\u6743\u9650\u8FB9\u754C",
1210
1210
  "- \u7528\u6237\u53EF\u6307\u5B9A\u4EFB\u52A1\u3001\u5F53\u524D\u5BF9\u8BDD\u6216\u9879\u76EE\u4F5C\u7528\u57DF\u3002\u5355\u6B21\u8986\u76D6\u3001\u6682\u505C\u6216\u5173\u95ED\u4F18\u5148\uFF1B\u6536\u5230 stop/\u505C\u6B62\u7ACB\u5373\u505C\u6B62\uFF0C\u4E0D\u91CD\u65B0\u89C4\u5212\u65E2\u5B9A\u65B9\u5411\u3002",
1211
- "- \u4F5C\u7528\u57DF\u6301\u7EED\u4E0D\u4EE3\u8868\u5E73\u53F0\u5DF2\u7ECF\u6301\u4E45\u4FDD\u5B58\u914D\u7F6E\u3002\u672A\u9A8C\u8BC1\u6301\u4E45\u914D\u7F6E\u80FD\u529B\u524D\uFF0C\u4E0D\u5F97\u58F0\u79F0\u8DE8\u5BF9\u8BDD\u81EA\u52A8\u4FDD\u5B58\u6216\u751F\u6548\uFF1B\u9879\u76EE\u542F\u7528\u6301\u4E45\u80FD\u529B\u4EE5\u73B0\u6709\u9879\u76EE\u914D\u7F6E\u5DF2\u52A0\u8F7D\u4E3A\u524D\u63D0\uFF0C\u4E0D\u65B0\u9020\u914D\u7F6E\u7CFB\u7EDF\u3002\u4FDD\u6301\u663E\u5F0F opt-in\uFF0C\u4E0D\u9ED8\u8BA4\u63A8\u8350\u6216\u81EA\u52A8\u542F\u7528\u4E8E\u6240\u6709\u9879\u76EE\u3002",
1211
+ "- \u4F5C\u7528\u57DF\u6301\u7EED\u4E0D\u4EE3\u8868\u5E73\u53F0\u5DF2\u7ECF\u6301\u4E45\u4FDD\u5B58\u914D\u7F6E\u3002\u672A\u9A8C\u8BC1\u6301\u4E45\u914D\u7F6E\u80FD\u529B\u524D\uFF0C\u4E0D\u5F97\u58F0\u79F0\u8DE8\u5BF9\u8BDD\u81EA\u52A8\u4FDD\u5B58\u6216\u751F\u6548\uFF1B\u9879\u76EE\u542F\u7528\u6301\u4E45\u80FD\u529B\u4EE5\u73B0\u6709\u9879\u76EE\u914D\u7F6E\u5DF2\u52A0\u8F7D\u4E3A\u524D\u63D0\uFF0C\u4E0D\u65B0\u9020\u914D\u7F6E\u7CFB\u7EDF\u3002\u4FDD\u6301\u663E\u5F0F opt-in\uFF1B\u63A8\u8350\u4EC5\u7528\u4E8E\u53D1\u73B0\uFF0C\u4E0D\u81EA\u52A8\u542F\u7528\u4E8E\u4EFB\u4F55\u4EFB\u52A1\u6216\u9879\u76EE\u3002",
1212
1212
  "- push \u662F\u72EC\u7ACB\u6743\u9650\uFF0C\u9ED8\u8BA4\u672A\u6388\u6743\uFF1B\u7B26\u5408\u4E0A\u5C42\u89C4\u5219\u7684\u5F53\u6B21\u660E\u786E\u6388\u6743\u540E\uFF0C\u53EF\u5728\u672C\u5730\u5408\u5E76\u540E\u7EE7\u7EED\u9A8C\u6536\u3001\u8BC1\u636E\u9884\u68C0\u4E0E push\u3002\u4E0D\u5F97\u58F0\u79F0 skill \u6216\u4ED3\u5E93\u89C4\u5219\u6388\u4E88\u6301\u7EED push \u6743\u3002main/production \u5408\u5E76\u3001\u53D1\u5E03\u3001\u56DE\u6EDA\u53E6\u9700\u5F53\u6B21\u6279\u51C6\u3002",
1213
- "- \u9700\u7528\u6237\u4EB2\u81EA\u9A8C\u6536\u7684\u6539\u52A8\uFF08\u5982 UI/\u4F53\u9A8C\uFF09\uFF1A\u5148\u4EA4\u4ED8\u53EF\u6D4B\u8BD5\u4EA7\u7269\uFF1B\u7528\u6237\u660E\u786E\u51C6\u5907\u63D0\u4EA4\u540E\u518D\u8FDB\u5165\u6700\u7EC8 review\u3002",
1213
+ "- \u9700\u7528\u6237\u4EB2\u81EA\u9A8C\u6536\u7684\u6539\u52A8\uFF08\u5982 UI/\u4F53\u9A8C\uFF09\uFF1A\u5148\u4EA4\u4ED8\u53EF\u6D4B\u8BD5\u4EA7\u7269\u5E76\u7B49\u5F85\u7528\u6237\u9A8C\u6536\uFF1B\u7B49\u5F85\u9A8C\u6536\u4E0D\u91CD\u590D\u8BE2\u95EE\u5DF2\u83B7\u6301\u7EED\u6388\u6743\u7684 review\u3002auto-review \u4ECD\u5728\u5F53\u524D\u4F5C\u7528\u57DF\u4E14\u7528\u6237\u9A8C\u6536\u901A\u8FC7\u540E\uFF0C\u6301\u7EED\u6388\u6743\u7EE7\u7EED\u6700\u7EC8 review\u3001\u4FEE\u590D\u3001\u63D0\u4EA4\u4E0E\u672C\u5730\u96C6\u6210\uFF0C\u4E0D\u518D\u91CD\u590D\u8BE2\u95EE\u51C6\u5907\u63D0\u4EA4\u786E\u8BA4\u3002stop/\u6682\u505C/\u5355\u6B21\u8986\u76D6\u4F18\u5148\uFF0Cpush\u3001main/production \u5408\u5E76\u3001\u53D1\u5E03\u4E0E\u56DE\u6EDA\u4ECD\u72EC\u7ACB\u6388\u6743\u3002",
1214
1214
  "",
1215
1215
  "## \u6D41\u7A0B",
1216
1216
  "1. **\u9694\u79BB**\uFF1A\u6539\u52A8\u5E94\u5728\u72EC\u7ACB worktree/\u5206\u652F\u4E2D\u8FDB\u884C\uFF1B\u4E0D\u5728\u5C31\u6309\u9879\u76EE\u65E2\u6709\u6D41\u7A0B\u5EFA\u7ACB\u3002",
@@ -1,13 +1,13 @@
1
1
  import {
2
2
  buildStaticUserPolicyContext,
3
3
  resolveSpaceContextPreloadPlan
4
- } from "./chunk-5AQR3DGV.js";
4
+ } from "./chunk-ZNWI6OVT.js";
5
5
  import {
6
6
  fetchReferenceContents,
7
7
  mergeReferences,
8
8
  resolveReferenceAssets,
9
9
  resolveToolsFromKeys
10
- } from "./chunk-RU4SD66C.js";
10
+ } from "./chunk-TX5EYMGT.js";
11
11
  import {
12
12
  UI_CARD_ENVELOPE_MAX_BYTES,
13
13
  getAllToolRuns,
@@ -18,14 +18,14 @@ import {
18
18
  selectSpaceContextLevel,
19
19
  selectUserTonePreset,
20
20
  uiCardFallback
21
- } from "./chunk-GNDJKC4B.js";
21
+ } from "./chunk-HUBHAQK2.js";
22
22
  import {
23
23
  resolveAgentRecommendedSkillNames,
24
24
  resolveAgentRequiredPackIds
25
- } from "./chunk-MMNYUVLW.js";
25
+ } from "./chunk-R5O4QAWG.js";
26
26
  import {
27
27
  getDocState
28
- } from "./chunk-5RYBGBQH.js";
28
+ } from "./chunk-6DWMYIUY.js";
29
29
  import {
30
30
  resolveToolBaseUrl
31
31
  } from "./chunk-MYOH447Z.js";
@@ -37,12 +37,12 @@ import {
37
37
  } from "./chunk-INN4LTAJ.js";
38
38
  import {
39
39
  getTableState
40
- } from "./chunk-NJR3WKVP.js";
40
+ } from "./chunk-7Y4YTDQF.js";
41
41
  import {
42
42
  PERSONALIZATION_DIALOG_CATEGORY,
43
43
  buildPersonalizationDialogPolicyContext,
44
44
  selectAllMsgs
45
- } from "./chunk-VZKUKCA6.js";
45
+ } from "./chunk-ZXOUUDCG.js";
46
46
  import {
47
47
  getCurrentSpaceIdRaw,
48
48
  getViewMode
@@ -53,7 +53,7 @@ import {
53
53
  import {
54
54
  read,
55
55
  selectById
56
- } from "./chunk-BFM34N54.js";
56
+ } from "./chunk-FW6YHHLI.js";
57
57
  import {
58
58
  getSessionSnapshotForState,
59
59
  selectIdentityUserBalance,
@@ -68,21 +68,21 @@ import {
68
68
  expandEnabledPackPromptPatches,
69
69
  expandEnabledPacks,
70
70
  resolveEffectiveEnabledPacks
71
- } from "./chunk-EYUBHHFB.js";
71
+ } from "./chunk-EHGEOAHI.js";
72
72
  import {
73
+ planContextUsage,
73
74
  projectToolMessageContent
74
- } from "./chunk-2WZXXAQD.js";
75
+ } from "./chunk-YB3YZK56.js";
75
76
  import {
76
77
  attachmentKind,
77
78
  normalizeAttachmentPart
78
79
  } from "./chunk-WJZOQR2J.js";
79
80
  import {
80
81
  extractReferenceKeysFromMessage
81
- } from "./chunk-JTDORD5P.js";
82
+ } from "./chunk-V5Y3R6BT.js";
82
83
  import {
83
- getModelContextWindow,
84
- planContextUsage
85
- } from "./chunk-CZM5YTZ7.js";
84
+ getModelContextWindow
85
+ } from "./chunk-7BT37FK3.js";
86
86
  import {
87
87
  asRecordOrEmpty
88
88
  } from "./chunk-KX6YBIHG.js";
@@ -11,10 +11,10 @@ import {
11
11
  } from "./chunk-XFYFMTOM.js";
12
12
  import {
13
13
  clearCliLocalRuntimePreparedAgentCache
14
- } from "./chunk-D5RCRX4A.js";
14
+ } from "./chunk-UYD5HQ6T.js";
15
15
  import {
16
16
  readCredentialAvailability
17
- } from "./chunk-GSQNH63I.js";
17
+ } from "./chunk-YTF4WH7J.js";
18
18
  import {
19
19
  buildCreatedAgentRecord,
20
20
  buildUpdatedAgentRecord,
@@ -25,7 +25,7 @@ import {
25
25
  resolveAgentRecordFromHybridStore,
26
26
  sanitizeAgentRecordForCliOutput,
27
27
  writeAgentRecord
28
- } from "./chunk-IF45XG7K.js";
28
+ } from "./chunk-MOIJOHA5.js";
29
29
  import {
30
30
  resolveCliAgentKeyInput
31
31
  } from "./chunk-NBTY7YJF.js";