@runweave/server-linux-x64 0.1.23 → 0.1.25

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (119) hide show
  1. package/manifest.json +231 -226
  2. package/native.tar.gz +0 -0
  3. package/package.json +1 -1
  4. package/payload/app-server/build-info.json +4 -4
  5. package/payload/app-server/index.cjs +46 -25
  6. package/payload/app-server/index.cjs.map +1 -1
  7. package/payload/backend/activity-sqlite-worker.cjs +33 -21
  8. package/payload/backend/build-info.json +4 -4
  9. package/payload/backend/dev-resources/control.cjs +158 -59
  10. package/payload/backend/index.cjs +3512 -2764
  11. package/payload/backend/scheduled-tasks-sqlite-worker.cjs +12 -0
  12. package/payload/frontend/dist/assets/{_baseUniq-V9OGBCCp.js → _baseUniq-pNlq_DCQ.js} +1 -1
  13. package/payload/frontend/dist/assets/{access-Bw9yaM2u.js → access-BJmFgyT9.js} +1 -1
  14. package/payload/frontend/dist/assets/{advanced-BspSUvyf.js → advanced-B1_D3p4w.js} +1 -1
  15. package/payload/frontend/dist/assets/{appearance-BHYR2QUj.js → appearance-CSQVEVTh.js} +1 -1
  16. package/payload/frontend/dist/assets/{arc-C4bVuMy6.js → arc-DE1dO7p3.js} +1 -1
  17. package/payload/frontend/dist/assets/{architectureDiagram-Q4EWVU46-B_EOBe6n.js → architectureDiagram-Q4EWVU46-QKJomhdt.js} +1 -1
  18. package/payload/frontend/dist/assets/{blockDiagram-DXYQGD6D-aAkbmNO9.js → blockDiagram-DXYQGD6D-CV58X8VO.js} +1 -1
  19. package/payload/frontend/dist/assets/{c4Diagram-AHTNJAMY-DKeUolGU.js → c4Diagram-AHTNJAMY-DPu-RnDw.js} +1 -1
  20. package/payload/frontend/dist/assets/channel-DWLRGtq3.js +1 -0
  21. package/payload/frontend/dist/assets/{chunk-4BX2VUAB-cB5sH0Mw.js → chunk-4BX2VUAB-COwHdW0x.js} +1 -1
  22. package/payload/frontend/dist/assets/{chunk-4TB4RGXK-CxVRfINM.js → chunk-4TB4RGXK-StHcdOx9.js} +1 -1
  23. package/payload/frontend/dist/assets/{chunk-55IACEB6-BFRLEEBY.js → chunk-55IACEB6-D7PMYZ35.js} +1 -1
  24. package/payload/frontend/dist/assets/{chunk-EDXVE4YY-DA5BuoT3.js → chunk-EDXVE4YY-D84apqdf.js} +1 -1
  25. package/payload/frontend/dist/assets/{chunk-FMBD7UC4-DIvA96Y1.js → chunk-FMBD7UC4-CJmwcVvj.js} +1 -1
  26. package/payload/frontend/dist/assets/{chunk-OYMX7WX6-8Zl-vtJp.js → chunk-OYMX7WX6-DQhh6xQp.js} +1 -1
  27. package/payload/frontend/dist/assets/{chunk-QZHKN3VN-DnW4X6Wx.js → chunk-QZHKN3VN-C6X5cUuc.js} +1 -1
  28. package/payload/frontend/dist/assets/{chunk-YZCP3GAM-CH4YkXv-.js → chunk-YZCP3GAM-CryVThNG.js} +1 -1
  29. package/payload/frontend/dist/assets/classDiagram-6PBFFD2Q-B2WrDPFz.js +1 -0
  30. package/payload/frontend/dist/assets/classDiagram-v2-HSJHXN6E-B2WrDPFz.js +1 -0
  31. package/payload/frontend/dist/assets/clone-BJQLpgjC.js +1 -0
  32. package/payload/frontend/dist/assets/{connection-CINMNAPm.js → connection-425RE3U4.js} +1 -1
  33. package/payload/frontend/dist/assets/{connections-DsHGQRR2.js → connections-Dx05bPzL.js} +1 -1
  34. package/payload/frontend/dist/assets/{cose-bilkent-S5V4N54A-Dm1QOjDr.js → cose-bilkent-S5V4N54A-DqICEhiJ.js} +1 -1
  35. package/payload/frontend/dist/assets/{dagre-KV5264BT-BEbPPDoW.js → dagre-KV5264BT-SyIBcIz3.js} +1 -1
  36. package/payload/frontend/dist/assets/{desktop-1jdcRQ7b.js → desktop-DBzea7Bt.js} +1 -1
  37. package/payload/frontend/dist/assets/{diagram-5BDNPKRD-C-DmBIhV.js → diagram-5BDNPKRD-xS_FVHQR.js} +1 -1
  38. package/payload/frontend/dist/assets/{diagram-G4DWMVQ6-Ddv6Kw2_.js → diagram-G4DWMVQ6-CLuycLkG.js} +1 -1
  39. package/payload/frontend/dist/assets/{diagram-MMDJMWI5-Xae79J8R.js → diagram-MMDJMWI5-BTNd9OzE.js} +1 -1
  40. package/payload/frontend/dist/assets/{diagram-TYMM5635-CavrGRG2.js → diagram-TYMM5635-DyxLhyoy.js} +1 -1
  41. package/payload/frontend/dist/assets/{erDiagram-SMLLAGMA-BRRD8F-e.js → erDiagram-SMLLAGMA-C2a9uz8_.js} +1 -1
  42. package/payload/frontend/dist/assets/{flowDiagram-DWJPFMVM-C-ewssi0.js → flowDiagram-DWJPFMVM-DndbO3ER.js} +1 -1
  43. package/payload/frontend/dist/assets/{ganttDiagram-T4ZO3ILL-BcZnXV6L.js → ganttDiagram-T4ZO3ILL-BSV1btDD.js} +1 -1
  44. package/payload/frontend/dist/assets/{gitGraphDiagram-UUTBAWPF-ZcfWVMGG.js → gitGraphDiagram-UUTBAWPF-DnYc3Xm2.js} +1 -1
  45. package/payload/frontend/dist/assets/{graph-DRJG1bKF.js → graph-iOswNacw.js} +1 -1
  46. package/payload/frontend/dist/assets/{image-GQYH_1h4.js → image-BaXi5ATy.js} +1 -1
  47. package/payload/frontend/dist/assets/index-BRwhFF-d.js +1258 -0
  48. package/payload/frontend/dist/assets/{infoDiagram-42DDH7IO-BWsoBaYn.js → infoDiagram-42DDH7IO-BoWdmtBx.js} +1 -1
  49. package/payload/frontend/dist/assets/{ishikawaDiagram-UXIWVN3A-C3ayGr4G.js → ishikawaDiagram-UXIWVN3A-B8KC_SgA.js} +1 -1
  50. package/payload/frontend/dist/assets/{journeyDiagram-VCZTEJTY-DB1DxZ1v.js → journeyDiagram-VCZTEJTY-CN_MxT78.js} +1 -1
  51. package/payload/frontend/dist/assets/{kanban-definition-6JOO6SKY-CtZWN0CK.js → kanban-definition-6JOO6SKY-j17QaQ4r.js} +1 -1
  52. package/payload/frontend/dist/assets/{layout-KX5XwX_6.js → layout-CLR2o63S.js} +1 -1
  53. package/payload/frontend/dist/assets/{linear-DMZrhooi.js → linear-CL0d3XrR.js} +1 -1
  54. package/payload/frontend/dist/assets/main-BO-hQK7n.css +33 -0
  55. package/payload/frontend/dist/assets/{main-LH8ULGFT.js → main-DWkxAGaw.js} +142 -142
  56. package/payload/frontend/dist/assets/{min-CWc1cxEQ.js → min-2aYi0G6U.js} +1 -1
  57. package/payload/frontend/dist/assets/{mindmap-definition-QFDTVHPH-tj_8hDDH.js → mindmap-definition-QFDTVHPH-CxVQlE5J.js} +1 -1
  58. package/payload/frontend/dist/assets/{monitoring-BaUd-PhH.js → monitoring-GwSez8fI.js} +1 -1
  59. package/payload/frontend/dist/assets/{notifications-CTv1WVBh.js → notifications-Bx24ROH2.js} +1 -1
  60. package/payload/frontend/dist/assets/{pieDiagram-DEJITSTG-Cwc4Gfp4.js → pieDiagram-DEJITSTG-CpRHmWOC.js} +1 -1
  61. package/payload/frontend/dist/assets/{quadrantDiagram-34T5L4WZ-Clq2RqDJ.js → quadrantDiagram-34T5L4WZ-CZG_QGX1.js} +1 -1
  62. package/payload/frontend/dist/assets/{record-content-DQ0F1zbW.js → record-content-Di3pmXSa.js} +1 -1
  63. package/payload/frontend/dist/assets/{requirementDiagram-MS252O5E-gaTHj3JP.js → requirementDiagram-MS252O5E-C1PCFhMe.js} +1 -1
  64. package/payload/frontend/dist/assets/{sankeyDiagram-XADWPNL6-CyBolt3D.js → sankeyDiagram-XADWPNL6-RxkobNrx.js} +1 -1
  65. package/payload/frontend/dist/assets/{sequenceDiagram-FGHM5R23-CO4UgRHw.js → sequenceDiagram-FGHM5R23-Bem61Ef-.js} +1 -1
  66. package/payload/frontend/dist/assets/{stateDiagram-FHFEXIEX-ygBwN1Az.js → stateDiagram-FHFEXIEX-DaHV-La3.js} +1 -1
  67. package/payload/frontend/dist/assets/stateDiagram-v2-QKLJ7IA2-VVMK0Gty.js +1 -0
  68. package/payload/frontend/dist/assets/{status-BOcUUbE9.js → status-DytAqsKi.js} +1 -1
  69. package/payload/frontend/dist/assets/suiji-ClmlHdOg.js +1 -0
  70. package/payload/frontend/dist/assets/{svg-BfkbqvDT.js → svg-BNFCoAlV.js} +1 -1
  71. package/payload/frontend/dist/assets/{tabs-88TVAJwX.js → tabs-CNVBHmw-.js} +1 -1
  72. package/payload/frontend/dist/assets/{timeline-definition-GMOUNBTQ-8Iy3eg4l.js → timeline-definition-GMOUNBTQ-xVCcgT05.js} +1 -1
  73. package/payload/frontend/dist/assets/{vennDiagram-DHZGUBPP-DLcttV2t.js → vennDiagram-DHZGUBPP-D4YvcLlt.js} +1 -1
  74. package/payload/frontend/dist/assets/{wardley-RL74JXVD-DUvr0OYP.js → wardley-RL74JXVD-WtdSbuj2.js} +1 -1
  75. package/payload/frontend/dist/assets/{wardleyDiagram-NUSXRM2D-Dm-sdRY6.js → wardleyDiagram-NUSXRM2D-Br4RBb8X.js} +1 -1
  76. package/payload/frontend/dist/assets/{xychartDiagram-5P7HB3ND-DR_MOYh1.js → xychartDiagram-5P7HB3ND-Dx8RJOfi.js} +1 -1
  77. package/payload/frontend/dist/build-info.json +4 -4
  78. package/payload/frontend/dist/companion.html +1 -1
  79. package/payload/frontend/dist/index.html +3 -3
  80. package/payload/plugins/toolkit/.codex-plugin/plugin.json +1 -1
  81. package/payload/plugins/toolkit/README.md +3 -3
  82. package/payload/plugins/toolkit/skills/acceptance/SKILL.md +4 -2
  83. package/payload/plugins/toolkit/skills/acceptance/references/delivery.md +11 -1
  84. package/payload/plugins/toolkit/skills/acceptance/references/gallery-contract.md +62 -39
  85. package/payload/plugins/toolkit/skills/acceptance/references/gallery-copy.md +8 -0
  86. package/payload/plugins/toolkit/skills/acceptance/scripts/delivery_check.py +151 -0
  87. package/payload/plugins/toolkit/skills/acceptance/scripts/gallery.py +67 -11
  88. package/payload/plugins/toolkit/skills/acceptance/scripts/preview.py +21 -2
  89. package/payload/plugins/toolkit/skills/acceptance/templates/reader.css +1 -14
  90. package/payload/plugins/toolkit/skills/acceptance/templates/reader.html +23 -4
  91. package/payload/plugins/toolkit/skills/acceptance/templates/reader.js +76 -3
  92. package/payload/plugins/toolkit/skills/acceptance/templates/report.css +80 -0
  93. package/payload/plugins/toolkit/skills/architecture-flow-prototyping/SKILL.md +2 -2
  94. package/payload/plugins/toolkit/skills/playwright-cli/SKILL.md +19 -6
  95. package/payload/plugins/toolkit/skills/review-only/SKILL.md +29 -4
  96. package/payload/plugins/toolkit/skills/review-only/references/delivery-verification.md +38 -0
  97. package/payload/plugins/toolkit/skills/using-rw/SKILL.md +37 -1
  98. package/payload/plugins/toolkit/skills/visual-plan-review/SKILL.md +45 -0
  99. package/payload/plugins/toolkit/skills/visual-plan-review/agents/openai.yaml +3 -0
  100. package/payload/plugins/toolkit/skills/visual-plan-review/references/review-checklist.md +13 -0
  101. package/payload/plugins/toolkit/skills/visual-plan-review/references/visual-plan-template.html +8 -0
  102. package/payload/plugins/toolkit-release.json +1 -1
  103. package/payload/pty-host/index.cjs +217 -41
  104. package/payload/server/index.cjs +40 -20
  105. package/payload/frontend/dist/assets/channel-CBjt7igT.js +0 -1
  106. package/payload/frontend/dist/assets/classDiagram-6PBFFD2Q-HmoWChAG.js +0 -1
  107. package/payload/frontend/dist/assets/classDiagram-v2-HSJHXN6E-HmoWChAG.js +0 -1
  108. package/payload/frontend/dist/assets/clone-CiD5LYOe.js +0 -1
  109. package/payload/frontend/dist/assets/index-UR7g5PLZ.js +0 -448
  110. package/payload/frontend/dist/assets/main-D4_uoZQa.css +0 -33
  111. package/payload/frontend/dist/assets/stateDiagram-v2-QKLJ7IA2-DTtHtWkN.js +0 -1
  112. package/payload/frontend/dist/assets/suiji-DPDKlWVi.js +0 -1
  113. package/payload/plugins/toolkit/skills/prototype-first-development/SKILL.md +0 -134
  114. package/payload/plugins/toolkit/skills/prototype-first-development/references/html-prototype-template/README.md +0 -88
  115. package/payload/plugins/toolkit/skills/prototype-first-development/references/html-prototype-template/app.js +0 -145
  116. package/payload/plugins/toolkit/skills/prototype-first-development/references/html-prototype-template/index.html +0 -229
  117. package/payload/plugins/toolkit/skills/prototype-first-development/references/html-prototype-template/mock-state.json +0 -60
  118. package/payload/plugins/toolkit/skills/prototype-first-development/references/implementation-plan-handoff-template.md +0 -61
  119. package/payload/plugins/toolkit/skills/prototype-first-development/references/prototype-workflow-checklist.md +0 -64
@@ -11993,7 +11993,7 @@ var activityEventSchema = external_exports.object({
11993
11993
 
11994
11994
  // backend/src/activity/security/crypto.ts
11995
11995
  var import_node_crypto = __toESM(require("node:crypto"), 1);
11996
- var import_node_child_process2 = require("node:child_process");
11996
+ var import_node_child_process3 = require("node:child_process");
11997
11997
  var import_node_fs2 = require("node:fs");
11998
11998
  var import_node_path = __toESM(require("node:path"), 1);
11999
11999
 
@@ -12013,9 +12013,9 @@ var ConfigurationError = class extends Error {
12013
12013
 
12014
12014
  // packages/config-node/src/windows-permissions.ts
12015
12015
  var import_node_child_process = require("node:child_process");
12016
- function assertWindowsPrivatePath(file) {
12017
- if (process.platform !== "win32") return;
12018
- const script = `
12016
+ var import_node_util = require("node:util");
12017
+ var executeFile = (0, import_node_util.promisify)(import_node_child_process.execFile);
12018
+ var script = `
12019
12019
  $ErrorActionPreference = 'Stop'
12020
12020
  try {
12021
12021
  # Use .NET directly: a parent pwsh may export a PSModulePath incompatible with Windows PowerShell.
@@ -12033,6 +12033,27 @@ foreach ($rule in $acl.GetAccessRules($true, $true, [Security.Principal.Security
12033
12033
  [Console]::Write('check-failed:' + $_.Exception.GetType().FullName + ':' + $_.Exception.HResult)
12034
12034
  }
12035
12035
  `;
12036
+ function checkFailure(file, startedAt, cause) {
12037
+ const error = cause;
12038
+ const timedOut = error.code === "ETIMEDOUT" || error.killed === true && error.signal === "SIGTERM" && error.code == null;
12039
+ return new ConfigurationError(
12040
+ timedOut ? "CONFIG_WINDOWS_ACL_CHECK_TIMEOUT" : "CONFIG_WINDOWS_ACL_CHECK_FAILED",
12041
+ [
12042
+ file,
12043
+ `exit=${error.status ?? "none"}`,
12044
+ `signal=${error.signal ?? "none"}`,
12045
+ `code=${error.code ?? "none"}`,
12046
+ `elapsedMs=${Math.round(performance.now() - startedAt)}`
12047
+ ]
12048
+ );
12049
+ }
12050
+ function assertResult(file, result) {
12051
+ if (result === "owner" || result === "access") throw new ConfigurationError("CONFIG_WINDOWS_ACL_NOT_PRIVATE", [file, result]);
12052
+ if (/^check-failed:[A-Za-z0-9_.]+:-?\d+$/.test(result)) throw new ConfigurationError("CONFIG_WINDOWS_ACL_CHECK_FAILED", [file, result]);
12053
+ if (result !== "private") throw new ConfigurationError("CONFIG_WINDOWS_ACL_CHECK_FAILED", [file, "invalid-result"]);
12054
+ }
12055
+ function assertWindowsPrivatePath(file) {
12056
+ if (process.platform !== "win32") return;
12036
12057
  const startedAt = performance.now();
12037
12058
  let result;
12038
12059
  try {
@@ -12045,21 +12066,9 @@ foreach ($rule in $acl.GetAccessRules($true, $true, [Security.Principal.Security
12045
12066
  windowsHide: true
12046
12067
  }).trim();
12047
12068
  } catch (cause) {
12048
- const error = cause;
12049
- throw new ConfigurationError(
12050
- error.code === "ETIMEDOUT" ? "CONFIG_WINDOWS_ACL_CHECK_TIMEOUT" : "CONFIG_WINDOWS_ACL_CHECK_FAILED",
12051
- [
12052
- file,
12053
- `exit=${error.status ?? "none"}`,
12054
- `signal=${error.signal ?? "none"}`,
12055
- `code=${error.code ?? "none"}`,
12056
- `elapsedMs=${Math.round(performance.now() - startedAt)}`
12057
- ]
12058
- );
12069
+ throw checkFailure(file, startedAt, cause);
12059
12070
  }
12060
- if (result === "owner" || result === "access") throw new ConfigurationError("CONFIG_WINDOWS_ACL_NOT_PRIVATE", [file, result]);
12061
- if (/^check-failed:[A-Za-z0-9_.]+:-?\d+$/.test(result)) throw new ConfigurationError("CONFIG_WINDOWS_ACL_CHECK_FAILED", [file, result]);
12062
- if (result !== "private") throw new ConfigurationError("CONFIG_WINDOWS_ACL_CHECK_FAILED", [file, "invalid-result"]);
12071
+ assertResult(file, result);
12063
12072
  }
12064
12073
 
12065
12074
  // packages/config-node/src/context.ts
@@ -12068,7 +12077,10 @@ var invocationGlobals = globalThis;
12068
12077
  var invocationArguments = invocationGlobals[invocationArgumentsKey] ??= new import_node_async_hooks.AsyncLocalStorage();
12069
12078
 
12070
12079
  // packages/config-node/src/platform.ts
12080
+ var import_node_child_process2 = require("node:child_process");
12071
12081
  var import_node_fs = require("node:fs");
12082
+ var import_node_util2 = require("node:util");
12083
+ var executeFile2 = (0, import_node_util2.promisify)(import_node_child_process2.execFile);
12072
12084
  function syncDirectory(directory) {
12073
12085
  if (process.platform === "win32") return;
12074
12086
  const fd = (0, import_node_fs.openSync)(directory, "r");
@@ -12337,7 +12349,7 @@ function decodeKey(encoded) {
12337
12349
  return key;
12338
12350
  }
12339
12351
  function readKeychainKey(keychainPath) {
12340
- const result = (0, import_node_child_process2.spawnSync)(
12352
+ const result = (0, import_node_child_process3.spawnSync)(
12341
12353
  "/usr/bin/security",
12342
12354
  [
12343
12355
  "find-generic-password",
@@ -12358,7 +12370,7 @@ function readKeychainKey(keychainPath) {
12358
12370
  return encoded ? decodeKey(encoded) : null;
12359
12371
  }
12360
12372
  function resolveDefaultKeychainPath() {
12361
- const result = (0, import_node_child_process2.spawnSync)(
12373
+ const result = (0, import_node_child_process3.spawnSync)(
12362
12374
  "/usr/bin/security",
12363
12375
  ["default-keychain", "-d", "user"],
12364
12376
  { encoding: "utf8", stdio: ["ignore", "pipe", "ignore"] }
@@ -12371,7 +12383,7 @@ function resolveDefaultKeychainPath() {
12371
12383
  }
12372
12384
  function createKeychainKey(keychainPath) {
12373
12385
  const key = import_node_crypto.default.randomBytes(KEY_BYTES);
12374
- const result = (0, import_node_child_process2.spawnSync)(
12386
+ const result = (0, import_node_child_process3.spawnSync)(
12375
12387
  "/usr/bin/security",
12376
12388
  [
12377
12389
  "add-generic-password",
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "version": "0.1.0",
3
- "buildId": "20261113T105753582Z-8b24b10d",
4
- "sourceRevision": "8b24b10d13faec90c70785bcef6727c594a01e9f",
3
+ "buildId": "20261114T102132909Z-78b0f7b5",
4
+ "sourceRevision": "78b0f7b532bb517209422c1a67c856a547b9268b",
5
5
  "sourceDirty": false,
6
- "builtAt": "2026-11-13T10:57:53.582Z",
7
- "contentSha256": "98e23271c2b09fb529706d54713d346dde151ad6284beb06c5e866a9ccf6ca82"
6
+ "builtAt": "2026-11-14T10:21:32.909Z",
7
+ "contentSha256": "0170b90d815f3a949a52598d49f7e2b3127665b306c12cfebac557de972ed171"
8
8
  }
@@ -7322,12 +7322,12 @@ var require_dist = __commonJS({
7322
7322
  var import_promises13 = __toESM(require("node:fs/promises"), 1);
7323
7323
  var import_node_path30 = __toESM(require("node:path"), 1);
7324
7324
  var import_node_os17 = __toESM(require("node:os"), 1);
7325
- var import_node_child_process10 = require("node:child_process");
7326
- var import_node_util6 = require("node:util");
7325
+ var import_node_child_process11 = require("node:child_process");
7326
+ var import_node_util9 = require("node:util");
7327
7327
  var import_node_url = require("node:url");
7328
7328
 
7329
7329
  // scripts/dev-session/beta-pool/projection.mjs
7330
- var import_node_fs17 = require("node:fs");
7330
+ var import_node_fs18 = require("node:fs");
7331
7331
  var import_promises12 = __toESM(require("node:fs/promises"), 1);
7332
7332
  var import_node_os16 = __toESM(require("node:os"), 1);
7333
7333
  var import_node_path29 = __toESM(require("node:path"), 1);
@@ -7493,8 +7493,8 @@ function publicManifest(manifest) {
7493
7493
  }
7494
7494
 
7495
7495
  // scripts/dev-session/services/index.mjs
7496
- var import_node_child_process8 = require("node:child_process");
7497
- var import_node_util4 = require("node:util");
7496
+ var import_node_child_process9 = require("node:child_process");
7497
+ var import_node_util7 = require("node:util");
7498
7498
 
7499
7499
  // scripts/dev-session/registry.mjs
7500
7500
  var import_node_crypto = require("node:crypto");
@@ -7874,9 +7874,10 @@ async function releaseSessionPortLeases(root, ports, sessionId) {
7874
7874
 
7875
7875
  // scripts/dev-session/services/runtime.mjs
7876
7876
  var import_node_child_process5 = require("node:child_process");
7877
+ var import_node_fs15 = require("node:fs");
7877
7878
  var import_promises5 = require("node:fs/promises");
7878
7879
  var import_node_path19 = __toESM(require("node:path"), 1);
7879
- var import_node_util2 = require("node:util");
7880
+ var import_node_util4 = require("node:util");
7880
7881
 
7881
7882
  // scripts/beta/state.mjs
7882
7883
  var import_promises3 = __toESM(require("node:fs/promises"), 1);
@@ -8405,6 +8406,7 @@ __export(src_exports, {
8405
8406
  assertOwnedPath: () => assertOwnedPath,
8406
8407
  assertPrivateDescriptor: () => assertPrivateDescriptor,
8407
8408
  assertPrivateDirectory: () => assertPrivateDirectory,
8409
+ assertPrivateDirectoryAsync: () => assertPrivateDirectoryAsync,
8408
8410
  assertWindowsPrivatePath: () => assertWindowsPrivatePath,
8409
8411
  backupMigrationSources: () => backupMigrationSources,
8410
8412
  canonicalPath: () => canonicalPath,
@@ -8428,12 +8430,14 @@ __export(src_exports, {
8428
8430
  prepareInitialConfiguration: () => prepareInitialConfiguration,
8429
8431
  prepareMigration: () => prepareMigration,
8430
8432
  processStartIdentity: () => processStartIdentity,
8433
+ processStartIdentityAsync: () => processStartIdentityAsync,
8431
8434
  readInitialAuthFile: () => readInitialAuthFile,
8432
8435
  readInstalledRuntimeBuild: () => readInstalledRuntimeBuild,
8433
8436
  readLocalRuntimeStatusReport: () => readLocalRuntimeStatusReport,
8434
8437
  readNativeHostRuntimeStatusReport: () => readNativeHostRuntimeStatusReport,
8435
8438
  readNativeHostSharingEnabled: () => readNativeHostSharingEnabled,
8436
8439
  readPrivateFile: () => readPrivateFile,
8440
+ readPrivateFileAsync: () => readPrivateFileAsync,
8437
8441
  readResearchMcpInstallation: () => readResearchMcpInstallation,
8438
8442
  redactConfiguration: () => redactConfiguration,
8439
8443
  registerStableConfigurationRoot: () => registerStableConfigurationRoot,
@@ -8479,9 +8483,9 @@ var import_node_fs3 = require("node:fs");
8479
8483
 
8480
8484
  // packages/config-node/src/windows-permissions.ts
8481
8485
  var import_node_child_process2 = require("node:child_process");
8482
- function assertWindowsPrivatePath(file) {
8483
- if (process.platform !== "win32") return;
8484
- const script = `
8486
+ var import_node_util = require("node:util");
8487
+ var executeFile = (0, import_node_util.promisify)(import_node_child_process2.execFile);
8488
+ var script = `
8485
8489
  $ErrorActionPreference = 'Stop'
8486
8490
  try {
8487
8491
  # Use .NET directly: a parent pwsh may export a PSModulePath incompatible with Windows PowerShell.
@@ -8499,6 +8503,27 @@ foreach ($rule in $acl.GetAccessRules($true, $true, [Security.Principal.Security
8499
8503
  [Console]::Write('check-failed:' + $_.Exception.GetType().FullName + ':' + $_.Exception.HResult)
8500
8504
  }
8501
8505
  `;
8506
+ function checkFailure(file, startedAt, cause) {
8507
+ const error = cause;
8508
+ const timedOut = error.code === "ETIMEDOUT" || error.killed === true && error.signal === "SIGTERM" && error.code == null;
8509
+ return new ConfigurationError(
8510
+ timedOut ? "CONFIG_WINDOWS_ACL_CHECK_TIMEOUT" : "CONFIG_WINDOWS_ACL_CHECK_FAILED",
8511
+ [
8512
+ file,
8513
+ `exit=${error.status ?? "none"}`,
8514
+ `signal=${error.signal ?? "none"}`,
8515
+ `code=${error.code ?? "none"}`,
8516
+ `elapsedMs=${Math.round(performance.now() - startedAt)}`
8517
+ ]
8518
+ );
8519
+ }
8520
+ function assertResult(file, result) {
8521
+ if (result === "owner" || result === "access") throw new ConfigurationError("CONFIG_WINDOWS_ACL_NOT_PRIVATE", [file, result]);
8522
+ if (/^check-failed:[A-Za-z0-9_.]+:-?\d+$/.test(result)) throw new ConfigurationError("CONFIG_WINDOWS_ACL_CHECK_FAILED", [file, result]);
8523
+ if (result !== "private") throw new ConfigurationError("CONFIG_WINDOWS_ACL_CHECK_FAILED", [file, "invalid-result"]);
8524
+ }
8525
+ function assertWindowsPrivatePath(file) {
8526
+ if (process.platform !== "win32") return;
8502
8527
  const startedAt = performance.now();
8503
8528
  let result;
8504
8529
  try {
@@ -8511,40 +8536,80 @@ foreach ($rule in $acl.GetAccessRules($true, $true, [Security.Principal.Security
8511
8536
  windowsHide: true
8512
8537
  }).trim();
8513
8538
  } catch (cause) {
8514
- const error = cause;
8515
- throw new ConfigurationError(
8516
- error.code === "ETIMEDOUT" ? "CONFIG_WINDOWS_ACL_CHECK_TIMEOUT" : "CONFIG_WINDOWS_ACL_CHECK_FAILED",
8517
- [
8518
- file,
8519
- `exit=${error.status ?? "none"}`,
8520
- `signal=${error.signal ?? "none"}`,
8521
- `code=${error.code ?? "none"}`,
8522
- `elapsedMs=${Math.round(performance.now() - startedAt)}`
8523
- ]
8524
- );
8539
+ throw checkFailure(file, startedAt, cause);
8525
8540
  }
8526
- if (result === "owner" || result === "access") throw new ConfigurationError("CONFIG_WINDOWS_ACL_NOT_PRIVATE", [file, result]);
8527
- if (/^check-failed:[A-Za-z0-9_.]+:-?\d+$/.test(result)) throw new ConfigurationError("CONFIG_WINDOWS_ACL_CHECK_FAILED", [file, result]);
8528
- if (result !== "private") throw new ConfigurationError("CONFIG_WINDOWS_ACL_CHECK_FAILED", [file, "invalid-result"]);
8541
+ assertResult(file, result);
8542
+ }
8543
+ async function assertWindowsPrivatePathAsync(file) {
8544
+ if (process.platform !== "win32") return;
8545
+ const startedAt = performance.now();
8546
+ let result;
8547
+ try {
8548
+ const { stdout } = await executeFile("powershell.exe", ["-NoProfile", "-NonInteractive", "-EncodedCommand", Buffer.from(script, "utf16le").toString("base64")], {
8549
+ env: { ...process.env, RUNWEAVE_PRIVATE_PATH: file },
8550
+ encoding: "utf8",
8551
+ maxBuffer: 64 * 1024,
8552
+ timeout: 1e4,
8553
+ windowsHide: true
8554
+ });
8555
+ result = stdout.trim();
8556
+ } catch (cause) {
8557
+ throw checkFailure(file, startedAt, cause);
8558
+ }
8559
+ assertResult(file, result);
8529
8560
  }
8530
8561
 
8531
8562
  // packages/config-node/src/private-file.ts
8532
- function assertPrivateDirectory(directory2) {
8563
+ function privateDirectoryStat(directory2) {
8533
8564
  const stat = (0, import_node_fs3.lstatSync)(directory2);
8534
8565
  if (!stat.isDirectory() || stat.isSymbolicLink() || process.platform !== "win32" && stat.mode & 63 || typeof process.getuid === "function" && stat.uid !== process.getuid()) throw new ConfigurationError("CONFIG_ROOT_PERMISSIONS_INVALID");
8535
- assertWindowsPrivatePath(directory2);
8566
+ return stat;
8536
8567
  }
8537
- function assertPrivateDescriptor(fd, maxBytes = 1024 * 1024, file) {
8568
+ function privateDescriptorStat(fd, maxBytes) {
8538
8569
  const stat = (0, import_node_fs3.fstatSync)(fd);
8539
8570
  if (!stat.isFile() || stat.nlink !== 1) throw new ConfigurationError("CONFIG_FILE_NOT_PRIVATE_REGULAR");
8540
8571
  if (typeof process.getuid === "function" && stat.uid !== process.getuid()) throw new ConfigurationError("CONFIG_FILE_OWNER_MISMATCH");
8541
8572
  if (process.platform !== "win32" && stat.mode & 63) throw new ConfigurationError("CONFIG_FILE_PERMISSIONS_INVALID");
8573
+ if (stat.size > maxBytes) throw new ConfigurationError("CONFIG_FILE_TOO_LARGE");
8574
+ return stat;
8575
+ }
8576
+ function assertPrivateDirectory(directory2) {
8577
+ privateDirectoryStat(directory2);
8578
+ assertWindowsPrivatePath(directory2);
8579
+ }
8580
+ function assertPrivateDescriptor(fd, maxBytes = 1024 * 1024, file) {
8581
+ const stat = privateDescriptorStat(fd, Infinity);
8542
8582
  if (process.platform === "win32") {
8543
8583
  if (!file) throw new ConfigurationError("CONFIG_PRIVATE_PATH_REQUIRED");
8544
8584
  assertWindowsPrivatePath(file);
8545
8585
  }
8546
8586
  if (stat.size > maxBytes) throw new ConfigurationError("CONFIG_FILE_TOO_LARGE");
8547
8587
  }
8588
+ function assertUnchangedPath(file, before) {
8589
+ const after = (0, import_node_fs3.lstatSync)(file);
8590
+ if (after.isSymbolicLink() || before.dev !== after.dev || before.ino !== after.ino || before.ctimeMs !== after.ctimeMs)
8591
+ throw new ConfigurationError("CONFIG_PRIVATE_PATH_CHANGED", [file]);
8592
+ }
8593
+ async function assertPrivateDirectoryAsync(directory2) {
8594
+ const before = privateDirectoryStat(directory2);
8595
+ await assertWindowsPrivatePathAsync(directory2);
8596
+ privateDirectoryStat(directory2);
8597
+ assertUnchangedPath(directory2, before);
8598
+ }
8599
+ async function readPrivateFileAsync(file, maxBytes = 1024 * 1024) {
8600
+ const fd = (0, import_node_fs3.openSync)(file, import_node_fs3.constants.O_RDONLY | import_node_fs3.constants.O_NOFOLLOW);
8601
+ try {
8602
+ const before = privateDescriptorStat(fd, maxBytes);
8603
+ await assertWindowsPrivatePathAsync(file);
8604
+ assertUnchangedPath(file, before);
8605
+ privateDescriptorStat(fd, maxBytes);
8606
+ const source = (0, import_node_fs3.readFileSync)(fd, "utf8");
8607
+ if (Buffer.byteLength(source) > maxBytes) throw new ConfigurationError("CONFIG_FILE_TOO_LARGE");
8608
+ return source;
8609
+ } finally {
8610
+ (0, import_node_fs3.closeSync)(fd);
8611
+ }
8612
+ }
8548
8613
  function readPrivateFile(file, maxBytes = 1024 * 1024) {
8549
8614
  const fd = (0, import_node_fs3.openSync)(file, import_node_fs3.constants.O_RDONLY | import_node_fs3.constants.O_NOFOLLOW);
8550
8615
  try {
@@ -8632,6 +8697,8 @@ function assertOwnedPath(context, value) {
8632
8697
  // packages/config-node/src/platform.ts
8633
8698
  var import_node_child_process3 = require("node:child_process");
8634
8699
  var import_node_fs5 = require("node:fs");
8700
+ var import_node_util2 = require("node:util");
8701
+ var executeFile2 = (0, import_node_util2.promisify)(import_node_child_process3.execFile);
8635
8702
  function processStartIdentity(pid) {
8636
8703
  if (!Number.isSafeInteger(pid) || pid < 1) return null;
8637
8704
  try {
@@ -8644,6 +8711,19 @@ function processStartIdentity(pid) {
8644
8711
  return null;
8645
8712
  }
8646
8713
  }
8714
+ async function processStartIdentityAsync(pid) {
8715
+ if (!Number.isSafeInteger(pid) || pid < 1) return null;
8716
+ try {
8717
+ const { stdout } = await executeFile2(
8718
+ process.platform === "win32" ? "powershell.exe" : "ps",
8719
+ process.platform === "win32" ? ["-NoProfile", "-NonInteractive", "-Command", `[Diagnostics.Process]::GetProcessById(${pid}).StartTime.ToUniversalTime().Ticks`] : ["-p", String(pid), "-o", "lstart="],
8720
+ { encoding: "utf8", timeout: 5e3, windowsHide: true }
8721
+ );
8722
+ return stdout.trim() || null;
8723
+ } catch {
8724
+ return null;
8725
+ }
8726
+ }
8647
8727
  function syncDirectory(directory2) {
8648
8728
  if (process.platform === "win32") return;
8649
8729
  const fd = (0, import_node_fs5.openSync)(directory2, "r");
@@ -10112,14 +10192,14 @@ function prepareInitialConfiguration(context, auth) {
10112
10192
  // packages/config-node/src/research-mcp.ts
10113
10193
  var import_node_fs11 = require("node:fs");
10114
10194
  var import_node_path14 = __toESM(require("node:path"), 1);
10115
- function researchMcpHome() {
10116
- return import_node_path14.default.join(resolveConfigurationContext().configRoot, "research-mcp");
10195
+ function researchMcpHome(context = resolveConfigurationContext()) {
10196
+ return import_node_path14.default.join(context.configRoot, "research-mcp");
10117
10197
  }
10118
- function readResearchMcpInstallation() {
10119
- const file = import_node_path14.default.join(researchMcpHome(), "installation.json");
10198
+ function readResearchMcpInstallation(context = resolveConfigurationContext()) {
10199
+ const file = import_node_path14.default.join(researchMcpHome(context), "installation.json");
10120
10200
  if (!(0, import_node_fs11.existsSync)(file)) return null;
10121
10201
  const value = JSON.parse(readPrivateFile(file));
10122
- if (value.version !== 1 || value.instanceId !== resolveConfigurationContext().instanceId || typeof value.enabled !== "boolean" || !Number.isInteger(value.port) || value.port < 1 || value.port > 65535 || ![value.entry, value.node, value.cwd].every((v) => typeof v === "string" && import_node_path14.default.isAbsolute(v)) || typeof value.sourceRevision !== "string" || typeof value.releaseId !== "string" || !Number.isFinite(value.installedAt) || value.tunnel !== null && (!value.tunnel || !/^[a-zA-Z0-9_-]+$/.test(value.tunnel.profile) || ![value.tunnel.executable, value.tunnel.profileDir, value.tunnel.healthFile].every((v) => typeof v === "string" && import_node_path14.default.isAbsolute(v)))) {
10202
+ if (value.version !== 1 || value.instanceId !== context.instanceId || typeof value.enabled !== "boolean" || !Number.isInteger(value.port) || value.port < 1 || value.port > 65535 || ![value.entry, value.node, value.cwd].every((v) => typeof v === "string" && import_node_path14.default.isAbsolute(v)) || typeof value.sourceRevision !== "string" || typeof value.releaseId !== "string" || !Number.isFinite(value.installedAt) || value.tunnel !== null && (!value.tunnel || !/^[a-zA-Z0-9_-]+$/.test(value.tunnel.profile) || ![value.tunnel.executable, value.tunnel.profileDir, value.tunnel.healthFile].every((v) => typeof v === "string" && import_node_path14.default.isAbsolute(v)))) {
10123
10203
  throw new Error("Invalid research MCP installation identity");
10124
10204
  }
10125
10205
  return value;
@@ -10391,8 +10471,8 @@ var import_node_fs14 = require("node:fs");
10391
10471
  var import_promises4 = __toESM(require("node:fs/promises"), 1);
10392
10472
  var import_node_path17 = __toESM(require("node:path"), 1);
10393
10473
  var import_node_child_process4 = require("node:child_process");
10394
- var import_node_util = require("node:util");
10395
- var execFileAsync = (0, import_node_util.promisify)(import_node_child_process4.execFile);
10474
+ var import_node_util3 = require("node:util");
10475
+ var execFileAsync = (0, import_node_util3.promisify)(import_node_child_process4.execFile);
10396
10476
  var FILE_NAME = "backend-health-binding.json";
10397
10477
  async function readBackendHealthAuth(profileDir) {
10398
10478
  let handle;
@@ -10616,7 +10696,7 @@ function isCanonicalLoopbackEndpoint(endpoint) {
10616
10696
  }
10617
10697
 
10618
10698
  // scripts/dev-session/services/runtime.mjs
10619
- var execFileAsync2 = (0, import_node_util2.promisify)(import_node_child_process5.execFile);
10699
+ var execFileAsync2 = (0, import_node_util4.promisify)(import_node_child_process5.execFile);
10620
10700
  function isProcessLive2(pid) {
10621
10701
  try {
10622
10702
  process.kill(pid, 0);
@@ -10627,6 +10707,20 @@ function isProcessLive2(pid) {
10627
10707
  }
10628
10708
  function readProcessSignature2(pid) {
10629
10709
  try {
10710
+ if (process.platform === "linux") {
10711
+ const readBirth = () => {
10712
+ const stat = (0, import_node_fs15.readFileSync)(`/proc/${pid}/stat`, "utf8");
10713
+ const fields = stat.slice(stat.lastIndexOf(")") + 1).trim().split(/\s+/);
10714
+ return fields[0] !== "Z" && /^\d+$/.test(fields[19] ?? "") ? fields[19] : "";
10715
+ };
10716
+ const bootId = (0, import_node_fs15.readFileSync)("/proc/sys/kernel/random/boot_id", "utf8").trim();
10717
+ const startTicks = readBirth();
10718
+ const command = (0, import_node_fs15.readFileSync)(`/proc/${pid}/cmdline`);
10719
+ if (!bootId || !startTicks || !command.length || readBirth() !== startTicks) {
10720
+ return "";
10721
+ }
10722
+ return `linux:${bootId}:${startTicks}:${command.toString("base64")}`;
10723
+ }
10630
10724
  return (0, import_node_child_process5.execFileSync)(
10631
10725
  "ps",
10632
10726
  ["-p", String(pid), "-o", "lstart=", "-o", "command="],
@@ -10972,13 +11066,18 @@ async function stopOwnedProcess(processInfo) {
10972
11066
  return { outcome: "forced" };
10973
11067
  }
10974
11068
 
10975
- // scripts/dev-session/services/beta.mjs
11069
+ // scripts/dev-session/services/dedicated.mjs
10976
11070
  var import_node_child_process7 = require("node:child_process");
10977
- var import_node_util3 = require("node:util");
10978
- var execFileAsync3 = (0, import_node_util3.promisify)(import_node_child_process7.execFile);
11071
+ var import_node_util5 = require("node:util");
11072
+ var execFileAsync3 = (0, import_node_util5.promisify)(import_node_child_process7.execFile);
11073
+
11074
+ // scripts/dev-session/services/beta.mjs
11075
+ var import_node_child_process8 = require("node:child_process");
11076
+ var import_node_util6 = require("node:util");
11077
+ var execFileAsync4 = (0, import_node_util6.promisify)(import_node_child_process8.execFile);
10979
11078
 
10980
11079
  // scripts/dev-session/services/index.mjs
10981
- var execFileAsync4 = (0, import_node_util4.promisify)(import_node_child_process8.execFile);
11080
+ var execFileAsync5 = (0, import_node_util7.promisify)(import_node_child_process9.execFile);
10982
11081
  async function assertSessionServicesStoppable(services) {
10983
11082
  const inspection = await inspectSessionServices(services);
10984
11083
  const staleOwnedServices = [
@@ -11013,7 +11112,7 @@ async function stopSessionServices(services, { identityVerified = false, stopBet
11013
11112
  if (service?.ownership === "dedicated") {
11014
11113
  if (service.betaControl) {
11015
11114
  if (stopBetaControl) await stopBetaControl(service);
11016
- else await execFileAsync4(service.betaControl.command, service.betaControl.args, {
11115
+ else await execFileAsync5(service.betaControl.command, service.betaControl.args, {
11017
11116
  cwd: service.betaControl.cwd,
11018
11117
  encoding: "utf8"
11019
11118
  });
@@ -11073,7 +11172,7 @@ async function cleanupStaleSessionServices(services, { serviceNames = null, stop
11073
11172
  }
11074
11173
  if (originalService.betaControl) {
11075
11174
  if (stopBetaControl) await stopBetaControl(originalService);
11076
- else await execFileAsync4(
11175
+ else await execFileAsync5(
11077
11176
  originalService.betaControl.command,
11078
11177
  originalService.betaControl.args,
11079
11178
  {
@@ -11150,7 +11249,7 @@ var import_node_path24 = __toESM(require("node:path"), 1);
11150
11249
 
11151
11250
  // scripts/dev-session/beta-pool/storage/files.mjs
11152
11251
  var import_node_crypto9 = require("node:crypto");
11153
- var import_node_fs15 = require("node:fs");
11252
+ var import_node_fs16 = require("node:fs");
11154
11253
  var import_promises6 = __toESM(require("node:fs/promises"), 1);
11155
11254
  var import_node_path20 = __toESM(require("node:path"), 1);
11156
11255
  function sameFileIdentity2(left, right) {
@@ -11198,7 +11297,7 @@ async function readRegularJson(filePath, allowedRoot) {
11198
11297
  try {
11199
11298
  handle = await import_promises6.default.open(
11200
11299
  filePath,
11201
- import_node_fs15.constants.O_RDONLY | import_node_fs15.constants.O_NOFOLLOW
11300
+ import_node_fs16.constants.O_RDONLY | import_node_fs16.constants.O_NOFOLLOW
11202
11301
  );
11203
11302
  const before = await handle.stat();
11204
11303
  if (!before.isFile()) {
@@ -11223,7 +11322,7 @@ async function atomicWriteJson2(filePath, value, allowedRoot) {
11223
11322
  );
11224
11323
  const handle = await import_promises6.default.open(
11225
11324
  temporaryPath,
11226
- import_node_fs15.constants.O_WRONLY | import_node_fs15.constants.O_CREAT | import_node_fs15.constants.O_EXCL | import_node_fs15.constants.O_NOFOLLOW,
11325
+ import_node_fs16.constants.O_WRONLY | import_node_fs16.constants.O_CREAT | import_node_fs16.constants.O_EXCL | import_node_fs16.constants.O_NOFOLLOW,
11227
11326
  384
11228
11327
  );
11229
11328
  try {
@@ -11414,12 +11513,12 @@ async function releaseBetaSlotRecoveryClaim(recoveryClaim, paths) {
11414
11513
  }
11415
11514
 
11416
11515
  // scripts/dev-session/beta-pool/storage/paths.mjs
11417
- var import_node_fs16 = require("node:fs");
11516
+ var import_node_fs17 = require("node:fs");
11418
11517
  var import_node_os10 = __toESM(require("node:os"), 1);
11419
11518
  var import_node_path22 = __toESM(require("node:path"), 1);
11420
11519
  function isDirectory(filePath) {
11421
11520
  try {
11422
- return (0, import_node_fs16.lstatSync)(filePath).isDirectory();
11521
+ return (0, import_node_fs17.lstatSync)(filePath).isDirectory();
11423
11522
  } catch {
11424
11523
  return false;
11425
11524
  }
@@ -12224,11 +12323,11 @@ async function resolveBetaSlotRetentionTargets(homeDir, slotId) {
12224
12323
 
12225
12324
  // scripts/dev-session/beta-pool/storage/index.mjs
12226
12325
  var import_node_crypto11 = require("node:crypto");
12227
- var import_node_child_process9 = require("node:child_process");
12326
+ var import_node_child_process10 = require("node:child_process");
12228
12327
  var import_promises11 = __toESM(require("node:fs/promises"), 1);
12229
12328
  var import_node_os15 = __toESM(require("node:os"), 1);
12230
12329
  var import_node_path28 = __toESM(require("node:path"), 1);
12231
- var import_node_util5 = require("node:util");
12330
+ var import_node_util8 = require("node:util");
12232
12331
 
12233
12332
  // scripts/dev-session/beta-pool/metadata.mjs
12234
12333
  var import_node_os14 = __toESM(require("node:os"), 1);
@@ -12314,7 +12413,7 @@ async function recordBetaSlotRecoveryAttempt({
12314
12413
  }
12315
12414
 
12316
12415
  // scripts/dev-session/beta-pool/storage/index.mjs
12317
- var execFileAsync5 = (0, import_node_util5.promisify)(import_node_child_process9.execFile);
12416
+ var execFileAsync6 = (0, import_node_util8.promisify)(import_node_child_process10.execFile);
12318
12417
  var MAX_UPDATE_LOGS = 5;
12319
12418
  var MAX_UPDATE_LOG_BYTES = 64 * 1024 * 1024;
12320
12419
  var MIN_PLANNED_WRITE_BYTES = 512 * 1024 * 1024;
@@ -12324,7 +12423,7 @@ async function unregisterApplicationPath(appPath, applicationsDir) {
12324
12423
  if (process.platform !== "darwin" || import_node_path28.default.resolve(applicationsDir) !== "/Applications") {
12325
12424
  return false;
12326
12425
  }
12327
- return await execFileAsync5(LAUNCH_SERVICES_REGISTER, ["-u", appPath]).then(() => true).catch(() => false);
12426
+ return await execFileAsync6(LAUNCH_SERVICES_REGISTER, ["-u", appPath]).then(() => true).catch(() => false);
12328
12427
  }
12329
12428
  async function calculatePathBytes(targetPath, rejectSymlink = true) {
12330
12429
  const stats = await import_promises11.default.lstat(targetPath).catch((error) => {
@@ -12740,7 +12839,7 @@ async function readManifestObservation(lease) {
12740
12839
  try {
12741
12840
  handle = await import_promises12.default.open(
12742
12841
  lease.ownerManifestPath,
12743
- import_node_fs17.constants.O_RDONLY | import_node_fs17.constants.O_NOFOLLOW
12842
+ import_node_fs18.constants.O_RDONLY | import_node_fs18.constants.O_NOFOLLOW
12744
12843
  );
12745
12844
  const opened = await handle.stat();
12746
12845
  if (!opened.isFile()) {
@@ -13216,7 +13315,7 @@ function assertExpectedVersion(actual, expected) {
13216
13315
  }
13217
13316
 
13218
13317
  // scripts/dev-resources/snapshot.mjs
13219
- var exec = (0, import_node_util6.promisify)(import_node_child_process10.execFile);
13318
+ var exec = (0, import_node_util9.promisify)(import_node_child_process11.execFile);
13220
13319
  var pythonEntry = (0, import_node_url.fileURLToPath)(
13221
13320
  new URL("../ios-simulators/monitor.py", __IMPORT_META_URL__)
13222
13321
  );
@@ -13506,7 +13605,7 @@ async function inspectResources({ generation, backendPid }) {
13506
13605
  }
13507
13606
 
13508
13607
  // scripts/dev-resources/operations.mjs
13509
- var import_node_child_process12 = require("node:child_process");
13608
+ var import_node_child_process13 = require("node:child_process");
13510
13609
  var import_node_os21 = __toESM(require("node:os"), 1);
13511
13610
 
13512
13611
  // scripts/dev-session/services/beta-start-recovery.mjs
@@ -13782,12 +13881,12 @@ async function finalizeBetaSlotRelease(options) {
13782
13881
 
13783
13882
  // scripts/dev-session/beta-pool/recovery/index.mjs
13784
13883
  var import_node_crypto14 = require("node:crypto");
13785
- var import_node_child_process11 = require("node:child_process");
13884
+ var import_node_child_process12 = require("node:child_process");
13786
13885
  var import_promises14 = __toESM(require("node:fs/promises"), 1);
13787
13886
  var import_node_os19 = __toESM(require("node:os"), 1);
13788
13887
  var import_node_path32 = __toESM(require("node:path"), 1);
13789
- var import_node_util7 = require("node:util");
13790
- var execFileAsync6 = (0, import_node_util7.promisify)(import_node_child_process11.execFile);
13888
+ var import_node_util10 = require("node:util");
13889
+ var execFileAsync7 = (0, import_node_util10.promisify)(import_node_child_process12.execFile);
13791
13890
  function sleep(milliseconds) {
13792
13891
  return new Promise((resolve) => setTimeout(resolve, milliseconds));
13793
13892
  }
@@ -13865,7 +13964,7 @@ async function stopRecordedDedicatedServices(manifest, lease, homeDir, stopBetaC
13865
13964
  await stopBetaControl(manifest);
13866
13965
  } else if (await import_promises14.default.lstat(controlScript).catch(() => null)) {
13867
13966
  try {
13868
- await execFileAsync6(
13967
+ await execFileAsync7(
13869
13968
  process.execPath,
13870
13969
  [
13871
13970
  controlScript,
@@ -14258,7 +14357,7 @@ async function recoverBetaPoolSlot({
14258
14357
  }
14259
14358
 
14260
14359
  // scripts/beta/operations.mjs
14261
- var import_node_fs18 = require("node:fs");
14360
+ var import_node_fs19 = require("node:fs");
14262
14361
  var import_promises15 = __toESM(require("node:fs/promises"), 1);
14263
14362
  var import_node_path33 = __toESM(require("node:path"), 1);
14264
14363
  async function withBetaLock(paths, operation) {
@@ -14390,7 +14489,7 @@ async function quitBeta(paths) {
14390
14489
  }
14391
14490
  async function runAppServerCli(paths, command, sourceRevision = null) {
14392
14491
  const cliEntry = paths.controlCliPath;
14393
- if (!(0, import_node_fs18.existsSync)(cliEntry)) {
14492
+ if (!(0, import_node_fs19.existsSync)(cliEntry)) {
14394
14493
  return { ok: false, code: 1, stderr: `missing CLI build: ${cliEntry}` };
14395
14494
  }
14396
14495
  return await runCapture(
@@ -14865,7 +14964,7 @@ async function releaseSimulator(request, context) {
14865
14964
  if (resource.release.action !== request.action)
14866
14965
  conflict("\u6E05\u7406\u6761\u4EF6\u5DF2\u53D8\u5316\uFF0C\u8BF7\u5237\u65B0\u540E\u91CD\u65B0\u786E\u8BA4");
14867
14966
  return await new Promise((resolve, reject) => {
14868
- const child = (0, import_node_child_process12.spawn)("python3", ["-B", pythonEntry, "release"], {
14967
+ const child = (0, import_node_child_process13.spawn)("python3", ["-B", pythonEntry, "release"], {
14869
14968
  stdio: ["pipe", "pipe", "ignore"]
14870
14969
  });
14871
14970
  let stdout = "";