@smartergpt/lexrunner 2.0.1 → 2.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/BRAND.md +14 -0
- package/CHANGELOG.md +32 -0
- package/GOVERNANCE.md +18 -0
- package/LICENSE.md +201 -110
- package/NOTICE.md +12 -1
- package/README.md +13 -6
- package/dist/{api-QBPBKYOC.js → api-UIWVFU7M.js} +1 -1
- package/dist/{audit-SKMMC2U4.js → audit-HVB2HJPU.js} +2 -2
- package/dist/{autopilot-3OHEUTHD.js → autopilot-JWIOXBCZ.js} +2 -2
- package/dist/{chunk-6PZDSWCG.js → chunk-37UC53OG.js} +2 -2
- package/dist/{chunk-V3BU2VDU.js → chunk-PDDULIDL.js} +13 -1
- package/dist/{chunk-ARDKZW7F.js → chunk-SHSL643G.js} +2 -2
- package/dist/cli.cjs +990 -330
- package/dist/cli.d.ts +161 -7
- package/dist/cli.js +814 -173
- package/dist/{commandValidator-LVEMJTZP.js → commandValidator-XFVNCZXX.js} +1 -1
- package/dist/{constraints-2ZK5FJFA.js → constraints-LE2MW5NS.js} +1 -1
- package/dist/errors/index.js +1 -1
- package/dist/frames/index.js +1 -1
- package/dist/{gateMapping-R3RJYKMS.js → gateMapping-V4DTL5WD.js} +1 -1
- package/dist/hooks/events.js +1 -1
- package/dist/{jsonEnvelope-K2U5CWKU.js → jsonEnvelope-MXJM5ZQH.js} +1 -1
- package/dist/{mergeTreeSimulator-QCFSOU25.js → mergeTreeSimulator-GWZ77NF2.js} +1 -1
- package/dist/package-schemas/behavior-rule.js +1 -1
- package/dist/package-schemas/execution-plan-v1.js +1 -1
- package/dist/package-schemas/gates.js +1 -1
- package/dist/package-schemas/runner-scope.js +1 -1
- package/dist/package-schemas/runner-stack.js +1 -1
- package/dist/{planDiff-IHLFNZUT.js → planDiff-4D3AERAW.js} +1 -1
- package/dist/{planHistory-GLRI356L.js → planHistory-VPV4WDPW.js} +1 -1
- package/dist/{planReview-UUMCGZJ6.js → planReview-FV6INFLQ.js} +1 -1
- package/dist/{planViewer-TRSQVMH4.js → planViewer-WOV6A2HZ.js} +1 -1
- package/dist/{sarif-2C6RKOUX.js → sarif-QXVE3LYD.js} +1 -1
- package/dist/sdk/index.js +1 -1
- package/dist/{security-OE4VLUFK.js → security-W7TOUXSB.js} +1 -1
- package/dist/{signing-KLZYZZMP.js → signing-WGVPHJGG.js} +1 -1
- package/dist/{verify-3UVMA62I.js → verify-Y34CJAKB.js} +1 -1
- package/package.json +6 -4
package/dist/cli.cjs
CHANGED
|
@@ -7,6 +7,9 @@ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
|
7
7
|
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
8
8
|
var __getProtoOf = Object.getPrototypeOf;
|
|
9
9
|
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
10
|
+
var __typeError = (msg) => {
|
|
11
|
+
throw TypeError(msg);
|
|
12
|
+
};
|
|
10
13
|
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
11
14
|
var __esm = (fn, res, err) => function __init() {
|
|
12
15
|
if (err) throw err[0];
|
|
@@ -45,6 +48,11 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
|
|
|
45
48
|
));
|
|
46
49
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
47
50
|
var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
|
|
51
|
+
var __accessCheck = (obj, member, msg) => member.has(obj) || __typeError("Cannot " + msg);
|
|
52
|
+
var __privateGet = (obj, member, getter) => (__accessCheck(obj, member, "read from private field"), getter ? getter.call(obj) : member.get(obj));
|
|
53
|
+
var __privateAdd = (obj, member, value) => member.has(obj) ? __typeError("Cannot add the same private member more than once") : member instanceof WeakSet ? member.add(obj) : member.set(obj, value);
|
|
54
|
+
var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "write to private field"), setter ? setter.call(obj, value) : member.set(obj, value), value);
|
|
55
|
+
var __privateMethod = (obj, member, method) => (__accessCheck(obj, member, "access private method"), method);
|
|
48
56
|
|
|
49
57
|
// src/tiers/schema.ts
|
|
50
58
|
function parseTierOverride(overrideStr) {
|
|
@@ -717,10 +725,10 @@ function formatPlanValidationFailureText(failure5) {
|
|
|
717
725
|
return lines.join("\n");
|
|
718
726
|
}
|
|
719
727
|
function normalizeValidationIssue(issue) {
|
|
720
|
-
const
|
|
728
|
+
const path82 = normalizeValidationPath(issue.path);
|
|
721
729
|
const stableCustomIssue = safeCustomValidationIssue(issue);
|
|
722
730
|
return {
|
|
723
|
-
path: boundDiagnostic(
|
|
731
|
+
path: boundDiagnostic(path82, MAX_SCHEMA_VALIDATION_PATH_BYTES),
|
|
724
732
|
message: boundDiagnostic(
|
|
725
733
|
stableCustomIssue?.message ?? safeValidationMessage(issue.code),
|
|
726
734
|
MAX_SCHEMA_VALIDATION_MESSAGE_BYTES
|
|
@@ -1252,7 +1260,7 @@ var init_performance = __esm({
|
|
|
1252
1260
|
if (global.gc) {
|
|
1253
1261
|
global.gc();
|
|
1254
1262
|
}
|
|
1255
|
-
await new Promise((
|
|
1263
|
+
await new Promise((resolve29) => setTimeout(resolve29, 100));
|
|
1256
1264
|
}
|
|
1257
1265
|
}
|
|
1258
1266
|
/**
|
|
@@ -1421,26 +1429,26 @@ function detectCycles(graph) {
|
|
|
1421
1429
|
const visited = /* @__PURE__ */ new Set();
|
|
1422
1430
|
const recursionStack = /* @__PURE__ */ new Set();
|
|
1423
1431
|
const cycles = [];
|
|
1424
|
-
const
|
|
1432
|
+
const path82 = [];
|
|
1425
1433
|
function dfs(node) {
|
|
1426
1434
|
visited.add(node);
|
|
1427
1435
|
recursionStack.add(node);
|
|
1428
|
-
|
|
1436
|
+
path82.push(node);
|
|
1429
1437
|
const neighbors = graph.get(node) || [];
|
|
1430
1438
|
for (const neighbor of neighbors) {
|
|
1431
1439
|
if (!visited.has(neighbor)) {
|
|
1432
1440
|
dfs(neighbor);
|
|
1433
1441
|
} else if (recursionStack.has(neighbor)) {
|
|
1434
|
-
const cycleStart =
|
|
1442
|
+
const cycleStart = path82.indexOf(neighbor);
|
|
1435
1443
|
if (cycleStart !== -1) {
|
|
1436
|
-
const cycle =
|
|
1444
|
+
const cycle = path82.slice(cycleStart);
|
|
1437
1445
|
cycle.push(neighbor);
|
|
1438
1446
|
cycles.push(cycle);
|
|
1439
1447
|
}
|
|
1440
1448
|
}
|
|
1441
1449
|
}
|
|
1442
1450
|
recursionStack.delete(node);
|
|
1443
|
-
|
|
1451
|
+
path82.pop();
|
|
1444
1452
|
}
|
|
1445
1453
|
for (const node of graph.keys()) {
|
|
1446
1454
|
if (!visited.has(node)) {
|
|
@@ -1870,7 +1878,7 @@ async function withTimeout(promise, timeoutMs) {
|
|
|
1870
1878
|
]);
|
|
1871
1879
|
}
|
|
1872
1880
|
function delay(ms) {
|
|
1873
|
-
return new Promise((
|
|
1881
|
+
return new Promise((resolve29) => setTimeout(resolve29, ms));
|
|
1874
1882
|
}
|
|
1875
1883
|
function formatErrorForUser(classified) {
|
|
1876
1884
|
const lines = [];
|
|
@@ -4027,8 +4035,8 @@ var require_req = __commonJS({
|
|
|
4027
4035
|
if (req.originalUrl) {
|
|
4028
4036
|
_req.url = req.originalUrl;
|
|
4029
4037
|
} else {
|
|
4030
|
-
const
|
|
4031
|
-
_req.url = typeof
|
|
4038
|
+
const path82 = req.path;
|
|
4039
|
+
_req.url = typeof path82 === "string" ? path82 : req.url ? req.url.path || req.url : void 0;
|
|
4032
4040
|
}
|
|
4033
4041
|
if (req.query) {
|
|
4034
4042
|
_req.query = req.query;
|
|
@@ -4193,14 +4201,14 @@ var require_redact = __commonJS({
|
|
|
4193
4201
|
}
|
|
4194
4202
|
return obj;
|
|
4195
4203
|
}
|
|
4196
|
-
function parsePath(
|
|
4204
|
+
function parsePath(path82) {
|
|
4197
4205
|
const parts = [];
|
|
4198
4206
|
let current = "";
|
|
4199
4207
|
let inBrackets = false;
|
|
4200
4208
|
let inQuotes = false;
|
|
4201
4209
|
let quoteChar = "";
|
|
4202
|
-
for (let i = 0; i <
|
|
4203
|
-
const char =
|
|
4210
|
+
for (let i = 0; i < path82.length; i++) {
|
|
4211
|
+
const char = path82[i];
|
|
4204
4212
|
if (!inBrackets && char === ".") {
|
|
4205
4213
|
if (current) {
|
|
4206
4214
|
parts.push(current);
|
|
@@ -4331,10 +4339,10 @@ var require_redact = __commonJS({
|
|
|
4331
4339
|
return current;
|
|
4332
4340
|
}
|
|
4333
4341
|
function redactPaths(obj, paths, censor, remove = false) {
|
|
4334
|
-
for (const
|
|
4335
|
-
const parts = parsePath(
|
|
4342
|
+
for (const path82 of paths) {
|
|
4343
|
+
const parts = parsePath(path82);
|
|
4336
4344
|
if (parts.includes("*")) {
|
|
4337
|
-
redactWildcardPath(obj, parts, censor,
|
|
4345
|
+
redactWildcardPath(obj, parts, censor, path82, remove);
|
|
4338
4346
|
} else {
|
|
4339
4347
|
if (remove) {
|
|
4340
4348
|
removeKey(obj, parts);
|
|
@@ -4419,8 +4427,8 @@ var require_redact = __commonJS({
|
|
|
4419
4427
|
}
|
|
4420
4428
|
} else {
|
|
4421
4429
|
if (afterWildcard.includes("*")) {
|
|
4422
|
-
const wrappedCensor = typeof censor === "function" ? (value,
|
|
4423
|
-
const fullPath = [...pathArray.slice(0, pathLength), ...
|
|
4430
|
+
const wrappedCensor = typeof censor === "function" ? (value, path82) => {
|
|
4431
|
+
const fullPath = [...pathArray.slice(0, pathLength), ...path82];
|
|
4424
4432
|
return censor(value, fullPath);
|
|
4425
4433
|
} : censor;
|
|
4426
4434
|
redactWildcardPath(current, afterWildcard, wrappedCensor, originalPath, remove);
|
|
@@ -4455,8 +4463,8 @@ var require_redact = __commonJS({
|
|
|
4455
4463
|
return null;
|
|
4456
4464
|
}
|
|
4457
4465
|
const pathStructure = /* @__PURE__ */ new Map();
|
|
4458
|
-
for (const
|
|
4459
|
-
const parts = parsePath(
|
|
4466
|
+
for (const path82 of pathsToClone) {
|
|
4467
|
+
const parts = parsePath(path82);
|
|
4460
4468
|
let current = pathStructure;
|
|
4461
4469
|
for (let i = 0; i < parts.length; i++) {
|
|
4462
4470
|
const part = parts[i];
|
|
@@ -4508,24 +4516,24 @@ var require_redact = __commonJS({
|
|
|
4508
4516
|
}
|
|
4509
4517
|
return cloneSelectively(obj, pathStructure);
|
|
4510
4518
|
}
|
|
4511
|
-
function validatePath(
|
|
4512
|
-
if (typeof
|
|
4519
|
+
function validatePath(path82) {
|
|
4520
|
+
if (typeof path82 !== "string") {
|
|
4513
4521
|
throw new Error("Paths must be (non-empty) strings");
|
|
4514
4522
|
}
|
|
4515
|
-
if (
|
|
4523
|
+
if (path82 === "") {
|
|
4516
4524
|
throw new Error("Invalid redaction path ()");
|
|
4517
4525
|
}
|
|
4518
|
-
if (
|
|
4519
|
-
throw new Error(`Invalid redaction path (${
|
|
4526
|
+
if (path82.includes("..")) {
|
|
4527
|
+
throw new Error(`Invalid redaction path (${path82})`);
|
|
4520
4528
|
}
|
|
4521
|
-
if (
|
|
4522
|
-
throw new Error(`Invalid redaction path (${
|
|
4529
|
+
if (path82.includes(",")) {
|
|
4530
|
+
throw new Error(`Invalid redaction path (${path82})`);
|
|
4523
4531
|
}
|
|
4524
4532
|
let bracketCount = 0;
|
|
4525
4533
|
let inQuotes = false;
|
|
4526
4534
|
let quoteChar = "";
|
|
4527
|
-
for (let i = 0; i <
|
|
4528
|
-
const char =
|
|
4535
|
+
for (let i = 0; i < path82.length; i++) {
|
|
4536
|
+
const char = path82[i];
|
|
4529
4537
|
if ((char === '"' || char === "'") && bracketCount > 0) {
|
|
4530
4538
|
if (!inQuotes) {
|
|
4531
4539
|
inQuotes = true;
|
|
@@ -4539,20 +4547,20 @@ var require_redact = __commonJS({
|
|
|
4539
4547
|
} else if (char === "]" && !inQuotes) {
|
|
4540
4548
|
bracketCount--;
|
|
4541
4549
|
if (bracketCount < 0) {
|
|
4542
|
-
throw new Error(`Invalid redaction path (${
|
|
4550
|
+
throw new Error(`Invalid redaction path (${path82})`);
|
|
4543
4551
|
}
|
|
4544
4552
|
}
|
|
4545
4553
|
}
|
|
4546
4554
|
if (bracketCount !== 0) {
|
|
4547
|
-
throw new Error(`Invalid redaction path (${
|
|
4555
|
+
throw new Error(`Invalid redaction path (${path82})`);
|
|
4548
4556
|
}
|
|
4549
4557
|
}
|
|
4550
4558
|
function validatePaths(paths) {
|
|
4551
4559
|
if (!Array.isArray(paths)) {
|
|
4552
4560
|
throw new TypeError("paths must be an array");
|
|
4553
4561
|
}
|
|
4554
|
-
for (const
|
|
4555
|
-
validatePath(
|
|
4562
|
+
for (const path82 of paths) {
|
|
4563
|
+
validatePath(path82);
|
|
4556
4564
|
}
|
|
4557
4565
|
}
|
|
4558
4566
|
function slowRedact(options = {}) {
|
|
@@ -4720,8 +4728,8 @@ var require_redaction = __commonJS({
|
|
|
4720
4728
|
if (shape[k] === null) {
|
|
4721
4729
|
o[k] = (value) => topCensor(value, [k]);
|
|
4722
4730
|
} else {
|
|
4723
|
-
const wrappedCensor = typeof censor === "function" ? (value,
|
|
4724
|
-
return censor(value, [k, ...
|
|
4731
|
+
const wrappedCensor = typeof censor === "function" ? (value, path82) => {
|
|
4732
|
+
return censor(value, [k, ...path82]);
|
|
4725
4733
|
} : censor;
|
|
4726
4734
|
o[k] = Redact({
|
|
4727
4735
|
paths: shape[k],
|
|
@@ -4939,10 +4947,10 @@ var require_atomic_sleep = __commonJS({
|
|
|
4939
4947
|
var require_sonic_boom = __commonJS({
|
|
4940
4948
|
"node_modules/sonic-boom/index.js"(exports2, module2) {
|
|
4941
4949
|
"use strict";
|
|
4942
|
-
var
|
|
4950
|
+
var fs74 = require("fs");
|
|
4943
4951
|
var EventEmitter = require("events");
|
|
4944
4952
|
var inherits = require("util").inherits;
|
|
4945
|
-
var
|
|
4953
|
+
var path82 = require("path");
|
|
4946
4954
|
var sleep2 = require_atomic_sleep();
|
|
4947
4955
|
var assert = require("assert");
|
|
4948
4956
|
var BUSY_WRITE_TIMEOUT = 100;
|
|
@@ -4996,20 +5004,20 @@ var require_sonic_boom = __commonJS({
|
|
|
4996
5004
|
const mode = sonic.mode;
|
|
4997
5005
|
if (sonic.sync) {
|
|
4998
5006
|
try {
|
|
4999
|
-
if (sonic.mkdir)
|
|
5000
|
-
const fd =
|
|
5007
|
+
if (sonic.mkdir) fs74.mkdirSync(path82.dirname(file), { recursive: true });
|
|
5008
|
+
const fd = fs74.openSync(file, flags, mode);
|
|
5001
5009
|
fileOpened(null, fd);
|
|
5002
5010
|
} catch (err) {
|
|
5003
5011
|
fileOpened(err);
|
|
5004
5012
|
throw err;
|
|
5005
5013
|
}
|
|
5006
5014
|
} else if (sonic.mkdir) {
|
|
5007
|
-
|
|
5015
|
+
fs74.mkdir(path82.dirname(file), { recursive: true }, (err) => {
|
|
5008
5016
|
if (err) return fileOpened(err);
|
|
5009
|
-
|
|
5017
|
+
fs74.open(file, flags, mode, fileOpened);
|
|
5010
5018
|
});
|
|
5011
5019
|
} else {
|
|
5012
|
-
|
|
5020
|
+
fs74.open(file, flags, mode, fileOpened);
|
|
5013
5021
|
}
|
|
5014
5022
|
}
|
|
5015
5023
|
function SonicBoom(opts) {
|
|
@@ -5050,8 +5058,8 @@ var require_sonic_boom = __commonJS({
|
|
|
5050
5058
|
this.flush = flushBuffer;
|
|
5051
5059
|
this.flushSync = flushBufferSync;
|
|
5052
5060
|
this._actualWrite = actualWriteBuffer;
|
|
5053
|
-
fsWriteSync = () =>
|
|
5054
|
-
fsWrite = () =>
|
|
5061
|
+
fsWriteSync = () => fs74.writeSync(this.fd, this._writingBuf);
|
|
5062
|
+
fsWrite = () => fs74.write(this.fd, this._writingBuf, this.release);
|
|
5055
5063
|
} else if (contentMode === void 0 || contentMode === kContentModeUtf8) {
|
|
5056
5064
|
this._writingBuf = "";
|
|
5057
5065
|
this.write = write;
|
|
@@ -5060,15 +5068,15 @@ var require_sonic_boom = __commonJS({
|
|
|
5060
5068
|
this._actualWrite = actualWrite;
|
|
5061
5069
|
fsWriteSync = () => {
|
|
5062
5070
|
if (Buffer.isBuffer(this._writingBuf)) {
|
|
5063
|
-
return
|
|
5071
|
+
return fs74.writeSync(this.fd, this._writingBuf);
|
|
5064
5072
|
}
|
|
5065
|
-
return
|
|
5073
|
+
return fs74.writeSync(this.fd, this._writingBuf, "utf8");
|
|
5066
5074
|
};
|
|
5067
5075
|
fsWrite = () => {
|
|
5068
5076
|
if (Buffer.isBuffer(this._writingBuf)) {
|
|
5069
|
-
return
|
|
5077
|
+
return fs74.write(this.fd, this._writingBuf, this.release);
|
|
5070
5078
|
}
|
|
5071
|
-
return
|
|
5079
|
+
return fs74.write(this.fd, this._writingBuf, "utf8", this.release);
|
|
5072
5080
|
};
|
|
5073
5081
|
} else {
|
|
5074
5082
|
throw new Error(`SonicBoom supports "${kContentModeUtf8}" and "${kContentModeBuffer}", but passed ${contentMode}`);
|
|
@@ -5125,7 +5133,7 @@ var require_sonic_boom = __commonJS({
|
|
|
5125
5133
|
}
|
|
5126
5134
|
}
|
|
5127
5135
|
if (this._fsync) {
|
|
5128
|
-
|
|
5136
|
+
fs74.fsyncSync(this.fd);
|
|
5129
5137
|
}
|
|
5130
5138
|
const len = this._len;
|
|
5131
5139
|
if (this._reopening) {
|
|
@@ -5239,7 +5247,7 @@ var require_sonic_boom = __commonJS({
|
|
|
5239
5247
|
const onDrain = () => {
|
|
5240
5248
|
if (!this._fsync) {
|
|
5241
5249
|
try {
|
|
5242
|
-
|
|
5250
|
+
fs74.fsync(this.fd, (err) => {
|
|
5243
5251
|
this._flushPending = false;
|
|
5244
5252
|
cb(err);
|
|
5245
5253
|
});
|
|
@@ -5341,7 +5349,7 @@ var require_sonic_boom = __commonJS({
|
|
|
5341
5349
|
const fd = this.fd;
|
|
5342
5350
|
this.once("ready", () => {
|
|
5343
5351
|
if (fd !== this.fd) {
|
|
5344
|
-
|
|
5352
|
+
fs74.close(fd, (err) => {
|
|
5345
5353
|
if (err) {
|
|
5346
5354
|
return this.emit("error", err);
|
|
5347
5355
|
}
|
|
@@ -5390,7 +5398,7 @@ var require_sonic_boom = __commonJS({
|
|
|
5390
5398
|
buf = this._bufs[0];
|
|
5391
5399
|
}
|
|
5392
5400
|
try {
|
|
5393
|
-
const n = Buffer.isBuffer(buf) ?
|
|
5401
|
+
const n = Buffer.isBuffer(buf) ? fs74.writeSync(this.fd, buf) : fs74.writeSync(this.fd, buf, "utf8");
|
|
5394
5402
|
const releasedBufObj = releaseWritingBuf(buf, this._len, n);
|
|
5395
5403
|
buf = releasedBufObj.writingBuf;
|
|
5396
5404
|
this._len = releasedBufObj.len;
|
|
@@ -5406,7 +5414,7 @@ var require_sonic_boom = __commonJS({
|
|
|
5406
5414
|
}
|
|
5407
5415
|
}
|
|
5408
5416
|
try {
|
|
5409
|
-
|
|
5417
|
+
fs74.fsyncSync(this.fd);
|
|
5410
5418
|
} catch {
|
|
5411
5419
|
}
|
|
5412
5420
|
}
|
|
@@ -5427,7 +5435,7 @@ var require_sonic_boom = __commonJS({
|
|
|
5427
5435
|
buf = mergeBuf(this._bufs[0], this._lens[0]);
|
|
5428
5436
|
}
|
|
5429
5437
|
try {
|
|
5430
|
-
const n =
|
|
5438
|
+
const n = fs74.writeSync(this.fd, buf);
|
|
5431
5439
|
buf = buf.subarray(n);
|
|
5432
5440
|
this._len = Math.max(this._len - n, 0);
|
|
5433
5441
|
if (buf.length <= 0) {
|
|
@@ -5455,13 +5463,13 @@ var require_sonic_boom = __commonJS({
|
|
|
5455
5463
|
this._writingBuf = this._writingBuf.length ? this._writingBuf : this._bufs.shift() || "";
|
|
5456
5464
|
if (this.sync) {
|
|
5457
5465
|
try {
|
|
5458
|
-
const written = Buffer.isBuffer(this._writingBuf) ?
|
|
5466
|
+
const written = Buffer.isBuffer(this._writingBuf) ? fs74.writeSync(this.fd, this._writingBuf) : fs74.writeSync(this.fd, this._writingBuf, "utf8");
|
|
5459
5467
|
release3(null, written);
|
|
5460
5468
|
} catch (err) {
|
|
5461
5469
|
release3(err);
|
|
5462
5470
|
}
|
|
5463
5471
|
} else {
|
|
5464
|
-
|
|
5472
|
+
fs74.write(this.fd, this._writingBuf, release3);
|
|
5465
5473
|
}
|
|
5466
5474
|
}
|
|
5467
5475
|
function actualWriteBuffer() {
|
|
@@ -5470,7 +5478,7 @@ var require_sonic_boom = __commonJS({
|
|
|
5470
5478
|
this._writingBuf = this._writingBuf.length ? this._writingBuf : mergeBuf(this._bufs.shift(), this._lens.shift());
|
|
5471
5479
|
if (this.sync) {
|
|
5472
5480
|
try {
|
|
5473
|
-
const written =
|
|
5481
|
+
const written = fs74.writeSync(this.fd, this._writingBuf);
|
|
5474
5482
|
release3(null, written);
|
|
5475
5483
|
} catch (err) {
|
|
5476
5484
|
release3(err);
|
|
@@ -5479,7 +5487,7 @@ var require_sonic_boom = __commonJS({
|
|
|
5479
5487
|
if (kCopyBuffer) {
|
|
5480
5488
|
this._writingBuf = Buffer.from(this._writingBuf);
|
|
5481
5489
|
}
|
|
5482
|
-
|
|
5490
|
+
fs74.write(this.fd, this._writingBuf, release3);
|
|
5483
5491
|
}
|
|
5484
5492
|
}
|
|
5485
5493
|
function actualClose(sonic) {
|
|
@@ -5495,12 +5503,12 @@ var require_sonic_boom = __commonJS({
|
|
|
5495
5503
|
sonic._lens = [];
|
|
5496
5504
|
assert(typeof sonic.fd === "number", `sonic.fd must be a number, got ${typeof sonic.fd}`);
|
|
5497
5505
|
try {
|
|
5498
|
-
|
|
5506
|
+
fs74.fsync(sonic.fd, closeWrapped);
|
|
5499
5507
|
} catch {
|
|
5500
5508
|
}
|
|
5501
5509
|
function closeWrapped() {
|
|
5502
5510
|
if (sonic.fd !== 1 && sonic.fd !== 2) {
|
|
5503
|
-
|
|
5511
|
+
fs74.close(sonic.fd, done);
|
|
5504
5512
|
} else {
|
|
5505
5513
|
done();
|
|
5506
5514
|
}
|
|
@@ -5753,7 +5761,7 @@ var require_thread_stream = __commonJS({
|
|
|
5753
5761
|
var { version } = require_package();
|
|
5754
5762
|
var { EventEmitter } = require("events");
|
|
5755
5763
|
var { Worker } = require("worker_threads");
|
|
5756
|
-
var { join:
|
|
5764
|
+
var { join: join62 } = require("path");
|
|
5757
5765
|
var { pathToFileURL } = require("url");
|
|
5758
5766
|
var { wait } = require_wait();
|
|
5759
5767
|
var {
|
|
@@ -5804,7 +5812,7 @@ var require_thread_stream = __commonJS({
|
|
|
5804
5812
|
function createWorker(stream, opts) {
|
|
5805
5813
|
const { filename, workerData } = opts;
|
|
5806
5814
|
const bundlerOverrides = "__bundlerPathsOverrides" in globalThis ? globalThis.__bundlerPathsOverrides : {};
|
|
5807
|
-
const toExecute = bundlerOverrides["thread-stream-worker"] ||
|
|
5815
|
+
const toExecute = bundlerOverrides["thread-stream-worker"] || join62(__dirname, "lib", "worker.js");
|
|
5808
5816
|
const worker = new Worker(toExecute, {
|
|
5809
5817
|
...opts.workerOpts,
|
|
5810
5818
|
name: opts.workerOpts?.name || "thread-stream",
|
|
@@ -5968,7 +5976,7 @@ var require_thread_stream = __commonJS({
|
|
|
5968
5976
|
}
|
|
5969
5977
|
if (this[kImpl].flushing && this[kImpl].bufLen + dataBuf.length >= MAX_STRING) {
|
|
5970
5978
|
try {
|
|
5971
|
-
|
|
5979
|
+
writeSync2(this);
|
|
5972
5980
|
this[kImpl].flushing = true;
|
|
5973
5981
|
} catch (err) {
|
|
5974
5982
|
destroy(this, err);
|
|
@@ -5979,7 +5987,7 @@ var require_thread_stream = __commonJS({
|
|
|
5979
5987
|
this[kImpl].bufLen += dataBuf.length;
|
|
5980
5988
|
if (this[kImpl].sync) {
|
|
5981
5989
|
try {
|
|
5982
|
-
|
|
5990
|
+
writeSync2(this);
|
|
5983
5991
|
return true;
|
|
5984
5992
|
} catch (err) {
|
|
5985
5993
|
destroy(this, err);
|
|
@@ -6014,7 +6022,7 @@ var require_thread_stream = __commonJS({
|
|
|
6014
6022
|
if (this[kImpl].destroyed) {
|
|
6015
6023
|
return;
|
|
6016
6024
|
}
|
|
6017
|
-
|
|
6025
|
+
writeSync2(this);
|
|
6018
6026
|
flushSync(this);
|
|
6019
6027
|
}
|
|
6020
6028
|
unref() {
|
|
@@ -6218,7 +6226,7 @@ var require_thread_stream = __commonJS({
|
|
|
6218
6226
|
destroy(stream, err);
|
|
6219
6227
|
}
|
|
6220
6228
|
}
|
|
6221
|
-
function
|
|
6229
|
+
function writeSync2(stream) {
|
|
6222
6230
|
const cb = () => {
|
|
6223
6231
|
if (stream[kImpl].ending) {
|
|
6224
6232
|
end(stream);
|
|
@@ -6272,7 +6280,7 @@ var require_transport = __commonJS({
|
|
|
6272
6280
|
var { createRequire: createRequire2 } = require("module");
|
|
6273
6281
|
var { existsSync: existsSync55 } = require("fs");
|
|
6274
6282
|
var getCallers = require_caller();
|
|
6275
|
-
var { join:
|
|
6283
|
+
var { join: join62, isAbsolute: isAbsolute12, sep: sep7 } = require("path");
|
|
6276
6284
|
var { fileURLToPath: fileURLToPath9 } = require("url");
|
|
6277
6285
|
var sleep2 = require_atomic_sleep();
|
|
6278
6286
|
var onExit = require_on_exit_leak_free();
|
|
@@ -6336,15 +6344,15 @@ var require_transport = __commonJS({
|
|
|
6336
6344
|
if (!unquoted) {
|
|
6337
6345
|
return false;
|
|
6338
6346
|
}
|
|
6339
|
-
let
|
|
6340
|
-
if (
|
|
6347
|
+
let path82 = unquoted;
|
|
6348
|
+
if (path82.startsWith("file://")) {
|
|
6341
6349
|
try {
|
|
6342
|
-
|
|
6350
|
+
path82 = fileURLToPath9(path82);
|
|
6343
6351
|
} catch {
|
|
6344
6352
|
return false;
|
|
6345
6353
|
}
|
|
6346
6354
|
}
|
|
6347
|
-
return isAbsolute12(
|
|
6355
|
+
return isAbsolute12(path82) && !existsSync55(path82);
|
|
6348
6356
|
}
|
|
6349
6357
|
function stripQuotes(value) {
|
|
6350
6358
|
const first = value[0];
|
|
@@ -6425,7 +6433,7 @@ var require_transport = __commonJS({
|
|
|
6425
6433
|
throw new Error("only one of target or targets can be specified");
|
|
6426
6434
|
}
|
|
6427
6435
|
if (targets) {
|
|
6428
|
-
target = bundlerOverrides["pino-worker"] ||
|
|
6436
|
+
target = bundlerOverrides["pino-worker"] || join62(__dirname, "worker.js");
|
|
6429
6437
|
options.targets = targets.filter((dest) => dest.target).map((dest) => {
|
|
6430
6438
|
return {
|
|
6431
6439
|
...dest,
|
|
@@ -6443,7 +6451,7 @@ var require_transport = __commonJS({
|
|
|
6443
6451
|
});
|
|
6444
6452
|
});
|
|
6445
6453
|
} else if (pipeline) {
|
|
6446
|
-
target = bundlerOverrides["pino-worker"] ||
|
|
6454
|
+
target = bundlerOverrides["pino-worker"] || join62(__dirname, "worker.js");
|
|
6447
6455
|
options.pipelines = [pipeline.map((dest) => {
|
|
6448
6456
|
return {
|
|
6449
6457
|
...dest,
|
|
@@ -6466,12 +6474,12 @@ var require_transport = __commonJS({
|
|
|
6466
6474
|
return origin;
|
|
6467
6475
|
}
|
|
6468
6476
|
if (origin === "pino/file") {
|
|
6469
|
-
return
|
|
6477
|
+
return join62(__dirname, "..", "file.js");
|
|
6470
6478
|
}
|
|
6471
6479
|
let fixTarget2;
|
|
6472
6480
|
for (const filePath of callers) {
|
|
6473
6481
|
try {
|
|
6474
|
-
const context = filePath === "node:repl" ? process.cwd() +
|
|
6482
|
+
const context = filePath === "node:repl" ? process.cwd() + sep7 : filePath;
|
|
6475
6483
|
fixTarget2 = createRequire2(context).resolve(origin);
|
|
6476
6484
|
break;
|
|
6477
6485
|
} catch (err) {
|
|
@@ -7447,7 +7455,7 @@ var require_safe_stable_stringify = __commonJS({
|
|
|
7447
7455
|
return circularValue;
|
|
7448
7456
|
}
|
|
7449
7457
|
let res = "";
|
|
7450
|
-
let
|
|
7458
|
+
let join62 = ",";
|
|
7451
7459
|
const originalIndentation = indentation;
|
|
7452
7460
|
if (Array.isArray(value)) {
|
|
7453
7461
|
if (value.length === 0) {
|
|
@@ -7461,7 +7469,7 @@ var require_safe_stable_stringify = __commonJS({
|
|
|
7461
7469
|
indentation += spacer;
|
|
7462
7470
|
res += `
|
|
7463
7471
|
${indentation}`;
|
|
7464
|
-
|
|
7472
|
+
join62 = `,
|
|
7465
7473
|
${indentation}`;
|
|
7466
7474
|
}
|
|
7467
7475
|
const maximumValuesToStringify = Math.min(value.length, maximumBreadth);
|
|
@@ -7469,13 +7477,13 @@ ${indentation}`;
|
|
|
7469
7477
|
for (; i < maximumValuesToStringify - 1; i++) {
|
|
7470
7478
|
const tmp2 = stringifyFnReplacer(String(i), value, stack, replacer, spacer, indentation);
|
|
7471
7479
|
res += tmp2 !== void 0 ? tmp2 : "null";
|
|
7472
|
-
res +=
|
|
7480
|
+
res += join62;
|
|
7473
7481
|
}
|
|
7474
7482
|
const tmp = stringifyFnReplacer(String(i), value, stack, replacer, spacer, indentation);
|
|
7475
7483
|
res += tmp !== void 0 ? tmp : "null";
|
|
7476
7484
|
if (value.length - 1 > maximumBreadth) {
|
|
7477
7485
|
const removedKeys = value.length - maximumBreadth - 1;
|
|
7478
|
-
res += `${
|
|
7486
|
+
res += `${join62}"... ${getItemCount(removedKeys)} not stringified"`;
|
|
7479
7487
|
}
|
|
7480
7488
|
if (spacer !== "") {
|
|
7481
7489
|
res += `
|
|
@@ -7496,7 +7504,7 @@ ${originalIndentation}`;
|
|
|
7496
7504
|
let separator = "";
|
|
7497
7505
|
if (spacer !== "") {
|
|
7498
7506
|
indentation += spacer;
|
|
7499
|
-
|
|
7507
|
+
join62 = `,
|
|
7500
7508
|
${indentation}`;
|
|
7501
7509
|
whitespace = " ";
|
|
7502
7510
|
}
|
|
@@ -7510,13 +7518,13 @@ ${indentation}`;
|
|
|
7510
7518
|
const tmp = stringifyFnReplacer(key2, value, stack, replacer, spacer, indentation);
|
|
7511
7519
|
if (tmp !== void 0) {
|
|
7512
7520
|
res += `${separator}${strEscape(key2)}:${whitespace}${tmp}`;
|
|
7513
|
-
separator =
|
|
7521
|
+
separator = join62;
|
|
7514
7522
|
}
|
|
7515
7523
|
}
|
|
7516
7524
|
if (keyLength > maximumBreadth) {
|
|
7517
7525
|
const removedKeys = keyLength - maximumBreadth;
|
|
7518
7526
|
res += `${separator}"...":${whitespace}"${getItemCount(removedKeys)} not stringified"`;
|
|
7519
|
-
separator =
|
|
7527
|
+
separator = join62;
|
|
7520
7528
|
}
|
|
7521
7529
|
if (spacer !== "" && separator.length > 1) {
|
|
7522
7530
|
res = `
|
|
@@ -7557,7 +7565,7 @@ ${originalIndentation}`;
|
|
|
7557
7565
|
}
|
|
7558
7566
|
const originalIndentation = indentation;
|
|
7559
7567
|
let res = "";
|
|
7560
|
-
let
|
|
7568
|
+
let join62 = ",";
|
|
7561
7569
|
if (Array.isArray(value)) {
|
|
7562
7570
|
if (value.length === 0) {
|
|
7563
7571
|
return "[]";
|
|
@@ -7570,7 +7578,7 @@ ${originalIndentation}`;
|
|
|
7570
7578
|
indentation += spacer;
|
|
7571
7579
|
res += `
|
|
7572
7580
|
${indentation}`;
|
|
7573
|
-
|
|
7581
|
+
join62 = `,
|
|
7574
7582
|
${indentation}`;
|
|
7575
7583
|
}
|
|
7576
7584
|
const maximumValuesToStringify = Math.min(value.length, maximumBreadth);
|
|
@@ -7578,13 +7586,13 @@ ${indentation}`;
|
|
|
7578
7586
|
for (; i < maximumValuesToStringify - 1; i++) {
|
|
7579
7587
|
const tmp2 = stringifyArrayReplacer(String(i), value[i], stack, replacer, spacer, indentation);
|
|
7580
7588
|
res += tmp2 !== void 0 ? tmp2 : "null";
|
|
7581
|
-
res +=
|
|
7589
|
+
res += join62;
|
|
7582
7590
|
}
|
|
7583
7591
|
const tmp = stringifyArrayReplacer(String(i), value[i], stack, replacer, spacer, indentation);
|
|
7584
7592
|
res += tmp !== void 0 ? tmp : "null";
|
|
7585
7593
|
if (value.length - 1 > maximumBreadth) {
|
|
7586
7594
|
const removedKeys = value.length - maximumBreadth - 1;
|
|
7587
|
-
res += `${
|
|
7595
|
+
res += `${join62}"... ${getItemCount(removedKeys)} not stringified"`;
|
|
7588
7596
|
}
|
|
7589
7597
|
if (spacer !== "") {
|
|
7590
7598
|
res += `
|
|
@@ -7597,7 +7605,7 @@ ${originalIndentation}`;
|
|
|
7597
7605
|
let whitespace = "";
|
|
7598
7606
|
if (spacer !== "") {
|
|
7599
7607
|
indentation += spacer;
|
|
7600
|
-
|
|
7608
|
+
join62 = `,
|
|
7601
7609
|
${indentation}`;
|
|
7602
7610
|
whitespace = " ";
|
|
7603
7611
|
}
|
|
@@ -7606,7 +7614,7 @@ ${indentation}`;
|
|
|
7606
7614
|
const tmp = stringifyArrayReplacer(key2, value[key2], stack, replacer, spacer, indentation);
|
|
7607
7615
|
if (tmp !== void 0) {
|
|
7608
7616
|
res += `${separator}${strEscape(key2)}:${whitespace}${tmp}`;
|
|
7609
|
-
separator =
|
|
7617
|
+
separator = join62;
|
|
7610
7618
|
}
|
|
7611
7619
|
}
|
|
7612
7620
|
if (spacer !== "" && separator.length > 1) {
|
|
@@ -7664,20 +7672,20 @@ ${originalIndentation}`;
|
|
|
7664
7672
|
indentation += spacer;
|
|
7665
7673
|
let res2 = `
|
|
7666
7674
|
${indentation}`;
|
|
7667
|
-
const
|
|
7675
|
+
const join63 = `,
|
|
7668
7676
|
${indentation}`;
|
|
7669
7677
|
const maximumValuesToStringify = Math.min(value.length, maximumBreadth);
|
|
7670
7678
|
let i = 0;
|
|
7671
7679
|
for (; i < maximumValuesToStringify - 1; i++) {
|
|
7672
7680
|
const tmp2 = stringifyIndent(String(i), value[i], stack, spacer, indentation);
|
|
7673
7681
|
res2 += tmp2 !== void 0 ? tmp2 : "null";
|
|
7674
|
-
res2 +=
|
|
7682
|
+
res2 += join63;
|
|
7675
7683
|
}
|
|
7676
7684
|
const tmp = stringifyIndent(String(i), value[i], stack, spacer, indentation);
|
|
7677
7685
|
res2 += tmp !== void 0 ? tmp : "null";
|
|
7678
7686
|
if (value.length - 1 > maximumBreadth) {
|
|
7679
7687
|
const removedKeys = value.length - maximumBreadth - 1;
|
|
7680
|
-
res2 += `${
|
|
7688
|
+
res2 += `${join63}"... ${getItemCount(removedKeys)} not stringified"`;
|
|
7681
7689
|
}
|
|
7682
7690
|
res2 += `
|
|
7683
7691
|
${originalIndentation}`;
|
|
@@ -7693,16 +7701,16 @@ ${originalIndentation}`;
|
|
|
7693
7701
|
return '"[Object]"';
|
|
7694
7702
|
}
|
|
7695
7703
|
indentation += spacer;
|
|
7696
|
-
const
|
|
7704
|
+
const join62 = `,
|
|
7697
7705
|
${indentation}`;
|
|
7698
7706
|
let res = "";
|
|
7699
7707
|
let separator = "";
|
|
7700
7708
|
let maximumPropertiesToStringify = Math.min(keyLength, maximumBreadth);
|
|
7701
7709
|
if (isTypedArrayWithEntries(value)) {
|
|
7702
|
-
res += stringifyTypedArray(value,
|
|
7710
|
+
res += stringifyTypedArray(value, join62, maximumBreadth);
|
|
7703
7711
|
keys = keys.slice(value.length);
|
|
7704
7712
|
maximumPropertiesToStringify -= value.length;
|
|
7705
|
-
separator =
|
|
7713
|
+
separator = join62;
|
|
7706
7714
|
}
|
|
7707
7715
|
if (deterministic) {
|
|
7708
7716
|
keys = sort(keys, comparator);
|
|
@@ -7713,13 +7721,13 @@ ${indentation}`;
|
|
|
7713
7721
|
const tmp = stringifyIndent(key2, value[key2], stack, spacer, indentation);
|
|
7714
7722
|
if (tmp !== void 0) {
|
|
7715
7723
|
res += `${separator}${strEscape(key2)}: ${tmp}`;
|
|
7716
|
-
separator =
|
|
7724
|
+
separator = join62;
|
|
7717
7725
|
}
|
|
7718
7726
|
}
|
|
7719
7727
|
if (keyLength > maximumBreadth) {
|
|
7720
7728
|
const removedKeys = keyLength - maximumBreadth;
|
|
7721
7729
|
res += `${separator}"...": "${getItemCount(removedKeys)} not stringified"`;
|
|
7722
|
-
separator =
|
|
7730
|
+
separator = join62;
|
|
7723
7731
|
}
|
|
7724
7732
|
if (separator !== "") {
|
|
7725
7733
|
res = `
|
|
@@ -9247,7 +9255,7 @@ var require_postgres_interval = __commonJS({
|
|
|
9247
9255
|
if (!(this instanceof PostgresInterval)) {
|
|
9248
9256
|
return new PostgresInterval(raw);
|
|
9249
9257
|
}
|
|
9250
|
-
extend(this,
|
|
9258
|
+
extend(this, parse8(raw));
|
|
9251
9259
|
}
|
|
9252
9260
|
var properties = ["seconds", "minutes", "hours", "days", "months", "years"];
|
|
9253
9261
|
PostgresInterval.prototype.toPostgres = function() {
|
|
@@ -9308,7 +9316,7 @@ var require_postgres_interval = __commonJS({
|
|
|
9308
9316
|
var microseconds = fraction + "000000".slice(fraction.length);
|
|
9309
9317
|
return parseInt(microseconds, 10) / 1e3;
|
|
9310
9318
|
}
|
|
9311
|
-
function
|
|
9319
|
+
function parse8(interval) {
|
|
9312
9320
|
if (!interval) return {};
|
|
9313
9321
|
var matches = INTERVAL.exec(interval);
|
|
9314
9322
|
var isNegative = matches[8] === "-";
|
|
@@ -9797,13 +9805,13 @@ var require_binaryParsers = __commonJS({
|
|
|
9797
9805
|
console.log("ERROR: ElementType not implemented: " + elementType2);
|
|
9798
9806
|
}
|
|
9799
9807
|
};
|
|
9800
|
-
var
|
|
9808
|
+
var parse8 = function(dimension, elementType2) {
|
|
9801
9809
|
var array = [];
|
|
9802
9810
|
var i2;
|
|
9803
9811
|
if (dimension.length > 1) {
|
|
9804
9812
|
var count = dimension.shift();
|
|
9805
9813
|
for (i2 = 0; i2 < count; i2++) {
|
|
9806
|
-
array[i2] =
|
|
9814
|
+
array[i2] = parse8(dimension, elementType2);
|
|
9807
9815
|
}
|
|
9808
9816
|
dimension.unshift(count);
|
|
9809
9817
|
} else {
|
|
@@ -9813,7 +9821,7 @@ var require_binaryParsers = __commonJS({
|
|
|
9813
9821
|
}
|
|
9814
9822
|
return array;
|
|
9815
9823
|
};
|
|
9816
|
-
return
|
|
9824
|
+
return parse8(dims, elementType);
|
|
9817
9825
|
};
|
|
9818
9826
|
var parseText = function(value) {
|
|
9819
9827
|
return value.toString("utf8");
|
|
@@ -10564,7 +10572,7 @@ var require_type_overrides = __commonJS({
|
|
|
10564
10572
|
var require_pg_connection_string = __commonJS({
|
|
10565
10573
|
"node_modules/pg-connection-string/index.js"(exports2, module2) {
|
|
10566
10574
|
"use strict";
|
|
10567
|
-
function
|
|
10575
|
+
function parse8(str, options = {}) {
|
|
10568
10576
|
if (str.charAt(0) === "/") {
|
|
10569
10577
|
const config2 = str.split(" ");
|
|
10570
10578
|
return { host: config2[0], database: config2[1] };
|
|
@@ -10620,15 +10628,15 @@ var require_pg_connection_string = __commonJS({
|
|
|
10620
10628
|
if (config.sslnegotiation === "direct" && config.ssl === void 0) {
|
|
10621
10629
|
config.ssl = true;
|
|
10622
10630
|
}
|
|
10623
|
-
const
|
|
10631
|
+
const fs74 = config.sslcert || config.sslkey || config.sslrootcert ? require("fs") : null;
|
|
10624
10632
|
if (config.sslcert) {
|
|
10625
|
-
config.ssl.cert =
|
|
10633
|
+
config.ssl.cert = fs74.readFileSync(config.sslcert).toString();
|
|
10626
10634
|
}
|
|
10627
10635
|
if (config.sslkey) {
|
|
10628
|
-
config.ssl.key =
|
|
10636
|
+
config.ssl.key = fs74.readFileSync(config.sslkey).toString();
|
|
10629
10637
|
}
|
|
10630
10638
|
if (config.sslrootcert) {
|
|
10631
|
-
config.ssl.ca =
|
|
10639
|
+
config.ssl.ca = fs74.readFileSync(config.sslrootcert).toString();
|
|
10632
10640
|
}
|
|
10633
10641
|
if (options.useLibpqCompat && config.uselibpqcompat) {
|
|
10634
10642
|
throw new Error("Both useLibpqCompat and uselibpqcompat are set. Please use only one of them.");
|
|
@@ -10726,7 +10734,7 @@ var require_pg_connection_string = __commonJS({
|
|
|
10726
10734
|
return poolConfig;
|
|
10727
10735
|
}
|
|
10728
10736
|
function parseIntoClientConfig(str) {
|
|
10729
|
-
return toClientConfig(
|
|
10737
|
+
return toClientConfig(parse8(str));
|
|
10730
10738
|
}
|
|
10731
10739
|
function deprecatedSslModeWarning(sslmode) {
|
|
10732
10740
|
if (!deprecatedSslModeWarning.warned && typeof process !== "undefined" && process.emitWarning) {
|
|
@@ -10741,10 +10749,10 @@ To prepare for this change:
|
|
|
10741
10749
|
See https://www.postgresql.org/docs/current/libpq-ssl.html for libpq SSL mode definitions.`);
|
|
10742
10750
|
}
|
|
10743
10751
|
}
|
|
10744
|
-
module2.exports =
|
|
10745
|
-
|
|
10746
|
-
|
|
10747
|
-
|
|
10752
|
+
module2.exports = parse8;
|
|
10753
|
+
parse8.parse = parse8;
|
|
10754
|
+
parse8.toClientConfig = toClientConfig;
|
|
10755
|
+
parse8.parseIntoClientConfig = parseIntoClientConfig;
|
|
10748
10756
|
}
|
|
10749
10757
|
});
|
|
10750
10758
|
|
|
@@ -10754,7 +10762,7 @@ var require_connection_parameters = __commonJS({
|
|
|
10754
10762
|
"use strict";
|
|
10755
10763
|
var dns = require("dns");
|
|
10756
10764
|
var defaults2 = require_defaults();
|
|
10757
|
-
var
|
|
10765
|
+
var parse8 = require_pg_connection_string().parse;
|
|
10758
10766
|
var val = function(key, config, envVar) {
|
|
10759
10767
|
if (config[key]) {
|
|
10760
10768
|
return config[key];
|
|
@@ -10792,9 +10800,9 @@ var require_connection_parameters = __commonJS({
|
|
|
10792
10800
|
};
|
|
10793
10801
|
var ConnectionParameters = class {
|
|
10794
10802
|
constructor(config) {
|
|
10795
|
-
config = typeof config === "string" ?
|
|
10803
|
+
config = typeof config === "string" ? parse8(config) : config || {};
|
|
10796
10804
|
if (config.connectionString) {
|
|
10797
|
-
config = Object.assign({}, config,
|
|
10805
|
+
config = Object.assign({}, config, parse8(config.connectionString));
|
|
10798
10806
|
}
|
|
10799
10807
|
this.user = val("user", config);
|
|
10800
10808
|
this.database = val("database", config);
|
|
@@ -11508,7 +11516,7 @@ var require_serializer = __commonJS({
|
|
|
11508
11516
|
);
|
|
11509
11517
|
};
|
|
11510
11518
|
var emptyArray = [];
|
|
11511
|
-
var
|
|
11519
|
+
var parse8 = (query2) => {
|
|
11512
11520
|
const name = query2.name || "";
|
|
11513
11521
|
if (name.length > 63) {
|
|
11514
11522
|
console.error("Warning! Postgres only supports 63 characters for query names.");
|
|
@@ -11663,7 +11671,7 @@ var require_serializer = __commonJS({
|
|
|
11663
11671
|
sendSASLInitialResponseMessage,
|
|
11664
11672
|
sendSCRAMClientFinalMessage,
|
|
11665
11673
|
query,
|
|
11666
|
-
parse:
|
|
11674
|
+
parse: parse8,
|
|
11667
11675
|
bind,
|
|
11668
11676
|
execute,
|
|
11669
11677
|
describe,
|
|
@@ -12052,7 +12060,7 @@ var require_dist = __commonJS({
|
|
|
12052
12060
|
"use strict";
|
|
12053
12061
|
Object.defineProperty(exports2, "__esModule", { value: true });
|
|
12054
12062
|
exports2.DatabaseError = exports2.serialize = void 0;
|
|
12055
|
-
exports2.parse =
|
|
12063
|
+
exports2.parse = parse8;
|
|
12056
12064
|
var messages_1 = require_messages();
|
|
12057
12065
|
Object.defineProperty(exports2, "DatabaseError", { enumerable: true, get: function() {
|
|
12058
12066
|
return messages_1.DatabaseError;
|
|
@@ -12062,10 +12070,10 @@ var require_dist = __commonJS({
|
|
|
12062
12070
|
return serializer_1.serialize;
|
|
12063
12071
|
} });
|
|
12064
12072
|
var parser_1 = require_parser();
|
|
12065
|
-
function
|
|
12073
|
+
function parse8(stream, callback) {
|
|
12066
12074
|
const parser2 = new parser_1.Parser();
|
|
12067
12075
|
stream.on("data", (buffer) => parser2.parse(buffer, callback));
|
|
12068
|
-
return new Promise((
|
|
12076
|
+
return new Promise((resolve29) => stream.on("end", () => resolve29()));
|
|
12069
12077
|
}
|
|
12070
12078
|
}
|
|
12071
12079
|
});
|
|
@@ -12151,7 +12159,7 @@ var require_connection = __commonJS({
|
|
|
12151
12159
|
"node_modules/pg/lib/connection.js"(exports2, module2) {
|
|
12152
12160
|
"use strict";
|
|
12153
12161
|
var EventEmitter = require("events").EventEmitter;
|
|
12154
|
-
var { parse:
|
|
12162
|
+
var { parse: parse8, serialize } = require_dist();
|
|
12155
12163
|
var stream = require_stream();
|
|
12156
12164
|
var { getStream } = stream;
|
|
12157
12165
|
var flushBuffer = serialize.flush();
|
|
@@ -12251,7 +12259,7 @@ var require_connection = __commonJS({
|
|
|
12251
12259
|
self.emit("sslconnect");
|
|
12252
12260
|
}
|
|
12253
12261
|
attachListeners(stream2) {
|
|
12254
|
-
|
|
12262
|
+
parse8(stream2, (msg) => {
|
|
12255
12263
|
const eventName = msg.name === "error" ? "errorMessage" : msg.name;
|
|
12256
12264
|
if (this._emitMessage) {
|
|
12257
12265
|
this.emit("message", msg);
|
|
@@ -12448,7 +12456,7 @@ var require_split2 = __commonJS({
|
|
|
12448
12456
|
var require_helper = __commonJS({
|
|
12449
12457
|
"node_modules/pgpass/lib/helper.js"(exports2, module2) {
|
|
12450
12458
|
"use strict";
|
|
12451
|
-
var
|
|
12459
|
+
var path82 = require("path");
|
|
12452
12460
|
var Stream = require("stream").Stream;
|
|
12453
12461
|
var split = require_split2();
|
|
12454
12462
|
var util = require("util");
|
|
@@ -12487,7 +12495,7 @@ var require_helper = __commonJS({
|
|
|
12487
12495
|
};
|
|
12488
12496
|
module2.exports.getFileName = function(rawEnv) {
|
|
12489
12497
|
var env = rawEnv || process.env;
|
|
12490
|
-
var file = env.PGPASSFILE || (isWin ?
|
|
12498
|
+
var file = env.PGPASSFILE || (isWin ? path82.join(env.APPDATA || "./", "postgresql", "pgpass.conf") : path82.join(env.HOME || "./", ".pgpass"));
|
|
12491
12499
|
return file;
|
|
12492
12500
|
};
|
|
12493
12501
|
module2.exports.usePgPass = function(stats, fname) {
|
|
@@ -12619,16 +12627,16 @@ var require_helper = __commonJS({
|
|
|
12619
12627
|
var require_lib = __commonJS({
|
|
12620
12628
|
"node_modules/pgpass/lib/index.js"(exports2, module2) {
|
|
12621
12629
|
"use strict";
|
|
12622
|
-
var
|
|
12623
|
-
var
|
|
12630
|
+
var path82 = require("path");
|
|
12631
|
+
var fs74 = require("fs");
|
|
12624
12632
|
var helper = require_helper();
|
|
12625
12633
|
module2.exports = function(connInfo, cb) {
|
|
12626
12634
|
var file = helper.getFileName();
|
|
12627
|
-
|
|
12635
|
+
fs74.stat(file, function(err, stat12) {
|
|
12628
12636
|
if (err || !helper.usePgPass(stat12, file)) {
|
|
12629
12637
|
return cb(void 0);
|
|
12630
12638
|
}
|
|
12631
|
-
var st =
|
|
12639
|
+
var st = fs74.createReadStream(file);
|
|
12632
12640
|
helper.getPassword(connInfo, st, cb);
|
|
12633
12641
|
});
|
|
12634
12642
|
};
|
|
@@ -12827,12 +12835,12 @@ var require_client = __commonJS({
|
|
|
12827
12835
|
this._connect(callback);
|
|
12828
12836
|
return;
|
|
12829
12837
|
}
|
|
12830
|
-
return new this._Promise((
|
|
12838
|
+
return new this._Promise((resolve29, reject) => {
|
|
12831
12839
|
this._connect((error) => {
|
|
12832
12840
|
if (error) {
|
|
12833
12841
|
reject(error);
|
|
12834
12842
|
} else {
|
|
12835
|
-
|
|
12843
|
+
resolve29(this);
|
|
12836
12844
|
}
|
|
12837
12845
|
});
|
|
12838
12846
|
});
|
|
@@ -13179,8 +13187,8 @@ var require_client = __commonJS({
|
|
|
13179
13187
|
} else {
|
|
13180
13188
|
query = new Query2(config, values, callback);
|
|
13181
13189
|
if (!query.callback) {
|
|
13182
|
-
result = new this._Promise((
|
|
13183
|
-
query.callback = (err, res) => err ? reject(err) :
|
|
13190
|
+
result = new this._Promise((resolve29, reject) => {
|
|
13191
|
+
query.callback = (err, res) => err ? reject(err) : resolve29(res);
|
|
13184
13192
|
}).catch((err) => {
|
|
13185
13193
|
Error.captureStackTrace(err);
|
|
13186
13194
|
throw err;
|
|
@@ -13264,8 +13272,8 @@ var require_client = __commonJS({
|
|
|
13264
13272
|
if (cb) {
|
|
13265
13273
|
this.connection.once("end", cb);
|
|
13266
13274
|
} else {
|
|
13267
|
-
return new this._Promise((
|
|
13268
|
-
this.connection.once("end",
|
|
13275
|
+
return new this._Promise((resolve29) => {
|
|
13276
|
+
this.connection.once("end", resolve29);
|
|
13269
13277
|
});
|
|
13270
13278
|
}
|
|
13271
13279
|
}
|
|
@@ -13314,8 +13322,8 @@ var require_pg_pool = __commonJS({
|
|
|
13314
13322
|
const cb = function(err, client) {
|
|
13315
13323
|
err ? rej(err) : res(client);
|
|
13316
13324
|
};
|
|
13317
|
-
const result = new Promise2(function(
|
|
13318
|
-
res =
|
|
13325
|
+
const result = new Promise2(function(resolve29, reject) {
|
|
13326
|
+
res = resolve29;
|
|
13319
13327
|
rej = reject;
|
|
13320
13328
|
}).catch((err) => {
|
|
13321
13329
|
Error.captureStackTrace(err);
|
|
@@ -13376,7 +13384,7 @@ var require_pg_pool = __commonJS({
|
|
|
13376
13384
|
if (typeof Promise2.try === "function") {
|
|
13377
13385
|
return Promise2.try(f);
|
|
13378
13386
|
}
|
|
13379
|
-
return new Promise2((
|
|
13387
|
+
return new Promise2((resolve29) => resolve29(f()));
|
|
13380
13388
|
}
|
|
13381
13389
|
_isFull() {
|
|
13382
13390
|
return this._clients.length >= this.options.max;
|
|
@@ -13769,8 +13777,8 @@ var require_query2 = __commonJS({
|
|
|
13769
13777
|
NativeQuery.prototype._getPromise = function() {
|
|
13770
13778
|
if (this._promise) return this._promise;
|
|
13771
13779
|
this._promise = new Promise(
|
|
13772
|
-
function(
|
|
13773
|
-
this._once("end",
|
|
13780
|
+
function(resolve29, reject) {
|
|
13781
|
+
this._once("end", resolve29);
|
|
13774
13782
|
this._once("error", reject);
|
|
13775
13783
|
}.bind(this)
|
|
13776
13784
|
);
|
|
@@ -13948,12 +13956,12 @@ var require_client2 = __commonJS({
|
|
|
13948
13956
|
this._connect(callback);
|
|
13949
13957
|
return;
|
|
13950
13958
|
}
|
|
13951
|
-
return new this._Promise((
|
|
13959
|
+
return new this._Promise((resolve29, reject) => {
|
|
13952
13960
|
this._connect((error) => {
|
|
13953
13961
|
if (error) {
|
|
13954
13962
|
reject(error);
|
|
13955
13963
|
} else {
|
|
13956
|
-
|
|
13964
|
+
resolve29(this);
|
|
13957
13965
|
}
|
|
13958
13966
|
});
|
|
13959
13967
|
});
|
|
@@ -13977,8 +13985,8 @@ var require_client2 = __commonJS({
|
|
|
13977
13985
|
query = new NativeQuery(config, values, callback);
|
|
13978
13986
|
if (!query.callback) {
|
|
13979
13987
|
let resolveOut, rejectOut;
|
|
13980
|
-
result = new this._Promise((
|
|
13981
|
-
resolveOut =
|
|
13988
|
+
result = new this._Promise((resolve29, reject) => {
|
|
13989
|
+
resolveOut = resolve29;
|
|
13982
13990
|
rejectOut = reject;
|
|
13983
13991
|
}).catch((err) => {
|
|
13984
13992
|
Error.captureStackTrace(err);
|
|
@@ -14041,8 +14049,8 @@ var require_client2 = __commonJS({
|
|
|
14041
14049
|
}
|
|
14042
14050
|
let result;
|
|
14043
14051
|
if (!cb) {
|
|
14044
|
-
result = new this._Promise(function(
|
|
14045
|
-
cb = (err) => err ? reject(err) :
|
|
14052
|
+
result = new this._Promise(function(resolve29, reject) {
|
|
14053
|
+
cb = (err) => err ? reject(err) : resolve29();
|
|
14046
14054
|
});
|
|
14047
14055
|
}
|
|
14048
14056
|
this.native.end(function() {
|
|
@@ -14522,7 +14530,7 @@ function loadPolicySnapshot(policyContent, policyPath) {
|
|
|
14522
14530
|
}
|
|
14523
14531
|
return policy;
|
|
14524
14532
|
}
|
|
14525
|
-
function resolvePolicyPath(
|
|
14533
|
+
function resolvePolicyPath(path82, options = {}) {
|
|
14526
14534
|
const envPath = options.includeEnvironmentOverride === false ? void 0 : process.env[POLICY_PATH_ENV];
|
|
14527
14535
|
if (envPath) {
|
|
14528
14536
|
return {
|
|
@@ -14532,11 +14540,11 @@ function resolvePolicyPath(path81, options = {}) {
|
|
|
14532
14540
|
workspaceRoot: null
|
|
14533
14541
|
};
|
|
14534
14542
|
}
|
|
14535
|
-
if (
|
|
14543
|
+
if (path82) {
|
|
14536
14544
|
return {
|
|
14537
|
-
path: (0, import_path4.resolve)(
|
|
14545
|
+
path: (0, import_path4.resolve)(path82),
|
|
14538
14546
|
source: "argument",
|
|
14539
|
-
searchedPaths: [(0, import_path4.resolve)(
|
|
14547
|
+
searchedPaths: [(0, import_path4.resolve)(path82)],
|
|
14540
14548
|
workspaceRoot: null
|
|
14541
14549
|
};
|
|
14542
14550
|
}
|
|
@@ -14579,11 +14587,11 @@ function resolvePolicyPath(path81, options = {}) {
|
|
|
14579
14587
|
workspaceRoot
|
|
14580
14588
|
};
|
|
14581
14589
|
}
|
|
14582
|
-
function loadPolicy(
|
|
14583
|
-
if (cachedPolicy && !
|
|
14590
|
+
function loadPolicy(path82, options = {}) {
|
|
14591
|
+
if (cachedPolicy && !path82 && options.includeEnvironmentOverride !== false) {
|
|
14584
14592
|
return cachedPolicy;
|
|
14585
14593
|
}
|
|
14586
|
-
const resolution = resolvePolicyPath(
|
|
14594
|
+
const resolution = resolvePolicyPath(path82, options);
|
|
14587
14595
|
try {
|
|
14588
14596
|
if (!resolution.path) {
|
|
14589
14597
|
throw new AXErrorException(POLICY_ERROR_CODES.POLICY_NOT_FOUND, `Policy file not found`, [
|
|
@@ -14623,7 +14631,7 @@ function loadPolicy(path81, options = {}) {
|
|
|
14623
14631
|
throw error;
|
|
14624
14632
|
}
|
|
14625
14633
|
const err = error;
|
|
14626
|
-
const policyPath = resolution.path ||
|
|
14634
|
+
const policyPath = resolution.path || path82 || DEFAULT_POLICY_PATH;
|
|
14627
14635
|
if (err.code === "ENOENT") {
|
|
14628
14636
|
logger6.error("Policy file not found", {
|
|
14629
14637
|
operation: "loadPolicy",
|
|
@@ -14819,7 +14827,7 @@ async function resolveModulePath(input, options = {}) {
|
|
|
14819
14827
|
}
|
|
14820
14828
|
}
|
|
14821
14829
|
async function resolveModulePaths(paths, options = {}) {
|
|
14822
|
-
const resolutions = await Promise.all(paths.map((
|
|
14830
|
+
const resolutions = await Promise.all(paths.map((path82) => resolveModulePath(path82, options)));
|
|
14823
14831
|
return resolutions;
|
|
14824
14832
|
}
|
|
14825
14833
|
function extractCanonicalIds(resolutions) {
|
|
@@ -15767,10 +15775,10 @@ function prompt(question) {
|
|
|
15767
15775
|
input: process.stdin,
|
|
15768
15776
|
output: process.stdout
|
|
15769
15777
|
});
|
|
15770
|
-
return new Promise((
|
|
15778
|
+
return new Promise((resolve29) => {
|
|
15771
15779
|
rl.question(question, (answer) => {
|
|
15772
15780
|
rl.close();
|
|
15773
|
-
|
|
15781
|
+
resolve29(answer.trim());
|
|
15774
15782
|
});
|
|
15775
15783
|
});
|
|
15776
15784
|
}
|
|
@@ -15984,7 +15992,7 @@ async function terminateProcessTree(child, options = {}) {
|
|
|
15984
15992
|
return { method: "taskkill", forceKilled: true, descendantsReaped: reaped };
|
|
15985
15993
|
}
|
|
15986
15994
|
const killGroup = options.killGroup ?? process.kill.bind(process);
|
|
15987
|
-
const wait = options.wait ?? ((durationMs) => new Promise((
|
|
15995
|
+
const wait = options.wait ?? ((durationMs) => new Promise((resolve29) => setTimeout(resolve29, durationMs)));
|
|
15988
15996
|
const graceMs = options.graceMs ?? 500;
|
|
15989
15997
|
let method = "process-group";
|
|
15990
15998
|
try {
|
|
@@ -16017,13 +16025,13 @@ function groupExists(pid, killGroup) {
|
|
|
16017
16025
|
}
|
|
16018
16026
|
}
|
|
16019
16027
|
function runTaskkill(pid) {
|
|
16020
|
-
return new Promise((
|
|
16028
|
+
return new Promise((resolve29) => {
|
|
16021
16029
|
const killer = (0, import_node_child_process3.spawn)("taskkill", ["/PID", String(pid), "/T", "/F"], {
|
|
16022
16030
|
stdio: "ignore",
|
|
16023
16031
|
windowsHide: true
|
|
16024
16032
|
});
|
|
16025
|
-
killer.once("error", () =>
|
|
16026
|
-
killer.once("close", (code) =>
|
|
16033
|
+
killer.once("error", () => resolve29(false));
|
|
16034
|
+
killer.once("close", (code) => resolve29(code === 0 || code === 128));
|
|
16027
16035
|
});
|
|
16028
16036
|
}
|
|
16029
16037
|
var import_node_child_process3;
|
|
@@ -16724,7 +16732,7 @@ async function executeGate(gate, policy, artifactDir, timeoutMs = 3e4, itemName,
|
|
|
16724
16732
|
`\u23F3 Retrying gate '${gate.name}' (attempt ${attempt}/${retryConfig.maxAttempts}) after ${retryConfig.backoffSeconds}s delay...`
|
|
16725
16733
|
);
|
|
16726
16734
|
}
|
|
16727
|
-
await new Promise((
|
|
16735
|
+
await new Promise((resolve29) => setTimeout(resolve29, delayMs));
|
|
16728
16736
|
}
|
|
16729
16737
|
const result = await executeGateAttempt(
|
|
16730
16738
|
gate,
|
|
@@ -16968,7 +16976,7 @@ async function executeLocalGate(gate, artifactDir, attempt, startedAt, startTime
|
|
|
16968
16976
|
candidateDigest
|
|
16969
16977
|
});
|
|
16970
16978
|
}
|
|
16971
|
-
return new Promise((
|
|
16979
|
+
return new Promise((resolve29) => {
|
|
16972
16980
|
let timedOut = false;
|
|
16973
16981
|
let settled = false;
|
|
16974
16982
|
const childProcess = (0, import_child_process.spawn)(shellExecutable, shell.arguments, {
|
|
@@ -17002,7 +17010,7 @@ async function executeLocalGate(gate, artifactDir, attempt, startedAt, startTime
|
|
|
17002
17010
|
const stdoutText = stdout.toString("utf8");
|
|
17003
17011
|
const stderrText = stderr.toString("utf8");
|
|
17004
17012
|
const projectedStderr = timedOut ? `GATE_TIMEOUT: exceeded ${timeoutMs}ms; descendantsReaped=${cleanup?.descendantsReaped ?? false}` : stderrText.trim();
|
|
17005
|
-
|
|
17013
|
+
resolve29(
|
|
17006
17014
|
finalizeLocalGateAttempt({
|
|
17007
17015
|
gate,
|
|
17008
17016
|
artifactBaselines,
|
|
@@ -17045,7 +17053,7 @@ async function executeLocalGate(gate, artifactDir, attempt, startedAt, startTime
|
|
|
17045
17053
|
const classified = classifyError(error, `Gate '${gate.name}' process error`);
|
|
17046
17054
|
console.error(formatErrorForUser(classified));
|
|
17047
17055
|
const projectedStderr = `${classified.context}: ${error.message}`;
|
|
17048
|
-
|
|
17056
|
+
resolve29(
|
|
17049
17057
|
finalizeLocalGateAttempt({
|
|
17050
17058
|
gate,
|
|
17051
17059
|
artifactBaselines,
|
|
@@ -17502,13 +17510,13 @@ async function executeGatesWithPolicy(plan, executionState, artifactDir, timeout
|
|
|
17502
17510
|
if (promises.length > 0) {
|
|
17503
17511
|
await Promise.race(promises);
|
|
17504
17512
|
} else if (executing.size > 0) {
|
|
17505
|
-
await new Promise((
|
|
17513
|
+
await new Promise((resolve29) => setTimeout(resolve29, 50));
|
|
17506
17514
|
} else {
|
|
17507
17515
|
break;
|
|
17508
17516
|
}
|
|
17509
17517
|
}
|
|
17510
17518
|
while (executing.size > 0) {
|
|
17511
|
-
await new Promise((
|
|
17519
|
+
await new Promise((resolve29) => setTimeout(resolve29, 50));
|
|
17512
17520
|
}
|
|
17513
17521
|
}
|
|
17514
17522
|
function buildExecutionOrder(plan) {
|
|
@@ -17610,24 +17618,24 @@ var init_gates = __esm({
|
|
|
17610
17618
|
// src/schema/gateReport.ts
|
|
17611
17619
|
function formatValidationErrors(error) {
|
|
17612
17620
|
return error.issues.map((issue) => {
|
|
17613
|
-
const
|
|
17621
|
+
const path82 = issue.path.join(".");
|
|
17614
17622
|
let suggestion;
|
|
17615
17623
|
if (issue.code === "invalid_type") {
|
|
17616
|
-
if (
|
|
17624
|
+
if (path82 === "started_at") {
|
|
17617
17625
|
suggestion = 'Use ISO 8601 format: "2024-01-15T10:30:00Z"';
|
|
17618
|
-
} else if (
|
|
17626
|
+
} else if (path82 === "status") {
|
|
17619
17627
|
suggestion = 'Valid values: "pass" or "fail"';
|
|
17620
|
-
} else if (
|
|
17628
|
+
} else if (path82 === "duration_ms") {
|
|
17621
17629
|
suggestion = "Must be a non-negative number (milliseconds)";
|
|
17622
|
-
} else if (
|
|
17630
|
+
} else if (path82 === "item" || path82 === "gate") {
|
|
17623
17631
|
suggestion = "Must be a non-empty string identifier";
|
|
17624
17632
|
}
|
|
17625
17633
|
} else if (issue.code === "invalid_value") {
|
|
17626
|
-
if (
|
|
17634
|
+
if (path82 === "status") {
|
|
17627
17635
|
suggestion = 'Valid values: "pass" or "fail"';
|
|
17628
17636
|
}
|
|
17629
17637
|
} else if (issue.code === "too_small") {
|
|
17630
|
-
if (
|
|
17638
|
+
if (path82 === "duration_ms") {
|
|
17631
17639
|
suggestion = "Duration must be >= 0 milliseconds";
|
|
17632
17640
|
}
|
|
17633
17641
|
} else if (issue.code === "unrecognized_keys") {
|
|
@@ -17635,7 +17643,7 @@ function formatValidationErrors(error) {
|
|
|
17635
17643
|
suggestion = `Remove unexpected fields: ${keys}`;
|
|
17636
17644
|
}
|
|
17637
17645
|
return {
|
|
17638
|
-
path:
|
|
17646
|
+
path: path82 || "root",
|
|
17639
17647
|
message: issue.message,
|
|
17640
17648
|
code: issue.code,
|
|
17641
17649
|
suggestion
|
|
@@ -24986,10 +24994,10 @@ var init_emitter2 = __esm({
|
|
|
24986
24994
|
await this.ingestSidecar();
|
|
24987
24995
|
if (this.ndjsonStream) {
|
|
24988
24996
|
const stream = this.ndjsonStream;
|
|
24989
|
-
await new Promise((
|
|
24997
|
+
await new Promise((resolve29, reject) => {
|
|
24990
24998
|
stream.end((err) => {
|
|
24991
24999
|
if (err) reject(err);
|
|
24992
|
-
else
|
|
25000
|
+
else resolve29();
|
|
24993
25001
|
});
|
|
24994
25002
|
});
|
|
24995
25003
|
this.ndjsonStream = null;
|
|
@@ -25770,10 +25778,10 @@ function prompt2(question) {
|
|
|
25770
25778
|
input: process.stdin,
|
|
25771
25779
|
output: process.stdout
|
|
25772
25780
|
});
|
|
25773
|
-
return new Promise((
|
|
25781
|
+
return new Promise((resolve29) => {
|
|
25774
25782
|
rl.question(question, (answer) => {
|
|
25775
25783
|
rl.close();
|
|
25776
|
-
|
|
25784
|
+
resolve29(answer.trim());
|
|
25777
25785
|
});
|
|
25778
25786
|
});
|
|
25779
25787
|
}
|
|
@@ -26481,10 +26489,10 @@ var init_planViewer = __esm({
|
|
|
26481
26489
|
console.log(import_chalk13.default.gray("Navigation: \u2191/\u2193 | Filter: /search | Toggle: d(eps) g(ates) | Quit: q"));
|
|
26482
26490
|
}
|
|
26483
26491
|
async start() {
|
|
26484
|
-
return new Promise((
|
|
26492
|
+
return new Promise((resolve29) => {
|
|
26485
26493
|
if (this.filteredItems.length === 0) {
|
|
26486
26494
|
console.log(import_chalk13.default.yellow("No items to display"));
|
|
26487
|
-
|
|
26495
|
+
resolve29();
|
|
26488
26496
|
return;
|
|
26489
26497
|
}
|
|
26490
26498
|
this.render();
|
|
@@ -26495,7 +26503,7 @@ var init_planViewer = __esm({
|
|
|
26495
26503
|
const onKeyPress = (str, key) => {
|
|
26496
26504
|
if (key.name === "q" || key.ctrl && key.name === "c") {
|
|
26497
26505
|
cleanup();
|
|
26498
|
-
|
|
26506
|
+
resolve29();
|
|
26499
26507
|
return;
|
|
26500
26508
|
}
|
|
26501
26509
|
if (key.name === "up") {
|
|
@@ -26534,11 +26542,11 @@ var init_planViewer = __esm({
|
|
|
26534
26542
|
input: process.stdin,
|
|
26535
26543
|
output: process.stdout
|
|
26536
26544
|
});
|
|
26537
|
-
return new Promise((
|
|
26545
|
+
return new Promise((resolve29) => {
|
|
26538
26546
|
rl.question(import_chalk13.default.yellow("Filter text (Enter to clear): "), (answer) => {
|
|
26539
26547
|
this.filterText = answer.trim();
|
|
26540
26548
|
rl.close();
|
|
26541
|
-
|
|
26549
|
+
resolve29();
|
|
26542
26550
|
});
|
|
26543
26551
|
});
|
|
26544
26552
|
}
|
|
@@ -26602,11 +26610,17 @@ __export(cli_exports, {
|
|
|
26602
26610
|
ConfigurationQueryService: () => ConfigurationQueryService,
|
|
26603
26611
|
ControllerLease_v1: () => ControllerLease_v1,
|
|
26604
26612
|
DiscoveryQueryService: () => DiscoveryQueryService,
|
|
26613
|
+
EXECUTION_PLAN_ARTIFACT_CONTRACT: () => EXECUTION_PLAN_ARTIFACT_CONTRACT,
|
|
26614
|
+
EXECUTION_PLAN_CANONICALIZATION_PROFILE: () => EXECUTION_PLAN_CANONICALIZATION_PROFILE,
|
|
26615
|
+
EXECUTION_PLAN_HASH_DOMAIN: () => EXECUTION_PLAN_HASH_DOMAIN,
|
|
26616
|
+
EXECUTION_PLAN_HASH_PROFILE: () => EXECUTION_PLAN_HASH_PROFILE,
|
|
26605
26617
|
EngineVerificationCheckSource_v2: () => EngineVerificationCheckSource_v2,
|
|
26606
26618
|
EngineVerificationDeterminism_v2: () => EngineVerificationDeterminism_v2,
|
|
26607
26619
|
EngineVerificationTrustGapReason_v2: () => EngineVerificationTrustGapReason_v2,
|
|
26608
26620
|
ExecutionEnvelope_v1: () => ExecutionEnvelope_v1,
|
|
26609
26621
|
ExecutionEnvironmentOS: () => ExecutionEnvironmentOS,
|
|
26622
|
+
ExecutionPlanArtifactIdentity_v1Schema: () => ExecutionPlanArtifactIdentity_v1Schema,
|
|
26623
|
+
ExecutionPlanArtifact_v1Schema: () => ExecutionPlanArtifact_v1Schema,
|
|
26610
26624
|
ExecutionState: () => ExecutionState,
|
|
26611
26625
|
ExternalAwaitOutcome_v1: () => ExternalAwaitOutcome_v1,
|
|
26612
26626
|
ExternalAwaitableDescriptor_v1: () => ExternalAwaitableDescriptor_v1,
|
|
@@ -26662,6 +26676,11 @@ __export(cli_exports, {
|
|
|
26662
26676
|
NativeWslProjectionSelection_v1: () => NativeWslProjectionSelection_v1,
|
|
26663
26677
|
NativeWslProjectionStatusRequestJsonSchema: () => NativeWslProjectionStatusRequestJsonSchema,
|
|
26664
26678
|
NativeWslSourceObservation_v1: () => NativeWslSourceObservation_v1,
|
|
26679
|
+
PLAN_ARTIFACT_REFERENCE_CONTRACT: () => PLAN_ARTIFACT_REFERENCE_CONTRACT,
|
|
26680
|
+
PlanArtifactReference_v1Schema: () => PlanArtifactReference_v1Schema,
|
|
26681
|
+
PlanArtifactRegistrationError: () => PlanArtifactRegistrationError,
|
|
26682
|
+
PlanArtifactRegistrationService: () => PlanArtifactRegistrationService,
|
|
26683
|
+
PlanArtifactScope_v1Schema: () => PlanArtifactScope_v1Schema,
|
|
26665
26684
|
PlanArtifactService: () => PlanArtifactService,
|
|
26666
26685
|
PlanArtifactServiceError: () => PlanArtifactServiceError,
|
|
26667
26686
|
PlanCreationService: () => PlanCreationService,
|
|
@@ -26691,6 +26710,7 @@ __export(cli_exports, {
|
|
|
26691
26710
|
completionForAttemptAwaitable: () => completionForAttemptAwaitable,
|
|
26692
26711
|
computeAgentEngineVerificationV2Hash: () => computeAgentEngineVerificationV2Hash,
|
|
26693
26712
|
computeAgentTaskPacketHash: () => computeAgentTaskPacketHash,
|
|
26713
|
+
computeExecutionPlanArtifactDigest: () => computeExecutionPlanArtifactDigest,
|
|
26694
26714
|
computeFanInEvidenceSetHash: () => computeFanInEvidenceSetHash,
|
|
26695
26715
|
computeMergeOrder: () => computeMergeOrder,
|
|
26696
26716
|
containsAttemptAwaitableCredentialValue: () => containsAttemptAwaitableCredentialValue,
|
|
@@ -26773,7 +26793,7 @@ var import_config3 = require("dotenv/config");
|
|
|
26773
26793
|
// package.json
|
|
26774
26794
|
var package_default = {
|
|
26775
26795
|
name: "@smartergpt/lexrunner",
|
|
26776
|
-
version: "2.0
|
|
26796
|
+
version: "2.1.0",
|
|
26777
26797
|
type: "module",
|
|
26778
26798
|
engines: {
|
|
26779
26799
|
node: ">=24"
|
|
@@ -26786,10 +26806,10 @@ var package_default = {
|
|
|
26786
26806
|
url: "git+https://github.com/Guffawaffle/lexrunner.git"
|
|
26787
26807
|
},
|
|
26788
26808
|
publishConfig: {
|
|
26789
|
-
access: "
|
|
26809
|
+
access: "public",
|
|
26790
26810
|
registry: "https://registry.npmjs.org/"
|
|
26791
26811
|
},
|
|
26792
|
-
license: "
|
|
26812
|
+
license: "Apache-2.0",
|
|
26793
26813
|
files: [
|
|
26794
26814
|
"dist/",
|
|
26795
26815
|
"schemas/",
|
|
@@ -26798,7 +26818,9 @@ var package_default = {
|
|
|
26798
26818
|
"README.mcp.md",
|
|
26799
26819
|
"CHANGELOG.md",
|
|
26800
26820
|
"NOTICE.md",
|
|
26801
|
-
"LICENSE.md"
|
|
26821
|
+
"LICENSE.md",
|
|
26822
|
+
"GOVERNANCE.md",
|
|
26823
|
+
"BRAND.md"
|
|
26802
26824
|
],
|
|
26803
26825
|
bin: {
|
|
26804
26826
|
lexrunner: "dist/cli.js",
|
|
@@ -27421,8 +27443,8 @@ function generateSnapshot(plan, inputs) {
|
|
|
27421
27443
|
}
|
|
27422
27444
|
function getPackageVersion() {
|
|
27423
27445
|
try {
|
|
27424
|
-
const
|
|
27425
|
-
const packageJson = JSON.parse(
|
|
27446
|
+
const fs74 = require("fs");
|
|
27447
|
+
const packageJson = JSON.parse(fs74.readFileSync("package.json", "utf8"));
|
|
27426
27448
|
return packageJson.version || "unknown";
|
|
27427
27449
|
} catch {
|
|
27428
27450
|
return "unknown";
|
|
@@ -28766,10 +28788,10 @@ async function promptGitHubToken() {
|
|
|
28766
28788
|
input: process.stdin,
|
|
28767
28789
|
output: process.stdout
|
|
28768
28790
|
});
|
|
28769
|
-
return new Promise((
|
|
28791
|
+
return new Promise((resolve29) => {
|
|
28770
28792
|
rl.question("GitHub token (optional, press Enter to skip): ", (answer) => {
|
|
28771
28793
|
rl.close();
|
|
28772
|
-
|
|
28794
|
+
resolve29(answer.trim());
|
|
28773
28795
|
});
|
|
28774
28796
|
});
|
|
28775
28797
|
}
|
|
@@ -28982,6 +29004,7 @@ init_canonicalJson();
|
|
|
28982
29004
|
// src/core/githubPlan.ts
|
|
28983
29005
|
init_canonicalJson();
|
|
28984
29006
|
init_planner();
|
|
29007
|
+
var STANDARD_TEST_GATE_TIMEOUT_MS = 5 * 60 * 1e3;
|
|
28985
29008
|
async function generatePlanFromGitHub(client, options = {}) {
|
|
28986
29009
|
const repoInfo = await client.validateRepository();
|
|
28987
29010
|
const target = options.target || repoInfo.defaultBranch;
|
|
@@ -29086,7 +29109,8 @@ function createStandardGate(gateName, pr) {
|
|
|
29086
29109
|
return {
|
|
29087
29110
|
...baseGate,
|
|
29088
29111
|
run: "npm test",
|
|
29089
|
-
artifacts: ["test-results.xml", "coverage/"]
|
|
29112
|
+
artifacts: ["test-results.xml", "coverage/"],
|
|
29113
|
+
timeoutMs: STANDARD_TEST_GATE_TIMEOUT_MS
|
|
29090
29114
|
};
|
|
29091
29115
|
case "typecheck":
|
|
29092
29116
|
return {
|
|
@@ -29137,6 +29161,7 @@ function validateGitHubDependencies(planItems, prDetails) {
|
|
|
29137
29161
|
// src/core/multiRepoPlan.ts
|
|
29138
29162
|
init_github();
|
|
29139
29163
|
init_canonicalJson();
|
|
29164
|
+
var STANDARD_TEST_GATE_TIMEOUT_MS2 = 5 * 60 * 1e3;
|
|
29140
29165
|
async function generateMultiRepoPlan(repos, options = {}) {
|
|
29141
29166
|
if (repos.length === 0) {
|
|
29142
29167
|
throw new Error("At least one repository is required");
|
|
@@ -29273,7 +29298,8 @@ function generateGatesForMultiRepoPR(pr, options) {
|
|
|
29273
29298
|
REPO_NAME: pr.repoName
|
|
29274
29299
|
},
|
|
29275
29300
|
runtime: "local",
|
|
29276
|
-
artifacts: getGateArtifacts(gateName)
|
|
29301
|
+
artifacts: getGateArtifacts(gateName),
|
|
29302
|
+
...isStandardTestGate(gateName) ? { timeoutMs: STANDARD_TEST_GATE_TIMEOUT_MS2 } : {}
|
|
29277
29303
|
});
|
|
29278
29304
|
}
|
|
29279
29305
|
gates.sort((a, b) => a.name.localeCompare(b.name));
|
|
@@ -29283,6 +29309,7 @@ function getGateCommand(gateName) {
|
|
|
29283
29309
|
const commands = {
|
|
29284
29310
|
lint: "npm run lint",
|
|
29285
29311
|
test: "npm test",
|
|
29312
|
+
unit: "npm test",
|
|
29286
29313
|
typecheck: "npm run typecheck",
|
|
29287
29314
|
build: "npm run build"
|
|
29288
29315
|
};
|
|
@@ -29292,11 +29319,15 @@ function getGateArtifacts(gateName) {
|
|
|
29292
29319
|
const artifacts = {
|
|
29293
29320
|
lint: ["lint-results.txt"],
|
|
29294
29321
|
test: ["test-results.xml", "coverage/"],
|
|
29322
|
+
unit: ["test-results.xml", "coverage/"],
|
|
29295
29323
|
typecheck: ["typecheck-results.txt"],
|
|
29296
29324
|
build: ["dist/"]
|
|
29297
29325
|
};
|
|
29298
29326
|
return artifacts[gateName] || [];
|
|
29299
29327
|
}
|
|
29328
|
+
function isStandardTestGate(gateName) {
|
|
29329
|
+
return gateName === "test" || gateName === "unit";
|
|
29330
|
+
}
|
|
29300
29331
|
function createEmptyPlan(target, options) {
|
|
29301
29332
|
const plan = {
|
|
29302
29333
|
schemaVersion: "1.0.0",
|
|
@@ -29755,8 +29786,8 @@ function containedRegularFile(root, candidate) {
|
|
|
29755
29786
|
}
|
|
29756
29787
|
}
|
|
29757
29788
|
function isContained(root, candidate) {
|
|
29758
|
-
const
|
|
29759
|
-
return
|
|
29789
|
+
const relative8 = path23.relative(path23.resolve(root), path23.resolve(candidate));
|
|
29790
|
+
return relative8 !== ".." && !relative8.startsWith(`..${path23.sep}`) && !path23.isAbsolute(relative8);
|
|
29760
29791
|
}
|
|
29761
29792
|
function evidenceError(code, message) {
|
|
29762
29793
|
return new GateEvidenceServiceError(code, message);
|
|
@@ -31212,11 +31243,11 @@ function isTestFile(file) {
|
|
|
31212
31243
|
}
|
|
31213
31244
|
function directOwnerCandidates(file) {
|
|
31214
31245
|
if (!file.startsWith("src/") || !/\.[cm]?tsx?$/.test(file)) return [];
|
|
31215
|
-
const
|
|
31216
|
-
const basename8 = path28.posix.basename(
|
|
31246
|
+
const relative8 = file.replace(/^src\//, "").replace(/\.[cm]?tsx?$/, "");
|
|
31247
|
+
const basename8 = path28.posix.basename(relative8);
|
|
31217
31248
|
return [
|
|
31218
|
-
`tests/${
|
|
31219
|
-
`tests/${
|
|
31249
|
+
`tests/${relative8}.spec.ts`,
|
|
31250
|
+
`tests/${relative8}.test.ts`,
|
|
31220
31251
|
`tests/${basename8}.spec.ts`,
|
|
31221
31252
|
`tests/${basename8}.test.ts`
|
|
31222
31253
|
];
|
|
@@ -32443,10 +32474,10 @@ async function readInput(inputPath) {
|
|
|
32443
32474
|
}
|
|
32444
32475
|
return fs34.readFileSync(inputPath, "utf-8");
|
|
32445
32476
|
} else {
|
|
32446
|
-
return new Promise((
|
|
32477
|
+
return new Promise((resolve29, reject) => {
|
|
32447
32478
|
const chunks = [];
|
|
32448
32479
|
process.stdin.on("data", (chunk) => chunks.push(chunk));
|
|
32449
|
-
process.stdin.on("end", () =>
|
|
32480
|
+
process.stdin.on("end", () => resolve29(Buffer.concat(chunks).toString("utf-8")));
|
|
32450
32481
|
process.stdin.on("error", reject);
|
|
32451
32482
|
});
|
|
32452
32483
|
}
|
|
@@ -34770,8 +34801,8 @@ Details:`);
|
|
|
34770
34801
|
if (opts.json || deps.jsonModeActive()) {
|
|
34771
34802
|
const output = JSON.stringify(plan, null, 2);
|
|
34772
34803
|
if (opts.output) {
|
|
34773
|
-
const
|
|
34774
|
-
await
|
|
34804
|
+
const fs74 = await import("fs/promises");
|
|
34805
|
+
await fs74.writeFile(opts.output, output, "utf-8");
|
|
34775
34806
|
console.log(`Plan written to: ${opts.output}`);
|
|
34776
34807
|
} else {
|
|
34777
34808
|
console.log(output);
|
|
@@ -34794,8 +34825,8 @@ Details:`);
|
|
|
34794
34825
|
console.log(` ${phase}: ${count}`);
|
|
34795
34826
|
}
|
|
34796
34827
|
if (opts.output) {
|
|
34797
|
-
const
|
|
34798
|
-
await
|
|
34828
|
+
const fs74 = await import("fs/promises");
|
|
34829
|
+
await fs74.writeFile(opts.output, JSON.stringify(plan, null, 2), "utf-8");
|
|
34799
34830
|
console.log(`
|
|
34800
34831
|
Plan written to: ${opts.output}`);
|
|
34801
34832
|
}
|
|
@@ -35048,8 +35079,8 @@ function registerHarvestCommand(fanoutCommand) {
|
|
|
35048
35079
|
});
|
|
35049
35080
|
const output = JSON.stringify(harvestBundle, null, 2);
|
|
35050
35081
|
if (opts.output) {
|
|
35051
|
-
const
|
|
35052
|
-
await
|
|
35082
|
+
const fs74 = await import("fs/promises");
|
|
35083
|
+
await fs74.writeFile(opts.output, output, "utf-8");
|
|
35053
35084
|
console.error(`\u2713 Harvest bundle written to ${opts.output}`);
|
|
35054
35085
|
console.error(` ${harvestBundle.bundle.pullRequests.length} PRs`);
|
|
35055
35086
|
console.error(` ${harvestBundle.bundle.issues.length} issues`);
|
|
@@ -35438,10 +35469,10 @@ function analyzeBundle(harvest) {
|
|
|
35438
35469
|
function registerAnalyzeCommand(fanoutCommand) {
|
|
35439
35470
|
fanoutCommand.command("analyze").description("D1: Analyze harvest bundle into facts pool (deterministic)").option("--input <file>", "Path to harvest bundle JSON file (default: stdin)").option("--json", "Output JSON format (default)").option("--output <file>", "Write output to file").action(async (opts) => {
|
|
35440
35471
|
try {
|
|
35441
|
-
const
|
|
35472
|
+
const fs74 = await import("fs/promises");
|
|
35442
35473
|
let content;
|
|
35443
35474
|
if (opts.input) {
|
|
35444
|
-
content = await
|
|
35475
|
+
content = await fs74.readFile(opts.input, "utf-8");
|
|
35445
35476
|
} else {
|
|
35446
35477
|
const chunks = [];
|
|
35447
35478
|
for await (const chunk of process.stdin) {
|
|
@@ -35483,7 +35514,7 @@ function registerAnalyzeCommand(fanoutCommand) {
|
|
|
35483
35514
|
const analysisPool = analyzeBundle(harvest);
|
|
35484
35515
|
const output = JSON.stringify(analysisPool, null, 2);
|
|
35485
35516
|
if (opts.output) {
|
|
35486
|
-
await
|
|
35517
|
+
await fs74.writeFile(opts.output, output, "utf-8");
|
|
35487
35518
|
console.error(`\u2713 Analysis pool written to ${opts.output}`);
|
|
35488
35519
|
console.error(` ${analysisPool.pool.entities.length} entities`);
|
|
35489
35520
|
console.error(` ${analysisPool.pool.relations.length} relations`);
|
|
@@ -35580,9 +35611,9 @@ var DEFAULT_FANOUT_TEMPLATES_PATHS = [
|
|
|
35580
35611
|
"fanout-templates.yml"
|
|
35581
35612
|
];
|
|
35582
35613
|
var FanoutTemplatesLoadError = class extends Error {
|
|
35583
|
-
constructor(message,
|
|
35614
|
+
constructor(message, path82, cause) {
|
|
35584
35615
|
super(message);
|
|
35585
|
-
this.path =
|
|
35616
|
+
this.path = path82;
|
|
35586
35617
|
this.cause = cause;
|
|
35587
35618
|
this.name = "FanoutTemplatesLoadError";
|
|
35588
35619
|
}
|
|
@@ -35913,7 +35944,7 @@ function registerFanoutCommands(weaveCommand) {
|
|
|
35913
35944
|
}
|
|
35914
35945
|
});
|
|
35915
35946
|
fanout.command("validate").description("Validate fanout templates file").option("-f, --file <path>", "Path to templates file").action(async (options) => {
|
|
35916
|
-
const
|
|
35947
|
+
const fs74 = await import("fs/promises");
|
|
35917
35948
|
try {
|
|
35918
35949
|
let filePath;
|
|
35919
35950
|
if (options.file) {
|
|
@@ -35926,7 +35957,7 @@ function registerFanoutCommands(weaveCommand) {
|
|
|
35926
35957
|
}
|
|
35927
35958
|
filePath = result2.path;
|
|
35928
35959
|
}
|
|
35929
|
-
const content = await
|
|
35960
|
+
const content = await fs74.readFile(filePath, "utf-8");
|
|
35930
35961
|
const result = validateFanoutTemplatesContent(content);
|
|
35931
35962
|
if (result.valid) {
|
|
35932
35963
|
console.log(`\u2713 Valid: ${filePath}`);
|
|
@@ -36926,8 +36957,8 @@ function lastCompletedMergeSha(operations) {
|
|
|
36926
36957
|
(operation) => operation.phase === "merge" && operation.status === "completed" && operation.result?.externalId
|
|
36927
36958
|
)?.result?.externalId;
|
|
36928
36959
|
}
|
|
36929
|
-
function isRunnerStatePath(
|
|
36930
|
-
return
|
|
36960
|
+
function isRunnerStatePath(path82) {
|
|
36961
|
+
return path82 === ".lexrunner" || path82.startsWith(".lexrunner/") || path82 === "weave-lock.json" || path82.endsWith("/weave-lock.json");
|
|
36931
36962
|
}
|
|
36932
36963
|
|
|
36933
36964
|
// src/commands/weave.ts
|
|
@@ -38047,12 +38078,12 @@ ${prefix} Plan validation failed: ${error.message}`);
|
|
|
38047
38078
|
}
|
|
38048
38079
|
fs43.mkdirSync(outDir, { recursive: true });
|
|
38049
38080
|
const planPath = path33.join(outDir, "plan.json");
|
|
38050
|
-
const
|
|
38081
|
+
const snapshotPath2 = path33.join(outDir, "snapshot.md");
|
|
38051
38082
|
fs43.writeFileSync(planPath, planJSON);
|
|
38052
|
-
fs43.writeFileSync(
|
|
38083
|
+
fs43.writeFileSync(snapshotPath2, snapshot);
|
|
38053
38084
|
console.log(`\u2713 Generated plan artifacts:`);
|
|
38054
38085
|
console.log(` \u{1F4C1} ${planPath}`);
|
|
38055
|
-
console.log(` \u{1F4C1} ${
|
|
38086
|
+
console.log(` \u{1F4C1} ${snapshotPath2}`);
|
|
38056
38087
|
console.log("");
|
|
38057
38088
|
console.log(generatePlanSummary(validatedPlan));
|
|
38058
38089
|
return;
|
|
@@ -40599,7 +40630,7 @@ function generateRecommendations(misBatches, mergeTreeSimulation) {
|
|
|
40599
40630
|
// src/orchestration/agentAssigner.ts
|
|
40600
40631
|
init_errorRecovery();
|
|
40601
40632
|
function sleep(ms) {
|
|
40602
|
-
return new Promise((
|
|
40633
|
+
return new Promise((resolve29) => setTimeout(resolve29, ms));
|
|
40603
40634
|
}
|
|
40604
40635
|
async function assignAgentWithRetry(issueNumber, repo, assignFn, maxRetries = 4) {
|
|
40605
40636
|
let retries = 0;
|
|
@@ -41220,8 +41251,8 @@ function registerGenerateDeliverablesCommand(program2) {
|
|
|
41220
41251
|
console.log(`\u2705 Created: ${path45.join(outputDir, "GATE5_cleanup.md")}`);
|
|
41221
41252
|
console.log(`\u2705 Created: ${path45.join(outputDir, "SUMMARY.md")}`);
|
|
41222
41253
|
console.log("");
|
|
41223
|
-
const
|
|
41224
|
-
const planHashContent =
|
|
41254
|
+
const fs74 = await import("fs");
|
|
41255
|
+
const planHashContent = fs74.readFileSync(path45.join(outputDir, "plan-hash.txt"), "utf-8");
|
|
41225
41256
|
const planHashMatch = planHashContent.match(/SHA256: ([a-f0-9]+)/);
|
|
41226
41257
|
if (planHashMatch) {
|
|
41227
41258
|
console.log(`Plan hash: ${planHashMatch[1]}`);
|
|
@@ -43243,9 +43274,9 @@ async function promptInteractive(defaults2) {
|
|
|
43243
43274
|
output: process.stdout
|
|
43244
43275
|
});
|
|
43245
43276
|
const question = (prompt3) => {
|
|
43246
|
-
return new Promise((
|
|
43277
|
+
return new Promise((resolve29) => {
|
|
43247
43278
|
rl.question(prompt3, (answer) => {
|
|
43248
|
-
|
|
43279
|
+
resolve29(answer.trim());
|
|
43249
43280
|
});
|
|
43250
43281
|
});
|
|
43251
43282
|
};
|
|
@@ -45107,8 +45138,8 @@ Total: ${entries.length} counter-examples (${entries.filter((e) => e.shouldLearn
|
|
|
45107
45138
|
counterExamples.command("export").description("Export counter-examples for analysis").option("--format <format>", "Export format (json|csv)", "json").option("--base-dir <dir>", "Base directory for lexrunner", process.cwd()).option("--output <file>", "Output file (prints to stdout if not specified)").action(async (options) => {
|
|
45108
45139
|
const output = exportCounterExamples(options.format, options.baseDir);
|
|
45109
45140
|
if (options.output) {
|
|
45110
|
-
const
|
|
45111
|
-
|
|
45141
|
+
const fs74 = await import("fs");
|
|
45142
|
+
fs74.writeFileSync(options.output, output, "utf-8");
|
|
45112
45143
|
console.log(import_chalk11.default.green(`\u2713 Exported counter-examples to ${options.output}`));
|
|
45113
45144
|
} else {
|
|
45114
45145
|
console.log(output);
|
|
@@ -45679,7 +45710,7 @@ function nativePathsOverlap(runtimePlatform, left, right, comparison) {
|
|
|
45679
45710
|
if (api.parse(normalizedLeft).root !== api.parse(normalizedRight).root) return false;
|
|
45680
45711
|
const relativeLeft = api.relative(normalizedLeft, normalizedRight);
|
|
45681
45712
|
const relativeRight = api.relative(normalizedRight, normalizedLeft);
|
|
45682
|
-
const isDescendant = (
|
|
45713
|
+
const isDescendant = (relative8) => relative8.length > 0 && relative8 !== ".." && !relative8.startsWith(`..${api.sep}`);
|
|
45683
45714
|
return isDescendant(relativeLeft) || isDescendant(relativeRight);
|
|
45684
45715
|
}
|
|
45685
45716
|
function digestBinding(runtime) {
|
|
@@ -47019,8 +47050,8 @@ function parseGitStatusPorcelainV1Z(input) {
|
|
|
47019
47050
|
}
|
|
47020
47051
|
const indexStatus = field[0];
|
|
47021
47052
|
const worktreeStatus = field[1];
|
|
47022
|
-
const
|
|
47023
|
-
if (
|
|
47053
|
+
const path82 = field.slice(3);
|
|
47054
|
+
if (path82.length === 0) {
|
|
47024
47055
|
throw new Error("Malformed git status porcelain: path is empty");
|
|
47025
47056
|
}
|
|
47026
47057
|
const renameOrCopy = [indexStatus, worktreeStatus].find(
|
|
@@ -47038,7 +47069,7 @@ function parseGitStatusPorcelainV1Z(input) {
|
|
|
47038
47069
|
records.push({
|
|
47039
47070
|
indexStatus,
|
|
47040
47071
|
worktreeStatus,
|
|
47041
|
-
path:
|
|
47072
|
+
path: path82,
|
|
47042
47073
|
...originalPath === void 0 ? {} : { originalPath },
|
|
47043
47074
|
kind
|
|
47044
47075
|
});
|
|
@@ -47491,8 +47522,8 @@ function copyIssues(result, context) {
|
|
|
47491
47522
|
context.addIssue({ code: "custom", path: issue.path, message: issue.message });
|
|
47492
47523
|
}
|
|
47493
47524
|
}
|
|
47494
|
-
function addIssue(context,
|
|
47495
|
-
context.addIssue({ code: "custom", path:
|
|
47525
|
+
function addIssue(context, path82, message) {
|
|
47526
|
+
context.addIssue({ code: "custom", path: path82, message });
|
|
47496
47527
|
}
|
|
47497
47528
|
|
|
47498
47529
|
// src/workspaces/linux-workspace-boundary.ts
|
|
@@ -48533,8 +48564,8 @@ var NodeGitWorktreeBroker = class {
|
|
|
48533
48564
|
"The worktree root was replaced after broker initialization"
|
|
48534
48565
|
);
|
|
48535
48566
|
}
|
|
48536
|
-
const
|
|
48537
|
-
const components =
|
|
48567
|
+
const relative8 = import_node_path19.default.relative(this.worktreeRoot, import_node_path19.default.resolve(target.worktreePath));
|
|
48568
|
+
const components = relative8.split(import_node_path19.default.sep);
|
|
48538
48569
|
const targetName = components.pop();
|
|
48539
48570
|
if (!targetName) {
|
|
48540
48571
|
throw new DirectoryBoundaryError("invalid_path", "The worktree target has no basename");
|
|
@@ -48738,8 +48769,8 @@ var NodeGitWorktreeBroker = class {
|
|
|
48738
48769
|
);
|
|
48739
48770
|
}
|
|
48740
48771
|
const normalized = import_node_path19.default.resolve(gitDirectoryPath);
|
|
48741
|
-
const
|
|
48742
|
-
if (!
|
|
48772
|
+
const relative8 = import_node_path19.default.relative(this.repositoryGitIdentity.path, normalized);
|
|
48773
|
+
if (!relative8 || relative8 === ".." || relative8.startsWith(`..${import_node_path19.default.sep}`)) {
|
|
48743
48774
|
return this.failure(
|
|
48744
48775
|
operation,
|
|
48745
48776
|
"containment_violation",
|
|
@@ -48748,7 +48779,7 @@ var NodeGitWorktreeBroker = class {
|
|
|
48748
48779
|
}
|
|
48749
48780
|
let current = null;
|
|
48750
48781
|
try {
|
|
48751
|
-
for (const component of
|
|
48782
|
+
for (const component of relative8.split(import_node_path19.default.sep)) {
|
|
48752
48783
|
const child = await boundary.lease.openChild(
|
|
48753
48784
|
current ?? boundary.repositoryGit,
|
|
48754
48785
|
component,
|
|
@@ -48802,8 +48833,8 @@ var NodeGitWorktreeBroker = class {
|
|
|
48802
48833
|
const normalizedRoot = import_node_path19.default.resolve(root);
|
|
48803
48834
|
const comparedCandidate = this.pathComparison === "case-insensitive" ? normalizedCandidate.toLocaleLowerCase("en-US") : normalizedCandidate;
|
|
48804
48835
|
const comparedRoot = this.pathComparison === "case-insensitive" ? normalizedRoot.toLocaleLowerCase("en-US") : normalizedRoot;
|
|
48805
|
-
const
|
|
48806
|
-
return
|
|
48836
|
+
const relative8 = import_node_path19.default.relative(comparedRoot, comparedCandidate);
|
|
48837
|
+
return relative8.length > 0 && relative8 !== ".." && !relative8.startsWith(`..${import_node_path19.default.sep}`);
|
|
48807
48838
|
}
|
|
48808
48839
|
async git(boundary, operation, args, cwd, options, allowedNonzeroExitCodes = [], evidence) {
|
|
48809
48840
|
const result = await boundary.lease.runProcess({
|
|
@@ -48908,7 +48939,7 @@ function nativePathsOverlap2(left, right, comparison) {
|
|
|
48908
48939
|
if (normalizedLeft === normalizedRight) return true;
|
|
48909
48940
|
const relativeLeft = import_node_path19.default.relative(normalizedLeft, normalizedRight);
|
|
48910
48941
|
const relativeRight = import_node_path19.default.relative(normalizedRight, normalizedLeft);
|
|
48911
|
-
const isDescendant = (
|
|
48942
|
+
const isDescendant = (relative8) => relative8.length > 0 && relative8 !== ".." && !relative8.startsWith(`..${import_node_path19.default.sep}`);
|
|
48912
48943
|
return isDescendant(relativeLeft) || isDescendant(relativeRight);
|
|
48913
48944
|
}
|
|
48914
48945
|
function branchName(ref) {
|
|
@@ -51449,24 +51480,24 @@ var AcceptanceCriterion = import_zod39.z.object({
|
|
|
51449
51480
|
function isMachineLocalAbsolutePath(value) {
|
|
51450
51481
|
return /(?:^|\s)\/(?!\/)[^\s]*/.test(value) || /(?:^|\s)~\/[^\s]*/.test(value) || /(?:^|\s)\\\\[^\s]*/.test(value) || /(?:^|\s)[a-z]:[\\/][^\s]*/i.test(value) || /(?:^|\s)file:/i.test(value);
|
|
51451
51482
|
}
|
|
51452
|
-
function rejectMachineLocalPaths(value, ctx,
|
|
51483
|
+
function rejectMachineLocalPaths(value, ctx, path82 = []) {
|
|
51453
51484
|
if (typeof value === "string") {
|
|
51454
51485
|
if (isMachineLocalAbsolutePath(value)) {
|
|
51455
51486
|
ctx.addIssue({
|
|
51456
51487
|
code: "custom",
|
|
51457
|
-
path:
|
|
51488
|
+
path: path82,
|
|
51458
51489
|
message: "AgentTaskPacket_v1 must not contain machine-local absolute paths"
|
|
51459
51490
|
});
|
|
51460
51491
|
}
|
|
51461
51492
|
return;
|
|
51462
51493
|
}
|
|
51463
51494
|
if (Array.isArray(value)) {
|
|
51464
|
-
value.forEach((item, index) => rejectMachineLocalPaths(item, ctx, [...
|
|
51495
|
+
value.forEach((item, index) => rejectMachineLocalPaths(item, ctx, [...path82, index]));
|
|
51465
51496
|
return;
|
|
51466
51497
|
}
|
|
51467
51498
|
if (value !== null && typeof value === "object") {
|
|
51468
51499
|
for (const [key, item] of Object.entries(value)) {
|
|
51469
|
-
rejectMachineLocalPaths(item, ctx, [...
|
|
51500
|
+
rejectMachineLocalPaths(item, ctx, [...path82, key]);
|
|
51470
51501
|
}
|
|
51471
51502
|
}
|
|
51472
51503
|
}
|
|
@@ -53646,10 +53677,10 @@ function captureBoundIdentities(input) {
|
|
|
53646
53677
|
worktree: captureDirectoryIdentity(input.worktreePath, "execution mapping worktree")
|
|
53647
53678
|
};
|
|
53648
53679
|
}
|
|
53649
|
-
function verifiedRoot(runtimeId,
|
|
53680
|
+
function verifiedRoot(runtimeId, path82, identity) {
|
|
53650
53681
|
return {
|
|
53651
53682
|
runtime_id: runtimeId,
|
|
53652
|
-
path:
|
|
53683
|
+
path: path82,
|
|
53653
53684
|
verification: "directory_identity",
|
|
53654
53685
|
directory_identity: identityClaim2(identity)
|
|
53655
53686
|
};
|
|
@@ -53768,8 +53799,8 @@ async function requireDirectoryWithin(directory, root, field) {
|
|
|
53768
53799
|
(0, import_promises8.realpath)(directory),
|
|
53769
53800
|
(0, import_promises8.realpath)(root)
|
|
53770
53801
|
]);
|
|
53771
|
-
const
|
|
53772
|
-
if (
|
|
53802
|
+
const relative8 = import_node_path21.default.relative(resolvedRoot, resolvedDirectory);
|
|
53803
|
+
if (relative8 === ".." || relative8.startsWith(`..${import_node_path21.default.sep}`) || import_node_path21.default.isAbsolute(relative8)) {
|
|
53773
53804
|
throw new Error(`${field} must resolve within its authorized root`);
|
|
53774
53805
|
}
|
|
53775
53806
|
}
|
|
@@ -58968,8 +58999,8 @@ async function requireDirectoryWithin2(directory, root, field) {
|
|
|
58968
58999
|
(0, import_promises9.realpath)(directory),
|
|
58969
59000
|
(0, import_promises9.realpath)(root)
|
|
58970
59001
|
]);
|
|
58971
|
-
const
|
|
58972
|
-
if (
|
|
59002
|
+
const relative8 = import_node_path22.default.relative(resolvedRoot, resolvedDirectory);
|
|
59003
|
+
if (relative8 === ".." || relative8.startsWith(`..${import_node_path22.default.sep}`) || import_node_path22.default.isAbsolute(relative8)) {
|
|
58973
59004
|
throw new Error(`${field} must resolve within the authorized worktree`);
|
|
58974
59005
|
}
|
|
58975
59006
|
}
|
|
@@ -61753,10 +61784,10 @@ var WorkerSessionDelegationBinding_v1 = import_zod49.z.object({
|
|
|
61753
61784
|
function decisionReceiptMatchesOffer(receipt, offer, offerHash) {
|
|
61754
61785
|
return receipt.delegation_id === offer.delegation_id && receipt.attempt_id === offer.attempt_id && receipt.offer_hash === offerHash && receipt.worker_thread_id === offer.worker.thread_id && receipt.transcript_start_hash === offer.transcript_start_hash && Date.parse(receipt.decided_at) >= Date.parse(offer.offered_at);
|
|
61755
61786
|
}
|
|
61756
|
-
function requireTimeOrder(earlier, later,
|
|
61787
|
+
function requireTimeOrder(earlier, later, path82, context, equalAllowed = true) {
|
|
61757
61788
|
const ordered = equalAllowed ? Date.parse(earlier) <= Date.parse(later) : Date.parse(earlier) < Date.parse(later);
|
|
61758
61789
|
if (!ordered) {
|
|
61759
|
-
context.addIssue({ code: "custom", path: [
|
|
61790
|
+
context.addIssue({ code: "custom", path: [path82], message: `${path82} is out of order` });
|
|
61760
61791
|
}
|
|
61761
61792
|
}
|
|
61762
61793
|
|
|
@@ -62873,12 +62904,12 @@ function grantWithinRequirements(grant, requirements) {
|
|
|
62873
62904
|
);
|
|
62874
62905
|
return grant.authorized_model_provider === requirements.authorized_model_provider && grant.source_disclosure_allowed === requirements.source_disclosure_allowed && grant.max_duration_ms <= requirements.max_duration_ms && grant.max_output_bytes <= requirements.max_output_bytes && grant.controls.every((control) => required2.get(control.control) === control.minimum_strength) && grant.tools.length <= 1;
|
|
62875
62906
|
}
|
|
62876
|
-
function requireExactControls(controls, context,
|
|
62907
|
+
function requireExactControls(controls, context, path82) {
|
|
62877
62908
|
const actual = new Set(controls.map((control) => control.control));
|
|
62878
62909
|
if (actual.size !== GovernedControlId.options.length || GovernedControlId.options.some((control) => !actual.has(control))) {
|
|
62879
62910
|
context.addIssue({
|
|
62880
62911
|
code: "custom",
|
|
62881
|
-
path:
|
|
62912
|
+
path: path82,
|
|
62882
62913
|
message: "every governed denial control must appear exactly once"
|
|
62883
62914
|
});
|
|
62884
62915
|
}
|
|
@@ -63837,10 +63868,10 @@ function requireAbsent(value, fields, context) {
|
|
|
63837
63868
|
function addStateIssue(message, context) {
|
|
63838
63869
|
context.addIssue({ code: "custom", path: ["status"], message });
|
|
63839
63870
|
}
|
|
63840
|
-
function requireOrdered(earlier, later,
|
|
63871
|
+
function requireOrdered(earlier, later, path82, context, equalAllowed = true) {
|
|
63841
63872
|
const ordered = equalAllowed ? Date.parse(earlier) <= Date.parse(later) : Date.parse(earlier) < Date.parse(later);
|
|
63842
63873
|
if (!ordered) {
|
|
63843
|
-
context.addIssue({ code: "custom", path: [
|
|
63874
|
+
context.addIssue({ code: "custom", path: [path82], message: `${path82} is out of order` });
|
|
63844
63875
|
}
|
|
63845
63876
|
}
|
|
63846
63877
|
|
|
@@ -65564,8 +65595,8 @@ function normalizeInstant4(value) {
|
|
|
65564
65595
|
return new Date(timestamp).toISOString();
|
|
65565
65596
|
}
|
|
65566
65597
|
function assertDescendant(parent, candidate) {
|
|
65567
|
-
const
|
|
65568
|
-
if (
|
|
65598
|
+
const relative8 = import_node_path31.default.relative(import_node_path31.default.resolve(parent), import_node_path31.default.resolve(candidate));
|
|
65599
|
+
if (relative8.startsWith("..") || import_node_path31.default.isAbsolute(relative8)) {
|
|
65569
65600
|
throw new LocalProtectedEvidenceVerificationError("container_invalid");
|
|
65570
65601
|
}
|
|
65571
65602
|
}
|
|
@@ -65720,14 +65751,14 @@ var WindowsProtectedEvidenceAuthority = class {
|
|
|
65720
65751
|
this.child = null;
|
|
65721
65752
|
child?.stdin.end();
|
|
65722
65753
|
if (child && child.exitCode === null) {
|
|
65723
|
-
await new Promise((
|
|
65754
|
+
await new Promise((resolve29) => {
|
|
65724
65755
|
const timeout = setTimeout(() => {
|
|
65725
65756
|
child.kill();
|
|
65726
|
-
|
|
65757
|
+
resolve29();
|
|
65727
65758
|
}, 5e3);
|
|
65728
65759
|
child.once("close", () => {
|
|
65729
65760
|
clearTimeout(timeout);
|
|
65730
|
-
|
|
65761
|
+
resolve29();
|
|
65731
65762
|
});
|
|
65732
65763
|
});
|
|
65733
65764
|
}
|
|
@@ -65738,8 +65769,8 @@ var WindowsProtectedEvidenceAuthority = class {
|
|
|
65738
65769
|
const child = this.ensureChild();
|
|
65739
65770
|
const id = this.nextId;
|
|
65740
65771
|
this.nextId += 1;
|
|
65741
|
-
return new Promise((
|
|
65742
|
-
this.pending.set(id, { resolve:
|
|
65772
|
+
return new Promise((resolve29, reject) => {
|
|
65773
|
+
this.pending.set(id, { resolve: resolve29, reject });
|
|
65743
65774
|
child.stdin.write(`${JSON.stringify({ id, op: operation, path: target })}
|
|
65744
65775
|
`, (error) => {
|
|
65745
65776
|
if (!error) return;
|
|
@@ -66395,7 +66426,7 @@ var repositoryCorpusHeaderBody = import_zod61.z.object({
|
|
|
66395
66426
|
var GovernedRepositoryCorpusHeader_v1 = repositoryCorpusHeaderBody.superRefine(
|
|
66396
66427
|
(value, context) => {
|
|
66397
66428
|
const paths = value.entries.map((entry) => entry.path);
|
|
66398
|
-
if (new Set(paths).size !== paths.length || paths.some((
|
|
66429
|
+
if (new Set(paths).size !== paths.length || paths.some((path82, index) => index > 0 && path82 <= paths[index - 1])) {
|
|
66399
66430
|
context.addIssue({
|
|
66400
66431
|
code: "custom",
|
|
66401
66432
|
path: ["entries"],
|
|
@@ -66822,7 +66853,7 @@ function sanitizedWslEnvironment() {
|
|
|
66822
66853
|
return environment;
|
|
66823
66854
|
}
|
|
66824
66855
|
function waitForExit(child, timeoutMs) {
|
|
66825
|
-
return new Promise((
|
|
66856
|
+
return new Promise((resolve29, reject) => {
|
|
66826
66857
|
const timeout = setTimeout(() => {
|
|
66827
66858
|
child.kill();
|
|
66828
66859
|
reject(new Error("WSL2 provider control request timed out"));
|
|
@@ -66833,7 +66864,7 @@ function waitForExit(child, timeoutMs) {
|
|
|
66833
66864
|
});
|
|
66834
66865
|
child.once("close", (code) => {
|
|
66835
66866
|
clearTimeout(timeout);
|
|
66836
|
-
|
|
66867
|
+
resolve29(code);
|
|
66837
66868
|
});
|
|
66838
66869
|
});
|
|
66839
66870
|
}
|
|
@@ -67942,8 +67973,8 @@ var LocalProtectedEvidenceStore = class {
|
|
|
67942
67973
|
exclusive(operation) {
|
|
67943
67974
|
const previous = this.queue;
|
|
67944
67975
|
let release3;
|
|
67945
|
-
this.queue = new Promise((
|
|
67946
|
-
release3 =
|
|
67976
|
+
this.queue = new Promise((resolve29) => {
|
|
67977
|
+
release3 = resolve29;
|
|
67947
67978
|
});
|
|
67948
67979
|
return previous.then(operation).finally(release3);
|
|
67949
67980
|
}
|
|
@@ -68106,8 +68137,8 @@ function sameToken(expected, candidate) {
|
|
|
68106
68137
|
return left.length === right.length && (0, import_node_crypto36.timingSafeEqual)(left, right);
|
|
68107
68138
|
}
|
|
68108
68139
|
function assertDescendant2(root, candidate) {
|
|
68109
|
-
const
|
|
68110
|
-
if (!
|
|
68140
|
+
const relative8 = import_node_path35.default.relative(root, candidate);
|
|
68141
|
+
if (!relative8 || relative8.startsWith("..") || import_node_path35.default.isAbsolute(relative8)) {
|
|
68111
68142
|
throw new Error("protected evidence deletion target escaped its root");
|
|
68112
68143
|
}
|
|
68113
68144
|
}
|
|
@@ -68956,11 +68987,11 @@ async function launchDetachedSupervisor(input) {
|
|
|
68956
68987
|
env: sanitizedSupervisorEnvironment()
|
|
68957
68988
|
}
|
|
68958
68989
|
);
|
|
68959
|
-
return await new Promise((
|
|
68960
|
-
child.once("error", () =>
|
|
68990
|
+
return await new Promise((resolve29) => {
|
|
68991
|
+
child.once("error", () => resolve29(false));
|
|
68961
68992
|
child.once("spawn", () => {
|
|
68962
68993
|
child.unref();
|
|
68963
|
-
|
|
68994
|
+
resolve29(true);
|
|
68964
68995
|
});
|
|
68965
68996
|
});
|
|
68966
68997
|
} catch {
|
|
@@ -69710,10 +69741,10 @@ function commandPath(command) {
|
|
|
69710
69741
|
}
|
|
69711
69742
|
return components.join(" ");
|
|
69712
69743
|
}
|
|
69713
|
-
function aliasWarning(
|
|
69714
|
-
const policy = POLICY_BY_PATH.get(
|
|
69744
|
+
function aliasWarning(path82) {
|
|
69745
|
+
const policy = POLICY_BY_PATH.get(path82);
|
|
69715
69746
|
if (!policy) return null;
|
|
69716
|
-
return policy.disposition === "deprecated" ? `[lexrunner] deprecated alias "${
|
|
69747
|
+
return policy.disposition === "deprecated" ? `[lexrunner] deprecated alias "${path82}"; use "${policy.replacement}"; removal: ${policy.removeIn}.` : `[lexrunner] compatibility alias "${path82}"; use "${policy.replacement}"; supported through 2.x and reviewed at 3.0.0.`;
|
|
69717
69748
|
}
|
|
69718
69749
|
function emitAliasWarning(command, write = (message) => process.stderr.write(message)) {
|
|
69719
69750
|
const warning = aliasWarning(commandPath(command));
|
|
@@ -69822,8 +69853,8 @@ async function searchAttributions(query, runId) {
|
|
|
69822
69853
|
// src/cli.ts
|
|
69823
69854
|
init_controller();
|
|
69824
69855
|
init_audit();
|
|
69825
|
-
var
|
|
69826
|
-
var
|
|
69856
|
+
var fs73 = __toESM(require("fs"), 1);
|
|
69857
|
+
var path81 = __toESM(require("path"), 1);
|
|
69827
69858
|
|
|
69828
69859
|
// src/runs/enforcement.ts
|
|
69829
69860
|
var import_zod65 = require("zod");
|
|
@@ -71258,8 +71289,8 @@ async function executeAgentWorkPreparation(input) {
|
|
|
71258
71289
|
function passed(results, id) {
|
|
71259
71290
|
return results.some((result) => result.id === id && result.outcome === "passed");
|
|
71260
71291
|
}
|
|
71261
|
-
async function containedExistingDirectory(root,
|
|
71262
|
-
const candidate =
|
|
71292
|
+
async function containedExistingDirectory(root, relative8) {
|
|
71293
|
+
const candidate = relative8 ? import_node_path38.default.resolve(root, relative8) : root;
|
|
71263
71294
|
const resolved = await (0, import_promises21.realpath)(candidate);
|
|
71264
71295
|
const relation = import_node_path38.default.relative(root, resolved);
|
|
71265
71296
|
if (relation === ".." || relation.startsWith(`..${import_node_path38.default.sep}`) || import_node_path38.default.isAbsolute(relation)) {
|
|
@@ -71343,7 +71374,7 @@ var workspaceFilesystemEntry = import_zod69.z.discriminatedUnion("kind", [
|
|
|
71343
71374
|
}).strict()
|
|
71344
71375
|
]);
|
|
71345
71376
|
function requireStrictlyOrderedPaths(values, context, field) {
|
|
71346
|
-
if (values.some(({ path:
|
|
71377
|
+
if (values.some(({ path: path82 }, index) => index > 0 && path82 <= values[index - 1].path)) {
|
|
71347
71378
|
context.addIssue({
|
|
71348
71379
|
code: "custom",
|
|
71349
71380
|
path: [field],
|
|
@@ -71363,7 +71394,7 @@ var completeGitIdentity = import_zod69.z.object({
|
|
|
71363
71394
|
kind: import_zod69.z.enum(["absent", "present"]),
|
|
71364
71395
|
paths: import_zod69.z.array(boundedRelativePath).max(4096)
|
|
71365
71396
|
}).strict().superRefine((identity, context) => {
|
|
71366
|
-
if (identity.paths.some((
|
|
71397
|
+
if (identity.paths.some((path82, index) => index > 0 && path82 <= identity.paths[index - 1]) || identity.kind === "absent" && identity.paths.length !== 0 || identity.kind === "present" && identity.paths.length === 0) {
|
|
71367
71398
|
context.addIssue({
|
|
71368
71399
|
code: "custom",
|
|
71369
71400
|
path: ["paths"],
|
|
@@ -71673,7 +71704,7 @@ var GovernedWorkspaceMutationRecoveryReceipt_v1 = import_zod69.z.object({
|
|
|
71673
71704
|
});
|
|
71674
71705
|
}
|
|
71675
71706
|
if (receipt.changed_paths.some(
|
|
71676
|
-
(
|
|
71707
|
+
(path82, index) => index > 0 && path82 <= receipt.changed_paths[index - 1]
|
|
71677
71708
|
)) {
|
|
71678
71709
|
context.addIssue({
|
|
71679
71710
|
code: "custom",
|
|
@@ -72510,15 +72541,15 @@ var AttemptAwaitableSupervisor = class {
|
|
|
72510
72541
|
0,
|
|
72511
72542
|
Date.parse(record.observer_lease.expires_at) - Date.parse(this.now()) + 1
|
|
72512
72543
|
);
|
|
72513
|
-
let
|
|
72544
|
+
let resolve29;
|
|
72514
72545
|
const completion = new Promise((resolvePromise) => {
|
|
72515
|
-
|
|
72546
|
+
resolve29 = resolvePromise;
|
|
72516
72547
|
});
|
|
72517
72548
|
const timer = setTimeout(() => {
|
|
72518
72549
|
this.leaseExpiryWakeups.delete(record.awaitable_id);
|
|
72519
|
-
void this.attach(record.awaitable_id).finally(
|
|
72550
|
+
void this.attach(record.awaitable_id).finally(resolve29);
|
|
72520
72551
|
}, delayMs);
|
|
72521
|
-
this.leaseExpiryWakeups.set(record.awaitable_id, { timer, completion, resolve:
|
|
72552
|
+
this.leaseExpiryWakeups.set(record.awaitable_id, { timer, completion, resolve: resolve29 });
|
|
72522
72553
|
}
|
|
72523
72554
|
clearLeaseExpiryWakeup(awaitableId) {
|
|
72524
72555
|
const wakeup = this.leaseExpiryWakeups.get(awaitableId);
|
|
@@ -72623,14 +72654,14 @@ function normalizeRetryDelay(value, name) {
|
|
|
72623
72654
|
}
|
|
72624
72655
|
function waitForRetry(delayMs, signal) {
|
|
72625
72656
|
if (signal.aborted) return Promise.resolve(false);
|
|
72626
|
-
return new Promise((
|
|
72657
|
+
return new Promise((resolve29) => {
|
|
72627
72658
|
const timer = setTimeout(() => {
|
|
72628
72659
|
signal.removeEventListener("abort", onAbort);
|
|
72629
|
-
|
|
72660
|
+
resolve29(true);
|
|
72630
72661
|
}, delayMs);
|
|
72631
72662
|
const onAbort = () => {
|
|
72632
72663
|
clearTimeout(timer);
|
|
72633
|
-
|
|
72664
|
+
resolve29(false);
|
|
72634
72665
|
};
|
|
72635
72666
|
signal.addEventListener("abort", onAbort, { once: true });
|
|
72636
72667
|
});
|
|
@@ -76170,11 +76201,141 @@ init_fileAnalysis();
|
|
|
76170
76201
|
// src/application/plan-artifact-service.ts
|
|
76171
76202
|
var fs71 = __toESM(require("fs"), 1);
|
|
76172
76203
|
var path79 = __toESM(require("path"), 1);
|
|
76204
|
+
var import_node_util2 = require("util");
|
|
76173
76205
|
init_profileResolver();
|
|
76174
76206
|
init_schema2();
|
|
76175
76207
|
init_task_contract();
|
|
76176
|
-
|
|
76177
|
-
|
|
76208
|
+
init_canonicalJson();
|
|
76209
|
+
|
|
76210
|
+
// src/application/execution-plan-artifact.ts
|
|
76211
|
+
var import_node_crypto40 = require("crypto");
|
|
76212
|
+
var import_zod74 = require("zod");
|
|
76213
|
+
init_schema2();
|
|
76214
|
+
init_canonicalJson();
|
|
76215
|
+
var EXECUTION_PLAN_ARTIFACT_CONTRACT = "lexrunner.execution-plan-artifact.v1";
|
|
76216
|
+
var PLAN_ARTIFACT_REFERENCE_CONTRACT = "lexrunner.plan-artifact-reference.v1";
|
|
76217
|
+
var EXECUTION_PLAN_CANONICALIZATION_PROFILE = "lexrunner.execution-plan.canonical-json.v1";
|
|
76218
|
+
var EXECUTION_PLAN_HASH_PROFILE = "lexrunner.execution-plan-artifact.sha256.v1";
|
|
76219
|
+
var EXECUTION_PLAN_HASH_DOMAIN = "lexrunner:execution-plan-artifact:v1\0";
|
|
76220
|
+
var MAX_PLAN_ARTIFACT_BYTES = 4 * 1024 * 1024;
|
|
76221
|
+
var MAX_PLAN_RETRIEVAL_REFERENCE_BYTES = 4096;
|
|
76222
|
+
var MAX_SCOPE_LABEL_BYTES = 512;
|
|
76223
|
+
var Sha256Digest = import_zod74.z.string().regex(/^sha256:[a-f0-9]{64}$/);
|
|
76224
|
+
var BoundedScopeLabel = import_zod74.z.string().min(1).refine((value) => Buffer.byteLength(value, "utf8") <= MAX_SCOPE_LABEL_BYTES, {
|
|
76225
|
+
message: "Scope label exceeds the transport limit"
|
|
76226
|
+
});
|
|
76227
|
+
var BoundedIdentityLabel = import_zod74.z.string().min(1).refine((value) => Buffer.byteLength(value, "utf8") <= MAX_SCOPE_LABEL_BYTES, {
|
|
76228
|
+
message: "Identity label exceeds the transport limit"
|
|
76229
|
+
});
|
|
76230
|
+
var PlanArtifactScope_v1Schema = import_zod74.z.object({
|
|
76231
|
+
tenant: BoundedScopeLabel,
|
|
76232
|
+
workspace: BoundedScopeLabel,
|
|
76233
|
+
repository: BoundedScopeLabel,
|
|
76234
|
+
refNamespace: BoundedScopeLabel,
|
|
76235
|
+
policy: BoundedScopeLabel
|
|
76236
|
+
}).strict();
|
|
76237
|
+
var ExecutionPlanArtifactIdentity_v1Schema = import_zod74.z.object({
|
|
76238
|
+
contract: import_zod74.z.literal(EXECUTION_PLAN_ARTIFACT_CONTRACT),
|
|
76239
|
+
kind: import_zod74.z.literal("execution-plan"),
|
|
76240
|
+
planSchema: import_zod74.z.literal("lexrunner.execution-plan"),
|
|
76241
|
+
planSchemaVersion: BoundedIdentityLabel,
|
|
76242
|
+
canonicalizationProfile: import_zod74.z.literal(EXECUTION_PLAN_CANONICALIZATION_PROFILE),
|
|
76243
|
+
hashProfile: import_zod74.z.literal(EXECUTION_PLAN_HASH_PROFILE),
|
|
76244
|
+
digestAlgorithm: import_zod74.z.literal("sha256"),
|
|
76245
|
+
digest: Sha256Digest,
|
|
76246
|
+
canonicalByteLength: import_zod74.z.number().int().nonnegative().max(MAX_PLAN_ARTIFACT_BYTES),
|
|
76247
|
+
target: BoundedIdentityLabel,
|
|
76248
|
+
summary: import_zod74.z.object({
|
|
76249
|
+
itemCount: import_zod74.z.number().int().nonnegative().max(256),
|
|
76250
|
+
gateCount: import_zod74.z.number().int().nonnegative().max(256 * 64)
|
|
76251
|
+
}).strict()
|
|
76252
|
+
}).strict();
|
|
76253
|
+
var ExecutionPlanArtifact_v1Schema = import_zod74.z.object({
|
|
76254
|
+
identity: ExecutionPlanArtifactIdentity_v1Schema,
|
|
76255
|
+
canonicalBytes: import_zod74.z.string()
|
|
76256
|
+
}).strict().superRefine((artifact, context) => {
|
|
76257
|
+
const byteLength = Buffer.byteLength(artifact.canonicalBytes, "utf8");
|
|
76258
|
+
if (byteLength > MAX_PLAN_ARTIFACT_BYTES) {
|
|
76259
|
+
context.addIssue({
|
|
76260
|
+
code: "custom",
|
|
76261
|
+
path: ["canonicalBytes"],
|
|
76262
|
+
message: "Canonical plan bytes exceed the artifact limit"
|
|
76263
|
+
});
|
|
76264
|
+
}
|
|
76265
|
+
if (byteLength !== artifact.identity.canonicalByteLength) {
|
|
76266
|
+
context.addIssue({
|
|
76267
|
+
code: "custom",
|
|
76268
|
+
path: ["identity", "canonicalByteLength"],
|
|
76269
|
+
message: "Canonical plan byte length does not match the artifact identity"
|
|
76270
|
+
});
|
|
76271
|
+
}
|
|
76272
|
+
if (computeExecutionPlanArtifactDigest(artifact.canonicalBytes) !== artifact.identity.digest) {
|
|
76273
|
+
context.addIssue({
|
|
76274
|
+
code: "custom",
|
|
76275
|
+
path: ["identity", "digest"],
|
|
76276
|
+
message: "Canonical plan digest does not match the artifact identity"
|
|
76277
|
+
});
|
|
76278
|
+
}
|
|
76279
|
+
try {
|
|
76280
|
+
const plan = loadPlan(artifact.canonicalBytes);
|
|
76281
|
+
if (canonicalJSONStringify(plan) !== artifact.canonicalBytes) {
|
|
76282
|
+
context.addIssue({
|
|
76283
|
+
code: "custom",
|
|
76284
|
+
path: ["canonicalBytes"],
|
|
76285
|
+
message: "Plan bytes are not in the declared canonical form"
|
|
76286
|
+
});
|
|
76287
|
+
}
|
|
76288
|
+
const gateCount = plan.items.reduce((count, item) => count + item.gates.length, 0);
|
|
76289
|
+
if (artifact.identity.planSchemaVersion !== plan.schemaVersion || artifact.identity.target !== plan.target || artifact.identity.summary.itemCount !== plan.items.length || artifact.identity.summary.gateCount !== gateCount) {
|
|
76290
|
+
context.addIssue({
|
|
76291
|
+
code: "custom",
|
|
76292
|
+
path: ["identity"],
|
|
76293
|
+
message: "Plan semantics do not match the artifact identity"
|
|
76294
|
+
});
|
|
76295
|
+
}
|
|
76296
|
+
} catch {
|
|
76297
|
+
context.addIssue({
|
|
76298
|
+
code: "custom",
|
|
76299
|
+
path: ["canonicalBytes"],
|
|
76300
|
+
message: "Canonical bytes do not contain a valid execution plan"
|
|
76301
|
+
});
|
|
76302
|
+
}
|
|
76303
|
+
});
|
|
76304
|
+
var PlanArtifactReference_v1Schema = import_zod74.z.object({
|
|
76305
|
+
contract: import_zod74.z.literal(PLAN_ARTIFACT_REFERENCE_CONTRACT),
|
|
76306
|
+
artifact: ExecutionPlanArtifactIdentity_v1Schema,
|
|
76307
|
+
expectedDigest: Sha256Digest,
|
|
76308
|
+
expectedCanonicalByteLength: import_zod74.z.number().int().nonnegative().max(MAX_PLAN_ARTIFACT_BYTES),
|
|
76309
|
+
retrieval: import_zod74.z.object({
|
|
76310
|
+
kind: import_zod74.z.enum(["file", "registered"]),
|
|
76311
|
+
reference: import_zod74.z.string().min(1).refine(
|
|
76312
|
+
(value) => !value.includes("\0") && Buffer.byteLength(value, "utf8") <= MAX_PLAN_RETRIEVAL_REFERENCE_BYTES,
|
|
76313
|
+
{ message: "Retrieval reference is invalid or exceeds the transport limit" }
|
|
76314
|
+
)
|
|
76315
|
+
}).strict(),
|
|
76316
|
+
scope: PlanArtifactScope_v1Schema.optional()
|
|
76317
|
+
}).strict().superRefine((reference, context) => {
|
|
76318
|
+
if (reference.expectedDigest !== reference.artifact.digest) {
|
|
76319
|
+
context.addIssue({
|
|
76320
|
+
code: "custom",
|
|
76321
|
+
path: ["expectedDigest"],
|
|
76322
|
+
message: "Expected digest does not match the embedded artifact identity"
|
|
76323
|
+
});
|
|
76324
|
+
}
|
|
76325
|
+
if (reference.expectedCanonicalByteLength !== reference.artifact.canonicalByteLength) {
|
|
76326
|
+
context.addIssue({
|
|
76327
|
+
code: "custom",
|
|
76328
|
+
path: ["expectedCanonicalByteLength"],
|
|
76329
|
+
message: "Expected byte length does not match the embedded artifact identity"
|
|
76330
|
+
});
|
|
76331
|
+
}
|
|
76332
|
+
});
|
|
76333
|
+
function computeExecutionPlanArtifactDigest(canonicalBytes2) {
|
|
76334
|
+
const digest = (0, import_node_crypto40.createHash)("sha256").update(EXECUTION_PLAN_HASH_DOMAIN, "utf8").update(canonicalBytes2, "utf8").digest("hex");
|
|
76335
|
+
return `sha256:${digest}`;
|
|
76336
|
+
}
|
|
76337
|
+
|
|
76338
|
+
// src/application/plan-artifact-service.ts
|
|
76178
76339
|
var MAX_PLAN_ITEMS = 256;
|
|
76179
76340
|
var MAX_GATES_PER_ITEM2 = 64;
|
|
76180
76341
|
var MAX_IDENTITY_LABEL_BYTES = 512;
|
|
@@ -76186,16 +76347,41 @@ var PlanArtifactServiceError = class extends Error {
|
|
|
76186
76347
|
this.name = "PlanArtifactServiceError";
|
|
76187
76348
|
}
|
|
76188
76349
|
};
|
|
76350
|
+
var _hooks;
|
|
76189
76351
|
var PlanArtifactService = class {
|
|
76352
|
+
constructor(options = {}) {
|
|
76353
|
+
__privateAdd(this, _hooks);
|
|
76354
|
+
__privateSet(this, _hooks, options.importHooks ?? {});
|
|
76355
|
+
}
|
|
76190
76356
|
resolve(input = {}) {
|
|
76191
76357
|
const workingDir = path79.resolve(input.workingDir ?? process.cwd());
|
|
76358
|
+
const scope = parseScope(input.scope);
|
|
76359
|
+
if (input.planReference !== void 0 && input.planFile !== void 0) {
|
|
76360
|
+
throw new PlanArtifactServiceError(
|
|
76361
|
+
"PLAN_REFERENCE_INVALID",
|
|
76362
|
+
"Provide either an immutable plan reference or an explicit plan path, not both",
|
|
76363
|
+
"explicit"
|
|
76364
|
+
);
|
|
76365
|
+
}
|
|
76366
|
+
if (input.planReference !== void 0 && input.scope !== void 0) {
|
|
76367
|
+
throw new PlanArtifactServiceError(
|
|
76368
|
+
"PLAN_REFERENCE_INVALID",
|
|
76369
|
+
"A separately supplied scope cannot override an immutable plan reference",
|
|
76370
|
+
"explicit"
|
|
76371
|
+
);
|
|
76372
|
+
}
|
|
76373
|
+
if (input.planReference !== void 0) {
|
|
76374
|
+
const reference = parseReference(input.planReference);
|
|
76375
|
+
const explicitPath = resolveExplicitReference(reference.retrieval.reference, workingDir);
|
|
76376
|
+
return readArtifact(explicitPath, "explicit", __privateGet(this, _hooks), reference);
|
|
76377
|
+
}
|
|
76192
76378
|
if (input.planFile !== void 0) {
|
|
76193
76379
|
const explicitPath = resolveExplicitReference(input.planFile, workingDir);
|
|
76194
|
-
return readArtifact(explicitPath, "explicit");
|
|
76380
|
+
return readArtifact(explicitPath, "explicit", __privateGet(this, _hooks), void 0, scope);
|
|
76195
76381
|
}
|
|
76196
76382
|
const repositoryPlan = path79.join(workingDir, "plan.json");
|
|
76197
|
-
if (
|
|
76198
|
-
return readArtifact(repositoryPlan, "repository-root");
|
|
76383
|
+
if (pathEntryExists(repositoryPlan)) {
|
|
76384
|
+
return readArtifact(repositoryPlan, "repository-root", __privateGet(this, _hooks), void 0, scope);
|
|
76199
76385
|
}
|
|
76200
76386
|
let profilePlan;
|
|
76201
76387
|
try {
|
|
@@ -76203,8 +76389,8 @@ var PlanArtifactService = class {
|
|
|
76203
76389
|
profilePlan = path79.join(profile.path, "runner", "plan.json");
|
|
76204
76390
|
} catch {
|
|
76205
76391
|
}
|
|
76206
|
-
if (profilePlan &&
|
|
76207
|
-
return readArtifact(profilePlan, "profile-runner");
|
|
76392
|
+
if (profilePlan && pathEntryExists(profilePlan)) {
|
|
76393
|
+
return readArtifact(profilePlan, "profile-runner", __privateGet(this, _hooks), void 0, scope);
|
|
76208
76394
|
}
|
|
76209
76395
|
throw new PlanArtifactServiceError(
|
|
76210
76396
|
"PLAN_NOT_FOUND",
|
|
@@ -76212,46 +76398,85 @@ var PlanArtifactService = class {
|
|
|
76212
76398
|
);
|
|
76213
76399
|
}
|
|
76214
76400
|
};
|
|
76215
|
-
|
|
76216
|
-
|
|
76401
|
+
_hooks = new WeakMap();
|
|
76402
|
+
function parseReference(reference) {
|
|
76403
|
+
const parsed = PlanArtifactReference_v1Schema.safeParse(reference);
|
|
76404
|
+
if (!parsed.success) {
|
|
76217
76405
|
throw new PlanArtifactServiceError(
|
|
76218
76406
|
"PLAN_REFERENCE_INVALID",
|
|
76219
|
-
"The
|
|
76407
|
+
"The immutable plan reference does not satisfy the bounded transport contract",
|
|
76220
76408
|
"explicit"
|
|
76221
76409
|
);
|
|
76222
76410
|
}
|
|
76223
|
-
return
|
|
76411
|
+
return parsed.data;
|
|
76224
76412
|
}
|
|
76225
|
-
function
|
|
76226
|
-
|
|
76227
|
-
|
|
76228
|
-
|
|
76229
|
-
} catch {
|
|
76413
|
+
function parseScope(scope) {
|
|
76414
|
+
if (scope === void 0) return void 0;
|
|
76415
|
+
const parsed = PlanArtifactScope_v1Schema.safeParse(scope);
|
|
76416
|
+
if (!parsed.success) {
|
|
76230
76417
|
throw new PlanArtifactServiceError(
|
|
76231
|
-
"
|
|
76232
|
-
"The
|
|
76233
|
-
|
|
76418
|
+
"PLAN_REFERENCE_INVALID",
|
|
76419
|
+
"The plan scope does not satisfy the bounded transport contract",
|
|
76420
|
+
"explicit"
|
|
76234
76421
|
);
|
|
76235
76422
|
}
|
|
76236
|
-
|
|
76423
|
+
return parsed.data;
|
|
76424
|
+
}
|
|
76425
|
+
function resolveExplicitReference(reference, workingDir) {
|
|
76426
|
+
if (reference.length === 0 || reference.includes("\0") || Buffer.byteLength(reference, "utf8") > MAX_PLAN_RETRIEVAL_REFERENCE_BYTES) {
|
|
76237
76427
|
throw new PlanArtifactServiceError(
|
|
76238
|
-
"
|
|
76239
|
-
"The
|
|
76428
|
+
"PLAN_REFERENCE_INVALID",
|
|
76429
|
+
"The explicit plan reference is empty, overlong, or contains an invalid character",
|
|
76430
|
+
"explicit"
|
|
76431
|
+
);
|
|
76432
|
+
}
|
|
76433
|
+
return path79.isAbsolute(reference) ? path79.normalize(reference) : path79.resolve(workingDir, reference);
|
|
76434
|
+
}
|
|
76435
|
+
function readArtifact(filePath, source, hooks, expected, scope) {
|
|
76436
|
+
const content = readPortableRaceDetectedFile(filePath, source, hooks);
|
|
76437
|
+
const plan = loadPlan(content);
|
|
76438
|
+
assertBoundedArtifact(plan, source);
|
|
76439
|
+
const canonicalBytes2 = canonicalJSONStringify(plan);
|
|
76440
|
+
const canonicalByteLength = Buffer.byteLength(canonicalBytes2, "utf8");
|
|
76441
|
+
if (canonicalByteLength > MAX_PLAN_ARTIFACT_BYTES) {
|
|
76442
|
+
throw new PlanArtifactServiceError(
|
|
76443
|
+
"PLAN_ARTIFACT_LIMIT_EXCEEDED",
|
|
76444
|
+
"The canonical integration plan exceeds the artifact byte limit",
|
|
76240
76445
|
source
|
|
76241
76446
|
);
|
|
76242
76447
|
}
|
|
76243
|
-
|
|
76244
|
-
|
|
76245
|
-
|
|
76246
|
-
|
|
76448
|
+
const artifactIdentity = {
|
|
76449
|
+
contract: EXECUTION_PLAN_ARTIFACT_CONTRACT,
|
|
76450
|
+
kind: "execution-plan",
|
|
76451
|
+
planSchema: "lexrunner.execution-plan",
|
|
76452
|
+
planSchemaVersion: plan.schemaVersion,
|
|
76453
|
+
canonicalizationProfile: EXECUTION_PLAN_CANONICALIZATION_PROFILE,
|
|
76454
|
+
hashProfile: EXECUTION_PLAN_HASH_PROFILE,
|
|
76455
|
+
digestAlgorithm: "sha256",
|
|
76456
|
+
digest: computeExecutionPlanArtifactDigest(canonicalBytes2),
|
|
76457
|
+
canonicalByteLength,
|
|
76458
|
+
target: plan.target,
|
|
76459
|
+
summary: {
|
|
76460
|
+
itemCount: plan.items.length,
|
|
76461
|
+
gateCount: plan.items.reduce((count, item) => count + item.gates.length, 0)
|
|
76462
|
+
}
|
|
76463
|
+
};
|
|
76464
|
+
const artifact = { identity: artifactIdentity, canonicalBytes: canonicalBytes2 };
|
|
76465
|
+
if (expected && !(0, import_node_util2.isDeepStrictEqual)(expected.artifact, artifactIdentity)) {
|
|
76247
76466
|
throw new PlanArtifactServiceError(
|
|
76248
|
-
"
|
|
76249
|
-
"The
|
|
76467
|
+
"PLAN_REFERENCE_MISMATCH",
|
|
76468
|
+
"The retrieved integration plan does not match the immutable reference",
|
|
76250
76469
|
source
|
|
76251
76470
|
);
|
|
76252
76471
|
}
|
|
76253
|
-
const
|
|
76254
|
-
|
|
76472
|
+
const reference = expected ?? parseReference({
|
|
76473
|
+
contract: PLAN_ARTIFACT_REFERENCE_CONTRACT,
|
|
76474
|
+
artifact: artifactIdentity,
|
|
76475
|
+
expectedDigest: artifactIdentity.digest,
|
|
76476
|
+
expectedCanonicalByteLength: artifactIdentity.canonicalByteLength,
|
|
76477
|
+
retrieval: { kind: "file", reference: filePath },
|
|
76478
|
+
...scope ? { scope } : {}
|
|
76479
|
+
});
|
|
76255
76480
|
return {
|
|
76256
76481
|
plan,
|
|
76257
76482
|
identity: {
|
|
@@ -76263,10 +76488,167 @@ function readArtifact(filePath, source) {
|
|
|
76263
76488
|
target: plan.target,
|
|
76264
76489
|
itemCount: plan.items.length
|
|
76265
76490
|
},
|
|
76491
|
+
artifact,
|
|
76492
|
+
reference,
|
|
76493
|
+
acquisition: {
|
|
76494
|
+
contract: "lexrunner.plan-artifact-acquisition.v1",
|
|
76495
|
+
assurance: "portable-race-detection",
|
|
76496
|
+
authority: "unverified"
|
|
76497
|
+
},
|
|
76266
76498
|
source,
|
|
76267
76499
|
filePath
|
|
76268
76500
|
};
|
|
76269
76501
|
}
|
|
76502
|
+
function readPortableRaceDetectedFile(filePath, source, hooks) {
|
|
76503
|
+
const initialPath = snapshotPath(filePath, source);
|
|
76504
|
+
hooks.afterInitialPathSnapshot?.();
|
|
76505
|
+
const noFollow = typeof fs71.constants.O_NOFOLLOW === "number" ? fs71.constants.O_NOFOLLOW : 0;
|
|
76506
|
+
let descriptor;
|
|
76507
|
+
try {
|
|
76508
|
+
descriptor = fs71.openSync(filePath, fs71.constants.O_RDONLY | noFollow);
|
|
76509
|
+
} catch (error) {
|
|
76510
|
+
throw importError(error, source);
|
|
76511
|
+
}
|
|
76512
|
+
let bytes;
|
|
76513
|
+
try {
|
|
76514
|
+
const before = fs71.fstatSync(descriptor, { bigint: true });
|
|
76515
|
+
assertOpenedIdentity(initialPath[initialPath.length - 1].stats, before, source);
|
|
76516
|
+
hooks.afterOpen?.();
|
|
76517
|
+
if (before.size > BigInt(MAX_PLAN_ARTIFACT_BYTES)) {
|
|
76518
|
+
throw new PlanArtifactServiceError(
|
|
76519
|
+
"PLAN_ARTIFACT_LIMIT_EXCEEDED",
|
|
76520
|
+
"The referenced integration plan exceeds the artifact byte limit",
|
|
76521
|
+
source
|
|
76522
|
+
);
|
|
76523
|
+
}
|
|
76524
|
+
bytes = readAtMost(descriptor, MAX_PLAN_ARTIFACT_BYTES + 1);
|
|
76525
|
+
hooks.afterRead?.();
|
|
76526
|
+
const after = fs71.fstatSync(descriptor, { bigint: true });
|
|
76527
|
+
assertStableOpenedFile(before, after, bytes.length, source);
|
|
76528
|
+
} finally {
|
|
76529
|
+
fs71.closeSync(descriptor);
|
|
76530
|
+
}
|
|
76531
|
+
hooks.beforeFinalPathSnapshot?.();
|
|
76532
|
+
const finalPath = snapshotPath(filePath, source);
|
|
76533
|
+
assertStablePath(initialPath, finalPath, source);
|
|
76534
|
+
try {
|
|
76535
|
+
return new TextDecoder("utf-8", { fatal: true }).decode(bytes);
|
|
76536
|
+
} catch {
|
|
76537
|
+
throw new PlanArtifactServiceError(
|
|
76538
|
+
"PLAN_UNREADABLE",
|
|
76539
|
+
"The referenced integration plan is not valid UTF-8",
|
|
76540
|
+
source
|
|
76541
|
+
);
|
|
76542
|
+
}
|
|
76543
|
+
}
|
|
76544
|
+
function snapshotPath(filePath, source) {
|
|
76545
|
+
const absolute = path79.resolve(filePath);
|
|
76546
|
+
const root = path79.parse(absolute).root;
|
|
76547
|
+
const relative8 = path79.relative(root, absolute);
|
|
76548
|
+
const segments = relative8.length === 0 ? [] : relative8.split(path79.sep);
|
|
76549
|
+
const candidates = [root];
|
|
76550
|
+
let current = root;
|
|
76551
|
+
for (const segment of segments) {
|
|
76552
|
+
current = path79.join(current, segment);
|
|
76553
|
+
candidates.push(current);
|
|
76554
|
+
}
|
|
76555
|
+
return candidates.map((candidate, index) => {
|
|
76556
|
+
let stats;
|
|
76557
|
+
try {
|
|
76558
|
+
stats = fs71.lstatSync(candidate, { bigint: true });
|
|
76559
|
+
} catch (error) {
|
|
76560
|
+
throw importError(error, source);
|
|
76561
|
+
}
|
|
76562
|
+
const leaf = index === candidates.length - 1;
|
|
76563
|
+
if (stats.isSymbolicLink()) {
|
|
76564
|
+
throw new PlanArtifactServiceError(
|
|
76565
|
+
"PLAN_FILESYSTEM_UNSAFE",
|
|
76566
|
+
"The integration plan path contains an unsafe filesystem object",
|
|
76567
|
+
source
|
|
76568
|
+
);
|
|
76569
|
+
}
|
|
76570
|
+
if (leaf ? !stats.isFile() : !stats.isDirectory()) {
|
|
76571
|
+
throw new PlanArtifactServiceError(
|
|
76572
|
+
"PLAN_UNREADABLE",
|
|
76573
|
+
"The referenced integration plan is not a readable bounded file",
|
|
76574
|
+
source
|
|
76575
|
+
);
|
|
76576
|
+
}
|
|
76577
|
+
if (leaf && stats.nlink !== 1n) {
|
|
76578
|
+
throw new PlanArtifactServiceError(
|
|
76579
|
+
"PLAN_FILESYSTEM_UNSAFE",
|
|
76580
|
+
"The integration plan file has an ambiguous filesystem identity",
|
|
76581
|
+
source
|
|
76582
|
+
);
|
|
76583
|
+
}
|
|
76584
|
+
return { stats, leaf };
|
|
76585
|
+
});
|
|
76586
|
+
}
|
|
76587
|
+
function assertOpenedIdentity(pathStats, openedStats, source) {
|
|
76588
|
+
if (!openedStats.isFile() || openedStats.nlink !== 1n || !sameObject(pathStats, openedStats) || pathStats.size !== openedStats.size || pathStats.mtimeNs !== openedStats.mtimeNs || pathStats.ctimeNs !== openedStats.ctimeNs) {
|
|
76589
|
+
throw new PlanArtifactServiceError(
|
|
76590
|
+
"PLAN_FILESYSTEM_UNSAFE",
|
|
76591
|
+
"The integration plan filesystem identity changed during acquisition",
|
|
76592
|
+
source
|
|
76593
|
+
);
|
|
76594
|
+
}
|
|
76595
|
+
}
|
|
76596
|
+
function assertStableOpenedFile(before, after, bytesRead, source) {
|
|
76597
|
+
if (bytesRead > MAX_PLAN_ARTIFACT_BYTES) {
|
|
76598
|
+
throw new PlanArtifactServiceError(
|
|
76599
|
+
"PLAN_ARTIFACT_LIMIT_EXCEEDED",
|
|
76600
|
+
"The referenced integration plan exceeds the artifact byte limit",
|
|
76601
|
+
source
|
|
76602
|
+
);
|
|
76603
|
+
}
|
|
76604
|
+
if (!after.isFile() || after.nlink !== 1n || !sameObject(before, after) || before.size !== after.size || before.mtimeNs !== after.mtimeNs || before.ctimeNs !== after.ctimeNs || BigInt(bytesRead) !== before.size) {
|
|
76605
|
+
throw new PlanArtifactServiceError(
|
|
76606
|
+
"PLAN_FILESYSTEM_UNSAFE",
|
|
76607
|
+
"The integration plan changed while its bytes were being acquired",
|
|
76608
|
+
source
|
|
76609
|
+
);
|
|
76610
|
+
}
|
|
76611
|
+
}
|
|
76612
|
+
function assertStablePath(before, after, source) {
|
|
76613
|
+
if (before.length !== after.length || before.some((entry, index) => {
|
|
76614
|
+
const current = after[index];
|
|
76615
|
+
return !current || entry.leaf !== current.leaf || !sameObject(entry.stats, current.stats) || entry.leaf && (entry.stats.size !== current.stats.size || entry.stats.mtimeNs !== current.stats.mtimeNs || entry.stats.ctimeNs !== current.stats.ctimeNs || current.stats.nlink !== 1n);
|
|
76616
|
+
})) {
|
|
76617
|
+
throw new PlanArtifactServiceError(
|
|
76618
|
+
"PLAN_FILESYSTEM_UNSAFE",
|
|
76619
|
+
"The integration plan path changed while its bytes were being acquired",
|
|
76620
|
+
source
|
|
76621
|
+
);
|
|
76622
|
+
}
|
|
76623
|
+
}
|
|
76624
|
+
function sameObject(left, right) {
|
|
76625
|
+
return left.dev === right.dev && left.ino === right.ino && left.mode === right.mode;
|
|
76626
|
+
}
|
|
76627
|
+
function readAtMost(descriptor, maximumBytes) {
|
|
76628
|
+
const buffer = Buffer.allocUnsafe(maximumBytes);
|
|
76629
|
+
let offset = 0;
|
|
76630
|
+
while (offset < maximumBytes) {
|
|
76631
|
+
const count = fs71.readSync(descriptor, buffer, offset, maximumBytes - offset, null);
|
|
76632
|
+
if (count === 0) break;
|
|
76633
|
+
offset += count;
|
|
76634
|
+
}
|
|
76635
|
+
return buffer.subarray(0, offset);
|
|
76636
|
+
}
|
|
76637
|
+
function importError(error, source) {
|
|
76638
|
+
const code = error?.code;
|
|
76639
|
+
if (code === "ENOENT" || code === "ENOTDIR") {
|
|
76640
|
+
return new PlanArtifactServiceError(
|
|
76641
|
+
"PLAN_NOT_FOUND",
|
|
76642
|
+
"The referenced integration plan does not exist",
|
|
76643
|
+
source
|
|
76644
|
+
);
|
|
76645
|
+
}
|
|
76646
|
+
return new PlanArtifactServiceError(
|
|
76647
|
+
"PLAN_UNREADABLE",
|
|
76648
|
+
"The referenced integration plan could not be safely read",
|
|
76649
|
+
source
|
|
76650
|
+
);
|
|
76651
|
+
}
|
|
76270
76652
|
function assertBoundedArtifact(plan, source) {
|
|
76271
76653
|
const labels = [
|
|
76272
76654
|
plan.schemaVersion,
|
|
@@ -76281,11 +76663,277 @@ function assertBoundedArtifact(plan, source) {
|
|
|
76281
76663
|
);
|
|
76282
76664
|
}
|
|
76283
76665
|
}
|
|
76284
|
-
function
|
|
76666
|
+
function pathEntryExists(filePath) {
|
|
76285
76667
|
try {
|
|
76286
|
-
|
|
76287
|
-
|
|
76288
|
-
|
|
76668
|
+
fs71.lstatSync(filePath);
|
|
76669
|
+
return true;
|
|
76670
|
+
} catch (error) {
|
|
76671
|
+
const code = error?.code;
|
|
76672
|
+
if (code === "ENOENT" || code === "ENOTDIR") return false;
|
|
76673
|
+
return true;
|
|
76674
|
+
}
|
|
76675
|
+
}
|
|
76676
|
+
|
|
76677
|
+
// src/application/plan-artifact-registration-service.ts
|
|
76678
|
+
var fs72 = __toESM(require("fs"), 1);
|
|
76679
|
+
var path80 = __toESM(require("path"), 1);
|
|
76680
|
+
var import_node_crypto41 = require("crypto");
|
|
76681
|
+
var PlanArtifactRegistrationError = class extends Error {
|
|
76682
|
+
constructor(code, message) {
|
|
76683
|
+
super(message);
|
|
76684
|
+
this.code = code;
|
|
76685
|
+
this.name = "PlanArtifactRegistrationError";
|
|
76686
|
+
}
|
|
76687
|
+
};
|
|
76688
|
+
var _PlanArtifactRegistrationService_instances, verifyExisting_fn;
|
|
76689
|
+
var PlanArtifactRegistrationService = class {
|
|
76690
|
+
constructor() {
|
|
76691
|
+
__privateAdd(this, _PlanArtifactRegistrationService_instances);
|
|
76692
|
+
}
|
|
76693
|
+
register(input) {
|
|
76694
|
+
const parsed = ExecutionPlanArtifact_v1Schema.safeParse(input.artifact);
|
|
76695
|
+
if (!parsed.success) {
|
|
76696
|
+
throw new PlanArtifactRegistrationError(
|
|
76697
|
+
"PLAN_REGISTRATION_INVALID",
|
|
76698
|
+
"The plan artifact does not satisfy the immutable artifact contract"
|
|
76699
|
+
);
|
|
76700
|
+
}
|
|
76701
|
+
const artifact = parsed.data;
|
|
76702
|
+
const scope = parseScope2(input.scope);
|
|
76703
|
+
const storeDirectory = validateStoreReference(input.storeDirectory);
|
|
76704
|
+
prepareControlledStore(storeDirectory);
|
|
76705
|
+
const digestName = `${artifact.identity.digest.slice("sha256:".length)}.json`;
|
|
76706
|
+
const artifactPath = path80.join(storeDirectory, digestName);
|
|
76707
|
+
const reference = createRegisteredReference(artifact, artifactPath, scope);
|
|
76708
|
+
if (pathEntryExists2(artifactPath)) {
|
|
76709
|
+
return __privateMethod(this, _PlanArtifactRegistrationService_instances, verifyExisting_fn).call(this, artifact, reference, false);
|
|
76710
|
+
}
|
|
76711
|
+
const temporaryPath = path80.join(storeDirectory, `.plan-${(0, import_node_crypto41.randomUUID)()}.tmp`);
|
|
76712
|
+
let temporaryCreated = false;
|
|
76713
|
+
try {
|
|
76714
|
+
const descriptor = fs72.openSync(
|
|
76715
|
+
temporaryPath,
|
|
76716
|
+
fs72.constants.O_WRONLY | fs72.constants.O_CREAT | fs72.constants.O_EXCL,
|
|
76717
|
+
384
|
|
76718
|
+
);
|
|
76719
|
+
temporaryCreated = true;
|
|
76720
|
+
try {
|
|
76721
|
+
writeAll(descriptor, Buffer.from(artifact.canonicalBytes, "utf8"));
|
|
76722
|
+
fs72.fsyncSync(descriptor);
|
|
76723
|
+
} finally {
|
|
76724
|
+
fs72.closeSync(descriptor);
|
|
76725
|
+
}
|
|
76726
|
+
try {
|
|
76727
|
+
fs72.linkSync(temporaryPath, artifactPath);
|
|
76728
|
+
} catch (error) {
|
|
76729
|
+
if (!pathEntryExists2(artifactPath)) throw error;
|
|
76730
|
+
return __privateMethod(this, _PlanArtifactRegistrationService_instances, verifyExisting_fn).call(this, artifact, reference, false);
|
|
76731
|
+
}
|
|
76732
|
+
try {
|
|
76733
|
+
fs72.unlinkSync(temporaryPath);
|
|
76734
|
+
} catch (error) {
|
|
76735
|
+
if (error.code !== "ENOENT") throw error;
|
|
76736
|
+
}
|
|
76737
|
+
temporaryCreated = false;
|
|
76738
|
+
flushDirectoryWhenSupported(storeDirectory);
|
|
76739
|
+
assertStoreDirectory(storeDirectory);
|
|
76740
|
+
return __privateMethod(this, _PlanArtifactRegistrationService_instances, verifyExisting_fn).call(this, artifact, reference, true);
|
|
76741
|
+
} catch (error) {
|
|
76742
|
+
if (error instanceof PlanArtifactRegistrationError) throw error;
|
|
76743
|
+
throw new PlanArtifactRegistrationError(
|
|
76744
|
+
"PLAN_REGISTRATION_UNSAFE",
|
|
76745
|
+
"The plan artifact could not be published without replacing existing bytes"
|
|
76746
|
+
);
|
|
76747
|
+
} finally {
|
|
76748
|
+
if (temporaryCreated) {
|
|
76749
|
+
try {
|
|
76750
|
+
fs72.unlinkSync(temporaryPath);
|
|
76751
|
+
} catch {
|
|
76752
|
+
}
|
|
76753
|
+
}
|
|
76754
|
+
}
|
|
76755
|
+
}
|
|
76756
|
+
};
|
|
76757
|
+
_PlanArtifactRegistrationService_instances = new WeakSet();
|
|
76758
|
+
verifyExisting_fn = function(artifact, reference, created) {
|
|
76759
|
+
try {
|
|
76760
|
+
waitForConcurrentPublisher(reference.retrieval.reference);
|
|
76761
|
+
const resolved = new PlanArtifactService().resolve({ planReference: reference });
|
|
76762
|
+
if (resolved.artifact.canonicalBytes !== artifact.canonicalBytes) {
|
|
76763
|
+
throw new PlanArtifactRegistrationError(
|
|
76764
|
+
"PLAN_REGISTRATION_CONFLICT",
|
|
76765
|
+
"The content-addressed plan object conflicts with the requested artifact"
|
|
76766
|
+
);
|
|
76767
|
+
}
|
|
76768
|
+
return {
|
|
76769
|
+
artifact: resolved.artifact,
|
|
76770
|
+
reference,
|
|
76771
|
+
created,
|
|
76772
|
+
storage: { assurance: "service-no-replace-verified", authority: "unverified" }
|
|
76773
|
+
};
|
|
76774
|
+
} catch (error) {
|
|
76775
|
+
if (error instanceof PlanArtifactRegistrationError) throw error;
|
|
76776
|
+
if (error instanceof PlanArtifactServiceError && error.code === "PLAN_REFERENCE_MISMATCH") {
|
|
76777
|
+
throw new PlanArtifactRegistrationError(
|
|
76778
|
+
"PLAN_REGISTRATION_CONFLICT",
|
|
76779
|
+
"The content-addressed plan object conflicts with the requested artifact"
|
|
76780
|
+
);
|
|
76781
|
+
}
|
|
76782
|
+
throw new PlanArtifactRegistrationError(
|
|
76783
|
+
"PLAN_REGISTRATION_VERIFY_FAILED",
|
|
76784
|
+
"The persisted plan artifact could not be reread and verified"
|
|
76785
|
+
);
|
|
76786
|
+
}
|
|
76787
|
+
};
|
|
76788
|
+
function createRegisteredReference(artifact, artifactPath, scope) {
|
|
76789
|
+
if (Buffer.byteLength(artifactPath, "utf8") > 4096) {
|
|
76790
|
+
throw new PlanArtifactRegistrationError(
|
|
76791
|
+
"PLAN_REGISTRATION_INVALID",
|
|
76792
|
+
"The artifact store cannot produce a bounded retrieval reference"
|
|
76793
|
+
);
|
|
76794
|
+
}
|
|
76795
|
+
const reference = {
|
|
76796
|
+
contract: PLAN_ARTIFACT_REFERENCE_CONTRACT,
|
|
76797
|
+
artifact: artifact.identity,
|
|
76798
|
+
expectedDigest: artifact.identity.digest,
|
|
76799
|
+
expectedCanonicalByteLength: artifact.identity.canonicalByteLength,
|
|
76800
|
+
retrieval: { kind: "registered", reference: artifactPath },
|
|
76801
|
+
...scope ? { scope } : {}
|
|
76802
|
+
};
|
|
76803
|
+
const parsed = PlanArtifactReference_v1Schema.safeParse(reference);
|
|
76804
|
+
if (!parsed.success) {
|
|
76805
|
+
throw new PlanArtifactRegistrationError(
|
|
76806
|
+
"PLAN_REGISTRATION_INVALID",
|
|
76807
|
+
"The registered artifact reference does not satisfy the bounded transport contract"
|
|
76808
|
+
);
|
|
76809
|
+
}
|
|
76810
|
+
return parsed.data;
|
|
76811
|
+
}
|
|
76812
|
+
function parseScope2(scope) {
|
|
76813
|
+
if (scope === void 0) return void 0;
|
|
76814
|
+
const parsed = PlanArtifactScope_v1Schema.safeParse(scope);
|
|
76815
|
+
if (!parsed.success) {
|
|
76816
|
+
throw new PlanArtifactRegistrationError(
|
|
76817
|
+
"PLAN_REGISTRATION_INVALID",
|
|
76818
|
+
"The plan scope does not satisfy the bounded transport contract"
|
|
76819
|
+
);
|
|
76820
|
+
}
|
|
76821
|
+
return parsed.data;
|
|
76822
|
+
}
|
|
76823
|
+
function validateStoreReference(reference) {
|
|
76824
|
+
if (reference.length === 0 || reference.includes("\0") || Buffer.byteLength(reference, "utf8") > 4096) {
|
|
76825
|
+
throw new PlanArtifactRegistrationError(
|
|
76826
|
+
"PLAN_REGISTRATION_INVALID",
|
|
76827
|
+
"The artifact store reference is invalid or exceeds its bound"
|
|
76828
|
+
);
|
|
76829
|
+
}
|
|
76830
|
+
return path80.resolve(reference);
|
|
76831
|
+
}
|
|
76832
|
+
function prepareControlledStore(storeDirectory) {
|
|
76833
|
+
const root = path80.parse(storeDirectory).root;
|
|
76834
|
+
const segments = path80.relative(root, storeDirectory).split(path80.sep).filter(Boolean);
|
|
76835
|
+
let current = root;
|
|
76836
|
+
for (const segment of segments) {
|
|
76837
|
+
current = path80.join(current, segment);
|
|
76838
|
+
try {
|
|
76839
|
+
const stats = fs72.lstatSync(current);
|
|
76840
|
+
if (stats.isSymbolicLink() || !stats.isDirectory()) {
|
|
76841
|
+
throw new PlanArtifactRegistrationError(
|
|
76842
|
+
"PLAN_REGISTRATION_UNSAFE",
|
|
76843
|
+
"The artifact store contains an unsafe filesystem object"
|
|
76844
|
+
);
|
|
76845
|
+
}
|
|
76846
|
+
} catch (error) {
|
|
76847
|
+
if (error instanceof PlanArtifactRegistrationError) throw error;
|
|
76848
|
+
if (error.code !== "ENOENT") {
|
|
76849
|
+
throw new PlanArtifactRegistrationError(
|
|
76850
|
+
"PLAN_REGISTRATION_UNSAFE",
|
|
76851
|
+
"The artifact store identity is unavailable"
|
|
76852
|
+
);
|
|
76853
|
+
}
|
|
76854
|
+
try {
|
|
76855
|
+
fs72.mkdirSync(current, { mode: 448 });
|
|
76856
|
+
} catch (mkdirError) {
|
|
76857
|
+
if (mkdirError.code !== "EEXIST") {
|
|
76858
|
+
throw new PlanArtifactRegistrationError(
|
|
76859
|
+
"PLAN_REGISTRATION_UNSAFE",
|
|
76860
|
+
"The artifact store could not be prepared"
|
|
76861
|
+
);
|
|
76862
|
+
}
|
|
76863
|
+
}
|
|
76864
|
+
const created = fs72.lstatSync(current);
|
|
76865
|
+
if (created.isSymbolicLink() || !created.isDirectory()) {
|
|
76866
|
+
throw new PlanArtifactRegistrationError(
|
|
76867
|
+
"PLAN_REGISTRATION_UNSAFE",
|
|
76868
|
+
"The artifact store contains an unsafe filesystem object"
|
|
76869
|
+
);
|
|
76870
|
+
}
|
|
76871
|
+
}
|
|
76872
|
+
}
|
|
76873
|
+
assertStoreDirectory(storeDirectory);
|
|
76874
|
+
}
|
|
76875
|
+
function assertStoreDirectory(storeDirectory) {
|
|
76876
|
+
const root = path80.parse(storeDirectory).root;
|
|
76877
|
+
const segments = path80.relative(root, storeDirectory).split(path80.sep).filter(Boolean);
|
|
76878
|
+
let current = root;
|
|
76879
|
+
for (const segment of segments) {
|
|
76880
|
+
current = path80.join(current, segment);
|
|
76881
|
+
let stats;
|
|
76882
|
+
try {
|
|
76883
|
+
stats = fs72.lstatSync(current);
|
|
76884
|
+
} catch {
|
|
76885
|
+
throw new PlanArtifactRegistrationError(
|
|
76886
|
+
"PLAN_REGISTRATION_UNSAFE",
|
|
76887
|
+
"The artifact store identity is unavailable"
|
|
76888
|
+
);
|
|
76889
|
+
}
|
|
76890
|
+
if (stats.isSymbolicLink() || !stats.isDirectory()) {
|
|
76891
|
+
throw new PlanArtifactRegistrationError(
|
|
76892
|
+
"PLAN_REGISTRATION_UNSAFE",
|
|
76893
|
+
"The artifact store contains an unsafe filesystem object"
|
|
76894
|
+
);
|
|
76895
|
+
}
|
|
76896
|
+
}
|
|
76897
|
+
}
|
|
76898
|
+
function writeAll(descriptor, bytes) {
|
|
76899
|
+
let offset = 0;
|
|
76900
|
+
while (offset < bytes.length) {
|
|
76901
|
+
offset += fs72.writeSync(descriptor, bytes, offset, bytes.length - offset, null);
|
|
76902
|
+
}
|
|
76903
|
+
}
|
|
76904
|
+
function flushDirectoryWhenSupported(directory) {
|
|
76905
|
+
let descriptor;
|
|
76906
|
+
try {
|
|
76907
|
+
descriptor = fs72.openSync(directory, fs72.constants.O_RDONLY);
|
|
76908
|
+
fs72.fsyncSync(descriptor);
|
|
76909
|
+
} catch (error) {
|
|
76910
|
+
const code = error?.code;
|
|
76911
|
+
if (process.platform !== "win32" || code !== "EISDIR" && code !== "EPERM") throw error;
|
|
76912
|
+
} finally {
|
|
76913
|
+
if (descriptor !== void 0) fs72.closeSync(descriptor);
|
|
76914
|
+
}
|
|
76915
|
+
}
|
|
76916
|
+
function pathEntryExists2(filePath) {
|
|
76917
|
+
try {
|
|
76918
|
+
fs72.lstatSync(filePath);
|
|
76919
|
+
return true;
|
|
76920
|
+
} catch (error) {
|
|
76921
|
+
const code = error?.code;
|
|
76922
|
+
return code !== "ENOENT" && code !== "ENOTDIR";
|
|
76923
|
+
}
|
|
76924
|
+
}
|
|
76925
|
+
function waitForConcurrentPublisher(artifactPath) {
|
|
76926
|
+
const deadline = Date.now() + 500;
|
|
76927
|
+
const signal = new Int32Array(new SharedArrayBuffer(4));
|
|
76928
|
+
while (Date.now() < deadline) {
|
|
76929
|
+
let stats;
|
|
76930
|
+
try {
|
|
76931
|
+
stats = fs72.lstatSync(artifactPath);
|
|
76932
|
+
} catch {
|
|
76933
|
+
return;
|
|
76934
|
+
}
|
|
76935
|
+
if (!stats.isFile() || stats.isSymbolicLink() || stats.nlink <= 1) return;
|
|
76936
|
+
Atomics.wait(signal, 0, 0, 10);
|
|
76289
76937
|
}
|
|
76290
76938
|
}
|
|
76291
76939
|
|
|
@@ -77218,7 +77866,7 @@ program.command("view").description("Interactive plan viewer with navigation and
|
|
|
77218
77866
|
}
|
|
77219
77867
|
try {
|
|
77220
77868
|
const { InteractivePlanViewer: InteractivePlanViewer2 } = await Promise.resolve().then(() => (init_planViewer(), planViewer_exports));
|
|
77221
|
-
const planContent =
|
|
77869
|
+
const planContent = fs73.readFileSync(planFile, "utf-8");
|
|
77222
77870
|
const plan = loadPlan(planContent);
|
|
77223
77871
|
const viewer = new InteractivePlanViewer2(plan, {
|
|
77224
77872
|
filter: opts.filter,
|
|
@@ -77260,7 +77908,7 @@ program.command("deliverables:list").description("List all autopilot deliverable
|
|
|
77260
77908
|
});
|
|
77261
77909
|
const latest = manager.getLatestPath();
|
|
77262
77910
|
if (latest) {
|
|
77263
|
-
console.log(`\u{1F4CD} Latest: ${
|
|
77911
|
+
console.log(`\u{1F4CD} Latest: ${path81.basename(latest)}`);
|
|
77264
77912
|
}
|
|
77265
77913
|
}
|
|
77266
77914
|
} catch (error) {
|
|
@@ -77334,8 +77982,8 @@ program.command("deliverables:cleanup").description("Clean up old deliverables b
|
|
|
77334
77982
|
console.log(`Freed space: ${(result.freedSpace / 1024).toFixed(2)} KB`);
|
|
77335
77983
|
if (result.removed.length > 0) {
|
|
77336
77984
|
console.log("\nRemoved:");
|
|
77337
|
-
result.removed.forEach((
|
|
77338
|
-
console.log(` - ${
|
|
77985
|
+
result.removed.forEach((path82) => {
|
|
77986
|
+
console.log(` - ${path82}`);
|
|
77339
77987
|
});
|
|
77340
77988
|
}
|
|
77341
77989
|
}
|
|
@@ -77406,8 +78054,8 @@ var isDirectExec = (() => {
|
|
|
77406
78054
|
try {
|
|
77407
78055
|
if (typeof import_meta === "undefined") return false;
|
|
77408
78056
|
if (!process.argv[1] || !__lexrunnerImportMetaUrl) return false;
|
|
77409
|
-
const invokedPath =
|
|
77410
|
-
const modulePath =
|
|
78057
|
+
const invokedPath = fs73.realpathSync((0, import_node_path40.resolve)(process.argv[1]));
|
|
78058
|
+
const modulePath = fs73.realpathSync((0, import_node_url7.fileURLToPath)(__lexrunnerImportMetaUrl));
|
|
77411
78059
|
return invokedPath === modulePath;
|
|
77412
78060
|
} catch {
|
|
77413
78061
|
return false;
|
|
@@ -77478,11 +78126,17 @@ if (isDirectExec) {
|
|
|
77478
78126
|
ConfigurationQueryService,
|
|
77479
78127
|
ControllerLease_v1,
|
|
77480
78128
|
DiscoveryQueryService,
|
|
78129
|
+
EXECUTION_PLAN_ARTIFACT_CONTRACT,
|
|
78130
|
+
EXECUTION_PLAN_CANONICALIZATION_PROFILE,
|
|
78131
|
+
EXECUTION_PLAN_HASH_DOMAIN,
|
|
78132
|
+
EXECUTION_PLAN_HASH_PROFILE,
|
|
77481
78133
|
EngineVerificationCheckSource_v2,
|
|
77482
78134
|
EngineVerificationDeterminism_v2,
|
|
77483
78135
|
EngineVerificationTrustGapReason_v2,
|
|
77484
78136
|
ExecutionEnvelope_v1,
|
|
77485
78137
|
ExecutionEnvironmentOS,
|
|
78138
|
+
ExecutionPlanArtifactIdentity_v1Schema,
|
|
78139
|
+
ExecutionPlanArtifact_v1Schema,
|
|
77486
78140
|
ExecutionState,
|
|
77487
78141
|
ExternalAwaitOutcome_v1,
|
|
77488
78142
|
ExternalAwaitableDescriptor_v1,
|
|
@@ -77538,6 +78192,11 @@ if (isDirectExec) {
|
|
|
77538
78192
|
NativeWslProjectionSelection_v1,
|
|
77539
78193
|
NativeWslProjectionStatusRequestJsonSchema,
|
|
77540
78194
|
NativeWslSourceObservation_v1,
|
|
78195
|
+
PLAN_ARTIFACT_REFERENCE_CONTRACT,
|
|
78196
|
+
PlanArtifactReference_v1Schema,
|
|
78197
|
+
PlanArtifactRegistrationError,
|
|
78198
|
+
PlanArtifactRegistrationService,
|
|
78199
|
+
PlanArtifactScope_v1Schema,
|
|
77541
78200
|
PlanArtifactService,
|
|
77542
78201
|
PlanArtifactServiceError,
|
|
77543
78202
|
PlanCreationService,
|
|
@@ -77567,6 +78226,7 @@ if (isDirectExec) {
|
|
|
77567
78226
|
completionForAttemptAwaitable,
|
|
77568
78227
|
computeAgentEngineVerificationV2Hash,
|
|
77569
78228
|
computeAgentTaskPacketHash,
|
|
78229
|
+
computeExecutionPlanArtifactDigest,
|
|
77570
78230
|
computeFanInEvidenceSetHash,
|
|
77571
78231
|
computeMergeOrder,
|
|
77572
78232
|
containsAttemptAwaitableCredentialValue,
|