nolo-cli 0.202.0-alpha.2 → 0.203.0-alpha.1

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 (77) hide show
  1. package/{_executeModel-IPRTPSW7.js → _executeModel-KOODDFV3.js} +16 -16
  2. package/{agentDeleteCommand-6HFA37FH.js → agentDeleteCommand-HCZZPPAB.js} +17 -16
  3. package/{agentEmailCommands-TDBNVIAT.js → agentEmailCommands-5R2ST7IA.js} +19 -18
  4. package/{agentListCommands-YSQSDQM3.js → agentListCommands-POQKNVWF.js} +3 -3
  5. package/{agentMachineCommands-5W23BLFR.js → agentMachineCommands-UZ7I4VL3.js} +3 -3
  6. package/{agentProviderCommands-5ALOQLE5.js → agentProviderCommands-MEFUIECN.js} +30 -12
  7. package/{agentRecordCommands-SRIMZZFK.js → agentRecordCommands-SSSJLCIP.js} +18 -17
  8. package/{agentRunCommand-BLYHIN6S.js → agentRunCommand-FXGB7HRK.js} +19 -18
  9. package/{agentRuntimeLocal-FE66EBRC.js → agentRuntimeLocal-M2RCAORY.js} +2 -2
  10. package/{agentSlice-BFDKYW6H.js → agentSlice-H47GA3AE.js} +1 -1
  11. package/{appDeleteCommands-BEVZGCAG.js → appDeleteCommands-JI6AEOJO.js} +4 -4
  12. package/{appDeployCommands-E7TFCHSP.js → appDeployCommands-W3W4T7BU.js} +4 -4
  13. package/{appDeployStatusCommands-MYY5Z5G3.js → appDeployStatusCommands-QXPI3XS4.js} +4 -4
  14. package/{appGetCommands-HNED5JUU.js → appGetCommands-SQV3MNFW.js} +4 -4
  15. package/{appListCommands-MSBFWPIY.js → appListCommands-DMYRVV7E.js} +4 -4
  16. package/{authCommand-W34UWJGR.js → authCommand-KPTIANH2.js} +1 -1
  17. package/{builtinSkillRegistry-NJVHQIKY.js → builtinSkillRegistry-HH75G5J3.js} +2 -2
  18. package/{chromeOpsCommands-USKE4B4K.js → chromeOpsCommands-JFT4J4LQ.js} +1 -1
  19. package/{chunk-HKWGI3TM.js → chunk-4HAB2O5R.js} +235 -11
  20. package/{chunk-OIB4GARE.js → chunk-4JBJG7XB.js} +3 -3
  21. package/{chunk-WPQGLJHU.js → chunk-76QKMZCM.js} +2 -2
  22. package/{chunk-SSK4WNJA.js → chunk-7BIC2DPF.js} +1 -1
  23. package/{chunk-LAYFVGS4.js → chunk-7KWQ3AWS.js} +9 -9
  24. package/{chunk-HKMPGHFZ.js → chunk-A46X4DUK.js} +4 -4
  25. package/{chunk-BLFZULEQ.js → chunk-DP7YE3D3.js} +2 -2
  26. package/{chunk-TWVVTUNG.js → chunk-E4KACSRR.js} +2 -2
  27. package/{chunk-CLTGWJVT.js → chunk-E4LYPSYM.js} +2 -0
  28. package/{chunk-5E4FSR4J.js → chunk-EPJFGQYO.js} +1 -1
  29. package/{chunk-YAGFPXOX.js → chunk-FIFPSUK7.js} +128 -7
  30. package/{chunk-326HCB6L.js → chunk-G7RADKSA.js} +8 -8
  31. package/{chunk-DKZJJ2NQ.js → chunk-I5PBXF7O.js} +1 -1
  32. package/{chunk-KDUYNEJ5.js → chunk-IK6AAUGM.js} +1 -1
  33. package/{chunk-SUBNV2JH.js → chunk-IT2QLZ7M.js} +2 -2
  34. package/{chunk-DHJXDGC3.js → chunk-JL3YTCPQ.js} +1 -1
  35. package/{chunk-BRZTSZBG.js → chunk-L2F7JJZX.js} +21 -121
  36. package/{chunk-C7PKPHK6.js → chunk-LK46VB57.js} +5 -5
  37. package/{chunk-Q7GNBUT4.js → chunk-NEZGPBL7.js} +2 -2
  38. package/{chunk-ETTDZBK5.js → chunk-OBOAMKAA.js} +3 -3
  39. package/{chunk-3CWF2EUZ.js → chunk-QUJ3IHEK.js} +1 -1
  40. package/{chunk-E2FC5RMU.js → chunk-S2ZXDWPU.js} +29 -8
  41. package/{chunk-RS66RJLA.js → chunk-TEI5QWP3.js} +1 -1
  42. package/{chunk-6OEPWZV7.js → chunk-TPCDYNJK.js} +3 -0
  43. package/{chunk-D57YYGMD.js → chunk-VF2CQVMR.js} +2 -2
  44. package/{chunk-YV2RSLM4.js → chunk-W6L3E75W.js} +4 -4
  45. package/{chunk-ASG7VWPK.js → chunk-WKJCPU4B.js} +3 -3
  46. package/chunk-WOAZVUSN.js +126 -0
  47. package/{chunk-RIKSN62L.js → chunk-Y6KUC75Q.js} +3 -3
  48. package/{chunk-LEX6DEH4.js → chunk-Y6M7KJOA.js} +1 -1
  49. package/{commandRegistry-ZU3RX7A2.js → commandRegistry-YYGDQ353.js} +59 -59
  50. package/{contentThunks-I4IHSDTM.js → contentThunks-CUBCGUNV.js} +3 -3
  51. package/{cooldownCommands-5SJ74DNP.js → cooldownCommands-BLRMLW7Q.js} +1 -1
  52. package/{createAgentAutomationAction-WQCH5HR2.js → createAgentAutomationAction-QKYRYNB7.js} +3 -3
  53. package/{createDialogAction-CKMZK5JQ.js → createDialogAction-X6YMBBIP.js} +5 -5
  54. package/{createPageAction-QAZHQGY7.js → createPageAction-UISPQP64.js} +3 -3
  55. package/{dialogCommands-NEQ6NW5H.js → dialogCommands-XBAEKJVC.js} +4 -4
  56. package/{dialogSlice-GEGACCH2.js → dialogSlice-JPKOEWA7.js} +2 -2
  57. package/{docCreateCommands-EXV267FP.js → docCreateCommands-XBI32MGB.js} +3 -3
  58. package/{docDeleteCommands-TSBILA2Z.js → docDeleteCommands-7EKY3XJR.js} +3 -3
  59. package/{docReadCommands-AKVYHITD.js → docReadCommands-LWDKFZKJ.js} +3 -3
  60. package/{docStore-B4EFT53J.js → docStore-YUQJ22PU.js} +1 -1
  61. package/{docUpdateCommands-G6GULDGZ.js → docUpdateCommands-VFB53K4G.js} +3 -3
  62. package/{handleSendMessageAction-4BACQWOG.js → handleSendMessageAction-OBYLLUON.js} +11 -11
  63. package/index.js +6 -6
  64. package/{localRuntimeAdapter-MTDULOUZ.js → localRuntimeAdapter-FZ7E66VZ.js} +17 -16
  65. package/{machineCommands-OGHHBRV3.js → machineCommands-3VBUV3VZ.js} +18 -17
  66. package/{machineWsRunDispatch-R6DNC3H7.js → machineWsRunDispatch-SJMADAGT.js} +18 -17
  67. package/package.json +1 -1
  68. package/{readlineWorkspace-NC2O4DQP.js → readlineWorkspace-SHYYZ7XS.js} +22 -21
  69. package/{runAgentClientLoop-QKV66PX5.js → runAgentClientLoop-2FDKWHUB.js} +14 -14
  70. package/{secretCommands-MKU25CDP.js → secretCommands-S2DDPIQ4.js} +1 -1
  71. package/{settingThunks-4WU7YE62.js → settingThunks-SWYDFUYT.js} +3 -3
  72. package/{spaceCommands-J7BRTTM3.js → spaceCommands-BFES7F7G.js} +2 -2
  73. package/{streamAgentChatTurn-GM3UNSLS.js → streamAgentChatTurn-VQGUVTAC.js} +28 -18
  74. package/{tools-UJLEQBKI.js → tools-JMEDZDIA.js} +10 -10
  75. package/{updateCommands-RVDAFHBT.js → updateCommands-LEJRRVBB.js} +3 -3
  76. package/{updateDialogTitleAction-24QO27NT.js → updateDialogTitleAction-QGH4ZL4E.js} +3 -3
  77. package/{windowsSelfUpdate-N2VH2OBW.js → windowsSelfUpdate-LSSQLXVS.js} +2 -2
@@ -1,13 +1,13 @@
1
1
  import {
2
2
  createCliLocalRuntimeAdapter,
3
3
  summarizeEndpoint
4
- } from "./chunk-BRZTSZBG.js";
4
+ } from "./chunk-L2F7JJZX.js";
5
5
  import {
6
6
  clipMultilineText
7
- } from "./chunk-C7PKPHK6.js";
7
+ } from "./chunk-LK46VB57.js";
8
8
  import {
9
9
  runLocalAgentTurn
10
- } from "./chunk-OIB4GARE.js";
10
+ } from "./chunk-4JBJG7XB.js";
11
11
  import {
12
12
  applyToolSurfaceConstraints
13
13
  } from "./chunk-2Q3LOAFE.js";
@@ -38,7 +38,7 @@ import {
38
38
  } from "./chunk-Y6ROFCZO.js";
39
39
  import {
40
40
  t
41
- } from "./chunk-CLTGWJVT.js";
41
+ } from "./chunk-E4LYPSYM.js";
42
42
  import {
43
43
  asTrimmedNonEmptyStringArray
44
44
  } from "./chunk-I42VC5KR.js";
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  toolRegistry
3
- } from "./chunk-HKWGI3TM.js";
3
+ } from "./chunk-4HAB2O5R.js";
4
4
  import {
5
5
  runtime_default
6
- } from "./chunk-326HCB6L.js";
6
+ } from "./chunk-G7RADKSA.js";
7
7
  import {
8
8
  canonicalizeToolNames
9
9
  } from "./chunk-AKE53VMW.js";
@@ -15,10 +15,10 @@ import {
15
15
  } from "./chunk-Y6ROFCZO.js";
16
16
  import {
17
17
  scheduleWindowsSelfUpdate
18
- } from "./chunk-5E4FSR4J.js";
18
+ } from "./chunk-EPJFGQYO.js";
19
19
  import {
20
20
  t
21
- } from "./chunk-CLTGWJVT.js";
21
+ } from "./chunk-E4LYPSYM.js";
22
22
 
23
23
  // packages/cli/updateCommands.ts
24
24
  import { existsSync, readFileSync, accessSync, constants } from "node:fs";
@@ -981,6 +981,7 @@ var secretStrings = {
981
981
  nolo secret set <name> <value|json> Set a secret via argv (legacy; discouraged: exposes secrets in shell history and process list)
982
982
  nolo secret delete <name> Delete a secret
983
983
  nolo secret run --with <names> -- <cmd> Safely inject secret environment variables and run a command
984
+ Env var name = secret name upper-cased, non-alphanumerics -> _ (my_api_key -> MY_API_KEY)
984
985
  nolo secret bind <alias> <ref> [--env <ENV_NAME>] Bind a managed credential reference to an alias
985
986
  nolo secret list-bindings List configured secret alias bindings
986
987
  nolo secret unbind <alias> Remove a secret alias binding
@@ -993,6 +994,7 @@ var secretStrings = {
993
994
  nolo secret set <name> <value|json> \u901A\u8FC7\u547D\u4EE4\u884C\u53C2\u6570\u8BBE\u7F6E secret\uFF08\u517C\u5BB9\u65E7\u8BED\u6CD5\uFF1B\u4E0D\u63A8\u8350\uFF1A\u51ED\u636E\u4F1A\u66B4\u9732\u5728\u8FDB\u7A0B\u5217\u8868\u4E0E shell \u5386\u53F2\u4E2D\uFF09
994
995
  nolo secret delete <name> \u5220\u9664\u6307\u5B9A\u7684 secret
995
996
  nolo secret run --with <names> -- <cmd> \u5B89\u5168\u6CE8\u5165 secret \u73AF\u5883\u53D8\u91CF\u5E76\u6267\u884C\u5B50\u547D\u4EE4
997
+ \u73AF\u5883\u53D8\u91CF\u540D = \u79D8\u94A5\u540D\u5168\u5927\u5199\u3001\u975E\u5B57\u6BCD\u6570\u5B57\u66FF\u6362\u4E3A _\uFF08my_api_key -> MY_API_KEY\uFF09
996
998
  nolo secret bind <alias> <ref> [--env <ENV_NAME>] \u5C06\u53D7\u63A7\u51ED\u636E\u5F15\u7528\u7ED1\u5B9A\u5230\u522B\u540D
997
999
  nolo secret list-bindings \u5217\u51FA\u5DF2\u914D\u7F6E\u7684 secret \u522B\u540D\u7ED1\u5B9A
998
1000
  nolo secret unbind <alias> \u89E3\u9664\u6307\u5B9A\u7684 secret \u522B\u540D\u7ED1\u5B9A
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  t
3
- } from "./chunk-CLTGWJVT.js";
3
+ } from "./chunk-E4LYPSYM.js";
4
4
 
5
5
  // packages/cli/windowsSelfUpdate.ts
6
6
  import { spawn } from "node:child_process";
@@ -5,7 +5,7 @@ import {
5
5
  inlineImageUrlsForCustomProvider,
6
6
  prepareTools,
7
7
  shouldInlineImageUrlsForAgent
8
- } from "./chunk-BLFZULEQ.js";
8
+ } from "./chunk-DP7YE3D3.js";
9
9
  import {
10
10
  CONFIRMATION_INPUT_KEYS,
11
11
  INVALID_TOOL_ARGS_REPLACEMENT,
@@ -14,16 +14,16 @@ import {
14
14
  performFetchRequest,
15
15
  sanitizeOutboundMessages,
16
16
  stripModelToolArgs
17
- } from "./chunk-YV2RSLM4.js";
17
+ } from "./chunk-W6L3E75W.js";
18
18
  import {
19
19
  findToolExecutor,
20
20
  toolDefinitionsByName
21
- } from "./chunk-HKWGI3TM.js";
21
+ } from "./chunk-4HAB2O5R.js";
22
22
  import {
23
23
  classifyApiError,
24
24
  classifyGenerationError,
25
25
  extractErrorDiagnostics
26
- } from "./chunk-RIKSN62L.js";
26
+ } from "./chunk-Y6KUC75Q.js";
27
27
  import {
28
28
  createSSEParser,
29
29
  createToolRunId,
@@ -32,7 +32,7 @@ import {
32
32
  toolRunSetPending,
33
33
  toolRunStarted,
34
34
  toolRunSucceeded
35
- } from "./chunk-C7PKPHK6.js";
35
+ } from "./chunk-LK46VB57.js";
36
36
  import {
37
37
  getPublicImageAgentMode
38
38
  } from "./chunk-VIDPVFP3.js";
@@ -43,17 +43,22 @@ import {
43
43
  addToolMessage,
44
44
  messageStreamEnd,
45
45
  messageStreaming,
46
+ toast,
46
47
  toolResultNeedsUserConfirmation,
47
48
  updateToolMessage
48
- } from "./chunk-326HCB6L.js";
49
+ } from "./chunk-G7RADKSA.js";
49
50
  import {
50
51
  streamAgentChatTurn
51
- } from "./chunk-ETTDZBK5.js";
52
+ } from "./chunk-OBOAMKAA.js";
52
53
  import {
53
54
  addActiveController,
55
+ getActiveDialogKey,
54
56
  removeActiveController,
55
57
  tokenUsageLiveUpdate
56
58
  } from "./chunk-OWYYDMGJ.js";
59
+ import {
60
+ require_react
61
+ } from "./chunk-YDH3FDFQ.js";
57
62
  import {
58
63
  selectCurrentServer
59
64
  } from "./chunk-HWZT5DKX.js";
@@ -120,6 +125,9 @@ import {
120
125
  import {
121
126
  asOptionalTrimmedString
122
127
  } from "./chunk-G3SUCT4W.js";
128
+ import {
129
+ __toESM
130
+ } from "./chunk-4VNS5WPM.js";
123
131
 
124
132
  // packages/integrations/openai/filterAndCleanMessages.ts
125
133
  var isValidMessagePart = (part) => {
@@ -333,6 +341,115 @@ async function persistToolMessages(dispatch, messages, options = {}) {
333
341
  }
334
342
  }
335
343
 
344
+ // packages/app/appInspector/appInspectorStore.ts
345
+ var import_react = __toESM(require_react());
346
+ var listeners = /* @__PURE__ */ new Set();
347
+ var version = 0;
348
+ var previewOpen = false;
349
+ var previewUrl = null;
350
+ var previewTarget = null;
351
+ var notify = () => {
352
+ for (const listener of listeners) {
353
+ try {
354
+ listener();
355
+ } catch {
356
+ }
357
+ }
358
+ };
359
+ var bump = () => {
360
+ version += 1;
361
+ notify();
362
+ };
363
+ function openPreviewTarget(target) {
364
+ previewOpen = true;
365
+ previewTarget = target;
366
+ if (target.kind === "dev" || target.kind === "url") {
367
+ previewUrl = target.url;
368
+ } else {
369
+ previewUrl = null;
370
+ }
371
+ bump();
372
+ }
373
+ function getPreviewTarget() {
374
+ return previewTarget;
375
+ }
376
+
377
+ // packages/app/appInspector/htmlArtifactClient.ts
378
+ async function readHtmlArtifact(id, options) {
379
+ const fetchFn = options?.fetchImpl ?? (typeof fetch !== "undefined" ? fetch : void 0);
380
+ if (!fetchFn) {
381
+ throw new Error("fetch is not available in current environment");
382
+ }
383
+ const base = options?.serverOrigin ? options.serverOrigin.replace(/\/+$/, "") : "";
384
+ const url = `${base}/api/html-artifacts`;
385
+ const headers = {
386
+ "Content-Type": "application/json"
387
+ };
388
+ if (options?.authToken) {
389
+ headers.Authorization = `Bearer ${options.authToken}`;
390
+ }
391
+ const response = await fetchFn(url, {
392
+ method: "POST",
393
+ headers,
394
+ credentials: "include",
395
+ body: JSON.stringify({
396
+ action: "read",
397
+ id
398
+ })
399
+ });
400
+ if (!response.ok) {
401
+ const errorText = await response.text().catch(() => "");
402
+ throw new Error(`\u8BFB\u53D6 HTML \u6210\u54C1\u5931\u8D25 (${response.status}): ${errorText || response.statusText}`);
403
+ }
404
+ const data = await response.json();
405
+ if (!data?.artifact) {
406
+ throw new Error("\u670D\u52A1\u7AEF\u672A\u8FD4\u56DE\u6709\u6548\u7684 HTML \u6210\u54C1\u5BF9\u8C61");
407
+ }
408
+ return data.artifact;
409
+ }
410
+
411
+ // packages/chat/messages/web/htmlArtifactEventChannel.ts
412
+ var latestExecution = 0;
413
+ async function receiveHtmlArtifactToolResult(toolName, result, dialogKey, isError = false) {
414
+ if (isError || toolName !== "createHtmlArtifact" && toolName !== "updateHtmlArtifact") return;
415
+ let data = result;
416
+ if (typeof data === "string") {
417
+ try {
418
+ data = JSON.parse(data);
419
+ } catch {
420
+ return;
421
+ }
422
+ }
423
+ if (!data || data.error) return;
424
+ data = data.rawData ?? data;
425
+ if (!data || typeof data !== "object" || data.error) return;
426
+ const artifact = data.artifact ?? data;
427
+ if (!artifact || typeof artifact !== "object") return;
428
+ const id = data.id ?? artifact.id;
429
+ const ownerDialog = data.dialogKey ?? artifact.dialogKey;
430
+ if (typeof id !== "string" || !id || ownerDialog !== dialogKey || getActiveDialogKey() !== dialogKey) return;
431
+ const execution = ++latestExecution;
432
+ const targetBeforeRead = getPreviewTarget();
433
+ try {
434
+ const latest = await readHtmlArtifact(id);
435
+ if (execution !== latestExecution || getActiveDialogKey() !== dialogKey || getPreviewTarget() !== targetBeforeRead) return;
436
+ if (latest.id !== id || latest.dialogKey !== dialogKey || !latest.html) throw new Error("\u6210\u54C1\u8BFB\u53D6\u7ED3\u679C\u4E0D\u5339\u914D");
437
+ openPreviewTarget({ kind: "artifact", artifactId: latest.id, dialogKey: latest.dialogKey, title: latest.title, html: latest.html });
438
+ } catch {
439
+ if (execution === latestExecution && getActiveDialogKey() === dialogKey) {
440
+ toast.error("\u7F51\u9875\u5DF2\u4FDD\u5B58\uFF0C\u4F46\u8BFB\u53D6\u6700\u65B0\u5185\u5BB9\u5931\u8D25\u3002\u8BF7\u5728\u7ED3\u679C\u5361\u7247\u4E2D\u91CD\u8BD5\u6253\u5F00\u3002");
441
+ }
442
+ }
443
+ }
444
+ function deliverHtmlArtifactToolResult(toolName, content, dialogKey) {
445
+ if (!dialogKey || toolName !== "createHtmlArtifact" && toolName !== "updateHtmlArtifact") {
446
+ return;
447
+ }
448
+ void receiveHtmlArtifactToolResult(toolName, content, dialogKey).catch(
449
+ (error) => console.error("[htmlArtifact] live result delivery failed", error)
450
+ );
451
+ }
452
+
336
453
  // packages/ai/chat/updateTotalUsage.ts
337
454
  function updateTotalUsage(currentUsage, newUsageChunk) {
338
455
  if (!newUsageChunk) {
@@ -762,6 +879,9 @@ var handleToolCalls = createAsyncThunk(
762
879
  const toolName = result.toolName;
763
880
  let rawResult = result.rawResult;
764
881
  let toolPayload = result.toolPayload;
882
+ if (toolPayload?.status === "succeeded") {
883
+ deliverHtmlArtifactToolResult(toolName, rawResult, dialogKey);
884
+ }
765
885
  if (toolName) {
766
886
  const completedToolMessage = {
767
887
  ...runningToolMessage,
@@ -1975,6 +2095,7 @@ ${errorText}`
1975
2095
  export {
1976
2096
  filterAndCleanMessages,
1977
2097
  persistToolMessages,
2098
+ deliverHtmlArtifactToolResult,
1978
2099
  handleToolCalls,
1979
2100
  updateTotalUsage,
1980
2101
  readStreamChunk,
@@ -11,7 +11,7 @@ import {
11
11
  } from "./chunk-523DITKR.js";
12
12
  import {
13
13
  runLlm
14
- } from "./chunk-ETTDZBK5.js";
14
+ } from "./chunk-OBOAMKAA.js";
15
15
  import {
16
16
  isMediaToolConfirmation
17
17
  } from "./chunk-QYPE3TS3.js";
@@ -11077,7 +11077,7 @@ var messageSlice = createSliceWithThunks({
11077
11077
  runtimeOptions: args.runtimeOptions
11078
11078
  });
11079
11079
  if (agentKeyToUse) {
11080
- const { streamAgentChatTurn } = await import("./agentSlice-BFDKYW6H.js");
11080
+ const { streamAgentChatTurn } = await import("./agentSlice-H47GA3AE.js");
11081
11081
  await dispatch(
11082
11082
  streamAgentChatTurn({
11083
11083
  agentKey: agentKeyToUse,
@@ -13891,7 +13891,7 @@ var deleteDialogThunk = async (payload, thunkApi) => {
13891
13891
  }
13892
13892
  if (isCurrentDialog) {
13893
13893
  await thunkApi.dispatch(resetMsgs());
13894
- const { clearPendingAttachments: clearPendingAttachments2 } = await import("./dialogSlice-GEGACCH2.js");
13894
+ const { clearPendingAttachments: clearPendingAttachments2 } = await import("./dialogSlice-JPKOEWA7.js");
13895
13895
  dispatch(clearPendingAttachments2());
13896
13896
  }
13897
13897
  return { dialogKey, isCurrentDialog, attachmentPlan };
@@ -13899,15 +13899,15 @@ var deleteDialogThunk = async (payload, thunkApi) => {
13899
13899
 
13900
13900
  // packages/chat/dialog/dialogSlice.ts
13901
13901
  var runCreateDialogAction = async (args, thunkApi) => {
13902
- const { createDialogAction } = await import("./createDialogAction-CKMZK5JQ.js");
13902
+ const { createDialogAction } = await import("./createDialogAction-X6YMBBIP.js");
13903
13903
  return createDialogAction(args, thunkApi);
13904
13904
  };
13905
13905
  var runCreateAgentAutomationAction = async (args, thunkApi) => {
13906
- const { createAgentAutomationAction } = await import("./createAgentAutomationAction-WQCH5HR2.js");
13906
+ const { createAgentAutomationAction } = await import("./createAgentAutomationAction-QKYRYNB7.js");
13907
13907
  return createAgentAutomationAction(args, thunkApi);
13908
13908
  };
13909
13909
  var runUpdateDialogTitleAction = async (args, thunkApi) => {
13910
- const { updateDialogTitleAction } = await import("./updateDialogTitleAction-24QO27NT.js");
13910
+ const { updateDialogTitleAction } = await import("./updateDialogTitleAction-QGH4ZL4E.js");
13911
13911
  return updateDialogTitleAction(args, thunkApi);
13912
13912
  };
13913
13913
  var runAddDialogAgentAction = async (args, thunkApi) => {
@@ -13931,7 +13931,7 @@ var runSetDialogExtraReferencesAction = async (args, thunkApi) => {
13931
13931
  return setDialogExtraReferencesAction(args, thunkApi);
13932
13932
  };
13933
13933
  var runHandleSendMessageAction = async (args, thunkApi) => {
13934
- const { handleSendMessageAction } = await import("./handleSendMessageAction-4BACQWOG.js");
13934
+ const { handleSendMessageAction } = await import("./handleSendMessageAction-OBYLLUON.js");
13935
13935
  return handleSendMessageAction(args, thunkApi);
13936
13936
  };
13937
13937
  function clearDialogState() {
@@ -13944,7 +13944,7 @@ var createPageAndAddReference = createAsyncThunk(
13944
13944
  async (payload, { dispatch, getState, rejectWithValue }) => {
13945
13945
  const { slateData, jsonData, title, type, fileId, groupId, dialogKey } = payload;
13946
13946
  try {
13947
- const { createDocState } = await import("./docStore-B4EFT53J.js");
13947
+ const { createDocState } = await import("./docStore-YUQJ22PU.js");
13948
13948
  const pageKey = await createDocState(
13949
13949
  { slateData, title },
13950
13950
  { dispatch, getState }
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  resolveBuiltinCapability,
3
3
  resolveBuiltinSkillEntry
4
- } from "./chunk-LEX6DEH4.js";
4
+ } from "./chunk-Y6M7KJOA.js";
5
5
  import {
6
6
  noloAgentId
7
7
  } from "./chunk-Y6ORVLSS.js";
@@ -92,7 +92,7 @@ var buildIdentityBlock = (input) => {
92
92
  var DELETE_SAFETY_RED_LINE = [
93
93
  "\u3010\u5220\u9664\u5B89\u5168\u7EA2\u7EBF \xB7 \u6700\u9AD8\u4F18\u5148\u7EA7\u3011",
94
94
  "\u9664\u4E0B\u8FF0\u552F\u4E00\u4F8B\u5916\u5916\uFF0C\u4EFB\u4F55\u5220\u9664\u64CD\u4F5C\uFF08\u6587\u4EF6\u3001\u6570\u636E\u3001\u5E73\u53F0/\u8FDC\u7AEF\u5185\u5BB9\u3001\u6D88\u606F\u7B49\uFF0C\u65E0\u8BBA\u5355\u6761\u6216\u6279\u91CF\uFF09\u6267\u884C\u524D\uFF0C\u5FC5\u987B\u5148\u5411\u7528\u6237\u5448\u73B0\u5B8C\u6574\u5F85\u5220\u6E05\u5355\uFF08\u540D\u79F0/\u8DEF\u5F84/\u6807\u9898\u7B49\u53EF\u8BC6\u522B\u4FE1\u606F\uFF0C\u4E0D\u5F97\u622A\u65AD\uFF09\uFF0C\u5E76\u83B7\u5F97\u7528\u6237\u660E\u786E\u786E\u8BA4\u540E\u624D\u53EF\u6267\u884C\uFF1B\u4E25\u7981\u7528\u6A21\u7CCA\u5B9A\u4F4D\uFF08\u5982\u201C\u5217\u8868\u6700\u4E0B\u65B9\u201D\uFF09\u6307\u4EE3\u5220\u9664\u76EE\u6807\uFF0C\u4E25\u7981\u5148\u5220\u540E\u62A5\u3002\u5B88\u536B\u68C0\u67E5\u4E0E\u5220\u9664\u52A8\u4F5C**\u4E0D\u5F97\u7528 `;` \u8FDE\u63A5**\u2014\u2014\u5FC5\u987B\u7528 `&&`/`if` \u8BA9\u5220\u9664\u52A8\u4F5C\u5904\u5728\u5B88\u536B\u7684\u6210\u8D25\u8DEF\u5F84\u4E0A\uFF0C\u5426\u5219\u5B88\u536B\u6253\u5370\u7684\u300C\u6709\u5DEE\u5F02 \u2192 \u4E0D\u5220\u300D\u62E6\u4E0D\u4F4F\u7D27\u968F\u5176\u540E\u88AB `;` \u4E32\u8054\u6267\u884C\u7684\u5220\u9664\u547D\u4EE4\uFF082026-10-07 \u771F\u5B9E\u8E29\u5751\uFF09\u3002\uFF082026-09-26 \u6279\u91CF\u8BEF\u5220\u4E8B\u6545\u6559\u8BAD\uFF09",
95
- "\u552F\u4E00\u4F8B\u5916\xB7\u53EF\u9A8C\u8BC1\u6062\u590D\u7684\u4EFB\u52A1\u6E05\u7406\uFF1A\u672C\u6B21\u4EFB\u52A1\u4EB2\u81EA\u521B\u5EFA/\u542F\u52A8\u3001\u4E14\u6E05\u7406\u524D\u5DF2\u7528\u5B9E\u9645\u547D\u4EE4\u9010\u9879\u9A8C\u8BC1\u300C\u8981\u5220\u7684\u5168\u90E8\u5185\u5BB9\u53E6\u6709\u5B8C\u6574\u526F\u672C\u3001\u5220\u4E86\u53EF\u65E0\u635F\u6062\u590D\u300D\u7684\u8D44\u6E90\uFF0C\u53EF\u514D\u4E8B\u524D\u6E05\u5355\u4E0E\u786E\u8BA4\uFF0C\u6E05\u7406\u540E\u5728\u6C47\u62A5\u4E2D\u9010\u9879\u5217\u660E\uFF1B\u7CBE\u786E\u5B9A\u4F4D\u4ECD\u5FC5\u987B\u3002\u4EC5\u9650\uFF1A\u2460 \u5DF2\u5B8C\u6574\u5408\u5165\u4FDD\u7559\u7684\u96C6\u6210\u5206\u652F\uFF08git merge-base --is-ancestor \u9A8C\u8BC1\uFF09\u7684\u672C\u5730\u5206\u652F\u4E0E worktree\uFF0C\u4E14\u9664 a)\u3001b) \u4E24\u7C7B\u5916\uFF0C`git status --porcelain --ignored` \u8F93\u51FA\u5FC5\u987B\u4E3A\u7A7A\uFF1Aa) `!! node_modules/`\uFF08\u53CA `packages/*/node_modules/`\uFF09\u2014\u2014\u987B\u786E\u8BA4\u5C5E\u4F9D\u8D56\u5B89\u88C5\u4EA7\u7269\uFF0C\u4E14\u80FD\u7528\u4ED3\u5E93\u5185\u65E2\u6709\u547D\u4EE4\uFF08\u5982 `bun install`\uFF0C\u914D\u5408\u4ED3\u5E93\u5185 `bun.lock` \u4E0E `package.json`\uFF09\u65E0\u635F\u91CD\u5EFA\uFF1Bnode_modules \u91CC\u82E5\u6DF7\u6709\u975E\u4F9D\u8D56\u4EA7\u7269\uFF08\u4F8B\u5982\u672C\u5730\u624B\u5DE5\u653E\u7F6E\u7684\u811A\u672C\u3001\u8865\u4E01\u8FC7\u7684\u5305\u3001\u6216\u6307\u5411 worktree \u5916\u7684\u7B26\u53F7\u94FE\u63A5\uFF09\uFF0C\u5219\u8BE5\u76EE\u5F55\u6574\u4F53\u4E0D\u7B97\u53EF\u518D\u751F\uFF0C\u9700\u6309\u539F\u8DEF\u5F84\u9010\u9879\u5224\u65AD\uFF1Bb) \u88AB\u5FFD\u7565\u7684**\u53EF\u518D\u751F\u6784\u5EFA\u4EA7\u7269**\uFF08\u5982 `*.tsbuildinfo`\u3001\u6784\u5EFA/\u7F16\u8BD1\u7F13\u5B58\uFF09\u2014\u2014\u987B\u9010\u9879\u5217\u51FA\u8DEF\u5F84\uFF0C\u5E76\u7ED9\u51FA\u80FD\u91CD\u65B0\u751F\u6210\u5B83\u7684**\u4ED3\u5E93\u5185\u65E2\u6709\u547D\u4EE4**\uFF08\u5F53\u6B21\u5B9E\u9645\u6267\u884C\u901A\u8FC7\uFF1B\u6307\u4E0D\u51FA\u547D\u4EE4\u6216\u8DD1\u4E0D\u901A\u7684\u4E00\u5F8B\u4E0D\u653E\u884C\uFF09\uFF0C\u786E\u8BA4\u53EF\u7531\u8BE5\u547D\u4EE4\u65E0\u635F\u518D\u751F\u3001\u4E0D\u542B\u552F\u4E00\u7ED3\u679C\u6216\u7528\u6237\u6570\u636E\u3001\u4E14\u4E0D\u662F\u624B\u5DE5\u6539\u52A8\u8FC7\u7684\u4EA7\u7269\uFF1B\u4E0B\u5217\u4E00\u5F8B\u4E0D\u5C5E\u6B64\u7C7B\uFF1A`.env*` \u7B49\u51ED\u8BC1\u3001`data/`\u3001`nolo/`\u3001`.nolo/`\u3001\u4EFB\u4F55\u6570\u636E\u5E93/LevelDB/WAL/\u5BA1\u8BA1/\u65E5\u5FD7/\u62A5\u544A/\u5BFC\u51FA\u76EE\u5F55\u3001`artifacts/`\u3001\u624B\u5DE5\u6539\u52A8\u8FC7\u7684 `dist/`\u3001`public/` \u4E0B\u7684\u4EA7\u7269\u76EE\u5F55\uFF1B\u300C\u5DF2\u88AB gitignore\u300D\u300C\u662F\u6784\u5EFA\u4EA7\u7269\u300D\u300C\u53EF\u91CD\u65B0\u6784\u5EFA\u300D\u7B49\u672A\u7ECF\u547D\u4EE4\u6838\u5B9E\u7684\u8BF4\u6CD5\u4E0D\u6784\u6210\u653E\u884C\u7406\u7531\u3002\u6CE8\u610F `git worktree remove` \u4E0D\u4F1A\u56E0 ignored \u5185\u5BB9\u800C\u62D2\u7EDD\uFF08\u4F1A\u8FDE\u5176\u4E00\u5E76\u5220\u9664\uFF09\uFF0C\u672C\u4F8B\u5916\u6CA1\u6709\u673A\u68B0\u515C\u5E95\uFF0C\u4E0A\u8FF0\u9010\u9879\u6838\u5B9E\u662F\u552F\u4E00\u9632\u7EBF\uFF1B\u53EA\u7528\u4E0D\u5E26 --force \u7684 git worktree remove \u4E0E git branch -d\uFF0C\u7981\u6B62 -D\u3001--force\u3001rm -rf \u66FF\u4EE3\uFF1B\u2461 \u672C\u6B21\u521B\u5EFA\u3001\u5185\u5BB9\u53EA\u662F\u53EF\u518D\u751F\u4E2D\u95F4\u4EA7\u7269\uFF08\u65E5\u5FD7\u3001\u63A2\u9488\u811A\u672C\u3001\u622A\u56FE\u3001\u6784\u5EFA\u7F13\u5B58\uFF09\u7684 /tmp \u6587\u4EF6\uFF0C\u542B\u552F\u4E00\u7ED3\u679C\u6216\u7528\u6237\u6570\u636E\u7684\u4E0D\u7B97\uFF1B\u2462 \u672C\u6B21\u542F\u52A8\u3001\u6309\u5F53\u6B21\u8BB0\u5F55\u7684 PID \u6838\u5B9E\u8EAB\u4EFD\u3001\u7EC8\u6B62\u4E0D\u4E22\u672A\u4FDD\u5B58\u72B6\u6001\u7684\u540E\u53F0\u8FDB\u7A0B\u3002\u201C\u6709\u5907\u4EFD\u201D\u201C\u5728 /tmp\u201D\u201C\u5DF2\u5408\u5E76\u201D\u7B49\u672A\u7ECF\u547D\u4EE4\u6838\u5B9E\u7684\u5224\u65AD\u4E0D\u6784\u6210\u9A8C\u8BC1\uFF1B\u4EFB\u4E00\u9879\u65E0\u6CD5\u9A8C\u8BC1\uFF0C\u4E00\u5F8B\u56DE\u5230\u4E0A\u9762\u7684\u786E\u8BA4\u6D41\u7A0B\u3002\u7528\u6237\u6570\u636E\u3001\u8FDC\u7AEF/\u5E73\u53F0\u5185\u5BB9\u3001\u4ED6\u4EBA\u6216\u65E2\u6709\u7684\u6587\u4EF6\u3001\u5206\u652F\u3001stash \u6C38\u8FDC\u4E0D\u9002\u7528\u6B64\u4F8B\u5916\u3002"
95
+ "\u552F\u4E00\u4F8B\u5916\xB7\u53EF\u9A8C\u8BC1\u6062\u590D\u7684\u4EFB\u52A1\u6E05\u7406\uFF1A\u672C\u6B21\u4EFB\u52A1\u4EB2\u81EA\u521B\u5EFA/\u542F\u52A8\u3001\u4E14\u6E05\u7406\u524D\u5DF2\u7528\u5B9E\u9645\u547D\u4EE4\u9010\u9879\u9A8C\u8BC1\u300C\u8981\u5220\u7684\u5168\u90E8\u5185\u5BB9\u53E6\u6709\u5B8C\u6574\u526F\u672C\u3001\u5220\u4E86\u53EF\u65E0\u635F\u6062\u590D\u300D\u7684\u8D44\u6E90\uFF0C\u53EF\u514D\u4E8B\u524D\u6E05\u5355\u4E0E\u786E\u8BA4\uFF0C\u6E05\u7406\u540E\u5728\u6C47\u62A5\u4E2D\u9010\u9879\u5217\u660E\uFF1B\u7CBE\u786E\u5B9A\u4F4D\u4ECD\u5FC5\u987B\u3002\u4EC5\u9650\uFF1A\u2460 \u5DF2\u5B8C\u6574\u5408\u5165\u4FDD\u7559\u7684\u96C6\u6210\u5206\u652F\uFF08git merge-base --is-ancestor \u9A8C\u8BC1\uFF09\u7684\u672C\u5730\u5206\u652F\u4E0E worktree\uFF0C\u4E14\u9664 a)\u3001b)\u3001c) \u4E09\u7C7B\u5916\uFF0C`git status --porcelain --ignored` \u8F93\u51FA\u5FC5\u987B\u4E3A\u7A7A\uFF1Aa) `!! node_modules/`\uFF08\u53CA `packages/*/node_modules/`\uFF09\u2014\u2014\u987B\u786E\u8BA4\u5C5E\u4F9D\u8D56\u5B89\u88C5\u4EA7\u7269\uFF0C\u4E14\u80FD\u7528\u4ED3\u5E93\u5185\u65E2\u6709\u547D\u4EE4\uFF08\u5982 `bun install`\uFF0C\u914D\u5408\u4ED3\u5E93\u5185 `bun.lock` \u4E0E `package.json`\uFF09\u65E0\u635F\u91CD\u5EFA\uFF1Bnode_modules \u91CC\u82E5\u6DF7\u6709\u975E\u4F9D\u8D56\u4EA7\u7269\uFF08\u4F8B\u5982\u672C\u5730\u624B\u5DE5\u653E\u7F6E\u7684\u811A\u672C\u3001\u8865\u4E01\u8FC7\u7684\u5305\u3001\u6216\u6307\u5411 worktree \u5916\u7684\u7B26\u53F7\u94FE\u63A5\uFF09\uFF0C\u5219\u8BE5\u76EE\u5F55\u6574\u4F53\u4E0D\u7B97\u53EF\u518D\u751F\uFF0C\u9700\u6309\u539F\u8DEF\u5F84\u9010\u9879\u5224\u65AD\uFF1Bb) \u88AB\u5FFD\u7565\u7684**\u53EF\u518D\u751F\u6784\u5EFA\u4EA7\u7269**\uFF08\u5982 `*.tsbuildinfo`\u3001\u6784\u5EFA/\u7F16\u8BD1\u7F13\u5B58\uFF09\u2014\u2014\u987B\u9010\u9879\u5217\u51FA\u8DEF\u5F84\uFF0C\u5E76\u7ED9\u51FA\u80FD\u91CD\u65B0\u751F\u6210\u5B83\u7684**\u4ED3\u5E93\u5185\u65E2\u6709\u547D\u4EE4**\uFF08\u5F53\u6B21\u5B9E\u9645\u6267\u884C\u901A\u8FC7\uFF1B\u6307\u4E0D\u51FA\u547D\u4EE4\u6216\u8DD1\u4E0D\u901A\u7684\u4E00\u5F8B\u4E0D\u653E\u884C\uFF09\uFF0C\u786E\u8BA4\u53EF\u7531\u8BE5\u547D\u4EE4\u65E0\u635F\u518D\u751F\u3001\u4E0D\u542B\u552F\u4E00\u7ED3\u679C\u6216\u7528\u6237\u6570\u636E\u3001\u4E14\u4E0D\u662F\u624B\u5DE5\u6539\u52A8\u8FC7\u7684\u4EA7\u7269\uFF1Bc) \u5F53\u6B21\u4EFB\u52A1\u81EA\u5EFA worktree \u5185\u3001**\u672C\u6B21\u4EFB\u52A1\u4EA7\u751F**\u7684 `.nolo/spills/`\uFF08\u5DE5\u5177\u8F93\u51FA\u6EA2\u51FA\u65E5\u5FD7\u843D\u70B9\uFF0C\u7531 `resolveSpillDirectory` \u4EA7\u751F\uFF09\u2014\u2014\u5C5E\u53EF\u518D\u751F\u4E2D\u95F4\u4EA7\u7269\uFF0C\u53EF\u968F\u8BE5 worktree \u4E00\u5E76\u6E05\u7406\uFF1B\u4E0B\u5217\u4E00\u5F8B\u4E0D\u5C5E\u6B64\u7C7B\uFF1A`.env*` \u7B49\u51ED\u8BC1\u3001`data/`\u3001`nolo/`\u3001`.nolo/` \u4E2D\u9664\u672C\u6B21\u4EFB\u52A1\u4EA7\u751F\u7684 `spills/` \u5916\u7684\u5185\u5BB9\uFF08\u5982 `credentials/`\uFF09\u3001\u4EFB\u4F55\u6570\u636E\u5E93/LevelDB/WAL/\u5BA1\u8BA1/\u65E5\u5FD7/\u62A5\u544A/\u5BFC\u51FA\u76EE\u5F55\u3001`artifacts/`\u3001\u624B\u5DE5\u6539\u52A8\u8FC7\u7684 `dist/`\u3001`public/` \u4E0B\u7684\u4EA7\u7269\u76EE\u5F55\uFF1B\u300C\u5DF2\u88AB gitignore\u300D\u300C\u662F\u6784\u5EFA\u4EA7\u7269\u300D\u300C\u53EF\u91CD\u65B0\u6784\u5EFA\u300D\u7B49\u672A\u7ECF\u547D\u4EE4\u6838\u5B9E\u7684\u8BF4\u6CD5\u4E0D\u6784\u6210\u653E\u884C\u7406\u7531\u3002\u6CE8\u610F `git worktree remove` \u4E0D\u4F1A\u56E0 ignored \u5185\u5BB9\u800C\u62D2\u7EDD\uFF08\u4F1A\u8FDE\u5176\u4E00\u5E76\u5220\u9664\uFF09\uFF0C\u672C\u4F8B\u5916\u6CA1\u6709\u673A\u68B0\u515C\u5E95\uFF0C\u4E0A\u8FF0\u9010\u9879\u6838\u5B9E\u662F\u552F\u4E00\u9632\u7EBF\uFF1B\u53EA\u7528\u4E0D\u5E26 --force \u7684 git worktree remove \u4E0E git branch -d\uFF0C\u7981\u6B62 -D\u3001--force\u3001rm -rf \u66FF\u4EE3\uFF1B\u2461 \u672C\u6B21\u521B\u5EFA\u3001\u5185\u5BB9\u53EA\u662F\u53EF\u518D\u751F\u4E2D\u95F4\u4EA7\u7269\uFF08\u65E5\u5FD7\u3001\u63A2\u9488\u811A\u672C\u3001\u622A\u56FE\u3001\u6784\u5EFA\u7F13\u5B58\uFF09\u7684 /tmp \u6587\u4EF6\uFF0C\u542B\u552F\u4E00\u7ED3\u679C\u6216\u7528\u6237\u6570\u636E\u7684\u4E0D\u7B97\uFF1B\u2462 \u672C\u6B21\u542F\u52A8\u3001\u6309\u5F53\u6B21\u8BB0\u5F55\u7684 PID \u6838\u5B9E\u8EAB\u4EFD\u3001\u7EC8\u6B62\u4E0D\u4E22\u672A\u4FDD\u5B58\u72B6\u6001\u7684\u540E\u53F0\u8FDB\u7A0B\u3002\u201C\u6709\u5907\u4EFD\u201D\u201C\u5728 /tmp\u201D\u201C\u5DF2\u5408\u5E76\u201D\u7B49\u672A\u7ECF\u547D\u4EE4\u6838\u5B9E\u7684\u5224\u65AD\u4E0D\u6784\u6210\u9A8C\u8BC1\uFF1B\u4EFB\u4E00\u9879\u65E0\u6CD5\u9A8C\u8BC1\uFF0C\u4E00\u5F8B\u56DE\u5230\u4E0A\u9762\u7684\u786E\u8BA4\u6D41\u7A0B\u3002\u7528\u6237\u6570\u636E\u3001\u8FDC\u7AEF/\u5E73\u53F0\u5185\u5BB9\u3001\u4ED6\u4EBA\u6216\u65E2\u6709\u7684\u6587\u4EF6\u3001\u5206\u652F\u3001stash \u6C38\u8FDC\u4E0D\u9002\u7528\u6B64\u4F8B\u5916\u3002"
96
96
  ].join("\n");
97
97
 
98
98
  // packages/agent-runtime/credentialHygiene.ts
@@ -1,10 +1,10 @@
1
1
  import {
2
2
  fetchReferenceContents,
3
3
  resolveReferenceAssets
4
- } from "./chunk-RIKSN62L.js";
4
+ } from "./chunk-Y6KUC75Q.js";
5
5
  import {
6
6
  updateTokensAction
7
- } from "./chunk-326HCB6L.js";
7
+ } from "./chunk-G7RADKSA.js";
8
8
  import {
9
9
  applyUpdateTokensFulfilled
10
10
  } from "./chunk-OWYYDMGJ.js";
@@ -6,7 +6,7 @@ import {
6
6
  } from "./chunk-WACI5I6V.js";
7
7
  import {
8
8
  t
9
- } from "./chunk-CLTGWJVT.js";
9
+ } from "./chunk-E4LYPSYM.js";
10
10
 
11
11
  // packages/cli/cliApiClient.ts
12
12
  var CliApiError = class extends Error {
@@ -20,6 +20,12 @@ import {
20
20
  OAUTH_PROVIDER_REFS,
21
21
  buildLocalAgentLookupKeys
22
22
  } from "./chunk-U7HTU2S7.js";
23
+ import {
24
+ customNativeAuthHeaders,
25
+ isCallerCancellation,
26
+ resolveCustomNativeApiKeyHeader,
27
+ resolveCustomNativeEndpoint
28
+ } from "./chunk-WOAZVUSN.js";
23
29
  import {
24
30
  LOCAL_CODEX_AGENT_ID,
25
31
  LOCAL_CODEX_AGENT_KEY,
@@ -57,11 +63,11 @@ import {
57
63
  import {
58
64
  inferCaptureIntent,
59
65
  resolveUserSkillRuntime
60
- } from "./chunk-Q7GNBUT4.js";
66
+ } from "./chunk-NEZGPBL7.js";
61
67
  import {
62
68
  inlineImageUrlsForCustomProvider,
63
69
  prepareTools
64
- } from "./chunk-BLFZULEQ.js";
70
+ } from "./chunk-DP7YE3D3.js";
65
71
  import {
66
72
  getServerProviderSecret
67
73
  } from "./chunk-HS7MLR74.js";
@@ -83,7 +89,7 @@ import {
83
89
  resolveCliLocalRuntimeKeyCapability,
84
90
  resolveCliLocalSpawnDispatch,
85
91
  resolveStartAgentRunCwd
86
- } from "./chunk-HKWGI3TM.js";
92
+ } from "./chunk-4HAB2O5R.js";
87
93
  import {
88
94
  fetchWithTransientRetry,
89
95
  isTransientFetchError
@@ -95,7 +101,7 @@ import {
95
101
  import {
96
102
  resolveAgentRequiredPackIds,
97
103
  resolveUserEnabledSkills
98
- } from "./chunk-DKZJJ2NQ.js";
104
+ } from "./chunk-I5PBXF7O.js";
99
105
  import {
100
106
  applyBuiltinAgentRuntimeOverride,
101
107
  applyTokenUsageToDayStats,
@@ -104,14 +110,14 @@ import {
104
110
  resolveBuiltinPlatformAgentConfig,
105
111
  runKeyed,
106
112
  validateAskChoiceInput
107
- } from "./chunk-326HCB6L.js";
113
+ } from "./chunk-G7RADKSA.js";
108
114
  import {
109
115
  BUILTIN_DIALOG_LLM_CHAT_FALLBACK_MODEL,
110
116
  BUILTIN_TITLE_LLM_CONFIG
111
117
  } from "./chunk-523DITKR.js";
112
118
  import {
113
119
  fetchServerSyncedCredential
114
- } from "./chunk-ETTDZBK5.js";
120
+ } from "./chunk-OBOAMKAA.js";
115
121
  import {
116
122
  getDefaultCliLocalRuntimeDb
117
123
  } from "./chunk-P64WRQYV.js";
@@ -127,7 +133,7 @@ import {
127
133
  applySystemBuiltinSkillFilter,
128
134
  expandEnabledPacks,
129
135
  resolveEffectiveEnabledPacks
130
- } from "./chunk-6OEPWZV7.js";
136
+ } from "./chunk-TPCDYNJK.js";
131
137
  import {
132
138
  DEFAULT_HYBRID_READ_TIMEOUT_MS,
133
139
  Duration_exports,
@@ -171,7 +177,7 @@ import {
171
177
  runExecShellGates,
172
178
  validateConfiguredRootExecutionLease,
173
179
  verifyOwnerRouteAck
174
- } from "./chunk-OIB4GARE.js";
180
+ } from "./chunk-4JBJG7XB.js";
175
181
  import {
176
182
  accumulateGeminiChunks,
177
183
  buildGeminiGenerateContentRequest,
@@ -275,9 +281,6 @@ import {
275
281
  import {
276
282
  compactWhitespace
277
283
  } from "./chunk-DWLEOOGR.js";
278
- import {
279
- isAbortError
280
- } from "./chunk-7DPNBQSV.js";
281
284
  import {
282
285
  createOAuthTokenStore,
283
286
  isTokenExpired,
@@ -380,7 +383,7 @@ import {
380
383
  import {
381
384
  agentRunCardLabels,
382
385
  t
383
- } from "./chunk-CLTGWJVT.js";
386
+ } from "./chunk-E4LYPSYM.js";
384
387
  import {
385
388
  createTokenDialogIndexKey,
386
389
  createTokenKey,
@@ -2876,113 +2879,6 @@ var resolveCodexOAuthTransport = async (ctx) => {
2876
2879
  return null;
2877
2880
  };
2878
2881
 
2879
- // packages/agent-runtime/customNativeWire.ts
2880
- var CHAT_COMPLETIONS_SUFFIX = /\/chat\/completions\/?$/;
2881
- function resolveCustomNativeBase(endpoint) {
2882
- return endpoint.replace(CHAT_COMPLETIONS_SUFFIX, "").replace(/\/+$/, "");
2883
- }
2884
- var NATIVE_PATH_SUFFIX = {
2885
- "openai-responses": "/responses",
2886
- "anthropic-messages": "/messages"
2887
- };
2888
- var ANTHROPIC_MESSAGES_VERSION = "2023-06-01";
2889
- var OPENCODE_HOST = "opencode.ai";
2890
- var OPENCODE_ZEN_GO_PREFIX = "/zen/go";
2891
- var OPENCODE_INFERENCE_GO_PREFIX = "/inference/go";
2892
- function normalizeOpencodeGoGeminiBase(base, wire) {
2893
- if (wire !== "gemini") return base;
2894
- const schemeEnd = base.indexOf("://");
2895
- if (schemeEnd <= 0 || base.slice(0, schemeEnd).toLowerCase() !== "https") return base;
2896
- const authorityStart = schemeEnd + 3;
2897
- const pathStart = base.indexOf("/", authorityStart);
2898
- if (pathStart < 0) return base;
2899
- const host = base.slice(authorityStart, pathStart).toLowerCase();
2900
- if (host !== OPENCODE_HOST) return base;
2901
- const pathAndQuery = base.slice(pathStart);
2902
- const isZenGoPath = pathAndQuery === OPENCODE_ZEN_GO_PREFIX || pathAndQuery.startsWith(`${OPENCODE_ZEN_GO_PREFIX}/`);
2903
- if (!isZenGoPath) return base;
2904
- return `${base.slice(0, authorityStart)}${OPENCODE_HOST}${OPENCODE_INFERENCE_GO_PREFIX}${pathAndQuery.slice(
2905
- OPENCODE_ZEN_GO_PREFIX.length
2906
- )}`;
2907
- }
2908
- function resolveCustomNativeEndpoint(endpoint, wire, model) {
2909
- const base = normalizeOpencodeGoGeminiBase(resolveCustomNativeBase(endpoint), wire);
2910
- switch (wire) {
2911
- case "gemini":
2912
- return `${base}/models/${model}:streamGenerateContent?alt=sse`;
2913
- case "openai-responses":
2914
- case "anthropic-messages": {
2915
- const suffix = NATIVE_PATH_SUFFIX[wire];
2916
- return base.endsWith(suffix) ? base : `${base}${suffix}`;
2917
- }
2918
- }
2919
- }
2920
- var RESERVED_CUSTOM_NATIVE_AUTH_HEADERS = [
2921
- // 凭据之外、由通道自己决定的头
2922
- "accept",
2923
- "accept-encoding",
2924
- "anthropic-version",
2925
- "content-type",
2926
- "content-length",
2927
- "user-agent",
2928
- "x-opencode-session",
2929
- // 请求走私 / 连接语义(hop-by-hop 与 Host/Cookie 家族)
2930
- "connection",
2931
- "cookie",
2932
- "host",
2933
- "keep-alive",
2934
- "proxy-authenticate",
2935
- "proxy-authorization",
2936
- "proxy-connection",
2937
- "te",
2938
- "trailer",
2939
- "transfer-encoding",
2940
- "upgrade"
2941
- ];
2942
- var HTTP_HEADER_TOKEN_RE = /^[!#$%&'*+\-.^_`|~0-9A-Za-z]+$/;
2943
- var CustomNativeApiKeyHeaderError = class extends Error {
2944
- code = "INVALID_API_KEY_HEADER";
2945
- constructor(message) {
2946
- super(message);
2947
- this.name = "CustomNativeApiKeyHeaderError";
2948
- }
2949
- };
2950
- function resolveCustomNativeApiKeyHeader(apiKeyHeader) {
2951
- const headerName = apiKeyHeader?.trim();
2952
- if (!headerName) return void 0;
2953
- if (!HTTP_HEADER_TOKEN_RE.test(headerName)) {
2954
- throw new CustomNativeApiKeyHeaderError(
2955
- `Invalid apiKeyHeader "${headerName}": not a valid HTTP header name (spaces, ":", CR/LF, control characters and other non-token characters are not allowed).`
2956
- );
2957
- }
2958
- if (RESERVED_CUSTOM_NATIVE_AUTH_HEADERS.includes(headerName.toLowerCase())) {
2959
- throw new CustomNativeApiKeyHeaderError(
2960
- `Invalid apiKeyHeader "${headerName}": reserved header, it cannot be used as the API key header.`
2961
- );
2962
- }
2963
- return headerName;
2964
- }
2965
- function customNativeAuthHeaderValue(headerName, apiKey) {
2966
- return headerName.toLowerCase() === "authorization" ? apiKey.startsWith("Bearer ") ? apiKey : `Bearer ${apiKey}` : apiKey;
2967
- }
2968
- function customNativeAuthHeaders(wire, apiKey, apiKeyHeader) {
2969
- const overrideName = resolveCustomNativeApiKeyHeader(apiKeyHeader);
2970
- switch (wire) {
2971
- case "gemini":
2972
- return overrideName ? { [overrideName]: customNativeAuthHeaderValue(overrideName, apiKey) } : { "x-goog-api-key": apiKey };
2973
- case "openai-responses":
2974
- return overrideName ? { [overrideName]: customNativeAuthHeaderValue(overrideName, apiKey) } : { Authorization: `Bearer ${apiKey}` };
2975
- case "anthropic-messages":
2976
- return {
2977
- ...overrideName ? { [overrideName]: customNativeAuthHeaderValue(overrideName, apiKey) } : { "x-api-key": apiKey },
2978
- "anthropic-version": ANTHROPIC_MESSAGES_VERSION
2979
- };
2980
- }
2981
- }
2982
- function isCallerCancellation(error, callerSignal) {
2983
- return isAbortError(error) || callerSignal?.aborted === true;
2984
- }
2985
-
2986
2882
  // packages/agent-runtime/customNativeProvider.ts
2987
2883
  var TRANSPORT_LABEL = {
2988
2884
  "gemini": "gemini-native-custom",
@@ -3957,8 +3853,12 @@ var resolveOwnerOAuthProxyTransport = async (ctx) => {
3957
3853
  model: providerConfig.model,
3958
3854
  provider: providerConfig.provider,
3959
3855
  ...streamed.tool_calls ? { tool_calls: streamed.tool_calls } : {},
3960
- ...streamed.reasoning_content ? { reasoning_content: streamed.reasoning_content } : {}
3961
- // owner_required 不上报 usage:N1 约束,客户端不产生可计费 token 记录。
3856
+ ...streamed.reasoning_content ? { reasoning_content: streamed.reasoning_content } : {},
3857
+ ...streamed.finish_reason ? { finish_reason: streamed.finish_reason } : {},
3858
+ ...streamed.stream_complete ? { stream_complete: true } : {},
3859
+ ...streamed.streamTruncated ? { stream_truncated: true } : {}
3860
+ // owner_required 不上报 usage:N1 约束,客户端不产生可计费 token 记录;
3861
+ // 流完整性证据(finish_reason / stream_complete / stream_truncated)与计费无关,必须透传。
3962
3862
  };
3963
3863
  }
3964
3864
  const raw = await res.text().catch(() => "");
@@ -7,7 +7,7 @@ import {
7
7
  normalizeSystemBuiltinSkills,
8
8
  normalizeTonePresetSetting,
9
9
  resolveUserEnabledSkills
10
- } from "./chunk-DKZJJ2NQ.js";
10
+ } from "./chunk-I5PBXF7O.js";
11
11
  import {
12
12
  isSkillSummaryMarker
13
13
  } from "./chunk-VF4K2QE6.js";
@@ -16,7 +16,7 @@ import {
16
16
  } from "./chunk-RXUKDHS5.js";
17
17
  import {
18
18
  fetchAndCacheTableRows
19
- } from "./chunk-SSK4WNJA.js";
19
+ } from "./chunk-7BIC2DPF.js";
20
20
  import {
21
21
  createSpaceKey
22
22
  } from "./chunk-UAD2WT54.js";
@@ -42,10 +42,10 @@ import {
42
42
  import {
43
43
  listBuiltinSkills,
44
44
  resolveBuiltinSkillByName
45
- } from "./chunk-LEX6DEH4.js";
45
+ } from "./chunk-Y6M7KJOA.js";
46
46
  import {
47
47
  DEFAULT_SYSTEM_AGENT_CAPABILITIES
48
- } from "./chunk-6OEPWZV7.js";
48
+ } from "./chunk-TPCDYNJK.js";
49
49
  import {
50
50
  parseSkillDocProtocol
51
51
  } from "./chunk-AETZ7AD6.js";
@@ -783,7 +783,7 @@ var executeToolRun = createAsyncThunk(
783
783
  if (!executionInput) {
784
784
  throw new Error(`ToolRun ${id} has no input to execute with.`);
785
785
  }
786
- const { findToolExecutor } = await import("./tools-UJLEQBKI.js");
786
+ const { findToolExecutor } = await import("./tools-JMEDZDIA.js");
787
787
  const { executor } = findToolExecutor(run.toolName);
788
788
  toolRunStarted({
789
789
  id: run.id,