@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.
- package/manifest.json +231 -226
- package/native.tar.gz +0 -0
- package/package.json +1 -1
- package/payload/app-server/build-info.json +4 -4
- package/payload/app-server/index.cjs +46 -25
- package/payload/app-server/index.cjs.map +1 -1
- package/payload/backend/activity-sqlite-worker.cjs +33 -21
- package/payload/backend/build-info.json +4 -4
- package/payload/backend/dev-resources/control.cjs +158 -59
- package/payload/backend/index.cjs +3512 -2764
- package/payload/backend/scheduled-tasks-sqlite-worker.cjs +12 -0
- package/payload/frontend/dist/assets/{_baseUniq-V9OGBCCp.js → _baseUniq-pNlq_DCQ.js} +1 -1
- package/payload/frontend/dist/assets/{access-Bw9yaM2u.js → access-BJmFgyT9.js} +1 -1
- package/payload/frontend/dist/assets/{advanced-BspSUvyf.js → advanced-B1_D3p4w.js} +1 -1
- package/payload/frontend/dist/assets/{appearance-BHYR2QUj.js → appearance-CSQVEVTh.js} +1 -1
- package/payload/frontend/dist/assets/{arc-C4bVuMy6.js → arc-DE1dO7p3.js} +1 -1
- package/payload/frontend/dist/assets/{architectureDiagram-Q4EWVU46-B_EOBe6n.js → architectureDiagram-Q4EWVU46-QKJomhdt.js} +1 -1
- package/payload/frontend/dist/assets/{blockDiagram-DXYQGD6D-aAkbmNO9.js → blockDiagram-DXYQGD6D-CV58X8VO.js} +1 -1
- package/payload/frontend/dist/assets/{c4Diagram-AHTNJAMY-DKeUolGU.js → c4Diagram-AHTNJAMY-DPu-RnDw.js} +1 -1
- package/payload/frontend/dist/assets/channel-DWLRGtq3.js +1 -0
- package/payload/frontend/dist/assets/{chunk-4BX2VUAB-cB5sH0Mw.js → chunk-4BX2VUAB-COwHdW0x.js} +1 -1
- package/payload/frontend/dist/assets/{chunk-4TB4RGXK-CxVRfINM.js → chunk-4TB4RGXK-StHcdOx9.js} +1 -1
- package/payload/frontend/dist/assets/{chunk-55IACEB6-BFRLEEBY.js → chunk-55IACEB6-D7PMYZ35.js} +1 -1
- package/payload/frontend/dist/assets/{chunk-EDXVE4YY-DA5BuoT3.js → chunk-EDXVE4YY-D84apqdf.js} +1 -1
- package/payload/frontend/dist/assets/{chunk-FMBD7UC4-DIvA96Y1.js → chunk-FMBD7UC4-CJmwcVvj.js} +1 -1
- package/payload/frontend/dist/assets/{chunk-OYMX7WX6-8Zl-vtJp.js → chunk-OYMX7WX6-DQhh6xQp.js} +1 -1
- package/payload/frontend/dist/assets/{chunk-QZHKN3VN-DnW4X6Wx.js → chunk-QZHKN3VN-C6X5cUuc.js} +1 -1
- package/payload/frontend/dist/assets/{chunk-YZCP3GAM-CH4YkXv-.js → chunk-YZCP3GAM-CryVThNG.js} +1 -1
- package/payload/frontend/dist/assets/classDiagram-6PBFFD2Q-B2WrDPFz.js +1 -0
- package/payload/frontend/dist/assets/classDiagram-v2-HSJHXN6E-B2WrDPFz.js +1 -0
- package/payload/frontend/dist/assets/clone-BJQLpgjC.js +1 -0
- package/payload/frontend/dist/assets/{connection-CINMNAPm.js → connection-425RE3U4.js} +1 -1
- package/payload/frontend/dist/assets/{connections-DsHGQRR2.js → connections-Dx05bPzL.js} +1 -1
- package/payload/frontend/dist/assets/{cose-bilkent-S5V4N54A-Dm1QOjDr.js → cose-bilkent-S5V4N54A-DqICEhiJ.js} +1 -1
- package/payload/frontend/dist/assets/{dagre-KV5264BT-BEbPPDoW.js → dagre-KV5264BT-SyIBcIz3.js} +1 -1
- package/payload/frontend/dist/assets/{desktop-1jdcRQ7b.js → desktop-DBzea7Bt.js} +1 -1
- package/payload/frontend/dist/assets/{diagram-5BDNPKRD-C-DmBIhV.js → diagram-5BDNPKRD-xS_FVHQR.js} +1 -1
- package/payload/frontend/dist/assets/{diagram-G4DWMVQ6-Ddv6Kw2_.js → diagram-G4DWMVQ6-CLuycLkG.js} +1 -1
- package/payload/frontend/dist/assets/{diagram-MMDJMWI5-Xae79J8R.js → diagram-MMDJMWI5-BTNd9OzE.js} +1 -1
- package/payload/frontend/dist/assets/{diagram-TYMM5635-CavrGRG2.js → diagram-TYMM5635-DyxLhyoy.js} +1 -1
- package/payload/frontend/dist/assets/{erDiagram-SMLLAGMA-BRRD8F-e.js → erDiagram-SMLLAGMA-C2a9uz8_.js} +1 -1
- package/payload/frontend/dist/assets/{flowDiagram-DWJPFMVM-C-ewssi0.js → flowDiagram-DWJPFMVM-DndbO3ER.js} +1 -1
- package/payload/frontend/dist/assets/{ganttDiagram-T4ZO3ILL-BcZnXV6L.js → ganttDiagram-T4ZO3ILL-BSV1btDD.js} +1 -1
- package/payload/frontend/dist/assets/{gitGraphDiagram-UUTBAWPF-ZcfWVMGG.js → gitGraphDiagram-UUTBAWPF-DnYc3Xm2.js} +1 -1
- package/payload/frontend/dist/assets/{graph-DRJG1bKF.js → graph-iOswNacw.js} +1 -1
- package/payload/frontend/dist/assets/{image-GQYH_1h4.js → image-BaXi5ATy.js} +1 -1
- package/payload/frontend/dist/assets/index-BRwhFF-d.js +1258 -0
- package/payload/frontend/dist/assets/{infoDiagram-42DDH7IO-BWsoBaYn.js → infoDiagram-42DDH7IO-BoWdmtBx.js} +1 -1
- package/payload/frontend/dist/assets/{ishikawaDiagram-UXIWVN3A-C3ayGr4G.js → ishikawaDiagram-UXIWVN3A-B8KC_SgA.js} +1 -1
- package/payload/frontend/dist/assets/{journeyDiagram-VCZTEJTY-DB1DxZ1v.js → journeyDiagram-VCZTEJTY-CN_MxT78.js} +1 -1
- package/payload/frontend/dist/assets/{kanban-definition-6JOO6SKY-CtZWN0CK.js → kanban-definition-6JOO6SKY-j17QaQ4r.js} +1 -1
- package/payload/frontend/dist/assets/{layout-KX5XwX_6.js → layout-CLR2o63S.js} +1 -1
- package/payload/frontend/dist/assets/{linear-DMZrhooi.js → linear-CL0d3XrR.js} +1 -1
- package/payload/frontend/dist/assets/main-BO-hQK7n.css +33 -0
- package/payload/frontend/dist/assets/{main-LH8ULGFT.js → main-DWkxAGaw.js} +142 -142
- package/payload/frontend/dist/assets/{min-CWc1cxEQ.js → min-2aYi0G6U.js} +1 -1
- package/payload/frontend/dist/assets/{mindmap-definition-QFDTVHPH-tj_8hDDH.js → mindmap-definition-QFDTVHPH-CxVQlE5J.js} +1 -1
- package/payload/frontend/dist/assets/{monitoring-BaUd-PhH.js → monitoring-GwSez8fI.js} +1 -1
- package/payload/frontend/dist/assets/{notifications-CTv1WVBh.js → notifications-Bx24ROH2.js} +1 -1
- package/payload/frontend/dist/assets/{pieDiagram-DEJITSTG-Cwc4Gfp4.js → pieDiagram-DEJITSTG-CpRHmWOC.js} +1 -1
- package/payload/frontend/dist/assets/{quadrantDiagram-34T5L4WZ-Clq2RqDJ.js → quadrantDiagram-34T5L4WZ-CZG_QGX1.js} +1 -1
- package/payload/frontend/dist/assets/{record-content-DQ0F1zbW.js → record-content-Di3pmXSa.js} +1 -1
- package/payload/frontend/dist/assets/{requirementDiagram-MS252O5E-gaTHj3JP.js → requirementDiagram-MS252O5E-C1PCFhMe.js} +1 -1
- package/payload/frontend/dist/assets/{sankeyDiagram-XADWPNL6-CyBolt3D.js → sankeyDiagram-XADWPNL6-RxkobNrx.js} +1 -1
- package/payload/frontend/dist/assets/{sequenceDiagram-FGHM5R23-CO4UgRHw.js → sequenceDiagram-FGHM5R23-Bem61Ef-.js} +1 -1
- package/payload/frontend/dist/assets/{stateDiagram-FHFEXIEX-ygBwN1Az.js → stateDiagram-FHFEXIEX-DaHV-La3.js} +1 -1
- package/payload/frontend/dist/assets/stateDiagram-v2-QKLJ7IA2-VVMK0Gty.js +1 -0
- package/payload/frontend/dist/assets/{status-BOcUUbE9.js → status-DytAqsKi.js} +1 -1
- package/payload/frontend/dist/assets/suiji-ClmlHdOg.js +1 -0
- package/payload/frontend/dist/assets/{svg-BfkbqvDT.js → svg-BNFCoAlV.js} +1 -1
- package/payload/frontend/dist/assets/{tabs-88TVAJwX.js → tabs-CNVBHmw-.js} +1 -1
- package/payload/frontend/dist/assets/{timeline-definition-GMOUNBTQ-8Iy3eg4l.js → timeline-definition-GMOUNBTQ-xVCcgT05.js} +1 -1
- package/payload/frontend/dist/assets/{vennDiagram-DHZGUBPP-DLcttV2t.js → vennDiagram-DHZGUBPP-D4YvcLlt.js} +1 -1
- package/payload/frontend/dist/assets/{wardley-RL74JXVD-DUvr0OYP.js → wardley-RL74JXVD-WtdSbuj2.js} +1 -1
- package/payload/frontend/dist/assets/{wardleyDiagram-NUSXRM2D-Dm-sdRY6.js → wardleyDiagram-NUSXRM2D-Br4RBb8X.js} +1 -1
- package/payload/frontend/dist/assets/{xychartDiagram-5P7HB3ND-DR_MOYh1.js → xychartDiagram-5P7HB3ND-Dx8RJOfi.js} +1 -1
- package/payload/frontend/dist/build-info.json +4 -4
- package/payload/frontend/dist/companion.html +1 -1
- package/payload/frontend/dist/index.html +3 -3
- package/payload/plugins/toolkit/.codex-plugin/plugin.json +1 -1
- package/payload/plugins/toolkit/README.md +3 -3
- package/payload/plugins/toolkit/skills/acceptance/SKILL.md +4 -2
- package/payload/plugins/toolkit/skills/acceptance/references/delivery.md +11 -1
- package/payload/plugins/toolkit/skills/acceptance/references/gallery-contract.md +62 -39
- package/payload/plugins/toolkit/skills/acceptance/references/gallery-copy.md +8 -0
- package/payload/plugins/toolkit/skills/acceptance/scripts/delivery_check.py +151 -0
- package/payload/plugins/toolkit/skills/acceptance/scripts/gallery.py +67 -11
- package/payload/plugins/toolkit/skills/acceptance/scripts/preview.py +21 -2
- package/payload/plugins/toolkit/skills/acceptance/templates/reader.css +1 -14
- package/payload/plugins/toolkit/skills/acceptance/templates/reader.html +23 -4
- package/payload/plugins/toolkit/skills/acceptance/templates/reader.js +76 -3
- package/payload/plugins/toolkit/skills/acceptance/templates/report.css +80 -0
- package/payload/plugins/toolkit/skills/architecture-flow-prototyping/SKILL.md +2 -2
- package/payload/plugins/toolkit/skills/playwright-cli/SKILL.md +19 -6
- package/payload/plugins/toolkit/skills/review-only/SKILL.md +29 -4
- package/payload/plugins/toolkit/skills/review-only/references/delivery-verification.md +38 -0
- package/payload/plugins/toolkit/skills/using-rw/SKILL.md +37 -1
- package/payload/plugins/toolkit/skills/visual-plan-review/SKILL.md +45 -0
- package/payload/plugins/toolkit/skills/visual-plan-review/agents/openai.yaml +3 -0
- package/payload/plugins/toolkit/skills/visual-plan-review/references/review-checklist.md +13 -0
- package/payload/plugins/toolkit/skills/visual-plan-review/references/visual-plan-template.html +8 -0
- package/payload/plugins/toolkit-release.json +1 -1
- package/payload/pty-host/index.cjs +217 -41
- package/payload/server/index.cjs +40 -20
- package/payload/frontend/dist/assets/channel-CBjt7igT.js +0 -1
- package/payload/frontend/dist/assets/classDiagram-6PBFFD2Q-HmoWChAG.js +0 -1
- package/payload/frontend/dist/assets/classDiagram-v2-HSJHXN6E-HmoWChAG.js +0 -1
- package/payload/frontend/dist/assets/clone-CiD5LYOe.js +0 -1
- package/payload/frontend/dist/assets/index-UR7g5PLZ.js +0 -448
- package/payload/frontend/dist/assets/main-D4_uoZQa.css +0 -33
- package/payload/frontend/dist/assets/stateDiagram-v2-QKLJ7IA2-DTtHtWkN.js +0 -1
- package/payload/frontend/dist/assets/suiji-DPDKlWVi.js +0 -1
- package/payload/plugins/toolkit/skills/prototype-first-development/SKILL.md +0 -134
- package/payload/plugins/toolkit/skills/prototype-first-development/references/html-prototype-template/README.md +0 -88
- package/payload/plugins/toolkit/skills/prototype-first-development/references/html-prototype-template/app.js +0 -145
- package/payload/plugins/toolkit/skills/prototype-first-development/references/html-prototype-template/index.html +0 -229
- package/payload/plugins/toolkit/skills/prototype-first-development/references/html-prototype-template/mock-state.json +0 -60
- package/payload/plugins/toolkit/skills/prototype-first-development/references/implementation-plan-handoff-template.md +0 -61
- 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
|
|
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
|
-
|
|
12017
|
-
|
|
12018
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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,
|
|
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,
|
|
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,
|
|
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": "
|
|
4
|
-
"sourceRevision": "
|
|
3
|
+
"buildId": "20261114T102132909Z-78b0f7b5",
|
|
4
|
+
"sourceRevision": "78b0f7b532bb517209422c1a67c856a547b9268b",
|
|
5
5
|
"sourceDirty": false,
|
|
6
|
-
"builtAt": "2026-11-
|
|
7
|
-
"contentSha256": "
|
|
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
|
|
7326
|
-
var
|
|
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
|
|
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
|
|
7497
|
-
var
|
|
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
|
|
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
|
-
|
|
8483
|
-
|
|
8484
|
-
|
|
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
|
-
|
|
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
|
-
|
|
8527
|
-
|
|
8528
|
-
|
|
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
|
|
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
|
-
|
|
8566
|
+
return stat;
|
|
8536
8567
|
}
|
|
8537
|
-
function
|
|
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(
|
|
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 !==
|
|
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
|
|
10395
|
-
var execFileAsync = (0,
|
|
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,
|
|
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/
|
|
11069
|
+
// scripts/dev-session/services/dedicated.mjs
|
|
10976
11070
|
var import_node_child_process7 = require("node:child_process");
|
|
10977
|
-
var
|
|
10978
|
-
var execFileAsync3 = (0,
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
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,
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
-
|
|
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,
|
|
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
|
|
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
|
|
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
|
|
13790
|
-
var
|
|
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
|
|
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
|
|
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,
|
|
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,
|
|
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 = "";
|