@parall/daemon 1.58.1 → 1.58.2

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.
@@ -1,6 +1,6 @@
1
1
  {
2
- "version": "1.58.1",
3
- "built_at": "2026-08-31T06:18:26.328Z",
2
+ "version": "1.58.2",
3
+ "built_at": "2026-08-31T17:39:36.772Z",
4
4
  "min_node_version": "20.0.0",
5
5
  "files": {
6
6
  "bb-browser-daemon.js": {
@@ -16,29 +16,29 @@
16
16
  "size": 18
17
17
  },
18
18
  "parall-browser-pod.js": {
19
- "sha256": "110e15542b7816fed7400a3cb1261d876a534fe756480e7a1a82f33d8bbd95dc",
20
- "size": 2972173
19
+ "sha256": "4841b686837495489d1834d25f14fca452daaed9be52ddb4692b302ce2c6d3bc",
20
+ "size": 2972260
21
21
  },
22
22
  "parall-channel-exec.js": {
23
23
  "sha256": "7c2a6e12483a45e9eb4a42cd7d4cdd3c4fa21dd09ac1347d9a3e177b4ddee930",
24
24
  "size": 7220
25
25
  },
26
26
  "parall-claude-agent.js": {
27
- "sha256": "0ed8b74b056eef72f4b3ff16d5a6278fc480fb80cfe8097ad47322cc04a68cc8",
28
- "size": 2815581
27
+ "sha256": "5f59e7dcaca4767befb052001114875411b8e930dfe567eafbced3a78b359985",
28
+ "size": 2815668
29
29
  },
30
30
  "parall-codex-agent.js": {
31
- "sha256": "40da8f4df4790ff923aaf736aab173b1002585b4117e38bf2448e7bad6abec3c",
32
- "size": 2844812
31
+ "sha256": "2a99b85b443e81863cc418a572c35bbad9660868828b634a1a00a87c8840ea8a",
32
+ "size": 2845907
33
33
  },
34
34
  "parall-daemon.js": {
35
- "sha256": "8395ec40201b0dd60d798113947253c3ccf5d25f210470f6d024e8dbc7220e0c",
36
- "size": 3041166
35
+ "sha256": "e2c686bde1bc01107de15c4e970ab85160f9262878ab4b034ff1f4dff4ea15a6",
36
+ "size": 3041257
37
37
  },
38
38
  "parall-openclaw-agent.js": {
39
39
  "sha256": "856a1c3a9ae0ffef8efe2481fa1171dbeb1d67cccb88616aa9bf16da96a69355",
40
40
  "size": 9923
41
41
  }
42
42
  },
43
- "signature": "M7Lk69BP79NRgmmdwtrMToFKNNCT6D44Oop6alLRJDXW6E66Cw0FCrmGo3fOFlLw7P055GiZ86ygM72OVh+xBw=="
43
+ "signature": "aVhILaJo6FTemM7X/iQDr+yuH8gtE/p5B070rqImrvaqz5fnMg9HlHz5h7MsbCtc8zndR68VOBR+rxksbF+GAg=="
44
44
  }
@@ -66909,7 +66909,8 @@ var ParallClient = class _ParallClient extends AttachmentClient {
66909
66909
  * `404 NOT_FOUND`. An installed cross-org clip with no connection yet lists
66910
66910
  * as an empty array — including one whose approved auth mode cannot be
66911
66911
  * configured at all (auth=none), which the write path is what refuses. With
66912
- * `cap:clip-mcp` off the route is not registered at all.
66912
+ * `cap:clip-mcp` off the route is not registered at all. The envelope also
66913
+ * carries `official_oauth_ready` (see MCPConnectionListResponse).
66913
66914
  */
66914
66915
  async listClipMCPConnections(orgId, clipId) {
66915
66916
  return this.request("GET", ENDPOINTS.ORG_CLIP_MCP_CONFIGS(orgId, clipId));
@@ -55008,7 +55008,8 @@ var ParallClient = class _ParallClient extends AttachmentClient {
55008
55008
  * `404 NOT_FOUND`. An installed cross-org clip with no connection yet lists
55009
55009
  * as an empty array — including one whose approved auth mode cannot be
55010
55010
  * configured at all (auth=none), which the write path is what refuses. With
55011
- * `cap:clip-mcp` off the route is not registered at all.
55011
+ * `cap:clip-mcp` off the route is not registered at all. The envelope also
55012
+ * carries `official_oauth_ready` (see MCPConnectionListResponse).
55012
55013
  */
55013
55014
  async listClipMCPConnections(orgId, clipId) {
55014
55015
  return this.request("GET", ENDPOINTS.ORG_CLIP_MCP_CONFIGS(orgId, clipId));
@@ -17719,9 +17719,9 @@ var require_getMachineId_linux = __commonJS({
17719
17719
  var api_1 = (init_esm(), __toCommonJS(esm_exports));
17720
17720
  async function getMachineId() {
17721
17721
  const paths = ["/etc/machine-id", "/var/lib/dbus/machine-id"];
17722
- for (const path12 of paths) {
17722
+ for (const path13 of paths) {
17723
17723
  try {
17724
- const result = await fs_1.promises.readFile(path12, { encoding: "utf8" });
17724
+ const result = await fs_1.promises.readFile(path13, { encoding: "utf8" });
17725
17725
  return result.trim();
17726
17726
  } catch (e) {
17727
17727
  api_1.diag.debug(`error reading machine id: ${e}`);
@@ -21124,7 +21124,7 @@ function appendRootPathToUrlIfNeeded(url) {
21124
21124
  return void 0;
21125
21125
  }
21126
21126
  }
21127
- function appendResourcePathToUrl(url, path12) {
21127
+ function appendResourcePathToUrl(url, path13) {
21128
21128
  try {
21129
21129
  new URL(url);
21130
21130
  } catch (_a) {
@@ -21134,11 +21134,11 @@ function appendResourcePathToUrl(url, path12) {
21134
21134
  if (!url.endsWith("/")) {
21135
21135
  url = url + "/";
21136
21136
  }
21137
- url += path12;
21137
+ url += path13;
21138
21138
  try {
21139
21139
  new URL(url);
21140
21140
  } catch (_b) {
21141
- diag2.warn("Configuration: Provided URL appended with '" + path12 + "' is not a valid URL, using 'undefined' instead of '" + url + "'");
21141
+ diag2.warn("Configuration: Provided URL appended with '" + path13 + "' is not a valid URL, using 'undefined' instead of '" + url + "'");
21142
21142
  return void 0;
21143
21143
  }
21144
21144
  return url;
@@ -27549,14 +27549,14 @@ var require_util2 = __commonJS({
27549
27549
  }
27550
27550
  const port = url.port != null ? url.port : url.protocol === "https:" ? 443 : 80;
27551
27551
  let origin = url.origin != null ? url.origin : `${url.protocol || ""}//${url.hostname || ""}:${port}`;
27552
- let path12 = url.path != null ? url.path : `${url.pathname || ""}${url.search || ""}`;
27552
+ let path13 = url.path != null ? url.path : `${url.pathname || ""}${url.search || ""}`;
27553
27553
  if (origin[origin.length - 1] === "/") {
27554
27554
  origin = origin.slice(0, origin.length - 1);
27555
27555
  }
27556
- if (path12 && path12[0] !== "/") {
27557
- path12 = `/${path12}`;
27556
+ if (path13 && path13[0] !== "/") {
27557
+ path13 = `/${path13}`;
27558
27558
  }
27559
- return new URL(`${origin}${path12}`);
27559
+ return new URL(`${origin}${path13}`);
27560
27560
  }
27561
27561
  if (!isHttpOrHttpsPrefixed(url.origin || url.protocol)) {
27562
27562
  throw new InvalidArgumentError("Invalid URL protocol: the URL must start with `http:` or `https:`.");
@@ -28377,9 +28377,9 @@ var require_diagnostics = __commonJS({
28377
28377
  "undici:client:sendHeaders",
28378
28378
  (evt) => {
28379
28379
  const {
28380
- request: { method, path: path12, origin }
28380
+ request: { method, path: path13, origin }
28381
28381
  } = evt;
28382
- debugLog("sending request to %s %s%s", method, origin, path12);
28382
+ debugLog("sending request to %s %s%s", method, origin, path13);
28383
28383
  }
28384
28384
  );
28385
28385
  }
@@ -28397,14 +28397,14 @@ var require_diagnostics = __commonJS({
28397
28397
  "undici:request:headers",
28398
28398
  (evt) => {
28399
28399
  const {
28400
- request: { method, path: path12, origin },
28400
+ request: { method, path: path13, origin },
28401
28401
  response: { statusCode }
28402
28402
  } = evt;
28403
28403
  debugLog(
28404
28404
  "received response to %s %s%s - HTTP %d",
28405
28405
  method,
28406
28406
  origin,
28407
- path12,
28407
+ path13,
28408
28408
  statusCode
28409
28409
  );
28410
28410
  }
@@ -28413,23 +28413,23 @@ var require_diagnostics = __commonJS({
28413
28413
  "undici:request:trailers",
28414
28414
  (evt) => {
28415
28415
  const {
28416
- request: { method, path: path12, origin }
28416
+ request: { method, path: path13, origin }
28417
28417
  } = evt;
28418
- debugLog("trailers received from %s %s%s", method, origin, path12);
28418
+ debugLog("trailers received from %s %s%s", method, origin, path13);
28419
28419
  }
28420
28420
  );
28421
28421
  diagnosticsChannel.subscribe(
28422
28422
  "undici:request:error",
28423
28423
  (evt) => {
28424
28424
  const {
28425
- request: { method, path: path12, origin },
28425
+ request: { method, path: path13, origin },
28426
28426
  error
28427
28427
  } = evt;
28428
28428
  debugLog(
28429
28429
  "request to %s %s%s errored - %s",
28430
28430
  method,
28431
28431
  origin,
28432
- path12,
28432
+ path13,
28433
28433
  error.message
28434
28434
  );
28435
28435
  }
@@ -28532,7 +28532,7 @@ var require_request = __commonJS({
28532
28532
  var kHandler = Symbol("handler");
28533
28533
  var Request = class {
28534
28534
  constructor(origin, {
28535
- path: path12,
28535
+ path: path13,
28536
28536
  method,
28537
28537
  body,
28538
28538
  headers,
@@ -28549,11 +28549,11 @@ var require_request = __commonJS({
28549
28549
  maxRedirections,
28550
28550
  typeOfService
28551
28551
  }, handler) {
28552
- if (typeof path12 !== "string") {
28552
+ if (typeof path13 !== "string") {
28553
28553
  throw new InvalidArgumentError("path must be a string");
28554
- } else if (path12[0] !== "/" && !(path12.startsWith("http://") || path12.startsWith("https://")) && method !== "CONNECT") {
28554
+ } else if (path13[0] !== "/" && !(path13.startsWith("http://") || path13.startsWith("https://")) && method !== "CONNECT") {
28555
28555
  throw new InvalidArgumentError("path must be an absolute URL or start with a slash");
28556
- } else if (invalidPathRegex.test(path12)) {
28556
+ } else if (invalidPathRegex.test(path13)) {
28557
28557
  throw new InvalidArgumentError("invalid request path");
28558
28558
  }
28559
28559
  if (typeof method !== "string") {
@@ -28628,7 +28628,7 @@ var require_request = __commonJS({
28628
28628
  this.completed = false;
28629
28629
  this.aborted = false;
28630
28630
  this.upgrade = upgrade || null;
28631
- this.path = query ? serializePathWithQuery(path12, query) : path12;
28631
+ this.path = query ? serializePathWithQuery(path13, query) : path13;
28632
28632
  this.origin = origin;
28633
28633
  this.protocol = getProtocolFromUrlString(origin);
28634
28634
  this.idempotent = idempotent == null ? method === "HEAD" || method === "GET" : idempotent;
@@ -33667,7 +33667,7 @@ var require_client_h1 = __commonJS({
33667
33667
  return method !== "GET" && method !== "HEAD" && method !== "OPTIONS" && method !== "TRACE" && method !== "CONNECT";
33668
33668
  }
33669
33669
  function writeH1(client, request3) {
33670
- const { method, path: path12, host, upgrade, blocking, reset } = request3;
33670
+ const { method, path: path13, host, upgrade, blocking, reset } = request3;
33671
33671
  let { body, headers, contentLength } = request3;
33672
33672
  const expectsPayload = method === "PUT" || method === "POST" || method === "PATCH" || method === "QUERY" || method === "PROPFIND" || method === "PROPPATCH";
33673
33673
  if (util.isFormDataLike(body)) {
@@ -33736,7 +33736,7 @@ var require_client_h1 = __commonJS({
33736
33736
  if (socket.setTypeOfService) {
33737
33737
  socket.setTypeOfService(request3.typeOfService);
33738
33738
  }
33739
- let header = `${method} ${path12} HTTP/1.1\r
33739
+ let header = `${method} ${path13} HTTP/1.1\r
33740
33740
  `;
33741
33741
  if (typeof host === "string") {
33742
33742
  header += `host: ${host}\r
@@ -34389,7 +34389,7 @@ var require_client_h2 = __commonJS({
34389
34389
  function writeH2(client, request3) {
34390
34390
  const requestTimeout = request3.bodyTimeout ?? client[kBodyTimeout];
34391
34391
  const session = client[kHTTP2Session];
34392
- const { method, path: path12, host, upgrade, expectContinue, signal, protocol, headers: reqHeaders } = request3;
34392
+ const { method, path: path13, host, upgrade, expectContinue, signal, protocol, headers: reqHeaders } = request3;
34393
34393
  let { body } = request3;
34394
34394
  if (upgrade != null && upgrade !== "websocket") {
34395
34395
  util.errorRequest(client, request3, new InvalidArgumentError(`Custom upgrade "${upgrade}" not supported over HTTP/2`));
@@ -34457,7 +34457,7 @@ var require_client_h2 = __commonJS({
34457
34457
  }
34458
34458
  headers[HTTP2_HEADER_METHOD] = "CONNECT";
34459
34459
  headers[HTTP2_HEADER_PROTOCOL] = "websocket";
34460
- headers[HTTP2_HEADER_PATH] = path12;
34460
+ headers[HTTP2_HEADER_PATH] = path13;
34461
34461
  if (protocol === "ws:" || protocol === "wss:") {
34462
34462
  headers[HTTP2_HEADER_SCHEME] = protocol === "ws:" ? "http" : "https";
34463
34463
  } else {
@@ -34498,7 +34498,7 @@ var require_client_h2 = __commonJS({
34498
34498
  stream.setTimeout(requestTimeout);
34499
34499
  return true;
34500
34500
  }
34501
- headers[HTTP2_HEADER_PATH] = path12;
34501
+ headers[HTTP2_HEADER_PATH] = path13;
34502
34502
  headers[HTTP2_HEADER_SCHEME] = protocol === "http:" ? "http" : "https";
34503
34503
  const expectsPayload = method === "PUT" || method === "POST" || method === "PATCH";
34504
34504
  if (body && typeof body.read === "function") {
@@ -36800,10 +36800,10 @@ var require_proxy_agent = __commonJS({
36800
36800
  };
36801
36801
  const {
36802
36802
  origin,
36803
- path: path12 = "/",
36803
+ path: path13 = "/",
36804
36804
  headers = {}
36805
36805
  } = opts;
36806
- opts.path = origin + path12;
36806
+ opts.path = origin + path13;
36807
36807
  if (!("host" in headers) && !("Host" in headers)) {
36808
36808
  const { host } = new URL(origin);
36809
36809
  headers.host = host;
@@ -38866,20 +38866,20 @@ var require_mock_utils = __commonJS({
38866
38866
  }
38867
38867
  return normalizedQp;
38868
38868
  }
38869
- function safeUrl(path12) {
38870
- if (typeof path12 !== "string") {
38871
- return path12;
38869
+ function safeUrl(path13) {
38870
+ if (typeof path13 !== "string") {
38871
+ return path13;
38872
38872
  }
38873
- const pathSegments = path12.split("?", 3);
38873
+ const pathSegments = path13.split("?", 3);
38874
38874
  if (pathSegments.length !== 2) {
38875
- return path12;
38875
+ return path13;
38876
38876
  }
38877
38877
  const qp = new URLSearchParams(pathSegments.pop());
38878
38878
  qp.sort();
38879
38879
  return [...pathSegments, qp.toString()].join("?");
38880
38880
  }
38881
- function matchKey(mockDispatch2, { path: path12, method, body, headers }) {
38882
- const pathMatch = matchValue(mockDispatch2.path, path12);
38881
+ function matchKey(mockDispatch2, { path: path13, method, body, headers }) {
38882
+ const pathMatch = matchValue(mockDispatch2.path, path13);
38883
38883
  const methodMatch = matchValue(mockDispatch2.method, method);
38884
38884
  const bodyMatch = typeof mockDispatch2.body !== "undefined" ? matchValue(mockDispatch2.body, body) : true;
38885
38885
  const headersMatch = matchHeaders(mockDispatch2, headers);
@@ -38904,8 +38904,8 @@ var require_mock_utils = __commonJS({
38904
38904
  const basePath = key.query ? serializePathWithQuery(key.path, key.query) : key.path;
38905
38905
  const resolvedPath = typeof basePath === "string" ? safeUrl(basePath) : basePath;
38906
38906
  const resolvedPathWithoutTrailingSlash = removeTrailingSlash(resolvedPath);
38907
- let matchedMockDispatches = mockDispatches.filter(({ consumed }) => !consumed).filter(({ path: path12, ignoreTrailingSlash }) => {
38908
- return ignoreTrailingSlash ? matchValue(removeTrailingSlash(safeUrl(path12)), resolvedPathWithoutTrailingSlash) : matchValue(safeUrl(path12), resolvedPath);
38907
+ let matchedMockDispatches = mockDispatches.filter(({ consumed }) => !consumed).filter(({ path: path13, ignoreTrailingSlash }) => {
38908
+ return ignoreTrailingSlash ? matchValue(removeTrailingSlash(safeUrl(path13)), resolvedPathWithoutTrailingSlash) : matchValue(safeUrl(path13), resolvedPath);
38909
38909
  });
38910
38910
  if (matchedMockDispatches.length === 0) {
38911
38911
  throw new MockNotMatchedError(`Mock dispatch not matched for path '${resolvedPath}'`);
@@ -38944,19 +38944,19 @@ var require_mock_utils = __commonJS({
38944
38944
  mockDispatches.splice(index, 1);
38945
38945
  }
38946
38946
  }
38947
- function removeTrailingSlash(path12) {
38948
- while (path12.endsWith("/")) {
38949
- path12 = path12.slice(0, -1);
38947
+ function removeTrailingSlash(path13) {
38948
+ while (path13.endsWith("/")) {
38949
+ path13 = path13.slice(0, -1);
38950
38950
  }
38951
- if (path12.length === 0) {
38952
- path12 = "/";
38951
+ if (path13.length === 0) {
38952
+ path13 = "/";
38953
38953
  }
38954
- return path12;
38954
+ return path13;
38955
38955
  }
38956
38956
  function buildKey(opts) {
38957
- const { path: path12, method, body, headers, query } = opts;
38957
+ const { path: path13, method, body, headers, query } = opts;
38958
38958
  return {
38959
- path: path12,
38959
+ path: path13,
38960
38960
  method,
38961
38961
  body,
38962
38962
  headers,
@@ -39646,10 +39646,10 @@ var require_pending_interceptors_formatter = __commonJS({
39646
39646
  }
39647
39647
  format(pendingInterceptors) {
39648
39648
  const withPrettyHeaders = pendingInterceptors.map(
39649
- ({ method, path: path12, data: { statusCode }, persist, times, timesInvoked, origin }) => ({
39649
+ ({ method, path: path13, data: { statusCode }, persist, times, timesInvoked, origin }) => ({
39650
39650
  Method: method,
39651
39651
  Origin: origin,
39652
- Path: path12,
39652
+ Path: path13,
39653
39653
  "Status code": statusCode,
39654
39654
  Persistent: persist ? PERSISTENT : NOT_PERSISTENT,
39655
39655
  Invocations: timesInvoked,
@@ -39731,9 +39731,9 @@ var require_mock_agent = __commonJS({
39731
39731
  const acceptNonStandardSearchParameters = this[kMockAgentAcceptsNonStandardSearchParameters];
39732
39732
  const dispatchOpts = { ...opts };
39733
39733
  if (acceptNonStandardSearchParameters && dispatchOpts.path) {
39734
- const [path12, searchParams] = dispatchOpts.path.split("?");
39734
+ const [path13, searchParams] = dispatchOpts.path.split("?");
39735
39735
  const normalizedSearchParams = normalizeSearchParams(searchParams, acceptNonStandardSearchParameters);
39736
- dispatchOpts.path = `${path12}?${normalizedSearchParams}`;
39736
+ dispatchOpts.path = `${path13}?${normalizedSearchParams}`;
39737
39737
  }
39738
39738
  return this[kAgent].dispatch(dispatchOpts, handler);
39739
39739
  }
@@ -40134,12 +40134,12 @@ var require_snapshot_recorder = __commonJS({
40134
40134
  * @return {Promise<void>} - Resolves when snapshots are loaded
40135
40135
  */
40136
40136
  async loadSnapshots(filePath) {
40137
- const path12 = filePath || this.#snapshotPath;
40138
- if (!path12) {
40137
+ const path13 = filePath || this.#snapshotPath;
40138
+ if (!path13) {
40139
40139
  throw new InvalidArgumentError("Snapshot path is required");
40140
40140
  }
40141
40141
  try {
40142
- const data = await readFile(resolve4(path12), "utf8");
40142
+ const data = await readFile(resolve4(path13), "utf8");
40143
40143
  const parsed = JSON.parse(data);
40144
40144
  if (Array.isArray(parsed)) {
40145
40145
  this.#snapshots.clear();
@@ -40153,7 +40153,7 @@ var require_snapshot_recorder = __commonJS({
40153
40153
  if (error.code === "ENOENT") {
40154
40154
  this.#snapshots.clear();
40155
40155
  } else {
40156
- throw new UndiciError(`Failed to load snapshots from ${path12}`, { cause: error });
40156
+ throw new UndiciError(`Failed to load snapshots from ${path13}`, { cause: error });
40157
40157
  }
40158
40158
  }
40159
40159
  }
@@ -40164,11 +40164,11 @@ var require_snapshot_recorder = __commonJS({
40164
40164
  * @returns {Promise<void>} - Resolves when snapshots are saved
40165
40165
  */
40166
40166
  async saveSnapshots(filePath) {
40167
- const path12 = filePath || this.#snapshotPath;
40168
- if (!path12) {
40167
+ const path13 = filePath || this.#snapshotPath;
40168
+ if (!path13) {
40169
40169
  throw new InvalidArgumentError("Snapshot path is required");
40170
40170
  }
40171
- const resolvedPath = resolve4(path12);
40171
+ const resolvedPath = resolve4(path13);
40172
40172
  await mkdir2(dirname8(resolvedPath), { recursive: true });
40173
40173
  const data = Array.from(this.#snapshots.entries()).map(([hash, snapshot]) => ({
40174
40174
  hash,
@@ -40793,15 +40793,15 @@ var require_redirect_handler = __commonJS({
40793
40793
  return;
40794
40794
  }
40795
40795
  const { origin, pathname, search } = util.parseURL(new URL(this.location, this.opts.origin && new URL(this.opts.path, this.opts.origin)));
40796
- const path12 = search ? `${pathname}${search}` : pathname;
40797
- const redirectUrlString = `${origin}${path12}`;
40796
+ const path13 = search ? `${pathname}${search}` : pathname;
40797
+ const redirectUrlString = `${origin}${path13}`;
40798
40798
  for (const historyUrl of this.history) {
40799
40799
  if (historyUrl.toString() === redirectUrlString) {
40800
40800
  throw new InvalidArgumentError(`Redirect loop detected. Cannot redirect to ${origin}. This typically happens when using a Client or Pool with cross-origin redirects. Use an Agent for cross-origin redirects.`);
40801
40801
  }
40802
40802
  }
40803
40803
  this.opts.headers = cleanRequestHeaders(this.opts.headers, statusCode === 303, this.opts.origin !== origin);
40804
- this.opts.path = path12;
40804
+ this.opts.path = path13;
40805
40805
  this.opts.origin = origin;
40806
40806
  this.opts.query = null;
40807
40807
  }
@@ -44411,10 +44411,10 @@ var require_headers = __commonJS({
44411
44411
  const lowercaseName = isLowerCase ? name : name.toLowerCase();
44412
44412
  const exists = this.headersMap.get(lowercaseName);
44413
44413
  if (exists) {
44414
- const delimiter2 = lowercaseName === "cookie" ? "; " : ", ";
44414
+ const delimiter3 = lowercaseName === "cookie" ? "; " : ", ";
44415
44415
  this.headersMap.set(lowercaseName, {
44416
44416
  name: exists.name,
44417
- value: `${exists.value}${delimiter2}${value}`
44417
+ value: `${exists.value}${delimiter3}${value}`
44418
44418
  });
44419
44419
  } else {
44420
44420
  this.headersMap.set(lowercaseName, { name, value });
@@ -47008,11 +47008,11 @@ var require_fetch = __commonJS({
47008
47008
  function dispatch({ body }) {
47009
47009
  const url = requestCurrentURL(request3);
47010
47010
  const agent = fetchParams.controller.dispatcher;
47011
- const path12 = url.pathname + url.search;
47011
+ const path13 = url.pathname + url.search;
47012
47012
  const hasTrailingQuestionMark = url.search.length === 0 && url.href[url.href.length - url.hash.length - 1] === "?";
47013
47013
  return new Promise((resolve4, reject) => agent.dispatch(
47014
47014
  {
47015
- path: hasTrailingQuestionMark ? `${path12}?` : path12,
47015
+ path: hasTrailingQuestionMark ? `${path13}?` : path13,
47016
47016
  origin: url.origin,
47017
47017
  method: request3.method,
47018
47018
  body: agent.isMockActive ? request3.body && (request3.body.source || request3.body.stream) : body,
@@ -47959,9 +47959,9 @@ var require_util5 = __commonJS({
47959
47959
  }
47960
47960
  }
47961
47961
  }
47962
- function validateCookiePath(path12) {
47963
- for (let i = 0; i < path12.length; ++i) {
47964
- const code = path12.charCodeAt(i);
47962
+ function validateCookiePath(path13) {
47963
+ for (let i = 0; i < path13.length; ++i) {
47964
+ const code = path13.charCodeAt(i);
47965
47965
  if (code < 32 || // exclude CTLs (0-31)
47966
47966
  code === 127 || // DEL
47967
47967
  code === 59) {
@@ -51131,11 +51131,11 @@ var require_undici = __commonJS({
51131
51131
  if (typeof opts.path !== "string") {
51132
51132
  throw new InvalidArgumentError("invalid opts.path");
51133
51133
  }
51134
- let path12 = opts.path;
51134
+ let path13 = opts.path;
51135
51135
  if (!opts.path.startsWith("/")) {
51136
- path12 = `/${path12}`;
51136
+ path13 = `/${path13}`;
51137
51137
  }
51138
- url = new URL(util.parseOrigin(url).origin + path12);
51138
+ url = new URL(util.parseOrigin(url).origin + path13);
51139
51139
  } else {
51140
51140
  if (!opts) {
51141
51141
  opts = typeof url === "object" ? url : {};
@@ -52603,7 +52603,7 @@ var ParallClient = class _ParallClient extends AttachmentClient {
52603
52603
  return apiError;
52604
52604
  }
52605
52605
  /** Build headers common to all requests (auth, swimlane). */
52606
- buildHeaders(path12, extra) {
52606
+ buildHeaders(path13, extra) {
52607
52607
  const headers = {
52608
52608
  "Content-Type": "application/json",
52609
52609
  ...extra
@@ -52614,7 +52614,7 @@ var ParallClient = class _ParallClient extends AttachmentClient {
52614
52614
  if (this.swimlaneName) {
52615
52615
  headers["X-Prll-Swimlane"] = this.swimlaneName;
52616
52616
  }
52617
- if (path12.startsWith(API_BASE)) {
52617
+ if (path13.startsWith(API_BASE)) {
52618
52618
  const overrides = this.getFeatureFlagOverrides?.();
52619
52619
  if (overrides)
52620
52620
  headers["X-Prll-FF-Override"] = overrides;
@@ -52638,8 +52638,8 @@ var ParallClient = class _ParallClient extends AttachmentClient {
52638
52638
  * is authoritative, so wiki vs api routing can't drift from how a caller
52639
52639
  * happens to invoke the client.
52640
52640
  */
52641
- baseUrlFor(path12) {
52642
- return path12.startsWith(WIKI_BASE) ? this.wikiBaseUrl : this.baseUrl;
52641
+ baseUrlFor(path13) {
52642
+ return path13.startsWith(WIKI_BASE) ? this.wikiBaseUrl : this.baseUrl;
52643
52643
  }
52644
52644
  setToken(token) {
52645
52645
  this.token = token;
@@ -52666,10 +52666,10 @@ var ParallClient = class _ParallClient extends AttachmentClient {
52666
52666
  * REFRESH_THRESHOLD_S, refresh it **before** sending the request.
52667
52667
  * No-op when the token is still fresh, missing, or un-parseable.
52668
52668
  */
52669
- async ensureFreshToken(path12) {
52669
+ async ensureFreshToken(path13) {
52670
52670
  if (!this.token || !this.getRefreshToken)
52671
52671
  return;
52672
- const pathSuffix = path12.replace(/^\/api\/v1/, "");
52672
+ const pathSuffix = path13.replace(/^\/api\/v1/, "");
52673
52673
  if (_ParallClient.AUTH_PATHS.has(pathSuffix))
52674
52674
  return;
52675
52675
  const exp = _ParallClient.decodeJwtExp(this.token);
@@ -52701,11 +52701,11 @@ var ParallClient = class _ParallClient extends AttachmentClient {
52701
52701
  this.refreshPromise = null;
52702
52702
  }
52703
52703
  }
52704
- async request(method, path12, body, query, retried = false, opts) {
52704
+ async request(method, path13, body, query, retried = false, opts) {
52705
52705
  if (!retried) {
52706
- await this.ensureFreshToken(path12);
52706
+ await this.ensureFreshToken(path13);
52707
52707
  }
52708
- let url = `${this.baseUrlFor(path12)}${path12}`;
52708
+ let url = `${this.baseUrlFor(path13)}${path13}`;
52709
52709
  if (query) {
52710
52710
  const params = new URLSearchParams();
52711
52711
  for (const [key, value] of Object.entries(query)) {
@@ -52717,7 +52717,7 @@ var ParallClient = class _ParallClient extends AttachmentClient {
52717
52717
  if (qs)
52718
52718
  url += `?${qs}`;
52719
52719
  }
52720
- const headers = this.buildHeaders(path12, opts?.headers);
52720
+ const headers = this.buildHeaders(path13, opts?.headers);
52721
52721
  const timeoutSignal = AbortSignal.timeout(opts?.timeoutMs ?? 15e3);
52722
52722
  const signal = opts?.signal ? AbortSignal.any([opts.signal, timeoutSignal]) : timeoutSignal;
52723
52723
  let res;
@@ -52735,12 +52735,12 @@ var ParallClient = class _ParallClient extends AttachmentClient {
52735
52735
  throw _ParallClient.normalizeFetchError(err);
52736
52736
  }
52737
52737
  if (res.status === 401) {
52738
- const pathSuffix = path12.replace(/^\/api\/v1/, "");
52738
+ const pathSuffix = path13.replace(/^\/api\/v1/, "");
52739
52739
  const isAuthPath = _ParallClient.AUTH_PATHS.has(pathSuffix);
52740
52740
  if (!retried && !isAuthPath && this.getRefreshToken) {
52741
52741
  const refreshed = await this.tryRefresh();
52742
52742
  if (refreshed) {
52743
- return this.request(method, path12, body, query, true, opts);
52743
+ return this.request(method, path13, body, query, true, opts);
52744
52744
  }
52745
52745
  }
52746
52746
  if (this.onTokenExpired && !isAuthPath) {
@@ -52770,18 +52770,18 @@ var ParallClient = class _ParallClient extends AttachmentClient {
52770
52770
  * hit the 100 MiB cap, so a longer 5-minute timeout is used so a
52771
52771
  * 50 MiB blob on a slow connection doesn't get chopped at 15 s.
52772
52772
  */
52773
- async multipartRequest(method, path12, body, retried = false, opts) {
52773
+ async multipartRequest(method, path13, body, retried = false, opts) {
52774
52774
  if (!retried) {
52775
- await this.ensureFreshToken(path12);
52775
+ await this.ensureFreshToken(path13);
52776
52776
  }
52777
- const { "Content-Type": _drop, ...headers } = this.buildHeaders(path12);
52777
+ const { "Content-Type": _drop, ...headers } = this.buildHeaders(path13);
52778
52778
  void _drop;
52779
52779
  const timeoutMs = opts?.timeoutMs ?? 5 * 60 * 1e3;
52780
52780
  let res;
52781
52781
  try {
52782
52782
  res = await sendMultipartRequest({
52783
52783
  method,
52784
- url: `${this.baseUrlFor(path12)}${path12}`,
52784
+ url: `${this.baseUrlFor(path13)}${path13}`,
52785
52785
  headers,
52786
52786
  body,
52787
52787
  timeoutMs,
@@ -52792,12 +52792,12 @@ var ParallClient = class _ParallClient extends AttachmentClient {
52792
52792
  throw _ParallClient.normalizeFetchError(err);
52793
52793
  }
52794
52794
  if (res.status === 401) {
52795
- const pathSuffix = path12.replace(/^\/api\/v1/, "");
52795
+ const pathSuffix = path13.replace(/^\/api\/v1/, "");
52796
52796
  const isAuthPath = _ParallClient.AUTH_PATHS.has(pathSuffix);
52797
52797
  if (!retried && !isAuthPath && this.getRefreshToken) {
52798
52798
  const refreshed = await this.tryRefresh();
52799
52799
  if (refreshed) {
52800
- return this.multipartRequest(method, path12, body, true, opts);
52800
+ return this.multipartRequest(method, path13, body, true, opts);
52801
52801
  }
52802
52802
  }
52803
52803
  if (this.onTokenExpired && !isAuthPath) {
@@ -53641,8 +53641,8 @@ var ParallClient = class _ParallClient extends AttachmentClient {
53641
53641
  * remote filesystem browse of a member's machine was remote device access.
53642
53642
  * The endpoint now answers 409 LOCAL_BROWSE_NOT_SUPPORTED unconditionally;
53643
53643
  * workspace paths are typed in (or picked on the machine's own Desktop). */
53644
- async browseMachineFilesystem(orgId, machineId, path12) {
53645
- return this.request("POST", ENDPOINTS.MACHINE_BROWSE(orgId, machineId), { path: path12 }, void 0, false, { timeoutMs: 15e3 });
53644
+ async browseMachineFilesystem(orgId, machineId, path13) {
53645
+ return this.request("POST", ENDPOINTS.MACHINE_BROWSE(orgId, machineId), { path: path13 }, void 0, false, { timeoutMs: 15e3 });
53646
53646
  }
53647
53647
  /** Create a new machine key. Returns the raw key string (shown once) + metadata. */
53648
53648
  async createMachineKey(orgId, machineId, name) {
@@ -54216,12 +54216,12 @@ var ParallClient = class _ParallClient extends AttachmentClient {
54216
54216
  async deleteWikiRestriction(orgId, wikiId, restrictionId) {
54217
54217
  await this.request("DELETE", ENDPOINTS.WIKI_RESTRICTION(orgId, wikiId, restrictionId));
54218
54218
  }
54219
- async getWikiAccessStatus(orgId, wikiId, path12) {
54220
- return this.request("GET", ENDPOINTS.WIKI_ACCESS_STATUS(orgId, wikiId), void 0, path12 ? { path: path12 } : void 0);
54219
+ async getWikiAccessStatus(orgId, wikiId, path13) {
54220
+ return this.request("GET", ENDPOINTS.WIKI_ACCESS_STATUS(orgId, wikiId), void 0, path13 ? { path: path13 } : void 0);
54221
54221
  }
54222
54222
  // ---- Wiki membership projection (who-can-access, invites, join/leave) ----
54223
- async getWikiAccessPolicy(orgId, wikiId, path12 = "") {
54224
- return this.request("GET", ENDPOINTS.WIKI_ACCESS_POLICY(orgId, wikiId), void 0, path12 ? { path: path12 } : void 0);
54223
+ async getWikiAccessPolicy(orgId, wikiId, path13 = "") {
54224
+ return this.request("GET", ENDPOINTS.WIKI_ACCESS_POLICY(orgId, wikiId), void 0, path13 ? { path: path13 } : void 0);
54225
54225
  }
54226
54226
  async putWikiAccessPolicy(orgId, wikiId, policy) {
54227
54227
  return this.request("PUT", ENDPOINTS.WIKI_ACCESS_POLICY(orgId, wikiId), policy);
@@ -54266,14 +54266,14 @@ var ParallClient = class _ParallClient extends AttachmentClient {
54266
54266
  async getWikiCommits(orgId, wikiId, params) {
54267
54267
  return this.request("GET", ENDPOINTS.WIKI_COMMITS(orgId, wikiId), void 0, params);
54268
54268
  }
54269
- async getWikiFileCommits(orgId, wikiId, path12, params) {
54269
+ async getWikiFileCommits(orgId, wikiId, path13, params) {
54270
54270
  return this.request("GET", ENDPOINTS.WIKI_FILE_COMMITS(orgId, wikiId), void 0, {
54271
- path: path12,
54271
+ path: path13,
54272
54272
  ...params
54273
54273
  });
54274
54274
  }
54275
- async getWikiBlame(orgId, wikiId, path12, ref) {
54276
- return this.request("GET", ENDPOINTS.WIKI_BLAME(orgId, wikiId), void 0, { path: path12, ref });
54275
+ async getWikiBlame(orgId, wikiId, path13, ref) {
54276
+ return this.request("GET", ENDPOINTS.WIKI_BLAME(orgId, wikiId), void 0, { path: path13, ref });
54277
54277
  }
54278
54278
  // ---- Wiki Operations (audit log) ----
54279
54279
  async getWikiOperations(orgId, wikiId, params) {
@@ -55008,7 +55008,8 @@ var ParallClient = class _ParallClient extends AttachmentClient {
55008
55008
  * `404 NOT_FOUND`. An installed cross-org clip with no connection yet lists
55009
55009
  * as an empty array — including one whose approved auth mode cannot be
55010
55010
  * configured at all (auth=none), which the write path is what refuses. With
55011
- * `cap:clip-mcp` off the route is not registered at all.
55011
+ * `cap:clip-mcp` off the route is not registered at all. The envelope also
55012
+ * carries `official_oauth_ready` (see MCPConnectionListResponse).
55012
55013
  */
55013
55014
  async listClipMCPConnections(orgId, clipId) {
55014
55015
  return this.request("GET", ENDPOINTS.ORG_CLIP_MCP_CONFIGS(orgId, clipId));
@@ -60997,7 +60998,7 @@ function stepIdFilePathForSession(stateDir, sessionKey) {
60997
60998
  // ts/codex-agent/dist/dispatch.js
60998
60999
  import { spawn } from "node:child_process";
60999
61000
  import { randomUUID as randomUUID2 } from "node:crypto";
61000
- import * as path8 from "node:path";
61001
+ import * as path9 from "node:path";
61001
61002
 
61002
61003
  // ts/agent-core/dist/internal/attachment-input.js
61003
61004
  import { execSync } from "node:child_process";
@@ -62067,6 +62068,24 @@ function answerServerRequest(method) {
62067
62068
  return Object.hasOwn(APPROVAL_DENIALS, method) ? APPROVAL_DENIALS[method] : void 0;
62068
62069
  }
62069
62070
 
62071
+ // ts/codex-agent/dist/thread-config.js
62072
+ import * as path8 from "node:path";
62073
+ function buildThreadConfigOverrides({ reasoningEffort, capabilityBinDir: capabilityBinDir2, inheritedPath, platform = process.platform }) {
62074
+ const config = {};
62075
+ if (reasoningEffort)
62076
+ config.model_reasoning_effort = reasoningEffort;
62077
+ if (capabilityBinDir2 && platform !== "win32") {
62078
+ const pathEntries = (inheritedPath ?? "").split(path8.delimiter).filter((entry) => entry && entry !== capabilityBinDir2);
62079
+ const effectivePath = [capabilityBinDir2, ...pathEntries].join(path8.delimiter);
62080
+ config.allow_login_shell = false;
62081
+ config.shell_environment_policy = {
62082
+ experimental_use_profile: false,
62083
+ set: { PATH: effectivePath }
62084
+ };
62085
+ }
62086
+ return Object.keys(config).length > 0 ? config : void 0;
62087
+ }
62088
+
62070
62089
  // ts/codex-agent/dist/event-mapping.js
62071
62090
  var EventMapper = class {
62072
62091
  toolCallStart = /* @__PURE__ */ new Map();
@@ -62529,6 +62548,13 @@ var CodexAppServerAdapter = class {
62529
62548
  if (config.developerInstructions !== void 0)
62530
62549
  this.opts.developerInstructions = config.developerInstructions ?? void 0;
62531
62550
  }
62551
+ threadConfigOverrides() {
62552
+ return buildThreadConfigOverrides({
62553
+ reasoningEffort: this.opts.reasoningEffort,
62554
+ capabilityBinDir: this.opts.capabilityBinDir,
62555
+ inheritedPath: process.env.PATH
62556
+ });
62557
+ }
62532
62558
  async enqueueDuringDispatch(sessionKey, body) {
62533
62559
  const client = this.client;
62534
62560
  if (!client || client.isDisposed())
@@ -62889,9 +62915,9 @@ var CodexAppServerAdapter = class {
62889
62915
  }
62890
62916
  if (this.opts.model)
62891
62917
  forkParams.model = this.opts.model;
62892
- if (this.opts.reasoningEffort) {
62893
- forkParams.config = { model_reasoning_effort: this.opts.reasoningEffort };
62894
- }
62918
+ const threadConfig = this.threadConfigOverrides();
62919
+ if (threadConfig)
62920
+ forkParams.config = threadConfig;
62895
62921
  const result = await client.sendRequest("thread/fork", forkParams);
62896
62922
  const forkedThreadId = extractThreadId(result);
62897
62923
  if (!forkedThreadId) {
@@ -63001,7 +63027,7 @@ var CodexAppServerAdapter = class {
63001
63027
  if (this.opts.capabilityBinDir) {
63002
63028
  const pathKey = IS_WIN32 ? Object.keys(env).find((k) => k.toUpperCase() === "PATH") ?? "PATH" : "PATH";
63003
63029
  const existing = env[pathKey];
63004
- env[pathKey] = existing ? `${this.opts.capabilityBinDir}${path8.delimiter}${existing}` : this.opts.capabilityBinDir;
63030
+ env[pathKey] = existing ? `${this.opts.capabilityBinDir}${path9.delimiter}${existing}` : this.opts.capabilityBinDir;
63005
63031
  }
63006
63032
  if (this.opts.contextFilePath) {
63007
63033
  env.PRLL_CONTEXT_FILE = this.opts.contextFilePath;
@@ -63103,9 +63129,9 @@ var CodexAppServerAdapter = class {
63103
63129
  }
63104
63130
  if (this.opts.model)
63105
63131
  commonParams.model = this.opts.model;
63106
- if (this.opts.reasoningEffort) {
63107
- commonParams.config = { model_reasoning_effort: this.opts.reasoningEffort };
63108
- }
63132
+ const threadConfig = this.threadConfigOverrides();
63133
+ if (threadConfig)
63134
+ commonParams.config = threadConfig;
63109
63135
  const method = opts.resumeId ? "thread/resume" : "thread/start";
63110
63136
  const params = opts.resumeId ? {
63111
63137
  threadId: opts.resumeId,
@@ -63168,7 +63194,7 @@ function errToString2(err) {
63168
63194
 
63169
63195
  // ts/codex-agent/dist/session-manager.js
63170
63196
  import * as fs8 from "node:fs";
63171
- import * as path9 from "node:path";
63197
+ import * as path10 from "node:path";
63172
63198
  var CodexSessionManager = class {
63173
63199
  mainSessionKey;
63174
63200
  stateFilePath;
@@ -63265,7 +63291,7 @@ var CodexSessionManager = class {
63265
63291
  if (!threadId)
63266
63292
  return;
63267
63293
  try {
63268
- fs8.mkdirSync(path9.dirname(this.stateFilePath), { recursive: true });
63294
+ fs8.mkdirSync(path10.dirname(this.stateFilePath), { recursive: true });
63269
63295
  const tmpPath = `${this.stateFilePath}.tmp`;
63270
63296
  const state = { runtimeKey: this.mainSessionKey, threadId };
63271
63297
  const effectiveSha = this.effectiveInstructionsShas.get(this.mainSessionKey);
@@ -63281,18 +63307,18 @@ var CodexSessionManager = class {
63281
63307
 
63282
63308
  // ts/codex-agent/dist/workspace.js
63283
63309
  import * as fs10 from "node:fs";
63284
- import * as path11 from "node:path";
63310
+ import * as path12 from "node:path";
63285
63311
 
63286
63312
  // ts/codex-agent/dist/legacy-workspace-config-migration.js
63287
63313
  import * as fs9 from "node:fs";
63288
- import * as path10 from "node:path";
63314
+ import * as path11 from "node:path";
63289
63315
  var LEGACY_CONFIG_RELPATH = [".codex", "config.toml"];
63290
63316
  var MIGRATION_SENTINEL_RELPATH = [".parall", "legacy-workspace-config-migration.v1"];
63291
63317
  function legacyWorkspaceConfigPath(workspaceDir) {
63292
- return path10.join(workspaceDir, ...LEGACY_CONFIG_RELPATH);
63318
+ return path11.join(workspaceDir, ...LEGACY_CONFIG_RELPATH);
63293
63319
  }
63294
63320
  function migrationSentinelPath(workspaceDir) {
63295
- return path10.join(workspaceDir, ...MIGRATION_SENTINEL_RELPATH);
63321
+ return path11.join(workspaceDir, ...MIGRATION_SENTINEL_RELPATH);
63296
63322
  }
63297
63323
  function legacyWorkspaceConfigToml(prompt) {
63298
63324
  return `developer_instructions = """
@@ -63344,7 +63370,7 @@ If a stale .codex/config.toml is still present, remove it by hand.
63344
63370
  `;
63345
63371
  function claimLegacyWorkspaceConfigMigration(workspaceDir) {
63346
63372
  const sentinel = migrationSentinelPath(workspaceDir);
63347
- fs9.mkdirSync(path10.dirname(sentinel), { recursive: true });
63373
+ fs9.mkdirSync(path11.dirname(sentinel), { recursive: true });
63348
63374
  try {
63349
63375
  fs9.writeFileSync(sentinel, SENTINEL_BODY, { flag: "wx" });
63350
63376
  return "claimed";
@@ -63410,9 +63436,9 @@ function sleepSync(ms) {
63410
63436
  Atomics.wait(SLEEP_SIGNAL, 0, 0, ms);
63411
63437
  }
63412
63438
  function withConfigLock(codexHome, log2, fn) {
63413
- const queueDir = path11.join(codexHome, "config.toml.lock.d");
63439
+ const queueDir = path12.join(codexHome, "config.toml.lock.d");
63414
63440
  let ticketName = bakeryEnqueue(queueDir);
63415
- let ticketPath = ticketName ? path11.join(queueDir, ticketName) : "";
63441
+ let ticketPath = ticketName ? path12.join(queueDir, ticketName) : "";
63416
63442
  let acquired = false;
63417
63443
  let heldPath = "";
63418
63444
  const deadline = Date.now() + CONFIG_LOCK_TIMINGS.waitMs;
@@ -63427,7 +63453,7 @@ function withConfigLock(codexHome, log2, fn) {
63427
63453
  ticketName = bakeryEnqueue(queueDir);
63428
63454
  if (!ticketName)
63429
63455
  break;
63430
- ticketPath = path11.join(queueDir, ticketName);
63456
+ ticketPath = path12.join(queueDir, ticketName);
63431
63457
  continue;
63432
63458
  }
63433
63459
  const now = Date.now();
@@ -63435,7 +63461,7 @@ function withConfigLock(codexHome, log2, fn) {
63435
63461
  let blocked = false;
63436
63462
  let head;
63437
63463
  for (const name of names) {
63438
- const entryPath = path11.join(queueDir, name);
63464
+ const entryPath = path12.join(queueDir, name);
63439
63465
  if (name.startsWith("held-")) {
63440
63466
  const enteredAt = Number.parseInt(name.slice(5, 20), 10);
63441
63467
  if (Number.isFinite(enteredAt) && now - enteredAt > CONFIG_LOCK_TIMINGS.staleMs) {
@@ -63478,7 +63504,7 @@ function withConfigLock(codexHome, log2, fn) {
63478
63504
  if (!blocked && head === ticketName) {
63479
63505
  CONFIG_LOCK_TEST_HOOKS.beforeTicketEntry?.();
63480
63506
  const heldName = `held-${String(Date.now()).padStart(15, "0")}-${ticketName.slice(2)}`;
63481
- const candidateHeldPath = path11.join(queueDir, heldName);
63507
+ const candidateHeldPath = path12.join(queueDir, heldName);
63482
63508
  try {
63483
63509
  fs10.renameSync(ticketPath, candidateHeldPath);
63484
63510
  } catch {
@@ -63519,7 +63545,7 @@ var CONFIG_LOCK_TEST_HOOKS = {};
63519
63545
  function bakeryEnqueue(queueDir) {
63520
63546
  for (let attempt = 0; attempt < 3; attempt++) {
63521
63547
  const token = `${process.pid}-${Math.random().toString(36).slice(2, 10)}`;
63522
- const markerPath = path11.join(queueDir, `choosing-${token}`);
63548
+ const markerPath = path12.join(queueDir, `choosing-${token}`);
63523
63549
  try {
63524
63550
  fs10.mkdirSync(queueDir, { recursive: true });
63525
63551
  CONFIG_LOCK_TEST_HOOKS.beforeChoosingMarker?.();
@@ -63537,7 +63563,7 @@ function bakeryEnqueue(queueDir) {
63537
63563
  maxSeq = seq;
63538
63564
  }
63539
63565
  const ticketName = `t-${String(maxSeq + 1).padStart(10, "0")}-${token}`;
63540
- const ticketPath = path11.join(queueDir, ticketName);
63566
+ const ticketPath = path12.join(queueDir, ticketName);
63541
63567
  CONFIG_LOCK_TEST_HOOKS.beforeTicketPublish?.();
63542
63568
  fs10.renameSync(markerPath, ticketPath);
63543
63569
  try {
@@ -63591,7 +63617,7 @@ function resolveWriteTarget(filePath) {
63591
63617
  throw err;
63592
63618
  }
63593
63619
  const seen = /* @__PURE__ */ new Set();
63594
- let p = path11.resolve(filePath);
63620
+ let p = path12.resolve(filePath);
63595
63621
  for (let depth = 0; depth < 40; depth++) {
63596
63622
  if (seen.has(p)) {
63597
63623
  throw new Error(`symlink cycle at ${p} while resolving ${filePath}`);
@@ -63606,7 +63632,7 @@ function resolveWriteTarget(filePath) {
63606
63632
  return p;
63607
63633
  throw err;
63608
63634
  }
63609
- p = path11.resolve(path11.dirname(p), link);
63635
+ p = path12.resolve(path12.dirname(p), link);
63610
63636
  }
63611
63637
  throw new Error(`symlink chain deeper than 40 while resolving ${filePath}`);
63612
63638
  }
@@ -63655,7 +63681,7 @@ function ensureParallProvider(codexHome, apiUrl, log2, opts) {
63655
63681
  withConfigLock(codexHome, log2, () => ensureParallProviderLocked(codexHome, apiUrl, opts));
63656
63682
  }
63657
63683
  function ensureParallProviderLocked(codexHome, apiUrl, opts) {
63658
- const configPath = path11.join(codexHome, "config.toml");
63684
+ const configPath = path12.join(codexHome, "config.toml");
63659
63685
  const baseUrl = apiUrl.replace(/\/$/, "") + "/api/llm/v1";
63660
63686
  try {
63661
63687
  let content = "";
@@ -63701,11 +63727,11 @@ function findSectionEnd(content, fromIndex) {
63701
63727
  return nextHeader === -1 ? content.length : nextHeader;
63702
63728
  }
63703
63729
  function systemPromptCopyPath(workspaceDir) {
63704
- return path11.join(workspaceDir, ".parall", "system-prompt.md");
63730
+ return path12.join(workspaceDir, ".parall", "system-prompt.md");
63705
63731
  }
63706
63732
  function writeCodexSystemPrompt(workspaceDir, agentIdentity, capabilityFragments) {
63707
63733
  const systemPrompt = buildCodexPlatformInstructions(workspaceDir, agentIdentity, capabilityFragments);
63708
- fs10.mkdirSync(path11.join(workspaceDir, ".parall"), { recursive: true });
63734
+ fs10.mkdirSync(path12.join(workspaceDir, ".parall"), { recursive: true });
63709
63735
  fs10.writeFileSync(systemPromptCopyPath(workspaceDir), systemPrompt, "utf8");
63710
63736
  return systemPrompt;
63711
63737
  }
@@ -63713,7 +63739,7 @@ function ensureCodexWorkspace(workspaceDir, log2, agentIdentity, capabilityFragm
63713
63739
  fs10.mkdirSync(workspaceDir, { recursive: true });
63714
63740
  runLegacyWorkspaceConfigMigration(workspaceDir, () => readAuthorshipProof(workspaceDir, log2), log2);
63715
63741
  const systemPrompt = writeCodexSystemPrompt(workspaceDir, agentIdentity, capabilityFragments);
63716
- writeSkillFiles(path11.join(workspaceDir, ".parall", "skills"));
63742
+ writeSkillFiles(path12.join(workspaceDir, ".parall", "skills"));
63717
63743
  return systemPrompt;
63718
63744
  }
63719
63745
  function readAuthorshipProof(workspaceDir, log2) {
@@ -3780,7 +3780,8 @@ var init_client = __esm({
3780
3780
  * `404 NOT_FOUND`. An installed cross-org clip with no connection yet lists
3781
3781
  * as an empty array — including one whose approved auth mode cannot be
3782
3782
  * configured at all (auth=none), which the write path is what refuses. With
3783
- * `cap:clip-mcp` off the route is not registered at all.
3783
+ * `cap:clip-mcp` off the route is not registered at all. The envelope also
3784
+ * carries `official_oauth_ready` (see MCPConnectionListResponse).
3784
3785
  */
3785
3786
  async listClipMCPConnections(orgId, clipId) {
3786
3787
  return this.request("GET", ENDPOINTS.ORG_CLIP_MCP_CONFIGS(orgId, clipId));
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@parall/daemon",
3
- "version": "1.58.1",
3
+ "version": "1.58.2",
4
4
  "description": "Parall local agent runtime — daemon supervisor + bridge runtimes, bundled as standalone JS files",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -33,11 +33,11 @@
33
33
  "@aws-sdk/client-s3": "3.984.0",
34
34
  "@pinixai/bb-browser-pro": "0.15.0",
35
35
  "ws": "^8.18.0",
36
- "@parall/sdk": "1.58.1",
37
- "@parall/agent-core": "1.58.1",
38
- "@parall/claude-agent": "1.58.1",
39
- "@parall/codex-agent": "1.58.1",
40
- "@parall/openclaw-agent": "1.58.1"
36
+ "@parall/agent-core": "1.58.2",
37
+ "@parall/sdk": "1.58.2",
38
+ "@parall/claude-agent": "1.58.2",
39
+ "@parall/codex-agent": "1.58.2",
40
+ "@parall/openclaw-agent": "1.58.2"
41
41
  },
42
42
  "devDependencies": {
43
43
  "@types/node": "^22.0.0",