@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.
Files changed (138) hide show
  1. package/README.md +13 -19
  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 +0,0 @@
1
- {"version":3,"file":"errors-BQI1DEqf.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 isRegistryUrl = (input: unknown): boolean => {\n if (typeof input !== 'string') return false;\n try {\n const url = new URL(input);\n return url.protocol === 'file:' && url.search === '' && url.hash === '';\n } catch {\n return false;\n }\n};\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', 'evidence', '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 'maxEvidence',\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 'evidence',\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 typeof input['valid'] === 'boolean' &&\n ['complete', 'incomplete', 'not-run'].includes(String(input['runtimeInspection'])) &&\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 'valid',\n 'runtimeInspection',\n 'formatVersion',\n 'inspectionDigest',\n 'source',\n 'summary',\n];\nconst isMetadata = (input: unknown): boolean =>\n isRecord(input) &&\n hasKeys(input, [...INSPECTION_KEYS, 'resourceUsage', 'adapters', '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) &&\n Array.isArray(input['adapters']) &&\n input['adapters'].every(\n (adapter: unknown) =>\n isRecord(adapter) &&\n hasKeys(adapter, ['id', 'supportedRepositoryFormatVersions']) &&\n typeof adapter['id'] === 'string' &&\n Array.isArray(adapter['supportedRepositoryFormatVersions']) &&\n adapter['supportedRepositoryFormatVersions'].every(\n (version: unknown) => isInteger(version) && version > 0,\n ),\n );\nconst isPage = (input: unknown): boolean =>\n isRecord(input) &&\n hasKeys(input, [...INSPECTION_KEYS, 'page', 'view']) &&\n isInspectionBase(input) &&\n ['all', 'diagnostics', 'evidence', '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', 'evidence', '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, 'registryUrl', 'snapshot', 'limits', 'deadline']) &&\n isRegistryUrl(input['registryUrl']) &&\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 'failure':\n return (\n hasKeys(input, [...keys, 'failure']) &&\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 ...(error.adapterId === null ? {} : { adapterId: error.adapterId }),\n },\n };\n if (error instanceof CoreOperationException)\n return {\n family: 'operation',\n options: {\n code: error.code,\n operation: error.operation,\n ...(error.adapterId === null ? {} : { adapterId: error.adapterId }),\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', 'adapterId']\n : failure.family === 'operation'\n ? [\n 'code',\n 'operation',\n 'adapterId',\n 'agentId',\n 'limit',\n 'limitMaximum',\n 'nextAction',\n 'observedUsage',\n ]\n : failure.family === 'repository'\n ? ['code', 'operation', 'path', 'retryable', 'resource']\n : [];\n if (\n Object.keys(options).some((key) => !allowed.includes(key)) ||\n ['adapterId', 'agentId'].some(\n (key) => Object.hasOwn(options, key) && typeof options[key] !== 'string',\n )\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['adapterId'] === 'string' ? { adapterId: options['adapterId'] } : {}),\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":";;;;AACA,IAAa,8BAA8B;AAC3C,IAAa,uCAAuC;AAEpD,IAAa,kCAAkC;AAC/C,IAAa,gCAAgC;AAC7C,IAAa,8BAA8B;AAG3C,IAAa,kCAAA,IACoB,gCAAgC,IAAI,IAAI;AAOzE,IAAa,0BAA0B,OAAO,OAAO;CACnD,YAAY;CACZ,oBAAoB;CACpB,mBAAA;CACA,kBAAkB;CAClB,iBAAiB;CACjB,eAAe;CACf,gBAAgB;CAChB,kBAAA;CACA,oBAAA;AACF,CAAC;;;;AChBD,IAAa,kCAAkC,UAC7C,IAAI,uBAAuB;CACzB,MAAM;CACN,WAAW;CACX,GAAI,UAAU,KAAA,IAAY,CAAC,IAAI,EAAE,MAAM;AACzC,CAAC;AAEH,IAAM,YAAY,UAChB,UAAU,QAAQ,OAAO,UAAU,YAAY,CAAC,MAAM,QAAQ,KAAK;AACrE,IAAM,qCAAqB,IAAI,IAAI;CAAC;CAAG;CAAG;CAAI;CAAI;AAAE,CAAC;AACrD,IAAM,aAAa,UACjB,OAAO,UAAU,YAAY,OAAO,cAAc,KAAK,KAAK,SAAS;AACvE,IAAM,WACJ,OACA,UACA,WAAqB,CAAC,MAEtB,SAAS,OAAO,QAAQ,OAAO,OAAO,OAAO,GAAG,CAAC,KACjD,OAAO,KAAK,KAAK,CAAC,CAAC,OAAO,QAAQ,SAAS,SAAS,GAAG,KAAK,SAAS,SAAS,GAAG,CAAC;AACpF,IAAM,cAAc,UAClB,SAAS,KAAK,KACd,QAAQ,OAAO,CAAC,MAAM,YAAY,CAAC,KACnC,OAAO,MAAM,UAAU,YACvB,MAAM,KAAK,CAAC,SAAS,KACrB,OAAO,MAAM,kBAAkB,YAC/B,MAAM,aAAa,CAAC,SAAS;AAC/B,IAAM,oBAAoB,OAAgC,QACxD,CAAC,OAAO,OAAO,OAAO,GAAG,KAAK,OAAO,MAAM,SAAS;AACtD,IAAM,iBAAiB,UAA4B;CACjD,IAAI,OAAO,UAAU,UAAU,OAAO;CACtC,IAAI;EACF,MAAM,MAAM,IAAI,IAAI,KAAK;EACzB,OAAO,IAAI,aAAa,WAAW,IAAI,WAAW,MAAM,IAAI,SAAS;CACvE,QAAQ;EACN,OAAO;CACT;AACF;AACA,IAAM,eAAe,UACnB,SAAS,KAAK,KACd,QAAQ,OAAO,CAAC,YAAY,MAAM,GAAG,CAAC,QAAQ,CAAC,KAC/C,UAAU,MAAM,WAAW,KAC3B,MAAM,cAAc,KACpB;CAAC;CAAO;CAAe;CAAY;AAAU,CAAC,CAAC,SAAS,OAAO,MAAM,OAAO,CAAC,KAC7E,iBAAiB,OAAO,QAAQ;AAClC,IAAM,YAAY,UAChB,SAAS,KAAK,KACd,QAAQ,OAAO;CACb;CACA;CACA;CACA;CACA;CACA;CACA;AACF,CAAC,KACD,OAAO,OAAO,KAAK,CAAC,CAAC,OAAO,UAAU,UAAU,KAAK,KAAK,QAAQ,CAAC;AACrE,IAAM,YAAY,UAChB,SAAS,KAAK,KACd,QAAQ,OAAO;CACb;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACF,CAAC,KACD,OAAO,OAAO,KAAK,CAAC,CAAC,MAAM,SAAS;AACtC,IAAM,aAAa,UACjB,UAAU,QACT,SAAS,KAAK,KACb,QAAQ,OAAO;CAAC;CAAU;CAAkB;CAAgB;CAAiB;AAAa,CAAC,KAC3F,SAAS,MAAM,SAAS,KACxB,QAAQ,MAAM,WAAW;CACvB;CACA;CACA;CACA;CACA;CACA;AACF,CAAC,KACD,OAAO,OAAO,MAAM,SAAS,CAAC,CAAC,MAAM,SAAS,KAC9C,OAAO,MAAM,sBAAsB,YACnC,OAAO,MAAM,qBAAqB,YAClC,iBAAiB,MAAM,eAAe,KACtC,iBAAiB,MAAM,cAAc;AACzC,IAAM,oBAAoB,UACxB,SAAS,MAAM,SAAS,KACxB,OAAO,MAAM,aAAa,aAC1B;CAAC;CAAY;CAAc;AAAS,CAAC,CAAC,SAAS,OAAO,MAAM,oBAAoB,CAAC,MAChF,MAAM,qBAAqB,QAAQ,MAAM,qBAAqB,MAC/D,OAAO,MAAM,wBAAwB,YACrC,WAAW,MAAM,SAAS,KAC1B,UAAU,MAAM,UAAU;AAC5B,IAAM,kBAAkB;CACtB;CACA;CACA;CACA;CACA;CACA;CACA;AACF;AACA,IAAM,cAAc,UAClB,SAAS,KAAK,KACd,QAAQ,OAAO;CAAC,GAAG;CAAiB;CAAiB;CAAY;AAAsB,CAAC,KACxF,iBAAiB,KAAK,KACtB,UAAU,MAAM,uBAAuB,KACvC,MAAM,0BAA0B,KAChC,SAAS,MAAM,gBAAgB,KAC/B,QAAQ,MAAM,kBAAkB;CAC9B;CACA;CACA;CACA;CACA;AACF,CAAC,KACD,OAAO,OAAO,MAAM,gBAAgB,CAAC,CAAC,MAAM,SAAS,KACrD,MAAM,QAAQ,MAAM,WAAW,KAC/B,MAAM,WAAW,CAAC,OACf,YACC,SAAS,OAAO,KAChB,QAAQ,SAAS,CAAC,MAAM,mCAAmC,CAAC,KAC5D,OAAO,QAAQ,UAAU,YACzB,MAAM,QAAQ,QAAQ,oCAAoC,KAC1D,QAAQ,oCAAoC,CAAC,OAC1C,YAAqB,UAAU,OAAO,KAAK,UAAU,CACxD,CACJ;AACF,IAAM,UAAU,UACd,SAAS,KAAK,KACd,QAAQ,OAAO;CAAC,GAAG;CAAiB;CAAQ;AAAM,CAAC,KACnD,iBAAiB,KAAK,KACtB;CAAC;CAAO;CAAe;CAAY;AAAU,CAAC,CAAC,SAAS,OAAO,MAAM,OAAO,CAAC,KAC7E,SAAS,MAAM,OAAO,KACtB,QAAQ,MAAM,SAAS;CAAC;CAAc;CAAW;CAAc;AAAY,CAAC,KAC5E,OAAO,MAAM,OAAO,CAAC,kBAAkB,aACvC,UAAU,MAAM,OAAO,CAAC,aAAa,MACpC,MAAM,OAAO,CAAC,kBAAkB,QAAQ,OAAO,MAAM,OAAO,CAAC,kBAAkB,aAChF,MAAM,QAAQ,MAAM,OAAO,CAAC,UAAU,KACtC,MAAM,OAAO,CAAC,UAAU,CAAC,OACtB,WACC,SAAS,MAAM,KACf,QAAQ,QAAQ,CAAC,QAAQ,YAAY,CAAC,MACrC,OAAO,kBAAkB,QAAQ,OAAO,OAAO,kBAAkB,aAClE,SAAS,OAAO,OAAO,KACvB,OAAO,OAAO,OAAO,CAAC,YAAY,YAClC;CAAC;CAAS;CAAc;CAAY;AAAU,CAAC,CAAC,SAAS,OAAO,OAAO,CAAC,OAAO,KAC/E,QAAQ,OAAO,SAAS,CAAC,QAAQ,OAAO,OAAO,CAAC,OAAO,CAAC,KACxD,SAAS,OAAO,OAAO,CAAC,OAAO,OAAO,CAAC,QAAQ,CACnD;AACF,IAAM,aAAa,UAA4B;CAC7C,IAAI,CAAC,SAAS,KAAK,GAAG,OAAO;CAC7B,QAAQ,MAAM,WAAd;EACE,KAAK,YACH,OAAO,QAAQ,OAAO,CAAC,UAAU,MAAM,CAAC,KAAK,iBAAiB,MAAM,OAAO;EAC7E,KAAK,mBACH,OACE,QAAQ,OAAO,CAAC,UAAU,YAAY,GAAG,CAAC,UAAU,QAAQ,CAAC,KAC7D,UAAU,MAAM,aAAa,KAC7B,MAAM,gBAAgB,KACtB,MAAM,iBAAiB,OACvB,iBAAiB,OAAO,QAAQ,MAC/B,CAAC,OAAO,OAAO,OAAO,QAAQ,KAAK,iBAAiB,MAAM,SAAS;EAExE,KAAK,gBACH,OACE,QAAQ,OAAO;GAAC;GAAU;GAAQ;GAAY;EAAQ,CAAC,KACvD,iBAAiB,MAAM,OAAO,KAC9B,UAAU,MAAM,SAAS,KACzB,UAAU,MAAM,WAAW,KAC3B,MAAM,cAAc,KACpB,MAAM,eAAA;EAEV,SACE,OAAO;CACX;AACF;;AAGA,IAAM,aAAa,UAAoD;CACrE,IACE,CAAC,SAAS,KAAK,KACf,OAAO,MAAM,iBAAiB,YAC9B,CAAC,iBAAiB,KAAK,MAAM,YAAY,GAEzC,OAAO;CACT,MAAM,OAAO,CAAC,aAAa,MAAM;CACjC,QAAQ,MAAM,SAAd;EACE,KAAK,SACH,OACE,QAAQ,OAAO;GAAC,GAAG;GAAM;GAAe;GAAY;GAAU;EAAU,CAAC,KACzE,cAAc,MAAM,cAAc,KAClC,WAAW,MAAM,WAAW,KAC5B,SAAS,MAAM,SAAS,KACxB,UAAU,MAAM,WAAW;EAE/B,KAAK,SACH,OACE,QAAQ,OAAO,CAAC,GAAG,MAAM,sBAAsB,CAAC,KAChD,UAAU,MAAM,uBAAuB,KACvC,MAAM,0BAA0B;EAEpC,KAAK;EACL,KAAK,WACH,OAAO,QAAQ,OAAO,IAAI;EAC5B,KAAK,YACH,OAAO,QAAQ,OAAO,CAAC,GAAG,MAAM,YAAY,CAAC,KAAK,WAAW,MAAM,aAAa;EAClF,KAAK,aACH,OACE,QAAQ,OAAO;GAAC,GAAG;GAAM;GAAa;EAAO,CAAC,KAC9C,UAAU,MAAM,YAAY,KAC5B,YAAY,MAAM,QAAQ;EAE9B,KAAK,QACH,OACE,QAAQ,OAAO;GAAC,GAAG;GAAM;GAAa;EAAQ,CAAC,KAC/C,UAAU,MAAM,YAAY,KAC5B,OAAO,MAAM,SAAS;EAE1B,KAAK,kBACH,OACE,QAAQ,OAAO;GAAC,GAAG;GAAM;GAAa;EAAS,CAAC,KAChD,UAAU,MAAM,YAAY,KAC5B,UAAU,MAAM,UAAU;EAE9B,KAAK,mBACH,OAAO,QAAQ,OAAO;GAAC,GAAG;GAAM;GAAa;EAAQ,CAAC,KAAK,UAAU,MAAM,YAAY;EACzF,KAAK,WACH,OACE,QAAQ,OAAO,CAAC,GAAG,MAAM,SAAS,CAAC,KACnC,SAAS,MAAM,UAAU,KACzB,QAAQ,MAAM,YAAY,CAAC,UAAU,SAAS,CAAC,KAC/C;GAAC;GAAiB;GAAa;GAAc;EAAM,CAAC,CAAC,SACnD,OAAO,MAAM,UAAU,CAAC,SAAS,CACnC,KACA,SAAS,MAAM,UAAU,CAAC,UAAU;EAExC,SACE,OAAO;CACX;AACF;;AAGA,IAAM,kBAAkB,OAAgB,WAA4B,UAA0B;CAC5F,IAAI,QAAQ,IAAI,MAAM,+BAA+B;CACrD,IAAI,UAAU,MAAM,OAAO;CAC3B,IAAI,OAAO,UAAU,WAAW,OAAO,QAAQ,IAAI;CACnD,IAAI,OAAO,UAAU,YAAY,OAAO,SAAS,KAAK,GAAG,OAAO,OAAO,KAAK,CAAC,CAAC;CAC9E,IAAI,OAAO,UAAU,UAAU;EAC7B,IAAI,QAAQ;EACZ,KAAK,IAAI,QAAQ,GAAG,QAAQ,MAAM,QAAQ,SAAS;GACjD,MAAM,OAAO,MAAM,WAAW,KAAK;GACnC,IAAI,SAAS,MAAM,SAAS,MAAM,mBAAmB,IAAI,IAAI,GAAG,SAAS;QACpE,IAAI,OAAO,IAAI,SAAS;QACxB,IAAI,OAAO,KAAK;QAChB,IAAI,OAAO,MAAM,SAAS;QAC1B,IACH,QAAQ,SACR,QAAQ,SACR,QAAQ,IAAI,MAAM,UAClB,MAAM,WAAW,QAAQ,CAAC,KAAK,SAC/B,MAAM,WAAW,QAAQ,CAAC,KAAK,OAC/B;IACA,SAAS;IACT;GACF,OAAO,SAAS,QAAQ,SAAU,QAAQ,QAAS,IAAI;GACvD,IAAI,QAAA,SAAuC,OAAO;EACpD;EACA,OAAO;CACT;CACA,IAAI,OAAO,UAAU,YAAY,UAAU,IAAI,KAAK,GAAG,MAAM,+BAA+B;CAC5F,UAAU,IAAI,KAAK;CACnB,IAAI,QAAQ;CACZ,IAAI,QAAQ;CACZ,IAAI,MAAM,QAAQ,KAAK,GACrB,KAAK,MAAM,WAAW,OAAO;EAC3B,UAAU,YAAY,IAAI,IAAI,KAAK,eAAe,SAAS,WAAW,QAAQ,CAAC;EAC/E,IAAI,QAAA,SAAuC;CAC7C;MAEA,KAAK,MAAM,OAAO,OAAO;EACvB,IAAI,CAAC,OAAO,OAAO,OAAO,GAAG,GAAG;EAChC,UACG,YAAY,IAAI,IAAI,KACrB,eAAe,KAAK,WAAW,QAAQ,CAAC,IACxC,IACA,eAAgB,MAAkC,MAAM,WAAW,QAAQ,CAAC;EAC9E,IAAI,QAAA,SAAuC;CAC7C;CAEF,UAAU,OAAO,KAAK;CACtB,OAAO;AACT;;;;;;;;AASA,IAAa,2BAA2B,YAA4C;CAClF,MAAM,QAAQ,eAAe,yBAAS,IAAI,QAAQ,GAAG,CAAC;CACtD,IAAI,QAAA,SACF,MAAM,IAAI,uBAAuB;EAC/B,MAAM;EACN,OAAO;EACP,cAAc;EACd,eAAe;EACf,YAAY;EACZ,WAAW;CACb,CAAC;CACH,IAAI,CAAC,UAAU,OAAO,GAAG,MAAM,+BAA+B;CAC9D,OAAO,KAAK,UAAU,OAAO;AAC/B;;;;;;;AAQA,IAAa,2BAA2B,UAA2C;CACjF,IAAI,OAAO,UAAU,YAAY,OAAO,WAAW,KAAK,IAAA,SACtD,MAAM,+BAA+B;CACvC,IAAI;CACJ,IAAI;EACF,UAAU,KAAK,MAAM,KAAK;CAC5B,SAAS,OAAO;EACd,MAAM,+BAA+B,KAAK;CAC5C;CACA,IAAI,CAAC,UAAU,OAAO,GAAG,MAAM,+BAA+B;CAC9D,OAAO;AACT;;;;ACzUA,IAAa,8BAA8B,UAA2C;CACpF,IAAI,iBAAiB,4BACnB,OAAO;EACL,QAAQ;EACR,SAAS;GACP,MAAM,MAAM;GACZ,WAAW,MAAM;GACjB,GAAI,MAAM,cAAc,OAAO,CAAC,IAAI,EAAE,WAAW,MAAM,UAAU;EACnE;CACF;CACF,IAAI,iBAAiB,wBACnB,OAAO;EACL,QAAQ;EACR,SAAS;GACP,MAAM,MAAM;GACZ,WAAW,MAAM;GACjB,GAAI,MAAM,cAAc,OAAO,CAAC,IAAI,EAAE,WAAW,MAAM,UAAU;GACjE,GAAI,MAAM,YAAY,OAAO,CAAC,IAAI,EAAE,SAAS,MAAM,QAAQ;GAC3D,GAAI,MAAM,SAAS,4BACf,CAAC,IACD;IACE,OAAO,MAAM;IACb,cAAc,MAAM;IACpB,YAAY,MAAM;IAClB,eAAe,MAAM;GACvB;EACN;CACF;CACF,IAAI,iBAAiB,yBAAyB,OAAO;EAAE,QAAQ;EAAQ,SAAS,CAAC;CAAE;CACnF,IAAI,iBAAiB,2BACnB,OAAO;EACL,QAAQ;EACR,SAAS;GACP,MAAM,MAAM;GACZ,WAAW,MAAM;GACjB,MAAM,MAAM;GACZ,WAAW,MAAM;GACjB,GAAI,MAAM,aAAa,OAAO,CAAC,IAAI,EAAE,UAAU,MAAM,SAAS;EAChE;CACF;CACF,OAAO;EACL,QAAQ;EACR,SAAS;GACP,MAAM;GACN,WAAW;EACb;CACF;AACF;AACA,IAAM,mBAAiD;CACrD;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACF;AACA,IAAM,wBAAgD;CACpD;CACA;CACA;CACA;CACA;CACA;AACF;AACA,IAAM,YAAY,UAChB,OAAO,UAAU,YAAY,OAAO,cAAc,KAAK,KAAK,SAAS;;;;;;;AAQvE,IAAa,gCAAgC,YAA2C;CACtF,MAAM,UAAU,QAAQ;CACxB,MAAM,UACJ,QAAQ,WAAW,kBACf;EAAC;EAAQ;EAAa;CAAW,IACjC,QAAQ,WAAW,cACjB;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CACF,IACA,QAAQ,WAAW,eACjB;EAAC;EAAQ;EAAa;EAAQ;EAAa;CAAU,IACrD,CAAC;CACX,IACE,OAAO,KAAK,OAAO,CAAC,CAAC,MAAM,QAAQ,CAAC,QAAQ,SAAS,GAAG,CAAC,KACzD,CAAC,aAAa,SAAS,CAAC,CAAC,MACtB,QAAQ,OAAO,OAAO,SAAS,GAAG,KAAK,OAAO,QAAQ,SAAS,QAClE,GAEA,MAAM,+BAA+B;CACvC,KACG,QAAQ,WAAW,eAAe,QAAQ,WAAW,oBACtD,CAAC,gBAAgB,QAAQ,YAAY,GAErC,MAAM,+BAA+B;CACvC,MAAM,QAAQ;EACZ,WAAW,gBAAgB,QAAQ,YAAY,IAC3C,QAAQ,eACP;EACL,GAAI,OAAO,QAAQ,iBAAiB,WAAW,EAAE,WAAW,QAAQ,aAAa,IAAI,CAAC;EACtF,GAAI,OAAO,QAAQ,eAAe,WAAW,EAAE,SAAS,QAAQ,WAAW,IAAI,CAAC;CAClF;CACA,IAAI,QAAQ,WAAW,UAAU,OAAO,KAAK,OAAO,CAAC,CAAC,WAAW,GAC/D,OAAO,IAAI,wBAAwB;CACrC,IAAI,QAAQ,WAAW,iBAAiB;EACtC,MAAM,OAAO,QAAQ;EACrB,IAAI,6BAA6B,IAAI,GACnC,OAAO,IAAI,2BAA2B;GAAE,GAAG;GAAO;EAAK,CAAC;CAC5D;CACA,IAAI,QAAQ,WAAW,aAAa;EAClC,MAAM,OAAO,QAAQ;EACrB,IACE,yBAAyB,IAAI,KAC7B,SAAS,6BACT,CAAC;GAAC;GAAS;GAAgB;GAAc;EAAe,CAAC,CAAC,MAAM,QAC9D,OAAO,OAAO,SAAS,GAAG,CAC5B,GAEA,OAAO,IAAI,uBAAuB;GAAE,GAAG;GAAO;EAAK,CAAC;EACtD,IACE,QAAQ,YAAY,6BACpB,SAAS,QAAQ,eAAe,KAChC,QAAQ,kBAAkB,GAC1B;GACA,IACE,QAAQ,aAAa,0BACrB,QAAQ,kBAAkB,gCAC1B,QAAQ,qBAAqB,MAE7B,OAAO,IAAI,uBAAuB;IAChC,GAAG;IACH,MAAM;IACN,OAAO;IACP,cAAc,QAAQ;IACtB,eAAe;IACf,YAAY;GACd,CAAC;GACH,KACG,QAAQ,aAAa,+BACpB,QAAQ,aAAa,wBACvB,QAAQ,kBAAkB,QAC1B,SAAS,QAAQ,gBAAgB,GAEjC,OAAO,IAAI,uBAAuB;IAChC,GAAG;IACH,MAAM;IACN,OAAO,QAAQ;IACf,cAAc,QAAQ;IACtB,YAAY;IACZ,eAAe,QAAQ;GACzB,CAAC;GACH,IACE,OAAO,QAAQ,aAAa,YAC5B,CAAC;IAAC;IAAwB;IAA6B;GAAmB,CAAC,CAAC,SAC1E,QAAQ,QACV,KACA,QAAQ,kBAAkB,oCAC1B,SAAS,QAAQ,gBAAgB,GAEjC,OAAO,IAAI,uBAAuB;IAChC,GAAG;IACH,MAAM;IACN,OAAO,QAAQ;IACf,cAAc,QAAQ;IACtB,YAAY;IACZ,eAAe,QAAQ;GACzB,CAAC;EACL;CACF;CACA,IAAI,QAAQ,WAAW,cAAc;EACnC,MAAM,OAAO,iBAAiB,MAAM,cAAc,cAAc,QAAQ,OAAO;EAC/E,MAAM,YAAY,sBAAsB,MAAM,cAAc,cAAc,QAAQ,YAAY;EAC9F,MAAM,WAAW,QAAQ;EACzB,IACE,SAAS,KAAA,KACT,cAAc,KAAA,KACd,OAAO,QAAQ,iBAAiB,cAC/B,QAAQ,YAAY,QAAQ,iBAAiB,QAAQ,OAAO,OAC5D,aAAa,KAAA,KACX,aAAa,QACZ,OAAO,aAAa,YACpB,OAAO,KAAK,QAAQ,CAAC,CAAC,WAAW,KACjC,eAAe,YACf,OAAO,SAAS,cAAc,YAC9B,WAAW,YACX,SAAS,SAAS,KAAK,KACvB,cAAc,YACd,SAAS,SAAS,QAAQ,IAE9B,OAAO,IAAI,0BAA0B;GACnC;GACA;GACA,MAAM,QAAQ;GACd,WAAW,QAAQ;GACnB,GAAI,aAAa,KAAA,IACb,CAAC,IACD,EACY,SAKZ;EACN,CAAC;CAEL;CACA,MAAM,+BAA+B;AACvC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"exceptions-lzD3buFw.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 =\n | 'DUPLICATE_ADAPTER_ID'\n | 'RESERVED_ADAPTER_ID'\n | 'INVALID_ADAPTER_DEFINITION'\n | 'INVALID_RESOURCE_LIMIT';\n\nexport type ICoreOperationErrorCode =\n | 'INVALID_ARGUMENT'\n | 'ABORTED'\n | 'RESOURCE_LIMIT_EXCEEDED'\n | 'ADAPTER_EXECUTION_FAILED'\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 'validate-adapter',\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 adapterId?: string;\n readonly cause?: unknown;\n}\n\ninterface ICoreOperationExceptionOptionsBase {\n readonly operation: ICoreOperation;\n readonly adapterId?: string;\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 DUPLICATE_ADAPTER_ID: 'A runtime adapter ID is registered more than once.',\n INVALID_ADAPTER_DEFINITION: 'A runtime adapter definition is invalid.',\n INVALID_RESOURCE_LIMIT: 'A Core resource limit is invalid.',\n RESERVED_ADAPTER_ID: 'A reserved runtime adapter ID was supplied.',\n} as const satisfies Readonly<Record<ICoreConfigurationErrorCode, string>>;\n\nconst OPERATION_ERROR_MESSAGES = {\n ABORTED: 'The Core operation was aborted.',\n ADAPTER_EXECUTION_FAILED: 'A runtime adapter failed during inspection.',\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 ADAPTER_EXECUTION_FAILED: false,\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 public readonly adapterId: string | null;\n\n /** Creates a configuration exception with safe adapter 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 this.adapterId = options.adapterId ?? null;\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 adapterId: string | null;\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.adapterId = options.adapterId ?? null;\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":";;AAmBA,IAAM,kBAAkB;CACtB;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACF;AAuDA,IAAM,+BAA+B;CACnC,sBAAsB;CACtB,4BAA4B;CAC5B,wBAAwB;CACxB,qBAAqB;AACvB;AAEA,IAAM,2BAA2B;CAC/B,SAAS;CACT,0BAA0B;CAC1B,iBAAiB;CACjB,kBAAkB;CAClB,iBAAiB;CACjB,oBAAoB;CACpB,2BAA2B;CAC3B,yBAAyB;AAC3B;AAEA,IAAM,+BAA+B;CACnC,SAAS;CACT,0BAA0B;CAC1B,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;CAEA;;CAGA,YAAmB,SAA6C;EAC9D,MAAM,6BAA6B,QAAQ,OAAO,QAAQ,IAAI;EAC9D,KAAK,OAAO,QAAQ;EACpB,KAAK,OAAO;EACZ,KAAK,YAAY,QAAQ;EACzB,KAAK,YAAY,QAAQ,aAAa;EACtC,YAAY,MAAM,QAAQ,KAAK;CACjC;AACF;;AAGA,IAAa,yBAAb,cAA4C,UAAU;CACpD;CAEA;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,YAAY,QAAQ,aAAa;EACtC,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 +0,0 @@
1
- {"version":3,"file":"options-CxCT3dZU.js","names":[],"sources":["../../src/constants/index.ts","../../src/immutable/index.ts","../../src/format-validation/index.ts","../../src/diagnostic-utilities/index.ts","../../src/options/index.ts"],"sourcesContent":["import type { ICoreResourceLimits } from '../contracts/index.js';\nimport type { IRepositoryFormatVersion } from '../format/index.js';\n\n// official runtime adapter IDs recognized by this Core release\nexport const RECOGNIZED_RUNTIME_ADAPTER_IDS = Object.freeze([\n 'anthropic',\n 'claude-agent-sdk',\n 'cloudflare-agents',\n 'custom',\n 'eve',\n 'google-genai',\n 'langchain',\n 'langgraph',\n 'openai',\n 'openai-agents-sdk',\n 'vercel-ai-sdk',\n] as const);\n\n// repository-format major versions interpreted by this Core release\nexport const SUPPORTED_REPOSITORY_FORMAT_VERSIONS: readonly IRepositoryFormatVersion[] =\n Object.freeze([1]);\n\n// default safety budgets applied independently to each Core operation\nexport const DEFAULT_CORE_RESOURCE_LIMITS: ICoreResourceLimits = Object.freeze({\n maxDiagnostics: 10_000,\n maxEntries: 100_000,\n maxEvidence: 10_000,\n maxFileBytes: 8_388_608,\n maxManifestBytes: 2_097_152,\n maxRetainedBytes: 536_870_912,\n maxTotalBytesRead: 134_217_728,\n});\n","/**\n * Recursively freezes a Core-owned value without cloning it.\n * @param value The detached acyclic value whose already-frozen objects are deeply frozen.\n * @returns The same value with every mutable reachable object frozen.\n */\nexport const freezeRecursively = <Value>(value: Value): Readonly<Value> => {\n if (typeof value !== 'object' || value === null || Object.isFrozen(value)) {\n return value;\n }\n\n for (const key of Reflect.ownKeys(value)) {\n const child = (value as Readonly<Record<PropertyKey, unknown>>)[key];\n freezeRecursively(child);\n }\n\n return Object.freeze(value);\n};\n\n/**\n * Creates a record that cannot collide with prototype-chain properties.\n * @param entries The own string-keyed entries to assign.\n * @returns A mutable null-prototype record for later normalization and freezing.\n */\nexport const createNullPrototypeRecord = <Value>(\n entries: Iterable<readonly [string, Value]>,\n): Record<string, Value> => {\n const record = Object.create(null) as Record<string, Value>;\n\n for (const [key, value] of entries) {\n record[key] = value;\n }\n\n return record;\n};\n","import { isRepositoryPath, parseRepositoryPath, type IRepositoryPath } from '@moldea.ai/repository';\n\nimport type { IRepositoryReference } from '../format/index.js';\n\nconst STABLE_ID_PATTERN = /^[a-z0-9]+(?:-[a-z0-9]+)*$/u;\nconst VARIABLE_ID_PATTERN = /^[A-Z][A-Z0-9_]*$/u;\nconst WINDOWS_RESERVED_ID_PATTERN = /^(?:con|prn|aux|nul|com[1-9]|lpt[1-9])$/u;\nconst LINE_BREAK_CHARACTERS = ['\\n', '\\r', '\\u0085', '\\u2028', '\\u2029'] as const;\nconst UNSUPPORTED_GLOB_PATTERN = /[!?[\\]{}]/u;\n\nconst hasLineBreak = (value: string): boolean => {\n return LINE_BREAK_CHARACTERS.some((lineBreak) => value.includes(lineBreak));\n};\n\n/** Determines whether a code point belongs to the Repository Format version 1 whitespace set. */\nexport const isRepositoryFormatWhitespace = (codePoint: number): boolean => {\n return (\n (codePoint >= 0x0009 && codePoint <= 0x000d) ||\n codePoint === 0x0020 ||\n codePoint === 0x0085 ||\n codePoint === 0x00a0 ||\n codePoint === 0x1680 ||\n (codePoint >= 0x2000 && codePoint <= 0x200a) ||\n codePoint === 0x2028 ||\n codePoint === 0x2029 ||\n codePoint === 0x202f ||\n codePoint === 0x205f ||\n codePoint === 0x3000\n );\n};\n\n/** Compares strings by exact Unicode code-point order without locale behavior. */\nexport const compareExactStrings = (left: string, right: string): number => {\n const leftScalars = left[Symbol.iterator]();\n const rightScalars = right[Symbol.iterator]();\n\n while (true) {\n const leftScalar = leftScalars.next();\n const rightScalar = rightScalars.next();\n\n if (leftScalar.done === true) {\n return rightScalar.done === true ? 0 : -1;\n }\n\n if (rightScalar.done === true) {\n return 1;\n }\n\n const leftCodePoint = leftScalar.value.codePointAt(0) ?? 0;\n const rightCodePoint = rightScalar.value.codePointAt(0) ?? 0;\n\n if (leftCodePoint !== rightCodePoint) {\n return leftCodePoint < rightCodePoint ? -1 : 1;\n }\n }\n};\n\n/** Counts Unicode scalar values in valid JavaScript text. */\nexport const countUnicodeScalars = (value: string): number => {\n const scalars = value[Symbol.iterator]();\n let count = 0;\n\n while (scalars.next().done !== true) {\n count += 1;\n }\n\n return count;\n};\n\n/** Determines whether a JavaScript string contains only Unicode scalar values. */\nexport const isUnicodeScalarText = (value: string): boolean => {\n for (let index = 0; index < value.length; index += 1) {\n const codeUnit = value.charCodeAt(index);\n\n if (codeUnit >= 0xd800 && codeUnit <= 0xdbff) {\n if (index + 1 >= value.length) {\n return false;\n }\n\n const nextCodeUnit = value.charCodeAt(index + 1);\n\n if (nextCodeUnit < 0xdc00 || nextCodeUnit > 0xdfff) {\n return false;\n }\n\n index += 1;\n continue;\n }\n\n if (codeUnit >= 0xdc00 && codeUnit <= 0xdfff) {\n return false;\n }\n }\n\n return true;\n};\n\n/** Determines whether a value contains at least one non-whitespace scalar. */\nexport const hasNonWhitespace = (value: string): boolean => {\n for (const scalar of value) {\n if (!isRepositoryFormatWhitespace(scalar.codePointAt(0) ?? 0)) {\n return true;\n }\n }\n\n return false;\n};\n\n/** Determines whether a value begins or ends with version 1 whitespace. */\nexport const hasSurroundingWhitespace = (value: string): boolean => {\n const firstCodePoint = value.codePointAt(0);\n const lastCodePoint = value.codePointAt(value.length - 1);\n\n return (\n (firstCodePoint !== undefined && isRepositoryFormatWhitespace(firstCodePoint)) ||\n (lastCodePoint !== undefined && isRepositoryFormatWhitespace(lastCodePoint))\n );\n};\n\n/** Removes only Repository Format version 1 whitespace from both edges. */\nexport const trimRepositoryFormatWhitespace = (value: string): string => {\n let start = 0;\n let end = value.length;\n\n while (start < end) {\n const codePoint = value.codePointAt(start);\n\n if (codePoint === undefined || !isRepositoryFormatWhitespace(codePoint)) {\n break;\n }\n\n start += codePoint > 0xffff ? 2 : 1;\n }\n\n while (end > start) {\n const codePoint = value.codePointAt(end - 1);\n\n if (codePoint === undefined || !isRepositoryFormatWhitespace(codePoint)) {\n break;\n }\n\n end -= 1;\n }\n\n return value.slice(start, end);\n};\n\n/** Determines whether a string is non-empty and contains no line break. */\nexport const isNonEmptySingleLine = (value: string): boolean => {\n return value.length > 0 && !hasLineBreak(value);\n};\n\n/** Determines whether a value satisfies stable moldea ID syntax. */\nexport const isStableId = (value: string): boolean => {\n return value.length <= 64 && STABLE_ID_PATTERN.test(value);\n};\n\n/** Determines whether an otherwise valid stable ID is filesystem-reserved. */\nexport const isReservedId = (value: string): boolean => WINDOWS_RESERVED_ID_PATTERN.test(value);\n\n/** Determines whether a value satisfies runtime-variable ID syntax. */\nexport const isVariableId = (value: string): boolean => {\n return value.length <= 64 && VARIABLE_ID_PATTERN.test(value);\n};\n\n/** Determines whether a parsed capability description satisfies version 1 limits. */\nexport const isCapabilityDescription = (value: string): boolean => {\n const scalarLength = countUnicodeScalars(value);\n\n return (\n scalarLength >= 1 &&\n scalarLength <= 1_000 &&\n !hasSurroundingWhitespace(value) &&\n !hasLineBreak(value) &&\n !value.includes('\\0') &&\n !value.includes('{{') &&\n !value.includes('}}')\n );\n};\n\n/** Parses a non-root repository-format logical path without throwing. */\nexport const parseManifestPath = (value: string): IRepositoryPath | null => {\n return value !== '/' && isRepositoryPath(value) ? parseRepositoryPath(value) : null;\n};\n\n/** Determines whether a path is the canonical manifest path. */\nexport const isCanonicalManifestPath = (path: IRepositoryPath): boolean => {\n return path === '/moldea/moldea.yaml';\n};\n\n/** Extracts the stable millisecond ID from one canonical immediate decision path. */\nexport const parseDecisionIdFromPath = (path: IRepositoryPath): string | null => {\n const match = /^\\/moldea\\/decisions\\/(\\d{13})-([a-z0-9]+(?:-[a-z0-9]+)*)\\.md$/u.exec(path);\n const id = match?.[1];\n const slug = match?.[2];\n\n return id !== undefined && slug !== undefined && isStableId(slug) ? id : null;\n};\n\n/** Determines whether a path is an allowed focused-context relationship key. */\nexport const isContextPath = (path: IRepositoryPath, allowProject: boolean): boolean => {\n if (allowProject && path === '/moldea/project.md') {\n return true;\n }\n\n return path.startsWith('/moldea/context/') && path.endsWith('.md');\n};\n\n/** Determines whether a path has the canonical immediate decision filename shape. */\nexport const isDecisionPath = (path: IRepositoryPath): boolean => {\n return parseDecisionIdFromPath(path) !== null;\n};\n\n/** Determines whether a path is canonical runtime guidance. */\nexport const isRuntimeGuidancePath = (path: IRepositoryPath): boolean => {\n return path.startsWith('/moldea/runtimes/') && path.endsWith('.md');\n};\n\n/** Determines whether a mirror path is outside canonical moldea content. */\nexport const isMirrorPath = (path: IRepositoryPath): boolean => {\n return path !== '/moldea' && !path.startsWith('/moldea/');\n};\n\n/** Determines whether an impact path contains prohibited glob metacharacters. */\nexport const hasUnsupportedGlobMetacharacter = (value: string): boolean => {\n return UNSUPPORTED_GLOB_PATTERN.test(value);\n};\n\n/** Determines whether a string satisfies the version 1 simple-glob grammar. */\nexport const isSimpleGlob = (value: string): boolean => {\n if (hasUnsupportedGlobMetacharacter(value) || value.includes('***')) {\n return false;\n }\n\n const segments = value.slice(1).split('/');\n\n if (segments.some((segment) => segment.includes('**') && segment !== '**')) {\n return false;\n }\n\n return value.includes('*') && isRepositoryPath(value.replaceAll('*', 'x'));\n};\n\n/** Determines whether a repository-reference symbol has the common safe shape. */\nexport const isRepositorySymbol = (value: string): boolean => {\n return isNonEmptySingleLine(value) && !value.includes('\\0');\n};\n\n/** Determines whether a canonical moldea reference incorrectly carries a symbol. */\nexport const isCanonicalMoldeaPath = (path: IRepositoryPath): boolean => {\n return path === '/moldea' || path.startsWith('/moldea/');\n};\n\n/** Sorts repository references by path and then optional symbol. */\nexport const sortRepositoryReferences = (\n references: readonly IRepositoryReference[],\n): IRepositoryReference[] => {\n return [...references].sort((left, right) => {\n return (\n compareExactStrings(left.path, right.path) ||\n compareExactStrings(left.symbol ?? '', right.symbol ?? '')\n );\n });\n};\n","import type { IRepositoryPath } from '@moldea.ai/repository';\n\nimport type { ICoreResourceLimits } from '../contracts/index.js';\nimport type {\n ICoreDiagnostic,\n ICoreDiagnosticCode,\n IDiagnostic,\n IDiagnosticDetails,\n IDiagnosticEntity,\n ISourceRange,\n} from '../diagnostics/index.js';\nimport { CoreOperationException, type ICoreOperation } from '../exceptions/index.js';\nimport { compareExactStrings } from '../format-validation/index.js';\nimport { createNullPrototypeRecord, freezeRecursively } from '../immutable/index.js';\n\nconst CORE_DIAGNOSTIC_MESSAGES: Record<ICoreDiagnosticCode, string> = {\n MOLDEA_AGENT_DESCRIPTION_INVALID: 'The agent description is invalid.',\n MOLDEA_AGENT_DESCRIPTION_MISSING: 'The agent description is missing.',\n MOLDEA_AGENT_DIRECTORY_MISSING: 'The registered agent directory is missing.',\n MOLDEA_AGENT_DIRECTORY_UNREGISTERED: 'The agent directory is not registered.',\n MOLDEA_AGENT_HANDOFF_DESCRIPTION_INVALID: 'The agent handoff description is invalid.',\n MOLDEA_AGENT_IDENTITY_INVALID: 'The agent instruction identity is invalid.',\n MOLDEA_AGENT_INSTRUCTION_EMPTY: 'The agent instruction is empty.',\n MOLDEA_AGENT_INSTRUCTION_MISSING: 'The agent instruction is missing.',\n MOLDEA_CANONICAL_ASSET_SYMLINK: 'The canonical asset is a symlink.',\n MOLDEA_CANONICAL_PATH_UNRECOGNIZED: 'The canonical path is unrecognized.',\n MOLDEA_CAPABILITY_DESCRIPTION_INVALID: 'The capability description is invalid.',\n MOLDEA_CAPABILITY_DESCRIPTION_MISSING: 'The capability description is missing.',\n MOLDEA_CONTEXT_FILE_EMPTY: 'The focused context file is empty.',\n MOLDEA_CONTEXT_PATH_INVALID: 'The context relationship path is invalid.',\n MOLDEA_CONTEXT_RELATIONSHIP_EMPTY: 'The declared relationship has no bindings or impact paths.',\n MOLDEA_DECISION_BODY_EMPTY: 'The decision Markdown body is empty.',\n MOLDEA_DECISION_CREATED_AT_INVALID: 'The decision createdAt value is invalid.',\n MOLDEA_DECISION_FILENAME_INVALID: 'The decision path or filename is invalid.',\n MOLDEA_DECISION_FRONTMATTER_INVALID: 'The decision frontmatter is invalid.',\n MOLDEA_DECISION_FRONTMATTER_MISSING: 'The decision frontmatter or its delimiters are missing.',\n MOLDEA_DECISION_ID_DUPLICATE: 'The decision ID is duplicated.',\n MOLDEA_DECISION_PROPERTY_UNKNOWN: 'The decision frontmatter contains an unknown property.',\n MOLDEA_DECISION_REFERENCE_MISSING: 'The referenced decision does not exist.',\n MOLDEA_DECISION_RELATIONSHIP_INACTIVE: 'The referenced decision is not accepted.',\n MOLDEA_DECISION_SELF_SUPERSESSION: 'The decision supersedes itself.',\n MOLDEA_DECISION_STATUS_INVALID: 'The decision status is invalid.',\n MOLDEA_DECISION_SUPERSEDED_ORPHAN:\n 'The superseded decision has no active supersession relationship.',\n MOLDEA_DECISION_SUPERSESSION_CYCLE: 'The decision supersession graph contains a cycle.',\n MOLDEA_DECISION_SUPERSESSION_STATUS_INVALID:\n 'The decision supersession relationship has inconsistent statuses.',\n MOLDEA_DECISION_TIMESTAMP_MISMATCH:\n 'The decision filename timestamp and createdAt value do not match.',\n MOLDEA_ENTRY_TYPE_INVALID: 'The repository entry type is invalid.',\n MOLDEA_RUNTIME_ADAPTER_FORMAT_UNSUPPORTED:\n 'The configured runtime adapter does not support the repository format version.',\n MOLDEA_RUNTIME_ADAPTER_UNAVAILABLE: 'The declared runtime adapter is unavailable.',\n MOLDEA_RUNTIME_ID_INVALID: 'The runtime adapter ID is invalid.',\n MOLDEA_GLOB_INVALID: 'The impact pattern is invalid.',\n MOLDEA_ID_DUPLICATE: 'An ID is duplicated within its required scope.',\n MOLDEA_ID_INVALID: 'The ID is invalid.',\n MOLDEA_ID_RESERVED: 'The ID uses a reserved filesystem name.',\n MOLDEA_IMPACT_PATH_MISSING: 'The exact impact path does not exist.',\n MOLDEA_IMPACT_PATH_NOT_FILE: 'The exact impact path is not a regular file.',\n MOLDEA_MANIFEST_MISSING: 'The project manifest is missing.',\n MOLDEA_MANIFEST_PATH_INVALID: 'The manifest path is not the canonical manifest path.',\n MOLDEA_MANIFEST_PROPERTY_UNKNOWN: 'The manifest contains an unknown property.',\n MOLDEA_MANIFEST_ROOT_INVALID: 'The manifest root is not a mapping.',\n MOLDEA_MANIFEST_VALUE_INVALID: 'The manifest value is invalid.',\n MOLDEA_MANIFEST_VERSION_INVALID: 'The manifest version is not a valid integer major version.',\n MOLDEA_MANIFEST_VERSION_MISSING: 'The manifest version is missing.',\n MOLDEA_MANIFEST_VERSION_UNSUPPORTED: 'The manifest version is unsupported.',\n MOLDEA_MIRROR_PATH_DUPLICATE: 'The mirror path is assigned more than once.',\n MOLDEA_MIRROR_PATH_INSIDE_MOLDEA: 'The mirror path is inside /moldea.',\n MOLDEA_MIRROR_PATH_INVALID: 'The mirror path is invalid.',\n MOLDEA_MIRROR_MISSING: 'The declared mirror does not exist.',\n MOLDEA_MIRROR_NOT_FILE: 'The declared mirror is not a regular file.',\n MOLDEA_MIRROR_STALE: 'The declared mirror differs from its canonical instruction.',\n MOLDEA_MIRROR_SYMLINK: 'The declared mirror is a symlink.',\n MOLDEA_PATH_DUPLICATE: 'The path is duplicated.',\n MOLDEA_PATH_INVALID: 'The manifest logical path is invalid.',\n MOLDEA_PATTERN_DUPLICATE: 'The impact pattern is duplicated.',\n MOLDEA_PROJECT_FILE_EMPTY: 'The project file is empty.',\n MOLDEA_PROJECT_FILE_MISSING: 'The project file is missing.',\n MOLDEA_REFERENCE_MISSING: 'The referenced repository path does not exist.',\n MOLDEA_REFERENCE_NOT_FILE: 'The referenced repository path is not a regular file.',\n MOLDEA_REFERENCE_SYMLINK: 'The referenced repository path is a symlink.',\n MOLDEA_RUNTIME_GUIDANCE_EMPTY: 'The runtime guidance is empty.',\n MOLDEA_RUNTIME_GUIDANCE_MISSING: 'The referenced runtime guidance does not exist.',\n MOLDEA_SKILL_IMPLEMENTATION_MISSING: 'The registered skill implementation is missing.',\n MOLDEA_SYMBOL_FORBIDDEN: 'A canonical moldea reference must not include a symbol.',\n MOLDEA_SYMBOL_INVALID: 'The repository-reference symbol is invalid.',\n MOLDEA_TEXT_EMPTY: 'The required text document is empty.',\n MOLDEA_TEXT_INVALID_UNICODE:\n 'The text document contains an invalid Unicode scalar representation.',\n MOLDEA_TEXT_INVALID_UTF8: 'The text document is not valid UTF-8.',\n MOLDEA_TEXT_NUL_FORBIDDEN: 'The text document contains a forbidden NUL character.',\n MOLDEA_TOOL_IMPLEMENTATION_MISSING: 'The registered tool implementation is missing.',\n MOLDEA_VARIABLE_ID_INVALID: 'The runtime-variable ID is invalid.',\n MOLDEA_VARIABLE_PLACEHOLDER_MALFORMED:\n 'The agent instruction contains a malformed runtime-variable placeholder.',\n MOLDEA_VARIABLE_PROVIDER_UNDECLARED:\n 'A variable-provider binding exists for an undeclared variable.',\n MOLDEA_VARIABLE_UNDECLARED: 'The agent instruction references an undeclared runtime variable.',\n MOLDEA_VARIABLE_UNUSED: 'The declared runtime variable is unused by the agent instruction.',\n MOLDEA_YAML_DUPLICATE_KEY: 'The YAML document contains a duplicate mapping key.',\n MOLDEA_YAML_FEATURE_UNSUPPORTED: 'The YAML document uses an unsupported feature.',\n MOLDEA_YAML_MALFORMED: 'The YAML document is malformed.',\n MOLDEA_YAML_MULTIPLE_DOCUMENTS: 'The YAML stream contains more than one document.',\n};\n\nconst ENTITY_KEYS = [\n 'agentId',\n 'capabilityKind',\n 'capabilityId',\n 'decisionId',\n 'variableId',\n 'adapterId',\n] as const satisfies readonly (keyof IDiagnosticEntity)[];\n\n// private normalized diagnostic construction contracts\nexport interface ICoreDiagnosticInput {\n readonly code: ICoreDiagnosticCode;\n readonly details?: Readonly<Record<string, string | number | boolean | null>>;\n readonly entity?: IDiagnosticEntity | null;\n readonly path: IRepositoryPath | null;\n readonly pointer?: string | null;\n readonly range?: ISourceRange | null;\n}\n\nexport interface ICoreDiagnosticCollector {\n add(input: ICoreDiagnosticInput): void;\n merge(input: ICoreDiagnosticInput): void;\n finalize(): readonly ICoreDiagnostic[];\n readonly size: number;\n}\n\ninterface ICoreDiagnosticBudget {\n count: number;\n}\n\nconst CORE_DIAGNOSTIC_BUDGET = Symbol('core-diagnostic-budget');\n\ntype ICoreOperationResourceLimits = ICoreResourceLimits & {\n readonly [CORE_DIAGNOSTIC_BUDGET]?: ICoreDiagnosticBudget;\n};\n\n/** Creates a detached limits view with one diagnostic budget for a complete Core operation. */\nexport const createCoreOperationResourceLimits = (\n limits: ICoreResourceLimits,\n): ICoreResourceLimits => {\n const operationLimits = limits as ICoreOperationResourceLimits;\n\n if (operationLimits[CORE_DIAGNOSTIC_BUDGET] !== undefined) {\n return limits;\n }\n\n return Object.freeze({\n ...limits,\n [CORE_DIAGNOSTIC_BUDGET]: { count: 0 },\n });\n};\n\n/** Registers raw diagnostics against the shared operation budget before normalization. */\nexport const registerCoreDiagnosticCandidates = (\n limits: ICoreResourceLimits,\n amount: number,\n operation: ICoreOperation,\n fallbackCount = 0,\n adapterId?: string,\n): number => {\n const budget = (limits as ICoreOperationResourceLimits)[CORE_DIAGNOSTIC_BUDGET];\n const currentCount = budget?.count ?? fallbackCount;\n\n if (amount > limits.maxDiagnostics - currentCount) {\n throw new CoreOperationException({\n ...(adapterId === undefined ? {} : { adapterId }),\n code: 'RESOURCE_LIMIT_EXCEEDED',\n limit: 'maxDiagnostics',\n limitMaximum: limits.maxDiagnostics,\n nextAction: 'reduce-input-or-increase-limit',\n observedUsage: currentCount + amount,\n operation,\n });\n }\n\n if (budget !== undefined) {\n budget.count += amount;\n }\n\n return fallbackCount + amount;\n};\n\nconst compareNullableStrings = (left: string | null, right: string | null): number => {\n if (left === null) {\n return right === null ? 0 : -1;\n }\n\n return right === null ? 1 : compareExactStrings(left, right);\n};\n\n/**\n * Normalizes trusted JSON-scalar diagnostic metadata.\n * @param details The optional detached metadata record.\n * @returns A frozen null-prototype record with canonical key order.\n */\nexport const normalizeDiagnosticDetails = (\n details: Readonly<Record<string, string | number | boolean | null>> | undefined,\n): IDiagnosticDetails => {\n const entries = Object.entries(details ?? {})\n .sort(([left], [right]) => compareExactStrings(left, right))\n .map(\n ([key, value]) =>\n [key, typeof value === 'number' && Object.is(value, -0) ? 0 : value] as const,\n );\n\n return freezeRecursively(createNullPrototypeRecord(entries));\n};\n\n/**\n * Normalizes a trusted diagnostic entity into canonical key order.\n * @param entity The optional diagnostic entity.\n * @returns The frozen normalized entity or `null`.\n */\nexport const normalizeDiagnosticEntity = (\n entity: IDiagnosticEntity | null | undefined,\n): IDiagnosticEntity | null => {\n if (entity === undefined || entity === null) {\n return null;\n }\n\n const entries = ENTITY_KEYS.flatMap((key) => {\n const value = entity[key];\n return value === undefined ? [] : ([[key, value]] as const);\n });\n\n return freezeRecursively(createNullPrototypeRecord(entries) as IDiagnosticEntity);\n};\n\n/** Serializes unordered diagnostic details with explicit exact-code-point key ordering. */\nexport const serializeDiagnosticDetails = (details: IDiagnosticDetails): string => {\n const entries = Object.entries(details).sort(([left], [right]) =>\n compareExactStrings(left, right),\n );\n\n return JSON.stringify(entries);\n};\n\nconst serializeDiagnostic = (diagnostic: IDiagnostic): string => {\n const entity =\n diagnostic.entity === null\n ? null\n : ENTITY_KEYS.map((key) => [key, diagnostic.entity?.[key] ?? null]);\n const range =\n diagnostic.range === null\n ? null\n : [\n diagnostic.range.start.line,\n diagnostic.range.start.column,\n diagnostic.range.start.offset,\n diagnostic.range.end.line,\n diagnostic.range.end.column,\n diagnostic.range.end.offset,\n ];\n\n return JSON.stringify([\n diagnostic.code,\n diagnostic.severity,\n serializeDiagnosticDetails(diagnostic.details),\n entity,\n diagnostic.message,\n diagnostic.path,\n diagnostic.pointer,\n range,\n diagnostic.source,\n ]);\n};\n\nconst compareRanges = (left: ISourceRange | null, right: ISourceRange | null): number => {\n if (left === null) {\n return right === null ? 0 : -1;\n }\n\n if (right === null) {\n return 1;\n }\n\n return (\n left.start.line - right.start.line ||\n left.start.column - right.start.column ||\n left.start.offset - right.start.offset ||\n left.end.line - right.end.line ||\n left.end.column - right.end.column ||\n left.end.offset - right.end.offset\n );\n};\n\nconst readEntityValue = (\n entity: IDiagnosticEntity | null,\n key: keyof IDiagnosticEntity,\n): string => {\n return entity?.[key] ?? '';\n};\n\nconst compareDiagnostics = (left: IDiagnostic, right: IDiagnostic): number => {\n return (\n compareNullableStrings(left.path, right.path) ||\n compareRanges(left.range, right.range) ||\n compareNullableStrings(left.pointer, right.pointer) ||\n compareExactStrings(left.source, right.source) ||\n compareExactStrings(left.code, right.code) ||\n compareExactStrings(left.severity, right.severity) ||\n compareExactStrings(\n readEntityValue(left.entity, 'agentId'),\n readEntityValue(right.entity, 'agentId'),\n ) ||\n compareExactStrings(\n readEntityValue(left.entity, 'capabilityKind'),\n readEntityValue(right.entity, 'capabilityKind'),\n ) ||\n compareExactStrings(\n readEntityValue(left.entity, 'capabilityId'),\n readEntityValue(right.entity, 'capabilityId'),\n ) ||\n compareExactStrings(\n readEntityValue(left.entity, 'decisionId'),\n readEntityValue(right.entity, 'decisionId'),\n ) ||\n compareExactStrings(\n readEntityValue(left.entity, 'variableId'),\n readEntityValue(right.entity, 'variableId'),\n ) ||\n compareExactStrings(\n readEntityValue(left.entity, 'adapterId'),\n readEntityValue(right.entity, 'adapterId'),\n ) ||\n compareExactStrings(\n serializeDiagnosticDetails(left.details),\n serializeDiagnosticDetails(right.details),\n ) ||\n compareExactStrings(left.message, right.message)\n );\n};\n\n/**\n * Creates one normalized, immutable Core diagnostic.\n * @param input The trusted Core-owned diagnostic fields to normalize.\n * @returns A deeply immutable public diagnostic value.\n */\nexport const createCoreDiagnostic = (input: ICoreDiagnosticInput): ICoreDiagnostic => {\n const message = CORE_DIAGNOSTIC_MESSAGES[input.code];\n\n if (message === undefined) {\n throw new TypeError('The requested Core diagnostic is not implemented.');\n }\n\n return freezeRecursively({\n code: input.code,\n details: normalizeDiagnosticDetails(input.details),\n entity: normalizeDiagnosticEntity(input.entity),\n message,\n path: input.path,\n pointer: input.pointer ?? null,\n range: input.range ?? null,\n severity: 'error' as const,\n source: 'core' as const,\n });\n};\n\n/**\n * Deduplicates and sorts already-normalized Core and adapter diagnostics.\n * @param candidates The immutable diagnostics to combine.\n * @returns A frozen deterministic diagnostic collection.\n */\nexport const normalizeDiagnostics = (\n candidates: readonly IDiagnostic[],\n): readonly IDiagnostic[] => {\n const diagnostics = new Map<string, IDiagnostic>();\n\n for (const diagnostic of candidates) {\n const key = serializeDiagnostic(diagnostic);\n\n if (diagnostics.has(key)) {\n continue;\n }\n\n diagnostics.set(key, diagnostic);\n }\n\n return freezeRecursively([...diagnostics.values()].sort(compareDiagnostics));\n};\n\n/** Counts the complete normalized diagnostic result by severity once. */\nexport const countDiagnosticsBySeverity = (\n diagnostics: readonly IDiagnostic[],\n): { readonly errorCount: number; readonly warningCount: number } => {\n let errorCount = 0;\n let warningCount = 0;\n\n for (const diagnostic of diagnostics) {\n if (diagnostic.severity === 'error') {\n errorCount += 1;\n } else {\n warningCount += 1;\n }\n }\n\n return { errorCount, warningCount };\n};\n\n/**\n * Creates a deterministic, deduplicating diagnostic collector for one operation.\n * @param limits The Core resource limits governing diagnostic output.\n * @param operation The operation reported by resource failures.\n * @returns A collector that freezes and sorts its final diagnostic array.\n */\nexport const createCoreDiagnosticCollector = (\n limits: ICoreResourceLimits,\n operation: ICoreOperation,\n): ICoreDiagnosticCollector => {\n const diagnostics = new Map<string, ICoreDiagnostic>();\n let proposalCount = 0;\n let fallbackRawCount = 0;\n\n const retain = (input: ICoreDiagnosticInput): void => {\n const diagnostic = createCoreDiagnostic(input);\n const key = serializeDiagnostic(diagnostic);\n\n proposalCount += 1;\n\n if (!diagnostics.has(key)) {\n diagnostics.set(key, diagnostic);\n }\n };\n\n return {\n add: (input): void => {\n fallbackRawCount = registerCoreDiagnosticCandidates(limits, 1, operation, fallbackRawCount);\n retain(input);\n },\n merge: retain,\n finalize: (): readonly ICoreDiagnostic[] =>\n normalizeDiagnostics([...diagnostics.values()]) as readonly ICoreDiagnostic[],\n get size(): number {\n return proposalCount;\n },\n };\n};\n\n/**\n * Escapes one JSON Pointer reference token.\n * @param value The decoded mapping key or array index token.\n * @returns The RFC 6901 escaped token.\n */\nexport const escapeJsonPointerSegment = (value: string): string => {\n return value.replaceAll('~', '~0').replaceAll('/', '~1');\n};\n","import type {\n IRuntimeAdapter,\n IRuntimeAdapterContext,\n IRuntimeAdapterResult,\n} from '../adapter/index.js';\nimport {\n DEFAULT_CORE_RESOURCE_LIMITS,\n RECOGNIZED_RUNTIME_ADAPTER_IDS,\n SUPPORTED_REPOSITORY_FORMAT_VERSIONS,\n} from '../constants/index.js';\nimport type { ICoreOptions, ICoreResourceLimits } from '../contracts/index.js';\nimport { createCoreOperationResourceLimits } from '../diagnostic-utilities/index.js';\nimport { CoreConfigurationException } from '../exceptions/index.js';\nimport type { IRepositoryFormatVersion } from '../format/index.js';\nimport { freezeRecursively } from '../immutable/index.js';\n\n// detached adapter and complete Core configuration snapshots\nexport interface IRuntimeAdapterSnapshot {\n readonly id: string;\n readonly supportedRepositoryFormatVersions: readonly IRepositoryFormatVersion[];\n readonly inspect: (context: IRuntimeAdapterContext) => Promise<IRuntimeAdapterResult>;\n}\n\nexport interface ICoreOptionsSnapshot {\n readonly adapters: readonly IRuntimeAdapterSnapshot[];\n readonly limits: ICoreResourceLimits;\n}\n\n/** Creates an operation-local options view with one shared raw-diagnostic budget. */\nexport const createCoreOperationOptionsSnapshot = (\n options: ICoreOptionsSnapshot,\n): ICoreOptionsSnapshot => {\n return Object.freeze({\n adapters: options.adapters,\n limits: createCoreOperationResourceLimits(options.limits),\n });\n};\n\nconst RESOURCE_LIMIT_KEYS = [\n 'maxEntries',\n 'maxTotalBytesRead',\n 'maxFileBytes',\n 'maxManifestBytes',\n 'maxRetainedBytes',\n 'maxDiagnostics',\n 'maxEvidence',\n] as const satisfies readonly (keyof ICoreResourceLimits)[];\n\nconst STABLE_ID_PATTERN = /^[a-z0-9]+(?:-[a-z0-9]+)*$/u;\nconst WINDOWS_RESERVED_ID_PATTERN = /^(?:con|prn|aux|nul|com[1-9]|lpt[1-9])$/u;\n\nconst compareStrings = (left: string, right: string): number => {\n if (left < right) {\n return -1;\n }\n\n if (left > right) {\n return 1;\n }\n\n return 0;\n};\n\nconst invalidAdapter = (adapterId?: string): never => {\n throw new CoreConfigurationException({\n ...(adapterId === undefined ? {} : { adapterId }),\n code: 'INVALID_ADAPTER_DEFINITION',\n operation: 'create-core',\n });\n};\n\nconst isRecord = (value: unknown): value is Readonly<Record<string, unknown>> => {\n return typeof value === 'object' && value !== null && !Array.isArray(value);\n};\n\nconst isStableId = (value: string): boolean => {\n return value.length >= 1 && value.length <= 64 && STABLE_ID_PATTERN.test(value);\n};\n\n/**\n * Validates, copies, fills, and freezes all configured resource limits.\n * @param candidate The untrusted optional limit overrides.\n * @returns The complete frozen resource limits.\n * @throws\n * - INVALID_RESOURCE_LIMIT: A Core resource limit is invalid.\n */\nconst normalizeLimits = (candidate: unknown): ICoreResourceLimits => {\n if (candidate === undefined) {\n return DEFAULT_CORE_RESOURCE_LIMITS;\n }\n\n if (!isRecord(candidate)) {\n throw new CoreConfigurationException({\n code: 'INVALID_RESOURCE_LIMIT',\n operation: 'create-core',\n });\n }\n\n const knownKeys = new Set<string>(RESOURCE_LIMIT_KEYS);\n\n if (Object.keys(candidate).some((key) => !knownKeys.has(key))) {\n throw new CoreConfigurationException({\n code: 'INVALID_RESOURCE_LIMIT',\n operation: 'create-core',\n });\n }\n\n const normalized: ICoreResourceLimits = {\n ...DEFAULT_CORE_RESOURCE_LIMITS,\n };\n\n for (const key of RESOURCE_LIMIT_KEYS) {\n const value = candidate[key];\n\n if (value === undefined) {\n continue;\n }\n\n if (!Number.isSafeInteger(value) || (value as number) <= 0) {\n throw new CoreConfigurationException({\n code: 'INVALID_RESOURCE_LIMIT',\n operation: 'create-core',\n });\n }\n\n (normalized as Record<keyof ICoreResourceLimits, number>)[key] = value as number;\n }\n\n return freezeRecursively(normalized);\n};\n\n/**\n * Snapshots one adapter definition without freezing caller-owned state.\n * @param candidate The untrusted adapter definition.\n * @returns A frozen detached adapter snapshot.\n * @throws\n * - RESERVED_ADAPTER_ID: A reserved runtime adapter ID was supplied.\n * - INVALID_ADAPTER_DEFINITION: A runtime adapter definition is invalid.\n */\nconst normalizeAdapter = (candidate: unknown): IRuntimeAdapterSnapshot => {\n if (!isRecord(candidate)) {\n return invalidAdapter();\n }\n\n const id = candidate['id'];\n\n if (typeof id !== 'string' || !isStableId(id) || WINDOWS_RESERVED_ID_PATTERN.test(id)) {\n return invalidAdapter();\n }\n\n if (id === 'custom') {\n throw new CoreConfigurationException({\n adapterId: id,\n code: 'RESERVED_ADAPTER_ID',\n operation: 'create-core',\n });\n }\n\n if (!(RECOGNIZED_RUNTIME_ADAPTER_IDS as readonly string[]).includes(id)) {\n return invalidAdapter(id);\n }\n\n const versions = candidate['supportedRepositoryFormatVersions'];\n const inspect = candidate['inspect'];\n\n if (!Array.isArray(versions) || versions.length === 0 || typeof inspect !== 'function') {\n return invalidAdapter(id);\n }\n\n const supportedVersions = new Set<IRepositoryFormatVersion>();\n\n for (const version of versions as readonly unknown[]) {\n if (\n !SUPPORTED_REPOSITORY_FORMAT_VERSIONS.includes(version as IRepositoryFormatVersion) ||\n supportedVersions.has(version as IRepositoryFormatVersion)\n ) {\n return invalidAdapter(id);\n }\n\n supportedVersions.add(version as IRepositoryFormatVersion);\n }\n\n const inspectReference = inspect as IRuntimeAdapter['inspect'];\n\n return freezeRecursively({\n id,\n inspect: async (context: IRuntimeAdapterContext): Promise<IRuntimeAdapterResult> =>\n inspectReference.call(candidate, context),\n supportedRepositoryFormatVersions: [...supportedVersions].sort((left, right) => left - right),\n });\n};\n\n/**\n * Validates, snapshots, and deterministically sorts the configured adapter registry.\n * @param candidate The untrusted optional adapter definitions.\n * @returns The frozen adapter snapshots in canonical ID order.\n * @throws\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 */\nconst normalizeAdapters = (candidate: unknown): readonly IRuntimeAdapterSnapshot[] => {\n if (candidate === undefined) {\n return Object.freeze([]);\n }\n\n if (!Array.isArray(candidate)) {\n return invalidAdapter();\n }\n\n const adapters = Array.from(candidate as readonly unknown[], (adapter) =>\n normalizeAdapter(adapter),\n );\n const ids = new Set<string>();\n\n for (const adapter of adapters) {\n if (ids.has(adapter.id)) {\n throw new CoreConfigurationException({\n adapterId: adapter.id,\n code: 'DUPLICATE_ADAPTER_ID',\n operation: 'create-core',\n });\n }\n\n ids.add(adapter.id);\n }\n\n return freezeRecursively(adapters.sort((left, right) => compareStrings(left.id, right.id)));\n};\n\n/**\n * Validates and snapshots caller-owned Core construction options.\n * @param options The optional adapters and resource-limit overrides.\n * @returns A deeply frozen, deterministically ordered configuration snapshot.\n * @throws\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 * - INVALID_RESOURCE_LIMIT: A Core resource limit is invalid.\n */\nexport const normalizeCoreOptions = (options: ICoreOptions | undefined): ICoreOptionsSnapshot => {\n if (options !== undefined && !isRecord(options)) {\n return invalidAdapter();\n }\n\n return freezeRecursively({\n adapters: normalizeAdapters(options?.['adapters']),\n limits: normalizeLimits(options?.['limits']),\n });\n};\n"],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export { inspectCustomRuntimeRelationships } from './inspection.js';
2
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/custom-runtime-inspection/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iCAAiC,EAAE,MAAM,iBAAiB,CAAC"}
@@ -1,11 +0,0 @@
1
- import type { IRuntimeAdapterContext, IRuntimeAdapterResult } from '../adapter/index.js';
2
- /**
3
- * Reports the declared relationships that Core cannot verify for the reserved custom runtime.
4
- * @param context The universally validated agent and operation output allowance.
5
- * @returns A promise resolving to bounded relationship warnings without a registered adapter.
6
- * @throws
7
- * - RESOURCE_LIMIT_EXCEEDED: A Core resource limit was exceeded.
8
- * - ABORTED: The Core operation was aborted.
9
- */
10
- export declare const inspectCustomRuntimeRelationships: (context: IRuntimeAdapterContext) => Promise<IRuntimeAdapterResult>;
11
- //# sourceMappingURL=inspection.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"inspection.d.ts","sourceRoot":"","sources":["../../src/custom-runtime-inspection/inspection.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,sBAAsB,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAKzF;;;;;;;GAOG;AACH,eAAO,MAAM,iCAAiC,GAC5C,SAAS,sBAAsB,KAC9B,OAAO,CAAC,qBAAqB,CAgD/B,CAAC"}