lody 0.91.0 → 0.92.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.
package/dist/index.js CHANGED
@@ -28,18 +28,18 @@ import require$$0$6, { Buffer as Buffer$1 } from "buffer";
28
28
  import require$$0$7, { EventEmitter as EventEmitter$2 } from "events";
29
29
  import * as Ri from "zlib";
30
30
  import Ri__default from "zlib";
31
- import require$$1$2 from "tty";
32
- import require$$1$3 from "string_decoder";
31
+ import require$$0$8 from "tty";
32
+ import require$$1$2 from "string_decoder";
33
33
  import http from "http";
34
34
  import require$$1__default from "https";
35
- import require$$0$8, { promisify, inspect as inspect$1, stripVTControlCharacters, isDeepStrictEqual } from "node:util";
35
+ import require$$0$9, { promisify, inspect as inspect$1, stripVTControlCharacters, isDeepStrictEqual } from "node:util";
36
36
  import * as Xt from "node:fs/promises";
37
37
  import Xt__default, { mkdir as mkdir$1, realpath, symlink, mkdtemp, chmod, writeFile, rm, rename, readFile, readdir, stat, lstat, unlink, open, opendir } from "node:fs/promises";
38
38
  import zlib__default, { gzip, gunzip as gunzip$1, gunzipSync, brotliDecompressSync } from "node:zlib";
39
- import require$$1$8, { exec, execFile as execFile$1, spawn as spawn$2 } from "child_process";
39
+ import require$$1$7, { exec, execFile as execFile$1, spawn as spawn$2 } from "child_process";
40
40
  import { i as imports, _ as __wbg_set_wasm$1, r as rawWasm, L as LoroDoc, E as EphemeralStoreWasm, U as UndoManager, a as isValidContainerId, c as callPendingEvents$3, b as LoroTree, d as LoroText, e as LoroMovableList, f as LoroList, g as LoroMap, V as VersionVector, h as __vite__initWasm, j as decodeImportBlobMeta, __tla as __tla_0 } from "./chunks/loro_wasm_bg-Br-Fa9wV.js";
41
41
  import { performance as performance$1 } from "perf_hooks";
42
- import require$$0$9 from "net";
42
+ import require$$0$a from "net";
43
43
  import require$$4$2 from "tls";
44
44
  import require$$7$2, { fileURLToPath as fileURLToPath$1, pathToFileURL as pathToFileURL$1 } from "url";
45
45
  import { D as DEEPSEEK_HARNESS_PERMISSION_MODES, a as DEEPSEEK_HARNESS_AGENT_PRESETS, A as ACP_EXTENSION_DSH_CAPABILITY_SOURCE_VERSION, c as createDeepSeekHarnessCordisConfig, b as ACP_EXTENSION_DSH_VERSION, d as ACP_EXTENSION_DSH_PROFILE_REVISION, e as ACP_EXTENSION_DSH_QUERY_PATH_ENV, f as ACP_EXTENSION_DSH_SESSION_ROOT_ENV, g as DEEPSEEK_HARNESS_NPX_PACKAGES, h as DEEPSEEK_HARNESS_VERSION, i as DEEPSEEK_HARNESS_DEFAULT_SESSION_COMPRESSION, j as DEEPSEEK_HARNESS_BASE_URL_ENV } from "./chunks/profile-DLuYzIs8.js";
@@ -47,20 +47,20 @@ import assert from "assert";
47
47
  import * as fs$2 from "fs/promises";
48
48
  import fs__default$2 from "fs/promises";
49
49
  import Database from "better-sqlite3";
50
- import require$$0$d, { channel } from "node:diagnostics_channel";
51
- import require$$0$b from "node:assert";
50
+ import require$$0$e, { channel } from "node:diagnostics_channel";
51
+ import require$$0$c from "node:assert";
52
52
  import net from "node:net";
53
53
  import http$1 from "node:http";
54
- import require$$0$c, { PassThrough, Readable, Transform } from "node:stream";
55
- import require$$0$a, { Buffer as Buffer$2 } from "node:buffer";
54
+ import require$$0$d, { PassThrough, Readable, Transform } from "node:stream";
55
+ import require$$0$b, { Buffer as Buffer$2 } from "node:buffer";
56
56
  import require$$7$3 from "node:querystring";
57
57
  import require$$5$2 from "node:tls";
58
58
  import require$$5$3, { performance as performance$2 } from "node:perf_hooks";
59
59
  import require$$8 from "node:util/types";
60
- import require$$1$4, { Worker as Worker$1 } from "node:worker_threads";
61
- import require$$1$5, { fileURLToPath, pathToFileURL } from "node:url";
62
- import require$$1$6 from "node:console";
63
- import require$$1$7 from "node:dns";
60
+ import require$$1$3, { Worker as Worker$1 } from "node:worker_threads";
61
+ import require$$1$4, { fileURLToPath, pathToFileURL } from "node:url";
62
+ import require$$1$5 from "node:console";
63
+ import require$$1$6 from "node:dns";
64
64
  import { C as CodeCollabV2FileIndexRequestSchema, a as CodeCollabV2OpenTextRequestSchema, b as CodeCollabV2RefreshTextRequestSchema, c as CodeCollabV2SaveTextRequestSchema, d as CodeCollabV2OpenCurrentDiffRequestSchema, e as CodeCollabV2OpenAllChangesDiffRequestSchema, f as CodeCollabV2OpenTurnDiffRequestSchema, g as CodeCollabV2InitDirectoryRequestSchema, h as CodeCollabV2FileIndexSnapshotSchema, i as CodeCollabV2OpenTextOkSchema, j as CodeCollabV2RefreshTextResponseSchema, k as CodeCollabV2SaveTextResponseSchema, l as CodeCollabV2OpenCurrentDiffResponseSchema, m as CodeCollabV2OpenAllChangesDiffResponseSchema, n as CodeCollabV2OpenTurnDiffResponseSchema, o as CodeCollabV2InitDirectoryOkSchema, p as CodeCollabV2LspUnsupportedSchema, q as CodeCollabV2ErrorSchema, r as CodeCollabV2RpcContentEnvelopeSchema, s as deriveCodeCollabV2ContentKeyId, t as CodeCollabV2ErrorCodeSchema, u as CodeCollabV2RpcResponseSchema, v as deriveCodeCollabV2ContentKeyBytes, w as readCodeCollabFileIndexSignalFromFlock, x as writeCodeCollabFileIndexSignalToFlock, y as writeCodeCollabFileIndexToFlock, z as buildCodeCollabFileIndexState, A as CODE_COLLAB_V2_TEXT_LIMITS, B as CODE_COLLAB_V2_ALL_CHANGES_DIFF_LIMITS, D as computeAllChanges, E as codeCollabFileIndexStatesEqual, F as scanGitDirectoryEntries, G as closeDirectoryQuietly } from "./chunks/directory-handle-Bp47LF5g.js";
65
65
  import { C as ClientSideConnection, P as PROTOCOL_VERSION, n as ndJsonStream, c as client$2, m as methods$1 } from "./chunks/acp-DBqkNziA.js";
66
66
  import { StringDecoder } from "node:string_decoder";
@@ -4325,7 +4325,7 @@ Upgrade Node, then re-run: npx lody@latest`;
4325
4325
  }
4326
4326
  const name$2 = "lody";
4327
4327
  const name$1 = "@lody/cli-cloud";
4328
- const version$9 = "0.91.0";
4328
+ const version$9 = "0.92.0";
4329
4329
  const type$2 = "module";
4330
4330
  const scripts = {
4331
4331
  "dev": "node dev.mjs",
@@ -4664,7 +4664,7 @@ Upgrade Node, then re-run: npx lody@latest`;
4664
4664
  return "none";
4665
4665
  }
4666
4666
  const MODEL_THOUGHT_LEVEL_META_KEY = "lodyThoughtLevel";
4667
- const ACP_CAPABILITY_CACHE_VERSION = 6;
4667
+ const ACP_CAPABILITY_CACHE_VERSION = 7;
4668
4668
  const getAcpCapabilityCacheKey = (configId) => configId;
4669
4669
  const isBuiltinAgentType = (agentType) => BUILTIN_AGENTS.some((agent2) => agent2.agentType === agentType);
4670
4670
  const isManagedBuiltinAgentType = (agentType) => MANAGED_BUILTIN_RUNTIMES.some((runtime) => runtime.agentType === agentType);
@@ -10898,6 +10898,14 @@ Requirements:
10898
10898
  return Array.isArray(v.commands) ? true : "Missing commands";
10899
10899
  case "system_notice":
10900
10900
  return typeof v.name === "string" ? true : "Missing name";
10901
+ case "operation_progress":
10902
+ return typeof v.operationId === "string" && (v.operationKind === "session_create" || v.operationKind === "session_create_many") && Array.isArray(v.items) && v.items.every((item) => isRecord$f(item) && isRecord$f(item.target) && typeof item.target.sessionId === "string" && typeof item.target.userTurnId === "string" && (item.label === void 0 || typeof item.label === "string") && typeof item.status === "string" && [
10903
+ "created",
10904
+ "running",
10905
+ "succeeded",
10906
+ "failed",
10907
+ "cancelled"
10908
+ ].includes(item.status)) ? true : "Missing operation progress metadata";
10901
10909
  case "operation_completion":
10902
10910
  return typeof v.deliveryId === "string" && typeof v.operationId === "string" && typeof v.operationKind === "string" && typeof v.completion === "object" && v.completion !== null ? true : "Missing operation completion metadata";
10903
10911
  case "worktree_script":
@@ -14353,6 +14361,7 @@ Requirements:
14353
14361
  ]).optional(),
14354
14362
  toolName: string$1().optional(),
14355
14363
  schedulingTimeZone: string$1().optional(),
14364
+ recordedAtMs: number$4().optional(),
14356
14365
  permissionRequest: PermissionRequestInfoSchema.optional()
14357
14366
  }),
14358
14367
  object$1({
@@ -14369,6 +14378,7 @@ Requirements:
14369
14378
  "session_chat",
14370
14379
  "session_chat_many"
14371
14380
  ]),
14381
+ progressMessageId: string$1().trim().min(1).optional(),
14372
14382
  completion: unknown(),
14373
14383
  continuation: object$1({
14374
14384
  status: literal$1("not_started"),
@@ -14377,6 +14387,28 @@ Requirements:
14377
14387
  message: string$1()
14378
14388
  }).strict()
14379
14389
  }).strict().optional()
14390
+ }),
14391
+ object$1({
14392
+ type: literal$1("operation_progress"),
14393
+ operationId: LodyOperationIdSchema,
14394
+ operationKind: _enum$1([
14395
+ "session_create",
14396
+ "session_create_many"
14397
+ ]),
14398
+ items: array$2(object$1({
14399
+ target: object$1({
14400
+ sessionId: SessionIdSchema$1,
14401
+ userTurnId: string$1().trim().min(1)
14402
+ }).strict(),
14403
+ label: string$1().optional(),
14404
+ status: _enum$1([
14405
+ "created",
14406
+ "running",
14407
+ "succeeded",
14408
+ "failed",
14409
+ "cancelled"
14410
+ ])
14411
+ }).strict())
14380
14412
  })
14381
14413
  ]);
14382
14414
  const SystemNoticeSchema = discriminatedUnion("name", [
@@ -15067,16 +15099,16 @@ Requirements:
15067
15099
  {
15068
15100
  id: "factory-droid",
15069
15101
  name: "Factory Droid",
15070
- version: "0.211.0",
15102
+ version: "0.212.0",
15071
15103
  description: "Factory Droid - AI coding agent powered by Factory AI",
15072
15104
  icon: "https://cdn.agentclientprotocol.com/registry/v1/latest/factory-droid.svg",
15073
15105
  distribution: {
15074
15106
  npx: {
15075
- package: "droid@0.211.0",
15107
+ package: "droid@0.212.0",
15076
15108
  args: [
15077
15109
  "exec",
15078
15110
  "--output-format",
15079
- "acp-daemon"
15111
+ "acp"
15080
15112
  ],
15081
15113
  env: {
15082
15114
  DROID_DISABLE_AUTO_UPDATE: "true",
@@ -16894,6 +16926,7 @@ ${outputTail}` : blockTail.output;
16894
16926
  rawInput: incoming.rawInput !== void 0 ? incoming.rawInput : prev.rawInput,
16895
16927
  rawOutput: incoming.rawOutput !== void 0 ? incoming.rawOutput : prev.rawOutput,
16896
16928
  schedulingTimeZone: incoming.schedulingTimeZone !== void 0 ? incoming.schedulingTimeZone : prev.schedulingTimeZone,
16929
+ recordedAtMs: prev.recordedAtMs ?? incoming.recordedAtMs,
16897
16930
  toolName: incoming.toolName ?? prev.toolName,
16898
16931
  activityKind: incoming.activityKind !== void 0 ? incoming.activityKind : prev.activityKind
16899
16932
  };
@@ -17390,7 +17423,7 @@ ${outputTail}` : blockTail.output;
17390
17423
  return;
17391
17424
  }
17392
17425
  const entryIndex = this.ensureActiveAssistantEntry();
17393
- this.upsertToolCall(entryIndex, message);
17426
+ this.upsertToolCall(entryIndex, this.stampSchedulingToolCall(message));
17394
17427
  this.toolCallEntryIndexById.set(message.toolCallId, entryIndex);
17395
17428
  return;
17396
17429
  }
@@ -17412,6 +17445,18 @@ ${outputTail}` : blockTail.output;
17412
17445
  }
17413
17446
  }
17414
17447
  }
17448
+ stampSchedulingToolCall(message) {
17449
+ if (message.recordedAtMs !== void 0) return message;
17450
+ if (message.toolName === void 0 || !SCHEDULING_TOOL_NAMES.has(message.toolName)) {
17451
+ return message;
17452
+ }
17453
+ const recordedAtMs = Date.parse(this.now());
17454
+ if (!Number.isFinite(recordedAtMs)) return message;
17455
+ return {
17456
+ ...message,
17457
+ recordedAtMs
17458
+ };
17459
+ }
17415
17460
  updateEntryPlan(entries) {
17416
17461
  const entryIndex = this.ensureActiveAssistantEntry();
17417
17462
  const entry = this.history[entryIndex];
@@ -20887,16 +20932,19 @@ ${tailedOutput}` : null;
20887
20932
  acpAuthenticationInteractions: "acpAuthenticationInteractions",
20888
20933
  localProjectRemoval: "localProjectRemoval",
20889
20934
  providerSetup: "providerSetup",
20935
+ localFileResources: "localFileResources",
20890
20936
  acpProtocolAuthentication: "acpProtocolAuthentication"
20891
20937
  };
20892
20938
  const ACP_AUTHENTICATION_INTERACTIONS_PROTOCOL_VERSION = 2;
20893
20939
  const LOCAL_PROJECT_REMOVAL_PROTOCOL_VERSION = 1;
20894
20940
  const PROVIDER_SETUP_PROTOCOL_VERSION = 1;
20941
+ const LOCAL_FILE_RESOURCES_PROTOCOL_VERSION = 1;
20895
20942
  const ACP_PROTOCOL_AUTHENTICATION_VERSION = 2;
20896
20943
  const CURRENT_MACHINE_PROTOCOL_CAPABILITIES = {
20897
20944
  [MACHINE_PROTOCOL_CAPABILITIES.acpAuthenticationInteractions]: ACP_AUTHENTICATION_INTERACTIONS_PROTOCOL_VERSION,
20898
20945
  [MACHINE_PROTOCOL_CAPABILITIES.localProjectRemoval]: LOCAL_PROJECT_REMOVAL_PROTOCOL_VERSION,
20899
20946
  [MACHINE_PROTOCOL_CAPABILITIES.providerSetup]: PROVIDER_SETUP_PROTOCOL_VERSION,
20947
+ [MACHINE_PROTOCOL_CAPABILITIES.localFileResources]: LOCAL_FILE_RESOURCES_PROTOCOL_VERSION,
20900
20948
  [MACHINE_PROTOCOL_CAPABILITIES.acpProtocolAuthentication]: ACP_PROTOCOL_AUTHENTICATION_VERSION
20901
20949
  };
20902
20950
  const isLoroRepoDocDeleted = (value) => {
@@ -23404,15 +23452,6 @@ ${context2.authorReply.trim()}
23404
23452
  plainTextBytes: 64 * 1024,
23405
23453
  maxCompressedBytes: 1024 * 1024
23406
23454
  };
23407
- const FILE_PREVIEW_LOCAL_IPC_RESPONSE_LIMIT_BYTES = 16 * 1024 * 1024;
23408
- const FILE_PREVIEW_LOCAL_ENVELOPE_BYTES = 64 * 1024;
23409
- const FILE_PREVIEW_LOCAL_PAYLOAD_BUDGET_BYTES = FILE_PREVIEW_LOCAL_IPC_RESPONSE_LIMIT_BYTES - FILE_PREVIEW_LOCAL_ENVELOPE_BYTES;
23410
- const FILE_PREVIEW_V3_LOCAL_LIMITS = {
23411
- maxTextBytes: FILE_PREVIEW_LOCAL_PAYLOAD_BUDGET_BYTES,
23412
- maxBinaryBytes: Math.floor(FILE_PREVIEW_LOCAL_PAYLOAD_BUDGET_BYTES * 3 / 4),
23413
- plainTextBytes: FILE_PREVIEW_LOCAL_PAYLOAD_BUDGET_BYTES,
23414
- maxCompressedBytes: FILE_PREVIEW_LOCAL_PAYLOAD_BUDGET_BYTES
23415
- };
23416
23455
  const FilePreviewV3DigestSchema = string$1().regex(/^sha256:[0-9a-f]{64}$/u);
23417
23456
  const FilePreviewV3TextFormatSchema = object$1({
23418
23457
  bom: boolean().optional(),
@@ -24744,6 +24783,12 @@ ${context2.authorReply.trim()}
24744
24783
  }
24745
24784
  return rows;
24746
24785
  };
24786
+ const LocalFileResolutionSchema = object$1({
24787
+ status: literal$1("local-file"),
24788
+ path: string$1().min(1),
24789
+ absolutePath: string$1().min(1),
24790
+ external: boolean()
24791
+ }).strict();
24747
24792
  const LOCAL_MACHINE_RPC_PATH = "/machine-rpc";
24748
24793
  const BaseLocalMachineRpcRequestSchema = object$1({
24749
24794
  machineId: string$1().trim().min(1),
@@ -24751,7 +24796,28 @@ ${context2.authorReply.trim()}
24751
24796
  ownerSessionId: string$1().trim().min(1).optional(),
24752
24797
  timeoutMs: number$4().int().positive().optional()
24753
24798
  }).strict();
24799
+ const SessionActiveInvocationContextResultSchema = discriminatedUnion("active", [
24800
+ object$1({
24801
+ type: literal$1("session/active-invocation-context"),
24802
+ sessionId: SessionIdSchema$1,
24803
+ active: literal$1(false)
24804
+ }).strict(),
24805
+ object$1({
24806
+ type: literal$1("session/active-invocation-context"),
24807
+ sessionId: SessionIdSchema$1,
24808
+ active: literal$1(true),
24809
+ requesterUserId: string$1().trim().min(1),
24810
+ sourceTurnId: string$1().trim().min(1),
24811
+ inputConfig: record$1(string$1(), unknown())
24812
+ }).strict()
24813
+ ]);
24754
24814
  const LocalMachineRpcRequestSchema = discriminatedUnion("method", [
24815
+ BaseLocalMachineRpcRequestSchema.extend({
24816
+ method: literal$1("session/get-active-invocation-context"),
24817
+ params: object$1({
24818
+ sessionId: SessionIdSchema$1
24819
+ }).strict()
24820
+ }).strict(),
24755
24821
  BaseLocalMachineRpcRequestSchema.extend({
24756
24822
  method: literal$1("code-collab/get-file-index"),
24757
24823
  params: CodeCollabV2FileIndexRequestSchema
@@ -24807,7 +24873,7 @@ ${context2.authorReply.trim()}
24807
24873
  params: FilePreviewV3RequestSchema
24808
24874
  }).strict(),
24809
24875
  BaseLocalMachineRpcRequestSchema.extend({
24810
- method: literal$1("file/preview-local"),
24876
+ method: literal$1("file/resolve-local"),
24811
24877
  params: FilePreviewV3RequestSchema
24812
24878
  }).strict(),
24813
24879
  BaseLocalMachineRpcRequestSchema.extend({
@@ -24877,6 +24943,7 @@ ${context2.authorReply.trim()}
24877
24943
  }).strict()
24878
24944
  ]);
24879
24945
  const LocalMachineRpcResultSchema = union$7([
24946
+ SessionActiveInvocationContextResultSchema,
24880
24947
  CodeCollabV2FileIndexSnapshotSchema,
24881
24948
  CodeCollabV2OpenTextOkSchema,
24882
24949
  CodeCollabV2RefreshTextResponseSchema,
@@ -24888,6 +24955,7 @@ ${context2.authorReply.trim()}
24888
24955
  CodeCollabV2LspUnsupportedSchema,
24889
24956
  CodeCollabV2ErrorSchema,
24890
24957
  FilePreviewV3ResponseSchema,
24958
+ LocalFileResolutionSchema,
24891
24959
  SessionCancelResponseSchema,
24892
24960
  SessionDispatchTurnResponseSchema,
24893
24961
  SessionEditAndResendResponseSchema,
@@ -25258,10 +25326,16 @@ ${context2.authorReply.trim()}
25258
25326
  }
25259
25327
  function createJsonLineSplitter(options) {
25260
25328
  const decodeChunk = createUtf8StreamDecoder();
25261
- let buffer2 = "";
25329
+ let parts2 = [];
25330
+ let bufferedLength = 0;
25331
+ let retryChunk = "";
25262
25332
  let discardingOversizedLine = false;
25263
25333
  return (input2) => {
25264
25334
  let chunk = typeof input2 === "string" ? input2 : decodeChunk(input2);
25335
+ if (retryChunk) {
25336
+ chunk = retryChunk + chunk;
25337
+ retryChunk = "";
25338
+ }
25265
25339
  if (discardingOversizedLine) {
25266
25340
  const newlineIndex2 = chunk.indexOf("\n");
25267
25341
  if (newlineIndex2 < 0) {
@@ -25270,22 +25344,39 @@ ${context2.authorReply.trim()}
25270
25344
  discardingOversizedLine = false;
25271
25345
  chunk = chunk.slice(newlineIndex2 + 1);
25272
25346
  }
25273
- buffer2 += chunk;
25274
- let newlineIndex = buffer2.indexOf("\n");
25275
- while (newlineIndex >= 0) {
25276
- const line3 = buffer2.slice(0, newlineIndex).trim();
25277
- buffer2 = buffer2.slice(newlineIndex + 1);
25278
- if (line3) {
25279
- if (options.maxBufferBytes !== void 0 && line3.length > options.maxBufferBytes) {
25280
- options.onOverflow?.();
25281
- } else {
25282
- options.onLine(line3);
25347
+ let start2 = 0;
25348
+ let newlineIndex = chunk.indexOf("\n");
25349
+ try {
25350
+ while (newlineIndex >= 0) {
25351
+ let line3 = chunk.slice(start2, newlineIndex);
25352
+ if (parts2.length > 0) {
25353
+ parts2.push(line3);
25354
+ line3 = parts2.join("");
25355
+ parts2 = [];
25356
+ bufferedLength = 0;
25357
+ }
25358
+ line3 = line3.trim();
25359
+ start2 = newlineIndex + 1;
25360
+ if (line3) {
25361
+ if (options.maxBufferBytes !== void 0 && line3.length > options.maxBufferBytes) {
25362
+ options.onOverflow?.();
25363
+ } else {
25364
+ options.onLine(line3);
25365
+ }
25283
25366
  }
25367
+ newlineIndex = chunk.indexOf("\n", start2);
25284
25368
  }
25285
- newlineIndex = buffer2.indexOf("\n");
25369
+ } catch (error2) {
25370
+ retryChunk = chunk.slice(start2);
25371
+ throw error2;
25372
+ }
25373
+ if (start2 < chunk.length) {
25374
+ parts2.push(chunk.slice(start2));
25375
+ bufferedLength += chunk.length - start2;
25286
25376
  }
25287
- if (options.maxBufferBytes !== void 0 && buffer2.length > options.maxBufferBytes) {
25288
- buffer2 = "";
25377
+ if (options.maxBufferBytes !== void 0 && bufferedLength > options.maxBufferBytes) {
25378
+ parts2 = [];
25379
+ bufferedLength = 0;
25289
25380
  discardingOversizedLine = true;
25290
25381
  options.onOverflow?.();
25291
25382
  }
@@ -28294,25 +28385,25 @@ Expecting one of '${allowedValues.join("', '")}'`);
28294
28385
  const terminatorPosition = argv.indexOf("--");
28295
28386
  return position !== -1 && (terminatorPosition === -1 || position < terminatorPosition);
28296
28387
  }
28297
- const { env: env$2 } = process$2;
28298
- let flagForceColor;
28388
+ const { env: env$3 } = process$2;
28389
+ let flagForceColor$1;
28299
28390
  if (hasFlag$3("no-color") || hasFlag$3("no-colors") || hasFlag$3("color=false") || hasFlag$3("color=never")) {
28300
- flagForceColor = 0;
28391
+ flagForceColor$1 = 0;
28301
28392
  } else if (hasFlag$3("color") || hasFlag$3("colors") || hasFlag$3("color=true") || hasFlag$3("color=always")) {
28302
- flagForceColor = 1;
28393
+ flagForceColor$1 = 1;
28303
28394
  }
28304
- function envForceColor() {
28305
- if ("FORCE_COLOR" in env$2) {
28306
- if (env$2.FORCE_COLOR === "true") {
28395
+ function envForceColor$1() {
28396
+ if ("FORCE_COLOR" in env$3) {
28397
+ if (env$3.FORCE_COLOR === "true") {
28307
28398
  return 1;
28308
28399
  }
28309
- if (env$2.FORCE_COLOR === "false") {
28400
+ if (env$3.FORCE_COLOR === "false") {
28310
28401
  return 0;
28311
28402
  }
28312
- return env$2.FORCE_COLOR.length === 0 ? 1 : Math.min(Number.parseInt(env$2.FORCE_COLOR, 10), 3);
28403
+ return env$3.FORCE_COLOR.length === 0 ? 1 : Math.min(Number.parseInt(env$3.FORCE_COLOR, 10), 3);
28313
28404
  }
28314
28405
  }
28315
- function translateLevel(level) {
28406
+ function translateLevel$1(level) {
28316
28407
  if (level === 0) {
28317
28408
  return false;
28318
28409
  }
@@ -28323,12 +28414,12 @@ Expecting one of '${allowedValues.join("', '")}'`);
28323
28414
  has16m: level >= 3
28324
28415
  };
28325
28416
  }
28326
- function _supportsColor(haveStream, { streamIsTTY, sniffFlags = true } = {}) {
28327
- const noFlagForceColor = envForceColor();
28417
+ function _supportsColor$1(haveStream, { streamIsTTY, sniffFlags = true } = {}) {
28418
+ const noFlagForceColor = envForceColor$1();
28328
28419
  if (noFlagForceColor !== void 0) {
28329
- flagForceColor = noFlagForceColor;
28420
+ flagForceColor$1 = noFlagForceColor;
28330
28421
  }
28331
- const forceColor = sniffFlags ? flagForceColor : noFlagForceColor;
28422
+ const forceColor = sniffFlags ? flagForceColor$1 : noFlagForceColor;
28332
28423
  if (forceColor === 0) {
28333
28424
  return 0;
28334
28425
  }
@@ -28340,14 +28431,14 @@ Expecting one of '${allowedValues.join("', '")}'`);
28340
28431
  return 2;
28341
28432
  }
28342
28433
  }
28343
- if ("TF_BUILD" in env$2 && "AGENT_NAME" in env$2) {
28434
+ if ("TF_BUILD" in env$3 && "AGENT_NAME" in env$3) {
28344
28435
  return 1;
28345
28436
  }
28346
28437
  if (haveStream && !streamIsTTY && forceColor === void 0) {
28347
28438
  return 0;
28348
28439
  }
28349
28440
  const min2 = forceColor || 0;
28350
- if (env$2.TERM === "dumb") {
28441
+ if (env$3.TERM === "dumb") {
28351
28442
  return min2;
28352
28443
  }
28353
28444
  if (process$2.platform === "win32") {
@@ -28357,12 +28448,12 @@ Expecting one of '${allowedValues.join("', '")}'`);
28357
28448
  }
28358
28449
  return 1;
28359
28450
  }
28360
- if ("CI" in env$2) {
28451
+ if ("CI" in env$3) {
28361
28452
  if ([
28362
28453
  "GITHUB_ACTIONS",
28363
28454
  "GITEA_ACTIONS",
28364
28455
  "CIRCLECI"
28365
- ].some((key2) => key2 in env$2)) {
28456
+ ].some((key2) => key2 in env$3)) {
28366
28457
  return 3;
28367
28458
  }
28368
28459
  if ([
@@ -28371,29 +28462,29 @@ Expecting one of '${allowedValues.join("', '")}'`);
28371
28462
  "GITLAB_CI",
28372
28463
  "BUILDKITE",
28373
28464
  "DRONE"
28374
- ].some((sign2) => sign2 in env$2) || env$2.CI_NAME === "codeship") {
28465
+ ].some((sign2) => sign2 in env$3) || env$3.CI_NAME === "codeship") {
28375
28466
  return 1;
28376
28467
  }
28377
28468
  return min2;
28378
28469
  }
28379
- if ("TEAMCITY_VERSION" in env$2) {
28380
- return /^(9\.(0*[1-9]\d*)\.|\d{2,}\.)/.test(env$2.TEAMCITY_VERSION) ? 1 : 0;
28470
+ if ("TEAMCITY_VERSION" in env$3) {
28471
+ return /^(9\.(0*[1-9]\d*)\.|\d{2,}\.)/.test(env$3.TEAMCITY_VERSION) ? 1 : 0;
28381
28472
  }
28382
- if (env$2.COLORTERM === "truecolor") {
28473
+ if (env$3.COLORTERM === "truecolor") {
28383
28474
  return 3;
28384
28475
  }
28385
- if (env$2.TERM === "xterm-kitty") {
28476
+ if (env$3.TERM === "xterm-kitty") {
28386
28477
  return 3;
28387
28478
  }
28388
- if (env$2.TERM === "xterm-ghostty") {
28479
+ if (env$3.TERM === "xterm-ghostty") {
28389
28480
  return 3;
28390
28481
  }
28391
- if (env$2.TERM === "wezterm") {
28482
+ if (env$3.TERM === "wezterm") {
28392
28483
  return 3;
28393
28484
  }
28394
- if ("TERM_PROGRAM" in env$2) {
28395
- const version2 = Number.parseInt((env$2.TERM_PROGRAM_VERSION || "").split(".")[0], 10);
28396
- switch (env$2.TERM_PROGRAM) {
28485
+ if ("TERM_PROGRAM" in env$3) {
28486
+ const version2 = Number.parseInt((env$3.TERM_PROGRAM_VERSION || "").split(".")[0], 10);
28487
+ switch (env$3.TERM_PROGRAM) {
28397
28488
  case "iTerm.app": {
28398
28489
  return version2 >= 3 ? 3 : 2;
28399
28490
  }
@@ -28402,29 +28493,29 @@ Expecting one of '${allowedValues.join("', '")}'`);
28402
28493
  }
28403
28494
  }
28404
28495
  }
28405
- if (/-256(color)?$/i.test(env$2.TERM)) {
28496
+ if (/-256(color)?$/i.test(env$3.TERM)) {
28406
28497
  return 2;
28407
28498
  }
28408
- if (/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(env$2.TERM)) {
28499
+ if (/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(env$3.TERM)) {
28409
28500
  return 1;
28410
28501
  }
28411
- if ("COLORTERM" in env$2) {
28502
+ if ("COLORTERM" in env$3) {
28412
28503
  return 1;
28413
28504
  }
28414
28505
  return min2;
28415
28506
  }
28416
- function createSupportsColor(stream2, options = {}) {
28417
- const level = _supportsColor(stream2, {
28507
+ function createSupportsColor$1(stream2, options = {}) {
28508
+ const level = _supportsColor$1(stream2, {
28418
28509
  streamIsTTY: stream2 && stream2.isTTY,
28419
28510
  ...options
28420
28511
  });
28421
- return translateLevel(level);
28512
+ return translateLevel$1(level);
28422
28513
  }
28423
- const supportsColor = {
28424
- stdout: createSupportsColor({
28514
+ const supportsColor$2 = {
28515
+ stdout: createSupportsColor$1({
28425
28516
  isTTY: tty.isatty(1)
28426
28517
  }),
28427
- stderr: createSupportsColor({
28518
+ stderr: createSupportsColor$1({
28428
28519
  isTTY: tty.isatty(2)
28429
28520
  })
28430
28521
  };
@@ -28456,7 +28547,7 @@ Expecting one of '${allowedValues.join("', '")}'`);
28456
28547
  returnValue += string2.slice(endIndex);
28457
28548
  return returnValue;
28458
28549
  }
28459
- const { stdout: stdoutColor, stderr: stderrColor } = supportsColor;
28550
+ const { stdout: stdoutColor, stderr: stderrColor } = supportsColor$2;
28460
28551
  const GENERATOR = Symbol("GENERATOR");
28461
28552
  const STYLER = Symbol("STYLER");
28462
28553
  const IS_EMPTY = Symbol("IS_EMPTY");
@@ -28872,10 +28963,10 @@ Found: ${formatFn.toString().split("\n")[0]}
28872
28963
  return styles$1.exports;
28873
28964
  }
28874
28965
  var hasFlag$2;
28875
- var hasRequiredHasFlag$2;
28876
- function requireHasFlag$2() {
28877
- if (hasRequiredHasFlag$2) return hasFlag$2;
28878
- hasRequiredHasFlag$2 = 1;
28966
+ var hasRequiredHasFlag$1;
28967
+ function requireHasFlag$1() {
28968
+ if (hasRequiredHasFlag$1) return hasFlag$2;
28969
+ hasRequiredHasFlag$1 = 1;
28879
28970
  hasFlag$2 = function(flag, argv) {
28880
28971
  argv = argv || process.argv || [];
28881
28972
  var terminatorPos = argv.indexOf("--");
@@ -28891,7 +28982,7 @@ Found: ${formatFn.toString().split("\n")[0]}
28891
28982
  if (hasRequiredSupportsColors$1) return supportsColors$1;
28892
28983
  hasRequiredSupportsColors$1 = 1;
28893
28984
  var os2 = os__default$1;
28894
- var hasFlag2 = requireHasFlag$2();
28985
+ var hasFlag2 = requireHasFlag$1();
28895
28986
  var env2 = process.env;
28896
28987
  var forceColor = void 0;
28897
28988
  if (hasFlag2("no-color") || hasFlag2("no-colors") || hasFlag2("color=false")) {
@@ -31580,7 +31671,7 @@ ${originalIndentation}`;
31580
31671
  return common$2;
31581
31672
  }
31582
31673
  const version$8 = "3.19.0";
31583
- const require$$2$3 = {
31674
+ const require$$2$4 = {
31584
31675
  version: version$8
31585
31676
  };
31586
31677
  var transports = {};
@@ -37968,7 +38059,7 @@ ${originalIndentation}`;
37968
38059
  if (hasRequiredDevelopment) return development;
37969
38060
  hasRequiredDevelopment = 1;
37970
38061
  var create = requireDiagnostics$1();
37971
- var tty2 = require$$1$2.isatty(1);
38062
+ var tty2 = require$$0$8.isatty(1);
37972
38063
  var diagnostics2 = create(function dev(namespace, options) {
37973
38064
  options = options || {};
37974
38065
  options.colors = "colors" in options ? options.colors : tty2;
@@ -38003,7 +38094,7 @@ ${originalIndentation}`;
38003
38094
  if (hasRequiredTailFile) return tailFile;
38004
38095
  hasRequiredTailFile = 1;
38005
38096
  const fs2 = fs__default;
38006
- const { StringDecoder: StringDecoder2 } = require$$1$3;
38097
+ const { StringDecoder: StringDecoder2 } = require$$1$2;
38007
38098
  const { Stream } = requireReadable$1();
38008
38099
  function noop2() {
38009
38100
  }
@@ -39988,7 +40079,7 @@ ${originalIndentation}`;
39988
40079
  (function(exports$1) {
39989
40080
  const logform2 = requireLogform();
39990
40081
  const { warn: warn2 } = requireCommon$1();
39991
- exports$1.version = require$$2$3.version;
40082
+ exports$1.version = require$$2$4.version;
39992
40083
  exports$1.transports = requireTransports();
39993
40084
  exports$1.config = requireConfig$1();
39994
40085
  exports$1.addColors = logform2.levels;
@@ -44562,7 +44653,7 @@ ${originalIndentation}`;
44562
44653
  }, Symbol.toStringTag, {
44563
44654
  value: "Module"
44564
44655
  }));
44565
- const require$$2$2 = getAugmentedNamespace(moment);
44656
+ const require$$2$3 = getAugmentedNamespace(moment);
44566
44657
  var FileStreamRotator_1;
44567
44658
  var hasRequiredFileStreamRotator;
44568
44659
  function requireFileStreamRotator() {
@@ -44570,7 +44661,7 @@ ${originalIndentation}`;
44570
44661
  hasRequiredFileStreamRotator = 1;
44571
44662
  var fs2 = fs__default;
44572
44663
  var path2 = path__default$1;
44573
- var moment2 = require$$2$2;
44664
+ var moment2 = require$$2$3;
44574
44665
  var crypto2 = crypto__default;
44575
44666
  var EventEmitter2 = require$$0$7;
44576
44667
  var FileStreamRotator = {};
@@ -45438,7 +45529,7 @@ ${value.slice(value.length - safeTailChars)}`;
45438
45529
  }
45439
45530
  function formatLogArgs(...args2) {
45440
45531
  const summarizedArgs = args2.map((arg) => typeof arg === "string" ? arg : summarizeLogValue(arg));
45441
- const formatted = require$$0$8.formatWithOptions({
45532
+ const formatted = require$$0$9.formatWithOptions({
45442
45533
  colors: false,
45443
45534
  depth: MAX_LOG_OBJECT_DEPTH,
45444
45535
  maxArrayLength: MAX_LOG_ARRAY_ITEMS,
@@ -48946,7 +49037,7 @@ ${fromBody}`;
48946
49037
  }
48947
49038
  const _envShim = /* @__PURE__ */ Object.create(null);
48948
49039
  const _getEnv = (useShim) => globalThis.process?.env || globalThis.Deno?.env.toObject() || globalThis.__env__ || (useShim ? _envShim : globalThis);
48949
- const env$1 = new Proxy(_envShim, {
49040
+ const env$2 = new Proxy(_envShim, {
48950
49041
  get(_2, prop) {
48951
49042
  return _getEnv()[prop] ?? _envShim[prop];
48952
49043
  },
@@ -49036,13 +49127,13 @@ ${fromBody}`;
49036
49127
  }
49037
49128
  if (getEnvVar("NODE_DISABLE_COLORS") !== void 0 && getEnvVar("NODE_DISABLE_COLORS") !== "" || getEnvVar("NO_COLOR") !== void 0 && getEnvVar("NO_COLOR") !== "" || getEnvVar("TERM") === "dumb") return COLORS_2;
49038
49129
  if (getEnvVar("TMUX")) return COLORS_16m;
49039
- if ("TF_BUILD" in env$1 && "AGENT_NAME" in env$1) return COLORS_16;
49040
- if ("CI" in env$1) {
49041
- for (const { 0: envName, 1: colors2 } of CI_ENVS_MAP) if (envName in env$1) return colors2;
49130
+ if ("TF_BUILD" in env$2 && "AGENT_NAME" in env$2) return COLORS_16;
49131
+ if ("CI" in env$2) {
49132
+ for (const { 0: envName, 1: colors2 } of CI_ENVS_MAP) if (envName in env$2) return colors2;
49042
49133
  if (getEnvVar("CI_NAME") === "codeship") return COLORS_256;
49043
49134
  return COLORS_2;
49044
49135
  }
49045
- if ("TEAMCITY_VERSION" in env$1) return /^(9\.(0*[1-9]\d*)\.|\d{2,}\.)/.exec(getEnvVar("TEAMCITY_VERSION")) !== null ? COLORS_16 : COLORS_2;
49136
+ if ("TEAMCITY_VERSION" in env$2) return /^(9\.(0*[1-9]\d*)\.|\d{2,}\.)/.exec(getEnvVar("TEAMCITY_VERSION")) !== null ? COLORS_16 : COLORS_2;
49046
49137
  switch (getEnvVar("TERM_PROGRAM")) {
49047
49138
  case "iTerm.app":
49048
49139
  if (!getEnvVar("TERM_PROGRAM_VERSION") || /^[0-2]\./.exec(getEnvVar("TERM_PROGRAM_VERSION")) !== null) return COLORS_256;
@@ -49219,7 +49310,7 @@ ${fromBody}`;
49219
49310
  function getBaseURL(url, path2, request2, loadEnv2, trustedProxyHeaders) {
49220
49311
  if (url) return withPath(url, path2);
49221
49312
  {
49222
- const fromEnv2 = env$1.BETTER_AUTH_URL || env$1.NEXT_PUBLIC_BETTER_AUTH_URL || env$1.PUBLIC_BETTER_AUTH_URL || env$1.NUXT_PUBLIC_BETTER_AUTH_URL || env$1.NUXT_PUBLIC_AUTH_URL || (env$1.BASE_URL !== "/" ? env$1.BASE_URL : void 0);
49313
+ const fromEnv2 = env$2.BETTER_AUTH_URL || env$2.NEXT_PUBLIC_BETTER_AUTH_URL || env$2.PUBLIC_BETTER_AUTH_URL || env$2.NUXT_PUBLIC_BETTER_AUTH_URL || env$2.NUXT_PUBLIC_AUTH_URL || (env$2.BASE_URL !== "/" ? env$2.BASE_URL : void 0);
49223
49314
  if (fromEnv2) return withPath(fromEnv2, path2);
49224
49315
  }
49225
49316
  if (typeof window !== "undefined" && window.location) return withPath(window.location.origin, path2);
@@ -66963,7 +67054,7 @@ ${peerId}`;
66963
67054
  const EventEmitter2 = require$$0$7;
66964
67055
  const https = require$$1__default;
66965
67056
  const http$12 = http;
66966
- const net2 = require$$0$9;
67057
+ const net2 = require$$0$a;
66967
67058
  const tls = require$$4$2;
66968
67059
  const { randomBytes: randomBytes2, createHash: createHash2 } = crypto__default;
66969
67060
  const { Duplex, Readable: Readable2 } = xo;
@@ -82621,134 +82712,179 @@ ${val.stack}`;
82621
82712
  var node = {
82622
82713
  exports: {}
82623
82714
  };
82624
- var hasFlag$1;
82625
- var hasRequiredHasFlag$1;
82626
- function requireHasFlag$1() {
82627
- if (hasRequiredHasFlag$1) return hasFlag$1;
82628
- hasRequiredHasFlag$1 = 1;
82629
- hasFlag$1 = (flag, argv = process.argv) => {
82630
- const prefix = flag.startsWith("-") ? "" : flag.length === 1 ? "-" : "--";
82631
- const position = argv.indexOf(prefix + flag);
82632
- const terminatorPosition = argv.indexOf("--");
82633
- return position !== -1 && (terminatorPosition === -1 || position < terminatorPosition);
82634
- };
82635
- return hasFlag$1;
82636
- }
82637
- var supportsColor_1;
82638
- var hasRequiredSupportsColor;
82639
- function requireSupportsColor() {
82640
- if (hasRequiredSupportsColor) return supportsColor_1;
82641
- hasRequiredSupportsColor = 1;
82642
- const os2 = os__default$1;
82643
- const tty2 = require$$1$2;
82644
- const hasFlag2 = requireHasFlag$1();
82645
- const { env: env2 } = process;
82646
- let forceColor;
82647
- if (hasFlag2("no-color") || hasFlag2("no-colors") || hasFlag2("color=false") || hasFlag2("color=never")) {
82648
- forceColor = 0;
82649
- } else if (hasFlag2("color") || hasFlag2("colors") || hasFlag2("color=true") || hasFlag2("color=always")) {
82650
- forceColor = 1;
82715
+ function hasFlag$1(flag, argv = globalThis.Deno ? globalThis.Deno.args : process$2.argv) {
82716
+ const prefix = flag.startsWith("-") ? "" : flag.length === 1 ? "-" : "--";
82717
+ const position = argv.indexOf(prefix + flag);
82718
+ const terminatorPosition = argv.indexOf("--");
82719
+ return position !== -1 && (terminatorPosition === -1 || position < terminatorPosition);
82720
+ }
82721
+ const { env: env$1 } = process$2;
82722
+ let flagForceColor;
82723
+ if (hasFlag$1("no-color") || hasFlag$1("no-colors") || hasFlag$1("color=false") || hasFlag$1("color=never")) {
82724
+ flagForceColor = 0;
82725
+ } else if (hasFlag$1("color") || hasFlag$1("colors") || hasFlag$1("color=true") || hasFlag$1("color=always")) {
82726
+ flagForceColor = 1;
82727
+ }
82728
+ function envForceColor() {
82729
+ if (!("FORCE_COLOR" in env$1)) {
82730
+ return;
82651
82731
  }
82652
- if ("FORCE_COLOR" in env2) {
82653
- if (env2.FORCE_COLOR === "true") {
82654
- forceColor = 1;
82655
- } else if (env2.FORCE_COLOR === "false") {
82656
- forceColor = 0;
82657
- } else {
82658
- forceColor = env2.FORCE_COLOR.length === 0 ? 1 : Math.min(parseInt(env2.FORCE_COLOR, 10), 3);
82659
- }
82732
+ if (env$1.FORCE_COLOR === "true") {
82733
+ return 1;
82660
82734
  }
82661
- function translateLevel2(level) {
82662
- if (level === 0) {
82663
- return false;
82664
- }
82665
- return {
82666
- level,
82667
- hasBasic: true,
82668
- has256: level >= 2,
82669
- has16m: level >= 3
82670
- };
82735
+ if (env$1.FORCE_COLOR === "false") {
82736
+ return 0;
82671
82737
  }
82672
- function supportsColor2(haveStream, streamIsTTY) {
82673
- if (forceColor === 0) {
82674
- return 0;
82675
- }
82676
- if (hasFlag2("color=16m") || hasFlag2("color=full") || hasFlag2("color=truecolor")) {
82738
+ if (env$1.FORCE_COLOR.length === 0) {
82739
+ return 1;
82740
+ }
82741
+ if (!new RegExp("^\\d+$", "v").test(env$1.FORCE_COLOR)) {
82742
+ return;
82743
+ }
82744
+ const level = Math.min(Number(env$1.FORCE_COLOR), 3);
82745
+ if (![
82746
+ 0,
82747
+ 1,
82748
+ 2,
82749
+ 3
82750
+ ].includes(level)) {
82751
+ return;
82752
+ }
82753
+ return level;
82754
+ }
82755
+ function translateLevel(level) {
82756
+ if (level === 0) {
82757
+ return false;
82758
+ }
82759
+ return {
82760
+ level,
82761
+ hasBasic: true,
82762
+ has256: level >= 2,
82763
+ has16m: level >= 3
82764
+ };
82765
+ }
82766
+ function _supportsColor(haveStream, { streamIsTTY, sniffFlags = true } = {}) {
82767
+ const noFlagForceColor = envForceColor();
82768
+ if (noFlagForceColor !== void 0) {
82769
+ flagForceColor = noFlagForceColor;
82770
+ }
82771
+ const forceColor = sniffFlags ? flagForceColor : noFlagForceColor;
82772
+ if (forceColor === 0) {
82773
+ return 0;
82774
+ }
82775
+ if (sniffFlags) {
82776
+ if (hasFlag$1("color=16m") || hasFlag$1("color=full") || hasFlag$1("color=truecolor")) {
82677
82777
  return 3;
82678
82778
  }
82679
- if (hasFlag2("color=256")) {
82779
+ if (hasFlag$1("color=256")) {
82680
82780
  return 2;
82681
82781
  }
82682
- if (haveStream && !streamIsTTY && forceColor === void 0) {
82683
- return 0;
82782
+ }
82783
+ if (forceColor !== void 0 && new RegExp("^\\d+$", "v").test(env$1.FORCE_COLOR)) {
82784
+ return forceColor;
82785
+ }
82786
+ if ("TF_BUILD" in env$1 && "AGENT_NAME" in env$1) {
82787
+ return 1;
82788
+ }
82789
+ if (haveStream && !streamIsTTY && forceColor === void 0) {
82790
+ return 0;
82791
+ }
82792
+ const min2 = forceColor || 0;
82793
+ if (env$1.TERM === "dumb") {
82794
+ return min2;
82795
+ }
82796
+ if (process$2.platform === "win32") {
82797
+ const osRelease = os__default.release().split(".");
82798
+ if (Number(osRelease[0]) >= 10 && Number(osRelease[2]) >= 10586) {
82799
+ return Number(osRelease[2]) >= 14931 ? 3 : 2;
82684
82800
  }
82685
- const min2 = forceColor || 0;
82686
- if (env2.TERM === "dumb") {
82687
- return min2;
82801
+ return 1;
82802
+ }
82803
+ if ("CI" in env$1) {
82804
+ if ([
82805
+ "GITHUB_ACTIONS",
82806
+ "GITEA_ACTIONS",
82807
+ "CIRCLECI"
82808
+ ].some((key2) => Object.hasOwn(env$1, key2))) {
82809
+ return 3;
82688
82810
  }
82689
- if (process.platform === "win32") {
82690
- const osRelease = os2.release().split(".");
82691
- if (Number(osRelease[0]) >= 10 && Number(osRelease[2]) >= 10586) {
82692
- return Number(osRelease[2]) >= 14931 ? 3 : 2;
82693
- }
82811
+ if ([
82812
+ "TRAVIS",
82813
+ "APPVEYOR",
82814
+ "GITLAB_CI",
82815
+ "BUILDKITE",
82816
+ "DRONE"
82817
+ ].some((sign2) => Object.hasOwn(env$1, sign2)) || env$1.CI_NAME === "codeship") {
82694
82818
  return 1;
82695
82819
  }
82696
- if ("CI" in env2) {
82697
- if ([
82698
- "TRAVIS",
82699
- "CIRCLECI",
82700
- "APPVEYOR",
82701
- "GITLAB_CI",
82702
- "GITHUB_ACTIONS",
82703
- "BUILDKITE"
82704
- ].some((sign2) => sign2 in env2) || env2.CI_NAME === "codeship") {
82705
- return 1;
82820
+ return min2;
82821
+ }
82822
+ if ("TEAMCITY_VERSION" in env$1) {
82823
+ return new RegExp("^(?:9\\.0*[1-9]\\d*\\.|\\d{2,}\\.)", "v").test(env$1.TEAMCITY_VERSION) ? 1 : 0;
82824
+ }
82825
+ if (env$1.COLORTERM === "truecolor") {
82826
+ return 3;
82827
+ }
82828
+ if (env$1.TERM === "xterm-kitty") {
82829
+ return 3;
82830
+ }
82831
+ if (env$1.TERM === "xterm-ghostty") {
82832
+ return 3;
82833
+ }
82834
+ if (env$1.TERM === "wezterm") {
82835
+ return 3;
82836
+ }
82837
+ if ("TERM_PROGRAM" in env$1) {
82838
+ const version2 = Number((env$1.TERM_PROGRAM_VERSION || "").split(".", 1)[0]);
82839
+ switch (env$1.TERM_PROGRAM) {
82840
+ case "iTerm.app": {
82841
+ return version2 >= 3 ? 3 : 2;
82706
82842
  }
82707
- return min2;
82708
- }
82709
- if ("TEAMCITY_VERSION" in env2) {
82710
- return /^(9\.(0*[1-9]\d*)\.|\d{2,}\.)/.test(env2.TEAMCITY_VERSION) ? 1 : 0;
82711
- }
82712
- if (env2.COLORTERM === "truecolor") {
82713
- return 3;
82714
- }
82715
- if ("TERM_PROGRAM" in env2) {
82716
- const version2 = parseInt((env2.TERM_PROGRAM_VERSION || "").split(".")[0], 10);
82717
- switch (env2.TERM_PROGRAM) {
82718
- case "iTerm.app":
82719
- return version2 >= 3 ? 3 : 2;
82720
- case "Apple_Terminal":
82721
- return 2;
82843
+ case "Apple_Terminal": {
82844
+ return 2;
82722
82845
  }
82723
82846
  }
82724
- if (/-256(color)?$/i.test(env2.TERM)) {
82725
- return 2;
82726
- }
82727
- if (/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(env2.TERM)) {
82728
- return 1;
82729
- }
82730
- if ("COLORTERM" in env2) {
82731
- return 1;
82732
- }
82733
- return min2;
82734
82847
  }
82735
- function getSupportLevel(stream2) {
82736
- const level = supportsColor2(stream2, stream2 && stream2.isTTY);
82737
- return translateLevel2(level);
82848
+ if (new RegExp("-256(?:color)?$", "iv").test(env$1.TERM)) {
82849
+ return 2;
82738
82850
  }
82739
- supportsColor_1 = {
82740
- supportsColor: getSupportLevel,
82741
- stdout: translateLevel2(supportsColor2(true, tty2.isatty(1))),
82742
- stderr: translateLevel2(supportsColor2(true, tty2.isatty(2)))
82743
- };
82744
- return supportsColor_1;
82851
+ if (new RegExp("^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux", "iv").test(env$1.TERM)) {
82852
+ return 1;
82853
+ }
82854
+ if ("COLORTERM" in env$1) {
82855
+ return 1;
82856
+ }
82857
+ return min2;
82858
+ }
82859
+ function createSupportsColor(stream2, options = {}) {
82860
+ const level = _supportsColor(stream2, {
82861
+ streamIsTTY: stream2 && stream2.isTTY,
82862
+ ...options
82863
+ });
82864
+ return translateLevel(level);
82745
82865
  }
82866
+ const supportsColor = {
82867
+ stdout: createSupportsColor({
82868
+ isTTY: tty.isatty(1)
82869
+ }),
82870
+ stderr: createSupportsColor({
82871
+ isTTY: tty.isatty(2)
82872
+ })
82873
+ };
82874
+ const supportsColor$1 = Object.freeze(Object.defineProperty({
82875
+ __proto__: null,
82876
+ createSupportsColor,
82877
+ default: supportsColor
82878
+ }, Symbol.toStringTag, {
82879
+ value: "Module"
82880
+ }));
82881
+ const require$$2$2 = getAugmentedNamespace(supportsColor$1);
82746
82882
  var hasRequiredNode;
82747
82883
  function requireNode() {
82748
82884
  if (hasRequiredNode) return node.exports;
82749
82885
  hasRequiredNode = 1;
82750
82886
  (function(module2, exports$1) {
82751
- const tty2 = require$$1$2;
82887
+ const tty2 = require$$0$8;
82752
82888
  const util2 = require$$0$5;
82753
82889
  exports$1.init = init2;
82754
82890
  exports$1.log = log;
@@ -82767,7 +82903,7 @@ ${val.stack}`;
82767
82903
  1
82768
82904
  ];
82769
82905
  try {
82770
- const supportsColor2 = requireSupportsColor();
82906
+ const supportsColor2 = require$$2$2;
82771
82907
  if (supportsColor2 && (supportsColor2.stderr || supportsColor2).level >= 2) {
82772
82908
  exports$1.colors = [
82773
82909
  20,
@@ -83058,7 +83194,7 @@ ${val.stack}`;
83058
83194
  value: true
83059
83195
  });
83060
83196
  exports$1.Agent = void 0;
83061
- const net2 = __importStar(require$$0$9);
83197
+ const net2 = __importStar(require$$0$a);
83062
83198
  const http$12 = __importStar(http);
83063
83199
  const https_1 = require$$1__default;
83064
83200
  __exportStar(requireHelpers(), exports$1);
@@ -83314,7 +83450,7 @@ ${val.stack}`;
83314
83450
  value: true
83315
83451
  });
83316
83452
  dist$2.HttpsProxyAgent = void 0;
83317
- const net2 = __importStar(require$$0$9);
83453
+ const net2 = __importStar(require$$0$a);
83318
83454
  const tls = __importStar(require$$4$2);
83319
83455
  const assert_1 = __importDefault(assert);
83320
83456
  const debug_12 = __importDefault(requireSrc());
@@ -84792,13 +84928,13 @@ ${val.stack}`;
84792
84928
  function requireUtil$8() {
84793
84929
  if (hasRequiredUtil$8) return util$9;
84794
84930
  hasRequiredUtil$8 = 1;
84795
- const assert2 = require$$0$b;
84931
+ const assert2 = require$$0$c;
84796
84932
  const { kDestroyed, kBodyUsed, kListeners, kBody } = requireSymbols$4();
84797
84933
  const { IncomingMessage } = http$1;
84798
- const stream2 = require$$0$c;
84934
+ const stream2 = require$$0$d;
84799
84935
  const net$1 = net;
84800
- const { Blob: Blob2 } = require$$0$a;
84801
- const nodeUtil = require$$0$8;
84936
+ const { Blob: Blob2 } = require$$0$b;
84937
+ const nodeUtil = require$$0$9;
84802
84938
  const { stringify } = require$$7$3;
84803
84939
  const { EventEmitter: EE } = require$$0$4;
84804
84940
  const { InvalidArgumentError: InvalidArgumentError2 } = requireErrors$1();
@@ -85312,8 +85448,8 @@ ${val.stack}`;
85312
85448
  function requireDiagnostics() {
85313
85449
  if (hasRequiredDiagnostics) return diagnostics;
85314
85450
  hasRequiredDiagnostics = 1;
85315
- const diagnosticsChannel = require$$0$d;
85316
- const util2 = require$$0$8;
85451
+ const diagnosticsChannel = require$$0$e;
85452
+ const util2 = require$$0$9;
85317
85453
  const undiciDebugLog = util2.debuglog("undici");
85318
85454
  const fetchDebuglog = util2.debuglog("fetch");
85319
85455
  const websocketDebuglog = util2.debuglog("websocket");
@@ -85415,7 +85551,7 @@ ${val.stack}`;
85415
85551
  if (hasRequiredRequest$1) return request$1;
85416
85552
  hasRequiredRequest$1 = 1;
85417
85553
  const { InvalidArgumentError: InvalidArgumentError2, NotSupportedError } = requireErrors$1();
85418
- const assert2 = require$$0$b;
85554
+ const assert2 = require$$0$c;
85419
85555
  const { isValidHTTPToken, isValidHeaderValue, isStream: isStream2, destroy, isBuffer, isFormDataLike, isIterable: isIterable2, isBlobLike, buildURL, validateHandler, getServerName, normalizedMethodRecords } = requireUtil$8();
85420
85556
  const { channels } = requireDiagnostics();
85421
85557
  const { headerNameLowerCasedRecord } = requireConstants$4();
@@ -86066,7 +86202,7 @@ ${val.stack}`;
86066
86202
  if (hasRequiredConnect$1) return connect$2;
86067
86203
  hasRequiredConnect$1 = 1;
86068
86204
  const net$1 = net;
86069
- const assert2 = require$$0$b;
86205
+ const assert2 = require$$0$c;
86070
86206
  const util2 = requireUtil$8();
86071
86207
  const { InvalidArgumentError: InvalidArgumentError2, ConnectTimeoutError } = requireErrors$1();
86072
86208
  const timers2 = requireTimers();
@@ -86632,7 +86768,7 @@ ${val.stack}`;
86632
86768
  function requireLlhttpWasm() {
86633
86769
  if (hasRequiredLlhttpWasm) return llhttpWasm;
86634
86770
  hasRequiredLlhttpWasm = 1;
86635
- const { Buffer: Buffer2 } = require$$0$a;
86771
+ const { Buffer: Buffer2 } = require$$0$b;
86636
86772
  llhttpWasm = Buffer2.from("AGFzbQEAAAABJwdgAX8Bf2ADf39/AX9gAX8AYAJ/fwBgBH9/f38Bf2AAAGADf39/AALLAQgDZW52GHdhc21fb25faGVhZGVyc19jb21wbGV0ZQAEA2VudhV3YXNtX29uX21lc3NhZ2VfYmVnaW4AAANlbnYLd2FzbV9vbl91cmwAAQNlbnYOd2FzbV9vbl9zdGF0dXMAAQNlbnYUd2FzbV9vbl9oZWFkZXJfZmllbGQAAQNlbnYUd2FzbV9vbl9oZWFkZXJfdmFsdWUAAQNlbnYMd2FzbV9vbl9ib2R5AAEDZW52GHdhc21fb25fbWVzc2FnZV9jb21wbGV0ZQAAAy0sBQYAAAIAAAAAAAACAQIAAgICAAADAAAAAAMDAwMBAQEBAQEBAQEAAAIAAAAEBQFwARISBQMBAAIGCAF/AUGA1AQLB9EFIgZtZW1vcnkCAAtfaW5pdGlhbGl6ZQAIGV9faW5kaXJlY3RfZnVuY3Rpb25fdGFibGUBAAtsbGh0dHBfaW5pdAAJGGxsaHR0cF9zaG91bGRfa2VlcF9hbGl2ZQAvDGxsaHR0cF9hbGxvYwALBm1hbGxvYwAxC2xsaHR0cF9mcmVlAAwEZnJlZQAMD2xsaHR0cF9nZXRfdHlwZQANFWxsaHR0cF9nZXRfaHR0cF9tYWpvcgAOFWxsaHR0cF9nZXRfaHR0cF9taW5vcgAPEWxsaHR0cF9nZXRfbWV0aG9kABAWbGxodHRwX2dldF9zdGF0dXNfY29kZQAREmxsaHR0cF9nZXRfdXBncmFkZQASDGxsaHR0cF9yZXNldAATDmxsaHR0cF9leGVjdXRlABQUbGxodHRwX3NldHRpbmdzX2luaXQAFQ1sbGh0dHBfZmluaXNoABYMbGxodHRwX3BhdXNlABcNbGxodHRwX3Jlc3VtZQAYG2xsaHR0cF9yZXN1bWVfYWZ0ZXJfdXBncmFkZQAZEGxsaHR0cF9nZXRfZXJybm8AGhdsbGh0dHBfZ2V0X2Vycm9yX3JlYXNvbgAbF2xsaHR0cF9zZXRfZXJyb3JfcmVhc29uABwUbGxodHRwX2dldF9lcnJvcl9wb3MAHRFsbGh0dHBfZXJybm9fbmFtZQAeEmxsaHR0cF9tZXRob2RfbmFtZQAfEmxsaHR0cF9zdGF0dXNfbmFtZQAgGmxsaHR0cF9zZXRfbGVu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PgtBhwEMPQtBiAEMPAtBiQEMOwtBigEMOgtBiwEMOQtBjAEMOAtBjQEMNwtBjgEMNgtBjwEMNQtBkAEMNAtBkQEMMwtBkgEMMgtBkwEMMQtBlAEMMAtBlQEMLwtBlgEMLgtBlwEMLQtBmAEMLAtBmQEMKwtBmgEMKgtBmwEMKQtBnAEMKAtBnQEMJwtBngEMJgtBnwEMJQtBoAEMJAtBoQEMIwtBogEMIgtBowEMIQtBpAEMIAtBpQEMHwtBpgEMHgtBpwEMHQtBqAEMHAtBqQEMGwtBqgEMGgtBqwEMGQtBrAEMGAtBrQEMFwtBrgEMFgtBAQwVC0GvAQwUC0GwAQwTC0GxAQwSC0GzAQwRC0GyAQwQC0G0AQwPC0G1AQwOC0G2AQwNC0G3AQwMC0G4AQwLC0G5AQwKC0G6AQwJC0G7AQwIC0HGAQwHC0G8AQwGC0G9AQwFC0G+AQwEC0G/AQwDC0HAAQwCC0HCAQwBC0HBAQshAwNAAkACQAJAAkACQAJAAkACQAJAIAICfwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJ/AkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgAgJ/AkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACfwJAAkACfwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAC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iQEhAwykAgtBASABLQAAQd8ARw1nGiABQQFqIQEMXgtBigEhAyABIARGDaICIAIoAgAiACAEIAFraiEFIAEgAGtBAWohBgNAIAEtAAAgAEGMzwBqLQAARw1kIABBAUYN+gEgAEEBaiEAIAQgAUEBaiIBRw0ACyACIAU2AgAMogILQYsBIQMgASAERg2hAiACKAIAIgAgBCABa2ohBSABIABrQQJqIQYCQANAIAEtAAAgAEGOzwBqLQAARw1kIABBAkYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAyiAgsgAkEANgIAIAZBAWohAUECDGULQYwBIQMgASAERg2gAiACKAIAIgAgBCABa2ohBSABIABrQQFqIQYCQANAIAEtAAAgAEHwzwBqLQAARw1jIABBAUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAyhAgsgAkEANgIAIAZBAWohAUEfDGQLQY0BIQMgASAERg2fAiACKAIAIgAgBCABa2ohBSABIABrQQFqIQYCQANAIAEtAAAgAEHyzwBqLQAARw1iIABBAUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAygAgsgAkEANgIAIAZBAWohAUEJDGMLIAEgBEYEQEGOASEDDJ8CCwJAAkAgAS0AAEHJAGsOBwBiYmJiYgFiCyABQQFqIQFB+AAhAwyGAgsgAUEBaiEBQfkAIQMMhQILQY8BIQMgASAERg2dAiACKAIAIgAgBCABa2ohBSABIABrQQVqIQYCQANAIAEtAAAgAEGRzwBqLQAARw1gIABBBUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAyeAgsgAkEANgIAIAZBAWohAUEYDGELQZABIQMgASAERg2cAiACKAIAIgAgBCABa2ohBSABIABrQQJqIQYCQANAIAEtAAAgAEGXzwBqLQAARw1fIABBAkYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAydAgsgAkEANgIAIAZBAWohAUEXDGALQZEBIQMgASAERg2bAiACKAIAIgAgBCABa2ohBSABIABrQQZqIQYCQANAIAEtAAAgAEGazwBqLQAARw1eIABBBkYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAycAgsgAkEANgIAIAZBAWohAUEV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JSIARQ0RIAJB5QA2AhwgAiABNgIUIAIgADYCDEEAIQMMtAELIAIoAgQhACACQQA2AgQgAiAAIAEQJSIARQ0gIAJB0wA2AhwgAiABNgIUIAIgADYCDEEAIQMMswELIAIoAgQhACACQQA2AgQgAiAAIAEQJSIARQ0iIAJB0gA2AhwgAiABNgIUIAIgADYCDEEAIQMMsgELIAIoAgQhACACQQA2AgQgAiAAIAEQJSIARQ0OIAJB5QA2AhwgAiABNgIUIAIgADYCDEEAIQMMsQELIAIoAgQhACACQQA2AgQgAiAAIAEQJSIARQ0dIAJB0wA2AhwgAiABNgIUIAIgADYCDEEAIQMMsAELIAIoAgQhACACQQA2AgQgAiAAIAEQJSIARQ0fIAJB0gA2AhwgAiABNgIUIAIgADYCDEEAIQMMrwELIABBP0cNASABQQFqCyEBQQUhAwyUAQtBACEDIAJBADYCHCACIAE2AhQgAkH9EjYCECACQQc2AgwMrAELIAJBADYCHCACIAE2AhQgAkHcCDYCECACQQc2AgxBACEDDKsBCyACKAIEIQAgAkEANgIEIAIgACABECUiAEUNByACQeUANgIcIAIgATYCFCACIAA2AgxBACEDDKoBCyACKAIEIQAgAkEANgIEIAIgACABECUiAEUNFiACQdMANgIcIAIgATYCFCACIAA2AgxBACEDDKkBCyACKAIEIQAgAkEANgIEIAIgACABECUiAEUNGCACQdIANgIcIAIgATYCFCACIAA2AgxBACEDDKgBCyACQQA2AhwgAiABNgIUIAJBxgo2AhAgAkEHNgIMQQAhAwynAQsgAigCBCEAIAJBADYCBCACIAAgARAlIgBFDQMgAkHlADYCHCACIAE2AhQgAiAANgIMQQAhAwymAQsgAigCBCEAIAJBADYCBCACIAAgARAlIgBFDRIgAkHTADYCHCACIAE2AhQgAiAANgIMQQAhAwylAQsgAigCBCEAIAJBADYCBCACIAAgARAlIgBFDRQgAkHSADYCHCACIAE2AhQgAiAANgIMQQAhAwykAQsgAigCBCEAIAJBADYCBCACIAAgARAlIgBFDQAgAkHlADYCHCACIAE2AhQgAiAANgIMQQAhAwyjAQtB1QAhAwyJAQsgAEEVRwRAIAJBADYCHCACIAE2AhQgAkG5DTYCECACQRo2AgxB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AkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIABB5ABrDvQDY2IAAWFhYWFhYQIDBAVhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhBgcICQoLDA0OD2FhYWFhEGFhYWFhYWFhYWFhEWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYRITFBUWFxgZGhthYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhHB0eHyAhIiMkJSYnKCkqKywtLi8wMTIzNDU2YTc4OTphYWFhYWFhYTthYWE8YWFhYT0+P2FhYWFhYWFhQGFhQWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYUJDREVGR0hJSktMTU5PUFFSU2FhYWFhYWFhVFVWV1hZWlthXF1hYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFeYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhX2BhC0HhJw8LQaQhDwtByywPC0H+MQ8LQcAkDwtBqyQPC0GNKA8LQeImDwtBgDAPC0G5Lw8LQdckDwtB7x8PC0HhHw8LQfofDwtB8iAPC0GoLw8LQa4yDwtBiDAPC0HsJw8LQYIiDwtBjh0PC0HQLg8LQcojDwtBxTIPC0HfHA8LQdIcDwtBxCAPC0HXIA8LQaIfDwtB7S4PC0GrMA8LQdQlDwtBzC4PC0H6Lg8LQfwrDwtB0jAPC0HxHQ8LQbsgDwtB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CABB3AgLii1JbnZhbGlkIGNoYXIgaW4gdXJsIHF1ZXJ5AFNwYW4gY2FsbGJhY2sgZXJyb3IgaW4gb25fYm9keQBDb250ZW50LUxlbmd0aCBvdmVyZmxvdwBDaHVuayBzaXplIG92ZXJmbG93AFJlc3BvbnNlIG92ZXJmbG93AEludmFsaWQgbWV0aG9kIGZvciBIVFRQL3gueCByZXF1ZXN0AEludmFsaWQgbWV0aG9kIGZvciBSVFNQL3gueCByZXF1ZXN0AEV4cGVjdGVkIFNPVVJDRSBtZXRob2QgZm9yIElDRS94LnggcmVxdWVzdABJbnZhbGlkIGNoYXIgaW4gdXJsIGZyYWdtZW50IHN0YXJ0AEV4cGVjdGVkIGRvdABTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX3N0YXR1cwBJbnZhbGlkIHJlc3BvbnNlIHN0YXR1cwBJbnZhbGlkIGNoYXJhY3RlciBpbiBjaHVuayBleHRlbnNpb25zAFVzZXIgY2FsbGJhY2sgZXJyb3IAYG9uX3Jlc2V0YCBjYWxsYmFjayBlcnJvcgBgb25fY2h1bmtfaGVhZGVyYCBjYWxsYmFjayBlcnJvcgBgb25fbWVzc2FnZV9iZWdpbmAgY2FsbGJhY2sgZXJyb3IAYG9uX2NodW5rX2V4dGVuc2lvbl92YWx1ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX3N0YXR1c19jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX3ZlcnNpb25fY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl91cmxfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl9jaHVua19jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX2hlYWRlcl92YWx1ZV9jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX21lc3NhZ2VfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl9tZXRob2RfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl9oZWFkZXJfZmllbGRfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl9jaHVua19leHRlbnNpb25fbmFtZWAgY2FsbGJhY2sgZXJyb3IAVW5leHBlY3RlZCBjaGFyIGluIHVybCBzZXJ2ZXIASW52YWxpZCBoZWFkZXIgdmFsdWUgY2hhcgBJbnZhbGlkIGhlYWRlciBmaWVsZCBjaGFyAFNwYW4gY2FsbGJhY2sgZXJyb3IgaW4gb25fdmVyc2lvbgBJbnZhbGlkIG1pbm9yIHZlcnNpb24ASW52YWxpZCBtYWpvciB2ZXJzaW9uAEV4cGVjdGVkIHNwYWNlIGFmdGVyIHZlcnNpb24ARXhwZWN0ZWQgQ1JMRiBhZnRlciB2ZXJzaW9uAEludmFsaWQgSFRUUCB2ZXJzaW9uAEludmFsaWQgaGVhZGVyIHRva2VuAFNwYW4gY2FsbGJhY2sgZXJyb3IgaW4gb25fdXJsAEludmFsaWQgY2hhcmFjdGVycyBpbiB1cmwAVW5leHBlY3RlZCBzdGFydCBjaGFyIGluIHVybABEb3VibGUgQCBpbiB1cmwARW1wdHkgQ29udGVudC1MZW5ndGgASW52YWxpZCBjaGFyYWN0ZXIgaW4gQ29udGVudC1MZW5ndGgARHVwbGljYXRlIENvbnRlbnQtTGVuZ3RoAEludmFsaWQgY2hhciBpbiB1cmwgcGF0aABDb250ZW50LUxlbmd0aCBjYW4ndCBiZSBwcmVzZW50IHdpdGggVHJhbnNmZXItRW5jb2RpbmcASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgc2l6ZQBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX2hlYWRlcl92YWx1ZQBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX2NodW5rX2V4dGVuc2lvbl92YWx1ZQBJbnZhbGlkIGNoYXJhY3RlciBpbiBjaHVuayBleHRlbnNpb25zIHZhbHVlAE1pc3NpbmcgZXhwZWN0ZWQgTEYgYWZ0ZXIgaGVhZGVyIHZhbHVlAEludmFsaWQgYFRyYW5zZmVyLUVuY29kaW5nYCBoZWFkZXIgdmFsdWUASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgZXh0ZW5zaW9ucyBxdW90ZSB2YWx1ZQBJbnZhbGlkIGNoYXJhY3RlciBpbiBjaHVuayBleHRlbnNpb25zIHF1b3RlZCB2YWx1ZQBQYXVzZWQgYnkgb25faGVhZGVyc19jb21wbGV0ZQBJbnZhbGlkIEVPRiBzdGF0ZQBvbl9yZXNldCBwYXVzZQBvbl9jaHVua19oZWFkZXIgcGF1c2UAb25fbWVzc2FnZV9iZWdpbiBwYXVzZQBvbl9jaHVua19leHRlbnNpb25fdmFsdWUgcGF1c2UAb25fc3RhdHVzX2NvbXBsZXRlIHBhdXNlAG9uX3ZlcnNpb25fY29tcGxldGUgcGF1c2UAb25fdXJsX2NvbXBsZXRlIHBhdXNlAG9uX2NodW5rX2NvbXBsZXRlIHBhdXNlAG9uX2hlYWRlcl92YWx1ZV9jb21wbGV0ZSBwYXVzZQBvbl9tZXNzYWdlX2NvbXBsZXRlIHBhdXNlAG9uX21ldGhvZF9jb21wbGV0ZSBwYXVzZQBvbl9oZWFkZXJfZmllbGRfY29tcGxldGUgcGF1c2UAb25fY2h1bmtfZXh0ZW5zaW9uX25hbWUgcGF1c2UAVW5leHBlY3RlZCBzcGFjZSBhZnRlciBzdGFydCBsaW5lAFNwYW4gY2FsbGJhY2sgZXJyb3IgaW4gb25fY2h1bmtfZXh0ZW5zaW9uX25hbWUASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgZXh0ZW5zaW9ucyBuYW1lAFBhdXNlIG9uIENPTk5FQ1QvVXBncmFkZQBQYXVzZSBvbiBQUkkvVXBncmFkZQBFeHBlY3RlZCBIVFRQLzIgQ29ubmVjdGlvbiBQcmVmYWNlAFNwYW4gY2FsbGJhY2sgZXJyb3IgaW4gb25fbWV0aG9kAEV4cGVjdGVkIHNwYWNlIGFmdGVyIG1ldGhvZABTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX2hlYWRlcl9maWVsZABQYXVzZWQASW52YWxpZCB3b3JkIGVuY291bnRlcmVkAEludmFsaWQgbWV0aG9kIGVuY291bnRlcmVkAFVuZXhwZWN0ZWQgY2hhciBpbiB1cmwgc2NoZW1hAFJlcXVlc3QgaGFzIGludmFsaWQgYFRyYW5zZmVyLUVuY29kaW5nYABTV0lUQ0hfUFJPWFkAVVNFX1BST1hZAE1LQUNUSVZJVFkAVU5QUk9DRVNTQUJMRV9FTlRJVFkAQ09QWQBNT1ZFRF9QRVJNQU5FTlRMWQBUT09fRUFSTFkATk9USUZZAEZBSUxFRF9ERVBFTkRFTkNZAEJBRF9HQVRFV0FZAFBMQVkAUFVUAENIRUNLT1VUAEdBVEVXQVlfVElNRU9VVABSRVFVRVNUX1RJTUVPVVQATkVUV09SS19DT05ORUNUX1RJTUVPVVQAQ09OTkVDVElPTl9USU1FT1VUAExPR0lOX1RJTUVPVVQATkVUV09SS19SRUFEX1RJTUVPVVQAUE9TVABNSVNESVJFQ1RFRF9SRVFVRVNUAENMSUVOVF9DTE9TRURfUkVRVUVTVABDTElFTlRfQ0xPU0VEX0xPQURfQkFMQU5DRURfUkVRVUVTVABCQURfUkVRVUVTVABIVFRQX1JFUVVFU1RfU0VOVF9UT19IVFRQU19QT1JUAFJFUE9SVABJTV9BX1RFQVBPVABSRVNFVF9DT05URU5UAE5PX0NPTlRFTlQAUEFSVElBTF9DT05URU5UAEhQRV9JTlZBTElEX0NPTlNUQU5UAEhQRV9DQl9SRVNFVABHRVQASFBFX1NUUklDVABDT05GTElDVABURU1QT1JBUllfUkVESVJFQ1QAUEVSTUFORU5UX1JFRElSRUNUAENPTk5FQ1QATVVMVElfU1RBVFVTAEhQRV9JTlZBTElEX1NUQVRVUwBUT09fTUFOWV9SRVFVRVNUUwBFQVJMWV9ISU5UUwBVTkFWQUlMQUJMRV9GT1JfTEVHQUxfUkVBU09OUwBPUFRJT05TAFNXSVRDSElOR19QUk9UT0NPTFMAVkFSSUFOVF9BTFNPX05FR09USUFURVMATVVMVElQTEVfQ0hPSUNFUwBJTlRFUk5BTF9TRVJWRVJfRVJST1IAV0VCX1NFUlZFUl9VTktOT1dOX0VSUk9SAFJBSUxHVU5fRVJST1IASURFTlRJVFlfUFJPVklERVJfQVVUSEVOVElDQVRJT05fRVJST1IAU1NMX0NFUlRJRklDQVRFX0VSUk9SAElOVkFMSURfWF9GT1JXQVJERURfRk9SAFNFVF9QQVJBTUVURVIAR0VUX1BBUkFNRVRFUgBIUEVfVVNFUgBTRUVfT1RIRVIASFBFX0NCX0NIVU5LX0hFQURFUgBNS0NBTEVOREFSAFNFVFVQAFdFQl9TRVJWRVJfSVNfRE9XTgBURUFSRE9XTgBIUEVfQ0xPU0VEX0NPTk5FQ1RJT04ASEVVUklTVElDX0VYUElSQVRJT04ARElTQ09OTkVDVEVEX09QRVJBVElPTgBOT05fQVVUSE9SSVRBVElWRV9JTkZPUk1BVElPTgBIUEVfSU5WQUxJRF9WRVJTSU9OAEhQRV9DQl9NRVNTQUdFX0JFR0lOAFNJVEVfSVNfRlJPWkVOAEhQRV9JTlZBTElEX0hFQURFUl9UT0tFTgBJTlZBTElEX1RPS0VOAEZPUkJJRERFTgBFTkhBTkNFX1lPVVJfQ0FMTQBIUEVfSU5WQUxJRF9VUkwAQkxPQ0tFRF9CWV9QQVJFTlRBTF9DT05UUk9MAE1LQ09MAEFDTABIUEVfSU5URVJOQUwAUkVRVUVTVF9IRUFERVJfRklFTERTX1RPT19MQVJHRV9VTk9GRklDSUFMAEhQRV9PSwBVTkxJTksAVU5MT0NLAFBSSQBSRVRSWV9XSVRIAEhQRV9JTlZBTElEX0NPTlRFTlRfTEVOR1RIAEhQRV9VTkVYUEVDVEVEX0NPTlRFTlRfTEVOR1RIAEZMVVNIAFBST1BQQVRDSABNLVNFQVJDSABVUklfVE9PX0xPTkcAUFJPQ0VTU0lORwBNSVNDRUxMQU5FT1VTX1BFUlNJU1RFTlRfV0FSTklORwBNSVNDRUxMQU5FT1VTX1dBUk5JTkcASFBFX0lOVkFMSURfVFJBTlNGRVJfRU5DT0RJTkcARXhwZWN0ZWQgQ1JMRgBIUEVfSU5WQUxJRF9DSFVOS19TSVpFAE1PVkUAQ09OVElOVUUASFBFX0NCX1NUQVRVU19DT01QTEVURQBIUEVfQ0JfSEVBREVSU19DT01QTEVURQBIUEVfQ0JfVkVSU0lPTl9DT01QTEVURQBIUEVfQ0JfVVJMX0NPTVBMRVRFAEhQRV9DQl9DSFVOS19DT01QTEVURQBIUEVfQ0JfSEVBREVSX1ZBTFVFX0NPTVBMRVRFAEhQRV9DQl9DSFVOS19FWFRFTlNJT05fVkFMVUVfQ09NUExFVEUASFBFX0NCX0NIVU5LX0VYVEVOU0lPTl9OQU1FX0NPTVBMRVRFAEhQRV9DQl9NRVNTQUdFX0NPTVBMRVRFAEhQRV9DQl9NRVRIT0RfQ09NUExFVEUASFBFX0NCX0hFQURFUl9GSUVMRF9DT01QTEVURQBERUxFVEUASFBFX0lOVkFMSURfRU9GX1NUQVRFAElOVkFMSURfU1NMX0NFUlRJRklDQVRFAFBBVVNFAE5PX1JFU1BPTlNFAFVOU1VQUE9SVEVEX01FRElBX1RZUEUAR09ORQBOT1RfQUNDRVBUQUJMRQBTRVJWSUNFX1VOQVZBSUxBQkxFAFJBTkdFX05PVF9TQVRJU0ZJQUJMRQBPUklHSU5fSVNfVU5SRUFDSEFCTEUAUkVTUE9OU0VfSVNfU1RBTEUAUFVSR0UATUVSR0UAUkVRVUVTVF9IRUFERVJfRklFTERTX1RPT19MQVJHRQBSRVFVRVNUX0hFQURFUl9UT09fTEFSR0UAUEFZTE9BRF9UT09fTEFSR0UASU5TVUZGSUNJRU5UX1NUT1JBR0UASFBFX1BBVVNFRF9VUEdSQURFAEhQRV9QQVVTRURfSDJfVVBHUkFERQBTT1VSQ0UAQU5OT1VOQ0UAVFJBQ0UASFBFX1VORVhQRUNURURfU1BBQ0UAREVTQ1JJQkUAVU5TVUJTQ1JJQkUAUkVDT1JEAEhQRV9JTlZBTElEX01FVEhPRABOT1RfRk9VTkQAUFJPUEZJTkQAVU5CSU5EAFJFQklORABVTkFVVEhPUklaRUQATUVUSE9EX05PVF9BTExPV0VEAEhUVFBfVkVSU0lPTl9OT1RfU1VQUE9SVEVEAEFMUkVBRFlfUkVQT1JURUQAQUNDRVBURUQATk9UX0lNUExFTUVOVEVEAExPT1BfREVURUNURUQASFBFX0NSX0VYUEVDVEVEAEhQRV9MRl9FWFBFQ1RFRABDUkVBVEVEAElNX1VTRUQASFBFX1BBVVNFRABUSU1FT1VUX09DQ1VSRUQAUEFZTUVOVF9SRVFVSVJFRABQUkVDT05ESVRJT05fUkVRVUlSRUQAUFJPWFlfQVVUSEVOVElDQVRJT05fUkVRVUlSRUQATkVUV09SS19BVVRIRU5USUNBVElPTl9SRVFVSVJFRABMRU5HVEhfUkVRVUlSRUQAU1NMX0NFUlRJRklDQVRFX1JFUVVJUkVEAFVQR1JBREVfUkVRVUlSRUQAUEFHRV9FWFBJUkVEAFBSRUNPTkRJVElPTl9GQUlMRUQARVhQRUNUQVRJT05fRkFJTEVEAFJFVkFMSURBVElPTl9GQUlMRUQAU1NMX0hBTkRTSEFLRV9GQUlMRUQATE9DS0VEAFRSQU5TRk9STUFUSU9OX0FQUExJRUQATk9UX01PRElGSUVEAE5PVF9FWFRFTkRFRABCQU5EV0lEVEhfTElNSVRfRVhDRUVERUQAU0lURV9JU19PVkVSTE9BREVEAEhFQUQARXhwZWN0ZWQgSFRUUC8AAF4TAAAmEwAAMBAAAPAXAACdEwAAFRIAADkXAADwEgAAChAAAHUSAACtEgAAghMAAE8UAAB/EAAAoBUAACMUAACJEgAAixQAAE0VAADUEQAAzxQAABAYAADJFgAA3BYAAMERAADgFwAAuxQAAHQUAAB8FQAA5RQAAAgXAAAfEAAAZRUAAKMUAAAoFQAAAhUAAJkVAAAsEAAAixkAAE8PAADUDgAAahAAAM4QAAACFwAAiQ4AAG4TAAAcEwAAZhQAAFYXAADBEwAAzRMAAGwTAABoFwAAZhcAAF8XAAAiEwAAzg8AAGkOAADYDgAAYxYAAMsTAACqDgAAKBcAACYXAADFEwAAXRYAAOgRAABnEwAAZRMAAPIWAABzEwAAHRcAAPkWAADzEQAAzw4AAM4VAAAMEgAAsxEAAKURAABhEAAAMhcAALsTAEH5NQsBAQBBkDYL4AEBAQIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQBB/TcLAQEAQZE4C14CAwICAgICAAACAgACAgACAgICAgICAgICAAQAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAAgACAEH9OQsBAQBBkToLXgIAAgICAgIAAAICAAICAAICAgICAgICAgIAAwAEAAAAAgICAgICAgICAgICAgICAgICAgICAgICAgIAAAACAgICAgICAgICAgICAgICAgICAgICAgICAgICAgACAAIAQfA7Cw1sb3NlZWVwLWFsaXZlAEGJPAsBAQBBoDwL4AEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQBBiT4LAQEAQaA+C+cBAQEBAQEBAQEBAQEBAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQFjaHVua2VkAEGwwAALXwEBAAEBAQEBAAABAQABAQABAQEBAQEBAQEBAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQABAEGQwgALIWVjdGlvbmVudC1sZW5ndGhvbnJveHktY29ubmVjdGlvbgBBwMIACy1yYW5zZmVyLWVuY29kaW5ncGdyYWRlDQoNCg0KU00NCg0KVFRQL0NFL1RTUC8AQfnCAAsFAQIAAQMAQZDDAAvgAQQBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAEH5xAALBQECAAEDAEGQxQAL4AEEAQEFAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQBB+cYACwQBAAABAEGRxwAL3wEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAEH6yAALBAEAAAIAQZDJAAtfAwQAAAQEBAQEBAQEBAQEBQQEBAQEBAQEBAQEBAAEAAYHBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQABAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAQAQfrKAAsEAQAAAQBBkMsACwEBAEGqywALQQIAAAAAAAADAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwAAAAAAAAMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAEH6zAALBAEAAAEAQZDNAAsBAQBBms0ACwYCAAAAAAIAQbHNAAs6AwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAAAAAAAADAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwBB8M4AC5YBTk9VTkNFRUNLT1VUTkVDVEVURUNSSUJFTFVTSEVURUFEU0VBUkNIUkdFQ1RJVklUWUxFTkRBUlZFT1RJRllQVElPTlNDSFNFQVlTVEFUQ0hHRU9SRElSRUNUT1JUUkNIUEFSQU1FVEVSVVJDRUJTQ1JJQkVBUkRPV05BQ0VJTkROS0NLVUJTQ1JJQkVIVFRQL0FEVFAv", "base64");
86637
86773
  return llhttpWasm;
86638
86774
  }
@@ -86641,7 +86777,7 @@ ${val.stack}`;
86641
86777
  function requireLlhttp_simdWasm() {
86642
86778
  if (hasRequiredLlhttp_simdWasm) return llhttp_simdWasm;
86643
86779
  hasRequiredLlhttp_simdWasm = 1;
86644
- const { Buffer: Buffer2 } = require$$0$a;
86780
+ const { Buffer: Buffer2 } = require$$0$b;
86645
86781
  llhttp_simdWasm = Buffer2.from("AGFzbQEAAAABJwdgAX8Bf2ADf39/AX9gAX8AYAJ/fwBgBH9/f38Bf2AAAGADf39/AALLAQgDZW52GHdhc21fb25faGVhZGVyc19jb21wbGV0ZQAEA2VudhV3YXNtX29uX21lc3NhZ2VfYmVnaW4AAANlbnYLd2FzbV9vbl91cmwAAQNlbnYOd2FzbV9vbl9zdGF0dXMAAQNlbnYUd2FzbV9vbl9oZWFkZXJfZmllbGQAAQNlbnYUd2FzbV9vbl9oZWFkZXJfdmFsdWUAAQNlbnYMd2FzbV9vbl9ib2R5AAEDZW52GHdhc21fb25fbWVzc2FnZV9jb21wbGV0ZQAAAy0sBQYAAAIAAAAAAAACAQIAAgICAAADAAAAAAMDAwMBAQEBAQEBAQEAAAIAAAAEBQFwARISBQMBAAIGCAF/AUGA1AQLB9EFIgZtZW1vcnkCAAtfaW5pdGlhbGl6ZQAIGV9faW5kaXJlY3RfZnVuY3Rpb25fdGFibGUBAAtsbGh0dHBfaW5pdAAJGGxsaHR0cF9zaG91bGRfa2VlcF9hbGl2ZQAvDGxsaHR0cF9hbGxvYwALBm1hbGxvYwAxC2xsaHR0cF9mcmVlAAwEZnJlZQAMD2xsaHR0cF9nZXRfdHlwZQANFWxsaHR0cF9nZXRfaHR0cF9tYWpvcgAOFWxsaHR0cF9nZXRfaHR0cF9taW5vcgAPEWxsaHR0cF9nZXRfbWV0aG9kABAWbGxodHRwX2dldF9zdGF0dXNfY29kZQAREmxsaHR0cF9nZXRfdXBncmFkZQASDGxsaHR0cF9yZXNldAATDmxsaHR0cF9leGVjdXRlABQUbGxodHRwX3NldHRpbmdzX2luaXQAFQ1sbGh0dHBfZmluaXNoABYMbGxodHRwX3BhdXNlABcNbGxodHRwX3Jlc3VtZQAYG2xsaHR0cF9yZXN1bWVfYWZ0ZXJfdXBncmFkZQAZEGxsaHR0cF9nZXRfZXJybm8AGhdsbGh0dHBfZ2V0X2Vycm9yX3JlYXNvbgAbF2xsaHR0cF9zZXRfZXJyb3JfcmVhc29uABwUbGxodHRwX2dldF9lcnJvcl9wb3MAHRFsbGh0dHBfZXJybm9fbmFtZQAeEmxsaHR0cF9tZXRob2RfbmFtZQAfEmxsaHR0cF9zdGF0dXNfbmFtZQAgGmxsaHR0cF9zZXRfbGVu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PgtBhwEMPQtBiAEMPAtBiQEMOwtBigEMOgtBiwEMOQtBjAEMOAtBjQEMNwtBjgEMNgtBjwEMNQtBkAEMNAtBkQEMMwtBkgEMMgtBkwEMMQtBlAEMMAtBlQEMLwtBlgEMLgtBlwEMLQtBmAEMLAtBmQEMKwtBmgEMKgtBmwEMKQtBnAEMKAtBnQEMJwtBngEMJgtBnwEMJQtBoAEMJAtBoQEMIwtBogEMIgtBowEMIQtBpAEMIAtBpQEMHwtBpgEMHgtBpwEMHQtBqAEMHAtBqQEMGwtBqgEMGgtBqwEMGQtBrAEMGAtBrQEMFwtBrgEMFgtBAQwVC0GvAQwUC0GwAQwTC0GxAQwSC0GzAQwRC0GyAQwQC0G0AQwPC0G1AQwOC0G2AQwNC0G3AQwMC0G4AQwLC0G5AQwKC0G6AQwJC0G7AQwIC0HGAQwHC0G8AQwGC0G9AQwFC0G+AQwEC0G/AQwDC0HAAQwCC0HCAQwBC0HBAQshAwNAAkACQAJAAkACQAJAAkACQAJAIAICfwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJ/AkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgAgJ/AkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACfwJAAkACfwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAC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iQEhAwykAgtBASABLQAAQd8ARw1nGiABQQFqIQEMXgtBigEhAyABIARGDaICIAIoAgAiACAEIAFraiEFIAEgAGtBAWohBgNAIAEtAAAgAEGMzwBqLQAARw1kIABBAUYN+gEgAEEBaiEAIAQgAUEBaiIBRw0ACyACIAU2AgAMogILQYsBIQMgASAERg2hAiACKAIAIgAgBCABa2ohBSABIABrQQJqIQYCQANAIAEtAAAgAEGOzwBqLQAARw1kIABBAkYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAyiAgsgAkEANgIAIAZBAWohAUECDGULQYwBIQMgASAERg2gAiACKAIAIgAgBCABa2ohBSABIABrQQFqIQYCQANAIAEtAAAgAEHwzwBqLQAARw1jIABBAUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAyhAgsgAkEANgIAIAZBAWohAUEfDGQLQY0BIQMgASAERg2fAiACKAIAIgAgBCABa2ohBSABIABrQQFqIQYCQANAIAEtAAAgAEHyzwBqLQAARw1iIABBAUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAygAgsgAkEANgIAIAZBAWohAUEJDGMLIAEgBEYEQEGOASEDDJ8CCwJAAkAgAS0AAEHJAGsOBwBiYmJiYgFiCyABQQFqIQFB+AAhAwyGAgsgAUEBaiEBQfkAIQMMhQILQY8BIQMgASAERg2dAiACKAIAIgAgBCABa2ohBSABIABrQQVqIQYCQANAIAEtAAAgAEGRzwBqLQAARw1gIABBBUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAyeAgsgAkEANgIAIAZBAWohAUEYDGELQZABIQMgASAERg2cAiACKAIAIgAgBCABa2ohBSABIABrQQJqIQYCQANAIAEtAAAgAEGXzwBqLQAARw1fIABBAkYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAydAgsgAkEANgIAIAZBAWohAUEXDGALQZEBIQMgASAERg2bAiACKAIAIgAgBCABa2ohBSABIABrQQZqIQYCQANAIAEtAAAgAEGazwBqLQAARw1eIABBBkYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAycAgsgAkEANgIAIAZBAWohAUEV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JSIARQ0RIAJB5QA2AhwgAiABNgIUIAIgADYCDEEAIQMMtAELIAIoAgQhACACQQA2AgQgAiAAIAEQJSIARQ0gIAJB0wA2AhwgAiABNgIUIAIgADYCDEEAIQMMswELIAIoAgQhACACQQA2AgQgAiAAIAEQJSIARQ0iIAJB0gA2AhwgAiABNgIUIAIgADYCDEEAIQMMsgELIAIoAgQhACACQQA2AgQgAiAAIAEQJSIARQ0OIAJB5QA2AhwgAiABNgIUIAIgADYCDEEAIQMMsQELIAIoAgQhACACQQA2AgQgAiAAIAEQJSIARQ0dIAJB0wA2AhwgAiABNgIUIAIgADYCDEEAIQMMsAELIAIoAgQhACACQQA2AgQgAiAAIAEQJSIARQ0fIAJB0gA2AhwgAiABNgIUIAIgADYCDEEAIQMMrwELIABBP0cNASABQQFqCyEBQQUhAwyUAQtBACEDIAJBADYCHCACIAE2AhQgAkH9EjYCECACQQc2AgwMrAELIAJBADYCHCACIAE2AhQgAkHcCDYCECACQQc2AgxBACEDDKsBCyACKAIEIQAgAkEANgIEIAIgACABECUiAEUNByACQeUANgIcIAIgATYCFCACIAA2AgxBACEDDKoBCyACKAIEIQAgAkEANgIEIAIgACABECUiAEUNFiACQdMANgIcIAIgATYCFCACIAA2AgxBACEDDKkBCyACKAIEIQAgAkEANgIEIAIgACABECUiAEUNGCACQdIANgIcIAIgATYCFCACIAA2AgxBACEDDKgBCyACQQA2AhwgAiABNgIUIAJBxgo2AhAgAkEHNgIMQQAhAwynAQsgAigCBCEAIAJBADYCBCACIAAgARAlIgBFDQMgAkHlADYCHCACIAE2AhQgAiAANgIMQQAhAwymAQsgAigCBCEAIAJBADYCBCACIAAgARAlIgBFDRIgAkHTADYCHCACIAE2AhQgAiAANgIMQQAhAwylAQsgAigCBCEAIAJBADYCBCACIAAgARAlIgBFDRQgAkHSADYCHCACIAE2AhQgAiAANgIMQQAhAwykAQsgAigCBCEAIAJBADYCBCACIAAgARAlIgBFDQAgAkHlADYCHCACIAE2AhQgAiAANgIMQQAhAwyjAQtB1QAhAwyJAQsgAEEVRwRAIAJBADYCHCACIAE2AhQgAkG5DTYCECACQRo2AgxB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AkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIABB5ABrDvQDY2IAAWFhYWFhYQIDBAVhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhBgcICQoLDA0OD2FhYWFhEGFhYWFhYWFhYWFhEWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYRITFBUWFxgZGhthYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhHB0eHyAhIiMkJSYnKCkqKywtLi8wMTIzNDU2YTc4OTphYWFhYWFhYTthYWE8YWFhYT0+P2FhYWFhYWFhQGFhQWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYUJDREVGR0hJSktMTU5PUFFSU2FhYWFhYWFhVFVWV1hZWlthXF1hYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFeYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhX2BhC0HhJw8LQaQhDwtByywPC0H+MQ8LQcAkDwtBqyQPC0GNKA8LQeImDwtBgDAPC0G5Lw8LQdckDwtB7x8PC0HhHw8LQfofDwtB8iAPC0GoLw8LQa4yDwtBiDAPC0HsJw8LQYIiDwtBjh0PC0HQLg8LQcojDwtBxTIPC0HfHA8LQdIcDwtBxCAPC0HXIA8LQaIfDwtB7S4PC0GrMA8LQdQlDwtBzC4PC0H6Lg8LQfwrDwtB0jAPC0HxHQ8LQbsgDwtB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AAADAEGUCAsFBAAAAAUAQaQICwkGAAAABwAAAAgAQdwIC4otSW52YWxpZCBjaGFyIGluIHVybCBxdWVyeQBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX2JvZHkAQ29udGVudC1MZW5ndGggb3ZlcmZsb3cAQ2h1bmsgc2l6ZSBvdmVyZmxvdwBSZXNwb25zZSBvdmVyZmxvdwBJbnZhbGlkIG1ldGhvZCBmb3IgSFRUUC94LnggcmVxdWVzdABJbnZhbGlkIG1ldGhvZCBmb3IgUlRTUC94LnggcmVxdWVzdABFeHBlY3RlZCBTT1VSQ0UgbWV0aG9kIGZvciBJQ0UveC54IHJlcXVlc3QASW52YWxpZCBjaGFyIGluIHVybCBmcmFnbWVudCBzdGFydABFeHBlY3RlZCBkb3QAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9zdGF0dXMASW52YWxpZCByZXNwb25zZSBzdGF0dXMASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgZXh0ZW5zaW9ucwBVc2VyIGNhbGxiYWNrIGVycm9yAGBvbl9yZXNldGAgY2FsbGJhY2sgZXJyb3IAYG9uX2NodW5rX2hlYWRlcmAgY2FsbGJhY2sgZXJyb3IAYG9uX21lc3NhZ2VfYmVnaW5gIGNhbGxiYWNrIGVycm9yAGBvbl9jaHVua19leHRlbnNpb25fdmFsdWVgIGNhbGxiYWNrIGVycm9yAGBvbl9zdGF0dXNfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl92ZXJzaW9uX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fdXJsX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fY2h1bmtfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl9oZWFkZXJfdmFsdWVfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl9tZXNzYWdlX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fbWV0aG9kX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25faGVhZGVyX2ZpZWxkX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fY2h1bmtfZXh0ZW5zaW9uX25hbWVgIGNhbGxiYWNrIGVycm9yAFVuZXhwZWN0ZWQgY2hhciBpbiB1cmwgc2VydmVyAEludmFsaWQgaGVhZGVyIHZhbHVlIGNoYXIASW52YWxpZCBoZWFkZXIgZmllbGQgY2hhcgBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX3ZlcnNpb24ASW52YWxpZCBtaW5vciB2ZXJzaW9uAEludmFsaWQgbWFqb3IgdmVyc2lvbgBFeHBlY3RlZCBzcGFjZSBhZnRlciB2ZXJzaW9uAEV4cGVjdGVkIENSTEYgYWZ0ZXIgdmVyc2lvbgBJbnZhbGlkIEhUVFAgdmVyc2lvbgBJbnZhbGlkIGhlYWRlciB0b2tlbgBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX3VybABJbnZhbGlkIGNoYXJhY3RlcnMgaW4gdXJsAFVuZXhwZWN0ZWQgc3RhcnQgY2hhciBpbiB1cmwARG91YmxlIEAgaW4gdXJsAEVtcHR5IENvbnRlbnQtTGVuZ3RoAEludmFsaWQgY2hhcmFjdGVyIGluIENvbnRlbnQtTGVuZ3RoAER1cGxpY2F0ZSBDb250ZW50LUxlbmd0aABJbnZhbGlkIGNoYXIgaW4gdXJsIHBhdGgAQ29udGVudC1MZW5ndGggY2FuJ3QgYmUgcHJlc2VudCB3aXRoIFRyYW5zZmVyLUVuY29kaW5nAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIHNpemUAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9oZWFkZXJfdmFsdWUAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9jaHVua19leHRlbnNpb25fdmFsdWUASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgZXh0ZW5zaW9ucyB2YWx1ZQBNaXNzaW5nIGV4cGVjdGVkIExGIGFmdGVyIGhlYWRlciB2YWx1ZQBJbnZhbGlkIGBUcmFuc2Zlci1FbmNvZGluZ2AgaGVhZGVyIHZhbHVlAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIGV4dGVuc2lvbnMgcXVvdGUgdmFsdWUASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgZXh0ZW5zaW9ucyBxdW90ZWQgdmFsdWUAUGF1c2VkIGJ5IG9uX2hlYWRlcnNfY29tcGxldGUASW52YWxpZCBFT0Ygc3RhdGUAb25fcmVzZXQgcGF1c2UAb25fY2h1bmtfaGVhZGVyIHBhdXNlAG9uX21lc3NhZ2VfYmVnaW4gcGF1c2UAb25fY2h1bmtfZXh0ZW5zaW9uX3ZhbHVlIHBhdXNlAG9uX3N0YXR1c19jb21wbGV0ZSBwYXVzZQBvbl92ZXJzaW9uX2NvbXBsZXRlIHBhdXNlAG9uX3VybF9jb21wbGV0ZSBwYXVzZQBvbl9jaHVua19jb21wbGV0ZSBwYXVzZQBvbl9oZWFkZXJfdmFsdWVfY29tcGxldGUgcGF1c2UAb25fbWVzc2FnZV9jb21wbGV0ZSBwYXVzZQBvbl9tZXRob2RfY29tcGxldGUgcGF1c2UAb25faGVhZGVyX2ZpZWxkX2NvbXBsZXRlIHBhdXNlAG9uX2NodW5rX2V4dGVuc2lvbl9uYW1lIHBhdXNlAFVuZXhwZWN0ZWQgc3BhY2UgYWZ0ZXIgc3RhcnQgbGluZQBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX2NodW5rX2V4dGVuc2lvbl9uYW1lAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIGV4dGVuc2lvbnMgbmFtZQBQYXVzZSBvbiBDT05ORUNUL1VwZ3JhZGUAUGF1c2Ugb24gUFJJL1VwZ3JhZGUARXhwZWN0ZWQgSFRUUC8yIENvbm5lY3Rpb24gUHJlZmFjZQBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX21ldGhvZABFeHBlY3RlZCBzcGFjZSBhZnRlciBtZXRob2QAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9oZWFkZXJfZmllbGQAUGF1c2VkAEludmFsaWQgd29yZCBlbmNvdW50ZXJlZABJbnZhbGlkIG1ldGhvZCBlbmNvdW50ZXJlZABVbmV4cGVjdGVkIGNoYXIgaW4gdXJsIHNjaGVtYQBSZXF1ZXN0IGhhcyBpbnZhbGlkIGBUcmFuc2Zlci1FbmNvZGluZ2AAU1dJVENIX1BST1hZAFVTRV9QUk9YWQBNS0FDVElWSVRZAFVOUFJPQ0VTU0FCTEVfRU5USVRZAENPUFkATU9WRURfUEVSTUFORU5UTFkAVE9PX0VBUkxZAE5PVElGWQBGQUlMRURfREVQRU5ERU5DWQBCQURfR0FURVdBWQBQTEFZAFBVVABDSEVDS09VVABHQVRFV0FZX1RJTUVPVVQAUkVRVUVTVF9USU1FT1VUAE5FVFdPUktfQ09OTkVDVF9USU1FT1VUAENPTk5FQ1RJT05fVElNRU9VVABMT0dJTl9USU1FT1VUAE5FVFdPUktfUkVBRF9USU1FT1VUAFBPU1QATUlTRElSRUNURURfUkVRVUVTVABDTElFTlRfQ0xPU0VEX1JFUVVFU1QAQ0xJRU5UX0NMT1NFRF9MT0FEX0JBTEFOQ0VEX1JFUVVFU1QAQkFEX1JFUVVFU1QASFRUUF9SRVFVRVNUX1NFTlRfVE9fSFRUUFNfUE9SVABSRVBPUlQASU1fQV9URUFQT1QAUkVTRVRfQ09OVEVOVABOT19DT05URU5UAFBBUlRJQUxfQ09OVEVOVABIUEVfSU5WQUxJRF9DT05TVEFOVABIUEVfQ0JfUkVTRVQAR0VUAEhQRV9TVFJJQ1QAQ09ORkxJQ1QAVEVNUE9SQVJZX1JFRElSRUNUAFBFUk1BTkVOVF9SRURJUkVDVABDT05ORUNUAE1VTFRJX1NUQVRVUwBIUEVfSU5WQUxJRF9TVEFUVVMAVE9PX01BTllfUkVRVUVTVFMARUFSTFlfSElOVFMAVU5BVkFJTEFCTEVfRk9SX0xFR0FMX1JFQVNPTlMAT1BUSU9OUwBTV0lUQ0hJTkdfUFJPVE9DT0xTAFZBUklBTlRfQUxTT19ORUdPVElBVEVTAE1VTFRJUExFX0NIT0lDRVMASU5URVJOQUxfU0VSVkVSX0VSUk9SAFdFQl9TRVJWRVJfVU5LTk9XTl9FUlJPUgBSQUlMR1VOX0VSUk9SAElERU5USVRZX1BST1ZJREVSX0FVVEhFTlRJQ0FUSU9OX0VSUk9SAFNTTF9DRVJUSUZJQ0FURV9FUlJPUgBJTlZBTElEX1hfRk9SV0FSREVEX0ZPUgBTRVRfUEFSQU1FVEVSAEdFVF9QQVJBTUVURVIASFBFX1VTRVIAU0VFX09USEVSAEhQRV9DQl9DSFVOS19IRUFERVIATUtDQUxFTkRBUgBTRVRVUABXRUJfU0VSVkVSX0lTX0RPV04AVEVBUkRPV04ASFBFX0NMT1NFRF9DT05ORUNUSU9OAEhFVVJJU1RJQ19FWFBJUkFUSU9OAERJU0NPTk5FQ1RFRF9PUEVSQVRJT04ATk9OX0FVVEhPUklUQVRJVkVfSU5GT1JNQVRJT04ASFBFX0lOVkFMSURfVkVSU0lPTgBIUEVfQ0JfTUVTU0FHRV9CRUdJTgBTSVRFX0lTX0ZST1pFTgBIUEVfSU5WQUxJRF9IRUFERVJfVE9LRU4ASU5WQUxJRF9UT0tFTgBGT1JCSURERU4ARU5IQU5DRV9ZT1VSX0NBTE0ASFBFX0lOVkFMSURfVVJMAEJMT0NLRURfQllfUEFSRU5UQUxfQ09OVFJPTABNS0NPTABBQ0wASFBFX0lOVEVSTkFMAFJFUVVFU1RfSEVBREVSX0ZJRUxEU19UT09fTEFSR0VfVU5PRkZJQ0lBTABIUEVfT0sAVU5MSU5LAFVOTE9DSwBQUkkAUkVUUllfV0lUSABIUEVfSU5WQUxJRF9DT05URU5UX0xFTkdUSABIUEVfVU5FWFBFQ1RFRF9DT05URU5UX0xFTkdUSABGTFVTSABQUk9QUEFUQ0gATS1TRUFSQ0gAVVJJX1RPT19MT05HAFBST0NFU1NJTkcATUlTQ0VMTEFORU9VU19QRVJTSVNURU5UX1dBUk5JTkcATUlTQ0VMTEFORU9VU19XQVJOSU5HAEhQRV9JTlZBTElEX1RSQU5TRkVSX0VOQ09ESU5HAEV4cGVjdGVkIENSTEYASFBFX0lOVkFMSURfQ0hVTktfU0laRQBNT1ZFAENPTlRJTlVFAEhQRV9DQl9TVEFUVVNfQ09NUExFVEUASFBFX0NCX0hFQURFUlNfQ09NUExFVEUASFBFX0NCX1ZFUlNJT05fQ09NUExFVEUASFBFX0NCX1VSTF9DT01QTEVURQBIUEVfQ0JfQ0hVTktfQ09NUExFVEUASFBFX0NCX0hFQURFUl9WQUxVRV9DT01QTEVURQBIUEVfQ0JfQ0hVTktfRVhURU5TSU9OX1ZBTFVFX0NPTVBMRVRFAEhQRV9DQl9DSFVOS19FWFRFTlNJT05fTkFNRV9DT01QTEVURQBIUEVfQ0JfTUVTU0FHRV9DT01QTEVURQBIUEVfQ0JfTUVUSE9EX0NPTVBMRVRFAEhQRV9DQl9IRUFERVJfRklFTERfQ09NUExFVEUAREVMRVRFAEhQRV9JTlZBTElEX0VPRl9TVEFURQBJTlZBTElEX1NTTF9DRVJUSUZJQ0FURQBQQVVTRQBOT19SRVNQT05TRQBVTlNVUFBPUlRFRF9NRURJQV9UWVBFAEdPTkUATk9UX0FDQ0VQVEFCTEUAU0VSVklDRV9VTkFWQUlMQUJMRQBSQU5HRV9OT1RfU0FUSVNGSUFCTEUAT1JJR0lOX0lTX1VOUkVBQ0hBQkxFAFJFU1BPTlNFX0lTX1NUQUxFAFBVUkdFAE1FUkdFAFJFUVVFU1RfSEVBREVSX0ZJRUxEU19UT09fTEFSR0UAUkVRVUVTVF9IRUFERVJfVE9PX0xBUkdFAFBBWUxPQURfVE9PX0xBUkdFAElOU1VGRklDSUVOVF9TVE9SQUdFAEhQRV9QQVVTRURfVVBHUkFERQBIUEVfUEFVU0VEX0gyX1VQR1JBREUAU09VUkNFAEFOTk9VTkNFAFRSQUNFAEhQRV9VTkVYUEVDVEVEX1NQQUNFAERFU0NSSUJFAFVOU1VCU0NSSUJFAFJFQ09SRABIUEVfSU5WQUxJRF9NRVRIT0QATk9UX0ZPVU5EAFBST1BGSU5EAFVOQklORABSRUJJTkQAVU5BVVRIT1JJWkVEAE1FVEhPRF9OT1RfQUxMT1dFRABIVFRQX1ZFUlNJT05fTk9UX1NVUFBPUlRFRABBTFJFQURZX1JFUE9SVEVEAEFDQ0VQVEVEAE5PVF9JTVBMRU1FTlRFRABMT09QX0RFVEVDVEVEAEhQRV9DUl9FWFBFQ1RFRABIUEVfTEZfRVhQRUNURUQAQ1JFQVRFRABJTV9VU0VEAEhQRV9QQVVTRUQAVElNRU9VVF9PQ0NVUkVEAFBBWU1FTlRfUkVRVUlSRUQAUFJFQ09ORElUSU9OX1JFUVVJUkVEAFBST1hZX0FVVEhFTlRJQ0FUSU9OX1JFUVVJUkVEAE5FVFdPUktfQVVUSEVOVElDQVRJT05fUkVRVUlSRUQATEVOR1RIX1JFUVVJUkVEAFNTTF9DRVJUSUZJQ0FURV9SRVFVSVJFRABVUEdSQURFX1JFUVVJUkVEAFBBR0VfRVhQSVJFRABQUkVDT05ESVRJT05fRkFJTEVEAEVYUEVDVEFUSU9OX0ZBSUxFRABSRVZBTElEQVRJT05fRkFJTEVEAFNTTF9IQU5EU0hBS0VfRkFJTEVEAExPQ0tFRABUUkFOU0ZPUk1BVElPTl9BUFBMSUVEAE5PVF9NT0RJRklFRABOT1RfRVhURU5ERUQAQkFORFdJRFRIX0xJTUlUX0VYQ0VFREVEAFNJVEVfSVNfT1ZFUkxPQURFRABIRUFEAEV4cGVjdGVkIEhUVFAvAABeEwAAJhMAADAQAADwFwAAnRMAABUSAAA5FwAA8BIAAAoQAAB1EgAArRIAAIITAABPFAAAfxAAAKAVAAAjFAAAiRIAAIsUAABNFQAA1BEAAM8UAAAQGAAAyRYAANwWAADBEQAA4BcAALsUAAB0FAAAfBUAAOUUAAAIFwAAHxAAAGUVAACjFAAAKBUAAAIVAACZFQAALBAAAIsZAABPDwAA1A4AAGoQAADOEAAAAhcAAIkOAABuEwAAHBMAAGYUAABWFwAAwRMAAM0TAABsEwAAaBcAAGYXAABfFwAAIhMAAM4PAABpDgAA2A4AAGMWAADLEwAAqg4AACgXAAAmFwAAxRMAAF0WAADoEQAAZxMAAGUTAADyFgAAcxMAAB0XAAD5FgAA8xEAAM8OAADOFQAADBIAALMRAAClEQAAYRAAADIXAAC7EwBB+TULAQEAQZA2C+ABAQECAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAQf03CwEBAEGROAteAgMCAgICAgAAAgIAAgIAAgICAgICAgICAgAEAAAAAAACAgICAgICAgICAgICAgICAgICAgICAgICAgAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAIAAgBB/TkLAQEAQZE6C14CAAICAgICAAACAgACAgACAgICAgICAgICAAMABAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAAgACAEHwOwsNbG9zZWVlcC1hbGl2ZQBBiTwLAQEAQaA8C+ABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAQYk+CwEBAEGgPgvnAQEBAQEBAQEBAQEBAQIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBY2h1bmtlZABBsMAAC18BAQABAQEBAQAAAQEAAQEAAQEBAQEBAQEBAQAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEAAQBBkMIACyFlY3Rpb25lbnQtbGVuZ3Rob25yb3h5LWNvbm5lY3Rpb24AQcDCAAstcmFuc2Zlci1lbmNvZGluZ3BncmFkZQ0KDQoNClNNDQoNClRUUC9DRS9UU1AvAEH5wgALBQECAAEDAEGQwwAL4AEEAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQBB+cQACwUBAgABAwBBkMUAC+ABBAEBBQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAQfnGAAsEAQAAAQBBkccAC98BAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQBB+sgACwQBAAACAEGQyQALXwMEAAAEBAQEBAQEBAQEBAUEBAQEBAQEBAQEBAQABAAGBwQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEAAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAEAEH6ygALBAEAAAEAQZDLAAsBAQBBqssAC0ECAAAAAAAAAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAAAAAAAADAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwBB+swACwQBAAABAEGQzQALAQEAQZrNAAsGAgAAAAACAEGxzQALOgMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAAAAAAAAAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAQfDOAAuWAU5PVU5DRUVDS09VVE5FQ1RFVEVDUklCRUxVU0hFVEVBRFNFQVJDSFJHRUNUSVZJVFlMRU5EQVJWRU9USUZZUFRJT05TQ0hTRUFZU1RBVENIR0VPUkRJUkVDVE9SVFJDSFBBUkFNRVRFUlVSQ0VCU0NSSUJFQVJET1dOQUNFSU5ETktDS1VCU0NSSUJFSFRUUC9BRFRQLw==", "base64");
86646
86782
  return llhttp_simdWasm;
86647
86783
  }
@@ -86895,7 +87031,7 @@ ${val.stack}`;
86895
87031
  function requireDataUrl() {
86896
87032
  if (hasRequiredDataUrl) return dataUrl;
86897
87033
  hasRequiredDataUrl = 1;
86898
- const assert2 = require$$0$b;
87034
+ const assert2 = require$$0$c;
86899
87035
  const encoder2 = new TextEncoder();
86900
87036
  const HTTP_TOKEN_CODEPOINTS = /^[!#$%&'*+\-.^_|~A-Za-z0-9]+$/;
86901
87037
  const HTTP_WHITESPACE_REGEX = /[\u000A\u000D\u0009\u0020]/;
@@ -87216,8 +87352,8 @@ ${val.stack}`;
87216
87352
  function requireWebidl() {
87217
87353
  if (hasRequiredWebidl) return webidl_1;
87218
87354
  hasRequiredWebidl = 1;
87219
- const { types: types2, inspect: inspect2 } = require$$0$8;
87220
- const { markAsUncloneable } = require$$1$4;
87355
+ const { types: types2, inspect: inspect2 } = require$$0$9;
87356
+ const { markAsUncloneable } = require$$1$3;
87221
87357
  const { toUSVString } = requireUtil$8();
87222
87358
  const webidl = {};
87223
87359
  webidl.converters = {};
@@ -87644,14 +87780,14 @@ ${val.stack}`;
87644
87780
  function requireUtil$7() {
87645
87781
  if (hasRequiredUtil$7) return util$8;
87646
87782
  hasRequiredUtil$7 = 1;
87647
- const { Transform: Transform2 } = require$$0$c;
87783
+ const { Transform: Transform2 } = require$$0$d;
87648
87784
  const zlib = zlib__default;
87649
87785
  const { redirectStatusSet, referrerPolicySet: referrerPolicyTokens, badPortsSet } = requireConstants$2();
87650
87786
  const { getGlobalOrigin } = requireGlobal$1();
87651
87787
  const { collectASequenceOfCodePoints, collectAnHTTPQuotedString, removeChars, parseMIMEType } = requireDataUrl();
87652
87788
  const { performance: performance2 } = require$$5$3;
87653
87789
  const { isBlobLike, ReadableStreamFrom, isValidHTTPToken, normalizedMethodRecordsBase } = requireUtil$8();
87654
- const assert2 = require$$0$b;
87790
+ const assert2 = require$$0$c;
87655
87791
  const { isUint8Array } = require$$8;
87656
87792
  const { webidl } = requireWebidl();
87657
87793
  let supportedHashes = [];
@@ -88488,7 +88624,7 @@ ${val.stack}`;
88488
88624
  function requireFile() {
88489
88625
  if (hasRequiredFile) return file;
88490
88626
  hasRequiredFile = 1;
88491
- const { Blob: Blob2, File } = require$$0$a;
88627
+ const { Blob: Blob2, File } = require$$0$b;
88492
88628
  const { kState } = requireSymbols$3();
88493
88629
  const { webidl } = requireWebidl();
88494
88630
  class FileLike {
@@ -88559,8 +88695,8 @@ ${val.stack}`;
88559
88695
  const { kEnumerableProperty } = requireUtil$8();
88560
88696
  const { FileLike, isFileLike } = requireFile();
88561
88697
  const { webidl } = requireWebidl();
88562
- const { File: NativeFile } = require$$0$a;
88563
- const nodeUtil = require$$0$8;
88698
+ const { File: NativeFile } = require$$0$b;
88699
+ const nodeUtil = require$$0$9;
88564
88700
  const File = globalThis.File ?? NativeFile;
88565
88701
  class FormData2 {
88566
88702
  constructor(form) {
@@ -88727,8 +88863,8 @@ ${val.stack}`;
88727
88863
  const { HTTP_TOKEN_CODEPOINTS, isomorphicDecode } = requireDataUrl();
88728
88864
  const { isFileLike } = requireFile();
88729
88865
  const { makeEntry } = requireFormdata();
88730
- const assert2 = require$$0$b;
88731
- const { File: NodeFile } = require$$0$a;
88866
+ const assert2 = require$$0$c;
88867
+ const { File: NodeFile } = require$$0$b;
88732
88868
  const File = globalThis.File ?? NodeFile;
88733
88869
  const formDataNameBuffer = Buffer.from('form-data; name="');
88734
88870
  const filenameBuffer = Buffer.from("; filename");
@@ -88965,9 +89101,9 @@ ${val.stack}`;
88965
89101
  const { FormData: FormData2 } = requireFormdata();
88966
89102
  const { kState } = requireSymbols$3();
88967
89103
  const { webidl } = requireWebidl();
88968
- const { Blob: Blob2 } = require$$0$a;
88969
- const assert2 = require$$0$b;
88970
- const { isErrored, isDisturbed } = require$$0$c;
89104
+ const { Blob: Blob2 } = require$$0$b;
89105
+ const assert2 = require$$0$c;
89106
+ const { isErrored, isDisturbed } = require$$0$d;
88971
89107
  const { isArrayBuffer } = require$$8;
88972
89108
  const { serializeAMimeType } = requireDataUrl();
88973
89109
  const { multipartFormDataParser } = requireFormdataParser();
@@ -89275,7 +89411,7 @@ Content-Type: ${value.type || "application/octet-stream"}\r
89275
89411
  function requireClientH1() {
89276
89412
  if (hasRequiredClientH1) return clientH1;
89277
89413
  hasRequiredClientH1 = 1;
89278
- const assert2 = require$$0$b;
89414
+ const assert2 = require$$0$c;
89279
89415
  const util2 = requireUtil$8();
89280
89416
  const { channels } = requireDiagnostics();
89281
89417
  const timers2 = requireTimers();
@@ -90314,8 +90450,8 @@ ${len2.toString(16)}\r
90314
90450
  function requireClientH2() {
90315
90451
  if (hasRequiredClientH2) return clientH2;
90316
90452
  hasRequiredClientH2 = 1;
90317
- const assert2 = require$$0$b;
90318
- const { pipeline: pipeline2 } = require$$0$c;
90453
+ const assert2 = require$$0$c;
90454
+ const { pipeline: pipeline2 } = require$$0$d;
90319
90455
  const util2 = requireUtil$8();
90320
90456
  const { RequestContentLengthMismatchError, RequestAbortedError, SocketError, InformationalError } = requireErrors$1();
90321
90457
  const { kUrl, kReset, kClient, kRunning, kPending, kQueue, kPendingIdx, kRunningIdx, kError, kSocket, kStrictContentLength, kOnError, kMaxConcurrentStreams, kHTTP2Session, kResume, kSize, kHTTPContext } = requireSymbols$4();
@@ -90778,7 +90914,7 @@ ${len2.toString(16)}\r
90778
90914
  hasRequiredRedirectHandler = 1;
90779
90915
  const util2 = requireUtil$8();
90780
90916
  const { kBodyUsed } = requireSymbols$4();
90781
- const assert2 = require$$0$b;
90917
+ const assert2 = require$$0$c;
90782
90918
  const { InvalidArgumentError: InvalidArgumentError2 } = requireErrors$1();
90783
90919
  const EE = require$$0$4;
90784
90920
  const redirectableStatusCodes = [
@@ -90972,7 +91108,7 @@ ${len2.toString(16)}\r
90972
91108
  function requireClient() {
90973
91109
  if (hasRequiredClient) return client;
90974
91110
  hasRequiredClient = 1;
90975
- const assert2 = require$$0$b;
91111
+ const assert2 = require$$0$c;
90976
91112
  const net$1 = net;
90977
91113
  const http2 = http$1;
90978
91114
  const util2 = requireUtil$8();
@@ -92004,7 +92140,7 @@ ${len2.toString(16)}\r
92004
92140
  if (hasRequiredProxyAgent) return proxyAgent;
92005
92141
  hasRequiredProxyAgent = 1;
92006
92142
  const { kProxy, kClose, kDestroy, kDispatch, kInterceptors } = requireSymbols$4();
92007
- const { URL: URL2 } = require$$1$5;
92143
+ const { URL: URL2 } = require$$1$4;
92008
92144
  const Agent = requireAgent();
92009
92145
  const Pool = requirePool();
92010
92146
  const DispatcherBase = requireDispatcherBase();
@@ -92377,7 +92513,7 @@ ${len2.toString(16)}\r
92377
92513
  function requireRetryHandler() {
92378
92514
  if (hasRequiredRetryHandler) return retryHandler;
92379
92515
  hasRequiredRetryHandler = 1;
92380
- const assert2 = require$$0$b;
92516
+ const assert2 = require$$0$c;
92381
92517
  const { kRetryHandlerDefaultRetry } = requireSymbols$4();
92382
92518
  const { RequestRetryError } = requireErrors$1();
92383
92519
  const { isDisturbed, parseHeaders: parseHeaders2, parseRangeHeader, wrapRequestBody } = requireUtil$8();
@@ -92682,8 +92818,8 @@ ${len2.toString(16)}\r
92682
92818
  function requireReadable() {
92683
92819
  if (hasRequiredReadable) return readable;
92684
92820
  hasRequiredReadable = 1;
92685
- const assert2 = require$$0$b;
92686
- const { Readable: Readable2 } = require$$0$c;
92821
+ const assert2 = require$$0$c;
92822
+ const { Readable: Readable2 } = require$$0$d;
92687
92823
  const { RequestAbortedError, NotSupportedError, InvalidArgumentError: InvalidArgumentError2, AbortError } = requireErrors$1();
92688
92824
  const util2 = requireUtil$8();
92689
92825
  const { ReadableStreamFrom } = requireUtil$8();
@@ -92965,7 +93101,7 @@ ${len2.toString(16)}\r
92965
93101
  function requireUtil$6() {
92966
93102
  if (hasRequiredUtil$6) return util$7;
92967
93103
  hasRequiredUtil$6 = 1;
92968
- const assert2 = require$$0$b;
93104
+ const assert2 = require$$0$c;
92969
93105
  const { ResponseStatusCodeError } = requireErrors$1();
92970
93106
  const { chunksDecode } = requireReadable();
92971
93107
  const CHUNK_LIMIT = 128 * 1024;
@@ -93024,7 +93160,7 @@ ${len2.toString(16)}\r
93024
93160
  function requireApiRequest() {
93025
93161
  if (hasRequiredApiRequest) return apiRequest.exports;
93026
93162
  hasRequiredApiRequest = 1;
93027
- const assert2 = require$$0$b;
93163
+ const assert2 = require$$0$c;
93028
93164
  const { Readable: Readable2 } = requireReadable();
93029
93165
  const { InvalidArgumentError: InvalidArgumentError2, RequestAbortedError } = requireErrors$1();
93030
93166
  const util2 = requireUtil$8();
@@ -93272,8 +93408,8 @@ ${len2.toString(16)}\r
93272
93408
  function requireApiStream() {
93273
93409
  if (hasRequiredApiStream) return apiStream;
93274
93410
  hasRequiredApiStream = 1;
93275
- const assert2 = require$$0$b;
93276
- const { finished: finished2, PassThrough: PassThrough2 } = require$$0$c;
93411
+ const assert2 = require$$0$c;
93412
+ const { finished: finished2, PassThrough: PassThrough2 } = require$$0$d;
93277
93413
  const { InvalidArgumentError: InvalidArgumentError2, InvalidReturnValueError } = requireErrors$1();
93278
93414
  const util2 = requireUtil$8();
93279
93415
  const { getResolveErrorBodyCallback } = requireUtil$6();
@@ -93460,12 +93596,12 @@ ${len2.toString(16)}\r
93460
93596
  function requireApiPipeline() {
93461
93597
  if (hasRequiredApiPipeline) return apiPipeline;
93462
93598
  hasRequiredApiPipeline = 1;
93463
- const { Readable: Readable2, Duplex, PassThrough: PassThrough2 } = require$$0$c;
93599
+ const { Readable: Readable2, Duplex, PassThrough: PassThrough2 } = require$$0$d;
93464
93600
  const { InvalidArgumentError: InvalidArgumentError2, InvalidReturnValueError, RequestAbortedError } = requireErrors$1();
93465
93601
  const util2 = requireUtil$8();
93466
93602
  const { AsyncResource: AsyncResource2 } = require$$5$4;
93467
93603
  const { addSignal, removeSignal } = requireAbortSignal();
93468
- const assert2 = require$$0$b;
93604
+ const assert2 = require$$0$c;
93469
93605
  const kResume = Symbol("resume");
93470
93606
  class PipelineRequest extends Readable2 {
93471
93607
  constructor() {
@@ -93666,7 +93802,7 @@ ${len2.toString(16)}\r
93666
93802
  const { AsyncResource: AsyncResource2 } = require$$5$4;
93667
93803
  const util2 = requireUtil$8();
93668
93804
  const { addSignal, removeSignal } = requireAbortSignal();
93669
- const assert2 = require$$0$b;
93805
+ const assert2 = require$$0$c;
93670
93806
  class UpgradeHandler extends AsyncResource2 {
93671
93807
  constructor(opts, callback) {
93672
93808
  if (!opts || typeof opts !== "object") {
@@ -93758,7 +93894,7 @@ ${len2.toString(16)}\r
93758
93894
  function requireApiConnect() {
93759
93895
  if (hasRequiredApiConnect) return apiConnect;
93760
93896
  hasRequiredApiConnect = 1;
93761
- const assert2 = require$$0$b;
93897
+ const assert2 = require$$0$c;
93762
93898
  const { AsyncResource: AsyncResource2 } = require$$5$4;
93763
93899
  const { InvalidArgumentError: InvalidArgumentError2, SocketError } = requireErrors$1();
93764
93900
  const util2 = requireUtil$8();
@@ -93923,7 +94059,7 @@ ${len2.toString(16)}\r
93923
94059
  const { kDispatches, kMockAgent, kOriginalDispatch, kOrigin, kGetNetConnect } = requireMockSymbols();
93924
94060
  const { buildURL } = requireUtil$8();
93925
94061
  const { STATUS_CODES } = http$1;
93926
- const { types: { isPromise: isPromise2 } } = require$$0$8;
94062
+ const { types: { isPromise: isPromise2 } } = require$$0$9;
93927
94063
  function matchValue(match5, value) {
93928
94064
  if (typeof match5 === "string") {
93929
94065
  return match5 === value;
@@ -94386,7 +94522,7 @@ ${len2.toString(16)}\r
94386
94522
  function requireMockClient() {
94387
94523
  if (hasRequiredMockClient) return mockClient;
94388
94524
  hasRequiredMockClient = 1;
94389
- const { promisify: promisify2 } = require$$0$8;
94525
+ const { promisify: promisify2 } = require$$0$9;
94390
94526
  const Client = requireClient();
94391
94527
  const { buildMockDispatch } = requireMockUtils();
94392
94528
  const { kDispatches, kMockAgent, kClose, kOriginalClose, kOrigin, kOriginalDispatch, kConnected } = requireMockSymbols();
@@ -94428,7 +94564,7 @@ ${len2.toString(16)}\r
94428
94564
  function requireMockPool() {
94429
94565
  if (hasRequiredMockPool) return mockPool;
94430
94566
  hasRequiredMockPool = 1;
94431
- const { promisify: promisify2 } = require$$0$8;
94567
+ const { promisify: promisify2 } = require$$0$9;
94432
94568
  const Pool = requirePool();
94433
94569
  const { buildMockDispatch } = requireMockUtils();
94434
94570
  const { kDispatches, kMockAgent, kClose, kOriginalClose, kOrigin, kOriginalDispatch, kConnected } = requireMockSymbols();
@@ -94505,8 +94641,8 @@ ${len2.toString(16)}\r
94505
94641
  function requirePendingInterceptorsFormatter() {
94506
94642
  if (hasRequiredPendingInterceptorsFormatter) return pendingInterceptorsFormatter;
94507
94643
  hasRequiredPendingInterceptorsFormatter = 1;
94508
- const { Transform: Transform2 } = require$$0$c;
94509
- const { Console } = require$$1$6;
94644
+ const { Transform: Transform2 } = require$$0$d;
94645
+ const { Console } = require$$1$5;
94510
94646
  const PERSISTENT = process.versions.icu ? "\u2705" : "Y ";
94511
94647
  const NOT_PERSISTENT = process.versions.icu ? "\u274C" : "N ";
94512
94648
  pendingInterceptorsFormatter = class PendingInterceptorsFormatter {
@@ -94875,7 +95011,7 @@ ${pendingInterceptorsFormatter2.format(pending2)}
94875
95011
  if (hasRequiredDns) return dns;
94876
95012
  hasRequiredDns = 1;
94877
95013
  const { isIP } = net;
94878
- const { lookup: lookup2 } = require$$1$7;
95014
+ const { lookup: lookup2 } = require$$1$6;
94879
95015
  const DecoratorHandler = requireDecoratorHandler();
94880
95016
  const { InvalidArgumentError: InvalidArgumentError2, InformationalError } = requireErrors$1();
94881
95017
  const maxInt = Math.pow(2, 31) - 1;
@@ -95154,8 +95290,8 @@ ${pendingInterceptorsFormatter2.format(pending2)}
95154
95290
  const { kEnumerableProperty } = requireUtil$8();
95155
95291
  const { iteratorMixin, isValidHeaderName, isValidHeaderValue } = requireUtil$7();
95156
95292
  const { webidl } = requireWebidl();
95157
- const assert2 = require$$0$b;
95158
- const util2 = require$$0$8;
95293
+ const assert2 = require$$0$c;
95294
+ const util2 = require$$0$9;
95159
95295
  const kHeadersMap = Symbol("headers map");
95160
95296
  const kHeadersSortedMap = Symbol("headers map sorted");
95161
95297
  function isHTTPWhiteSpaceCharCode(code2) {
@@ -95597,7 +95733,7 @@ ${pendingInterceptorsFormatter2.format(pending2)}
95597
95733
  const { Headers: Headers2, HeadersList, fill, getHeadersGuard, setHeadersGuard, setHeadersList } = requireHeaders();
95598
95734
  const { extractBody, cloneBody, mixinBody, hasFinalizationRegistry, streamRegistry, bodyUnusable } = requireBody();
95599
95735
  const util2 = requireUtil$8();
95600
- const nodeUtil = require$$0$8;
95736
+ const nodeUtil = require$$0$9;
95601
95737
  const { kEnumerableProperty } = util2;
95602
95738
  const { isValidReasonPhrase, isCancelled, isAborted: isAborted2, isBlobLike, serializeJavascriptValueToJSONString, isErrorLike, isomorphicEncode, environmentSettingsObject: relevantRealm } = requireUtil$7();
95603
95739
  const { redirectStatusSet, nullBodyStatus } = requireConstants$2();
@@ -95606,8 +95742,8 @@ ${pendingInterceptorsFormatter2.format(pending2)}
95606
95742
  const { FormData: FormData2 } = requireFormdata();
95607
95743
  const { URLSerializer } = requireDataUrl();
95608
95744
  const { kConstruct } = requireSymbols$4();
95609
- const assert2 = require$$0$b;
95610
- const { types: types2 } = require$$0$8;
95745
+ const assert2 = require$$0$c;
95746
+ const { types: types2 } = require$$0$9;
95611
95747
  const textEncoder2 = new TextEncoder("utf-8");
95612
95748
  class Response3 {
95613
95749
  static error() {
@@ -96024,7 +96160,7 @@ ${pendingInterceptorsFormatter2.format(pending2)}
96024
96160
  const { Headers: Headers2, fill: fillHeaders, HeadersList, setHeadersGuard, getHeadersGuard, setHeadersList, getHeadersList } = requireHeaders();
96025
96161
  const { FinalizationRegistry: FinalizationRegistry2 } = requireDispatcherWeakref()();
96026
96162
  const util2 = requireUtil$8();
96027
- const nodeUtil = require$$0$8;
96163
+ const nodeUtil = require$$0$9;
96028
96164
  const { isValidHTTPToken, sameOrigin, environmentSettingsObject } = requireUtil$7();
96029
96165
  const { forbiddenMethodsSet, corsSafeListedMethodsSet, referrerPolicy, requestRedirect, requestMode, requestCredentials, requestCache: requestCache2, requestDuplex } = requireConstants$2();
96030
96166
  const { kEnumerableProperty, normalizedMethodRecordsBase, normalizedMethodRecords } = util2;
@@ -96032,7 +96168,7 @@ ${pendingInterceptorsFormatter2.format(pending2)}
96032
96168
  const { webidl } = requireWebidl();
96033
96169
  const { URLSerializer } = requireDataUrl();
96034
96170
  const { kConstruct } = requireSymbols$4();
96035
- const assert2 = require$$0$b;
96171
+ const assert2 = require$$0$c;
96036
96172
  const { getMaxListeners, setMaxListeners, getEventListeners, defaultMaxListeners } = require$$0$4;
96037
96173
  const kAbortController = Symbol("abortController");
96038
96174
  const requestFinalizer = new FinalizationRegistry2(({ signal, abort: abort2 }) => {
@@ -96631,11 +96767,11 @@ ${pendingInterceptorsFormatter2.format(pending2)}
96631
96767
  const zlib = zlib__default;
96632
96768
  const { bytesMatch, makePolicyContainer, clonePolicyContainer, requestBadPort, TAOCheck, appendRequestOriginHeader, responseLocationURL, requestCurrentURL, setRequestReferrerPolicyOnRedirect, tryUpgradeRequestToAPotentiallyTrustworthyURL, createOpaqueTimingInfo, appendFetchMetadata, corsCheck, crossOriginResourcePolicyCheck, determineRequestsReferrer, coarsenedSharedCurrentTime, createDeferredPromise, isBlobLike, sameOrigin, isCancelled, isAborted: isAborted2, isErrorLike, fullyReadBody, readableStreamClose, isomorphicEncode, urlIsLocal, urlIsHttpHttpsScheme, urlHasHttpsScheme, clampAndCoarsenConnectionTimingInfo, simpleRangeHeaderValue, buildContentRange, createInflate, extractMimeType } = requireUtil$7();
96633
96769
  const { kState, kDispatcher } = requireSymbols$3();
96634
- const assert2 = require$$0$b;
96770
+ const assert2 = require$$0$c;
96635
96771
  const { safelyExtractBody, extractBody } = requireBody();
96636
96772
  const { redirectStatusSet, nullBodyStatus, safeMethodsSet, requestBodyHeader, subresourceSet } = requireConstants$2();
96637
96773
  const EE = require$$0$4;
96638
- const { Readable: Readable2, pipeline: pipeline2, finished: finished2 } = require$$0$c;
96774
+ const { Readable: Readable2, pipeline: pipeline2, finished: finished2 } = require$$0$d;
96639
96775
  const { addAbortListener, isErrored, isReadable: isReadable2, bufferToLowerCasedHeaderName } = requireUtil$8();
96640
96776
  const { dataURLProcessor, serializeAMimeType, minimizeSupportedMimeType } = requireDataUrl();
96641
96777
  const { getGlobalDispatcher } = requireGlobal();
@@ -96938,7 +97074,7 @@ ${pendingInterceptorsFormatter2.format(pending2)}
96938
97074
  }
96939
97075
  case "blob:": {
96940
97076
  if (!resolveObjectURL) {
96941
- resolveObjectURL = require$$0$a.resolveObjectURL;
97077
+ resolveObjectURL = require$$0$b.resolveObjectURL;
96942
97078
  }
96943
97079
  const blobURLEntry = requestCurrentURL(request2);
96944
97080
  if (blobURLEntry.search.length !== 0) {
@@ -97973,9 +98109,9 @@ ${pendingInterceptorsFormatter2.format(pending2)}
97973
98109
  const { ProgressEvent } = requireProgressevent();
97974
98110
  const { getEncoding } = requireEncoding();
97975
98111
  const { serializeAMimeType, parseMIMEType } = requireDataUrl();
97976
- const { types: types2 } = require$$0$8;
97977
- const { StringDecoder: StringDecoder2 } = require$$1$3;
97978
- const { btoa: btoa2 } = require$$0$a;
98112
+ const { types: types2 } = require$$0$9;
98113
+ const { StringDecoder: StringDecoder2 } = require$$1$2;
98114
+ const { btoa: btoa2 } = require$$0$b;
97979
98115
  const staticPropertyDescriptors = {
97980
98116
  enumerable: true,
97981
98117
  writable: false,
@@ -98386,7 +98522,7 @@ ${pendingInterceptorsFormatter2.format(pending2)}
98386
98522
  function requireUtil$4() {
98387
98523
  if (hasRequiredUtil$4) return util$5;
98388
98524
  hasRequiredUtil$4 = 1;
98389
- const assert2 = require$$0$b;
98525
+ const assert2 = require$$0$c;
98390
98526
  const { URLSerializer } = requireDataUrl();
98391
98527
  const { isValidHeaderName } = requireUtil$7();
98392
98528
  function urlEquals(A, B, excludeFragment = false) {
@@ -98425,7 +98561,7 @@ ${pendingInterceptorsFormatter2.format(pending2)}
98425
98561
  const { kState } = requireSymbols$3();
98426
98562
  const { fetching } = requireFetch();
98427
98563
  const { urlIsHttpHttpsScheme, createDeferredPromise, readAllBytes } = requireUtil$7();
98428
- const assert2 = require$$0$b;
98564
+ const assert2 = require$$0$c;
98429
98565
  class Cache {
98430
98566
  #relevantRequestResponseList;
98431
98567
  constructor() {
@@ -99186,7 +99322,7 @@ ${pendingInterceptorsFormatter2.format(pending2)}
99186
99322
  const { maxNameValuePairSize, maxAttributeValueSize } = requireConstants$1();
99187
99323
  const { isCTLExcludingHtab } = requireUtil$3();
99188
99324
  const { collectASequenceOfCodePointsFast } = requireDataUrl();
99189
- const assert2 = require$$0$b;
99325
+ const assert2 = require$$0$c;
99190
99326
  function parseSetCookie(header) {
99191
99327
  if (isCTLExcludingHtab(header)) {
99192
99328
  return null;
@@ -99463,7 +99599,7 @@ ${pendingInterceptorsFormatter2.format(pending2)}
99463
99599
  const { webidl } = requireWebidl();
99464
99600
  const { kEnumerableProperty } = requireUtil$8();
99465
99601
  const { kConstruct } = requireSymbols$4();
99466
- const { MessagePort } = require$$1$4;
99602
+ const { MessagePort } = require$$1$3;
99467
99603
  class MessageEvent extends Event {
99468
99604
  #eventInit;
99469
99605
  constructor(type2, eventInitDict = {}) {
@@ -99799,7 +99935,7 @@ ${pendingInterceptorsFormatter2.format(pending2)}
99799
99935
  const { kReadyState, kController, kResponse, kBinaryType, kWebSocketURL } = requireSymbols();
99800
99936
  const { states, opcodes } = requireConstants();
99801
99937
  const { ErrorEvent, createFastMessageEvent } = requireEvents();
99802
- const { isUtf8 } = require$$0$a;
99938
+ const { isUtf8 } = require$$0$b;
99803
99939
  const { collectASequenceOfCodePointsFast, removeHTTPWhitespace } = requireDataUrl();
99804
99940
  function isConnecting(ws) {
99805
99941
  return ws[kReadyState] === states.CONNECTING;
@@ -100292,8 +100428,8 @@ ${pendingInterceptorsFormatter2.format(pending2)}
100292
100428
  function requireReceiver() {
100293
100429
  if (hasRequiredReceiver) return receiver;
100294
100430
  hasRequiredReceiver = 1;
100295
- const { Writable } = require$$0$c;
100296
- const assert2 = require$$0$b;
100431
+ const { Writable } = require$$0$d;
100432
+ const assert2 = require$$0$c;
100297
100433
  const { parserStates, opcodes, states, emptyBuffer, sentCloseFrameState } = requireConstants();
100298
100434
  const { kReadyState, kSentClose, kResponse, kReceivedClose } = requireSymbols();
100299
100435
  const { channels } = requireDiagnostics();
@@ -100705,7 +100841,7 @@ ${pendingInterceptorsFormatter2.format(pending2)}
100705
100841
  const { ByteParser } = requireReceiver();
100706
100842
  const { kEnumerableProperty, isBlobLike } = requireUtil$8();
100707
100843
  const { getGlobalDispatcher } = requireGlobal();
100708
- const { types: types2 } = require$$0$8;
100844
+ const { types: types2 } = require$$0$9;
100709
100845
  const { ErrorEvent, CloseEvent } = requireEvents();
100710
100846
  const { SendQueue } = requireSender();
100711
100847
  class WebSocket2 extends EventTarget {
@@ -101074,7 +101210,7 @@ ${pendingInterceptorsFormatter2.format(pending2)}
101074
101210
  function requireEventsourceStream() {
101075
101211
  if (hasRequiredEventsourceStream) return eventsourceStream;
101076
101212
  hasRequiredEventsourceStream = 1;
101077
- const { Transform: Transform2 } = require$$0$c;
101213
+ const { Transform: Transform2 } = require$$0$d;
101078
101214
  const { isASCIINumber, isValidLastEventId } = requireUtil$1();
101079
101215
  const BOM = [
101080
101216
  239,
@@ -101277,7 +101413,7 @@ ${value}`;
101277
101413
  function requireEventsource() {
101278
101414
  if (hasRequiredEventsource) return eventsource;
101279
101415
  hasRequiredEventsource = 1;
101280
- const { pipeline: pipeline2 } = require$$0$c;
101416
+ const { pipeline: pipeline2 } = require$$0$d;
101281
101417
  const { fetching } = requireFetch();
101282
101418
  const { makeRequest } = requireRequest();
101283
101419
  const { webidl } = requireWebidl();
@@ -101645,7 +101781,7 @@ ${value}`;
101645
101781
  undici.Response = requireResponse().Response;
101646
101782
  undici.Request = requireRequest().Request;
101647
101783
  undici.FormData = requireFormdata().FormData;
101648
- undici.File = globalThis.File ?? require$$0$a.File;
101784
+ undici.File = globalThis.File ?? require$$0$b.File;
101649
101785
  undici.FileReader = requireFilereader().FileReader;
101650
101786
  const { setGlobalOrigin, getGlobalOrigin } = requireGlobal$1();
101651
101787
  undici.setGlobalOrigin = setGlobalOrigin;
@@ -113178,7 +113314,7 @@ ${incoming}`).output;
113178
113314
  function requireCrossSpawn() {
113179
113315
  if (hasRequiredCrossSpawn) return crossSpawn.exports;
113180
113316
  hasRequiredCrossSpawn = 1;
113181
- const cp = require$$1$8;
113317
+ const cp = require$$1$7;
113182
113318
  const parse2 = requireParse();
113183
113319
  const enoent2 = requireEnoent();
113184
113320
  function spawn2(command2, args2, options) {
@@ -114337,6 +114473,19 @@ ${incoming}`).output;
114337
114473
  description: command2.description ?? void 0
114338
114474
  }));
114339
114475
  }
114476
+ const zLodySessionResponseMeta = object$1({
114477
+ _meta: object$1({
114478
+ lody: object$1({
114479
+ modelReasoningEfforts: record$1(string$1(), array$2(string$1()))
114480
+ }).nullish()
114481
+ }).nullish()
114482
+ });
114483
+ function readLodyModelReasoningEfforts(sessionResponse) {
114484
+ const parsed = zLodySessionResponseMeta.safeParse(sessionResponse);
114485
+ const map2 = parsed.success ? parsed.data._meta?.lody?.modelReasoningEfforts : void 0;
114486
+ return map2 && Object.keys(map2).length > 0 ? map2 : void 0;
114487
+ }
114488
+ const usesCodexModelEffortIds = (agent2) => agent2?.cliType === "builtin" && agent2.agentType === "codex";
114340
114489
  function normalizeAcpSessionCapabilities(sessionResponse, lifecycleCapabilities = {}) {
114341
114490
  const modes = (sessionResponse.modes?.availableModes ?? []).map((mode2) => ({
114342
114491
  id: mode2.id,
@@ -114353,7 +114502,10 @@ ${incoming}`).output;
114353
114502
  const legacyModels = readLegacySessionModelState(sessionResponse)?.availableModels ?? [];
114354
114503
  const models = modelsFromConfigOptions.length > 0 ? modelsFromConfigOptions : legacyModels;
114355
114504
  const availableCommands = readSessionAvailableCommands(sessionResponse);
114356
- const modelReasoningEfforts = deriveModelReasoningEffortsFromLegacyModelIds(legacyModels.map((model) => model.modelId));
114505
+ const modelReasoningEfforts = {
114506
+ ...readLodyModelReasoningEfforts(sessionResponse),
114507
+ ...usesCodexModelEffortIds(lifecycleCapabilities.agent) ? deriveModelReasoningEffortsFromLegacyModelIds(legacyModels.map((model) => model.modelId)) : void 0
114508
+ };
114357
114509
  return {
114358
114510
  modes,
114359
114511
  models,
@@ -114361,7 +114513,7 @@ ${incoming}`).output;
114361
114513
  availableCommands,
114362
114514
  sessionFork: lifecycleCapabilities.sessionFork === true,
114363
114515
  acknowledgedSteer: lifecycleCapabilities.acknowledgedSteer === true,
114364
- ...modelReasoningEfforts ? {
114516
+ ...Object.keys(modelReasoningEfforts).length > 0 ? {
114365
114517
  modelReasoningEfforts
114366
114518
  } : {}
114367
114519
  };
@@ -114745,6 +114897,23 @@ ${incoming}`).output;
114745
114897
  }
114746
114898
  return mismatches.length > 0 ? mismatches.join("; ") : null;
114747
114899
  }
114900
+ function getBuiltinToolPermissionOutcome(args2) {
114901
+ if (args2.agentConfig?.cliType !== "builtin" || args2.agentConfig.agentType !== "grok" || isAskUserQuestionPermissionRequest(args2.request)) {
114902
+ return void 0;
114903
+ }
114904
+ const permission = args2.configOptions.find((option2) => option2.id === "permission_mode");
114905
+ if (permission?.type !== "select" || permission.currentValue !== "always-approve") {
114906
+ return void 0;
114907
+ }
114908
+ const allowOnce = args2.request.options.find((option2) => option2.kind === "allow_once");
114909
+ if (allowOnce) return {
114910
+ outcome: "selected",
114911
+ optionId: allowOnce.optionId
114912
+ };
114913
+ return args2.pending ? {
114914
+ outcome: "cancelled"
114915
+ } : void 0;
114916
+ }
114748
114917
  const VersionOneSchema = object$1({
114749
114918
  version: literal$1(1)
114750
114919
  });
@@ -114805,6 +114974,7 @@ ${incoming}`).output;
114805
114974
  modelUsage: record$1(string$1(), ModelUsageSchema).optional()
114806
114975
  });
114807
114976
  const RateLimitWindowSchema = object$1({
114977
+ label: string$1().optional(),
114808
114978
  usedPercent: number$4().min(0).max(100),
114809
114979
  windowDurationSeconds: number$4().nonnegative().nullable(),
114810
114980
  resetsAtEpochSeconds: number$4().int().positive().nullable()
@@ -115308,6 +115478,7 @@ ${incoming}`).output;
115308
115478
  sessionWorkdir = null;
115309
115479
  agentMcpCapabilities;
115310
115480
  configOptions = [];
115481
+ configOptionsListeners = /* @__PURE__ */ new Set();
115311
115482
  configOptionValues;
115312
115483
  legacySessionModelState = null;
115313
115484
  currentModel;
@@ -116146,6 +116317,7 @@ ${incoming}`).output;
116146
116317
  } else {
116147
116318
  this.currentModel = void 0;
116148
116319
  }
116320
+ for (const listener of this.configOptionsListeners) listener();
116149
116321
  }
116150
116322
  retainLegacyConfigOptionValue(configId, value) {
116151
116323
  this.configOptionValues[configId] = value;
@@ -116165,6 +116337,7 @@ ${incoming}`).output;
116165
116337
  }
116166
116338
  return option2;
116167
116339
  });
116340
+ for (const listener of this.configOptionsListeners) listener();
116168
116341
  }
116169
116342
  async startSession(stream2, workdir, resumeSessionId, timeoutOptions = {}, startupAbort, resolveSessionStart, forkSessionId, forkSessionTurnId) {
116170
116343
  const connection2 = new ClientSideConnection(() => this, stream2);
@@ -116809,6 +116982,21 @@ ${incoming}`).output;
116809
116982
  getConfigOptions() {
116810
116983
  return this.configOptions;
116811
116984
  }
116985
+ subscribeConfigOptions(listener) {
116986
+ this.configOptionsListeners.add(listener);
116987
+ return () => {
116988
+ this.configOptionsListeners.delete(listener);
116989
+ };
116990
+ }
116991
+ getAutomaticToolPermissionOutcome(request2, pending2) {
116992
+ if (request2.sessionId !== this.acpSessionId) return void 0;
116993
+ return getBuiltinToolPermissionOutcome({
116994
+ agentConfig: this.options.agentConfig,
116995
+ configOptions: this.configOptions,
116996
+ request: request2,
116997
+ pending: pending2
116998
+ });
116999
+ }
116812
117000
  findConfigOptionByCategory(category) {
116813
117001
  return this.configOptions.find((opt) => opt.category === category);
116814
117002
  }
@@ -118256,7 +118444,7 @@ ${error2.message}` : execaMessage;
118256
118444
  if (hasRequiredExeca) return execa$1.exports;
118257
118445
  hasRequiredExeca = 1;
118258
118446
  const path2 = path__default$1;
118259
- const childProcess = require$$1$8;
118447
+ const childProcess = require$$1$7;
118260
118448
  const crossSpawn2 = requireCrossSpawn();
118261
118449
  const stripFinalNewline2 = requireStripFinalNewline();
118262
118450
  const npmRunPath2 = requireNpmRunPath();
@@ -118593,8 +118781,8 @@ ${error2.message}` : execaMessage;
118593
118781
  stdout: null,
118594
118782
  stderr: null
118595
118783
  };
118596
- const isStream = (s) => !!s && typeof s === "object" && (s instanceof Minipass || s instanceof require$$0$c || isReadable(s) || isWritable(s));
118597
- const isReadable = (s) => !!s && typeof s === "object" && s instanceof EventEmitter$1 && typeof s.pipe === "function" && s.pipe !== require$$0$c.Writable.prototype.pipe;
118784
+ const isStream = (s) => !!s && typeof s === "object" && (s instanceof Minipass || s instanceof require$$0$d || isReadable(s) || isWritable(s));
118785
+ const isReadable = (s) => !!s && typeof s === "object" && s instanceof EventEmitter$1 && typeof s.pipe === "function" && s.pipe !== require$$0$d.Writable.prototype.pipe;
118598
118786
  const isWritable = (s) => !!s && typeof s === "object" && s instanceof EventEmitter$1 && typeof s.write === "function" && typeof s.end === "function";
118599
118787
  const EOF$1 = Symbol("EOF");
118600
118788
  const MAYBE_EMIT_END = Symbol("maybeEmitEnd");
@@ -123412,7 +123600,7 @@ ${error2.message}` : execaMessage;
123412
123600
  if (!this[CHECKPATH](entry)) {
123413
123601
  return entry.resume();
123414
123602
  }
123415
- require$$0$b.equal(typeof entry.absolute, "string");
123603
+ require$$0$c.equal(typeof entry.absolute, "string");
123416
123604
  switch (entry.type) {
123417
123605
  case "Directory":
123418
123606
  case "GNUDumpDir":
@@ -130575,7 +130763,11 @@ ${fallbackStderrTail}` : errorMessage2;
130575
130763
  return {
130576
130764
  ...normalizeAcpSessionCapabilities(sessionResponse, {
130577
130765
  sessionFork: client2.supportsSessionFork?.() === true,
130578
- acknowledgedSteer: client2.supportsAcknowledgedSteer()
130766
+ acknowledgedSteer: client2.supportsAcknowledgedSteer(),
130767
+ agent: {
130768
+ cliType,
130769
+ agentType
130770
+ }
130579
130771
  }),
130580
130772
  capabilitySourceVersion
130581
130773
  };
@@ -130805,6 +130997,7 @@ ${fallbackStderrTail}` : errorMessage2;
130805
130997
  });
130806
130998
  }
130807
130999
  }
131000
+ collectedText = "";
130808
131001
  options.logger.debug(`[title-generator] Sending title prompt (acpSessionId=${acpSessionId})`);
130809
131002
  const response2 = await client2?.prompt(acpSessionId, prompt2);
130810
131003
  options.logger.debug(`[title-generator] Title prompt returned (acpSessionId=${acpSessionId})`);
@@ -131118,6 +131311,22 @@ ${fallbackStderrTail}` : errorMessage2;
131118
131311
  }
131119
131312
  return input2.status?.type === "requestPermission" || input2.status?.type === "running";
131120
131313
  };
131314
+ const markAssistantTurnFinished = (history, options) => {
131315
+ const { turnId, endedAt, permissionWaitMs } = options;
131316
+ for (let i2 = history.length - 1; i2 >= 0; i2--) {
131317
+ const entry = history[i2];
131318
+ if (entry && entry.role === "assistant" && (!turnId || entry.id === turnId)) {
131319
+ if (entry.finished === true) break;
131320
+ entry.finished = true;
131321
+ entry.endedAt = endedAt;
131322
+ if (permissionWaitMs !== void 0) {
131323
+ entry.permissionWaitMs = permissionWaitMs;
131324
+ }
131325
+ break;
131326
+ }
131327
+ }
131328
+ return history;
131329
+ };
131121
131330
  const tryExecTrimmed = async (exec2, command2, args2, workdir) => {
131122
131331
  try {
131123
131332
  const output = await exec2(command2, args2, workdir, false);
@@ -135422,6 +135631,11 @@ The postId is ${normalizedFeedbackPostId}. Use the feedback-progress-reporter sk
135422
135631
  if (this.turnRuntimeBySession.get(options.sessionId) !== runtime || !runtime.promptInFlight || runtime.turnId !== previousTurnId || runtime.activePromptRun !== ownedPromptRun) {
135423
135632
  return reject2("stale-turn", "Steer application arrived after ownership changed");
135424
135633
  }
135634
+ runtime.invocation = {
135635
+ sourceTurnId: options.userTurnId,
135636
+ requesterUserId: options.userId,
135637
+ inputConfig: options.inputConfig
135638
+ };
135425
135639
  try {
135426
135640
  await this.finalizeYieldedTurnOutput(runtime, options.sessionId, previousTurnId);
135427
135641
  } catch (error2) {
@@ -135460,7 +135674,6 @@ The postId is ${normalizedFeedbackPostId}. Use the feedback-progress-reporter sk
135460
135674
  runtime.activePromptRun = nextPromptRun;
135461
135675
  runtime.turnId = nextTurnId;
135462
135676
  runtime.userTurnId = options.userTurnId;
135463
- runtime.requesterUserId = options.userId;
135464
135677
  this.markCurrentTurn(options.sessionId, nextTurnId);
135465
135678
  ownedPromptRun.signalSuccessor();
135466
135679
  return {
@@ -135536,6 +135749,7 @@ The postId is ${normalizedFeedbackPostId}. Use the feedback-progress-reporter sk
135536
135749
  sessionId,
135537
135750
  sessionDoc: options.sessionDoc,
135538
135751
  userTurnId,
135752
+ invocation: options.invocation,
135539
135753
  dispatchSource,
135540
135754
  unhandledErrorCode: "session_chat_failed",
135541
135755
  describeUnhandledError: (error2) => `[${sessionId}] Failed to process prepared session turn: ${formatErrorMessage(error2)}`
@@ -135595,12 +135809,13 @@ The postId is ${normalizedFeedbackPostId}. Use the feedback-progress-reporter sk
135595
135809
  async evictForTurnStart(sessionId) {
135596
135810
  return await this.deps.evictForMemoryPressure(sessionId);
135597
135811
  }
135598
- createTurnRuntime(sessionId, turnId, userTurnId, session2) {
135812
+ createTurnRuntime(options) {
135599
135813
  return {
135600
- sessionId,
135601
- turnId,
135602
- userTurnId,
135603
- session: session2,
135814
+ sessionId: options.sessionId,
135815
+ turnId: options.turnId,
135816
+ userTurnId: options.userTurnId,
135817
+ invocation: options.invocation,
135818
+ session: options.session,
135604
135819
  promptStarted: false,
135605
135820
  promptInFlight: false,
135606
135821
  autoPromptInFlight: false,
@@ -136135,7 +136350,7 @@ The postId is ${normalizedFeedbackPostId}. Use the feedback-progress-reporter sk
136135
136350
  });
136136
136351
  }
136137
136352
  async runVisibleSessionTurn(options, body2) {
136138
- const { sessionId, sessionDoc, session: session2, userTurnId } = options;
136353
+ const { sessionId, sessionDoc, userTurnId } = options;
136139
136354
  const span2 = startTraceSpan(this.deps.logger, "execution.visible_turn", {
136140
136355
  sessionId,
136141
136356
  ...userTurnId ? {
@@ -136176,7 +136391,10 @@ The postId is ${normalizedFeedbackPostId}. Use the feedback-progress-reporter sk
136176
136391
  deferACPUpdateTarget: true
136177
136392
  });
136178
136393
  this.markCurrentTurn(sessionId, turnId);
136179
- runtime = this.createTurnRuntime(sessionId, turnId, userTurnId, session2);
136394
+ runtime = this.createTurnRuntime({
136395
+ ...options,
136396
+ turnId
136397
+ });
136180
136398
  this.registerTurnRuntime(runtime);
136181
136399
  } finally {
136182
136400
  releaseConflict();
@@ -136461,6 +136679,21 @@ The postId is ${normalizedFeedbackPostId}. Use the feedback-progress-reporter sk
136461
136679
  getActiveUserTurnId(sessionId) {
136462
136680
  return this.turnRuntimeBySession.get(sessionId)?.userTurnId;
136463
136681
  }
136682
+ getActiveInvocationContext(sessionId) {
136683
+ const runtime = this.turnRuntimeBySession.get(sessionId);
136684
+ if (!runtime) {
136685
+ return void 0;
136686
+ }
136687
+ const { invocation } = runtime;
136688
+ if (!invocation?.requesterUserId) {
136689
+ throw new Error(`Active invocation identity is unavailable for session ${sessionId}`);
136690
+ }
136691
+ return {
136692
+ requesterUserId: invocation.requesterUserId,
136693
+ sourceTurnId: invocation.sourceTurnId,
136694
+ inputConfig: invocation.inputConfig
136695
+ };
136696
+ }
136464
136697
  async setDispatchProcessing(sessionId, sessionDoc, userTurnId) {
136465
136698
  await this.setUserTurnStatus(sessionDoc, userTurnId, "processing");
136466
136699
  await this.upsertSessionMeta(sessionId, {
@@ -136846,7 +137079,6 @@ The postId is ${normalizedFeedbackPostId}. Use the feedback-progress-reporter sk
136846
137079
  });
136847
137080
  const runReadySessionTurn = (readySession, ctx) => gen(function* () {
136848
137081
  const { turnId, runtime, abortIfCancelled, openAssistantEntry, prompt: prompt2 } = ctx;
136849
- runtime.requesterUserId = message.userId;
136850
137082
  let activeSession = readySession;
136851
137083
  let staleAcpPromptRecoveryAttempted = false;
136852
137084
  let baseCommitHash = null;
@@ -137020,7 +137252,7 @@ The postId is ${normalizedFeedbackPostId}. Use the feedback-progress-reporter sk
137020
137252
  yield* self2.tryPromise(() => runtime.yieldedFinalization);
137021
137253
  const completedTurnId = runtime.turnId;
137022
137254
  const completedUserTurnId = runtime.userTurnId ?? executionUserTurnId;
137023
- const completedRequesterUserId = runtime.requesterUserId ?? userId;
137255
+ const completedRequesterUserId = runtime.invocation?.requesterUserId ?? userId;
137024
137256
  const producedOutput = self2.turnProducedVisibleOutput(sessionId, completedTurnId);
137025
137257
  yield* self2.tryPromise(() => traceAsync(self2.deps.logger, "execution.mark_prompt_completed", {
137026
137258
  sessionId,
@@ -137093,6 +137325,11 @@ The postId is ${normalizedFeedbackPostId}. Use the feedback-progress-reporter sk
137093
137325
  session: session2
137094
137326
  } : {},
137095
137327
  userTurnId: executionUserTurnId,
137328
+ invocation: {
137329
+ sourceTurnId: userTurnId,
137330
+ requesterUserId: userId,
137331
+ inputConfig: acpSessionConfig
137332
+ },
137096
137333
  ...dispatchOptions?.dispatchSource ? {
137097
137334
  dispatchSource: dispatchOptions.dispatchSource
137098
137335
  } : {},
@@ -137309,6 +137546,13 @@ The postId is ${normalizedFeedbackPostId}. Use the feedback-progress-reporter sk
137309
137546
  sessionId,
137310
137547
  sessionDoc,
137311
137548
  userTurnId,
137549
+ ...userTurnId ? {
137550
+ invocation: {
137551
+ sourceTurnId: userTurnId,
137552
+ requesterUserId: message.userId,
137553
+ inputConfig: acpSessionConfig
137554
+ }
137555
+ } : {},
137312
137556
  ...dispatchOptions?.dispatchSource ? {
137313
137557
  dispatchSource: dispatchOptions.dispatchSource
137314
137558
  } : {},
@@ -137320,7 +137564,6 @@ The postId is ${normalizedFeedbackPostId}. Use the feedback-progress-reporter sk
137320
137564
  },
137321
137565
  body: ({ turnId, runtime, setUnhandledErrorContext, bindSession, trackPendingSession, abortIfCancelled, openAssistantEntry, prompt: prompt2 }) => gen(function* () {
137322
137566
  setUnhandledErrorContext(turnErrorContext);
137323
- runtime.requesterUserId = message.userId;
137324
137567
  const memoryPressureResult = yield* self2.tryPromise(() => self2.evictForTurnStart(sessionId));
137325
137568
  if (memoryPressureResult.stillUnderPressure) {
137326
137569
  const failureMessage = self2.formatMemoryPressureFailureMessage(memoryPressureResult);
@@ -137457,7 +137700,7 @@ The postId is ${normalizedFeedbackPostId}. Use the feedback-progress-reporter sk
137457
137700
  yield* self2.tryPromise(() => runtime.yieldedFinalization);
137458
137701
  const completedTurnId = runtime.turnId;
137459
137702
  const completedUserTurnId = runtime.userTurnId ?? userTurnId;
137460
- const completedRequesterUserId = runtime.requesterUserId ?? sessionConfig.requesterUserId;
137703
+ const completedRequesterUserId = runtime.invocation?.requesterUserId ?? sessionConfig.requesterUserId;
137461
137704
  const producedOutput = self2.turnProducedVisibleOutput(sessionId, completedTurnId);
137462
137705
  yield* self2.tryPromise(() => traceAsync(self2.deps.logger, "execution.mark_prompt_completed", {
137463
137706
  sessionId,
@@ -139324,6 +139567,11 @@ The postId is ${normalizedFeedbackPostId}. Use the feedback-progress-reporter sk
139324
139567
  sessionId,
139325
139568
  sessionDoc,
139326
139569
  userTurnId: nextUserTurn.id,
139570
+ invocation: {
139571
+ sourceTurnId: nextUserTurn.id,
139572
+ requesterUserId: nextUserTurn.userId,
139573
+ inputConfig: nextUserTurn.inputConfig ?? {}
139574
+ },
139327
139575
  dispatchSource,
139328
139576
  accessPromise: executionAccessPromise,
139329
139577
  requestPromise,
@@ -141436,6 +141684,7 @@ The postId is ${normalizedFeedbackPostId}. Use the feedback-progress-reporter sk
141436
141684
  const FrozenConfigSchema = object$1({
141437
141685
  agentConfigId: string$1().optional(),
141438
141686
  inputConfig: record$1(string$1(), unknown()),
141687
+ sourceTurnId: string$1().trim().min(1).optional(),
141439
141688
  targetDispatchConfigs: array$2(object$1({
141440
141689
  modeId: string$1().optional(),
141441
141690
  modelId: string$1().optional(),
@@ -141710,7 +141959,7 @@ The postId is ${normalizedFeedbackPostId}. Use the feedback-progress-reporter sk
141710
141959
  const existing = this.getStored(input2.requesterSessionId, input2.operationId);
141711
141960
  if (existing) return {
141712
141961
  created: false,
141713
- operation: this.assertMatching(existing, input2.kind, fingerprint),
141962
+ operation: this.assertMatching(existing, input2.kind, fingerprint, input2.requesterUserId, frozenConfig.sourceTurnId),
141714
141963
  claimedItemIndexes: []
141715
141964
  };
141716
141965
  const inserted = this.db.prepare(`INSERT OR IGNORE INTO operations (
@@ -141732,7 +141981,7 @@ The postId is ${normalizedFeedbackPostId}. Use the feedback-progress-reporter sk
141732
141981
  }
141733
141982
  return {
141734
141983
  created: inserted.changes === 1,
141735
- operation: this.assertMatching(operation, input2.kind, fingerprint),
141984
+ operation: this.assertMatching(operation, input2.kind, fingerprint, input2.requesterUserId, frozenConfig.sourceTurnId),
141736
141985
  claimedItemIndexes
141737
141986
  };
141738
141987
  });
@@ -141748,11 +141997,11 @@ The postId is ${normalizedFeedbackPostId}. Use the feedback-progress-reporter sk
141748
141997
  }
141749
141998
  return operation;
141750
141999
  }
141751
- findMatchingRetry(requesterSessionId, operationId, kind, canonicalCommand) {
142000
+ findMatchingRetry(requesterSessionId, operationId, kind, canonicalCommand, requesterUserId, sourceTurnId) {
141752
142001
  const existing = this.getStored(requesterSessionId, operationId);
141753
142002
  if (!existing) return void 0;
141754
142003
  const fingerprint = fingerprintLodyCommand(kind, canonicalizeLodyCommand(canonicalCommand));
141755
- return this.assertMatching(existing, kind, fingerprint);
142004
+ return this.assertMatching(existing, kind, fingerprint, requesterUserId, sourceTurnId);
141756
142005
  }
141757
142006
  listActive(workspaceId, ownerMachineId) {
141758
142007
  const rows = this.db.prepare(`SELECT * FROM operations
@@ -141760,6 +142009,24 @@ The postId is ${normalizedFeedbackPostId}. Use the feedback-progress-reporter sk
141760
142009
  ORDER BY created_at ASC, requester_session_id ASC, operation_id ASC`).all(workspaceId, ownerMachineId);
141761
142010
  return rows.map((row) => this.decodeOperation(row));
141762
142011
  }
142012
+ listPendingProgress(workspaceId, ownerMachineId) {
142013
+ return this.db.prepare(`SELECT operations.* FROM operations
142014
+ WHERE workspace_id = ? AND owner_machine_id = ? AND state = 'finished'
142015
+ AND kind IN ('session_create', 'session_create_many')
142016
+ AND NOT EXISTS (SELECT 1 FROM operation_progress_settlements p
142017
+ WHERE p.requester_session_id = operations.requester_session_id
142018
+ AND p.operation_id = operations.operation_id)
142019
+ ORDER BY created_at, requester_session_id, operation_id`).all(workspaceId, ownerMachineId).map((row) => this.decodeOperation(row));
142020
+ }
142021
+ settleProgress(requesterSessionId, operationId) {
142022
+ this.db.transaction(() => {
142023
+ this.db.prepare(`INSERT OR IGNORE INTO operation_progress_settlements
142024
+ (requester_session_id, operation_id)
142025
+ SELECT requester_session_id, operation_id FROM operations
142026
+ WHERE requester_session_id = ? AND operation_id = ? AND state = 'finished'
142027
+ AND kind IN ('session_create', 'session_create_many')`).run(requesterSessionId, operationId);
142028
+ }).immediate();
142029
+ }
141763
142030
  updateItems(requesterSessionId, operationId, items2) {
141764
142031
  array$2(OperationItemSchema).parse(items2);
141765
142032
  const result = this.db.prepare(`UPDATE operations SET items_json = ?
@@ -141917,8 +142184,8 @@ The postId is ${normalizedFeedbackPostId}. Use the feedback-progress-reporter sk
141917
142184
  const row = this.db.prepare("SELECT * FROM operations WHERE requester_session_id = ? AND operation_id = ?").get(requesterSessionId, operationId);
141918
142185
  return row === void 0 ? void 0 : this.decodeOperation(row);
141919
142186
  }
141920
- assertMatching(operation, kind, fingerprint) {
141921
- if (operation.kind !== kind || operation.fingerprint !== fingerprint) {
142187
+ assertMatching(operation, kind, fingerprint, requesterUserId, sourceTurnId) {
142188
+ if (operation.kind !== kind || operation.fingerprint !== fingerprint || operation.requesterUserId !== requesterUserId || operation.frozenContinuationConfig.sourceTurnId !== sourceTurnId) {
141922
142189
  throw new LodyOperationStoreError("OPERATION_ID_REUSED", `Operation id ${operation.operationId} is already bound to different input.`, false);
141923
142190
  }
141924
142191
  return operation;
@@ -142003,6 +142270,11 @@ The postId is ${normalizedFeedbackPostId}. Use the feedback-progress-reporter sk
142003
142270
  this.db.transaction(() => {
142004
142271
  this.db.prepare(`DELETE FROM operations
142005
142272
  WHERE state = 'finished'
142273
+ AND (kind NOT IN ('session_create', 'session_create_many') OR EXISTS (
142274
+ SELECT 1 FROM operation_progress_settlements p
142275
+ WHERE p.requester_session_id = operations.requester_session_id
142276
+ AND p.operation_id = operations.operation_id
142277
+ ))
142006
142278
  AND EXISTS (
142007
142279
  SELECT 1 FROM deliveries
142008
142280
  WHERE deliveries.requester_session_id = operations.requester_session_id
@@ -142070,6 +142342,14 @@ The postId is ${normalizedFeedbackPostId}. Use the feedback-progress-reporter sk
142070
142342
  ON DELETE CASCADE
142071
142343
  );
142072
142344
 
142345
+ CREATE TABLE IF NOT EXISTS operation_progress_settlements (
142346
+ requester_session_id TEXT NOT NULL,
142347
+ operation_id TEXT NOT NULL,
142348
+ PRIMARY KEY (requester_session_id, operation_id),
142349
+ FOREIGN KEY (requester_session_id, operation_id)
142350
+ REFERENCES operations (requester_session_id, operation_id) ON DELETE CASCADE
142351
+ );
142352
+
142073
142353
  CREATE TABLE IF NOT EXISTS orchestration_meta (
142074
142354
  key TEXT PRIMARY KEY,
142075
142355
  value TEXT NOT NULL
@@ -142099,6 +142379,126 @@ The postId is ${normalizedFeedbackPostId}. Use the feedback-progress-reporter sk
142099
142379
  }).immediate();
142100
142380
  }
142101
142381
  }
142382
+ const getOperationProgressTurnId = (requesterSessionId, operationId) => `operation-progress:${requesterSessionId}:${operationId}`;
142383
+ const getOperationProgressTargetKey = (target) => `${target.sessionId}\0${target.userTurnId}`;
142384
+ const progressStatusRank = (status) => status === "created" ? 0 : status === "running" ? 1 : 2;
142385
+ const progressStatusForItem = (item, statusByTarget, materializedTargets) => {
142386
+ if (!("target" in item) || !item.target) return null;
142387
+ const key2 = getOperationProgressTargetKey(item.target);
142388
+ const targetStatus = statusByTarget?.get(key2);
142389
+ const wasMaterialized = targetStatus !== void 0 || materializedTargets?.has(key2);
142390
+ if (item.status === "succeeded") return item.status;
142391
+ if (item.status === "failed" || item.status === "cancelled") {
142392
+ if (targetStatus) return targetStatus;
142393
+ if (!wasMaterialized) return null;
142394
+ return item.status === "failed" && item.error.code === "TARGET_TIMEOUT" ? "created" : item.status;
142395
+ }
142396
+ if (!item.inputDurable && !wasMaterialized) return null;
142397
+ return targetStatus ?? "created";
142398
+ };
142399
+ const buildOperationProgressContent = (operation, statusByTarget, materializedTargets) => {
142400
+ if (operation.kind !== "session_create" && operation.kind !== "session_create_many") return null;
142401
+ const items2 = operation.items.reduce((acc, item) => {
142402
+ const status = progressStatusForItem(item, statusByTarget, materializedTargets);
142403
+ if (!status || !("target" in item) || !item.target) return acc;
142404
+ acc.push({
142405
+ target: item.target,
142406
+ ...item.label ? {
142407
+ label: item.label
142408
+ } : {},
142409
+ status
142410
+ });
142411
+ return acc;
142412
+ }, []);
142413
+ if (items2.length === 0) return null;
142414
+ return {
142415
+ type: "operation_progress",
142416
+ operationId: operation.operationId,
142417
+ operationKind: operation.kind,
142418
+ items: items2
142419
+ };
142420
+ };
142421
+ const mergeProgressItem = (existing, next2) => {
142422
+ if (existing && (progressStatusRank(existing.status) === 2 || progressStatusRank(existing.status) > progressStatusRank(next2.status))) return existing;
142423
+ return {
142424
+ ...existing,
142425
+ ...next2
142426
+ };
142427
+ };
142428
+ const mergeOperationProgressContent = (existing, next2) => {
142429
+ const mergedItems = /* @__PURE__ */ new Map();
142430
+ for (const item of existing?.items ?? []) {
142431
+ mergedItems.set(getOperationProgressTargetKey(item.target), item);
142432
+ }
142433
+ for (const item of next2.items) {
142434
+ const key2 = getOperationProgressTargetKey(item.target);
142435
+ mergedItems.set(key2, mergeProgressItem(mergedItems.get(key2), item));
142436
+ }
142437
+ return {
142438
+ ...next2,
142439
+ items: [
142440
+ ...mergedItems.values()
142441
+ ]
142442
+ };
142443
+ };
142444
+ const upsertOperationProgressHistory = async (sessionDoc, operation, now2 = getServerNow, statusByTarget) => {
142445
+ if (operation.kind !== "session_create" && operation.kind !== "session_create_many") return;
142446
+ const id2 = getOperationProgressTurnId(operation.requesterSessionId, operation.operationId);
142447
+ const duplicatePrefix = `${id2}:duplicate:`;
142448
+ const doc = sessionDoc.handle?.doc;
142449
+ if (doc) {
142450
+ const list2 = doc.getList("history");
142451
+ let seen = false;
142452
+ let renamed = false;
142453
+ for (let index = 0; index < list2.length; index++) {
142454
+ const row = list2.get(index);
142455
+ if (row?.get("id") !== id2 || row.get("role") !== "system") continue;
142456
+ if (seen) {
142457
+ row.set("id", `${duplicatePrefix}${row.id}`);
142458
+ renamed = true;
142459
+ }
142460
+ seen = true;
142461
+ }
142462
+ if (renamed) doc.commit();
142463
+ }
142464
+ const isProgressRow = (entry) => entry.role === "system" && (entry.id === id2 || entry.id.startsWith(duplicatePrefix));
142465
+ const timestamp2 = new Date(now2()).toISOString();
142466
+ await sessionDoc.updateHistory((history) => {
142467
+ const existingIndex = history.findIndex((entry2) => entry2.id === id2 && entry2.role === "system");
142468
+ const duplicates = history.filter(isProgressRow);
142469
+ const existing = duplicates[0];
142470
+ const existingProgress = duplicates.flatMap((entry2) => entry2.items ?? []).filter((item) => item.type === "operation_progress").reduce((merged2, item) => mergeOperationProgressContent(merged2, item), void 0);
142471
+ const materializedTargets = new Set((existingProgress?.items ?? []).map((item) => getOperationProgressTargetKey(item.target)));
142472
+ const content = buildOperationProgressContent(operation, statusByTarget, materializedTargets);
142473
+ if (!content) return history;
142474
+ const merged = mergeOperationProgressContent(existingProgress, content);
142475
+ const nextItems = [
142476
+ merged
142477
+ ];
142478
+ if (duplicates.length === 1 && existing && JSON.stringify(existing.items ?? []) === JSON.stringify(nextItems)) {
142479
+ return history;
142480
+ }
142481
+ const entry = {
142482
+ ...existing ?? {},
142483
+ id: id2,
142484
+ role: "system",
142485
+ userId: operation.requesterUserId,
142486
+ timestamp: existing?.timestamp ?? timestamp2,
142487
+ items: nextItems,
142488
+ fileDiff: existing?.fileDiff ?? [],
142489
+ finished: true
142490
+ };
142491
+ if (existingIndex < 0) return [
142492
+ ...history,
142493
+ entry
142494
+ ];
142495
+ return history.flatMap((candidate, index) => index === existingIndex ? [
142496
+ entry
142497
+ ] : isProgressRow(candidate) ? [] : [
142498
+ candidate
142499
+ ]);
142500
+ });
142501
+ };
142102
142502
  const TARGET_OUTPUT_PREVIEW_MAX_BYTES = 8 * 1024;
142103
142503
  const MATERIALIZATION_RETRY_MIN_MS = 1e3;
142104
142504
  const MATERIALIZATION_RETRY_MAX_MS = 3e4;
@@ -142168,6 +142568,7 @@ The postId is ${normalizedFeedbackPostId}. Use the feedback-progress-reporter sk
142168
142568
  metaWatch = null;
142169
142569
  store = null;
142170
142570
  storeWatch = null;
142571
+ progressRetryTimer = null;
142171
142572
  storeWakeTimer = null;
142172
142573
  started = false;
142173
142574
  materializationClaimToken = randomUUID();
@@ -142206,6 +142607,8 @@ The postId is ${normalizedFeedbackPostId}. Use the feedback-progress-reporter sk
142206
142607
  this.storeWatch = null;
142207
142608
  if (this.storeWakeTimer) clearTimeout(this.storeWakeTimer);
142208
142609
  this.storeWakeTimer = null;
142610
+ if (this.progressRetryTimer) clearTimeout(this.progressRetryTimer);
142611
+ this.progressRetryTimer = null;
142209
142612
  this.store?.close();
142210
142613
  this.store = null;
142211
142614
  for (const subscription of this.targetSubscriptions.values()) {
@@ -142267,6 +142670,20 @@ The postId is ${normalizedFeedbackPostId}. Use the feedback-progress-reporter sk
142267
142670
  for (const operation of active2) {
142268
142671
  await this.reconcileOperation(operation);
142269
142672
  }
142673
+ const pendingProgress = this.withStore((store) => store.listPendingProgress(this.options.workspaceId, this.options.machineId));
142674
+ for (const operation of pendingProgress) await this.writeOperationProgress(operation);
142675
+ if (this.withStore((store) => store.listPendingProgress(this.options.workspaceId, this.options.machineId)).length > 0) {
142676
+ if (!this.progressRetryTimer) {
142677
+ this.progressRetryTimer = setTimeout(() => {
142678
+ this.progressRetryTimer = null;
142679
+ void this.wake("progress-retry");
142680
+ }, 5e3);
142681
+ this.progressRetryTimer.unref?.();
142682
+ }
142683
+ } else if (this.progressRetryTimer) {
142684
+ clearTimeout(this.progressRetryTimer);
142685
+ this.progressRetryTimer = null;
142686
+ }
142270
142687
  const pendingDeliveries = this.withStore((store) => store.listPendingDeliveries(this.options.workspaceId));
142271
142688
  for (const delivery of pendingDeliveries) {
142272
142689
  this.enqueueDelivery(delivery, reason);
@@ -142292,9 +142709,11 @@ The postId is ${normalizedFeedbackPostId}. Use the feedback-progress-reporter sk
142292
142709
  return;
142293
142710
  }
142294
142711
  const changed = JSON.stringify(items2) !== JSON.stringify(operation.items);
142712
+ let latestOperation = operation;
142295
142713
  if (changed) {
142296
- this.withStore((store) => store.updateItems(operation.requesterSessionId, operation.operationId, items2));
142714
+ latestOperation = this.withStore((store) => store.updateItems(operation.requesterSessionId, operation.operationId, items2));
142297
142715
  }
142716
+ await this.writeOperationProgress(latestOperation);
142298
142717
  if (items2.every((item) => item.status !== "active")) {
142299
142718
  const completion = {
142300
142719
  type: "result",
@@ -142302,11 +142721,89 @@ The postId is ${normalizedFeedbackPostId}. Use the feedback-progress-reporter sk
142302
142721
  items: items2
142303
142722
  }
142304
142723
  };
142305
- this.withStore((store) => store.finish(operation.requesterSessionId, operation.operationId, completion));
142724
+ latestOperation = this.withStore((store) => store.finish(operation.requesterSessionId, operation.operationId, completion));
142725
+ await this.writeOperationProgress(latestOperation);
142306
142726
  this.clearDeadline(operation);
142307
142727
  this.clearOperationMaterializationRetries(operation);
142308
142728
  }
142309
142729
  }
142730
+ async writeOperationProgress(operation) {
142731
+ const ownerStore = this.store;
142732
+ if (!ownerStore) return;
142733
+ try {
142734
+ if (operation.kind !== "session_create" && operation.kind !== "session_create_many") return;
142735
+ const metaRecord = await this.options.workspaceDocument.repo.getDocMeta(getSessionRoomId(operation.requesterSessionId));
142736
+ if (!metaRecord?.meta || isLoroRepoDocDeleted(metaRecord)) return;
142737
+ const sessionDoc = await this.options.workspaceDocument.getOrCreateSessionDoc(operation.requesterSessionId);
142738
+ const statusByTarget = await this.collectOperationProgressTargetStatuses(operation);
142739
+ if (!this.started || this.store !== ownerStore) return;
142740
+ await upsertOperationProgressHistory(sessionDoc, operation, this.now, statusByTarget);
142741
+ if (operation.state === "finished" && this.progressIsSettled(operation, await sessionDoc.getHistory(), statusByTarget)) {
142742
+ await this.options.workspaceDocument.repo.flush();
142743
+ if (!this.started || this.store !== ownerStore) return;
142744
+ this.withStore((store) => store.settleProgress(operation.requesterSessionId, operation.operationId));
142745
+ }
142746
+ } catch (error2) {
142747
+ this.options.logger.warn(`[orchestration] Progress update failed for ${operation.operationId}; retrying on a later wake: ${error2 instanceof Error ? error2.message : String(error2)}`);
142748
+ }
142749
+ }
142750
+ progressIsSettled(operation, history, observed) {
142751
+ const row = history.find((entry) => entry.id === getOperationProgressTurnId(operation.requesterSessionId, operation.operationId));
142752
+ const content = row?.items?.find((item) => item.type === "operation_progress");
142753
+ const published = new Map((content?.items ?? []).map((item) => [
142754
+ getOperationProgressTargetKey(item.target),
142755
+ item.status
142756
+ ]));
142757
+ const expected = new Map(observed);
142758
+ for (const item of operation.items) {
142759
+ if (!("target" in item) || !item.target) continue;
142760
+ const key2 = getOperationProgressTargetKey(item.target);
142761
+ if (expected.has(key2)) continue;
142762
+ if (item.status === "succeeded" || item.status === "cancelled" || item.status === "failed" && item.error.code === "TARGET_FAILED") {
142763
+ if (item.status === "succeeded" || published.has(key2)) expected.set(key2, item.status);
142764
+ } else if (item.status === "active" && item.inputDurable) expected.set(key2, "created");
142765
+ }
142766
+ if (published.size !== expected.size) return false;
142767
+ return [
142768
+ ...expected
142769
+ ].every(([key2, status]) => status !== "created" && status !== "running" && published.get(key2) === status);
142770
+ }
142771
+ async collectOperationProgressTargetStatuses(operation) {
142772
+ const statuses = /* @__PURE__ */ new Map();
142773
+ await this.mapItemsWithConcurrency(operation.items, 5, async (item) => {
142774
+ if (!("target" in item) || !item.target) return;
142775
+ if (item.status === "active" && !item.inputDurable) return;
142776
+ const target = item.target;
142777
+ const metaRecord = await this.options.workspaceDocument.repo.getDocMeta(getSessionRoomId(target.sessionId));
142778
+ if (!metaRecord?.meta || isLoroRepoDocDeleted(metaRecord)) return;
142779
+ const meta = metaRecord.meta;
142780
+ const sessionDoc = await this.options.workspaceDocument.getOrCreateSessionDoc(target.sessionId);
142781
+ this.subscribeTarget(target.sessionId, sessionDoc);
142782
+ const history = await sessionDoc.getHistory();
142783
+ const userTurn = history.find((entry) => entry.id === target.userTurnId && entry.role === "user");
142784
+ if (!userTurn) return;
142785
+ const key2 = getOperationProgressTargetKey(target);
142786
+ if (userTurn.status === "failed") {
142787
+ statuses.set(key2, "failed");
142788
+ return;
142789
+ }
142790
+ if (userTurn.status === "canceled") {
142791
+ statuses.set(key2, "cancelled");
142792
+ return;
142793
+ }
142794
+ if (terminalAssistantFor(history, target.userTurnId)) {
142795
+ statuses.set(key2, "succeeded");
142796
+ return;
142797
+ }
142798
+ const execution = this.options.executionService.getExecutionSnapshot(target.sessionId);
142799
+ if (execution.activeTurnId === `assistant:${target.userTurnId}` || meta.processingUserMsgId === target.userTurnId || userTurn.status === "processing") {
142800
+ statuses.set(key2, "running");
142801
+ return;
142802
+ }
142803
+ statuses.set(key2, "created");
142804
+ });
142805
+ return statuses;
142806
+ }
142310
142807
  async reconcileItem(operation, item, index, isAtDeadline, signal) {
142311
142808
  if (item.status !== "active") return item;
142312
142809
  if (signal.aborted) return item;
@@ -142365,7 +142862,8 @@ The postId is ${normalizedFeedbackPostId}. Use the feedback-progress-reporter sk
142365
142862
  error: makeLodyError("TARGET_TIMEOUT", "Target input was not durably materialized before the Operation deadline.", false)
142366
142863
  };
142367
142864
  }
142368
- this.withStore((store) => store.markItemInputDurable(operation.requesterSessionId, operation.operationId, index, claimedMaterialization ? this.materializationClaimToken : void 0));
142865
+ const materializedOperation = this.withStore((store) => store.markItemInputDurable(operation.requesterSessionId, operation.operationId, index, claimedMaterialization ? this.materializationClaimToken : void 0));
142866
+ await this.writeOperationProgress(materializedOperation);
142369
142867
  this.clearMaterializationRetry(operation, index);
142370
142868
  item = {
142371
142869
  ...item,
@@ -142446,7 +142944,7 @@ The postId is ${normalizedFeedbackPostId}. Use the feedback-progress-reporter sk
142446
142944
  return meta.latestUserMsgId === userTurnId || meta.processingUserMsgId === userTurnId || meta.lastHandledUserMsgId === userTurnId || userTurn.status === "handled" || userTurn.status === "failed" || userTurn.status === "canceled" || terminalAssistantFor(history, userTurnId) !== void 0;
142447
142945
  }
142448
142946
  subscribeTarget(sessionId, sessionDoc) {
142449
- if (this.targetSubscriptions.has(sessionId)) return;
142947
+ if (!this.started || this.targetSubscriptions.has(sessionId)) return;
142450
142948
  const unsubscribe = sessionDoc.mirror?.subscribe(() => {
142451
142949
  void this.wake("target-history");
142452
142950
  }) ?? (() => {
@@ -142754,11 +143252,15 @@ The postId is ${normalizedFeedbackPostId}. Use the feedback-progress-reporter sk
142754
143252
  if (!operation.completion) {
142755
143253
  throw new Error(`Finished Operation ${operation.operationId} has no completion.`);
142756
143254
  }
143255
+ const progressMessageId = this.findProgressMessageId(await sessionDoc.getHistory(), operation);
142757
143256
  const item = {
142758
143257
  type: "operation_completion",
142759
143258
  deliveryId: delivery.deliveryId,
142760
143259
  operationId: operation.operationId,
142761
143260
  operationKind: operation.kind,
143261
+ ...progressMessageId ? {
143262
+ progressMessageId
143263
+ } : {},
142762
143264
  completion: operation.completion,
142763
143265
  ...!configAvailable ? {
142764
143266
  continuation: {
@@ -142773,6 +143275,7 @@ The postId is ${normalizedFeedbackPostId}. Use the feedback-progress-reporter sk
142773
143275
  const turn = {
142774
143276
  id: delivery.systemTurnId,
142775
143277
  role: "system",
143278
+ userId: operation.requesterUserId,
142776
143279
  timestamp: new Date(this.now()).toISOString(),
142777
143280
  items: [
142778
143281
  item
@@ -142790,6 +143293,25 @@ The postId is ${normalizedFeedbackPostId}. Use the feedback-progress-reporter sk
142790
143293
  turn
142791
143294
  ]);
142792
143295
  }
143296
+ findProgressMessageId(history, operation) {
143297
+ if (operation.kind !== "session_create" && operation.kind !== "session_create_many") {
143298
+ return void 0;
143299
+ }
143300
+ const progressMessageId = getOperationProgressTurnId(operation.requesterSessionId, operation.operationId);
143301
+ const progress = history.find((entry) => entry.id === progressMessageId && entry.role === "system")?.items?.find((item) => item.type === "operation_progress" && item.operationId === operation.operationId);
143302
+ if (progress?.type !== "operation_progress") return void 0;
143303
+ const covered = new Map(progress.items.map((item) => [
143304
+ getOperationProgressTargetKey(item.target),
143305
+ item.status
143306
+ ]));
143307
+ const completion = operation.completion;
143308
+ const results = completion?.type === "result" ? completion.value.items : completion?.type === "cancelled" ? completion.partial?.items ?? [] : [];
143309
+ const complete2 = [
143310
+ ...operation.items,
143311
+ ...results
143312
+ ].every((item) => item.status === "succeeded" ? covered.get(getOperationProgressTargetKey(item.target)) === "succeeded" : item.status === "active" && item.inputDurable ? covered.has(getOperationProgressTargetKey(item.target)) : true);
143313
+ return complete2 ? progressMessageId : void 0;
143314
+ }
142793
143315
  getContinuationEvidence(history, systemTurnId) {
142794
143316
  const index = history.findIndex((entry) => entry.id === systemTurnId && entry.role === "system");
142795
143317
  if (index < 0) return null;
@@ -154639,6 +155161,9 @@ ${edit.newString}` : edit.newString;
154639
155161
  deliveryId: item.deliveryId,
154640
155162
  operationId: item.operationId,
154641
155163
  operationKind: item.operationKind,
155164
+ ...item.progressMessageId ? {
155165
+ progressMessageId: item.progressMessageId
155166
+ } : {},
154642
155167
  completion: item.completion,
154643
155168
  ...item.continuation ? {
154644
155169
  continuation: item.continuation
@@ -155622,13 +156147,25 @@ ${entry.text}`).join("\n\n");
155622
156147
  }
155623
156148
  }
155624
156149
  async function readSessionMachineAccess(args2) {
155625
- const requesterUserId = resolveSessionCommandRequesterUserId(args2.auth, args2.requesterUserId);
156150
+ const requester = resolveSessionRequester(args2.auth, args2.requesterUserId, args2.delegatedRequester);
156151
+ return await readResolvedSessionMachineAccess({
156152
+ auth: args2.auth,
156153
+ workspaceId: args2.workspaceId,
156154
+ machineId: args2.machineId,
156155
+ requester,
156156
+ ...args2.localProjectId ? {
156157
+ localProjectId: args2.localProjectId
156158
+ } : {}
156159
+ });
156160
+ }
156161
+ async function readResolvedSessionMachineAccess(args2) {
155626
156162
  try {
155627
- return await canRequestMachineForCliToken({
156163
+ const readAccess = args2.requester.isDelegated ? canUseMachineForCliToken : canRequestMachineForCliToken;
156164
+ return await readAccess({
155628
156165
  token: args2.auth.token,
155629
156166
  workspaceId: args2.workspaceId,
155630
156167
  machineId: args2.machineId,
155631
- requesterUserId,
156168
+ requesterUserId: args2.requester.userId,
155632
156169
  ...args2.localProjectId ? {
155633
156170
  localProjectId: args2.localProjectId
155634
156171
  } : {}
@@ -155640,7 +156177,7 @@ ${entry.text}`).join("\n\n");
155640
156177
  }
155641
156178
  }
155642
156179
  async function assertMachineAccess(args2) {
155643
- const access = await readSessionMachineAccess(args2);
156180
+ const access = await readResolvedSessionMachineAccess(args2);
155644
156181
  if (!access.allowed) {
155645
156182
  throw new Error(`Machine access denied for ${args2.machineId}: ${access.reason}`);
155646
156183
  }
@@ -155714,6 +156251,26 @@ ${entry.text}`).join("\n\n");
155714
156251
  }
155715
156252
  return auth.userId;
155716
156253
  }
156254
+ function resolveSessionRequester(auth, requesterUserId, delegatedRequester) {
156255
+ if (!delegatedRequester) {
156256
+ return {
156257
+ userId: resolveSessionCommandRequesterUserId(auth, requesterUserId),
156258
+ isDelegated: false
156259
+ };
156260
+ }
156261
+ const delegatedUserId = normalizeCliValue(delegatedRequester.userId);
156262
+ if (!delegatedUserId) {
156263
+ throw new Error("Delegated Session requester must identify a user.");
156264
+ }
156265
+ const requested = normalizeCliValue(requesterUserId);
156266
+ if (requested !== void 0 && requested !== delegatedUserId) {
156267
+ throw new Error("Requester identity must match the delegated Session requester.");
156268
+ }
156269
+ return {
156270
+ userId: delegatedUserId,
156271
+ isDelegated: true
156272
+ };
156273
+ }
155717
156274
  function resolveSessionCreateOwnerUserId(requesterUserId, sessionOwnerUserId) {
155718
156275
  return normalizeCliValue(sessionOwnerUserId) ?? requesterUserId;
155719
156276
  }
@@ -155740,11 +156297,11 @@ ${entry.text}`).join("\n\n");
155740
156297
  async function listAuthorizedMachineMetasForCreate(args2) {
155741
156298
  const rows = await Promise.all(args2.machines.map(async (machine) => ({
155742
156299
  machine,
155743
- access: await readSessionMachineAccess({
156300
+ access: await readResolvedSessionMachineAccess({
155744
156301
  auth: args2.auth,
155745
156302
  workspaceId: args2.workspaceId,
155746
156303
  machineId: machine.id,
155747
- requesterUserId: args2.requesterUserId
156304
+ requester: args2.requester
155748
156305
  })
155749
156306
  })));
155750
156307
  return filterAuthorizedMachineMetas(rows.map((row) => row.machine), new Set(rows.filter((row) => row.access.allowed).map((row) => row.machine.id)));
@@ -155752,11 +156309,11 @@ ${entry.text}`).join("\n\n");
155752
156309
  async function filterAuthorizedLocalProjectsForCreate(args2) {
155753
156310
  const rows = await Promise.all(args2.localProjects.map(async (project) => ({
155754
156311
  project,
155755
- access: await readSessionMachineAccess({
156312
+ access: await readResolvedSessionMachineAccess({
155756
156313
  auth: args2.auth,
155757
156314
  workspaceId: args2.workspaceId,
155758
156315
  machineId: args2.machineId,
155759
- requesterUserId: args2.requesterUserId,
156316
+ requester: args2.requester,
155760
156317
  localProjectId: project.id
155761
156318
  })
155762
156319
  })));
@@ -155771,7 +156328,7 @@ ${entry.text}`).join("\n\n");
155771
156328
  auth: args2.auth,
155772
156329
  workspaceId: args2.workspaceId,
155773
156330
  machines,
155774
- requesterUserId: args2.requesterUserId
156331
+ requester: args2.requester
155775
156332
  });
155776
156333
  if (authorizedMachines.length === 0) {
155777
156334
  throw new Error("No authorized machines are available in this workspace.");
@@ -155837,7 +156394,7 @@ ${entry.text}`).join("\n\n");
155837
156394
  const repos = await listWorkspaceGitHubRepositoriesForCliToken({
155838
156395
  token: args2.auth.token,
155839
156396
  workspaceId: args2.workspaceId,
155840
- requesterUserId: resolveSessionCommandRequesterUserId(args2.auth, args2.requesterUserId),
156397
+ requesterUserId: args2.requesterUserId,
155841
156398
  enabledOnly: true
155842
156399
  });
155843
156400
  const normalized = args2.repoFullName.toLowerCase();
@@ -155861,7 +156418,7 @@ ${entry.text}`).join("\n\n");
155861
156418
  }
155862
156419
  const response2 = await withMachineRpcClient(args2, async (client2) => await client2.requestLocalProjectGitState({
155863
156420
  localProjectId: args2.localProjectId,
155864
- requestedByUserId: resolveSessionCommandRequesterUserId(args2.auth, args2.requesterUserId),
156421
+ requestedByUserId: args2.requesterUserId,
155865
156422
  timeoutMs: 3e4
155866
156423
  }));
155867
156424
  if (!response2) {
@@ -155923,7 +156480,7 @@ ${entry.text}`).join("\n\n");
155923
156480
  return await listWorkspaceGitHubRepositoriesForCliToken({
155924
156481
  token: args2.auth.token,
155925
156482
  workspaceId: args2.workspaceId,
155926
- requesterUserId: resolveSessionCommandRequesterUserId(args2.auth, args2.requesterUserId),
156483
+ requesterUserId: args2.requesterUserId,
155927
156484
  enabledOnly: true
155928
156485
  });
155929
156486
  } catch (error2) {
@@ -155951,7 +156508,7 @@ ${entry.text}`).join("\n\n");
155951
156508
  } : {}
155952
156509
  });
155953
156510
  }
155954
- async function resolveLocalProjectRefOnMachineOrThrow(manager, workspaceId, auth, machineId, selector, requesterUserId, requestedBranch, useWorktree) {
156511
+ async function resolveLocalProjectRefOnMachineOrThrow(manager, workspaceId, auth, machineId, selector, requester, requestedBranch, useWorktree) {
155955
156512
  await syncMachineFlockDocsForRead(manager, workspaceId, [
155956
156513
  machineId
155957
156514
  ], "session.local-projects");
@@ -155964,7 +156521,7 @@ ${entry.text}`).join("\n\n");
155964
156521
  workspaceId,
155965
156522
  machineId,
155966
156523
  localProjects,
155967
- requesterUserId
156524
+ requester
155968
156525
  });
155969
156526
  if (authorizedLocalProjects.length === 0) {
155970
156527
  throw new Error("No authorized local projects are available on the target machine.");
@@ -155987,7 +156544,7 @@ ${entry.text}`).join("\n\n");
155987
156544
  machineId,
155988
156545
  localProjectId: project.id,
155989
156546
  localRootPath: project.rootPath,
155990
- requesterUserId,
156547
+ requesterUserId: requester.userId,
155991
156548
  requestedBranch,
155992
156549
  useWorktree
155993
156550
  });
@@ -156050,7 +156607,7 @@ ${entry.text}`).join("\n\n");
156050
156607
  async function resolveCreateContext(args2) {
156051
156608
  const workspaceId = args2.workspace.id;
156052
156609
  const agentSelector = resolveCreateAgentSelector(args2.options);
156053
- const requesterUserId = resolveSessionCommandRequesterUserId(args2.auth, args2.options.requesterUserId);
156610
+ const requesterUserId = args2.requester.userId;
156054
156611
  const parentSelector = normalizeCliValue(args2.options.parent);
156055
156612
  const currentSessionId = resolveCreateCurrentSessionId(args2.options);
156056
156613
  if (parentSelector && args2.options.useCurrentSessionAsParent === true) {
@@ -156076,14 +156633,14 @@ ${entry.text}`).join("\n\n");
156076
156633
  auth: args2.auth,
156077
156634
  machineSelector: args2.options.machine,
156078
156635
  defaultMachineId: args2.options.defaultMachineId,
156079
- requesterUserId,
156636
+ requester: args2.requester,
156080
156637
  parentSessionId
156081
156638
  });
156082
156639
  await assertMachineAccess({
156083
156640
  auth: args2.auth,
156084
156641
  workspaceId,
156085
156642
  machineId: targetMachine.id,
156086
- requesterUserId
156643
+ requester: args2.requester
156087
156644
  });
156088
156645
  if (args2.skipMachineAvailabilityCheck !== true) {
156089
156646
  await ensureTargetMachineOnline({
@@ -156137,13 +156694,13 @@ ${entry.text}`).join("\n\n");
156137
156694
  branch
156138
156695
  };
156139
156696
  } else if (normalizedLocalProject) {
156140
- project = await resolveLocalProjectRefOnMachineOrThrow(args2.manager, workspaceId, args2.auth, targetMachine.id, normalizedLocalProject, requesterUserId, requestedBranch, args2.options.worktree === true);
156697
+ project = await resolveLocalProjectRefOnMachineOrThrow(args2.manager, workspaceId, args2.auth, targetMachine.id, normalizedLocalProject, args2.requester, requestedBranch, args2.options.worktree === true);
156141
156698
  }
156142
156699
  await assertMachineAccess({
156143
156700
  auth: args2.auth,
156144
156701
  workspaceId,
156145
156702
  machineId: targetMachine.id,
156146
- requesterUserId,
156703
+ requester: args2.requester,
156147
156704
  localProjectId: project?.kind === "local" ? project.localProjectId : void 0
156148
156705
  });
156149
156706
  return {
@@ -156162,7 +156719,11 @@ ${entry.text}`).join("\n\n");
156162
156719
  };
156163
156720
  }
156164
156721
  async function validateSessionCreateOptions(args2) {
156165
- const resolved = await resolveCreateContext(args2);
156722
+ const requester = resolveSessionRequester(args2.auth, args2.options.requesterUserId, args2.options.delegatedRequester);
156723
+ const resolved = await resolveCreateContext({
156724
+ ...args2,
156725
+ requester
156726
+ });
156166
156727
  return await resolveEffectiveSessionCreateDispatchConfig({
156167
156728
  manager: args2.manager,
156168
156729
  workspaceId: args2.workspace.id,
@@ -156265,13 +156826,15 @@ ${entry.text}`).join("\n\n");
156265
156826
  sessionId: options.sessionId
156266
156827
  });
156267
156828
  }
156268
- const requesterUserId = resolveSessionCommandRequesterUserId(auth, options.requesterUserId);
156829
+ const requester = resolveSessionRequester(auth, options.requesterUserId, options.delegatedRequester);
156830
+ const requesterUserId = requester.userId;
156269
156831
  const sessionOwnerUserId = resolveSessionCreateOwnerUserId(requesterUserId, options.sessionOwnerUserId);
156270
156832
  const resolved = await resolveCreateContext({
156271
156833
  auth,
156272
156834
  workspace,
156273
156835
  manager,
156274
- options
156836
+ options,
156837
+ requester
156275
156838
  });
156276
156839
  const { targetMachine, agentConfig, project, parentSessionId, openedBySessionId, openedByRootSessionId, taskId } = resolved;
156277
156840
  const effectiveDispatchConfig = await resolveEffectiveSessionCreateDispatchConfig({
@@ -156432,8 +156995,17 @@ ${entry.text}`).join("\n\n");
156432
156995
  }
156433
156996
  }
156434
156997
  async function validateSessionChatTarget(args2) {
156998
+ const requester = resolveSessionRequester(args2.auth, args2.requesterUserIdOverride, args2.delegatedRequester);
156999
+ return await validateSessionChatTargetForRequester({
157000
+ auth: args2.auth,
157001
+ workspace: args2.workspace,
157002
+ manager: args2.manager,
157003
+ sessionId: args2.sessionId,
157004
+ requester
157005
+ });
157006
+ }
157007
+ async function validateSessionChatTargetForRequester(args2) {
156435
157008
  await syncWorkspaceMetaForRead(args2.manager, `session.chat:${args2.sessionId}:prewrite:meta`);
156436
- const requesterUserId = resolveSessionCommandRequesterUserId(args2.auth, args2.requesterUserIdOverride);
156437
157009
  const session2 = await resolveSessionMetaOrThrow(args2.manager, args2.sessionId);
156438
157010
  if (session2.isArchived) {
156439
157011
  throw new Error(`Session ${args2.sessionId} is archived. Restore it before chatting.`);
@@ -156442,7 +157014,7 @@ ${entry.text}`).join("\n\n");
156442
157014
  auth: args2.auth,
156443
157015
  workspaceId: args2.workspace.id,
156444
157016
  machineId: session2.machineId,
156445
- requesterUserId,
157017
+ requester: args2.requester,
156446
157018
  localProjectId: session2.project?.kind === "local" ? session2.project.localProjectId : void 0
156447
157019
  });
156448
157020
  await ensureTargetMachineOnline({
@@ -156452,14 +157024,15 @@ ${entry.text}`).join("\n\n");
156452
157024
  });
156453
157025
  return session2;
156454
157026
  }
156455
- async function sendSessionChatResult(auth, workspace, manager, sessionId, prompt2, dispatchConfig, structuredOutput, requesterUserIdOverride, orchestration) {
156456
- const requesterUserId = resolveSessionCommandRequesterUserId(auth, requesterUserIdOverride);
156457
- const session2 = await validateSessionChatTarget({
157027
+ async function sendSessionChatResult(auth, workspace, manager, sessionId, prompt2, dispatchConfig, structuredOutput, requesterUserIdOverride, orchestration, delegatedRequester) {
157028
+ const requester = resolveSessionRequester(auth, requesterUserIdOverride, delegatedRequester);
157029
+ const requesterUserId = requester.userId;
157030
+ const session2 = await validateSessionChatTargetForRequester({
156458
157031
  auth,
156459
157032
  workspace,
156460
157033
  manager,
156461
157034
  sessionId,
156462
- requesterUserIdOverride
157035
+ requester
156463
157036
  });
156464
157037
  if (dispatchConfig.modeId || dispatchConfig.modelId || dispatchConfig.configOptionValues) {
156465
157038
  const capability = await readAgentAcpCapability({
@@ -157111,6 +157684,7 @@ ${entry.text}`).join("\n\n");
157111
157684
  auth,
157112
157685
  workspaceId,
157113
157686
  machineId: session2.machineId,
157687
+ requester: resolveSessionRequester(auth),
157114
157688
  localProjectId: session2.project?.kind === "local" ? session2.project.localProjectId : void 0
157115
157689
  });
157116
157690
  const turnId = await resolveRunningAssistantTurnId(manager, sessionId);
@@ -157564,6 +158138,7 @@ ${entry.text}`).join("\n\n");
157564
158138
  resolveRenameArgs,
157565
158139
  resolveSessionCommandRequesterUserId,
157566
158140
  resolveSessionCreateOwnerUserId,
158141
+ resolveSessionRequester,
157567
158142
  resolveTurnDispatchConfig,
157568
158143
  resolveTurnDispatchConfigFromInputConfig,
157569
158144
  rollbackPendingSessionCreate,
@@ -161075,11 +161650,32 @@ ${entry.text}`).join("\n\n");
161075
161650
  };
161076
161651
  }
161077
161652
  limits;
161078
- async previewFile(request2, options = {}) {
161079
- const limits = options.sameMachine ? {
161080
- ...FILE_PREVIEW_V3_LOCAL_LIMITS,
161081
- ...this.deps.limits
161082
- } : this.limits;
161653
+ async resolveLocalFile(request2) {
161654
+ const workspace = await this.deps.resolveWorkspace(request2.sessionId);
161655
+ if (!workspace.ok) return filePreviewV3Error(workspace.code, {
161656
+ message: workspace.message
161657
+ });
161658
+ const resolution = resolveFilePreviewPath({
161659
+ workspaceRoot: workspace.workspaceRoot,
161660
+ requestedPath: request2.path,
161661
+ options: {
161662
+ ...this.deps.pathPolicy,
161663
+ allowArbitraryPaths: true
161664
+ }
161665
+ });
161666
+ if (!resolution.ok) return filePreviewV3Error(resolution.rejection.code, {
161667
+ message: resolution.rejection.message,
161668
+ path: request2.path
161669
+ });
161670
+ return {
161671
+ status: "local-file",
161672
+ path: resolution.resolved.reportedPath,
161673
+ absolutePath: resolution.resolved.absolutePath,
161674
+ external: resolution.resolved.external
161675
+ };
161676
+ }
161677
+ async previewFile(request2) {
161678
+ const limits = this.limits;
161083
161679
  const workspace = await this.deps.resolveWorkspace(request2.sessionId);
161084
161680
  if (!workspace.ok) {
161085
161681
  return filePreviewV3Error(workspace.code, {
@@ -161095,10 +161691,7 @@ ${entry.text}`).join("\n\n");
161095
161691
  extraRoots: this.deps.extraRoots
161096
161692
  },
161097
161693
  options: {
161098
- ...this.deps.pathPolicy,
161099
- ...options.allowArbitraryPaths ? {
161100
- allowArbitraryPaths: true
161101
- } : {}
161694
+ ...this.deps.pathPolicy
161102
161695
  }
161103
161696
  });
161104
161697
  if (!resolution.ok) {
@@ -161163,13 +161756,13 @@ ${entry.text}`).join("\n\n");
161163
161756
  };
161164
161757
  }
161165
161758
  if (isImageByName || hasBinaryNul(bytes)) {
161166
- return this.binaryOk(resolved, bytes, digest, limits, options.sameMachine === true);
161759
+ return this.binaryOk(resolved, bytes, digest, limits);
161167
161760
  }
161168
161761
  let text;
161169
161762
  try {
161170
161763
  text = decodeUtf8(bytes);
161171
161764
  } catch {
161172
- return this.binaryOk(resolved, bytes, digest, limits, options.sameMachine === true);
161765
+ return this.binaryOk(resolved, bytes, digest, limits);
161173
161766
  }
161174
161767
  let content;
161175
161768
  try {
@@ -161182,15 +161775,6 @@ ${entry.text}`).join("\n\n");
161182
161775
  limitBytes: limits.maxCompressedBytes
161183
161776
  });
161184
161777
  }
161185
- const payloadOverflow = options.sameMachine ? measurePayloadOverflow(content, FILE_PREVIEW_LOCAL_PAYLOAD_BUDGET_BYTES) : null;
161186
- if (payloadOverflow !== null) {
161187
- return filePreviewV3Error("too_large", {
161188
- message: "File is too large to preview.",
161189
- path: resolved.reportedPath,
161190
- sizeBytes: bytes.byteLength,
161191
- limitBytes: FILE_PREVIEW_LOCAL_PAYLOAD_BUDGET_BYTES
161192
- });
161193
- }
161194
161778
  return {
161195
161779
  status: "ok",
161196
161780
  v: FILE_PREVIEW_PROTOCOL_VERSION,
@@ -161206,7 +161790,7 @@ ${entry.text}`).join("\n\n");
161206
161790
  readonly: true
161207
161791
  };
161208
161792
  }
161209
- binaryOk(resolved, bytes, digest, limits, sameMachine) {
161793
+ binaryOk(resolved, bytes, digest, limits) {
161210
161794
  if (bytes.byteLength > limits.maxBinaryBytes) {
161211
161795
  return filePreviewV3Error("too_large", {
161212
161796
  message: "Binary file is too large to preview.",
@@ -161216,14 +161800,6 @@ ${entry.text}`).join("\n\n");
161216
161800
  });
161217
161801
  }
161218
161802
  const data = Buffer.from(bytes).toString("base64");
161219
- if (sameMachine && data.length > FILE_PREVIEW_LOCAL_PAYLOAD_BUDGET_BYTES) {
161220
- return filePreviewV3Error("too_large", {
161221
- message: "Binary file is too large to preview.",
161222
- path: resolved.reportedPath,
161223
- sizeBytes: bytes.byteLength,
161224
- limitBytes: FILE_PREVIEW_LOCAL_PAYLOAD_BUDGET_BYTES
161225
- });
161226
- }
161227
161803
  const mimeType = getImageMimeTypeForPath(resolved.reportedPath);
161228
161804
  return {
161229
161805
  status: "ok",
@@ -161264,10 +161840,6 @@ ${entry.text}`).join("\n\n");
161264
161840
  };
161265
161841
  }
161266
161842
  }
161267
- function measurePayloadOverflow(content, budgetBytes) {
161268
- const encodedBytes = content.encoding === "utf8-plain" ? Buffer.byteLength(JSON.stringify(content.text), "utf8") : content.data.length;
161269
- return encodedBytes > budgetBytes ? encodedBytes - budgetBytes : null;
161270
- }
161271
161843
  async function readFileWithinLimit(absolutePath, limitBytes) {
161272
161844
  const handle = await open(absolutePath, "r");
161273
161845
  try {
@@ -165629,7 +166201,7 @@ ${escapeHtmlScriptContent(VISUAL_ANNOTATION_INSPECTOR_BROWSER_SCRIPT)}
165629
166201
  retryable: false
165630
166202
  };
165631
166203
  }
165632
- if (host !== "localhost" && require$$0$9.isIP(host) === 0) {
166204
+ if (host !== "localhost" && require$$0$a.isIP(host) === 0) {
165633
166205
  return {
165634
166206
  code: "host_not_loopback",
165635
166207
  message: `Preview target host must be a loopback address or "localhost", got ${target.host}.`,
@@ -165664,7 +166236,7 @@ ${escapeHtmlScriptContent(VISUAL_ANNOTATION_INSPECTOR_BROWSER_SCRIPT)}
165664
166236
  host
165665
166237
  ];
165666
166238
  const probeTcpHost = async (host, port) => await new Promise((resolve2) => {
165667
- const socket = require$$0$9.createConnection({
166239
+ const socket = require$$0$a.createConnection({
165668
166240
  host,
165669
166241
  port
165670
166242
  });
@@ -168355,7 +168927,7 @@ ${escapeHtmlScriptContent(VISUAL_ANNOTATION_INSPECTOR_BROWSER_SCRIPT)}
168355
168927
  };
168356
168928
  }
168357
168929
  });
168358
- this.sessionManager.setRequestPermissionHandler((sessionId, requestId, request2, agentClient) => this.handleAgentPermissionRequest(sessionId, requestId, request2, agentClient?.currentModel));
168930
+ this.sessionManager.setRequestPermissionHandler((sessionId, requestId, request2, agentClient) => this.handleAgentPermissionRequest(sessionId, requestId, request2, agentClient?.currentModel, agentClient));
168359
168931
  this.autoPromptRunner = new AutoPromptRunner({
168360
168932
  workspaceId: this.workspaceId,
168361
168933
  beginConversationTurn: (sessionId, userTurnId) => this.beginConversationTurn(sessionId, userTurnId),
@@ -168807,6 +169379,7 @@ ${escapeHtmlScriptContent(VISUAL_ANNOTATION_INSPECTOR_BROWSER_SCRIPT)}
168807
169379
  static CODE_COLLAB_EVIDENCE_RETRY_MAX_DELAY_MS = 1600;
168808
169380
  static CONTEXT_WINDOW_USAGE_THROTTLE_MS = 400;
168809
169381
  permissionRequestStartTimes = /* @__PURE__ */ new Map();
169382
+ pendingPermissionRequests = /* @__PURE__ */ new Map();
168810
169383
  static MACHINE_ACCESS_REGISTRATION_CACHE_TTL_MS = 20 * 6e4;
168811
169384
  machineAccessRegistrationInFlight = null;
168812
169385
  machineAccessRegistrationExpiresAtMs = 0;
@@ -170246,6 +170819,9 @@ ${escapeHtmlScriptContent(VISUAL_ANNOTATION_INSPECTOR_BROWSER_SCRIPT)}
170246
170819
  throw new Error(`Requester Session not found: ${operation.requesterSessionId}`);
170247
170820
  }
170248
170821
  const requester = requesterRecord.meta;
170822
+ const delegatedRequester = operation.frozenContinuationConfig.sourceTurnId ? {
170823
+ userId: operation.requesterUserId
170824
+ } : void 0;
170249
170825
  if (operation.kind === "session_create" || operation.kind === "session_create_many") {
170250
170826
  const runConfig = {
170251
170827
  ...typeof command2.modelId === "string" ? {
@@ -170274,8 +170850,12 @@ ${escapeHtmlScriptContent(VISUAL_ANNOTATION_INSPECTOR_BROWSER_SCRIPT)}
170274
170850
  workspace: this.workspaceId,
170275
170851
  currentSessionId: operation.requesterSessionId,
170276
170852
  workspaceMetaPrewriteSatisfied: true,
170277
- requesterUserId: operation.requesterUserId,
170278
- sessionOwnerUserId: requester.userId,
170853
+ ...delegatedRequester ? {
170854
+ delegatedRequester
170855
+ } : {
170856
+ requesterUserId: operation.requesterUserId,
170857
+ sessionOwnerUserId: requester.userId
170858
+ },
170279
170859
  defaultMachineId: requester.machineId,
170280
170860
  sessionId: item.target.sessionId,
170281
170861
  userTurnId: item.target.userTurnId,
@@ -170308,11 +170888,11 @@ ${escapeHtmlScriptContent(VISUAL_ANNOTATION_INSPECTOR_BROWSER_SCRIPT)}
170308
170888
  await sendSessionChatResult(auth, workspace, this.workspaceDocument, item.target.sessionId, prompt2, {
170309
170889
  ...resolveTurnDispatchConfig({}),
170310
170890
  taskToolsEnabled: operation.frozenContinuationConfig.inputConfig.taskToolsEnabled === true
170311
- }, void 0, operation.requesterUserId, {
170891
+ }, void 0, delegatedRequester ? void 0 : operation.requesterUserId, {
170312
170892
  userTurnId: item.target.userTurnId,
170313
170893
  chainDepth: operation.initiatorChainDepth + 1,
170314
170894
  bypassSessionQuota: shouldBypassSessionQuota(operation.kind)
170315
- });
170895
+ }, delegatedRequester);
170316
170896
  }
170317
170897
  async ensureMachineRegistered() {
170318
170898
  try {
@@ -172035,20 +172615,11 @@ ${escapeHtmlScriptContent(VISUAL_ANNOTATION_INSPECTOR_BROWSER_SCRIPT)}
172035
172615
  await sessionDoc2.setLastMessageAt();
172036
172616
  }
172037
172617
  const sessionDoc = await this.workspaceDocument.getOrCreateSessionDoc(sessionId);
172038
- await sessionDoc.updateHistory((history) => {
172039
- for (let i2 = history.length - 1; i2 >= 0; i2--) {
172040
- const entry = history[i2];
172041
- if (entry && entry.role === "assistant" && (!turnId || entry.id === turnId)) {
172042
- entry.finished = true;
172043
- entry.endedAt = endedAt;
172044
- if (permissionWaitMs !== void 0) {
172045
- entry.permissionWaitMs = permissionWaitMs;
172046
- }
172047
- break;
172048
- }
172049
- }
172050
- return history;
172051
- });
172618
+ await sessionDoc.updateHistory((history) => markAssistantTurnFinished(history, {
172619
+ turnId,
172620
+ endedAt,
172621
+ permissionWaitMs
172622
+ }));
172052
172623
  await sessionDoc.waitUntilSynced();
172053
172624
  } catch (error2) {
172054
172625
  this.logger.error(`[${sessionId}] Failed to flush ACP updates during finalization:`, error2);
@@ -172642,12 +173213,23 @@ ${escapeHtmlScriptContent(VISUAL_ANNOTATION_INSPECTOR_BROWSER_SCRIPT)}
172642
173213
  case "file/preview":
172643
173214
  await assertOwner(request2.params.sessionId);
172644
173215
  return await this.filePreviewService.previewFile(request2.params);
172645
- case "file/preview-local":
173216
+ case "file/resolve-local":
172646
173217
  await assertOwner(request2.params.sessionId);
172647
- return await this.filePreviewService.previewFile(request2.params, {
172648
- allowArbitraryPaths: true,
172649
- sameMachine: true
172650
- });
173218
+ return await this.filePreviewService.resolveLocalFile(request2.params);
173219
+ case "session/get-active-invocation-context": {
173220
+ const sessionId = request2.params.sessionId;
173221
+ const invocation = this.executionService.getActiveInvocationContext(sessionId);
173222
+ return invocation ? {
173223
+ type: "session/active-invocation-context",
173224
+ sessionId,
173225
+ active: true,
173226
+ ...invocation
173227
+ } : {
173228
+ type: "session/active-invocation-context",
173229
+ sessionId,
173230
+ active: false
173231
+ };
173232
+ }
172651
173233
  case "session/cancel": {
172652
173234
  const result = await this.executionService.cancelSession({
172653
173235
  type: "session/cancel",
@@ -173932,7 +174514,7 @@ ${escapeHtmlScriptContent(VISUAL_ANNOTATION_INSPECTOR_BROWSER_SCRIPT)}
173932
174514
  cpuUsagePercent: totalCpus > 0 ? Math.min(100, loadAverage / totalCpus * 100) : 0
173933
174515
  };
173934
174516
  }
173935
- async handleAgentPermissionRequest(sessionId, requestId, request2, model) {
174517
+ async handleAgentPermissionRequest(sessionId, requestId, request2, model, agentClient) {
173936
174518
  const isAskUserQuestionRequest = isAskUserQuestionPermissionRequest(request2);
173937
174519
  const askUserQuestionMeta = isAskUserQuestionRequest ? parseAskUserQuestionPermissionMeta(request2._meta) : null;
173938
174520
  const permissionTimeoutMs = typeof askUserQuestionMeta?.autoResolveAt === "number" ? Math.min(PERMISSION_REQUEST_TIMEOUT_MS, Math.max(0, askUserQuestionMeta.autoResolveAt - getServerNow())) : PERMISSION_REQUEST_TIMEOUT_MS;
@@ -174007,6 +174589,28 @@ ${escapeHtmlScriptContent(VISUAL_ANNOTATION_INSPECTOR_BROWSER_SCRIPT)}
174007
174589
  }
174008
174590
  };
174009
174591
  }
174592
+ const automaticOutcome = isAskUserQuestionRequest ? void 0 : agentClient?.getAutomaticToolPermissionOutcome(request2, false);
174593
+ if (automaticOutcome) {
174594
+ try {
174595
+ await updatePermissionOutcomeInHistory(doc, requestId, automaticOutcome, this.logger);
174596
+ } catch (error2) {
174597
+ this.logger.error(`[${sessionId}] Failed to persist automatic permission outcome: ${formatErrorMessage(error2)}`);
174598
+ return {
174599
+ outcome: {
174600
+ outcome: "cancelled"
174601
+ }
174602
+ };
174603
+ }
174604
+ capturePermissionResolved("allow", {
174605
+ resolutionSource: "run_config_auto_approve"
174606
+ });
174607
+ return {
174608
+ outcome: automaticOutcome
174609
+ };
174610
+ }
174611
+ const pendingRequests = this.pendingPermissionRequests.get(sessionId) ?? /* @__PURE__ */ new Set();
174612
+ pendingRequests.add(requestId);
174613
+ this.pendingPermissionRequests.set(sessionId, pendingRequests);
174010
174614
  try {
174011
174615
  await doc.setStatus(SessionStatusFactory.requestPermission(), {
174012
174616
  awaitingUserSince: getServerNow()
@@ -174015,6 +174619,7 @@ ${escapeHtmlScriptContent(VISUAL_ANNOTATION_INSPECTOR_BROWSER_SCRIPT)}
174015
174619
  } catch (error2) {
174016
174620
  this.logger.error(`[${sessionId}] Failed to mark session as waiting for permission: ${formatErrorMessage(error2)}`);
174017
174621
  }
174622
+ let resolved = false;
174018
174623
  const permissionUserId = historyUserId ?? metaUserId ?? this.userId;
174019
174624
  const notificationService = this.notificationService;
174020
174625
  const workspaceSlug = this.workspaceSlug?.trim() || this.workspaceId;
@@ -174038,6 +174643,7 @@ ${escapeHtmlScriptContent(VISUAL_ANNOTATION_INSPECTOR_BROWSER_SCRIPT)}
174038
174643
  if (requestKind === "permission") {
174039
174644
  void (async () => {
174040
174645
  const historySynced = await doc.waitUntilSynced();
174646
+ if (resolved) return;
174041
174647
  if (!historySynced) {
174042
174648
  this.logger.debug(`[${sessionId}] Permission request history was not confirmed before Live Activity sync; sending notification fallback`);
174043
174649
  await notificationService.notifyPermissionRequested(notificationInput);
@@ -174046,6 +174652,7 @@ ${escapeHtmlScriptContent(VISUAL_ANNOTATION_INSPECTOR_BROWSER_SCRIPT)}
174046
174652
  const liveActivityResult = await this.syncLiveActivitySummary(permissionUserId, {
174047
174653
  permissionAlert: true
174048
174654
  });
174655
+ if (resolved) return;
174049
174656
  if (liveActivityResult.sent && !liveActivityResult.ended) {
174050
174657
  return;
174051
174658
  }
@@ -174060,11 +174667,13 @@ ${escapeHtmlScriptContent(VISUAL_ANNOTATION_INSPECTOR_BROWSER_SCRIPT)}
174060
174667
  }
174061
174668
  this.permissionRequestStartTimes.set(requestId, Date.now());
174062
174669
  return new Promise((resolve2) => {
174063
- let resolved = false;
174064
174670
  let timedOutResolution = false;
174065
174671
  let unsubscribe = null;
174672
+ let unsubscribeConfig;
174066
174673
  let timeoutId = null;
174067
174674
  const cleanup = () => {
174675
+ unsubscribeConfig?.();
174676
+ unsubscribeConfig = void 0;
174068
174677
  if (unsubscribe) {
174069
174678
  unsubscribe();
174070
174679
  unsubscribe = null;
@@ -174074,10 +174683,20 @@ ${escapeHtmlScriptContent(VISUAL_ANNOTATION_INSPECTOR_BROWSER_SCRIPT)}
174074
174683
  timeoutId = null;
174075
174684
  }
174076
174685
  };
174077
- const resolveWithOutcome = async (outcome, resolutionSource = "client") => {
174686
+ const resolveWithOutcome = async (outcome, resolutionSource = "client", persistOutcome = false) => {
174078
174687
  if (resolved) return;
174079
174688
  resolved = true;
174080
174689
  cleanup();
174690
+ if (persistOutcome) {
174691
+ try {
174692
+ await updatePermissionOutcomeInHistory(doc, requestId, outcome, this.logger);
174693
+ } catch (error2) {
174694
+ this.logger.error(`[${sessionId}] Failed to persist automatic permission outcome: ${formatErrorMessage(error2)}`);
174695
+ outcome = {
174696
+ outcome: "cancelled"
174697
+ };
174698
+ }
174699
+ }
174081
174700
  const requestStartTime = this.permissionRequestStartTimes.get(requestId);
174082
174701
  if (requestStartTime) {
174083
174702
  const waitMs = Date.now() - requestStartTime;
@@ -174086,10 +174705,14 @@ ${escapeHtmlScriptContent(VISUAL_ANNOTATION_INSPECTOR_BROWSER_SCRIPT)}
174086
174705
  this.permissionRequestStartTimes.delete(requestId);
174087
174706
  this.logger.debug(`[${sessionId}] Permission wait time: ${waitMs}ms (total: ${state2.permissionWaitMs}ms)`);
174088
174707
  }
174089
- try {
174090
- await doc.clearAwaitingUser();
174091
- } catch (error2) {
174092
- this.logger.debug(`[${sessionId}] Failed to clear awaitingUserSince: ${formatErrorMessage(error2)}`);
174708
+ pendingRequests.delete(requestId);
174709
+ if (pendingRequests.size === 0) {
174710
+ this.pendingPermissionRequests.delete(sessionId);
174711
+ try {
174712
+ await doc.clearAwaitingUser();
174713
+ } catch (error2) {
174714
+ this.logger.debug(`[${sessionId}] Failed to clear awaitingUserSince: ${formatErrorMessage(error2)}`);
174715
+ }
174093
174716
  }
174094
174717
  this.logger.info(`Permission resolved for session ${sessionId}: ${outcome.outcome}`);
174095
174718
  this.logger.debug(`[${sessionId}] Permission request ${requestId} resolved with outcome: ${outcome.outcome}`);
@@ -174108,7 +174731,7 @@ ${escapeHtmlScriptContent(VISUAL_ANNOTATION_INSPECTOR_BROWSER_SCRIPT)}
174108
174731
  try {
174109
174732
  const maybeGetStatus = doc.getStatus;
174110
174733
  const currentStatus = typeof maybeGetStatus === "function" ? await maybeGetStatus.call(doc) : "unknown";
174111
- if (shouldRestoreRunningAfterPermission({
174734
+ if (!this.pendingPermissionRequests.has(sessionId) && shouldRestoreRunningAfterPermission({
174112
174735
  hasActivePresence: this.hasSessionActivePresence(sessionId),
174113
174736
  status: currentStatus
174114
174737
  })) {
@@ -174136,7 +174759,23 @@ ${escapeHtmlScriptContent(VISUAL_ANNOTATION_INSPECTOR_BROWSER_SCRIPT)}
174136
174759
  checkForOutcome();
174137
174760
  });
174138
174761
  }
174139
- checkForOutcome();
174762
+ const checkAutomaticOutcome = (pending2) => {
174763
+ checkForOutcome();
174764
+ if (resolved || isAskUserQuestionRequest) return;
174765
+ const outcome = agentClient?.getAutomaticToolPermissionOutcome(request2, pending2);
174766
+ if (outcome) void resolveWithOutcome(outcome, "run_config_auto_approve", true);
174767
+ };
174768
+ if (agentClient && !isAskUserQuestionRequest) {
174769
+ let wasAutomatic = agentClient.getAutomaticToolPermissionOutcome(request2, true) !== void 0;
174770
+ unsubscribeConfig = agentClient.subscribeConfigOptions(() => {
174771
+ const isAutomatic = agentClient.getAutomaticToolPermissionOutcome(request2, true) !== void 0;
174772
+ const enabled2 = isAutomatic && !wasAutomatic;
174773
+ wasAutomatic = isAutomatic;
174774
+ if (enabled2) checkAutomaticOutcome(true);
174775
+ });
174776
+ }
174777
+ checkAutomaticOutcome(false);
174778
+ if (resolved) return;
174140
174779
  timeoutId = setTimeout(() => {
174141
174780
  void (async () => {
174142
174781
  if (resolved) return;
@@ -174674,6 +175313,7 @@ ${escapeHtmlScriptContent(VISUAL_ANNOTATION_INSPECTOR_BROWSER_SCRIPT)}
174674
175313
  }
174675
175314
  cancelPendingPermissionRequests() {
174676
175315
  this.permissionRequestStartTimes.clear();
175316
+ this.pendingPermissionRequests.clear();
174677
175317
  }
174678
175318
  async cleanup() {
174679
175319
  this.logger.debug("Cleaning up message handler resources");
@@ -178388,7 +179028,7 @@ export PATH=${toSingleQuotedShellString(ghShimBinDir)}:"$PATH"
178388
179028
  }
178389
179029
  InternalCodec.prototype.encoder = InternalEncoder;
178390
179030
  InternalCodec.prototype.decoder = InternalDecoder;
178391
- var StringDecoder2 = require$$1$3.StringDecoder;
179031
+ var StringDecoder2 = require$$1$2.StringDecoder;
178392
179032
  if (!StringDecoder2.prototype.end) StringDecoder2.prototype.end = function() {
178393
179033
  };
178394
179034
  function InternalDecoder(options, codec) {
@@ -183777,7 +184417,11 @@ export PATH=${toSingleQuotedShellString(ghShimBinDir)}:"$PATH"
183777
184417
  acpSessionId = started.acpSessionId;
183778
184418
  acpCapabilities = normalizeAcpSessionCapabilities(started.sessionResponse, {
183779
184419
  sessionFork: started.client.supportsSessionFork(),
183780
- acknowledgedSteer: started.client.supportsAcknowledgedSteer()
184420
+ acknowledgedSteer: started.client.supportsAcknowledgedSteer(),
184421
+ agent: {
184422
+ cliType: this.config.agentCliType,
184423
+ agentType: this.config.agentType
184424
+ }
183781
184425
  });
183782
184426
  } catch (error2) {
183783
184427
  if (error2 instanceof AcpStartupProcessExitError || error2 instanceof AcpStartupProcessError) {
@@ -194034,23 +194678,48 @@ Shutting down gracefully${reason}...`);
194034
194678
  }
194035
194679
  const HOST_TCP_ADDRESS = "127.0.0.1";
194036
194680
  const HOST_REQUEST_TIMEOUT_MS = 800;
194681
+ const E2E_HOST_PORT_ENV = "LODY_E2E_LOCAL_CLI_HOST_PORT";
194682
+ const E2E_HOST_PIPE_ENV = "LODY_E2E_LOCAL_CLI_HOST_PIPE";
194683
+ const E2E_HOST_PIPE_PATTERN = /^\\\\\.\\pipe\\lody-e2e-[A-Za-z0-9-]{1,80}$/u;
194037
194684
  function getUserPipeSuffix() {
194038
194685
  if (typeof process.getuid === "function") return String(process.getuid());
194039
194686
  const userInfo2 = os__default.userInfo();
194040
194687
  return crypto__default$1.createHash("sha256").update(`${userInfo2.uid}:${userInfo2.username}:${os__default.homedir()}`).digest("hex").slice(0, 16);
194041
194688
  }
194689
+ function getE2eHostPort() {
194690
+ if (process.env.LODY_E2E !== "1") return null;
194691
+ const rawPort = process.env[E2E_HOST_PORT_ENV]?.trim();
194692
+ if (!rawPort) return null;
194693
+ if (!/^\d+$/u.test(rawPort)) {
194694
+ throw new Error(`${E2E_HOST_PORT_ENV} must be an integer between 1024 and 65535`);
194695
+ }
194696
+ const port = Number(rawPort);
194697
+ if (!Number.isSafeInteger(port) || port < 1024 || port > 65535) {
194698
+ throw new Error(`${E2E_HOST_PORT_ENV} must be an integer between 1024 and 65535`);
194699
+ }
194700
+ return port;
194701
+ }
194702
+ function getE2eHostPipe(nodePlatform = process.platform) {
194703
+ if (nodePlatform !== "win32" || process.env.LODY_E2E !== "1") return null;
194704
+ const pipe2 = process.env[E2E_HOST_PIPE_ENV]?.trim();
194705
+ if (!pipe2) return null;
194706
+ if (!E2E_HOST_PIPE_PATTERN.test(pipe2)) {
194707
+ throw new Error(`${E2E_HOST_PIPE_ENV} must use the \\\\.\\pipe\\lody-e2e-<id> namespace`);
194708
+ }
194709
+ return pipe2;
194710
+ }
194042
194711
  function getLocalCliHostEndpoint(platform2) {
194043
194712
  const profile = getInstallationProfile(platform2);
194044
194713
  if (process.platform === "win32") {
194045
194714
  return {
194046
194715
  kind: "pipe",
194047
- path: `\\\\.\\pipe\\${profile.namespace}-agent-host-${getUserPipeSuffix()}`
194716
+ path: getE2eHostPipe() ?? `\\\\.\\pipe\\${profile.namespace}-agent-host-${getUserPipeSuffix()}`
194048
194717
  };
194049
194718
  }
194050
194719
  return {
194051
194720
  kind: "tcp",
194052
194721
  host: HOST_TCP_ADDRESS,
194053
- port: profile.localCliHostPort
194722
+ port: getE2eHostPort() ?? profile.localCliHostPort
194054
194723
  };
194055
194724
  }
194056
194725
  function throwIfAborted(signal) {
@@ -195534,7 +196203,7 @@ Shutting down gracefully${reason}...`);
195534
196203
  const defaultOpts = {
195535
196204
  defaultWidth: 0,
195536
196205
  output: process.stdout,
195537
- tty: require$$1$2
196206
+ tty: require$$0$8
195538
196207
  };
195539
196208
  if (!options) {
195540
196209
  return defaultOpts;
@@ -204090,7 +204759,7 @@ ${page}${helpTipBottom}${choiceDescription}${error2}${ansiEscapes.cursorHide}`;
204090
204759
  }
204091
204760
  InternalCodec.prototype.encoder = InternalEncoder;
204092
204761
  InternalCodec.prototype.decoder = InternalDecoder;
204093
- var StringDecoder2 = require$$1$3.StringDecoder;
204762
+ var StringDecoder2 = require$$1$2.StringDecoder;
204094
204763
  if (!StringDecoder2.prototype.end) StringDecoder2.prototype.end = function() {
204095
204764
  };
204096
204765
  function InternalDecoder(options, codec) {
@@ -208196,7 +208865,7 @@ ${page}${helpTipBottom}${choiceDescription}${error2}${ansiEscapes.cursorHide}`;
208196
208865
  value: true
208197
208866
  });
208198
208867
  var chardet_1 = requireChardet();
208199
- var child_process_1 = require$$1$8;
208868
+ var child_process_1 = require$$1$7;
208200
208869
  var fs_1 = fs__default;
208201
208870
  var iconv_lite_1 = requireLib();
208202
208871
  var tmp_1 = requireTmp();
@@ -222285,7 +222954,7 @@ ${page}${helpTipBottom}${choiceDescription}${ansiEscapes.cursorHide}`;
222285
222954
  data = createReviewBundleSnapshot(bundle);
222286
222955
  }
222287
222956
  const { injectReviewSnapshot } = await import("./chunks/index-VoI6Ds2-.js");
222288
- const { resolveReviewViewerTemplate } = await import("./chunks/review-viewer-BxVOWMjT.js").then(async (m) => {
222957
+ const { resolveReviewViewerTemplate } = await import("./chunks/review-viewer-CEr3NCEE.js").then(async (m) => {
222289
222958
  await m.__tla;
222290
222959
  return m;
222291
222960
  });
@@ -241279,6 +241948,32 @@ ${result.stdout ?? ""}`;
241279
241948
  })))));
241280
241949
  return responses.map((response2) => LocalSessionControlResponseSchema.parse(response2));
241281
241950
  };
241951
+ const readActiveInvocationContext = async (ctx) => {
241952
+ const response2 = await runPromise(makeLocalControlClientAuto({
241953
+ socketPath: ctx.localControlSocketPath
241954
+ }).machineRpc({
241955
+ method: "session/get-active-invocation-context",
241956
+ machineId: ctx.machineId,
241957
+ workspaceId: ctx.workspaceId,
241958
+ params: {
241959
+ sessionId: ctx.sessionId
241960
+ }
241961
+ }, {
241962
+ timeoutMs: SESSION_CONTROL_TIMEOUT_MS
241963
+ }).pipe(catchTag("IpcTimeoutError", (error2) => fail(new Error(`local control timed out after ${SESSION_CONTROL_TIMEOUT_MS}ms`, {
241964
+ cause: error2
241965
+ }))), catchTag("IpcProtocolError", (error2) => fail(new Error(error2.message, {
241966
+ cause: error2
241967
+ })))));
241968
+ if (!response2.ok) {
241969
+ throw new Error(response2.error);
241970
+ }
241971
+ const invocation = SessionActiveInvocationContextResultSchema.parse(response2.result);
241972
+ if (invocation.sessionId !== ctx.sessionId) {
241973
+ throw new Error(`Active invocation context session mismatch: expected ${ctx.sessionId}, received ${invocation.sessionId}`);
241974
+ }
241975
+ return invocation;
241976
+ };
241282
241977
  const pickResponse = (responses, expectedType, label2) => {
241283
241978
  const found = responses.find((response2) => response2.type === expectedType);
241284
241979
  if (found === void 0) {
@@ -242052,33 +242747,33 @@ ${prompt2}` : prompt2;
242052
242747
  auth: args2.auth,
242053
242748
  workspaceId: args2.workspaceId,
242054
242749
  machineId: args2.machineId,
242055
- requesterUserId: args2.requesterUserId,
242750
+ delegatedRequester: args2.delegatedRequester,
242056
242751
  ...args2.localProjectId ? {
242057
242752
  localProjectId: args2.localProjectId
242058
242753
  } : {}
242059
242754
  });
242060
242755
  return access.allowed;
242061
242756
  };
242062
- const filterAuthorizedMachinesForOptions = async (auth, workspaceId, machines, requesterUserId) => {
242757
+ const filterAuthorizedMachinesForOptions = async (auth, workspaceId, machines, delegatedRequester) => {
242063
242758
  const rows = await Promise.all(machines.map(async (machine) => ({
242064
242759
  machine,
242065
242760
  allowed: await canUseMachineForOptions({
242066
242761
  auth,
242067
242762
  workspaceId,
242068
242763
  machineId: machine.id,
242069
- requesterUserId
242764
+ delegatedRequester
242070
242765
  })
242071
242766
  })));
242072
242767
  return rows.filter((row) => row.allowed).map((row) => row.machine);
242073
242768
  };
242074
- const filterAuthorizedLocalProjectsForOptions = async (auth, workspaceId, machineId, localProjects, requesterUserId) => {
242769
+ const filterAuthorizedLocalProjectsForOptions = async (auth, workspaceId, machineId, localProjects, delegatedRequester) => {
242075
242770
  const rows = await Promise.all(localProjects.map(async (project) => ({
242076
242771
  project,
242077
242772
  allowed: await canUseMachineForOptions({
242078
242773
  auth,
242079
242774
  workspaceId,
242080
242775
  machineId,
242081
- requesterUserId,
242776
+ delegatedRequester,
242082
242777
  localProjectId: project.id
242083
242778
  })
242084
242779
  })));
@@ -242096,54 +242791,61 @@ ${prompt2}` : prompt2;
242096
242791
  }
242097
242792
  return record2.meta;
242098
242793
  };
242099
- const bindMcpCreateContext = (options, auth, requester) => {
242100
- options.requesterUserId = auth.userId;
242101
- options.sessionOwnerUserId = requester.userId;
242794
+ const bindMcpCreateContext = (options, identity2, requester) => {
242795
+ options.delegatedRequester = toDelegatedSessionRequester(identity2);
242102
242796
  options.defaultMachineId = requester.machineId;
242103
242797
  };
242104
- const resolveInvokingHistoryInput = (history) => {
242105
- let assistantIndex = -1;
242106
- for (let index = history.length - 1; index >= 0; index -= 1) {
242107
- if (history[index]?.role === "assistant") {
242108
- assistantIndex = index;
242109
- break;
242110
- }
242798
+ const toDelegatedSessionRequester = (identity2) => ({
242799
+ userId: identity2.userId
242800
+ });
242801
+ const buildInvocationIdentity = (source) => {
242802
+ const userId = source.userId?.trim();
242803
+ if (!userId) {
242804
+ throw new LodyOperationStoreError("INVOKING_USER_UNAVAILABLE", `The driving Turn ${source.id} has no authenticated human identity.`, false);
242111
242805
  }
242112
- const assistant = assistantIndex >= 0 ? history[assistantIndex] : void 0;
242113
- if (assistant?.userTurnId) {
242114
- const linked = history.find((entry) => entry.id === assistant.userTurnId);
242115
- if (linked) return linked;
242806
+ return {
242807
+ userId,
242808
+ sourceTurnId: source.id
242809
+ };
242810
+ };
242811
+ const resolveInvokingTurnSource = async () => {
242812
+ const active2 = await readActiveInvocationContext(getSessionContext());
242813
+ if (!active2.active) {
242814
+ throw new LodyOperationStoreError("INVOKING_TURN_NOT_FOUND", "The exact Turn driving this MCP invocation is no longer active.", false);
242116
242815
  }
242117
- const inputsBeforeExecution = assistantIndex >= 0 ? history.slice(0, assistantIndex) : history;
242118
- return [
242119
- ...inputsBeforeExecution
242120
- ].reverse().find((entry) => entry.role === "user" || entry.role === "system");
242816
+ const inputConfig = normalizeSessionTurnInputConfig(active2.inputConfig) ?? (Object.keys(active2.inputConfig).length === 0 ? {} : void 0);
242817
+ if (!inputConfig) {
242818
+ throw new LodyOperationStoreError("INVOKING_TURN_NOT_FOUND", `The active Turn ${active2.sourceTurnId} has an invalid execution configuration.`, false);
242819
+ }
242820
+ return {
242821
+ id: active2.sourceTurnId,
242822
+ userId: active2.requesterUserId,
242823
+ inputConfig
242824
+ };
242121
242825
  };
242122
242826
  const assertInvokingTurnTaskToolsEnabled = async (manager, sessionId) => {
242123
242827
  const session2 = await readCurrentSessionMeta(manager, sessionId);
242124
242828
  if (!session2) {
242125
242829
  throw new LodyOperationStoreError("SESSION_NOT_FOUND", `Requester Session not found: ${sessionId}`, false);
242126
242830
  }
242127
- const sessionDoc = await manager.getOrCreateSessionDoc(session2.id);
242128
- const source = resolveInvokingHistoryInput(await sessionDoc.getHistory());
242129
- if (source?.inputConfig?.taskToolsEnabled !== true) {
242831
+ const source = await resolveInvokingTurnSource();
242832
+ if (source.inputConfig.taskToolsEnabled !== true) {
242130
242833
  throw new LodyOperationStoreError("TASK_TOOLS_DISABLED", "Lody Task tools are disabled for the driving user turn.", false);
242131
242834
  }
242132
242835
  };
242133
- const resolveInvokingTurnContext = async (manager, session2) => {
242134
- const sessionDoc = await manager.getOrCreateSessionDoc(session2.id);
242135
- const history = await sessionDoc.getHistory();
242136
- const source = resolveInvokingHistoryInput(history);
242137
- const chainDepth = source?.inputConfig?.chainDepth ?? 0;
242836
+ const resolveInvokingTurnContext = async (session2) => {
242837
+ const source = await resolveInvokingTurnSource();
242838
+ const chainDepth = source.inputConfig.chainDepth ?? 0;
242138
242839
  if (chainDepth >= LODY_MAX_CHAIN_DEPTH) {
242139
242840
  throw new LodyOperationStoreError("CHAIN_DEPTH_EXCEEDED", `Asynchronous Command rejected at chain depth ${chainDepth}; V1 maximum is ${LODY_MAX_CHAIN_DEPTH}.`, false);
242140
242841
  }
242141
242842
  return {
242142
242843
  chainDepth,
242844
+ identity: buildInvocationIdentity(source),
242143
242845
  frozenInputConfig: {
242144
- ...source?.inputConfig ?? {},
242145
- cliType: source?.inputConfig?.cliType ?? session2.cliType,
242146
- agentType: source?.inputConfig?.agentType ?? session2.agentType,
242846
+ ...source.inputConfig,
242847
+ cliType: source.inputConfig.cliType ?? session2.cliType,
242848
+ agentType: source.inputConfig.agentType ?? session2.agentType,
242147
242849
  chainDepth
242148
242850
  }
242149
242851
  };
@@ -242316,12 +243018,14 @@ ${prompt2}` : prompt2;
242316
243018
  if (!currentSession) {
242317
243019
  throw new Error(`Session not found: ${ctx.sessionId}`);
242318
243020
  }
242319
- const requesterUserId = auth.userId;
243021
+ const invoking = await resolveInvokingTurnContext(currentSession);
243022
+ const requesterUserId = invoking.identity.userId;
243023
+ const delegatedRequester = toDelegatedSessionRequester(invoking.identity);
242320
243024
  const machineEntries = await listAliveDocMetas(manager, isMachineDocRoomId);
242321
243025
  const onlineMachineIds = await manager.getOnlineMachineIds();
242322
243026
  const isMachineOnline = (machineId) => machineId === auth.machineId || onlineMachineIds?.has(machineId) === true;
242323
243027
  const machineCandidates = selectMachineMetasForOptions(machineEntries.map((entry) => entry.meta), input2.machineId).filter((machine) => input2.machineId !== void 0 || isMachineOnline(machine.id));
242324
- const machines = await filterAuthorizedMachinesForOptions(auth, workspaceId, machineCandidates, requesterUserId);
243028
+ const machines = await filterAuthorizedMachinesForOptions(auth, workspaceId, machineCandidates, delegatedRequester);
242325
243029
  const selectedMachine = selectMachineForOptions(machines, input2.machineId, currentSession.machineId);
242326
243030
  await syncMachineFlockDocsForOptions(manager, workspaceId, [
242327
243031
  selectedMachine
@@ -242354,7 +243058,7 @@ ${prompt2}` : prompt2;
242354
243058
  }
242355
243059
  return currentLocalProjectId !== void 0 && project.id === currentLocalProjectId;
242356
243060
  });
242357
- const localProjects = (await filterAuthorizedLocalProjectsForOptions(auth, workspaceId, selectedMachine.id, localProjectCandidates, requesterUserId)).slice(0, MAX_MCP_CREATE_OPTION_MATCHES);
243061
+ const localProjects = (await filterAuthorizedLocalProjectsForOptions(auth, workspaceId, selectedMachine.id, localProjectCandidates, delegatedRequester)).slice(0, MAX_MCP_CREATE_OPTION_MATCHES);
242358
243062
  const summarizedLocalProjects = await Promise.all(localProjects.map((project) => summarizeLocalProjectForOptions(auth, workspaceId, selectedMachine, project, requesterUserId, isMachineOnline(selectedMachine.id))));
242359
243063
  const repoQuery = normalizeCliValue(input2.repoQuery)?.toLowerCase();
242360
243064
  const repos = repoQuery ? (await listWorkspaceGitHubRepositoriesForCliToken({
@@ -242400,16 +243104,18 @@ ${prompt2}` : prompt2;
242400
243104
  if (!currentSession) {
242401
243105
  throw new LodyOperationStoreError("SESSION_NOT_FOUND", `Requester Session not found: ${ctx.sessionId}`, false);
242402
243106
  }
242403
- const invoking = await resolveInvokingTurnContext(manager, currentSession);
243107
+ const invoking = await resolveInvokingTurnContext(currentSession);
242404
243108
  const roleCatalog = args2.agentRoleId ? await loadWorkspaceAgentRoleCatalog(manager, workspace.id) : void 0;
242405
243109
  const resolved = resolveMcpSessionCreate(args2, invoking, currentSession, args2.agentRoleId ? roleCatalog?.get(args2.agentRoleId) : void 0);
242406
243110
  const canonicalCommand = buildResolvedMcpCreateCanonicalCommand(resolved, args2.deadlineSeconds);
242407
- const retry2 = await withOperationStore((store) => store.findMatchingRetry(ctx.sessionId, args2.operationId, "session_create", canonicalCommand));
242408
- if (retry2) return await withOperationStore((store) => store.snapshot(retry2));
243111
+ const retry2 = await withOperationStore((store) => store.findMatchingRetry(ctx.sessionId, args2.operationId, "session_create", canonicalCommand, invoking.identity.userId, invoking.identity.sourceTurnId));
243112
+ if (retry2) {
243113
+ return await withOperationStore((store) => store.snapshot(retry2));
243114
+ }
242409
243115
  const targetMachineId = resolved.input.machineId ?? currentSession.machineId;
242410
243116
  await assertMachineOnlineForSingleCommand(manager, targetMachineId, ctx);
242411
243117
  const createOptions = buildMcpCreateOptions(resolved.input, ctx);
242412
- bindMcpCreateContext(createOptions, auth, currentSession);
243118
+ bindMcpCreateContext(createOptions, invoking.identity, currentSession);
242413
243119
  bindAgentRoleCreateOptions(createOptions, resolved.role);
242414
243120
  createOptions.workspaceMetaPrewriteSatisfied = true;
242415
243121
  let effectiveDispatchConfig;
@@ -242436,7 +243142,7 @@ ${prompt2}` : prompt2;
242436
243142
  workspaceId: workspace.id,
242437
243143
  ownerMachineId: ctx.machineId,
242438
243144
  requesterSessionId: ctx.sessionId,
242439
- requesterUserId: auth.userId,
243145
+ requesterUserId: invoking.identity.userId,
242440
243146
  operationId: args2.operationId,
242441
243147
  kind: "session_create",
242442
243148
  canonicalCommand,
@@ -242445,6 +243151,7 @@ ${prompt2}` : prompt2;
242445
243151
  agentConfigId: currentSession.agentConfigId
242446
243152
  } : {},
242447
243153
  inputConfig: invoking.frozenInputConfig,
243154
+ sourceTurnId: invoking.identity.sourceTurnId,
242448
243155
  targetDispatchConfigs: [
242449
243156
  effectiveDispatchConfig
242450
243157
  ]
@@ -242504,6 +243211,7 @@ ${prompt2}` : prompt2;
242504
243211
  if (!currentSession) {
242505
243212
  throw new LodyOperationStoreError("SESSION_NOT_FOUND", `Requester Session not found: ${ctx.sessionId}`, false);
242506
243213
  }
243214
+ const invoking = await resolveInvokingTurnContext(currentSession);
242507
243215
  const canonicalCommand = {
242508
243216
  sessionId: args2.sessionId,
242509
243217
  prompt: args2.prompt,
@@ -242511,8 +243219,10 @@ ${prompt2}` : prompt2;
242511
243219
  deadlineSeconds: args2.deadlineSeconds
242512
243220
  } : {}
242513
243221
  };
242514
- const retry2 = await withOperationStore((store) => store.findMatchingRetry(ctx.sessionId, args2.operationId, "session_chat", canonicalCommand));
242515
- if (retry2) return await withOperationStore((store) => store.snapshot(retry2));
243222
+ const retry2 = await withOperationStore((store) => store.findMatchingRetry(ctx.sessionId, args2.operationId, "session_chat", canonicalCommand, invoking.identity.userId, invoking.identity.sourceTurnId));
243223
+ if (retry2) {
243224
+ return await withOperationStore((store) => store.snapshot(retry2));
243225
+ }
242516
243226
  const targetSession = await readCurrentSessionMeta(manager, args2.sessionId);
242517
243227
  if (!targetSession) {
242518
243228
  throw new LodyOperationStoreError("SESSION_NOT_FOUND", `Target Session not found: ${args2.sessionId}`, false);
@@ -242525,7 +243235,7 @@ ${prompt2}` : prompt2;
242525
243235
  workspace,
242526
243236
  manager,
242527
243237
  sessionId: targetSession.id,
242528
- requesterUserIdOverride: auth.userId
243238
+ delegatedRequester: toDelegatedSessionRequester(invoking.identity)
242529
243239
  });
242530
243240
  } catch (error2) {
242531
243241
  if (error2 instanceof WorkspaceSyncUnavailableError) {
@@ -242533,7 +243243,6 @@ ${prompt2}` : prompt2;
242533
243243
  }
242534
243244
  throw new LodyOperationStoreError("COMMAND_REJECTED", formatMcpErrorMessage(error2), false);
242535
243245
  }
242536
- const invoking = await resolveInvokingTurnContext(manager, currentSession);
242537
243246
  const preallocatedUserTurnId = randomUUID();
242538
243247
  const materializationClaimToken = randomUUID();
242539
243248
  const timing = operationDeadline(args2.deadlineSeconds);
@@ -242541,7 +243250,7 @@ ${prompt2}` : prompt2;
242541
243250
  workspaceId: workspace.id,
242542
243251
  ownerMachineId: ctx.machineId,
242543
243252
  requesterSessionId: ctx.sessionId,
242544
- requesterUserId: auth.userId,
243253
+ requesterUserId: invoking.identity.userId,
242545
243254
  operationId: args2.operationId,
242546
243255
  kind: "session_chat",
242547
243256
  canonicalCommand,
@@ -242549,7 +243258,8 @@ ${prompt2}` : prompt2;
242549
243258
  ...currentSession.agentConfigId ? {
242550
243259
  agentConfigId: currentSession.agentConfigId
242551
243260
  } : {},
242552
- inputConfig: invoking.frozenInputConfig
243261
+ inputConfig: invoking.frozenInputConfig,
243262
+ sourceTurnId: invoking.identity.sourceTurnId
242553
243263
  },
242554
243264
  initiatorChainDepth: invoking.chainDepth,
242555
243265
  ...timing,
@@ -242570,10 +243280,10 @@ ${prompt2}` : prompt2;
242570
243280
  const result = await sendSessionChatResult(auth, workspace, manager, pendingItem.target.sessionId, args2.prompt, {
242571
243281
  ...resolveTurnDispatchConfig({}),
242572
243282
  taskToolsEnabled: invoking.frozenInputConfig.taskToolsEnabled === true
242573
- }, void 0, auth.userId, {
243283
+ }, void 0, void 0, {
242574
243284
  userTurnId: pendingItem.target.userTurnId,
242575
243285
  chainDepth: invoking.chainDepth + 1
242576
- });
243286
+ }, toDelegatedSessionRequester(invoking.identity));
242577
243287
  if (result.userTurnId !== pendingItem.target.userTurnId) {
242578
243288
  throw new Error("Chat result did not preserve the preallocated target turn id.");
242579
243289
  }
@@ -242700,7 +243410,7 @@ ${prompt2}` : prompt2;
242700
243410
  ...args2.defaults ?? {},
242701
243411
  ...item
242702
243412
  }));
242703
- const invoking = await resolveInvokingTurnContext(manager, requester);
243413
+ const invoking = await resolveInvokingTurnContext(requester);
242704
243414
  const roleCatalog = expanded.some((item) => Boolean(item.agentRoleId)) ? await loadWorkspaceAgentRoleCatalog(manager, workspace.id) : void 0;
242705
243415
  const resolvedItems = expanded.map((item) => {
242706
243416
  if (!item.prompt) return {
@@ -242753,8 +243463,10 @@ ${prompt2}` : prompt2;
242753
243463
  deadlineSeconds: args2.deadlineSeconds
242754
243464
  } : {}
242755
243465
  };
242756
- const retry2 = await withOperationStore((store) => store.findMatchingRetry(ctx.sessionId, args2.operationId, "session_create_many", canonicalCommand));
242757
- if (retry2) return await withOperationStore((store) => store.snapshot(retry2));
243466
+ const retry2 = await withOperationStore((store) => store.findMatchingRetry(ctx.sessionId, args2.operationId, "session_create_many", canonicalCommand, invoking.identity.userId, invoking.identity.sourceTurnId));
243467
+ if (retry2) {
243468
+ return await withOperationStore((store) => store.snapshot(retry2));
243469
+ }
242758
243470
  const isMachineOnline = makeMachineOnlineLookupForMcp(manager, ctx);
242759
243471
  const validatedItems = await mapWithConcurrency(expanded, 5, async (item, index) => {
242760
243472
  const label2 = item.label;
@@ -242793,7 +243505,7 @@ ${prompt2}` : prompt2;
242793
243505
  };
242794
243506
  }
242795
243507
  const options = buildMcpCreateOptions(resolved.input, ctx);
242796
- bindMcpCreateContext(options, auth, requester);
243508
+ bindMcpCreateContext(options, invoking.identity, requester);
242797
243509
  bindAgentRoleCreateOptions(options, resolved.role);
242798
243510
  try {
242799
243511
  const effectiveDispatchConfig = await validateSessionCreateOptions({
@@ -242829,7 +243541,7 @@ ${prompt2}` : prompt2;
242829
243541
  workspaceId: workspace.id,
242830
243542
  ownerMachineId: ctx.machineId,
242831
243543
  requesterSessionId: ctx.sessionId,
242832
- requesterUserId: auth.userId,
243544
+ requesterUserId: invoking.identity.userId,
242833
243545
  operationId: args2.operationId,
242834
243546
  kind: "session_create_many",
242835
243547
  canonicalCommand,
@@ -242838,6 +243550,7 @@ ${prompt2}` : prompt2;
242838
243550
  agentConfigId: requester.agentConfigId
242839
243551
  } : {},
242840
243552
  inputConfig: invoking.frozenInputConfig,
243553
+ sourceTurnId: invoking.identity.sourceTurnId,
242841
243554
  targetDispatchConfigs
242842
243555
  },
242843
243556
  initiatorChainDepth: invoking.chainDepth,
@@ -242860,7 +243573,7 @@ ${prompt2}` : prompt2;
242860
243573
  }
242861
243574
  try {
242862
243575
  const options = buildMcpCreateOptions(resolved.input, ctx);
242863
- bindMcpCreateContext(options, auth, requester);
243576
+ bindMcpCreateContext(options, invoking.identity, requester);
242864
243577
  bindAgentRoleCreateOptions(options, resolved.role);
242865
243578
  options.sessionId = storedItem.target.sessionId;
242866
243579
  options.userTurnId = storedItem.target.userTurnId;
@@ -242902,15 +243615,17 @@ ${prompt2}` : prompt2;
242902
243615
  ...args2.defaults ?? {},
242903
243616
  ...item
242904
243617
  }));
243618
+ const invoking = await resolveInvokingTurnContext(requester);
242905
243619
  const canonicalCommand = {
242906
243620
  items: expanded,
242907
243621
  ...args2.deadlineSeconds !== void 0 ? {
242908
243622
  deadlineSeconds: args2.deadlineSeconds
242909
243623
  } : {}
242910
243624
  };
242911
- const retry2 = await withOperationStore((store) => store.findMatchingRetry(ctx.sessionId, args2.operationId, "session_chat_many", canonicalCommand));
242912
- if (retry2) return await withOperationStore((store) => store.snapshot(retry2));
242913
- const invoking = await resolveInvokingTurnContext(manager, requester);
243625
+ const retry2 = await withOperationStore((store) => store.findMatchingRetry(ctx.sessionId, args2.operationId, "session_chat_many", canonicalCommand, invoking.identity.userId, invoking.identity.sourceTurnId));
243626
+ if (retry2) {
243627
+ return await withOperationStore((store) => store.snapshot(retry2));
243628
+ }
242914
243629
  const isMachineOnline = makeMachineOnlineLookupForMcp(manager, ctx);
242915
243630
  const initialItems = await mapWithConcurrency(expanded, 5, async (item) => {
242916
243631
  if (!item.sessionId || !item.prompt) {
@@ -242932,7 +243647,7 @@ ${prompt2}` : prompt2;
242932
243647
  workspace,
242933
243648
  manager,
242934
243649
  sessionId: target.id,
242935
- requesterUserIdOverride: auth.userId
243650
+ delegatedRequester: toDelegatedSessionRequester(invoking.identity)
242936
243651
  });
242937
243652
  } catch (error2) {
242938
243653
  if (error2 instanceof WorkspaceSyncUnavailableError) {
@@ -242948,7 +243663,7 @@ ${prompt2}` : prompt2;
242948
243663
  workspaceId: workspace.id,
242949
243664
  ownerMachineId: ctx.machineId,
242950
243665
  requesterSessionId: ctx.sessionId,
242951
- requesterUserId: auth.userId,
243666
+ requesterUserId: invoking.identity.userId,
242952
243667
  operationId: args2.operationId,
242953
243668
  kind: "session_chat_many",
242954
243669
  canonicalCommand,
@@ -242956,7 +243671,8 @@ ${prompt2}` : prompt2;
242956
243671
  ...requester.agentConfigId ? {
242957
243672
  agentConfigId: requester.agentConfigId
242958
243673
  } : {},
242959
- inputConfig: invoking.frozenInputConfig
243674
+ inputConfig: invoking.frozenInputConfig,
243675
+ sourceTurnId: invoking.identity.sourceTurnId
242960
243676
  },
242961
243677
  initiatorChainDepth: invoking.chainDepth,
242962
243678
  ...timing,
@@ -242979,11 +243695,11 @@ ${prompt2}` : prompt2;
242979
243695
  await sendSessionChatResult(auth, workspace, manager, storedItem.target.sessionId, expandedItem.prompt, {
242980
243696
  ...resolveTurnDispatchConfig({}),
242981
243697
  taskToolsEnabled: invoking.frozenInputConfig.taskToolsEnabled === true
242982
- }, void 0, auth.userId, {
243698
+ }, void 0, void 0, {
242983
243699
  userTurnId: storedItem.target.userTurnId,
242984
243700
  chainDepth: invoking.chainDepth + 1,
242985
243701
  bypassSessionQuota: shouldBypassSessionQuota("session_chat_many")
242986
- });
243702
+ }, toDelegatedSessionRequester(invoking.identity));
242987
243703
  await withOperationStore((store) => store.markItemInputDurable(ctx.sessionId, args2.operationId, index, materializationClaimToken));
242988
243704
  return markOperationItemInputDurable(storedItem);
242989
243705
  } catch {
@@ -243466,11 +244182,11 @@ ${lines2.join("\n")}` : ""}${suffix}`);
243466
244182
  if (!currentSession) {
243467
244183
  throw new Error(`Session not found: ${ctx.sessionId}`);
243468
244184
  }
243469
- const invoking = args2.agentRoleId ? await resolveInvokingTurnContext(manager, currentSession) : void 0;
244185
+ const invoking = await resolveInvokingTurnContext(currentSession);
243470
244186
  const roleCatalog = args2.agentRoleId ? await loadWorkspaceAgentRoleCatalog(manager, workspace.id) : void 0;
243471
244187
  const resolved = resolveMcpSessionCreate(args2, invoking, currentSession, args2.agentRoleId ? roleCatalog?.get(args2.agentRoleId) : void 0);
243472
244188
  const options = buildMcpCreateOptions(resolved.input, ctx);
243473
- bindMcpCreateContext(options, auth, currentSession);
244189
+ bindMcpCreateContext(options, invoking.identity, currentSession);
243474
244190
  bindAgentRoleCreateOptions(options, resolved.role);
243475
244191
  options.workspaceMetaPrewriteSatisfied = true;
243476
244192
  const result = await createSessionResult(auth, workspace, manager, resolved.prompt, options, resolved.dispatchConfig, buildStructuredOutputOptions(args2));
@@ -243538,7 +244254,8 @@ ${lines2.join("\n")}` : ""}${suffix}`);
243538
244254
  throw new Error(`Session not found: ${sessionId}`);
243539
244255
  }
243540
244256
  assertDifferentMcpSession(currentSession, targetSession);
243541
- const result = await sendSessionChatResult(auth, workspace, manager, sessionId, args2.prompt, resolveTurnDispatchConfig({}), buildStructuredOutputOptions(args2), auth.userId);
244257
+ const invoking = await resolveInvokingTurnContext(currentSession);
244258
+ const result = await sendSessionChatResult(auth, workspace, manager, sessionId, args2.prompt, resolveTurnDispatchConfig({}), buildStructuredOutputOptions(args2), void 0, void 0, toDelegatedSessionRequester(invoking.identity));
243542
244259
  const response2 = {
243543
244260
  ok: true,
243544
244261
  sessionId: result.sessionId,
@@ -246078,7 +246795,7 @@ Other machines will not see it until this machine syncs.`);
246078
246795
  logger2.warn(`[dns] invalid LODY_DNS_RESULT_ORDER value; expected ipv4first|ipv6first|verbatim|node \u2014 falling back to ipv4first`);
246079
246796
  }
246080
246797
  try {
246081
- require$$1$7.setDefaultResultOrder(resolution.order);
246798
+ require$$1$6.setDefaultResultOrder(resolution.order);
246082
246799
  logger2.debug(`[dns] default DNS result order set to ${resolution.order} (${resolution.reason})`);
246083
246800
  } catch (error2) {
246084
246801
  logger2.debug(`[dns] failed to set DNS result order: ${error2 instanceof Error ? error2.message : String(error2)}`);