@moldea.ai/core 6.0.0 → 7.0.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.
Files changed (138) hide show
  1. package/README.md +12 -18
  2. package/dist/analysis-worker.js +14 -24
  3. package/dist/analysis-worker.js.map +1 -1
  4. package/dist/binding-coverage/index.d.ts +26 -0
  5. package/dist/binding-coverage/index.d.ts.map +1 -0
  6. package/dist/chunks/{core-DchheNDz.js → core-Cdeiu6xG.js} +743 -2684
  7. package/dist/chunks/core-Cdeiu6xG.js.map +1 -0
  8. package/dist/chunks/{errors-BQI1DEqf.js → errors-BE4DS3Ak.js} +27 -38
  9. package/dist/chunks/errors-BE4DS3Ak.js.map +1 -0
  10. package/dist/chunks/{exceptions-lzD3buFw.js → exceptions-IXsorE8t.js} +4 -16
  11. package/dist/chunks/exceptions-IXsorE8t.js.map +1 -0
  12. package/dist/chunks/{lifecycle-4EkWgEHm.js → lifecycle-D_RvxhDC.js} +2 -2
  13. package/dist/chunks/{lifecycle-4EkWgEHm.js.map → lifecycle-D_RvxhDC.js.map} +1 -1
  14. package/dist/chunks/{options-CxCT3dZU.js → options-5x9gu2Qb.js} +139 -152
  15. package/dist/chunks/options-5x9gu2Qb.js.map +1 -0
  16. package/dist/chunks/{repository-rpc-BWi6X1la.js → repository-rpc-B_y0Kspf.js} +2 -2
  17. package/dist/chunks/{repository-rpc-BWi6X1la.js.map → repository-rpc-B_y0Kspf.js.map} +1 -1
  18. package/dist/chunks/scope-AGMcHUE_.js +1827 -0
  19. package/dist/chunks/scope-AGMcHUE_.js.map +1 -0
  20. package/dist/chunks/syntax-CVvExx4R.js +137 -0
  21. package/dist/chunks/syntax-CVvExx4R.js.map +1 -0
  22. package/dist/constants/index.d.ts +2 -1
  23. package/dist/constants/index.d.ts.map +1 -1
  24. package/dist/contracts/index.d.ts +15 -15
  25. package/dist/contracts/index.d.ts.map +1 -1
  26. package/dist/core/index.d.ts +1 -4
  27. package/dist/core/index.d.ts.map +1 -1
  28. package/dist/decision/index.d.ts +1 -1
  29. package/dist/decision-graph/index.d.ts +9 -7
  30. package/dist/decision-graph/index.d.ts.map +1 -1
  31. package/dist/diagnostic-utilities/index.d.ts +6 -2
  32. package/dist/diagnostic-utilities/index.d.ts.map +1 -1
  33. package/dist/diagnostics/index.d.ts +21 -33
  34. package/dist/diagnostics/index.d.ts.map +1 -1
  35. package/dist/exceptions/index.d.ts +4 -8
  36. package/dist/exceptions/index.d.ts.map +1 -1
  37. package/dist/export-inventory/index.d.ts +3 -0
  38. package/dist/export-inventory/index.d.ts.map +1 -0
  39. package/dist/export-inventory/inventory.d.ts +22 -0
  40. package/dist/export-inventory/inventory.d.ts.map +1 -0
  41. package/dist/export-inventory/syntax.d.ts +4 -0
  42. package/dist/export-inventory/syntax.d.ts.map +1 -0
  43. package/dist/export-inventory/types.d.ts +9 -0
  44. package/dist/export-inventory/types.d.ts.map +1 -0
  45. package/dist/format/index.d.ts +8 -0
  46. package/dist/format/index.d.ts.map +1 -1
  47. package/dist/impact-pattern-validation/index.d.ts +2 -0
  48. package/dist/impact-pattern-validation/index.d.ts.map +1 -0
  49. package/dist/impact-pattern-validation/inspection.d.ts +24 -0
  50. package/dist/impact-pattern-validation/inspection.d.ts.map +1 -0
  51. package/dist/index.d.ts +6 -4
  52. package/dist/index.d.ts.map +1 -1
  53. package/dist/index.js +4 -4
  54. package/dist/integration-validation/index.d.ts +4 -0
  55. package/dist/integration-validation/index.d.ts.map +1 -0
  56. package/dist/integration-validation/inspection.d.ts +18 -0
  57. package/dist/integration-validation/inspection.d.ts.map +1 -0
  58. package/dist/integration-validation/parser.d.ts +9 -0
  59. package/dist/integration-validation/parser.d.ts.map +1 -0
  60. package/dist/integration-validation/types.d.ts +13 -0
  61. package/dist/integration-validation/types.d.ts.map +1 -0
  62. package/dist/manifest/index.d.ts +2 -4
  63. package/dist/manifest/index.d.ts.map +1 -1
  64. package/dist/manifest-validation/index.d.ts +7 -10
  65. package/dist/manifest-validation/index.d.ts.map +1 -1
  66. package/dist/node/index.d.ts +1 -1
  67. package/dist/node/index.d.ts.map +1 -1
  68. package/dist/node-inspection/client.d.ts +0 -4
  69. package/dist/node-inspection/client.d.ts.map +1 -1
  70. package/dist/node-inspection/errors.d.ts.map +1 -1
  71. package/dist/node-inspection/protocol.d.ts.map +1 -1
  72. package/dist/node-inspection/types.d.ts +4 -8
  73. package/dist/node-inspection/types.d.ts.map +1 -1
  74. package/dist/node-runner.js +4 -4
  75. package/dist/node-runner.js.map +1 -1
  76. package/dist/node.js +23 -13
  77. package/dist/node.js.map +1 -1
  78. package/dist/options/index.d.ts +2 -14
  79. package/dist/options/index.d.ts.map +1 -1
  80. package/dist/project-inspection/index.d.ts +1 -2
  81. package/dist/project-inspection/index.d.ts.map +1 -1
  82. package/dist/project-validation/index.d.ts +2 -4
  83. package/dist/project-validation/index.d.ts.map +1 -1
  84. package/dist/repository-inspection-session/index.d.ts +2 -4
  85. package/dist/repository-inspection-session/index.d.ts.map +1 -1
  86. package/dist/repository-reference-validation/index.d.ts +12 -6
  87. package/dist/repository-reference-validation/index.d.ts.map +1 -1
  88. package/dist/retained-memory/index.d.ts +18 -0
  89. package/dist/retained-memory/index.d.ts.map +1 -0
  90. package/dist/scope/index.d.ts +3 -0
  91. package/dist/scope/index.d.ts.map +1 -0
  92. package/dist/scope/scope.d.ts +13 -0
  93. package/dist/scope/scope.d.ts.map +1 -0
  94. package/dist/scope-matching/index.d.ts +2 -1
  95. package/dist/scope-matching/index.d.ts.map +1 -1
  96. package/dist/scope-matching/matching.d.ts +11 -2
  97. package/dist/scope-matching/matching.d.ts.map +1 -1
  98. package/dist/scope-matching/patterns.d.ts +4 -0
  99. package/dist/scope-matching/patterns.d.ts.map +1 -0
  100. package/dist/scope.js +17 -0
  101. package/dist/scope.js.map +1 -0
  102. package/dist/universal-project-inspection/index.d.ts +13 -11
  103. package/dist/universal-project-inspection/index.d.ts.map +1 -1
  104. package/dist/warning-acceptance/acceptance.d.ts +11 -0
  105. package/dist/warning-acceptance/acceptance.d.ts.map +1 -0
  106. package/dist/warning-acceptance/index.d.ts +2 -0
  107. package/dist/warning-acceptance/index.d.ts.map +1 -0
  108. package/package.json +6 -6
  109. package/dist/adapter/index.d.ts +0 -143
  110. package/dist/adapter/index.d.ts.map +0 -1
  111. package/dist/adapter-availability/index.d.ts +0 -15
  112. package/dist/adapter-availability/index.d.ts.map +0 -1
  113. package/dist/adapter-execution/index.d.ts +0 -34
  114. package/dist/adapter-execution/index.d.ts.map +0 -1
  115. package/dist/adapter-repository/index.d.ts +0 -27
  116. package/dist/adapter-repository/index.d.ts.map +0 -1
  117. package/dist/adapter-result-collection/collection.d.ts +0 -13
  118. package/dist/adapter-result-collection/collection.d.ts.map +0 -1
  119. package/dist/adapter-result-collection/index.d.ts +0 -3
  120. package/dist/adapter-result-collection/index.d.ts.map +0 -1
  121. package/dist/adapter-result-collection/types.d.ts +0 -31
  122. package/dist/adapter-result-collection/types.d.ts.map +0 -1
  123. package/dist/adapter-retained-memory/index.d.ts +0 -8
  124. package/dist/adapter-retained-memory/index.d.ts.map +0 -1
  125. package/dist/adapter-validation/index.d.ts +0 -43
  126. package/dist/adapter-validation/index.d.ts.map +0 -1
  127. package/dist/adapter.js +0 -116
  128. package/dist/adapter.js.map +0 -1
  129. package/dist/chunks/collection-CvbjjLf2.js +0 -73
  130. package/dist/chunks/collection-CvbjjLf2.js.map +0 -1
  131. package/dist/chunks/core-DchheNDz.js.map +0 -1
  132. package/dist/chunks/errors-BQI1DEqf.js.map +0 -1
  133. package/dist/chunks/exceptions-lzD3buFw.js.map +0 -1
  134. package/dist/chunks/options-CxCT3dZU.js.map +0 -1
  135. package/dist/custom-runtime-inspection/index.d.ts +0 -2
  136. package/dist/custom-runtime-inspection/index.d.ts.map +0 -1
  137. package/dist/custom-runtime-inspection/inspection.d.ts +0 -11
  138. package/dist/custom-runtime-inspection/inspection.d.ts.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,YAAY,EAAE,uBAAuB,EAAE,2BAA2B,EAAE,MAAM,oBAAoB,CAAC;AAG/F,OAAO,EACL,4BAA4B,EAC5B,oCAAoC,GACrC,MAAM,sBAAsB,CAAC;AAG9B,YAAY,EACV,cAAc,EACd,oBAAoB,EACpB,0BAA0B,EAC1B,2BAA2B,EAC3B,KAAK,EACL,YAAY,EACZ,mBAAmB,EACnB,oBAAoB,EACpB,oBAAoB,EACpB,eAAe,EACf,oBAAoB,EACpB,oBAAoB,EACpB,2BAA2B,EAC3B,kBAAkB,EAClB,sBAAsB,EACtB,wBAAwB,EACxB,uBAAuB,EACvB,sBAAsB,EACtB,2BAA2B,EAC3B,4BAA4B,EAC5B,4BAA4B,EAC5B,+BAA+B,EAC/B,sBAAsB,EACtB,qBAAqB,EACrB,uBAAuB,EACvB,wBAAwB,EACxB,yBAAyB,EACzB,wBAAwB,EACxB,oBAAoB,EACpB,kBAAkB,EAClB,wBAAwB,GACzB,MAAM,sBAAsB,CAAC;AAG9B,YAAY,EACV,8BAA8B,EAC9B,6BAA6B,EAC7B,oBAAoB,EACpB,yBAAyB,EACzB,mBAAmB,EACnB,mBAAmB,EACnB,mBAAmB,EACnB,uBAAuB,EACvB,+BAA+B,EAC/B,oBAAoB,GACrB,MAAM,2BAA2B,CAAC;AAGnC,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAG7C,YAAY,EACV,kBAAkB,EAClB,uBAAuB,EACvB,yBAAyB,EACzB,eAAe,EACf,mBAAmB,EACnB,WAAW,EACX,kBAAkB,EAClB,iBAAiB,EACjB,eAAe,EACf,YAAY,EACZ,uBAAuB,EACvB,8BAA8B,GAC/B,MAAM,wBAAwB,CAAC;AAGhC,YAAY,EACV,2BAA2B,EAC3B,kCAAkC,EAClC,cAAc,EACd,uBAAuB,EACvB,8BAA8B,EAC9B,4BAA4B,GAC7B,MAAM,uBAAuB,CAAC;AAG/B,OAAO,EAAE,0BAA0B,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,YAAY,EACV,oBAAoB,EACpB,uBAAuB,EACvB,gBAAgB,EAChB,sBAAsB,GACvB,MAAM,6BAA6B,CAAC;AAGrC,OAAO,EACL,4BAA4B,EAC5B,sBAAsB,EACtB,wBAAwB,EACxB,oCAAoC,GACrC,MAAM,sBAAsB,CAAC;AAG9B,YAAY,EACV,cAAc,EACd,oBAAoB,EACpB,0BAA0B,EAC1B,2BAA2B,EAC3B,KAAK,EACL,YAAY,EACZ,mBAAmB,EACnB,oBAAoB,EACpB,oBAAoB,EACpB,eAAe,EACf,oBAAoB,EACpB,oBAAoB,EACpB,2BAA2B,EAC3B,kBAAkB,EAClB,sBAAsB,EACtB,wBAAwB,EACxB,uBAAuB,EACvB,sBAAsB,EACtB,2BAA2B,EAC3B,4BAA4B,EAC5B,4BAA4B,EAC5B,+BAA+B,EAC/B,sBAAsB,EACtB,qBAAqB,EACrB,uBAAuB,EACvB,wBAAwB,EACxB,yBAAyB,EACzB,oBAAoB,EACpB,kBAAkB,EAClB,wBAAwB,GACzB,MAAM,sBAAsB,CAAC;AAG9B,YAAY,EACV,8BAA8B,EAC9B,6BAA6B,EAC7B,oBAAoB,EACpB,yBAAyB,EACzB,mBAAmB,EACnB,mBAAmB,EACnB,mBAAmB,EACnB,uBAAuB,EACvB,+BAA+B,EAC/B,oBAAoB,GACrB,MAAM,2BAA2B,CAAC;AAGnC,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAG7C,YAAY,EACV,eAAe,EACf,mBAAmB,EACnB,WAAW,EACX,kBAAkB,EAClB,iBAAiB,EACjB,eAAe,EACf,YAAY,GACb,MAAM,wBAAwB,CAAC;AAGhC,YAAY,EACV,2BAA2B,EAC3B,kCAAkC,EAClC,cAAc,EACd,uBAAuB,EACvB,8BAA8B,EAC9B,4BAA4B,GAC7B,MAAM,uBAAuB,CAAC;AAG/B,OAAO,EAAE,0BAA0B,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAG3F,YAAY,EAAE,uBAAuB,EAAE,MAAM,mCAAmC,CAAC;AACjF,OAAO,EAAE,qBAAqB,EAAE,MAAM,mCAAmC,CAAC"}
package/dist/index.js CHANGED
@@ -1,4 +1,4 @@
1
- import { n as createCore } from "./chunks/core-DchheNDz.js";
2
- import { n as CoreOperationException, t as CoreConfigurationException } from "./chunks/exceptions-lzD3buFw.js";
3
- import { I as DEFAULT_CORE_RESOURCE_LIMITS, R as SUPPORTED_REPOSITORY_FORMAT_VERSIONS } from "./chunks/options-CxCT3dZU.js";
4
- export { CoreConfigurationException, CoreOperationException, DEFAULT_CORE_RESOURCE_LIMITS, SUPPORTED_REPOSITORY_FORMAT_VERSIONS, createCore };
1
+ import { n as createCore, r as parseIntegrationBlock } from "./chunks/core-Cdeiu6xG.js";
2
+ import { A as ACCEPTABLE_WARNING_CODES, M as RECOGNIZED_RUNTIME_IDS, N as SUPPORTED_REPOSITORY_FORMAT_VERSIONS, j as DEFAULT_CORE_RESOURCE_LIMITS } from "./chunks/options-5x9gu2Qb.js";
3
+ import { n as CoreOperationException, t as CoreConfigurationException } from "./chunks/exceptions-IXsorE8t.js";
4
+ export { ACCEPTABLE_WARNING_CODES, CoreConfigurationException, CoreOperationException, DEFAULT_CORE_RESOURCE_LIMITS, RECOGNIZED_RUNTIME_IDS, SUPPORTED_REPOSITORY_FORMAT_VERSIONS, createCore, parseIntegrationBlock };
@@ -0,0 +1,4 @@
1
+ export type { IIntegrationBlockResult } from './types.js';
2
+ export { inspectCodingAgentIntegration } from './inspection.js';
3
+ export { parseIntegrationBlock } from './parser.js';
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/integration-validation/index.ts"],"names":[],"mappings":"AACA,YAAY,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAC;AAG1D,OAAO,EAAE,6BAA6B,EAAE,MAAM,iBAAiB,CAAC;AAChE,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC"}
@@ -0,0 +1,18 @@
1
+ import type { ICoreResourceLimits } from '../contracts/index.js';
2
+ import type { ICoreDiagnostic } from '../diagnostics/index.js';
3
+ import type { IRepositoryInspectionReader } from '../repository-inspection-session/index.js';
4
+ /**
5
+ * Checks the root integration against its installed asset with at most two reads and two lookups.
6
+ * @returns Completed content-free integration warnings, never an execution or runtime-wiring claim.
7
+ * @throws
8
+ * - RESOURCE_LIMIT_EXCEEDED: A Core resource limit was exceeded.
9
+ * - RESOURCE_LIMIT_EXCEEDED: A named repository resource limit was exceeded.
10
+ * - ABORTED: The Core operation was aborted.
11
+ * - ABORTED: The repository operation was aborted.
12
+ * - ACCESS_DENIED: Access to the repository source was denied.
13
+ * - SOURCE_UNAVAILABLE: The repository source is unavailable.
14
+ * - SNAPSHOT_CHANGED: The repository snapshot changed during the operation.
15
+ * - INVALID_SOURCE_DATA: The repository source returned invalid data.
16
+ */
17
+ export declare const inspectCodingAgentIntegration: (reader: IRepositoryInspectionReader, limits: ICoreResourceLimits, signal?: AbortSignal) => Promise<readonly ICoreDiagnostic[]>;
18
+ //# sourceMappingURL=inspection.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"inspection.d.ts","sourceRoot":"","sources":["../../src/integration-validation/inspection.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAEjE,OAAO,KAAK,EAAE,eAAe,EAAoB,MAAM,yBAAyB,CAAC;AACjF,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,2CAA2C,CAAC;AAyD7F;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,6BAA6B,GACxC,QAAQ,2BAA2B,EACnC,QAAQ,mBAAmB,EAC3B,SAAS,WAAW,KACnB,OAAO,CAAC,SAAS,eAAe,EAAE,CAgGpC,CAAC"}
@@ -0,0 +1,9 @@
1
+ import type { IIntegrationBlockResult, IManagedIntegrationRegion } from './types.js';
2
+ /** Finds one ordered marker pair on complete lines, matching the skill writer's region semantics. */
3
+ export declare const parseManagedIntegrationRegion: (text: string) => IManagedIntegrationRegion | null;
4
+ /**
5
+ * Extracts the relative installation path from the fixed relevance-gate command without executing it.
6
+ * @returns The safe installation path or the reason it could not be obtained.
7
+ */
8
+ export declare const parseIntegrationBlock: (text: string) => IIntegrationBlockResult;
9
+ //# sourceMappingURL=parser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parser.d.ts","sourceRoot":"","sources":["../../src/integration-validation/parser.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,uBAAuB,EAAE,yBAAyB,EAAE,MAAM,YAAY,CAAC;AAKrF,qGAAqG;AACrG,eAAO,MAAM,6BAA6B,GAAI,MAAM,MAAM,KAAG,yBAAyB,GAAG,IAwBxF,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,qBAAqB,GAAI,MAAM,MAAM,KAAG,uBAwBpD,CAAC"}
@@ -0,0 +1,13 @@
1
+ export interface IManagedIntegrationRegion {
2
+ start: number;
3
+ end: number;
4
+ lineEnding: '\n' | '\r\n';
5
+ }
6
+ export type IIntegrationBlockResult = {
7
+ kind: 'found';
8
+ skillPath: string;
9
+ } | {
10
+ kind: 'missing';
11
+ reason: 'block-missing' | 'block-invalid' | 'skill-path-missing' | 'skill-path-invalid';
12
+ };
13
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/integration-validation/types.ts"],"names":[],"mappings":"AACA,MAAM,WAAW,yBAAyB;IACxC,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,UAAU,EAAE,IAAI,GAAG,MAAM,CAAC;CAC3B;AAGD,MAAM,MAAM,uBAAuB,GAC/B;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,GACpC;IACE,IAAI,EAAE,SAAS,CAAC;IAChB,MAAM,EAAE,eAAe,GAAG,eAAe,GAAG,oBAAoB,GAAG,oBAAoB,CAAC;CACzF,CAAC"}
@@ -1,15 +1,13 @@
1
1
  import { type ICoreOptionsSnapshot } from '../options/index.js';
2
2
  import type { IManifestParseResult, ITextDocumentInput } from '../contracts/index.js';
3
3
  import type { ICoreOperation } from '../exceptions/index.js';
4
- import { type IRuntimeManifestLocation } from '../manifest-validation/index.js';
5
4
  export interface IManifestDocumentInspectionResult extends IManifestParseResult {
6
5
  readonly formatVersion: 1 | null;
7
- readonly runtimeLocations: readonly IRuntimeManifestLocation[];
8
6
  }
9
7
  /**
10
8
  * Inspects one complete manifest while retaining an independently trustworthy supported version.
11
9
  * @param input The canonical logical path and exact manifest text or bytes.
12
- * @param options The immutable Core limits and adapter snapshots.
10
+ * @param options The immutable Core limit snapshot.
13
11
  * @param operation The owning public or repository-level operation for typed failures.
14
12
  * @returns Frozen inspection state with all-or-nothing manifest assets and values.
15
13
  * @throws
@@ -21,7 +19,7 @@ export declare const inspectManifestDocument: (input: ITextDocumentInput, option
21
19
  /**
22
20
  * Parses and validates one complete version 1 manifest document.
23
21
  * @param input The canonical logical path and exact manifest text or bytes.
24
- * @param options The immutable Core limits and adapter snapshots.
22
+ * @param options The immutable Core limit snapshot.
25
23
  * @returns A frozen all-or-nothing manifest parse result.
26
24
  * @throws
27
25
  * - INVALID_REPOSITORY_PATH: The repository path is invalid.
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/manifest/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAsC,KAAK,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AACpG,OAAO,KAAK,EAEV,oBAAoB,EACpB,kBAAkB,EACnB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAG7D,OAAO,EAGL,KAAK,wBAAwB,EAC9B,MAAM,iCAAiC,CAAC;AAMzC,MAAM,WAAW,iCAAkC,SAAQ,oBAAoB;IAC7E,QAAQ,CAAC,aAAa,EAAE,CAAC,GAAG,IAAI,CAAC;IACjC,QAAQ,CAAC,gBAAgB,EAAE,SAAS,wBAAwB,EAAE,CAAC;CAChE;AAED;;;;;;;;;;GAUG;AACH,eAAO,MAAM,uBAAuB,GAClC,OAAO,kBAAkB,EACzB,SAAS,oBAAoB,EAC7B,YAAW,OAAO,CAChB,cAAc,EACd,gBAAgB,GAAG,sBAAsB,GAAG,kBAAkB,CAC5C,KACnB,OAAO,CAAC,iCAAiC,CA8D3C,CAAC;AAEF;;;;;;;;;GASG;AACH,eAAO,MAAM,qBAAqB,GAChC,OAAO,kBAAkB,EACzB,SAAS,oBAAoB,EAC7B,YAAW,OAAO,CAAC,cAAc,EAAE,gBAAgB,GAAG,sBAAsB,CAAoB,KAC/F,OAAO,CAAC,oBAAoB,CAS9B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/manifest/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAsC,KAAK,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AACpG,OAAO,KAAK,EAEV,oBAAoB,EACpB,kBAAkB,EACnB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAS7D,MAAM,WAAW,iCAAkC,SAAQ,oBAAoB;IAC7E,QAAQ,CAAC,aAAa,EAAE,CAAC,GAAG,IAAI,CAAC;CAClC;AAED;;;;;;;;;;GAUG;AACH,eAAO,MAAM,uBAAuB,GAClC,OAAO,kBAAkB,EACzB,SAAS,oBAAoB,EAC7B,YAAW,OAAO,CAChB,cAAc,EACd,gBAAgB,GAAG,sBAAsB,GAAG,kBAAkB,CAC5C,KACnB,OAAO,CAAC,iCAAiC,CA0D3C,CAAC;AAEF;;;;;;;;;GASG;AACH,eAAO,MAAM,qBAAqB,GAChC,OAAO,kBAAkB,EACzB,SAAS,oBAAoB,EAC7B,YAAW,OAAO,CAAC,cAAc,EAAE,gBAAgB,GAAG,sBAAsB,CAAoB,KAC/F,OAAO,CAAC,oBAAoB,CAS9B,CAAC"}
@@ -1,15 +1,9 @@
1
1
  import type { IRepositoryPath } from '@moldea.ai/repository';
2
+ import type { ICoreResourceLimits } from '../contracts/index.js';
3
+ import { type ICoreOperation } from '../exceptions/index.js';
2
4
  import { type ICoreDiagnosticCollector } from '../diagnostic-utilities/index.js';
3
- import type { ISourceRange } from '../diagnostics/index.js';
4
5
  import type { IMoldeaManifestV1, IRepositoryFormatVersion } from '../format/index.js';
5
6
  import type { IYamlNode } from '../yaml/index.js';
6
- export interface IRuntimeManifestLocation {
7
- readonly adapterId: string;
8
- readonly agentId: string;
9
- readonly path: IRepositoryPath;
10
- readonly pointer: string;
11
- readonly range: ISourceRange;
12
- }
13
7
  /**
14
8
  * Detects a supported repository-format version without treating the remaining manifest as valid.
15
9
  * @param node The trustworthy strict-YAML manifest root.
@@ -21,8 +15,11 @@ export declare const detectSupportedManifestVersion: (node: IYamlNode) => IRepos
21
15
  * @param node The parser-neutral YAML root node.
22
16
  * @param path The canonical or caller-supplied logical manifest path.
23
17
  * @param diagnostics The operation diagnostic collector.
24
- * @param runtimeLocations Mutable private source locations populated for repository inspection.
18
+ * @param limits The immutable operation limits, including the acceptance-list bound.
19
+ * @param operation The public operation receiving resource failures.
25
20
  * @returns The normalized manifest when its supported version can be interpreted.
21
+ * @throws
22
+ * - RESOURCE_LIMIT_EXCEEDED: A Core resource limit was exceeded.
26
23
  */
27
- export declare const validateManifest: (node: IYamlNode, path: IRepositoryPath, diagnostics: ICoreDiagnosticCollector, runtimeLocations: IRuntimeManifestLocation[]) => IMoldeaManifestV1 | null;
24
+ export declare const validateManifest: (node: IYamlNode, path: IRepositoryPath, diagnostics: ICoreDiagnosticCollector, limits: ICoreResourceLimits, operation: ICoreOperation) => IMoldeaManifestV1 | null;
28
25
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/manifest-validation/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAG7D,OAAO,EAEL,KAAK,wBAAwB,EAC9B,MAAM,kCAAkC,CAAC;AAC1C,OAAO,KAAK,EAAqB,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAoB/E,OAAO,KAAK,EAIV,iBAAiB,EAEjB,wBAAwB,EAOzB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,KAAK,EAAE,SAAS,EAAmB,MAAM,kBAAkB,CAAC;AAUnE,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,IAAI,EAAE,eAAe,CAAC;IAC/B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,KAAK,EAAE,YAAY,CAAC;CAC9B;AAy+BD;;;;GAIG;AACH,eAAO,MAAM,8BAA8B,GACzC,MAAM,SAAS,KACd,wBAAwB,GAAG,IAQ7B,CAAC;AAmNF;;;;;;;GAOG;AACH,eAAO,MAAM,gBAAgB,GAC3B,MAAM,SAAS,EACf,MAAM,eAAe,EACrB,aAAa,wBAAwB,EACrC,kBAAkB,wBAAwB,EAAE,KAC3C,iBAAiB,GAAG,IA+EtB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/manifest-validation/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAE7D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AACjE,OAAO,EAA0B,KAAK,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAErF,OAAO,EAEL,KAAK,wBAAwB,EAC9B,MAAM,kCAAkC,CAAC;AAsB1C,OAAO,KAAK,EAKV,iBAAiB,EAEjB,wBAAwB,EAOzB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,KAAK,EAAE,SAAS,EAAmB,MAAM,kBAAkB,CAAC;AAy+BnE;;;;GAIG;AACH,eAAO,MAAM,8BAA8B,GACzC,MAAM,SAAS,KACd,wBAAwB,GAAG,IAQ7B,CAAC;AAqVF;;;;;;;;;;GAUG;AACH,eAAO,MAAM,gBAAgB,GAC3B,MAAM,SAAS,EACf,MAAM,eAAe,EACrB,aAAa,wBAAwB,EACrC,QAAQ,mBAAmB,EAC3B,WAAW,cAAc,KACxB,iBAAiB,GAAG,IAsFtB,CAAC"}
@@ -1,4 +1,4 @@
1
- export type { INodeInspectionAdapter, INodeProjectInspection, INodeProjectInspectionInput, } from '../node-inspection/types.js';
1
+ export type { INodeProjectInspection, INodeProjectInspectionInput, } from '../node-inspection/types.js';
2
2
  export { createNodeProjectInspection } from '../node-inspection/client.js';
3
3
  export { NODE_INSPECTION_PROFILE } from '../node-inspection/constants.js';
4
4
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/node/index.ts"],"names":[],"mappings":"AACA,YAAY,EACV,sBAAsB,EACtB,sBAAsB,EACtB,2BAA2B,GAC5B,MAAM,6BAA6B,CAAC;AAGrC,OAAO,EAAE,2BAA2B,EAAE,MAAM,8BAA8B,CAAC;AAG3E,OAAO,EAAE,uBAAuB,EAAE,MAAM,iCAAiC,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/node/index.ts"],"names":[],"mappings":"AACA,YAAY,EACV,sBAAsB,EACtB,2BAA2B,GAC5B,MAAM,6BAA6B,CAAC;AAGrC,OAAO,EAAE,2BAA2B,EAAE,MAAM,8BAA8B,CAAC;AAG3E,OAAO,EAAE,uBAAuB,EAAE,MAAM,iCAAiC,CAAC"}
@@ -6,12 +6,8 @@ import type { INodeProjectInspection, INodeProjectInspectionInput } from './type
6
6
  * @throws
7
7
  * - INVALID_ARGUMENT: The Core operation received an invalid argument.
8
8
  * - INVALID_RESOURCE_LIMIT: A Core resource limit is invalid.
9
- * - DUPLICATE_ADAPTER_ID: A runtime adapter ID is registered more than once.
10
- * - RESERVED_ADAPTER_ID: A reserved runtime adapter ID was supplied.
11
- * - INVALID_ADAPTER_DEFINITION: A runtime adapter definition is invalid.
12
9
  * - ABORTED: The Core operation was aborted.
13
10
  * - RESOURCE_LIMIT_EXCEEDED: A Core resource limit was exceeded.
14
- * - ADAPTER_EXECUTION_FAILED: A runtime adapter failed during inspection.
15
11
  * - INSPECTION_BUSY: Project inspection capacity is busy. Try again shortly.
16
12
  * - INSPECTION_TIMEOUT: The isolated project inspection timed out.
17
13
  * - INSPECTION_PROCESS_FAILED: The isolated project inspection failed.
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/node-inspection/client.ts"],"names":[],"mappings":"AAsBA,OAAO,KAAK,EAEV,sBAAsB,EACtB,2BAA2B,EAC5B,MAAM,YAAY,CAAC;AA4BpB;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,eAAO,MAAM,2BAA2B,GACtC,OAAO,2BAA2B,KACjC,OAAO,CAAC,sBAAsB,CAsUhC,CAAC"}
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/node-inspection/client.ts"],"names":[],"mappings":"AAwBA,OAAO,KAAK,EAEV,sBAAsB,EACtB,2BAA2B,EAC5B,MAAM,YAAY,CAAC;AA4BpB;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,eAAO,MAAM,2BAA2B,GACtC,OAAO,2BAA2B,KACjC,OAAO,CAAC,sBAAsB,CA+UhC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/node-inspection/errors.ts"],"names":[],"mappings":"AAiBA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAC;AAEzD,iGAAiG;AACjG,eAAO,MAAM,0BAA0B,GAAI,OAAO,OAAO,KAAG,sBA+C3D,CAAC;AAyBF;;;;;GAKG;AACH,eAAO,MAAM,4BAA4B,GAAI,SAAS,sBAAsB,KAAG,KA+I9E,CAAC"}
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/node-inspection/errors.ts"],"names":[],"mappings":"AAiBA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAC;AAEzD,iGAAiG;AACjG,eAAO,MAAM,0BAA0B,GAAI,OAAO,OAAO,KAAG,sBA6C3D,CAAC;AAyBF;;;;;GAKG;AACH,eAAO,MAAM,4BAA4B,GAAI,SAAS,sBAAsB,KAAG,KAmI9E,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"protocol.d.ts","sourceRoot":"","sources":["../../src/node-inspection/protocol.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AAGhE,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAC;AAEzD,yFAAyF;AACzF,eAAO,MAAM,8BAA8B,GAAI,QAAQ,OAAO,KAAG,sBAK7D,CAAC;AAsSL;;;;;;GAMG;AACH,eAAO,MAAM,uBAAuB,GAAI,SAAS,sBAAsB,KAAG,MAazE,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,uBAAuB,GAAI,OAAO,OAAO,KAAG,sBAWxD,CAAC"}
1
+ {"version":3,"file":"protocol.d.ts","sourceRoot":"","sources":["../../src/node-inspection/protocol.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AAGhE,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAC;AAEzD,yFAAyF;AACzF,eAAO,MAAM,8BAA8B,GAAI,QAAQ,OAAO,KAAG,sBAK7D,CAAC;AAgSL;;;;;;GAMG;AACH,eAAO,MAAM,uBAAuB,GAAI,SAAS,sBAAsB,KAAG,MAazE,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,uBAAuB,GAAI,OAAO,OAAO,KAAG,sBAWxD,CAAC"}
@@ -1,19 +1,12 @@
1
1
  import type { IRepositoryReader, IRepositorySnapshot } from '@moldea.ai/repository';
2
- import type { IRepositoryFormatVersion } from '../format/index.js';
3
2
  import type { ICoreResourceLimits, IProjectInspection, IProjectInspectionPageInput, IProjectInspectionPageResult } from '../contracts/index.js';
4
- export interface INodeInspectionAdapter {
5
- readonly id: string;
6
- readonly supportedRepositoryFormatVersions: readonly IRepositoryFormatVersion[];
7
- }
8
3
  export interface INodeProjectInspectionInput {
9
4
  repository: IRepositoryReader;
10
- adapterRegistryUrl: URL;
11
5
  limits?: Partial<ICoreResourceLimits>;
12
6
  signal?: AbortSignal;
13
7
  deadline?: number;
14
8
  }
15
9
  export type INodeInspectionMetadata = Omit<IProjectInspection, 'readPage'> & {
16
- readonly adapters: readonly INodeInspectionAdapter[];
17
10
  readonly maxAnalysisHeapBytes: number;
18
11
  };
19
12
  export interface INodeProjectInspection extends INodeInspectionMetadata {
@@ -62,7 +55,6 @@ export type INodeInspectionMessage = {
62
55
  attemptId: string;
63
56
  } & ({
64
57
  kind: 'start';
65
- registryUrl: string;
66
58
  snapshot: IRepositorySnapshot;
67
59
  limits: ICoreResourceLimits;
68
60
  deadline: number;
@@ -90,6 +82,10 @@ export type INodeInspectionMessage = {
90
82
  kind: 'reader-response';
91
83
  requestId: number;
92
84
  result: unknown;
85
+ } | {
86
+ kind: 'reader-failure';
87
+ requestId: number;
88
+ failure: INodeInspectionFailure;
93
89
  } | {
94
90
  kind: 'failure';
95
91
  failure: INodeInspectionFailure;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/node-inspection/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/node-inspection/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAEpF,OAAO,KAAK,EACV,mBAAmB,EACnB,kBAAkB,EAClB,2BAA2B,EAC3B,4BAA4B,EAC7B,MAAM,uBAAuB,CAAC;AAG/B,MAAM,WAAW,2BAA2B;IAC1C,UAAU,EAAE,iBAAiB,CAAC;IAC9B,MAAM,CAAC,EAAE,OAAO,CAAC,mBAAmB,CAAC,CAAC;IACtC,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAGD,MAAM,MAAM,uBAAuB,GAAG,IAAI,CAAC,kBAAkB,EAAE,UAAU,CAAC,GAAG;IAC3E,QAAQ,CAAC,oBAAoB,EAAE,MAAM,CAAC;CACvC,CAAC;AAEF,MAAM,WAAW,sBAAuB,SAAQ,uBAAuB;IACrE;;;;;;;;;OASG;IACH,QAAQ,CAAC,KAAK,EAAE,2BAA2B,GAAG,OAAO,CAAC,4BAA4B,CAAC,CAAC;IAEpF;;;;;;;;;OASG;IACH,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CAC1B;AAGD,MAAM,MAAM,kBAAkB,GAC1B;IAAE,MAAM,EAAE,UAAU,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GACpC;IAAE,MAAM,EAAE,iBAAiB,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,GACnF;IAAE,MAAM,EAAE,cAAc,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAE/E,MAAM,WAAW,sBAAsB;IACrC,MAAM,EAAE,eAAe,GAAG,WAAW,GAAG,YAAY,GAAG,MAAM,CAAC;IAC9D,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAClC;AAED,MAAM,MAAM,sBAAsB,GAAG;IAAE,SAAS,EAAE,MAAM,CAAA;CAAE,GAAG,CACzD;IACE,IAAI,EAAE,OAAO,CAAC;IACd,QAAQ,EAAE,mBAAmB,CAAC;IAC9B,MAAM,EAAE,mBAAmB,CAAC;IAC5B,QAAQ,EAAE,MAAM,CAAC;CAClB,GACD;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,oBAAoB,EAAE,MAAM,CAAA;CAAE,GAC/C;IAAE,IAAI,EAAE,KAAK,CAAA;CAAE,GACf;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,UAAU,EAAE,uBAAuB,CAAA;CAAE,GACzD;IAAE,IAAI,EAAE,WAAW,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,2BAA2B,CAAA;CAAE,GAC5E;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,4BAA4B,CAAA;CAAE,GACzE;IAAE,IAAI,EAAE,gBAAgB,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,kBAAkB,CAAA;CAAE,GAC1E;IAAE,IAAI,EAAE,iBAAiB,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,OAAO,CAAA;CAAE,GAC/D;IAAE,IAAI,EAAE,gBAAgB,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,sBAAsB,CAAA;CAAE,GAC9E;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,OAAO,EAAE,sBAAsB,CAAA;CAAE,GACpD;IAAE,IAAI,EAAE,SAAS,CAAA;CAAE,CACtB,CAAC"}
@@ -1,6 +1,6 @@
1
- import { n as CoreOperationException } from "./chunks/exceptions-lzD3buFw.js";
2
- import { a as encodeInspectionMessage, i as decodeInspectionMessage, n as serializeInspectionFailure, r as createInspectionProcessFailure, s as NODE_INSPECTION_LIFETIME_MS } from "./chunks/errors-BQI1DEqf.js";
3
- import { n as createInspectionSender } from "./chunks/lifecycle-4EkWgEHm.js";
1
+ import { n as CoreOperationException } from "./chunks/exceptions-IXsorE8t.js";
2
+ import { a as encodeInspectionMessage, i as decodeInspectionMessage, n as serializeInspectionFailure, r as createInspectionProcessFailure, s as NODE_INSPECTION_LIFETIME_MS } from "./chunks/errors-BE4DS3Ak.js";
3
+ import { n as createInspectionSender } from "./chunks/lifecycle-D_RvxhDC.js";
4
4
  import process from "node:process";
5
5
  import { Worker } from "node:worker_threads";
6
6
  //#region src/node-inspection/runner.ts
@@ -130,7 +130,7 @@ var handleParentMessage = (frame) => {
130
130
  if (message.kind === "run") {
131
131
  if (heapMaximum === void 0 || hasRun) throw createInspectionProcessFailure();
132
132
  hasRun = true;
133
- } else if (message.kind === "reader-response") {
133
+ } else if (message.kind === "reader-response" || message.kind === "reader-failure") {
134
134
  if (!readerRequests.delete(message.requestId)) throw createInspectionProcessFailure();
135
135
  } else if (message.kind !== "read-page" || !hasRun) throw createInspectionProcessFailure();
136
136
  worker.postMessage(encodeInspectionMessage(message));
@@ -1 +1 @@
1
- {"version":3,"file":"node-runner.js","names":[],"sources":["../src/node-inspection/runner.ts"],"sourcesContent":["import process from 'node:process';\nimport { Worker } from 'node:worker_threads';\n\nimport { CoreOperationException } from '../exceptions/index.js';\n\nimport {\n NODE_INSPECTION_LIFETIME_MS,\n NODE_INSPECTION_MAX_REQUESTS,\n NODE_INSPECTION_OLD_GENERATION_MIB,\n NODE_INSPECTION_STDIO_BYTES,\n NODE_INSPECTION_YOUNG_GENERATION_MIB,\n} from './constants.js';\nimport { serializeInspectionFailure } from './errors.js';\nimport { createInspectionSender } from './lifecycle.js';\nimport {\n createInspectionProcessFailure,\n decodeInspectionMessage,\n encodeInspectionMessage,\n} from './protocol.js';\nimport type { INodeInspectionMessage } from './types.js';\n\nlet worker: Worker | undefined;\nlet attemptId: string | undefined;\nlet heapMaximum: number | undefined;\nlet deadlineTimer: NodeJS.Timeout | undefined;\nlet isClosing = false;\nlet hasRun = false;\nconst readerRequests = new Set<number>();\nconst send = createInspectionSender((frame, callback) => {\n if (process.send === undefined || !process.connected) throw createInspectionProcessFailure();\n process.send(frame, callback);\n});\n\n/** Closes the worker before disconnecting the supervisor's private IPC channel. */\nconst close = async (failure?: unknown): Promise<void> => {\n if (isClosing) return;\n isClosing = true;\n clearTimeout(deadlineTimer);\n const termination = worker?.terminate();\n if (failure !== undefined && attemptId !== undefined && process.connected) {\n try {\n await send({ attemptId, kind: 'failure', failure: serializeInspectionFailure(failure) });\n } catch {\n /* parent disconnect remains authoritative when a failure cannot be delivered */\n }\n }\n await termination;\n readerRequests.clear();\n process.removeListener('message', handleParentMessage);\n process.removeListener('disconnect', handleDisconnect);\n if (process.connected) process.disconnect();\n};\n\nconst handleDisconnect = (): void => {\n void close();\n};\nconst handleWorkerMessage = (frame: unknown): void => {\n try {\n const message = decodeInspectionMessage(frame);\n if (isClosing) return;\n if (message.attemptId !== attemptId) throw createInspectionProcessFailure();\n if (message.kind === 'ready') {\n if (heapMaximum !== undefined || hasRun) throw createInspectionProcessFailure();\n heapMaximum = message.maxAnalysisHeapBytes;\n } else if (message.kind === 'reader-request') {\n if (\n !hasRun ||\n readerRequests.has(message.requestId) ||\n readerRequests.size >= NODE_INSPECTION_MAX_REQUESTS\n )\n throw createInspectionProcessFailure();\n readerRequests.add(message.requestId);\n } else if (\n message.kind === 'failure' &&\n message.failure.options['limit'] === 'maxAnalysisHeapBytes'\n )\n throw createInspectionProcessFailure();\n else if (!['prepared', 'page', 'failure'].includes(message.kind))\n throw createInspectionProcessFailure();\n void send(message).catch((cause: unknown) => close(cause));\n } catch (cause) {\n void close(cause);\n }\n};\n\n/** Starts independent supervision before creating the sole analysis worker. */\nconst start = (message: Extract<INodeInspectionMessage, { kind: 'start' }>): void => {\n if (attemptId !== undefined || isClosing) throw createInspectionProcessFailure();\n attemptId = message.attemptId;\n clearTimeout(deadlineTimer);\n const remaining = Math.min(NODE_INSPECTION_LIFETIME_MS, message.deadline - Date.now());\n if (remaining <= 0) {\n void close(\n new CoreOperationException({\n code: 'INSPECTION_TIMEOUT',\n operation: 'create-project-inspection',\n }),\n );\n return;\n }\n deadlineTimer = setTimeout(() => {\n void close(\n new CoreOperationException({\n code: 'INSPECTION_TIMEOUT',\n operation: 'create-project-inspection',\n }),\n );\n }, remaining);\n worker = new Worker(new URL(import.meta.resolve('#moldea-core-analysis-worker')), {\n execArgv: [],\n env: process.env,\n stdout: true,\n stderr: true,\n resourceLimits: {\n maxOldGenerationSizeMb: NODE_INSPECTION_OLD_GENERATION_MIB,\n maxYoungGenerationSizeMb: NODE_INSPECTION_YOUNG_GENERATION_MIB,\n },\n workerData: encodeInspectionMessage(message),\n });\n let stdioBytes = 0;\n const consumeStdio = (chunk: Buffer): void => {\n stdioBytes += chunk.byteLength;\n if (stdioBytes > NODE_INSPECTION_STDIO_BYTES) void close(createInspectionProcessFailure());\n };\n worker.stdout.on('data', consumeStdio);\n worker.stderr.on('data', consumeStdio);\n worker.on('message', handleWorkerMessage);\n worker.on('messageerror', (cause: unknown) => {\n void close(createInspectionProcessFailure(cause));\n });\n worker.once('error', (error: Error & { code?: string }) => {\n const failure =\n error.code === 'ERR_WORKER_OUT_OF_MEMORY' && heapMaximum !== undefined\n ? new CoreOperationException({\n code: 'RESOURCE_LIMIT_EXCEEDED',\n operation: 'create-project-inspection',\n limit: 'maxAnalysisHeapBytes',\n limitMaximum: heapMaximum,\n observedUsage: null,\n nextAction: 'review-inspection-capacity',\n })\n : createInspectionProcessFailure(error);\n void close(failure);\n });\n worker.once('exit', () => {\n if (!isClosing) void close(createInspectionProcessFailure());\n });\n};\n\nconst handleParentMessage = (frame: unknown): void => {\n try {\n const message = decodeInspectionMessage(frame);\n if (isClosing) return;\n if (message.kind === 'start') {\n start(message);\n return;\n }\n if (message.attemptId !== attemptId || worker === undefined)\n throw createInspectionProcessFailure();\n if (message.kind === 'dispose') {\n void close();\n return;\n }\n if (message.kind === 'run') {\n if (heapMaximum === undefined || hasRun) throw createInspectionProcessFailure();\n hasRun = true;\n } else if (message.kind === 'reader-response') {\n if (!readerRequests.delete(message.requestId)) throw createInspectionProcessFailure();\n } else if (message.kind !== 'read-page' || !hasRun) throw createInspectionProcessFailure();\n worker.postMessage(encodeInspectionMessage(message));\n } catch (cause) {\n void close(cause);\n }\n};\n\nprocess.on('disconnect', handleDisconnect);\nprocess.on('message', handleParentMessage);\ndeadlineTimer = setTimeout(() => {\n void close();\n}, NODE_INSPECTION_LIFETIME_MS);\nif (process.send === undefined || !process.connected) void close();\n"],"mappings":"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"}
1
+ {"version":3,"file":"node-runner.js","names":[],"sources":["../src/node-inspection/runner.ts"],"sourcesContent":["import process from 'node:process';\nimport { Worker } from 'node:worker_threads';\n\nimport { CoreOperationException } from '../exceptions/index.js';\n\nimport {\n NODE_INSPECTION_LIFETIME_MS,\n NODE_INSPECTION_MAX_REQUESTS,\n NODE_INSPECTION_OLD_GENERATION_MIB,\n NODE_INSPECTION_STDIO_BYTES,\n NODE_INSPECTION_YOUNG_GENERATION_MIB,\n} from './constants.js';\nimport { serializeInspectionFailure } from './errors.js';\nimport { createInspectionSender } from './lifecycle.js';\nimport {\n createInspectionProcessFailure,\n decodeInspectionMessage,\n encodeInspectionMessage,\n} from './protocol.js';\nimport type { INodeInspectionMessage } from './types.js';\n\nlet worker: Worker | undefined;\nlet attemptId: string | undefined;\nlet heapMaximum: number | undefined;\nlet deadlineTimer: NodeJS.Timeout | undefined;\nlet isClosing = false;\nlet hasRun = false;\nconst readerRequests = new Set<number>();\nconst send = createInspectionSender((frame, callback) => {\n if (process.send === undefined || !process.connected) throw createInspectionProcessFailure();\n process.send(frame, callback);\n});\n\n/** Closes the worker before disconnecting the supervisor's private IPC channel. */\nconst close = async (failure?: unknown): Promise<void> => {\n if (isClosing) return;\n isClosing = true;\n clearTimeout(deadlineTimer);\n const termination = worker?.terminate();\n if (failure !== undefined && attemptId !== undefined && process.connected) {\n try {\n await send({ attemptId, kind: 'failure', failure: serializeInspectionFailure(failure) });\n } catch {\n /* parent disconnect remains authoritative when a failure cannot be delivered */\n }\n }\n await termination;\n readerRequests.clear();\n process.removeListener('message', handleParentMessage);\n process.removeListener('disconnect', handleDisconnect);\n if (process.connected) process.disconnect();\n};\n\nconst handleDisconnect = (): void => {\n void close();\n};\nconst handleWorkerMessage = (frame: unknown): void => {\n try {\n const message = decodeInspectionMessage(frame);\n if (isClosing) return;\n if (message.attemptId !== attemptId) throw createInspectionProcessFailure();\n if (message.kind === 'ready') {\n if (heapMaximum !== undefined || hasRun) throw createInspectionProcessFailure();\n heapMaximum = message.maxAnalysisHeapBytes;\n } else if (message.kind === 'reader-request') {\n if (\n !hasRun ||\n readerRequests.has(message.requestId) ||\n readerRequests.size >= NODE_INSPECTION_MAX_REQUESTS\n )\n throw createInspectionProcessFailure();\n readerRequests.add(message.requestId);\n } else if (\n message.kind === 'failure' &&\n message.failure.options['limit'] === 'maxAnalysisHeapBytes'\n )\n throw createInspectionProcessFailure();\n else if (!['prepared', 'page', 'failure'].includes(message.kind))\n throw createInspectionProcessFailure();\n void send(message).catch((cause: unknown) => close(cause));\n } catch (cause) {\n void close(cause);\n }\n};\n\n/** Starts independent supervision before creating the sole analysis worker. */\nconst start = (message: Extract<INodeInspectionMessage, { kind: 'start' }>): void => {\n if (attemptId !== undefined || isClosing) throw createInspectionProcessFailure();\n attemptId = message.attemptId;\n clearTimeout(deadlineTimer);\n const remaining = Math.min(NODE_INSPECTION_LIFETIME_MS, message.deadline - Date.now());\n if (remaining <= 0) {\n void close(\n new CoreOperationException({\n code: 'INSPECTION_TIMEOUT',\n operation: 'create-project-inspection',\n }),\n );\n return;\n }\n deadlineTimer = setTimeout(() => {\n void close(\n new CoreOperationException({\n code: 'INSPECTION_TIMEOUT',\n operation: 'create-project-inspection',\n }),\n );\n }, remaining);\n worker = new Worker(new URL(import.meta.resolve('#moldea-core-analysis-worker')), {\n execArgv: [],\n env: process.env,\n stdout: true,\n stderr: true,\n resourceLimits: {\n maxOldGenerationSizeMb: NODE_INSPECTION_OLD_GENERATION_MIB,\n maxYoungGenerationSizeMb: NODE_INSPECTION_YOUNG_GENERATION_MIB,\n },\n workerData: encodeInspectionMessage(message),\n });\n let stdioBytes = 0;\n const consumeStdio = (chunk: Buffer): void => {\n stdioBytes += chunk.byteLength;\n if (stdioBytes > NODE_INSPECTION_STDIO_BYTES) void close(createInspectionProcessFailure());\n };\n worker.stdout.on('data', consumeStdio);\n worker.stderr.on('data', consumeStdio);\n worker.on('message', handleWorkerMessage);\n worker.on('messageerror', (cause: unknown) => {\n void close(createInspectionProcessFailure(cause));\n });\n worker.once('error', (error: Error & { code?: string }) => {\n const failure =\n error.code === 'ERR_WORKER_OUT_OF_MEMORY' && heapMaximum !== undefined\n ? new CoreOperationException({\n code: 'RESOURCE_LIMIT_EXCEEDED',\n operation: 'create-project-inspection',\n limit: 'maxAnalysisHeapBytes',\n limitMaximum: heapMaximum,\n observedUsage: null,\n nextAction: 'review-inspection-capacity',\n })\n : createInspectionProcessFailure(error);\n void close(failure);\n });\n worker.once('exit', () => {\n if (!isClosing) void close(createInspectionProcessFailure());\n });\n};\n\nconst handleParentMessage = (frame: unknown): void => {\n try {\n const message = decodeInspectionMessage(frame);\n if (isClosing) return;\n if (message.kind === 'start') {\n start(message);\n return;\n }\n if (message.attemptId !== attemptId || worker === undefined)\n throw createInspectionProcessFailure();\n if (message.kind === 'dispose') {\n void close();\n return;\n }\n if (message.kind === 'run') {\n if (heapMaximum === undefined || hasRun) throw createInspectionProcessFailure();\n hasRun = true;\n } else if (message.kind === 'reader-response' || message.kind === 'reader-failure') {\n if (!readerRequests.delete(message.requestId)) throw createInspectionProcessFailure();\n } else if (message.kind !== 'read-page' || !hasRun) throw createInspectionProcessFailure();\n worker.postMessage(encodeInspectionMessage(message));\n } catch (cause) {\n void close(cause);\n }\n};\n\nprocess.on('disconnect', handleDisconnect);\nprocess.on('message', handleParentMessage);\ndeadlineTimer = setTimeout(() => {\n void close();\n}, NODE_INSPECTION_LIFETIME_MS);\nif (process.send === undefined || !process.connected) void close();\n"],"mappings":";;;;;;AAqBA,IAAI;AACJ,IAAI;AACJ,IAAI;AACJ,IAAI;AACJ,IAAI,YAAY;AAChB,IAAI,SAAS;AACb,IAAM,iCAAiB,IAAI,IAAY;AACvC,IAAM,OAAO,wBAAwB,OAAO,aAAa;CACvD,IAAI,QAAQ,SAAS,KAAA,KAAa,CAAC,QAAQ,WAAW,MAAM,+BAA+B;CAC3F,QAAQ,KAAK,OAAO,QAAQ;AAC9B,CAAC;;AAGD,IAAM,QAAQ,OAAO,YAAqC;CACxD,IAAI,WAAW;CACf,YAAY;CACZ,aAAa,aAAa;CAC1B,MAAM,cAAc,QAAQ,UAAU;CACtC,IAAI,YAAY,KAAA,KAAa,cAAc,KAAA,KAAa,QAAQ,WAC9D,IAAI;EACF,MAAM,KAAK;GAAE;GAAW,MAAM;GAAW,SAAS,2BAA2B,OAAO;EAAE,CAAC;CACzF,QAAQ,CAER;CAEF,MAAM;CACN,eAAe,MAAM;CACrB,QAAQ,eAAe,WAAW,mBAAmB;CACrD,QAAQ,eAAe,cAAc,gBAAgB;CACrD,IAAI,QAAQ,WAAW,QAAQ,WAAW;AAC5C;AAEA,IAAM,yBAA+B;CACnC,MAAW;AACb;AACA,IAAM,uBAAuB,UAAyB;CACpD,IAAI;EACF,MAAM,UAAU,wBAAwB,KAAK;EAC7C,IAAI,WAAW;EACf,IAAI,QAAQ,cAAc,WAAW,MAAM,+BAA+B;EAC1E,IAAI,QAAQ,SAAS,SAAS;GAC5B,IAAI,gBAAgB,KAAA,KAAa,QAAQ,MAAM,+BAA+B;GAC9E,cAAc,QAAQ;EACxB,OAAO,IAAI,QAAQ,SAAS,kBAAkB;GAC5C,IACE,CAAC,UACD,eAAe,IAAI,QAAQ,SAAS,KACpC,eAAe,QAAA,GAEf,MAAM,+BAA+B;GACvC,eAAe,IAAI,QAAQ,SAAS;EACtC,OAAO,IACL,QAAQ,SAAS,aACjB,QAAQ,QAAQ,QAAQ,aAAa,wBAErC,MAAM,+BAA+B;OAClC,IAAI,CAAC;GAAC;GAAY;GAAQ;EAAS,CAAC,CAAC,SAAS,QAAQ,IAAI,GAC7D,MAAM,+BAA+B;EACvC,KAAU,OAAO,CAAC,CAAC,OAAO,UAAmB,MAAM,KAAK,CAAC;CAC3D,SAAS,OAAO;EACd,MAAW,KAAK;CAClB;AACF;;AAGA,IAAM,SAAS,YAAsE;CACnF,IAAI,cAAc,KAAA,KAAa,WAAW,MAAM,+BAA+B;CAC/E,YAAY,QAAQ;CACpB,aAAa,aAAa;CAC1B,MAAM,YAAY,KAAK,IAAI,6BAA6B,QAAQ,WAAW,KAAK,IAAI,CAAC;CACrF,IAAI,aAAa,GAAG;EAClB,MACE,IAAI,uBAAuB;GACzB,MAAM;GACN,WAAW;EACb,CAAC,CACH;EACA;CACF;CACA,gBAAgB,iBAAiB;EAC/B,MACE,IAAI,uBAAuB;GACzB,MAAM;GACN,WAAW;EACb,CAAC,CACH;CACF,GAAG,SAAS;CACZ,SAAS,IAAI,OAAO,IAAI,IAAI,YAAY,QAAQ,8BAA8B,CAAC,GAAG;EAChF,UAAU,CAAC;EACX,KAAK,QAAQ;EACb,QAAQ;EACR,QAAQ;EACR,gBAAgB;GACd,wBAAA;GACA,0BAAA;EACF;EACA,YAAY,wBAAwB,OAAO;CAC7C,CAAC;CACD,IAAI,aAAa;CACjB,MAAM,gBAAgB,UAAwB;EAC5C,cAAc,MAAM;EACpB,IAAI,aAAA,OAA0C,MAAW,+BAA+B,CAAC;CAC3F;CACA,OAAO,OAAO,GAAG,QAAQ,YAAY;CACrC,OAAO,OAAO,GAAG,QAAQ,YAAY;CACrC,OAAO,GAAG,WAAW,mBAAmB;CACxC,OAAO,GAAG,iBAAiB,UAAmB;EAC5C,MAAW,+BAA+B,KAAK,CAAC;CAClD,CAAC;CACD,OAAO,KAAK,UAAU,UAAqC;EAYzD,MAVE,MAAM,SAAS,8BAA8B,gBAAgB,KAAA,IACzD,IAAI,uBAAuB;GACzB,MAAM;GACN,WAAW;GACX,OAAO;GACP,cAAc;GACd,eAAe;GACf,YAAY;EACd,CAAC,IACD,+BAA+B,KAAK,CACxB;CACpB,CAAC;CACD,OAAO,KAAK,cAAc;EACxB,IAAI,CAAC,WAAW,MAAW,+BAA+B,CAAC;CAC7D,CAAC;AACH;AAEA,IAAM,uBAAuB,UAAyB;CACpD,IAAI;EACF,MAAM,UAAU,wBAAwB,KAAK;EAC7C,IAAI,WAAW;EACf,IAAI,QAAQ,SAAS,SAAS;GAC5B,MAAM,OAAO;GACb;EACF;EACA,IAAI,QAAQ,cAAc,aAAa,WAAW,KAAA,GAChD,MAAM,+BAA+B;EACvC,IAAI,QAAQ,SAAS,WAAW;GAC9B,MAAW;GACX;EACF;EACA,IAAI,QAAQ,SAAS,OAAO;GAC1B,IAAI,gBAAgB,KAAA,KAAa,QAAQ,MAAM,+BAA+B;GAC9E,SAAS;EACX,OAAO,IAAI,QAAQ,SAAS,qBAAqB,QAAQ,SAAS,kBAC5D;OAAA,CAAC,eAAe,OAAO,QAAQ,SAAS,GAAG,MAAM,+BAA+B;EAAA,OAC/E,IAAI,QAAQ,SAAS,eAAe,CAAC,QAAQ,MAAM,+BAA+B;EACzF,OAAO,YAAY,wBAAwB,OAAO,CAAC;CACrD,SAAS,OAAO;EACd,MAAW,KAAK;CAClB;AACF;AAEA,QAAQ,GAAG,cAAc,gBAAgB;AACzC,QAAQ,GAAG,WAAW,mBAAmB;AACzC,gBAAgB,iBAAiB;CAC/B,MAAW;AACb,GAAG,2BAA2B;AAC9B,IAAI,QAAQ,SAAS,KAAA,KAAa,CAAC,QAAQ,WAAW,MAAW"}
package/dist/node.js CHANGED
@@ -1,8 +1,9 @@
1
- import { n as CoreOperationException } from "./chunks/exceptions-lzD3buFw.js";
2
- import { F as freezeRecursively, n as normalizeCoreOptions } from "./chunks/options-CxCT3dZU.js";
3
- import { c as NODE_INSPECTION_PROFILE, d as NODE_INSPECTION_TRANSPORT_BYTES, i as decodeInspectionMessage, r as createInspectionProcessFailure, s as NODE_INSPECTION_LIFETIME_MS, t as deserializeInspectionFailure } from "./chunks/errors-BQI1DEqf.js";
4
- import { n as createInspectionSender, r as superviseInspectionChild, t as createInspectionEnvironment } from "./chunks/lifecycle-4EkWgEHm.js";
5
- import { t as executeRepositoryRpc } from "./chunks/repository-rpc-BWi6X1la.js";
1
+ import { c as freezeRecursively, n as normalizeCoreOptions } from "./chunks/options-5x9gu2Qb.js";
2
+ import { n as CoreOperationException } from "./chunks/exceptions-IXsorE8t.js";
3
+ import { c as NODE_INSPECTION_PROFILE, d as NODE_INSPECTION_TRANSPORT_BYTES, i as decodeInspectionMessage, n as serializeInspectionFailure, r as createInspectionProcessFailure, s as NODE_INSPECTION_LIFETIME_MS, t as deserializeInspectionFailure } from "./chunks/errors-BE4DS3Ak.js";
4
+ import { n as createInspectionSender, r as superviseInspectionChild, t as createInspectionEnvironment } from "./chunks/lifecycle-D_RvxhDC.js";
5
+ import { t as executeRepositoryRpc } from "./chunks/repository-rpc-B_y0Kspf.js";
6
+ import { RepositorySourceException } from "@moldea.ai/repository";
6
7
  import { fork } from "node:child_process";
7
8
  import { randomBytes } from "node:crypto";
8
9
  import { fileURLToPath } from "node:url";
@@ -35,12 +36,8 @@ var aborted = (cause) => new CoreOperationException({
35
36
  * @throws
36
37
  * - INVALID_ARGUMENT: The Core operation received an invalid argument.
37
38
  * - INVALID_RESOURCE_LIMIT: A Core resource limit is invalid.
38
- * - DUPLICATE_ADAPTER_ID: A runtime adapter ID is registered more than once.
39
- * - RESERVED_ADAPTER_ID: A reserved runtime adapter ID was supplied.
40
- * - INVALID_ADAPTER_DEFINITION: A runtime adapter definition is invalid.
41
39
  * - ABORTED: The Core operation was aborted.
42
40
  * - RESOURCE_LIMIT_EXCEEDED: A Core resource limit was exceeded.
43
- * - ADAPTER_EXECUTION_FAILED: A runtime adapter failed during inspection.
44
41
  * - INSPECTION_BUSY: Project inspection capacity is busy. Try again shortly.
45
42
  * - INSPECTION_TIMEOUT: The isolated project inspection timed out.
46
43
  * - INSPECTION_PROCESS_FAILED: The isolated project inspection failed.
@@ -73,7 +70,7 @@ var createNodeProjectInspection = async (input) => {
73
70
  operation: "create-project-inspection"
74
71
  });
75
72
  const { limits } = normalizeCoreOptions({ ...input.limits === void 0 ? {} : { limits: input.limits } });
76
- if (!(input.adapterRegistryUrl instanceof URL) || input.adapterRegistryUrl.protocol !== "file:" || input.adapterRegistryUrl.search !== "" || input.adapterRegistryUrl.hash !== "" || input.deadline !== void 0 && (!Number.isSafeInteger(input.deadline) || input.deadline < 0)) throw new CoreOperationException({
73
+ if (input.deadline !== void 0 && (!Number.isSafeInteger(input.deadline) || input.deadline < 0)) throw new CoreOperationException({
77
74
  code: "INVALID_ARGUMENT",
78
75
  operation: "create-project-inspection"
79
76
  });
@@ -227,7 +224,21 @@ var createNodeProjectInspection = async (input) => {
227
224
  result
228
225
  });
229
226
  } catch (cause) {
230
- fail(cause);
227
+ if (cause instanceof RepositorySourceException && [
228
+ "ENTRY_NOT_FOUND",
229
+ "ENTRY_NOT_FILE",
230
+ "RESOURCE_LIMIT_EXCEEDED"
231
+ ].includes(cause.code)) try {
232
+ if (!isClosing) await send({
233
+ attemptId,
234
+ kind: "reader-failure",
235
+ requestId: message.requestId,
236
+ failure: serializeInspectionFailure(cause)
237
+ });
238
+ } catch (transportFailure) {
239
+ fail(transportFailure);
240
+ }
241
+ else fail(cause);
231
242
  } finally {
232
243
  readerWork.delete(work);
233
244
  }
@@ -251,7 +262,6 @@ var createNodeProjectInspection = async (input) => {
251
262
  await send({
252
263
  attemptId,
253
264
  kind: "start",
254
- registryUrl: input.adapterRegistryUrl.href,
255
265
  snapshot,
256
266
  limits,
257
267
  deadline
@@ -268,7 +278,7 @@ var createNodeProjectInspection = async (input) => {
268
278
  if (pendingPage !== void 0 || pageInput === null || typeof pageInput !== "object" || Reflect.ownKeys(pageInput).some((key) => key !== "cursor" && key !== "maxItems" && key !== "view") || !Number.isSafeInteger(pageInput.maxItems) || pageInput.maxItems < 1 || pageInput.maxItems > limits.maxEntries || ![
269
279
  "all",
270
280
  "diagnostics",
271
- "evidence",
281
+ "coverage",
272
282
  "metadata"
273
283
  ].includes(pageInput.view) || pageInput.cursor !== void 0 && typeof pageInput.cursor !== "string") throw new CoreOperationException({
274
284
  code: "INVALID_ARGUMENT",
package/dist/node.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"node.js","names":[],"sources":["../src/node-inspection/client.ts"],"sourcesContent":["import { fork } from 'node:child_process';\nimport { randomBytes } from 'node:crypto';\nimport { fileURLToPath } from 'node:url';\n\nimport { CoreOperationException } from '../exceptions/index.js';\nimport { freezeRecursively } from '../immutable/index.js';\nimport { normalizeCoreOptions } from '../options/index.js';\n\nimport {\n NODE_INSPECTION_LIFETIME_MS,\n NODE_INSPECTION_MAX_REQUESTS,\n NODE_INSPECTION_STDIO_BYTES,\n NODE_INSPECTION_TRANSPORT_BYTES,\n} from './constants.js';\nimport { deserializeInspectionFailure } from './errors.js';\nimport {\n createInspectionEnvironment,\n createInspectionSender,\n superviseInspectionChild,\n} from './lifecycle.js';\nimport { createInspectionProcessFailure, decodeInspectionMessage } from './protocol.js';\nimport { executeRepositoryRpc } from './repository-rpc.js';\nimport type {\n INodeInspectionMetadata,\n INodeProjectInspection,\n INodeProjectInspectionInput,\n} from './types.js';\nimport type { IProjectInspectionPageResult } from '../contracts/index.js';\n\nlet isInspectionActive = false;\n\n/** Stores one completion without an unhandled rejection before its owner begins awaiting it. */\nconst createCompletion = <T>(): {\n promise: Promise<T>;\n resolve: (result: T) => void;\n reject: (cause: unknown) => void;\n} => {\n let resolve!: (result: T) => void;\n let reject!: (cause: unknown) => void;\n const promise = new Promise<T>((resolveResult, rejectResult) => {\n resolve = resolveResult;\n reject = rejectResult;\n });\n void promise.catch(() => {});\n return { promise, resolve, reject };\n};\n\nconst aborted = (cause?: unknown): CoreOperationException =>\n new CoreOperationException({\n code: 'ABORTED',\n operation: 'create-project-inspection',\n ...(cause === undefined ? {} : { cause }),\n });\n\n/**\n * Prepares content-free inspection inside one supervised subprocess and one analysis worker.\n * The caller owns actual reader work and must dispose the returned handle before publishing success.\n * @returns An async paging handle after the worker reports its actual heap and prepares inspection.\n * @throws\n * - INVALID_ARGUMENT: The Core operation received an invalid argument.\n * - INVALID_RESOURCE_LIMIT: A Core resource limit is invalid.\n * - DUPLICATE_ADAPTER_ID: A runtime adapter ID is registered more than once.\n * - RESERVED_ADAPTER_ID: A reserved runtime adapter ID was supplied.\n * - INVALID_ADAPTER_DEFINITION: A runtime adapter definition is invalid.\n * - ABORTED: The Core operation was aborted.\n * - RESOURCE_LIMIT_EXCEEDED: A Core resource limit was exceeded.\n * - ADAPTER_EXECUTION_FAILED: A runtime adapter failed during inspection.\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 * - INVALID_REPOSITORY_PATH: The repository path is invalid.\n * - ENTRY_NOT_FOUND: The requested repository entry was not found.\n * - ENTRY_NOT_FILE: The requested repository entry is not a file.\n * - ENTRY_NOT_DIRECTORY: The requested repository entry is not a directory.\n * - INVALID_PAGE_REQUEST: The repository page request is invalid.\n * - ACCESS_DENIED: Access to the repository source was denied.\n * - SOURCE_UNAVAILABLE: The repository source is unavailable.\n * - SNAPSHOT_CHANGED: The repository snapshot changed during the operation.\n * - PROVIDER_INCOMPLETE: The repository provider cannot expose a complete result.\n * - INVALID_SOURCE_DATA: The repository source returned invalid data.\n * - RESOURCE_LIMIT_EXCEEDED: A named repository resource limit was exceeded.\n * - ABORTED: The repository operation was aborted.\n */\nexport const createNodeProjectInspection = async (\n input: INodeProjectInspectionInput,\n): Promise<INodeProjectInspection> => {\n if (\n input === null ||\n typeof input !== 'object' ||\n input.repository === null ||\n typeof input.repository !== 'object' ||\n typeof input.repository.getEntry !== 'function' ||\n typeof input.repository.listEntriesPage !== 'function' ||\n typeof input.repository.readFilePage !== 'function' ||\n input.repository.snapshot === null ||\n typeof input.repository.snapshot !== 'object' ||\n typeof input.repository.snapshot.id !== 'string' ||\n input.repository.snapshot.id.length === 0 ||\n typeof input.repository.snapshot.sourceKind !== 'string' ||\n input.repository.snapshot.sourceKind.length === 0\n ) {\n throw new CoreOperationException({\n code: 'INVALID_ARGUMENT',\n operation: 'create-project-inspection',\n });\n }\n let repository: INodeProjectInspectionInput['repository'] | undefined = input.repository;\n const snapshot = { id: repository.snapshot.id, sourceKind: repository.snapshot.sourceKind };\n const signal = input.signal;\n if (\n signal !== undefined &&\n (signal === null ||\n typeof signal !== 'object' ||\n typeof signal.aborted !== 'boolean' ||\n typeof signal.addEventListener !== 'function' ||\n typeof signal.removeEventListener !== 'function')\n ) {\n throw new CoreOperationException({\n code: 'INVALID_ARGUMENT',\n operation: 'create-project-inspection',\n });\n }\n const { limits } = normalizeCoreOptions({\n ...(input.limits === undefined ? {} : { limits: input.limits }),\n });\n if (\n !(input.adapterRegistryUrl instanceof URL) ||\n input.adapterRegistryUrl.protocol !== 'file:' ||\n input.adapterRegistryUrl.search !== '' ||\n input.adapterRegistryUrl.hash !== '' ||\n (input.deadline !== undefined && (!Number.isSafeInteger(input.deadline) || input.deadline < 0))\n )\n throw new CoreOperationException({\n code: 'INVALID_ARGUMENT',\n operation: 'create-project-inspection',\n });\n if (signal?.aborted === true) throw aborted(signal.reason);\n if (isInspectionActive)\n throw new CoreOperationException({\n code: 'INSPECTION_BUSY',\n operation: 'create-project-inspection',\n });\n if (limits.maxRetainedBytes <= NODE_INSPECTION_TRANSPORT_BYTES)\n throw new CoreOperationException({\n code: 'RESOURCE_LIMIT_EXCEEDED',\n operation: 'create-project-inspection',\n limit: 'maxRetainedBytes',\n limitMaximum: limits.maxRetainedBytes,\n observedUsage: NODE_INSPECTION_TRANSPORT_BYTES,\n nextAction: 'reduce-input-or-increase-limit',\n });\n const deadline = Math.min(Date.now() + NODE_INSPECTION_LIFETIME_MS, input.deadline ?? Infinity);\n if (deadline <= Date.now())\n throw new CoreOperationException({\n code: 'INSPECTION_TIMEOUT',\n operation: 'create-project-inspection',\n });\n isInspectionActive = true;\n const controller = new AbortController();\n const attemptId = randomBytes(16).toString('hex');\n const prepared = createCompletion<INodeInspectionMetadata>();\n let pendingPage: ReturnType<typeof createCompletion<IProjectInspectionPageResult>> | undefined;\n let pageRequestId = 0;\n let lastReaderRequestId = -1;\n let hasAcknowledgedHeap = false;\n let heapMaximum: number | undefined;\n let hasPrepared = false;\n let isClosing = false;\n let failure: { cause: Error } | undefined;\n let cleanupPromise: Promise<void> | undefined;\n const readerWork = new Set<Promise<unknown>>();\n const relayWork = new Set<Promise<void>>();\n const child = (() => {\n try {\n return fork(fileURLToPath(import.meta.resolve('#moldea-core-runner')), [], {\n execPath: process.execPath,\n execArgv: [],\n env: createInspectionEnvironment(),\n serialization: 'advanced',\n stdio: ['ignore', 'ignore', 'pipe', 'ipc'],\n });\n } catch (cause) {\n isInspectionActive = false;\n throw createInspectionProcessFailure(cause);\n }\n })();\n const send = createInspectionSender((frame, callback) => {\n if (!child.connected) throw createInspectionProcessFailure();\n child.send(frame, callback);\n });\n const supervision = superviseInspectionChild(child, () => {\n void send({ attemptId, kind: 'dispose' }).catch(() => {\n child.kill('SIGKILL');\n });\n });\n\n /** Keeps admission until child closure and every real reader promise has settled. */\n const cleanup = (): Promise<void> => {\n cleanupPromise ??= (async () => {\n isClosing = true;\n controller.abort(failure?.cause);\n supervision.terminate();\n await supervision.closed;\n await Promise.allSettled([...readerWork, ...relayWork]);\n repository = undefined;\n clearTimeout(timer);\n if (failure === undefined && Date.now() >= deadline) {\n fail(\n new CoreOperationException({\n code: 'INSPECTION_TIMEOUT',\n operation: 'create-project-inspection',\n }),\n );\n }\n signal?.removeEventListener('abort', handleAbort);\n child.removeAllListeners('message');\n child.removeAllListeners('error');\n child.stderr?.removeAllListeners('data');\n isInspectionActive = false;\n })();\n return cleanupPromise;\n };\n const fail = (cause: unknown): void => {\n if (failure === undefined)\n failure = { cause: cause instanceof Error ? cause : createInspectionProcessFailure(cause) };\n prepared.reject(failure.cause);\n pendingPage?.reject(failure.cause);\n void cleanup();\n };\n const getFailureCause = (): Error | undefined => failure?.cause;\n const handleAbort = (): void => {\n fail(aborted(signal?.reason));\n };\n const timer = setTimeout(\n () => {\n fail(\n new CoreOperationException({\n code: 'INSPECTION_TIMEOUT',\n operation: 'create-project-inspection',\n }),\n );\n },\n Math.max(1, deadline - Date.now()),\n );\n signal?.addEventListener('abort', handleAbort, { once: true });\n // Re-read through a function because cancellation can change during listener registration.\n const isCallerAborted = (): boolean => signal?.aborted === true;\n if (isCallerAborted()) handleAbort();\n child.once('error', (cause: unknown) => {\n fail(createInspectionProcessFailure(cause));\n });\n void supervision.closed.then(() => {\n if (!isClosing) fail(createInspectionProcessFailure());\n });\n let stderrBytes = 0;\n child.stderr?.on('data', (chunk: Buffer) => {\n stderrBytes += chunk.byteLength;\n if (stderrBytes > NODE_INSPECTION_STDIO_BYTES) fail(createInspectionProcessFailure());\n });\n child.on('message', (frame: unknown) => {\n if (isClosing) return;\n try {\n const message = decodeInspectionMessage(frame);\n if (message.attemptId !== attemptId) throw createInspectionProcessFailure();\n if (message.kind === 'ready') {\n if (hasAcknowledgedHeap) throw createInspectionProcessFailure();\n heapMaximum = message.maxAnalysisHeapBytes;\n hasAcknowledgedHeap = true;\n void send({ attemptId, kind: 'run' }).catch(fail);\n } else if (message.kind === 'prepared') {\n if (\n !hasAcknowledgedHeap ||\n hasPrepared ||\n message.inspection.maxAnalysisHeapBytes !== heapMaximum ||\n message.inspection.source.id !== snapshot.id ||\n message.inspection.source.sourceKind !== snapshot.sourceKind\n )\n throw createInspectionProcessFailure();\n hasPrepared = true;\n prepared.resolve(freezeRecursively(message.inspection));\n } else if (message.kind === 'reader-request') {\n if (\n !hasAcknowledgedHeap ||\n hasPrepared ||\n message.requestId !== lastReaderRequestId + 1 ||\n readerWork.size >= NODE_INSPECTION_MAX_REQUESTS\n )\n throw createInspectionProcessFailure();\n lastReaderRequestId = message.requestId;\n if (repository === undefined) throw createInspectionProcessFailure();\n const work = executeRepositoryRpc(repository, message.request, controller.signal);\n readerWork.add(work);\n const relay = (async () => {\n try {\n const result = await work;\n readerWork.delete(work);\n if (!isClosing)\n await send({\n attemptId,\n kind: 'reader-response',\n requestId: message.requestId,\n result,\n });\n } catch (cause) {\n fail(cause);\n } finally {\n readerWork.delete(work);\n }\n })();\n relayWork.add(relay);\n void relay.finally(() => relayWork.delete(relay));\n } else if (message.kind === 'page') {\n if (!hasPrepared || pendingPage === undefined || message.requestId !== pageRequestId)\n throw createInspectionProcessFailure();\n const completion = pendingPage;\n pendingPage = undefined;\n completion.resolve(freezeRecursively(message.result));\n } else if (message.kind === 'failure') {\n if (\n message.failure.options['nextAction'] === 'review-inspection-capacity' &&\n (heapMaximum === undefined || message.failure.options['limitMaximum'] !== heapMaximum)\n )\n throw createInspectionProcessFailure();\n fail(deserializeInspectionFailure(message.failure));\n } else throw createInspectionProcessFailure();\n } catch (cause) {\n fail(cause);\n }\n });\n try {\n await send({\n attemptId,\n kind: 'start',\n registryUrl: input.adapterRegistryUrl.href,\n snapshot,\n limits,\n deadline,\n });\n const metadata = await prepared.promise;\n if (Date.now() >= deadline)\n throw new CoreOperationException({\n code: 'INSPECTION_TIMEOUT',\n operation: 'create-project-inspection',\n });\n return Object.freeze({\n ...metadata,\n readPage: async (pageInput): Promise<IProjectInspectionPageResult> => {\n if (failure !== undefined || isClosing) throw failure?.cause ?? aborted();\n if (\n pendingPage !== undefined ||\n pageInput === null ||\n typeof pageInput !== 'object' ||\n Reflect.ownKeys(pageInput).some(\n (key) => key !== 'cursor' && key !== 'maxItems' && key !== 'view',\n ) ||\n !Number.isSafeInteger(pageInput.maxItems) ||\n pageInput.maxItems < 1 ||\n pageInput.maxItems > limits.maxEntries ||\n !['all', 'diagnostics', 'evidence', 'metadata'].includes(pageInput.view) ||\n (pageInput.cursor !== undefined && typeof pageInput.cursor !== 'string')\n )\n throw new CoreOperationException({\n code: 'INVALID_ARGUMENT',\n operation: 'create-project-inspection',\n });\n const completion = createCompletion<IProjectInspectionPageResult>();\n pendingPage = completion;\n pageRequestId++;\n try {\n if (Date.now() >= deadline)\n throw new CoreOperationException({\n code: 'INSPECTION_TIMEOUT',\n operation: 'create-project-inspection',\n });\n await send({\n attemptId,\n kind: 'read-page',\n requestId: pageRequestId,\n input: {\n maxItems: pageInput.maxItems,\n view: pageInput.view,\n ...(pageInput.cursor === undefined ? {} : { cursor: pageInput.cursor }),\n },\n });\n const result = await completion.promise;\n if (Date.now() >= deadline)\n throw new CoreOperationException({\n code: 'INSPECTION_TIMEOUT',\n operation: 'create-project-inspection',\n });\n return result;\n } catch (cause) {\n fail(cause);\n await cleanup();\n throw getFailureCause() ?? createInspectionProcessFailure(cause);\n } finally {\n if (pendingPage === completion) pendingPage = undefined;\n }\n },\n dispose: async (): Promise<void> => {\n pendingPage?.reject(failure?.cause ?? aborted());\n await cleanup();\n const cause = getFailureCause();\n if (cause !== undefined) throw cause;\n },\n } satisfies INodeProjectInspection);\n } catch (cause) {\n fail(cause);\n await cleanup();\n throw getFailureCause() ?? createInspectionProcessFailure(cause);\n }\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"node.js","names":[],"sources":["../src/node-inspection/client.ts"],"sourcesContent":["import { fork } from 'node:child_process';\nimport { randomBytes } from 'node:crypto';\nimport { fileURLToPath } from 'node:url';\n\nimport { RepositorySourceException } from '@moldea.ai/repository';\n\nimport { CoreOperationException } from '../exceptions/index.js';\nimport { freezeRecursively } from '../immutable/index.js';\nimport { normalizeCoreOptions } from '../options/index.js';\n\nimport {\n NODE_INSPECTION_LIFETIME_MS,\n NODE_INSPECTION_MAX_REQUESTS,\n NODE_INSPECTION_STDIO_BYTES,\n NODE_INSPECTION_TRANSPORT_BYTES,\n} from './constants.js';\nimport { deserializeInspectionFailure, serializeInspectionFailure } from './errors.js';\nimport {\n createInspectionEnvironment,\n createInspectionSender,\n superviseInspectionChild,\n} from './lifecycle.js';\nimport { createInspectionProcessFailure, decodeInspectionMessage } from './protocol.js';\nimport { executeRepositoryRpc } from './repository-rpc.js';\nimport type {\n INodeInspectionMetadata,\n INodeProjectInspection,\n INodeProjectInspectionInput,\n} from './types.js';\nimport type { IProjectInspectionPageResult } from '../contracts/index.js';\n\nlet isInspectionActive = false;\n\n/** Stores one completion without an unhandled rejection before its owner begins awaiting it. */\nconst createCompletion = <T>(): {\n promise: Promise<T>;\n resolve: (result: T) => void;\n reject: (cause: unknown) => void;\n} => {\n let resolve!: (result: T) => void;\n let reject!: (cause: unknown) => void;\n const promise = new Promise<T>((resolveResult, rejectResult) => {\n resolve = resolveResult;\n reject = rejectResult;\n });\n void promise.catch(() => {});\n return { promise, resolve, reject };\n};\n\nconst aborted = (cause?: unknown): CoreOperationException =>\n new CoreOperationException({\n code: 'ABORTED',\n operation: 'create-project-inspection',\n ...(cause === undefined ? {} : { cause }),\n });\n\n/**\n * Prepares content-free inspection inside one supervised subprocess and one analysis worker.\n * The caller owns actual reader work and must dispose the returned handle before publishing success.\n * @returns An async paging handle after the worker reports its actual heap and prepares inspection.\n * @throws\n * - INVALID_ARGUMENT: The Core operation received an invalid argument.\n * - INVALID_RESOURCE_LIMIT: A Core resource limit is invalid.\n * - ABORTED: The Core operation was aborted.\n * - RESOURCE_LIMIT_EXCEEDED: A Core resource limit was exceeded.\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 * - INVALID_REPOSITORY_PATH: The repository path is invalid.\n * - ENTRY_NOT_FOUND: The requested repository entry was not found.\n * - ENTRY_NOT_FILE: The requested repository entry is not a file.\n * - ENTRY_NOT_DIRECTORY: The requested repository entry is not a directory.\n * - INVALID_PAGE_REQUEST: The repository page request is invalid.\n * - ACCESS_DENIED: Access to the repository source was denied.\n * - SOURCE_UNAVAILABLE: The repository source is unavailable.\n * - SNAPSHOT_CHANGED: The repository snapshot changed during the operation.\n * - PROVIDER_INCOMPLETE: The repository provider cannot expose a complete result.\n * - INVALID_SOURCE_DATA: The repository source returned invalid data.\n * - RESOURCE_LIMIT_EXCEEDED: A named repository resource limit was exceeded.\n * - ABORTED: The repository operation was aborted.\n */\nexport const createNodeProjectInspection = async (\n input: INodeProjectInspectionInput,\n): Promise<INodeProjectInspection> => {\n if (\n input === null ||\n typeof input !== 'object' ||\n input.repository === null ||\n typeof input.repository !== 'object' ||\n typeof input.repository.getEntry !== 'function' ||\n typeof input.repository.listEntriesPage !== 'function' ||\n typeof input.repository.readFilePage !== 'function' ||\n input.repository.snapshot === null ||\n typeof input.repository.snapshot !== 'object' ||\n typeof input.repository.snapshot.id !== 'string' ||\n input.repository.snapshot.id.length === 0 ||\n typeof input.repository.snapshot.sourceKind !== 'string' ||\n input.repository.snapshot.sourceKind.length === 0\n ) {\n throw new CoreOperationException({\n code: 'INVALID_ARGUMENT',\n operation: 'create-project-inspection',\n });\n }\n let repository: INodeProjectInspectionInput['repository'] | undefined = input.repository;\n const snapshot = { id: repository.snapshot.id, sourceKind: repository.snapshot.sourceKind };\n const signal = input.signal;\n if (\n signal !== undefined &&\n (signal === null ||\n typeof signal !== 'object' ||\n typeof signal.aborted !== 'boolean' ||\n typeof signal.addEventListener !== 'function' ||\n typeof signal.removeEventListener !== 'function')\n ) {\n throw new CoreOperationException({\n code: 'INVALID_ARGUMENT',\n operation: 'create-project-inspection',\n });\n }\n const { limits } = normalizeCoreOptions({\n ...(input.limits === undefined ? {} : { limits: input.limits }),\n });\n if (input.deadline !== undefined && (!Number.isSafeInteger(input.deadline) || input.deadline < 0))\n throw new CoreOperationException({\n code: 'INVALID_ARGUMENT',\n operation: 'create-project-inspection',\n });\n if (signal?.aborted === true) throw aborted(signal.reason);\n if (isInspectionActive)\n throw new CoreOperationException({\n code: 'INSPECTION_BUSY',\n operation: 'create-project-inspection',\n });\n if (limits.maxRetainedBytes <= NODE_INSPECTION_TRANSPORT_BYTES)\n throw new CoreOperationException({\n code: 'RESOURCE_LIMIT_EXCEEDED',\n operation: 'create-project-inspection',\n limit: 'maxRetainedBytes',\n limitMaximum: limits.maxRetainedBytes,\n observedUsage: NODE_INSPECTION_TRANSPORT_BYTES,\n nextAction: 'reduce-input-or-increase-limit',\n });\n const deadline = Math.min(Date.now() + NODE_INSPECTION_LIFETIME_MS, input.deadline ?? Infinity);\n if (deadline <= Date.now())\n throw new CoreOperationException({\n code: 'INSPECTION_TIMEOUT',\n operation: 'create-project-inspection',\n });\n isInspectionActive = true;\n const controller = new AbortController();\n const attemptId = randomBytes(16).toString('hex');\n const prepared = createCompletion<INodeInspectionMetadata>();\n let pendingPage: ReturnType<typeof createCompletion<IProjectInspectionPageResult>> | undefined;\n let pageRequestId = 0;\n let lastReaderRequestId = -1;\n let hasAcknowledgedHeap = false;\n let heapMaximum: number | undefined;\n let hasPrepared = false;\n let isClosing = false;\n let failure: { cause: Error } | undefined;\n let cleanupPromise: Promise<void> | undefined;\n const readerWork = new Set<Promise<unknown>>();\n const relayWork = new Set<Promise<void>>();\n const child = (() => {\n try {\n return fork(fileURLToPath(import.meta.resolve('#moldea-core-runner')), [], {\n execPath: process.execPath,\n execArgv: [],\n env: createInspectionEnvironment(),\n serialization: 'advanced',\n stdio: ['ignore', 'ignore', 'pipe', 'ipc'],\n });\n } catch (cause) {\n isInspectionActive = false;\n throw createInspectionProcessFailure(cause);\n }\n })();\n const send = createInspectionSender((frame, callback) => {\n if (!child.connected) throw createInspectionProcessFailure();\n child.send(frame, callback);\n });\n const supervision = superviseInspectionChild(child, () => {\n void send({ attemptId, kind: 'dispose' }).catch(() => {\n child.kill('SIGKILL');\n });\n });\n\n /** Keeps admission until child closure and every real reader promise has settled. */\n const cleanup = (): Promise<void> => {\n cleanupPromise ??= (async () => {\n isClosing = true;\n controller.abort(failure?.cause);\n supervision.terminate();\n await supervision.closed;\n await Promise.allSettled([...readerWork, ...relayWork]);\n repository = undefined;\n clearTimeout(timer);\n if (failure === undefined && Date.now() >= deadline) {\n fail(\n new CoreOperationException({\n code: 'INSPECTION_TIMEOUT',\n operation: 'create-project-inspection',\n }),\n );\n }\n signal?.removeEventListener('abort', handleAbort);\n child.removeAllListeners('message');\n child.removeAllListeners('error');\n child.stderr?.removeAllListeners('data');\n isInspectionActive = false;\n })();\n return cleanupPromise;\n };\n const fail = (cause: unknown): void => {\n if (failure === undefined)\n failure = { cause: cause instanceof Error ? cause : createInspectionProcessFailure(cause) };\n prepared.reject(failure.cause);\n pendingPage?.reject(failure.cause);\n void cleanup();\n };\n const getFailureCause = (): Error | undefined => failure?.cause;\n const handleAbort = (): void => {\n fail(aborted(signal?.reason));\n };\n const timer = setTimeout(\n () => {\n fail(\n new CoreOperationException({\n code: 'INSPECTION_TIMEOUT',\n operation: 'create-project-inspection',\n }),\n );\n },\n Math.max(1, deadline - Date.now()),\n );\n signal?.addEventListener('abort', handleAbort, { once: true });\n // Re-read through a function because cancellation can change during listener registration.\n const isCallerAborted = (): boolean => signal?.aborted === true;\n if (isCallerAborted()) handleAbort();\n child.once('error', (cause: unknown) => {\n fail(createInspectionProcessFailure(cause));\n });\n void supervision.closed.then(() => {\n if (!isClosing) fail(createInspectionProcessFailure());\n });\n let stderrBytes = 0;\n child.stderr?.on('data', (chunk: Buffer) => {\n stderrBytes += chunk.byteLength;\n if (stderrBytes > NODE_INSPECTION_STDIO_BYTES) fail(createInspectionProcessFailure());\n });\n child.on('message', (frame: unknown) => {\n if (isClosing) return;\n try {\n const message = decodeInspectionMessage(frame);\n if (message.attemptId !== attemptId) throw createInspectionProcessFailure();\n if (message.kind === 'ready') {\n if (hasAcknowledgedHeap) throw createInspectionProcessFailure();\n heapMaximum = message.maxAnalysisHeapBytes;\n hasAcknowledgedHeap = true;\n void send({ attemptId, kind: 'run' }).catch(fail);\n } else if (message.kind === 'prepared') {\n if (\n !hasAcknowledgedHeap ||\n hasPrepared ||\n message.inspection.maxAnalysisHeapBytes !== heapMaximum ||\n message.inspection.source.id !== snapshot.id ||\n message.inspection.source.sourceKind !== snapshot.sourceKind\n )\n throw createInspectionProcessFailure();\n hasPrepared = true;\n prepared.resolve(freezeRecursively(message.inspection));\n } else if (message.kind === 'reader-request') {\n if (\n !hasAcknowledgedHeap ||\n hasPrepared ||\n message.requestId !== lastReaderRequestId + 1 ||\n readerWork.size >= NODE_INSPECTION_MAX_REQUESTS\n )\n throw createInspectionProcessFailure();\n lastReaderRequestId = message.requestId;\n if (repository === undefined) throw createInspectionProcessFailure();\n const work = executeRepositoryRpc(repository, message.request, controller.signal);\n readerWork.add(work);\n const relay = (async () => {\n try {\n const result = await work;\n readerWork.delete(work);\n if (!isClosing)\n await send({\n attemptId,\n kind: 'reader-response',\n requestId: message.requestId,\n result,\n });\n } catch (cause) {\n // Core decides whether absence or a reader resource refusal is recoverable at this check.\n if (\n cause instanceof RepositorySourceException &&\n ['ENTRY_NOT_FOUND', 'ENTRY_NOT_FILE', 'RESOURCE_LIMIT_EXCEEDED'].includes(cause.code)\n ) {\n try {\n if (!isClosing)\n await send({\n attemptId,\n kind: 'reader-failure',\n requestId: message.requestId,\n failure: serializeInspectionFailure(cause),\n });\n } catch (transportFailure) {\n fail(transportFailure);\n }\n } else fail(cause);\n } finally {\n readerWork.delete(work);\n }\n })();\n relayWork.add(relay);\n void relay.finally(() => relayWork.delete(relay));\n } else if (message.kind === 'page') {\n if (!hasPrepared || pendingPage === undefined || message.requestId !== pageRequestId)\n throw createInspectionProcessFailure();\n const completion = pendingPage;\n pendingPage = undefined;\n completion.resolve(freezeRecursively(message.result));\n } else if (message.kind === 'failure') {\n if (\n message.failure.options['nextAction'] === 'review-inspection-capacity' &&\n (heapMaximum === undefined || message.failure.options['limitMaximum'] !== heapMaximum)\n )\n throw createInspectionProcessFailure();\n fail(deserializeInspectionFailure(message.failure));\n } else throw createInspectionProcessFailure();\n } catch (cause) {\n fail(cause);\n }\n });\n try {\n await send({\n attemptId,\n kind: 'start',\n snapshot,\n limits,\n deadline,\n });\n const metadata = await prepared.promise;\n if (Date.now() >= deadline)\n throw new CoreOperationException({\n code: 'INSPECTION_TIMEOUT',\n operation: 'create-project-inspection',\n });\n return Object.freeze({\n ...metadata,\n readPage: async (pageInput): Promise<IProjectInspectionPageResult> => {\n if (failure !== undefined || isClosing) throw failure?.cause ?? aborted();\n if (\n pendingPage !== undefined ||\n pageInput === null ||\n typeof pageInput !== 'object' ||\n Reflect.ownKeys(pageInput).some(\n (key) => key !== 'cursor' && key !== 'maxItems' && key !== 'view',\n ) ||\n !Number.isSafeInteger(pageInput.maxItems) ||\n pageInput.maxItems < 1 ||\n pageInput.maxItems > limits.maxEntries ||\n !['all', 'diagnostics', 'coverage', 'metadata'].includes(pageInput.view) ||\n (pageInput.cursor !== undefined && typeof pageInput.cursor !== 'string')\n )\n throw new CoreOperationException({\n code: 'INVALID_ARGUMENT',\n operation: 'create-project-inspection',\n });\n const completion = createCompletion<IProjectInspectionPageResult>();\n pendingPage = completion;\n pageRequestId++;\n try {\n if (Date.now() >= deadline)\n throw new CoreOperationException({\n code: 'INSPECTION_TIMEOUT',\n operation: 'create-project-inspection',\n });\n await send({\n attemptId,\n kind: 'read-page',\n requestId: pageRequestId,\n input: {\n maxItems: pageInput.maxItems,\n view: pageInput.view,\n ...(pageInput.cursor === undefined ? {} : { cursor: pageInput.cursor }),\n },\n });\n const result = await completion.promise;\n if (Date.now() >= deadline)\n throw new CoreOperationException({\n code: 'INSPECTION_TIMEOUT',\n operation: 'create-project-inspection',\n });\n return result;\n } catch (cause) {\n fail(cause);\n await cleanup();\n throw getFailureCause() ?? createInspectionProcessFailure(cause);\n } finally {\n if (pendingPage === completion) pendingPage = undefined;\n }\n },\n dispose: async (): Promise<void> => {\n pendingPage?.reject(failure?.cause ?? aborted());\n await cleanup();\n const cause = getFailureCause();\n if (cause !== undefined) throw cause;\n },\n } satisfies INodeProjectInspection);\n } catch (cause) {\n fail(cause);\n await cleanup();\n throw getFailureCause() ?? createInspectionProcessFailure(cause);\n }\n};\n"],"mappings":"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"}
@@ -1,25 +1,13 @@
1
- import type { IRuntimeAdapterContext, IRuntimeAdapterResult } from '../adapter/index.js';
2
1
  import type { ICoreOptions, ICoreResourceLimits } from '../contracts/index.js';
3
- import type { IRepositoryFormatVersion } from '../format/index.js';
4
- export interface IRuntimeAdapterSnapshot {
5
- readonly id: string;
6
- readonly supportedRepositoryFormatVersions: readonly IRepositoryFormatVersion[];
7
- readonly inspect: (context: IRuntimeAdapterContext) => Promise<IRuntimeAdapterResult>;
8
- }
9
2
  export interface ICoreOptionsSnapshot {
10
- readonly adapters: readonly IRuntimeAdapterSnapshot[];
11
3
  readonly limits: ICoreResourceLimits;
12
4
  }
13
5
  /** Creates an operation-local options view with one shared raw-diagnostic budget. */
14
6
  export declare const createCoreOperationOptionsSnapshot: (options: ICoreOptionsSnapshot) => ICoreOptionsSnapshot;
15
7
  /**
16
- * Validates and snapshots caller-owned Core construction options.
17
- * @param options The optional adapters and resource-limit overrides.
18
- * @returns A deeply frozen, deterministically ordered configuration snapshot.
8
+ * Validates and snapshots caller-owned Core resource limits.
9
+ * @returns A deeply frozen configuration snapshot.
19
10
  * @throws
20
- * - DUPLICATE_ADAPTER_ID: A runtime adapter ID is registered more than once.
21
- * - RESERVED_ADAPTER_ID: A reserved runtime adapter ID was supplied.
22
- * - INVALID_ADAPTER_DEFINITION: A runtime adapter definition is invalid.
23
11
  * - INVALID_RESOURCE_LIMIT: A Core resource limit is invalid.
24
12
  */
25
13
  export declare const normalizeCoreOptions: (options: ICoreOptions | undefined) => ICoreOptionsSnapshot;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/options/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,sBAAsB,EACtB,qBAAqB,EACtB,MAAM,qBAAqB,CAAC;AAM7B,OAAO,KAAK,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAG/E,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,oBAAoB,CAAC;AAInE,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,iCAAiC,EAAE,SAAS,wBAAwB,EAAE,CAAC;IAChF,QAAQ,CAAC,OAAO,EAAE,CAAC,OAAO,EAAE,sBAAsB,KAAK,OAAO,CAAC,qBAAqB,CAAC,CAAC;CACvF;AAED,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,QAAQ,EAAE,SAAS,uBAAuB,EAAE,CAAC;IACtD,QAAQ,CAAC,MAAM,EAAE,mBAAmB,CAAC;CACtC;AAED,qFAAqF;AACrF,eAAO,MAAM,kCAAkC,GAC7C,SAAS,oBAAoB,KAC5B,oBAKF,CAAC;AAkMF;;;;;;;;;GASG;AACH,eAAO,MAAM,oBAAoB,GAAI,SAAS,YAAY,GAAG,SAAS,KAAG,oBASxE,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/options/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAM/E,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,MAAM,EAAE,mBAAmB,CAAC;CACtC;AAED,qFAAqF;AACrF,eAAO,MAAM,kCAAkC,GAC7C,SAAS,oBAAoB,KAC5B,oBAIF,CAAC;AAqEF;;;;;GAKG;AACH,eAAO,MAAM,oBAAoB,GAAI,SAAS,YAAY,GAAG,SAAS,KAAG,oBAWxE,CAAC"}
@@ -3,7 +3,7 @@ import type { ICoreOptionsSnapshot } from '../options/index.js';
3
3
  /**
4
4
  * Prepares one immutable content-free inspection for synchronous bounded page reads.
5
5
  * @param input The source-neutral reader and optional cancellation signal.
6
- * @param options The immutable adapter registry and operation limits.
6
+ * @param options The immutable operation limits.
7
7
  * @returns A promise resolving to the complete prepared inspection.
8
8
  * @throws
9
9
  * - INVALID_ARGUMENT: The Core operation received an invalid argument.
@@ -20,7 +20,6 @@ import type { ICoreOptionsSnapshot } from '../options/index.js';
20
20
  * - RESOURCE_LIMIT_EXCEEDED: A Core resource limit was exceeded.
21
21
  * - ABORTED: The repository operation was aborted.
22
22
  * - ABORTED: The Core operation was aborted.
23
- * - ADAPTER_EXECUTION_FAILED: A runtime adapter failed during inspection.
24
23
  */
25
24
  export declare const createProjectInspection: (input: IProjectInspectionInput, options: ICoreOptionsSnapshot) => Promise<IProjectInspection>;
26
25
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/project-inspection/index.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,kBAAkB,EAClB,uBAAuB,EAOxB,MAAM,uBAAuB,CAAC;AAG/B,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAsdhE;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,eAAO,MAAM,uBAAuB,GAClC,OAAO,uBAAuB,EAC9B,SAAS,oBAAoB,KAC5B,OAAO,CAAC,kBAAkB,CAkC5B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/project-inspection/index.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,kBAAkB,EAClB,uBAAuB,EAOxB,MAAM,uBAAuB,CAAC;AAG/B,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAsdhE;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,eAAO,MAAM,uBAAuB,GAClC,OAAO,uBAAuB,EAC9B,SAAS,oBAAoB,KAC5B,OAAO,CAAC,kBAAkB,CAmC5B,CAAC"}