@moldea.ai/core 6.0.0 → 7.0.1
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/README.md +13 -19
- package/dist/analysis-worker.js +14 -24
- package/dist/analysis-worker.js.map +1 -1
- package/dist/binding-coverage/index.d.ts +26 -0
- package/dist/binding-coverage/index.d.ts.map +1 -0
- package/dist/chunks/{core-DchheNDz.js → core-Cdeiu6xG.js} +743 -2684
- package/dist/chunks/core-Cdeiu6xG.js.map +1 -0
- package/dist/chunks/{errors-BQI1DEqf.js → errors-BE4DS3Ak.js} +27 -38
- package/dist/chunks/errors-BE4DS3Ak.js.map +1 -0
- package/dist/chunks/{exceptions-lzD3buFw.js → exceptions-IXsorE8t.js} +4 -16
- package/dist/chunks/exceptions-IXsorE8t.js.map +1 -0
- package/dist/chunks/{lifecycle-4EkWgEHm.js → lifecycle-D_RvxhDC.js} +2 -2
- package/dist/chunks/{lifecycle-4EkWgEHm.js.map → lifecycle-D_RvxhDC.js.map} +1 -1
- package/dist/chunks/{options-CxCT3dZU.js → options-5x9gu2Qb.js} +139 -152
- package/dist/chunks/options-5x9gu2Qb.js.map +1 -0
- package/dist/chunks/{repository-rpc-BWi6X1la.js → repository-rpc-B_y0Kspf.js} +2 -2
- package/dist/chunks/{repository-rpc-BWi6X1la.js.map → repository-rpc-B_y0Kspf.js.map} +1 -1
- package/dist/chunks/scope-AGMcHUE_.js +1827 -0
- package/dist/chunks/scope-AGMcHUE_.js.map +1 -0
- package/dist/chunks/syntax-CVvExx4R.js +137 -0
- package/dist/chunks/syntax-CVvExx4R.js.map +1 -0
- package/dist/constants/index.d.ts +2 -1
- package/dist/constants/index.d.ts.map +1 -1
- package/dist/contracts/index.d.ts +15 -15
- package/dist/contracts/index.d.ts.map +1 -1
- package/dist/core/index.d.ts +1 -4
- package/dist/core/index.d.ts.map +1 -1
- package/dist/decision/index.d.ts +1 -1
- package/dist/decision-graph/index.d.ts +9 -7
- package/dist/decision-graph/index.d.ts.map +1 -1
- package/dist/diagnostic-utilities/index.d.ts +6 -2
- package/dist/diagnostic-utilities/index.d.ts.map +1 -1
- package/dist/diagnostics/index.d.ts +21 -33
- package/dist/diagnostics/index.d.ts.map +1 -1
- package/dist/exceptions/index.d.ts +4 -8
- package/dist/exceptions/index.d.ts.map +1 -1
- package/dist/export-inventory/index.d.ts +3 -0
- package/dist/export-inventory/index.d.ts.map +1 -0
- package/dist/export-inventory/inventory.d.ts +22 -0
- package/dist/export-inventory/inventory.d.ts.map +1 -0
- package/dist/export-inventory/syntax.d.ts +4 -0
- package/dist/export-inventory/syntax.d.ts.map +1 -0
- package/dist/export-inventory/types.d.ts +9 -0
- package/dist/export-inventory/types.d.ts.map +1 -0
- package/dist/format/index.d.ts +8 -0
- package/dist/format/index.d.ts.map +1 -1
- package/dist/impact-pattern-validation/index.d.ts +2 -0
- package/dist/impact-pattern-validation/index.d.ts.map +1 -0
- package/dist/impact-pattern-validation/inspection.d.ts +24 -0
- package/dist/impact-pattern-validation/inspection.d.ts.map +1 -0
- package/dist/index.d.ts +6 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -4
- package/dist/integration-validation/index.d.ts +4 -0
- package/dist/integration-validation/index.d.ts.map +1 -0
- package/dist/integration-validation/inspection.d.ts +18 -0
- package/dist/integration-validation/inspection.d.ts.map +1 -0
- package/dist/integration-validation/parser.d.ts +9 -0
- package/dist/integration-validation/parser.d.ts.map +1 -0
- package/dist/integration-validation/types.d.ts +13 -0
- package/dist/integration-validation/types.d.ts.map +1 -0
- package/dist/manifest/index.d.ts +2 -4
- package/dist/manifest/index.d.ts.map +1 -1
- package/dist/manifest-validation/index.d.ts +7 -10
- package/dist/manifest-validation/index.d.ts.map +1 -1
- package/dist/node/index.d.ts +1 -1
- package/dist/node/index.d.ts.map +1 -1
- package/dist/node-inspection/client.d.ts +0 -4
- package/dist/node-inspection/client.d.ts.map +1 -1
- package/dist/node-inspection/errors.d.ts.map +1 -1
- package/dist/node-inspection/protocol.d.ts.map +1 -1
- package/dist/node-inspection/types.d.ts +4 -8
- package/dist/node-inspection/types.d.ts.map +1 -1
- package/dist/node-runner.js +4 -4
- package/dist/node-runner.js.map +1 -1
- package/dist/node.js +23 -13
- package/dist/node.js.map +1 -1
- package/dist/options/index.d.ts +2 -14
- package/dist/options/index.d.ts.map +1 -1
- package/dist/project-inspection/index.d.ts +1 -2
- package/dist/project-inspection/index.d.ts.map +1 -1
- package/dist/project-validation/index.d.ts +2 -4
- package/dist/project-validation/index.d.ts.map +1 -1
- package/dist/repository-inspection-session/index.d.ts +2 -4
- package/dist/repository-inspection-session/index.d.ts.map +1 -1
- package/dist/repository-reference-validation/index.d.ts +12 -6
- package/dist/repository-reference-validation/index.d.ts.map +1 -1
- package/dist/retained-memory/index.d.ts +18 -0
- package/dist/retained-memory/index.d.ts.map +1 -0
- package/dist/scope/index.d.ts +3 -0
- package/dist/scope/index.d.ts.map +1 -0
- package/dist/scope/scope.d.ts +13 -0
- package/dist/scope/scope.d.ts.map +1 -0
- package/dist/scope-matching/index.d.ts +2 -1
- package/dist/scope-matching/index.d.ts.map +1 -1
- package/dist/scope-matching/matching.d.ts +11 -2
- package/dist/scope-matching/matching.d.ts.map +1 -1
- package/dist/scope-matching/patterns.d.ts +4 -0
- package/dist/scope-matching/patterns.d.ts.map +1 -0
- package/dist/scope.js +17 -0
- package/dist/scope.js.map +1 -0
- package/dist/universal-project-inspection/index.d.ts +13 -11
- package/dist/universal-project-inspection/index.d.ts.map +1 -1
- package/dist/warning-acceptance/acceptance.d.ts +11 -0
- package/dist/warning-acceptance/acceptance.d.ts.map +1 -0
- package/dist/warning-acceptance/index.d.ts +2 -0
- package/dist/warning-acceptance/index.d.ts.map +1 -0
- package/package.json +6 -6
- package/dist/adapter/index.d.ts +0 -143
- package/dist/adapter/index.d.ts.map +0 -1
- package/dist/adapter-availability/index.d.ts +0 -15
- package/dist/adapter-availability/index.d.ts.map +0 -1
- package/dist/adapter-execution/index.d.ts +0 -34
- package/dist/adapter-execution/index.d.ts.map +0 -1
- package/dist/adapter-repository/index.d.ts +0 -27
- package/dist/adapter-repository/index.d.ts.map +0 -1
- package/dist/adapter-result-collection/collection.d.ts +0 -13
- package/dist/adapter-result-collection/collection.d.ts.map +0 -1
- package/dist/adapter-result-collection/index.d.ts +0 -3
- package/dist/adapter-result-collection/index.d.ts.map +0 -1
- package/dist/adapter-result-collection/types.d.ts +0 -31
- package/dist/adapter-result-collection/types.d.ts.map +0 -1
- package/dist/adapter-retained-memory/index.d.ts +0 -8
- package/dist/adapter-retained-memory/index.d.ts.map +0 -1
- package/dist/adapter-validation/index.d.ts +0 -43
- package/dist/adapter-validation/index.d.ts.map +0 -1
- package/dist/adapter.js +0 -116
- package/dist/adapter.js.map +0 -1
- package/dist/chunks/collection-CvbjjLf2.js +0 -73
- package/dist/chunks/collection-CvbjjLf2.js.map +0 -1
- package/dist/chunks/core-DchheNDz.js.map +0 -1
- package/dist/chunks/errors-BQI1DEqf.js.map +0 -1
- package/dist/chunks/exceptions-lzD3buFw.js.map +0 -1
- package/dist/chunks/options-CxCT3dZU.js.map +0 -1
- package/dist/custom-runtime-inspection/index.d.ts +0 -2
- package/dist/custom-runtime-inspection/index.d.ts.map +0 -1
- package/dist/custom-runtime-inspection/inspection.d.ts +0 -11
- package/dist/custom-runtime-inspection/inspection.d.ts.map +0 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { a as isCoreOperationErrorCode, i as isCoreOperation, n as CoreOperationException, r as isCoreConfigurationErrorCode, t as CoreConfigurationException } from "./exceptions-
|
|
1
|
+
import { a as isCoreOperationErrorCode, i as isCoreOperation, n as CoreOperationException, r as isCoreConfigurationErrorCode, t as CoreConfigurationException } from "./exceptions-IXsorE8t.js";
|
|
2
2
|
import { RepositoryPathException, RepositorySourceException, isRepositoryPath } from "@moldea.ai/repository";
|
|
3
3
|
import { Buffer } from "node:buffer";
|
|
4
4
|
//#region src/node-inspection/constants.ts
|
|
@@ -39,19 +39,10 @@ var isInteger = (input) => typeof input === "number" && Number.isSafeInteger(inp
|
|
|
39
39
|
var hasKeys = (input, required, optional = []) => required.every((key) => Object.hasOwn(input, key)) && Object.keys(input).every((key) => required.includes(key) || optional.includes(key));
|
|
40
40
|
var isSnapshot = (input) => isRecord(input) && hasKeys(input, ["id", "sourceKind"]) && typeof input["id"] === "string" && input["id"].length > 0 && typeof input["sourceKind"] === "string" && input["sourceKind"].length > 0;
|
|
41
41
|
var isOptionalString = (input, key) => !Object.hasOwn(input, key) || typeof input[key] === "string";
|
|
42
|
-
var isRegistryUrl = (input) => {
|
|
43
|
-
if (typeof input !== "string") return false;
|
|
44
|
-
try {
|
|
45
|
-
const url = new URL(input);
|
|
46
|
-
return url.protocol === "file:" && url.search === "" && url.hash === "";
|
|
47
|
-
} catch {
|
|
48
|
-
return false;
|
|
49
|
-
}
|
|
50
|
-
};
|
|
51
42
|
var isPageInput = (input) => isRecord(input) && hasKeys(input, ["maxItems", "view"], ["cursor"]) && isInteger(input["maxItems"]) && input["maxItems"] > 0 && [
|
|
52
43
|
"all",
|
|
53
44
|
"diagnostics",
|
|
54
|
-
"
|
|
45
|
+
"coverage",
|
|
55
46
|
"metadata"
|
|
56
47
|
].includes(String(input["view"])) && isOptionalString(input, "cursor");
|
|
57
48
|
var isLimits = (input) => isRecord(input) && hasKeys(input, [
|
|
@@ -61,7 +52,8 @@ var isLimits = (input) => isRecord(input) && hasKeys(input, [
|
|
|
61
52
|
"maxManifestBytes",
|
|
62
53
|
"maxRetainedBytes",
|
|
63
54
|
"maxDiagnostics",
|
|
64
|
-
"
|
|
55
|
+
"maxCoverage",
|
|
56
|
+
"maxAcceptedWarnings"
|
|
65
57
|
]) && Object.values(input).every((limit) => isInteger(limit) && limit > 0);
|
|
66
58
|
var isCounts = (input) => isRecord(input) && hasKeys(input, [
|
|
67
59
|
"agents",
|
|
@@ -73,7 +65,8 @@ var isCounts = (input) => isRecord(input) && hasKeys(input, [
|
|
|
73
65
|
"diagnostics",
|
|
74
66
|
"errors",
|
|
75
67
|
"warnings",
|
|
76
|
-
"
|
|
68
|
+
"acceptedWarnings",
|
|
69
|
+
"coverage",
|
|
77
70
|
"metadata"
|
|
78
71
|
]) && Object.values(input).every(isInteger);
|
|
79
72
|
var isSummary = (input) => input === null || isRecord(input) && hasKeys(input, [
|
|
@@ -90,15 +83,16 @@ var isSummary = (input) => input === null || isRecord(input) && hasKeys(input, [
|
|
|
90
83
|
"runtimes",
|
|
91
84
|
"unresolved"
|
|
92
85
|
]) && Object.values(input["counts"]).every(isInteger) && typeof input["manifestDigest"] === "string" && typeof input["projectDigest"] === "string" && isRepositoryPath(input["manifestPath"]) && isRepositoryPath(input["projectPath"]);
|
|
93
|
-
var isInspectionBase = (input) => isCounts(input["counts"]) &&
|
|
94
|
-
"
|
|
95
|
-
"
|
|
96
|
-
"
|
|
97
|
-
|
|
86
|
+
var isInspectionBase = (input) => isCounts(input["counts"]) && isRecord(input["coverageCounts"]) && hasKeys(input["coverageCounts"], [
|
|
87
|
+
"bindings",
|
|
88
|
+
"exportsPassed",
|
|
89
|
+
"exportsFailed",
|
|
90
|
+
"exportsNotChecked"
|
|
91
|
+
]) && Object.values(input["coverageCounts"]).every(isInteger) && typeof input["valid"] === "boolean" && (input["formatVersion"] === null || input["formatVersion"] === 1) && typeof input["inspectionDigest"] === "string" && isSnapshot(input["source"]) && isSummary(input["summary"]);
|
|
98
92
|
var INSPECTION_KEYS = [
|
|
99
93
|
"counts",
|
|
94
|
+
"coverageCounts",
|
|
100
95
|
"valid",
|
|
101
|
-
"runtimeInspection",
|
|
102
96
|
"formatVersion",
|
|
103
97
|
"inspectionDigest",
|
|
104
98
|
"source",
|
|
@@ -107,7 +101,6 @@ var INSPECTION_KEYS = [
|
|
|
107
101
|
var isMetadata = (input) => isRecord(input) && hasKeys(input, [
|
|
108
102
|
...INSPECTION_KEYS,
|
|
109
103
|
"resourceUsage",
|
|
110
|
-
"adapters",
|
|
111
104
|
"maxAnalysisHeapBytes"
|
|
112
105
|
]) && isInspectionBase(input) && isInteger(input["maxAnalysisHeapBytes"]) && input["maxAnalysisHeapBytes"] > 0 && isRecord(input["resourceUsage"]) && hasKeys(input["resourceUsage"], [
|
|
113
106
|
"canonicalBytes",
|
|
@@ -115,7 +108,7 @@ var isMetadata = (input) => isRecord(input) && hasKeys(input, [
|
|
|
115
108
|
"preparedBytes",
|
|
116
109
|
"retainedBytes",
|
|
117
110
|
"totalBytesRead"
|
|
118
|
-
]) && Object.values(input["resourceUsage"]).every(isInteger)
|
|
111
|
+
]) && Object.values(input["resourceUsage"]).every(isInteger);
|
|
119
112
|
var isPage = (input) => isRecord(input) && hasKeys(input, [
|
|
120
113
|
...INSPECTION_KEYS,
|
|
121
114
|
"page",
|
|
@@ -123,7 +116,7 @@ var isPage = (input) => isRecord(input) && hasKeys(input, [
|
|
|
123
116
|
]) && isInspectionBase(input) && [
|
|
124
117
|
"all",
|
|
125
118
|
"diagnostics",
|
|
126
|
-
"
|
|
119
|
+
"coverage",
|
|
127
120
|
"metadata"
|
|
128
121
|
].includes(String(input["view"])) && isRecord(input["page"]) && hasKeys(input["page"], [
|
|
129
122
|
"isComplete",
|
|
@@ -133,7 +126,7 @@ var isPage = (input) => isRecord(input) && hasKeys(input, [
|
|
|
133
126
|
]) && typeof input["page"]["isComplete"] === "boolean" && isInteger(input["page"]["totalItems"]) && (input["page"]["nextCursor"] === null || typeof input["page"]["nextCursor"] === "string") && Array.isArray(input["page"]["records"]) && input["page"]["records"].every((record) => isRecord(record) && hasKeys(record, ["item", "nextCursor"]) && (record["nextCursor"] === null || typeof record["nextCursor"] === "string") && isRecord(record["item"]) && typeof record["item"]["kind"] === "string" && [
|
|
134
127
|
"agent",
|
|
135
128
|
"diagnostic",
|
|
136
|
-
"
|
|
129
|
+
"coverage",
|
|
137
130
|
"metadata"
|
|
138
131
|
].includes(record["item"]["kind"]) && hasKeys(record["item"], ["kind", record["item"]["kind"]]) && isRecord(record["item"][record["item"]["kind"]]));
|
|
139
132
|
var isRequest = (input) => {
|
|
@@ -157,11 +150,10 @@ var isMessage = (input) => {
|
|
|
157
150
|
switch (input["kind"]) {
|
|
158
151
|
case "start": return hasKeys(input, [
|
|
159
152
|
...keys,
|
|
160
|
-
"registryUrl",
|
|
161
153
|
"snapshot",
|
|
162
154
|
"limits",
|
|
163
155
|
"deadline"
|
|
164
|
-
]) &&
|
|
156
|
+
]) && isSnapshot(input["snapshot"]) && isLimits(input["limits"]) && isInteger(input["deadline"]);
|
|
165
157
|
case "ready": return hasKeys(input, [...keys, "maxAnalysisHeapBytes"]) && isInteger(input["maxAnalysisHeapBytes"]) && input["maxAnalysisHeapBytes"] > 0;
|
|
166
158
|
case "run":
|
|
167
159
|
case "dispose": return hasKeys(input, keys);
|
|
@@ -186,7 +178,12 @@ var isMessage = (input) => {
|
|
|
186
178
|
"requestId",
|
|
187
179
|
"result"
|
|
188
180
|
]) && isInteger(input["requestId"]);
|
|
189
|
-
case "failure":
|
|
181
|
+
case "reader-failure":
|
|
182
|
+
case "failure": return hasKeys(input, [
|
|
183
|
+
...keys,
|
|
184
|
+
"failure",
|
|
185
|
+
...input["kind"] === "reader-failure" ? ["requestId"] : []
|
|
186
|
+
]) && (input["kind"] !== "reader-failure" || isInteger(input["requestId"])) && isRecord(input["failure"]) && hasKeys(input["failure"], ["family", "options"]) && [
|
|
190
187
|
"configuration",
|
|
191
188
|
"operation",
|
|
192
189
|
"repository",
|
|
@@ -278,8 +275,7 @@ var serializeInspectionFailure = (error) => {
|
|
|
278
275
|
family: "configuration",
|
|
279
276
|
options: {
|
|
280
277
|
code: error.code,
|
|
281
|
-
operation: error.operation
|
|
282
|
-
...error.adapterId === null ? {} : { adapterId: error.adapterId }
|
|
278
|
+
operation: error.operation
|
|
283
279
|
}
|
|
284
280
|
};
|
|
285
281
|
if (error instanceof CoreOperationException) return {
|
|
@@ -287,7 +283,6 @@ var serializeInspectionFailure = (error) => {
|
|
|
287
283
|
options: {
|
|
288
284
|
code: error.code,
|
|
289
285
|
operation: error.operation,
|
|
290
|
-
...error.adapterId === null ? {} : { adapterId: error.adapterId },
|
|
291
286
|
...error.agentId === null ? {} : { agentId: error.agentId },
|
|
292
287
|
...error.code !== "RESOURCE_LIMIT_EXCEEDED" ? {} : {
|
|
293
288
|
limit: error.limit,
|
|
@@ -349,14 +344,9 @@ var isNumber = (input) => typeof input === "number" && Number.isSafeInteger(inpu
|
|
|
349
344
|
*/
|
|
350
345
|
var deserializeInspectionFailure = (failure) => {
|
|
351
346
|
const options = failure.options;
|
|
352
|
-
const allowed = failure.family === "configuration" ? [
|
|
353
|
-
"code",
|
|
354
|
-
"operation",
|
|
355
|
-
"adapterId"
|
|
356
|
-
] : failure.family === "operation" ? [
|
|
347
|
+
const allowed = failure.family === "configuration" ? ["code", "operation"] : failure.family === "operation" ? [
|
|
357
348
|
"code",
|
|
358
349
|
"operation",
|
|
359
|
-
"adapterId",
|
|
360
350
|
"agentId",
|
|
361
351
|
"limit",
|
|
362
352
|
"limitMaximum",
|
|
@@ -369,11 +359,10 @@ var deserializeInspectionFailure = (failure) => {
|
|
|
369
359
|
"retryable",
|
|
370
360
|
"resource"
|
|
371
361
|
] : [];
|
|
372
|
-
if (Object.keys(options).some((key) => !allowed.includes(key)) ||
|
|
362
|
+
if (Object.keys(options).some((key) => !allowed.includes(key)) || Object.hasOwn(options, "agentId") && typeof options["agentId"] !== "string") throw createInspectionProcessFailure();
|
|
373
363
|
if ((failure.family === "operation" || failure.family === "configuration") && !isCoreOperation(options["operation"])) throw createInspectionProcessFailure();
|
|
374
364
|
const scope = {
|
|
375
365
|
operation: isCoreOperation(options["operation"]) ? options["operation"] : "create-project-inspection",
|
|
376
|
-
...typeof options["adapterId"] === "string" ? { adapterId: options["adapterId"] } : {},
|
|
377
366
|
...typeof options["agentId"] === "string" ? { agentId: options["agentId"] } : {}
|
|
378
367
|
};
|
|
379
368
|
if (failure.family === "path" && Object.keys(options).length === 0) return new RepositoryPathException();
|
|
@@ -443,4 +432,4 @@ var deserializeInspectionFailure = (failure) => {
|
|
|
443
432
|
//#endregion
|
|
444
433
|
export { encodeInspectionMessage as a, NODE_INSPECTION_PROFILE as c, NODE_INSPECTION_TRANSPORT_BYTES as d, decodeInspectionMessage as i, NODE_INSPECTION_STDIO_BYTES as l, serializeInspectionFailure as n, NODE_INSPECTION_FILE_PAGE_BYTES as o, createInspectionProcessFailure as r, NODE_INSPECTION_LIFETIME_MS as s, deserializeInspectionFailure as t, NODE_INSPECTION_TERMINATION_GRACE_MS as u };
|
|
445
434
|
|
|
446
|
-
//# sourceMappingURL=errors-
|
|
435
|
+
//# sourceMappingURL=errors-BE4DS3Ak.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors-BE4DS3Ak.js","names":[],"sources":["../../src/node-inspection/constants.ts","../../src/node-inspection/protocol.ts","../../src/node-inspection/errors.ts"],"sourcesContent":["// whole-attempt lifetime and bounded bridge ownership, independent of source file size\nexport const NODE_INSPECTION_LIFETIME_MS = 120_000;\nexport const NODE_INSPECTION_TERMINATION_GRACE_MS = 1_000;\nexport const NODE_INSPECTION_MAX_REQUESTS = 4;\nexport const NODE_INSPECTION_FILE_PAGE_BYTES = 65_536;\nexport const NODE_INSPECTION_MESSAGE_BYTES = 1_048_576;\nexport const NODE_INSPECTION_STDIO_BYTES = 32_768;\n\n// two UTF-16 bytes per serialized byte, two copies at each owner, for every RPC credit\nexport const NODE_INSPECTION_TRANSPORT_BYTES =\n NODE_INSPECTION_MAX_REQUESTS * NODE_INSPECTION_MESSAGE_BYTES * 2 * 2 * 3;\n\n// fixed profile qualified in the constrained CLI and actual-worker lanes\nexport const NODE_INSPECTION_OLD_GENERATION_MIB = 512;\nexport const NODE_INSPECTION_YOUNG_GENERATION_MIB = 24;\n\n// immutable execution identity for consumers that authenticate prepared inspection state\nexport const NODE_INSPECTION_PROFILE = Object.freeze({\n lifetimeMs: NODE_INSPECTION_LIFETIME_MS,\n terminationGraceMs: NODE_INSPECTION_TERMINATION_GRACE_MS,\n maxReaderRequests: NODE_INSPECTION_MAX_REQUESTS,\n maxFilePageBytes: NODE_INSPECTION_FILE_PAGE_BYTES,\n maxMessageBytes: NODE_INSPECTION_MESSAGE_BYTES,\n maxStdioBytes: NODE_INSPECTION_STDIO_BYTES,\n transportBytes: NODE_INSPECTION_TRANSPORT_BYTES,\n oldGenerationMiB: NODE_INSPECTION_OLD_GENERATION_MIB,\n youngGenerationMiB: NODE_INSPECTION_YOUNG_GENERATION_MIB,\n});\n","import { Buffer } from 'node:buffer';\n\nimport { isRepositoryPath } from '@moldea.ai/repository';\n\nimport type { ICoreResourceLimits } from '../contracts/index.js';\nimport { CoreOperationException } from '../exceptions/index.js';\n\nimport { NODE_INSPECTION_FILE_PAGE_BYTES, NODE_INSPECTION_MESSAGE_BYTES } from './constants.js';\nimport type { INodeInspectionMessage } from './types.js';\n\n/** Creates the safe failure for an untrusted or inconsistent private protocol record. */\nexport const createInspectionProcessFailure = (cause?: unknown): CoreOperationException =>\n new CoreOperationException({\n code: 'INSPECTION_PROCESS_FAILED',\n operation: 'create-project-inspection',\n ...(cause === undefined ? {} : { cause }),\n });\n\nconst isRecord = (input: unknown): input is Record<string, unknown> =>\n input !== null && typeof input === 'object' && !Array.isArray(input);\nconst JSON_SHORT_ESCAPES = new Set([8, 9, 10, 12, 13]);\nconst isInteger = (input: unknown): input is number =>\n typeof input === 'number' && Number.isSafeInteger(input) && input >= 0;\nconst hasKeys = (\n input: Record<string, unknown>,\n required: string[],\n optional: string[] = [],\n): boolean =>\n required.every((key) => Object.hasOwn(input, key)) &&\n Object.keys(input).every((key) => required.includes(key) || optional.includes(key));\nconst isSnapshot = (input: unknown): boolean =>\n isRecord(input) &&\n hasKeys(input, ['id', 'sourceKind']) &&\n typeof input['id'] === 'string' &&\n input['id'].length > 0 &&\n typeof input['sourceKind'] === 'string' &&\n input['sourceKind'].length > 0;\nconst isOptionalString = (input: Record<string, unknown>, key: string): boolean =>\n !Object.hasOwn(input, key) || typeof input[key] === 'string';\nconst isPageInput = (input: unknown): boolean =>\n isRecord(input) &&\n hasKeys(input, ['maxItems', 'view'], ['cursor']) &&\n isInteger(input['maxItems']) &&\n input['maxItems'] > 0 &&\n ['all', 'diagnostics', 'coverage', 'metadata'].includes(String(input['view'])) &&\n isOptionalString(input, 'cursor');\nconst isLimits = (input: unknown): input is ICoreResourceLimits =>\n isRecord(input) &&\n hasKeys(input, [\n 'maxEntries',\n 'maxTotalBytesRead',\n 'maxFileBytes',\n 'maxManifestBytes',\n 'maxRetainedBytes',\n 'maxDiagnostics',\n 'maxCoverage',\n 'maxAcceptedWarnings',\n ]) &&\n Object.values(input).every((limit) => isInteger(limit) && limit > 0);\nconst isCounts = (input: unknown): boolean =>\n isRecord(input) &&\n hasKeys(input, [\n 'agents',\n 'context',\n 'decisions',\n 'mirrors',\n 'runtimes',\n 'unresolved',\n 'diagnostics',\n 'errors',\n 'warnings',\n 'acceptedWarnings',\n 'coverage',\n 'metadata',\n ]) &&\n Object.values(input).every(isInteger);\nconst isSummary = (input: unknown): boolean =>\n input === null ||\n (isRecord(input) &&\n hasKeys(input, ['counts', 'manifestDigest', 'manifestPath', 'projectDigest', 'projectPath']) &&\n isRecord(input['counts']) &&\n hasKeys(input['counts'], [\n 'agents',\n 'context',\n 'decisions',\n 'mirrors',\n 'runtimes',\n 'unresolved',\n ]) &&\n Object.values(input['counts']).every(isInteger) &&\n typeof input['manifestDigest'] === 'string' &&\n typeof input['projectDigest'] === 'string' &&\n isRepositoryPath(input['manifestPath']) &&\n isRepositoryPath(input['projectPath']));\nconst isInspectionBase = (input: Record<string, unknown>): boolean =>\n isCounts(input['counts']) &&\n isRecord(input['coverageCounts']) &&\n hasKeys(input['coverageCounts'], [\n 'bindings',\n 'exportsPassed',\n 'exportsFailed',\n 'exportsNotChecked',\n ]) &&\n Object.values(input['coverageCounts']).every(isInteger) &&\n typeof input['valid'] === 'boolean' &&\n (input['formatVersion'] === null || input['formatVersion'] === 1) &&\n typeof input['inspectionDigest'] === 'string' &&\n isSnapshot(input['source']) &&\n isSummary(input['summary']);\nconst INSPECTION_KEYS = [\n 'counts',\n 'coverageCounts',\n 'valid',\n 'formatVersion',\n 'inspectionDigest',\n 'source',\n 'summary',\n];\nconst isMetadata = (input: unknown): boolean =>\n isRecord(input) &&\n hasKeys(input, [...INSPECTION_KEYS, 'resourceUsage', 'maxAnalysisHeapBytes']) &&\n isInspectionBase(input) &&\n isInteger(input['maxAnalysisHeapBytes']) &&\n input['maxAnalysisHeapBytes'] > 0 &&\n isRecord(input['resourceUsage']) &&\n hasKeys(input['resourceUsage'], [\n 'canonicalBytes',\n 'peakRetainedBytes',\n 'preparedBytes',\n 'retainedBytes',\n 'totalBytesRead',\n ]) &&\n Object.values(input['resourceUsage']).every(isInteger);\nconst isPage = (input: unknown): boolean =>\n isRecord(input) &&\n hasKeys(input, [...INSPECTION_KEYS, 'page', 'view']) &&\n isInspectionBase(input) &&\n ['all', 'diagnostics', 'coverage', 'metadata'].includes(String(input['view'])) &&\n isRecord(input['page']) &&\n hasKeys(input['page'], ['isComplete', 'records', 'nextCursor', 'totalItems']) &&\n typeof input['page']['isComplete'] === 'boolean' &&\n isInteger(input['page']['totalItems']) &&\n (input['page']['nextCursor'] === null || typeof input['page']['nextCursor'] === 'string') &&\n Array.isArray(input['page']['records']) &&\n input['page']['records'].every(\n (record: unknown) =>\n isRecord(record) &&\n hasKeys(record, ['item', 'nextCursor']) &&\n (record['nextCursor'] === null || typeof record['nextCursor'] === 'string') &&\n isRecord(record['item']) &&\n typeof record['item']['kind'] === 'string' &&\n ['agent', 'diagnostic', 'coverage', 'metadata'].includes(record['item']['kind']) &&\n hasKeys(record['item'], ['kind', record['item']['kind']]) &&\n isRecord(record['item'][record['item']['kind']]),\n );\nconst isRequest = (input: unknown): boolean => {\n if (!isRecord(input)) return false;\n switch (input['method']) {\n case 'getEntry':\n return hasKeys(input, ['method', 'path']) && isRepositoryPath(input['path']);\n case 'listEntriesPage':\n return (\n hasKeys(input, ['method', 'maxEntries'], ['cursor', 'prefix']) &&\n isInteger(input['maxEntries']) &&\n input['maxEntries'] > 0 &&\n input['maxEntries'] <= 128 &&\n isOptionalString(input, 'cursor') &&\n (!Object.hasOwn(input, 'prefix') || isRepositoryPath(input['prefix']))\n );\n case 'readFilePage':\n return (\n hasKeys(input, ['method', 'path', 'maxBytes', 'offset']) &&\n isRepositoryPath(input['path']) &&\n isInteger(input['offset']) &&\n isInteger(input['maxBytes']) &&\n input['maxBytes'] > 0 &&\n input['maxBytes'] <= NODE_INSPECTION_FILE_PAGE_BYTES\n );\n default:\n return false;\n }\n};\n\n/** Validates closed control envelopes and their typed operation payloads on both bridges. */\nconst isMessage = (input: unknown): input is INodeInspectionMessage => {\n if (\n !isRecord(input) ||\n typeof input['attemptId'] !== 'string' ||\n !/^[a-f0-9]{32}$/.test(input['attemptId'])\n )\n return false;\n const keys = ['attemptId', 'kind'];\n switch (input['kind']) {\n case 'start':\n return (\n hasKeys(input, [...keys, 'snapshot', 'limits', 'deadline']) &&\n isSnapshot(input['snapshot']) &&\n isLimits(input['limits']) &&\n isInteger(input['deadline'])\n );\n case 'ready':\n return (\n hasKeys(input, [...keys, 'maxAnalysisHeapBytes']) &&\n isInteger(input['maxAnalysisHeapBytes']) &&\n input['maxAnalysisHeapBytes'] > 0\n );\n case 'run':\n case 'dispose':\n return hasKeys(input, keys);\n case 'prepared':\n return hasKeys(input, [...keys, 'inspection']) && isMetadata(input['inspection']);\n case 'read-page':\n return (\n hasKeys(input, [...keys, 'requestId', 'input']) &&\n isInteger(input['requestId']) &&\n isPageInput(input['input'])\n );\n case 'page':\n return (\n hasKeys(input, [...keys, 'requestId', 'result']) &&\n isInteger(input['requestId']) &&\n isPage(input['result'])\n );\n case 'reader-request':\n return (\n hasKeys(input, [...keys, 'requestId', 'request']) &&\n isInteger(input['requestId']) &&\n isRequest(input['request'])\n );\n case 'reader-response':\n return hasKeys(input, [...keys, 'requestId', 'result']) && isInteger(input['requestId']);\n case 'reader-failure':\n case 'failure':\n return (\n hasKeys(input, [\n ...keys,\n 'failure',\n ...(input['kind'] === 'reader-failure' ? ['requestId'] : []),\n ]) &&\n (input['kind'] !== 'reader-failure' || isInteger(input['requestId'])) &&\n isRecord(input['failure']) &&\n hasKeys(input['failure'], ['family', 'options']) &&\n ['configuration', 'operation', 'repository', 'path'].includes(\n String(input['failure']['family']),\n ) &&\n isRecord(input['failure']['options'])\n );\n default:\n return false;\n }\n};\n\n/** Counts escaped JSON bytes without first allocating a serialized oversized message. */\nconst countJsonBytes = (input: unknown, ancestors: WeakSet<object>, depth: number): number => {\n if (depth > 64) throw createInspectionProcessFailure();\n if (input === null) return 4;\n if (typeof input === 'boolean') return input ? 4 : 5;\n if (typeof input === 'number' && Number.isFinite(input)) return String(input).length;\n if (typeof input === 'string') {\n let bytes = 2;\n for (let index = 0; index < input.length; index++) {\n const code = input.charCodeAt(index);\n if (code === 34 || code === 92 || JSON_SHORT_ESCAPES.has(code)) bytes += 2;\n else if (code < 32) bytes += 6;\n else if (code < 128) bytes++;\n else if (code < 2048) bytes += 2;\n else if (\n code >= 0xd800 &&\n code <= 0xdbff &&\n index + 1 < input.length &&\n input.charCodeAt(index + 1) >= 0xdc00 &&\n input.charCodeAt(index + 1) <= 0xdfff\n ) {\n bytes += 4;\n index++;\n } else bytes += code >= 0xd800 && code <= 0xdfff ? 6 : 3;\n if (bytes > NODE_INSPECTION_MESSAGE_BYTES) return bytes;\n }\n return bytes;\n }\n if (typeof input !== 'object' || ancestors.has(input)) throw createInspectionProcessFailure();\n ancestors.add(input);\n let bytes = 2;\n let count = 0;\n if (Array.isArray(input)) {\n for (const element of input) {\n bytes += (count++ === 0 ? 0 : 1) + countJsonBytes(element, ancestors, depth + 1);\n if (bytes > NODE_INSPECTION_MESSAGE_BYTES) break;\n }\n } else {\n for (const key in input) {\n if (!Object.hasOwn(input, key)) continue;\n bytes +=\n (count++ === 0 ? 0 : 1) +\n countJsonBytes(key, ancestors, depth + 1) +\n 1 +\n countJsonBytes((input as Record<string, unknown>)[key], ancestors, depth + 1);\n if (bytes > NODE_INSPECTION_MESSAGE_BYTES) break;\n }\n }\n ancestors.delete(input);\n return bytes;\n};\n\n/**\n * Admits a complete bounded record before serialization; no record is truncated.\n * @returns One private JSON frame.\n * @throws\n * - RESOURCE_LIMIT_EXCEEDED: A Core resource limit was exceeded.\n * - INSPECTION_PROCESS_FAILED: The isolated project inspection failed.\n */\nexport const encodeInspectionMessage = (message: INodeInspectionMessage): string => {\n const bytes = countJsonBytes(message, new WeakSet(), 0);\n if (bytes > NODE_INSPECTION_MESSAGE_BYTES)\n throw new CoreOperationException({\n code: 'RESOURCE_LIMIT_EXCEEDED',\n limit: 'maxInspectionMessageBytes',\n limitMaximum: NODE_INSPECTION_MESSAGE_BYTES,\n observedUsage: bytes,\n nextAction: null,\n operation: 'create-project-inspection',\n });\n if (!isMessage(message)) throw createInspectionProcessFailure();\n return JSON.stringify(message);\n};\n\n/**\n * Checks frame size before parsing and validates the closed message contract.\n * @returns A validated private message.\n * @throws\n * - INSPECTION_PROCESS_FAILED: The isolated project inspection failed.\n */\nexport const decodeInspectionMessage = (frame: unknown): INodeInspectionMessage => {\n if (typeof frame !== 'string' || Buffer.byteLength(frame) > NODE_INSPECTION_MESSAGE_BYTES)\n throw createInspectionProcessFailure();\n let message: unknown;\n try {\n message = JSON.parse(frame);\n } catch (cause) {\n throw createInspectionProcessFailure(cause);\n }\n if (!isMessage(message)) throw createInspectionProcessFailure();\n return message;\n};\n","import {\n RepositoryPathException,\n RepositorySourceException,\n isRepositoryPath,\n type IRepositoryOperation,\n type IRepositorySourceErrorCode,\n} from '@moldea.ai/repository';\n\nimport {\n CoreConfigurationException,\n CoreOperationException,\n isCoreConfigurationErrorCode,\n isCoreOperation,\n isCoreOperationErrorCode,\n} from '../exceptions/index.js';\n\nimport { createInspectionProcessFailure } from './protocol.js';\nimport type { INodeInspectionFailure } from './types.js';\n\n/** Serializes only documented exception fields, excluding native messages, causes and stacks. */\nexport const serializeInspectionFailure = (error: unknown): INodeInspectionFailure => {\n if (error instanceof CoreConfigurationException)\n return {\n family: 'configuration',\n options: {\n code: error.code,\n operation: error.operation,\n },\n };\n if (error instanceof CoreOperationException)\n return {\n family: 'operation',\n options: {\n code: error.code,\n operation: error.operation,\n ...(error.agentId === null ? {} : { agentId: error.agentId }),\n ...(error.code !== 'RESOURCE_LIMIT_EXCEEDED'\n ? {}\n : {\n limit: error.limit,\n limitMaximum: error.limitMaximum,\n nextAction: error.nextAction,\n observedUsage: error.observedUsage,\n }),\n },\n };\n if (error instanceof RepositoryPathException) return { family: 'path', options: {} };\n if (error instanceof RepositorySourceException)\n return {\n family: 'repository',\n options: {\n code: error.code,\n operation: error.operation,\n path: error.path,\n retryable: error.retryable,\n ...(error.resource === null ? {} : { resource: error.resource }),\n },\n };\n return {\n family: 'operation',\n options: {\n code: 'INSPECTION_PROCESS_FAILED',\n operation: 'create-project-inspection',\n },\n };\n};\nconst REPOSITORY_CODES: IRepositorySourceErrorCode[] = [\n 'ENTRY_NOT_FOUND',\n 'ENTRY_NOT_FILE',\n 'ENTRY_NOT_DIRECTORY',\n 'INVALID_PAGE_REQUEST',\n 'ACCESS_DENIED',\n 'SOURCE_UNAVAILABLE',\n 'SNAPSHOT_CHANGED',\n 'PROVIDER_INCOMPLETE',\n 'INVALID_SOURCE_DATA',\n 'RESOURCE_LIMIT_EXCEEDED',\n 'ABORTED',\n];\nconst REPOSITORY_OPERATIONS: IRepositoryOperation[] = [\n 'create-reader',\n 'create-comparison',\n 'get-entry',\n 'read-file-page',\n 'list-entries-page',\n 'list-changes-page',\n];\nconst isNumber = (input: unknown): input is number =>\n typeof input === 'number' && Number.isSafeInteger(input) && input >= 0;\n\n/**\n * Reconstructs a documented typed failure after checking its safe transport fields.\n * @returns A package exception without a remote native cause or stack.\n * @throws\n * - INSPECTION_PROCESS_FAILED: The isolated project inspection failed.\n */\nexport const deserializeInspectionFailure = (failure: INodeInspectionFailure): Error => {\n const options = failure.options;\n const allowed =\n failure.family === 'configuration'\n ? ['code', 'operation']\n : failure.family === 'operation'\n ? ['code', 'operation', 'agentId', 'limit', 'limitMaximum', 'nextAction', 'observedUsage']\n : failure.family === 'repository'\n ? ['code', 'operation', 'path', 'retryable', 'resource']\n : [];\n if (\n Object.keys(options).some((key) => !allowed.includes(key)) ||\n (Object.hasOwn(options, 'agentId') && typeof options['agentId'] !== 'string')\n )\n throw createInspectionProcessFailure();\n if (\n (failure.family === 'operation' || failure.family === 'configuration') &&\n !isCoreOperation(options['operation'])\n )\n throw createInspectionProcessFailure();\n const scope = {\n operation: isCoreOperation(options['operation'])\n ? options['operation']\n : ('create-project-inspection' as const),\n ...(typeof options['agentId'] === 'string' ? { agentId: options['agentId'] } : {}),\n };\n if (failure.family === 'path' && Object.keys(options).length === 0)\n return new RepositoryPathException();\n if (failure.family === 'configuration') {\n const code = options['code'];\n if (isCoreConfigurationErrorCode(code))\n return new CoreConfigurationException({ ...scope, code });\n }\n if (failure.family === 'operation') {\n const code = options['code'];\n if (\n isCoreOperationErrorCode(code) &&\n code !== 'RESOURCE_LIMIT_EXCEEDED' &&\n !['limit', 'limitMaximum', 'nextAction', 'observedUsage'].some((key) =>\n Object.hasOwn(options, key),\n )\n )\n return new CoreOperationException({ ...scope, code });\n if (\n options['code'] === 'RESOURCE_LIMIT_EXCEEDED' &&\n isNumber(options['limitMaximum']) &&\n options['limitMaximum'] > 0\n ) {\n if (\n options['limit'] === 'maxAnalysisHeapBytes' &&\n options['nextAction'] === 'review-inspection-capacity' &&\n options['observedUsage'] === null\n )\n return new CoreOperationException({\n ...scope,\n code: 'RESOURCE_LIMIT_EXCEEDED',\n limit: 'maxAnalysisHeapBytes',\n limitMaximum: options['limitMaximum'],\n observedUsage: null,\n nextAction: 'review-inspection-capacity',\n });\n if (\n (options['limit'] === 'maxInspectionMessageBytes' ||\n options['limit'] === 'maxReaderRequests') &&\n options['nextAction'] === null &&\n isNumber(options['observedUsage'])\n )\n return new CoreOperationException({\n ...scope,\n code: 'RESOURCE_LIMIT_EXCEEDED',\n limit: options['limit'],\n limitMaximum: options['limitMaximum'],\n nextAction: null,\n observedUsage: options['observedUsage'],\n });\n if (\n typeof options['limit'] === 'string' &&\n !['maxAnalysisHeapBytes', 'maxInspectionMessageBytes', 'maxReaderRequests'].includes(\n options['limit'],\n ) &&\n options['nextAction'] === 'reduce-input-or-increase-limit' &&\n isNumber(options['observedUsage'])\n )\n return new CoreOperationException({\n ...scope,\n code: 'RESOURCE_LIMIT_EXCEEDED',\n limit: options['limit'],\n limitMaximum: options['limitMaximum'],\n nextAction: 'reduce-input-or-increase-limit',\n observedUsage: options['observedUsage'],\n });\n }\n }\n if (failure.family === 'repository') {\n const code = REPOSITORY_CODES.find((candidate) => candidate === options['code']);\n const operation = REPOSITORY_OPERATIONS.find((candidate) => candidate === options['operation']);\n const resource = options['resource'];\n if (\n code !== undefined &&\n operation !== undefined &&\n typeof options['retryable'] === 'boolean' &&\n (options['path'] === null || isRepositoryPath(options['path'])) &&\n (resource === undefined ||\n (resource !== null &&\n typeof resource === 'object' &&\n Object.keys(resource).length === 3 &&\n 'dimension' in resource &&\n typeof resource.dimension === 'string' &&\n 'limit' in resource &&\n isNumber(resource.limit) &&\n 'observed' in resource &&\n isNumber(resource.observed)))\n ) {\n return new RepositorySourceException({\n code,\n operation,\n path: options['path'],\n retryable: options['retryable'],\n ...(resource === undefined\n ? {}\n : {\n resource: resource as {\n dimension: string;\n limit: number;\n observed: number;\n },\n }),\n });\n }\n }\n throw createInspectionProcessFailure();\n};\n"],"mappings":"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"}
|
|
@@ -9,18 +9,11 @@ var CORE_OPERATIONS = [
|
|
|
9
9
|
"parse-decision",
|
|
10
10
|
"create-project-inspection",
|
|
11
11
|
"read-canonical-content-page",
|
|
12
|
-
"validate-project"
|
|
13
|
-
"validate-adapter"
|
|
12
|
+
"validate-project"
|
|
14
13
|
];
|
|
15
|
-
var CONFIGURATION_ERROR_MESSAGES = {
|
|
16
|
-
DUPLICATE_ADAPTER_ID: "A runtime adapter ID is registered more than once.",
|
|
17
|
-
INVALID_ADAPTER_DEFINITION: "A runtime adapter definition is invalid.",
|
|
18
|
-
INVALID_RESOURCE_LIMIT: "A Core resource limit is invalid.",
|
|
19
|
-
RESERVED_ADAPTER_ID: "A reserved runtime adapter ID was supplied."
|
|
20
|
-
};
|
|
14
|
+
var CONFIGURATION_ERROR_MESSAGES = { INVALID_RESOURCE_LIMIT: "A Core resource limit is invalid." };
|
|
21
15
|
var OPERATION_ERROR_MESSAGES = {
|
|
22
16
|
ABORTED: "The Core operation was aborted.",
|
|
23
|
-
ADAPTER_EXECUTION_FAILED: "A runtime adapter failed during inspection.",
|
|
24
17
|
CONTENT_INVALID: "The canonical content is not valid UTF-8 text.",
|
|
25
18
|
INVALID_ARGUMENT: "The Core operation received an invalid argument.",
|
|
26
19
|
INSPECTION_BUSY: "Project inspection capacity is busy. Try again shortly.",
|
|
@@ -30,7 +23,6 @@ var OPERATION_ERROR_MESSAGES = {
|
|
|
30
23
|
};
|
|
31
24
|
var OPERATION_ERROR_RETRYABILITY = {
|
|
32
25
|
ABORTED: true,
|
|
33
|
-
ADAPTER_EXECUTION_FAILED: false,
|
|
34
26
|
CONTENT_INVALID: false,
|
|
35
27
|
INVALID_ARGUMENT: false,
|
|
36
28
|
INSPECTION_BUSY: true,
|
|
@@ -57,14 +49,12 @@ var attachCause = (exception, cause) => {
|
|
|
57
49
|
var CoreConfigurationException = class extends Exception {
|
|
58
50
|
code;
|
|
59
51
|
operation;
|
|
60
|
-
|
|
61
|
-
/** Creates a configuration exception with safe adapter metadata. */
|
|
52
|
+
/** Creates a configuration exception with safe operation metadata. */
|
|
62
53
|
constructor(options) {
|
|
63
54
|
super(CONFIGURATION_ERROR_MESSAGES[options.code], options.code);
|
|
64
55
|
this.code = options.code;
|
|
65
56
|
this.name = "CoreConfigurationException";
|
|
66
57
|
this.operation = options.operation;
|
|
67
|
-
this.adapterId = options.adapterId ?? null;
|
|
68
58
|
attachCause(this, options.cause);
|
|
69
59
|
}
|
|
70
60
|
};
|
|
@@ -73,7 +63,6 @@ var CoreOperationException = class extends Exception {
|
|
|
73
63
|
code;
|
|
74
64
|
operation;
|
|
75
65
|
retryable;
|
|
76
|
-
adapterId;
|
|
77
66
|
agentId;
|
|
78
67
|
limit;
|
|
79
68
|
limitMaximum;
|
|
@@ -86,7 +75,6 @@ var CoreOperationException = class extends Exception {
|
|
|
86
75
|
this.name = "CoreOperationException";
|
|
87
76
|
this.operation = options.operation;
|
|
88
77
|
this.retryable = OPERATION_ERROR_RETRYABILITY[options.code];
|
|
89
|
-
this.adapterId = options.adapterId ?? null;
|
|
90
78
|
this.agentId = options.agentId ?? null;
|
|
91
79
|
this.limit = options.limit ?? null;
|
|
92
80
|
this.limitMaximum = options.limitMaximum ?? null;
|
|
@@ -98,4 +86,4 @@ var CoreOperationException = class extends Exception {
|
|
|
98
86
|
//#endregion
|
|
99
87
|
export { isCoreOperationErrorCode as a, isCoreOperation as i, CoreOperationException as n, isCoreConfigurationErrorCode as r, CoreConfigurationException as t };
|
|
100
88
|
|
|
101
|
-
//# sourceMappingURL=exceptions-
|
|
89
|
+
//# sourceMappingURL=exceptions-IXsorE8t.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"exceptions-IXsorE8t.js","names":[],"sources":["../../src/exceptions/index.ts"],"sourcesContent":["import { Exception } from 'error-message-utils';\n\n// stable configuration and operation failure codes\nexport type ICoreConfigurationErrorCode = 'INVALID_RESOURCE_LIMIT';\n\nexport type ICoreOperationErrorCode =\n | 'INVALID_ARGUMENT'\n | 'ABORTED'\n | 'RESOURCE_LIMIT_EXCEEDED'\n | 'INSPECTION_BUSY'\n | 'INSPECTION_TIMEOUT'\n | 'INSPECTION_PROCESS_FAILED'\n | 'CONTENT_INVALID';\n\nconst CORE_OPERATIONS = [\n 'create-core',\n 'normalize-text',\n 'calculate-content-digest',\n 'parse-manifest',\n 'match-manifest-scope',\n 'parse-decision',\n 'create-project-inspection',\n 'read-canonical-content-page',\n 'validate-project',\n] as const;\n\nexport type ICoreOperation = (typeof CORE_OPERATIONS)[number];\n\n// safe construction options for exported Core exceptions\nexport interface ICoreConfigurationExceptionOptions {\n readonly code: ICoreConfigurationErrorCode;\n readonly operation: ICoreOperation;\n readonly cause?: unknown;\n}\n\ninterface ICoreOperationExceptionOptionsBase {\n readonly operation: ICoreOperation;\n readonly agentId?: string;\n readonly cause?: unknown;\n}\n\n// logical budget refusals and verified isolated-worker heap exhaustion\nexport type ICoreResourceLimitNextAction =\n 'reduce-input-or-increase-limit' | 'review-inspection-capacity';\n\nexport type ICoreOperationExceptionOptions = ICoreOperationExceptionOptionsBase &\n (\n | {\n readonly code: 'RESOURCE_LIMIT_EXCEEDED';\n readonly limit: string;\n readonly limitMaximum: number;\n readonly nextAction: 'reduce-input-or-increase-limit';\n readonly observedUsage: number;\n }\n | {\n readonly code: 'RESOURCE_LIMIT_EXCEEDED';\n readonly limit: 'maxAnalysisHeapBytes';\n readonly limitMaximum: number;\n readonly nextAction: 'review-inspection-capacity';\n readonly observedUsage: null;\n }\n | {\n readonly code: 'RESOURCE_LIMIT_EXCEEDED';\n readonly limit: 'maxInspectionMessageBytes' | 'maxReaderRequests';\n readonly limitMaximum: number;\n readonly nextAction: null;\n readonly observedUsage: number;\n }\n | {\n readonly code: Exclude<ICoreOperationErrorCode, 'RESOURCE_LIMIT_EXCEEDED'>;\n readonly limit?: never;\n readonly limitMaximum?: never;\n readonly nextAction?: never;\n readonly observedUsage?: never;\n }\n );\n\nconst CONFIGURATION_ERROR_MESSAGES = {\n INVALID_RESOURCE_LIMIT: 'A Core resource limit is invalid.',\n} as const satisfies Readonly<Record<ICoreConfigurationErrorCode, string>>;\n\nconst OPERATION_ERROR_MESSAGES = {\n ABORTED: 'The Core operation was aborted.',\n CONTENT_INVALID: 'The canonical content is not valid UTF-8 text.',\n INVALID_ARGUMENT: 'The Core operation received an invalid argument.',\n INSPECTION_BUSY: 'Project inspection capacity is busy. Try again shortly.',\n INSPECTION_TIMEOUT: 'The isolated project inspection timed out.',\n INSPECTION_PROCESS_FAILED: 'The isolated project inspection failed.',\n RESOURCE_LIMIT_EXCEEDED: 'A Core resource limit was exceeded.',\n} as const satisfies Readonly<Record<ICoreOperationErrorCode, string>>;\n\nconst OPERATION_ERROR_RETRYABILITY = {\n ABORTED: true,\n CONTENT_INVALID: false,\n INVALID_ARGUMENT: false,\n INSPECTION_BUSY: true,\n INSPECTION_TIMEOUT: true,\n INSPECTION_PROCESS_FAILED: false,\n RESOURCE_LIMIT_EXCEEDED: false,\n} as const satisfies Readonly<Record<ICoreOperationErrorCode, boolean>>;\n\n/** Checks a transported operation against the authoritative Core operation set. */\nexport const isCoreOperation = (input: unknown): input is ICoreOperation =>\n CORE_OPERATIONS.some((operation) => operation === input);\n\n/** Checks a transported configuration code against the authoritative message registry. */\nexport const isCoreConfigurationErrorCode = (\n input: unknown,\n): input is ICoreConfigurationErrorCode =>\n typeof input === 'string' && Object.hasOwn(CONFIGURATION_ERROR_MESSAGES, input);\n\n/** Checks a transported operation code against the authoritative message registry. */\nexport const isCoreOperationErrorCode = (input: unknown): input is ICoreOperationErrorCode =>\n typeof input === 'string' && Object.hasOwn(OPERATION_ERROR_MESSAGES, input);\n\nconst attachCause = (exception: Error, cause: unknown): void => {\n if (cause === undefined) {\n return;\n }\n\n Object.defineProperty(exception, 'cause', {\n configurable: true,\n enumerable: false,\n value: cause,\n writable: false,\n });\n};\n\n/** Represents invalid immutable Core configuration. */\nexport class CoreConfigurationException extends Exception {\n public override readonly code: ICoreConfigurationErrorCode;\n\n public readonly operation: ICoreOperation;\n\n /** Creates a configuration exception with safe operation metadata. */\n public constructor(options: ICoreConfigurationExceptionOptions) {\n super(CONFIGURATION_ERROR_MESSAGES[options.code], options.code);\n this.code = options.code;\n this.name = 'CoreConfigurationException';\n this.operation = options.operation;\n attachCause(this, options.cause);\n }\n}\n\n/** Represents an operational failure that prevented Core from completing. */\nexport class CoreOperationException extends Exception {\n public override readonly code: ICoreOperationErrorCode;\n\n public readonly operation: ICoreOperation;\n\n public readonly retryable: boolean;\n\n public readonly agentId: string | null;\n\n public readonly limit: string | null;\n\n public readonly limitMaximum: number | null;\n\n public readonly nextAction: ICoreResourceLimitNextAction | null;\n\n public readonly observedUsage: number | null;\n\n /** Creates an operation exception with derived retry and safe scope metadata. */\n public constructor(options: ICoreOperationExceptionOptions) {\n super(OPERATION_ERROR_MESSAGES[options.code], options.code);\n this.code = options.code;\n this.name = 'CoreOperationException';\n this.operation = options.operation;\n this.retryable = OPERATION_ERROR_RETRYABILITY[options.code];\n this.agentId = options.agentId ?? null;\n this.limit = options.limit ?? null;\n this.limitMaximum = options.limitMaximum ?? null;\n this.nextAction = options.nextAction ?? null;\n this.observedUsage = options.observedUsage ?? null;\n attachCause(this, options.cause);\n }\n}\n"],"mappings":";;AAcA,IAAM,kBAAkB;CACtB;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACF;AAqDA,IAAM,+BAA+B,EACnC,wBAAwB,oCAC1B;AAEA,IAAM,2BAA2B;CAC/B,SAAS;CACT,iBAAiB;CACjB,kBAAkB;CAClB,iBAAiB;CACjB,oBAAoB;CACpB,2BAA2B;CAC3B,yBAAyB;AAC3B;AAEA,IAAM,+BAA+B;CACnC,SAAS;CACT,iBAAiB;CACjB,kBAAkB;CAClB,iBAAiB;CACjB,oBAAoB;CACpB,2BAA2B;CAC3B,yBAAyB;AAC3B;;AAGA,IAAa,mBAAmB,UAC9B,gBAAgB,MAAM,cAAc,cAAc,KAAK;;AAGzD,IAAa,gCACX,UAEA,OAAO,UAAU,YAAY,OAAO,OAAO,8BAA8B,KAAK;;AAGhF,IAAa,4BAA4B,UACvC,OAAO,UAAU,YAAY,OAAO,OAAO,0BAA0B,KAAK;AAE5E,IAAM,eAAe,WAAkB,UAAyB;CAC9D,IAAI,UAAU,KAAA,GACZ;CAGF,OAAO,eAAe,WAAW,SAAS;EACxC,cAAc;EACd,YAAY;EACZ,OAAO;EACP,UAAU;CACZ,CAAC;AACH;;AAGA,IAAa,6BAAb,cAAgD,UAAU;CACxD;CAEA;;CAGA,YAAmB,SAA6C;EAC9D,MAAM,6BAA6B,QAAQ,OAAO,QAAQ,IAAI;EAC9D,KAAK,OAAO,QAAQ;EACpB,KAAK,OAAO;EACZ,KAAK,YAAY,QAAQ;EACzB,YAAY,MAAM,QAAQ,KAAK;CACjC;AACF;;AAGA,IAAa,yBAAb,cAA4C,UAAU;CACpD;CAEA;CAEA;CAEA;CAEA;CAEA;CAEA;CAEA;;CAGA,YAAmB,SAAyC;EAC1D,MAAM,yBAAyB,QAAQ,OAAO,QAAQ,IAAI;EAC1D,KAAK,OAAO,QAAQ;EACpB,KAAK,OAAO;EACZ,KAAK,YAAY,QAAQ;EACzB,KAAK,YAAY,6BAA6B,QAAQ;EACtD,KAAK,UAAU,QAAQ,WAAW;EAClC,KAAK,QAAQ,QAAQ,SAAS;EAC9B,KAAK,eAAe,QAAQ,gBAAgB;EAC5C,KAAK,aAAa,QAAQ,cAAc;EACxC,KAAK,gBAAgB,QAAQ,iBAAiB;EAC9C,YAAY,MAAM,QAAQ,KAAK;CACjC;AACF"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { a as encodeInspectionMessage, r as createInspectionProcessFailure, u as NODE_INSPECTION_TERMINATION_GRACE_MS } from "./errors-
|
|
1
|
+
import { a as encodeInspectionMessage, r as createInspectionProcessFailure, u as NODE_INSPECTION_TERMINATION_GRACE_MS } from "./errors-BE4DS3Ak.js";
|
|
2
2
|
import process from "node:process";
|
|
3
3
|
//#region src/node-inspection/lifecycle.ts
|
|
4
4
|
/** Serializes bounded IPC sends and waits for Node's send callback before admitting the next. */
|
|
@@ -64,4 +64,4 @@ var superviseInspectionChild = (child, requestStop) => {
|
|
|
64
64
|
//#endregion
|
|
65
65
|
export { createInspectionSender as n, superviseInspectionChild as r, createInspectionEnvironment as t };
|
|
66
66
|
|
|
67
|
-
//# sourceMappingURL=lifecycle-
|
|
67
|
+
//# sourceMappingURL=lifecycle-D_RvxhDC.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lifecycle-
|
|
1
|
+
{"version":3,"file":"lifecycle-D_RvxhDC.js","names":[],"sources":["../../src/node-inspection/lifecycle.ts"],"sourcesContent":["import type { ChildProcess } from 'node:child_process';\nimport process from 'node:process';\n\nimport { NODE_INSPECTION_TERMINATION_GRACE_MS } from './constants.js';\nimport { NODE_INSPECTION_MAX_REQUESTS } from './constants.js';\nimport { createInspectionProcessFailure, encodeInspectionMessage } from './protocol.js';\nimport type { INodeInspectionMessage } from './types.js';\n\n/** Serializes bounded IPC sends and waits for Node's send callback before admitting the next. */\nexport const createInspectionSender = (\n send: (frame: string, callback: (error: Error | null) => void) => void,\n): ((message: INodeInspectionMessage) => Promise<void>) => {\n let queued = 0;\n let tail = Promise.resolve();\n return async (message) => {\n if (queued >= NODE_INSPECTION_MAX_REQUESTS) throw createInspectionProcessFailure();\n queued++;\n const operation = tail.then(\n () =>\n new Promise<void>((resolve, reject) => {\n try {\n send(encodeInspectionMessage(message), (error) => {\n if (error !== null) reject(createInspectionProcessFailure(error));\n else resolve();\n });\n } catch (cause) {\n reject(cause instanceof Error ? cause : createInspectionProcessFailure(cause));\n }\n }),\n );\n tail = operation.catch(() => {});\n try {\n await operation;\n } finally {\n queued--;\n }\n };\n};\n\n/** Keeps only operating-system bootstrap variables; no credentials or Node overrides cross. */\nexport const createInspectionEnvironment = (): NodeJS.ProcessEnv => {\n const names = new Set(['systemroot', 'windir', 'temp', 'tmp', 'tmpdir']);\n return Object.fromEntries(\n Object.entries(process.env).filter(([name]) => names.has(name.toLowerCase())),\n );\n};\n\n/**\n * Supervises one owned child without PID polling, shell commands, or process-group killing.\n * @returns Idempotent termination and actual close notification.\n */\nexport const superviseInspectionChild = (\n child: ChildProcess,\n requestStop: () => void,\n): {\n closed: Promise<void>;\n terminate: () => void;\n} => {\n let hasClosed = false;\n let forceTimer: NodeJS.Timeout | undefined;\n const closed = new Promise<void>((resolve) => {\n child.once('close', () => {\n hasClosed = true;\n clearTimeout(forceTimer);\n resolve();\n });\n });\n return {\n closed,\n terminate: (): void => {\n if (hasClosed || forceTimer !== undefined) return;\n // Let the child close IPC. Local disconnect can suppress ChildProcess's close event.\n forceTimer = setTimeout(() => {\n if (!hasClosed) child.kill('SIGKILL');\n }, NODE_INSPECTION_TERMINATION_GRACE_MS);\n requestStop();\n },\n };\n};\n"],"mappings":";;;;AASA,IAAa,0BACX,SACyD;CACzD,IAAI,SAAS;CACb,IAAI,OAAO,QAAQ,QAAQ;CAC3B,OAAO,OAAO,YAAY;EACxB,IAAI,UAAA,GAAwC,MAAM,+BAA+B;EACjF;EACA,MAAM,YAAY,KAAK,WAEnB,IAAI,SAAe,SAAS,WAAW;GACrC,IAAI;IACF,KAAK,wBAAwB,OAAO,IAAI,UAAU;KAChD,IAAI,UAAU,MAAM,OAAO,+BAA+B,KAAK,CAAC;UAC3D,QAAQ;IACf,CAAC;GACH,SAAS,OAAO;IACd,OAAO,iBAAiB,QAAQ,QAAQ,+BAA+B,KAAK,CAAC;GAC/E;EACF,CAAC,CACL;EACA,OAAO,UAAU,YAAY,CAAC,CAAC;EAC/B,IAAI;GACF,MAAM;EACR,UAAU;GACR;EACF;CACF;AACF;;AAGA,IAAa,oCAAuD;CAClE,MAAM,wBAAQ,IAAI,IAAI;EAAC;EAAc;EAAU;EAAQ;EAAO;CAAQ,CAAC;CACvE,OAAO,OAAO,YACZ,OAAO,QAAQ,QAAQ,GAAG,CAAC,CAAC,QAAQ,CAAC,UAAU,MAAM,IAAI,KAAK,YAAY,CAAC,CAAC,CAC9E;AACF;;;;;AAMA,IAAa,4BACX,OACA,gBAIG;CACH,IAAI,YAAY;CAChB,IAAI;CAQJ,OAAO;EACL,QAAA,IARiB,SAAe,YAAY;GAC5C,MAAM,KAAK,eAAe;IACxB,YAAY;IACZ,aAAa,UAAU;IACvB,QAAQ;GACV,CAAC;EACH,CAEE;EACA,iBAAuB;GACrB,IAAI,aAAa,eAAe,KAAA,GAAW;GAE3C,aAAa,iBAAiB;IAC5B,IAAI,CAAC,WAAW,MAAM,KAAK,SAAS;GACtC,GAAG,oCAAoC;GACvC,YAAY;EACd;CACF;AACF"}
|