@tiangong-lca/cli 0.0.32 → 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (101) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +33 -12
  3. package/assets/import-smoke/simapro.csv +20 -0
  4. package/bin/tiangong-lca.js +1 -1
  5. package/dist/src/cli.js +103 -65
  6. package/dist/src/cli.js.map +1 -1
  7. package/dist/src/lib/dataset-bilingual.js.map +1 -1
  8. package/dist/src/lib/dataset-classification.js.map +1 -1
  9. package/dist/src/lib/dataset-contract.js.map +1 -1
  10. package/dist/src/lib/dataset-evidence-search.js.map +1 -1
  11. package/dist/src/lib/dataset-import-lca.js +302 -131
  12. package/dist/src/lib/dataset-import-lca.js.map +1 -1
  13. package/dist/src/lib/dataset-maintenance-apply.js +916 -43
  14. package/dist/src/lib/dataset-maintenance-apply.js.map +1 -1
  15. package/dist/src/lib/dataset-maintenance-clear-account.js +10 -4
  16. package/dist/src/lib/dataset-maintenance-clear-account.js.map +1 -1
  17. package/dist/src/lib/dataset-maintenance-contract.js +1 -6
  18. package/dist/src/lib/dataset-maintenance-contract.js.map +1 -1
  19. package/dist/src/lib/dataset-maintenance-derivatives.js +0 -1
  20. package/dist/src/lib/dataset-maintenance-derivatives.js.map +1 -1
  21. package/dist/src/lib/dataset-maintenance-flow-identity-capture.js +1 -0
  22. package/dist/src/lib/dataset-maintenance-flow-identity-capture.js.map +1 -1
  23. package/dist/src/lib/dataset-maintenance-pagination.js.map +1 -1
  24. package/dist/src/lib/dataset-maintenance-protected-before.js.map +1 -1
  25. package/dist/src/lib/dataset-maintenance-protected-contract.js +0 -1
  26. package/dist/src/lib/dataset-maintenance-protected-contract.js.map +1 -1
  27. package/dist/src/lib/dataset-maintenance-protected-freeze.js.map +1 -1
  28. package/dist/src/lib/dataset-maintenance-protected-preparation.js +0 -2
  29. package/dist/src/lib/dataset-maintenance-protected-preparation.js.map +1 -1
  30. package/dist/src/lib/dataset-maintenance-protected-seal.js.map +1 -1
  31. package/dist/src/lib/dataset-maintenance-protected-verify.js +0 -3
  32. package/dist/src/lib/dataset-maintenance-protected-verify.js.map +1 -1
  33. package/dist/src/lib/dataset-maintenance-remote.js +68 -12
  34. package/dist/src/lib/dataset-maintenance-remote.js.map +1 -1
  35. package/dist/src/lib/dataset-maintenance-verify.js +1 -2
  36. package/dist/src/lib/dataset-maintenance-verify.js.map +1 -1
  37. package/dist/src/lib/dataset-remote-refresh.js.map +1 -1
  38. package/dist/src/lib/dataset-remote-verify.js +2 -0
  39. package/dist/src/lib/dataset-remote-verify.js.map +1 -1
  40. package/dist/src/lib/dataset-save-draft-run.js +2 -0
  41. package/dist/src/lib/dataset-save-draft-run.js.map +1 -1
  42. package/dist/src/lib/flow-build-alias-map.js.map +1 -1
  43. package/dist/src/lib/flow-fetch-rows.js.map +1 -1
  44. package/dist/src/lib/flow-get.js.map +1 -1
  45. package/dist/src/lib/flow-governance.js.map +1 -1
  46. package/dist/src/lib/flow-list.js +1 -0
  47. package/dist/src/lib/flow-list.js.map +1 -1
  48. package/dist/src/lib/flow-payload-validation.js.map +1 -1
  49. package/dist/src/lib/flow-publish-version.js +1 -0
  50. package/dist/src/lib/flow-publish-version.js.map +1 -1
  51. package/dist/src/lib/flow-read.js +1 -0
  52. package/dist/src/lib/flow-read.js.map +1 -1
  53. package/dist/src/lib/flow-regen-product.js.map +1 -1
  54. package/dist/src/lib/flow-remediate.js.map +1 -1
  55. package/dist/src/lib/identity-preflight.js +4 -10
  56. package/dist/src/lib/identity-preflight.js.map +1 -1
  57. package/dist/src/lib/lifecyclemodel-bundle-save.js +1 -0
  58. package/dist/src/lib/lifecyclemodel-bundle-save.js.map +1 -1
  59. package/dist/src/lib/lifecyclemodel-orchestrate.js.map +1 -1
  60. package/dist/src/lib/lifecyclemodel-publish-resulting-process.js.map +1 -1
  61. package/dist/src/lib/lifecyclemodel-resulting-process.js.map +1 -1
  62. package/dist/src/lib/lifecyclemodel-save-draft-run.js.map +1 -1
  63. package/dist/src/lib/lifecyclemodel-validate-build.js.map +1 -1
  64. package/dist/src/lib/package-version.js.map +1 -1
  65. package/dist/src/lib/process-auto-build.js.map +1 -1
  66. package/dist/src/lib/process-dedup-review.js +14 -7
  67. package/dist/src/lib/process-dedup-review.js.map +1 -1
  68. package/dist/src/lib/process-flow-build-plan.js +111 -30
  69. package/dist/src/lib/process-flow-build-plan.js.map +1 -1
  70. package/dist/src/lib/process-get.js +1 -0
  71. package/dist/src/lib/process-get.js.map +1 -1
  72. package/dist/src/lib/process-list.js +1 -0
  73. package/dist/src/lib/process-list.js.map +1 -1
  74. package/dist/src/lib/process-payload-validation.js.map +1 -1
  75. package/dist/src/lib/process-qa.js.map +1 -1
  76. package/dist/src/lib/process-refresh-references.js +15 -10
  77. package/dist/src/lib/process-refresh-references.js.map +1 -1
  78. package/dist/src/lib/process-save-draft.js +9 -3
  79. package/dist/src/lib/process-save-draft.js.map +1 -1
  80. package/dist/src/lib/process-scope-statistics.js +11 -4
  81. package/dist/src/lib/process-scope-statistics.js.map +1 -1
  82. package/dist/src/lib/process-verify-rows.js.map +1 -1
  83. package/dist/src/lib/publish.js.map +1 -1
  84. package/dist/src/lib/run.js.map +1 -1
  85. package/dist/src/lib/supabase-client.js +13 -1
  86. package/dist/src/lib/supabase-client.js.map +1 -1
  87. package/dist/src/lib/supabase-data-api-contract.js +328 -0
  88. package/dist/src/lib/supabase-data-api-contract.js.map +1 -0
  89. package/dist/src/lib/supabase-data-api-replay.js +69 -0
  90. package/dist/src/lib/supabase-data-api-replay.js.map +1 -0
  91. package/dist/src/lib/supabase-json-ordered-write.js +2 -0
  92. package/dist/src/lib/supabase-json-ordered-write.js.map +1 -1
  93. package/dist/src/lib/supabase-rest.js +1 -0
  94. package/dist/src/lib/supabase-rest.js.map +1 -1
  95. package/dist/src/lib/tidas-sdk-package-validator.js +5 -5
  96. package/dist/src/lib/tidas-sdk-package-validator.js.map +1 -1
  97. package/dist/src/lib/validation.js.map +1 -1
  98. package/dist/src/main.js.map +1 -1
  99. package/package.json +40 -40
  100. package/dist/scripts/assert-full-coverage.js +0 -77
  101. package/dist/scripts/assert-full-coverage.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"lifecyclemodel-save-draft-run.js","sourceRoot":"","sources":["../../../src/lib/lifecyclemodel-save-draft-run.ts"],"names":[],"mappings":"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","sourcesContent":["import path from 'node:path';\nimport * as tidasSdk from '@tiangong-lca/tidas-sdk';\nimport { writeJsonArtifact, writeJsonLinesArtifact } from './artifacts.js';\nimport { CliError } from './errors.js';\nimport type { FetchLike } from './http.js';\nimport {\n firstNonEmpty,\n isRecord,\n materializeDatasetRows,\n type JsonObject,\n} from './dataset-local.js';\nimport {\n syncLifecyclemodelBundleRecord,\n type LifecyclemodelBundleWriteResult,\n type LifecyclemodelPublishMetadata,\n} from './lifecyclemodel-bundle-save.js';\nimport { buildRunId, resolveRunLayout } from './run.js';\nimport {\n normalizeIssuePath,\n type SafeParseSchema,\n type SdkValidationFactory,\n validateSchemaWithDeepFallback,\n} from './tidas-sdk-validation.js';\n\nexport type LifecyclemodelPayloadValidationIssue = {\n path: string;\n message: string;\n code: string;\n};\n\nexport type LifecyclemodelPayloadValidationResult =\n | {\n ok: true;\n validator: string;\n issue_count: 0;\n issues: [];\n }\n | {\n ok: false;\n validator: string;\n issue_count: number;\n issues: LifecyclemodelPayloadValidationIssue[];\n };\n\ntype LifecyclemodelSaveDraftCandidate = {\n id: string | null;\n version: string | null;\n payload: JsonObject;\n metadata: LifecyclemodelPublishMetadata | null;\n validation?: LifecyclemodelPayloadValidationResult;\n error?: { message: string };\n};\n\nexport type LifecyclemodelSaveDraftModelReport = {\n id: string | null;\n version: string | null;\n status: 'prepared' | 'executed' | 'failed';\n validation?: LifecyclemodelPayloadValidationResult;\n execution?: LifecyclemodelBundleWriteResult;\n error?: { message: string };\n};\n\nexport type LifecyclemodelSaveDraftReport = {\n generated_at_utc: string;\n input_path: string;\n out_dir: string;\n commit: boolean;\n mode: 'dry_run' | 'commit';\n status: 'completed' | 'completed_with_failures';\n counts: {\n selected: number;\n prepared: number;\n executed: number;\n failed: number;\n };\n files: {\n normalized_input: string;\n selected_lifecyclemodels: string;\n progress_jsonl: string;\n failures_jsonl: string;\n summary_json: string;\n };\n lifecyclemodels: LifecyclemodelSaveDraftModelReport[];\n};\n\nexport type RunLifecyclemodelSaveDraftOptions = {\n inputPath: string;\n outDir?: string | null;\n commit?: boolean | null;\n rawInput?: unknown;\n env?: NodeJS.ProcessEnv;\n fetchImpl?: FetchLike;\n timeoutMs?: number;\n now?: Date;\n validateLifecyclemodelPayloadImpl?: (\n payload: JsonObject,\n ) => LifecyclemodelPayloadValidationResult;\n};\n\nconst VALIDATOR_NAME = '@tiangong-lca/tidas-sdk/LifeCycleModelSchema';\n\nfunction getLifecyclemodelSchema(\n sdk: { LifeCycleModelSchema?: unknown } = tidasSdk,\n): SafeParseSchema {\n const schema = sdk.LifeCycleModelSchema as SafeParseSchema | undefined;\n if (!schema?.safeParse) {\n throw new Error(`${VALIDATOR_NAME} is unavailable in the published CLI runtime.`);\n }\n return schema;\n}\n\nfunction getLifecyclemodelFactory(\n sdk: { createLifeCycleModel?: unknown } = tidasSdk,\n): SdkValidationFactory | null {\n const createLifeCycleModel = sdk.createLifeCycleModel;\n return typeof createLifeCycleModel === 'function'\n ? (createLifeCycleModel as SdkValidationFactory)\n : null;\n}\n\nexport function validateLifecyclemodelPayload(\n payload: JsonObject,\n schema?: SafeParseSchema,\n createEntity?: SdkValidationFactory | null,\n): LifecyclemodelPayloadValidationResult {\n const activeSchema = schema ?? getLifecyclemodelSchema();\n const activeCreateEntity =\n createEntity === undefined && schema === undefined ? getLifecyclemodelFactory() : createEntity;\n const outcome = validateSchemaWithDeepFallback(activeSchema, payload, activeCreateEntity);\n if (outcome.success) {\n return {\n ok: true,\n validator: VALIDATOR_NAME,\n issue_count: 0,\n issues: [],\n };\n }\n\n const issues = outcome.issues.map((issue) => ({\n path: normalizeIssuePath(issue.path),\n message: issue.message ?? 'Validation failed',\n code: issue.code ?? 'custom',\n }));\n\n return {\n ok: false,\n validator: VALIDATOR_NAME,\n issue_count: issues.length,\n issues,\n };\n}\n\nfunction summarizeValidation(result: LifecyclemodelPayloadValidationResult): string {\n if (result.ok) {\n return 'local LifeCycleModelSchema validation passed';\n }\n const preview = result.issues\n .slice(0, 3)\n .map((issue) => `${issue.path}: ${issue.message}`)\n .join('; ');\n return `local LifeCycleModelSchema validation failed with ${result.issue_count} issue(s)${\n preview ? ` (${preview})` : ''\n }`;\n}\n\nfunction extractMetadata(row: JsonObject): LifecyclemodelPublishMetadata | null {\n const metadata: LifecyclemodelPublishMetadata = {};\n const jsonTg = isRecord(row.json_tg) ? row.json_tg : isRecord(row.jsonTg) ? row.jsonTg : null;\n if (jsonTg) {\n metadata.json_tg = jsonTg;\n }\n if (Array.isArray(row.processMutations)) {\n metadata.processMutations = row.processMutations.filter(isRecord);\n } else if (Array.isArray(row.process_mutations)) {\n metadata.processMutations = row.process_mutations.filter(isRecord);\n }\n if (typeof row.ruleVerification === 'boolean') {\n metadata.ruleVerification = row.ruleVerification;\n } else if (typeof row.rule_verification === 'boolean') {\n metadata.ruleVerification = row.rule_verification;\n }\n\n return Object.keys(metadata).length > 0 ? metadata : null;\n}\n\nfunction candidateError(message: string): { message: string } {\n return { message };\n}\n\nfunction buildCandidate(\n row: JsonObject,\n payload: JsonObject,\n validate: (payload: JsonObject) => LifecyclemodelPayloadValidationResult,\n): LifecyclemodelSaveDraftCandidate {\n const root = isRecord(payload.lifeCycleModelDataSet) ? payload.lifeCycleModelDataSet : payload;\n const information = isRecord(root.lifeCycleModelInformation)\n ? root.lifeCycleModelInformation\n : {};\n const dataSetInformation = isRecord(information.dataSetInformation)\n ? information.dataSetInformation\n : {};\n const administrativeInformation = isRecord(root.administrativeInformation)\n ? root.administrativeInformation\n : {};\n const publicationAndOwnership = isRecord(administrativeInformation.publicationAndOwnership)\n ? administrativeInformation.publicationAndOwnership\n : {};\n const id = firstNonEmpty(row.id, dataSetInformation['common:UUID']);\n const version = firstNonEmpty(\n row.version,\n publicationAndOwnership['common:dataSetVersion'],\n '01.01.000',\n );\n\n if (!id) {\n return {\n id: null,\n version,\n payload,\n metadata: extractMetadata(row),\n error: candidateError(\n 'Lifecyclemodel payload missing lifeCycleModelInformation.dataSetInformation.common:UUID.',\n ),\n };\n }\n\n const validation = validate(payload);\n if (!validation.ok) {\n return {\n id,\n version,\n payload,\n metadata: extractMetadata(row),\n validation,\n error: candidateError(summarizeValidation(validation)),\n };\n }\n\n return {\n id,\n version,\n payload,\n metadata: extractMetadata(row),\n validation,\n };\n}\n\nfunction defaultOutDir(inputPath: string, commit: boolean, now: Date): string {\n const runId = buildRunId({\n namespace: 'lifecyclemodel_save_draft',\n operation: commit ? 'commit' : 'dry_run',\n now,\n });\n return resolveRunLayout(\n path.join(path.dirname(inputPath), 'artifacts'),\n 'lifecyclemodel_save_draft',\n runId,\n ).runRoot;\n}\n\nfunction buildFiles(outDir: string): LifecyclemodelSaveDraftReport['files'] {\n const outputDir = path.join(outDir, 'outputs', 'save-draft-bundle');\n return {\n normalized_input: path.join(outDir, 'inputs', 'normalized-input.json'),\n selected_lifecyclemodels: path.join(outputDir, 'selected-lifecyclemodels.jsonl'),\n progress_jsonl: path.join(outputDir, 'progress.jsonl'),\n failures_jsonl: path.join(outputDir, 'failures.jsonl'),\n summary_json: path.join(outputDir, 'summary.json'),\n };\n}\n\nfunction compactCandidate(candidate: LifecyclemodelSaveDraftCandidate): JsonObject {\n return {\n id: candidate.id,\n version: candidate.version,\n payload: candidate.payload,\n metadata: candidate.metadata,\n ...(candidate.validation ? { validation: candidate.validation } : {}),\n ...(candidate.error ? { error: candidate.error } : {}),\n };\n}\n\nfunction serializeError(error: unknown): { message: string } {\n return {\n message: error instanceof Error ? error.message : String(error),\n };\n}\n\nexport async function runLifecyclemodelSaveDraft(\n options: RunLifecyclemodelSaveDraftOptions,\n): Promise<LifecyclemodelSaveDraftReport> {\n const now = options.now ?? new Date();\n const inputPath = path.resolve(options.inputPath);\n const commit = options.commit === true;\n const outDir = path.resolve(options.outDir ?? defaultOutDir(inputPath, commit, now));\n const validate = options.validateLifecyclemodelPayloadImpl ?? validateLifecyclemodelPayload;\n const datasetRows = materializeDatasetRows(inputPath, options.rawInput);\n const candidates = datasetRows.map((row) => buildCandidate(row.row, row.payload, validate));\n const files = buildFiles(outDir);\n\n if (commit && (!options.env || !options.fetchImpl)) {\n throw new CliError(\n 'Lifecyclemodel save-draft commit requires env and fetch runtime bindings.',\n {\n code: 'LIFECYCLEMODEL_SAVE_DRAFT_RUNTIME_REQUIRED',\n exitCode: 2,\n },\n );\n }\n\n writeJsonArtifact(files.normalized_input, {\n input_kind: 'rows_file',\n input_path: inputPath,\n row_count: candidates.length,\n });\n writeJsonLinesArtifact(files.selected_lifecyclemodels, candidates.map(compactCandidate));\n\n const reports: LifecyclemodelSaveDraftModelReport[] = [];\n for (const candidate of candidates) {\n const report: LifecyclemodelSaveDraftModelReport = {\n id: candidate.id,\n version: candidate.version,\n status: 'prepared',\n ...(candidate.validation ? { validation: candidate.validation } : {}),\n };\n\n if (candidate.error) {\n report.status = 'failed';\n report.error = candidate.error;\n reports.push(report);\n continue;\n }\n\n if (!commit) {\n reports.push(report);\n continue;\n }\n\n try {\n report.execution = await syncLifecyclemodelBundleRecord({\n id: candidate.id!,\n version: candidate.version!,\n payload: candidate.payload,\n metadata: candidate.metadata,\n env: options.env!,\n fetchImpl: options.fetchImpl!,\n timeoutMs: options.timeoutMs,\n });\n report.status = 'executed';\n } catch (error) {\n report.status = 'failed';\n report.error = serializeError(error);\n }\n reports.push(report);\n }\n\n const failures = reports.filter((report) => report.status === 'failed');\n writeJsonLinesArtifact(files.progress_jsonl, reports);\n writeJsonLinesArtifact(files.failures_jsonl, failures);\n\n const report: LifecyclemodelSaveDraftReport = {\n generated_at_utc: now.toISOString(),\n input_path: inputPath,\n out_dir: outDir,\n commit,\n mode: commit ? 'commit' : 'dry_run',\n status: failures.length > 0 ? 'completed_with_failures' : 'completed',\n counts: {\n selected: candidates.length,\n prepared: reports.filter((entry) => entry.status === 'prepared').length,\n executed: reports.filter((entry) => entry.status === 'executed').length,\n failed: failures.length,\n },\n files,\n lifecyclemodels: reports,\n };\n writeJsonArtifact(files.summary_json, report);\n return report;\n}\n\nexport const __testInternals = {\n buildCandidate,\n getLifecyclemodelFactory,\n getLifecyclemodelSchema,\n normalizeIssuePath,\n serializeError,\n summarizeValidation,\n validateLifecyclemodelPayload,\n};\n"]}
1
+ {"version":3,"file":"lifecyclemodel-save-draft-run.js","sourceRoot":"","sources":["../../../src/lib/lifecyclemodel-save-draft-run.ts"],"names":[],"mappings":"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","sourcesContent":["import path from 'node:path';\nimport * as tidasSdk from '@tiangong-lca/tidas-sdk';\nimport { writeJsonArtifact, writeJsonLinesArtifact } from './artifacts.js';\nimport { CliError } from './errors.js';\nimport type { FetchLike } from './http.js';\nimport {\n firstNonEmpty,\n isRecord,\n materializeDatasetRows,\n type JsonObject,\n} from './dataset-local.js';\nimport {\n syncLifecyclemodelBundleRecord,\n type LifecyclemodelBundleWriteResult,\n type LifecyclemodelPublishMetadata,\n} from './lifecyclemodel-bundle-save.js';\nimport { buildRunId, resolveRunLayout } from './run.js';\nimport {\n normalizeIssuePath,\n type SafeParseSchema,\n type SdkValidationFactory,\n validateSchemaWithDeepFallback,\n} from './tidas-sdk-validation.js';\n\nexport type LifecyclemodelPayloadValidationIssue = {\n path: string;\n message: string;\n code: string;\n};\n\nexport type LifecyclemodelPayloadValidationResult =\n | {\n ok: true;\n validator: string;\n issue_count: 0;\n issues: [];\n }\n | {\n ok: false;\n validator: string;\n issue_count: number;\n issues: LifecyclemodelPayloadValidationIssue[];\n };\n\ntype LifecyclemodelSaveDraftCandidate = {\n id: string | null;\n version: string | null;\n payload: JsonObject;\n metadata: LifecyclemodelPublishMetadata | null;\n validation?: LifecyclemodelPayloadValidationResult;\n error?: { message: string };\n};\n\nexport type LifecyclemodelSaveDraftModelReport = {\n id: string | null;\n version: string | null;\n status: 'prepared' | 'executed' | 'failed';\n validation?: LifecyclemodelPayloadValidationResult;\n execution?: LifecyclemodelBundleWriteResult;\n error?: { message: string };\n};\n\nexport type LifecyclemodelSaveDraftReport = {\n generated_at_utc: string;\n input_path: string;\n out_dir: string;\n commit: boolean;\n mode: 'dry_run' | 'commit';\n status: 'completed' | 'completed_with_failures';\n counts: {\n selected: number;\n prepared: number;\n executed: number;\n failed: number;\n };\n files: {\n normalized_input: string;\n selected_lifecyclemodels: string;\n progress_jsonl: string;\n failures_jsonl: string;\n summary_json: string;\n };\n lifecyclemodels: LifecyclemodelSaveDraftModelReport[];\n};\n\nexport type RunLifecyclemodelSaveDraftOptions = {\n inputPath: string;\n outDir?: string | null;\n commit?: boolean | null;\n rawInput?: unknown;\n env?: NodeJS.ProcessEnv;\n fetchImpl?: FetchLike;\n timeoutMs?: number;\n now?: Date;\n validateLifecyclemodelPayloadImpl?: (\n payload: JsonObject,\n ) => LifecyclemodelPayloadValidationResult;\n};\n\nconst VALIDATOR_NAME = '@tiangong-lca/tidas-sdk/LifeCycleModelSchema';\n\nfunction getLifecyclemodelSchema(\n sdk: { LifeCycleModelSchema?: unknown } = tidasSdk,\n): SafeParseSchema {\n const schema = sdk.LifeCycleModelSchema as SafeParseSchema | undefined;\n if (!schema?.safeParse) {\n throw new Error(`${VALIDATOR_NAME} is unavailable in the published CLI runtime.`);\n }\n return schema;\n}\n\nfunction getLifecyclemodelFactory(\n sdk: { createLifeCycleModel?: unknown } = tidasSdk,\n): SdkValidationFactory | null {\n const createLifeCycleModel = sdk.createLifeCycleModel;\n return typeof createLifeCycleModel === 'function'\n ? (createLifeCycleModel as SdkValidationFactory)\n : null;\n}\n\nexport function validateLifecyclemodelPayload(\n payload: JsonObject,\n schema?: SafeParseSchema,\n createEntity?: SdkValidationFactory | null,\n): LifecyclemodelPayloadValidationResult {\n const activeSchema = schema ?? getLifecyclemodelSchema();\n const activeCreateEntity =\n createEntity === undefined && schema === undefined ? getLifecyclemodelFactory() : createEntity;\n const outcome = validateSchemaWithDeepFallback(activeSchema, payload, activeCreateEntity);\n if (outcome.success) {\n return {\n ok: true,\n validator: VALIDATOR_NAME,\n issue_count: 0,\n issues: [],\n };\n }\n\n const issues = outcome.issues.map((issue) => ({\n path: normalizeIssuePath(issue.path),\n message: issue.message ?? 'Validation failed',\n code: issue.code ?? 'custom',\n }));\n\n return {\n ok: false,\n validator: VALIDATOR_NAME,\n issue_count: issues.length,\n issues,\n };\n}\n\nfunction summarizeValidation(result: LifecyclemodelPayloadValidationResult): string {\n if (result.ok) {\n return 'local LifeCycleModelSchema validation passed';\n }\n const preview = result.issues\n .slice(0, 3)\n .map((issue) => `${issue.path}: ${issue.message}`)\n .join('; ');\n return `local LifeCycleModelSchema validation failed with ${result.issue_count} issue(s)${\n preview ? ` (${preview})` : ''\n }`;\n}\n\nfunction extractMetadata(row: JsonObject): LifecyclemodelPublishMetadata | null {\n const metadata: LifecyclemodelPublishMetadata = {};\n const jsonTg = isRecord(row.json_tg) ? row.json_tg : isRecord(row.jsonTg) ? row.jsonTg : null;\n if (jsonTg) {\n metadata.json_tg = jsonTg;\n }\n if (Array.isArray(row.processMutations)) {\n metadata.processMutations = row.processMutations.filter(isRecord);\n } else if (Array.isArray(row.process_mutations)) {\n metadata.processMutations = row.process_mutations.filter(isRecord);\n }\n if (typeof row.ruleVerification === 'boolean') {\n metadata.ruleVerification = row.ruleVerification;\n } else if (typeof row.rule_verification === 'boolean') {\n metadata.ruleVerification = row.rule_verification;\n }\n\n return Object.keys(metadata).length > 0 ? metadata : null;\n}\n\nfunction candidateError(message: string): { message: string } {\n return { message };\n}\n\nfunction buildCandidate(\n row: JsonObject,\n payload: JsonObject,\n validate: (payload: JsonObject) => LifecyclemodelPayloadValidationResult,\n): LifecyclemodelSaveDraftCandidate {\n const root = isRecord(payload.lifeCycleModelDataSet) ? payload.lifeCycleModelDataSet : payload;\n const information = isRecord(root.lifeCycleModelInformation)\n ? root.lifeCycleModelInformation\n : {};\n const dataSetInformation = isRecord(information.dataSetInformation)\n ? information.dataSetInformation\n : {};\n const administrativeInformation = isRecord(root.administrativeInformation)\n ? root.administrativeInformation\n : {};\n const publicationAndOwnership = isRecord(administrativeInformation.publicationAndOwnership)\n ? administrativeInformation.publicationAndOwnership\n : {};\n const id = firstNonEmpty(row.id, dataSetInformation['common:UUID']);\n const version = firstNonEmpty(\n row.version,\n publicationAndOwnership['common:dataSetVersion'],\n '01.01.000',\n );\n\n if (!id) {\n return {\n id: null,\n version,\n payload,\n metadata: extractMetadata(row),\n error: candidateError(\n 'Lifecyclemodel payload missing lifeCycleModelInformation.dataSetInformation.common:UUID.',\n ),\n };\n }\n\n const validation = validate(payload);\n if (!validation.ok) {\n return {\n id,\n version,\n payload,\n metadata: extractMetadata(row),\n validation,\n error: candidateError(summarizeValidation(validation)),\n };\n }\n\n return {\n id,\n version,\n payload,\n metadata: extractMetadata(row),\n validation,\n };\n}\n\nfunction defaultOutDir(inputPath: string, commit: boolean, now: Date): string {\n const runId = buildRunId({\n namespace: 'lifecyclemodel_save_draft',\n operation: commit ? 'commit' : 'dry_run',\n now,\n });\n return resolveRunLayout(\n path.join(path.dirname(inputPath), 'artifacts'),\n 'lifecyclemodel_save_draft',\n runId,\n ).runRoot;\n}\n\nfunction buildFiles(outDir: string): LifecyclemodelSaveDraftReport['files'] {\n const outputDir = path.join(outDir, 'outputs', 'save-draft-bundle');\n return {\n normalized_input: path.join(outDir, 'inputs', 'normalized-input.json'),\n selected_lifecyclemodels: path.join(outputDir, 'selected-lifecyclemodels.jsonl'),\n progress_jsonl: path.join(outputDir, 'progress.jsonl'),\n failures_jsonl: path.join(outputDir, 'failures.jsonl'),\n summary_json: path.join(outputDir, 'summary.json'),\n };\n}\n\nfunction compactCandidate(candidate: LifecyclemodelSaveDraftCandidate): JsonObject {\n return {\n id: candidate.id,\n version: candidate.version,\n payload: candidate.payload,\n metadata: candidate.metadata,\n ...(candidate.validation ? { validation: candidate.validation } : {}),\n ...(candidate.error ? { error: candidate.error } : {}),\n };\n}\n\nfunction serializeError(error: unknown): { message: string } {\n return {\n message: error instanceof Error ? error.message : String(error),\n };\n}\n\nexport async function runLifecyclemodelSaveDraft(\n options: RunLifecyclemodelSaveDraftOptions,\n): Promise<LifecyclemodelSaveDraftReport> {\n const now = options.now ?? new Date();\n const inputPath = path.resolve(options.inputPath);\n const commit = options.commit === true;\n const outDir = path.resolve(options.outDir ?? defaultOutDir(inputPath, commit, now));\n const validate = options.validateLifecyclemodelPayloadImpl ?? validateLifecyclemodelPayload;\n const datasetRows = materializeDatasetRows(inputPath, options.rawInput);\n const candidates = datasetRows.map((row) => buildCandidate(row.row, row.payload, validate));\n const files = buildFiles(outDir);\n\n if (commit && (!options.env || !options.fetchImpl)) {\n throw new CliError(\n 'Lifecyclemodel save-draft commit requires env and fetch runtime bindings.',\n {\n code: 'LIFECYCLEMODEL_SAVE_DRAFT_RUNTIME_REQUIRED',\n exitCode: 2,\n },\n );\n }\n\n writeJsonArtifact(files.normalized_input, {\n input_kind: 'rows_file',\n input_path: inputPath,\n row_count: candidates.length,\n });\n writeJsonLinesArtifact(files.selected_lifecyclemodels, candidates.map(compactCandidate));\n\n const reports: LifecyclemodelSaveDraftModelReport[] = [];\n for (const candidate of candidates) {\n const report: LifecyclemodelSaveDraftModelReport = {\n id: candidate.id,\n version: candidate.version,\n status: 'prepared',\n ...(candidate.validation ? { validation: candidate.validation } : {}),\n };\n\n if (candidate.error) {\n report.status = 'failed';\n report.error = candidate.error;\n reports.push(report);\n continue;\n }\n\n if (!commit) {\n reports.push(report);\n continue;\n }\n\n try {\n report.execution = await syncLifecyclemodelBundleRecord({\n id: candidate.id!,\n version: candidate.version!,\n payload: candidate.payload,\n metadata: candidate.metadata,\n env: options.env!,\n fetchImpl: options.fetchImpl!,\n timeoutMs: options.timeoutMs,\n });\n report.status = 'executed';\n } catch (error) {\n report.status = 'failed';\n report.error = serializeError(error);\n }\n reports.push(report);\n }\n\n const failures = reports.filter((report) => report.status === 'failed');\n writeJsonLinesArtifact(files.progress_jsonl, reports);\n writeJsonLinesArtifact(files.failures_jsonl, failures);\n\n const report: LifecyclemodelSaveDraftReport = {\n generated_at_utc: now.toISOString(),\n input_path: inputPath,\n out_dir: outDir,\n commit,\n mode: commit ? 'commit' : 'dry_run',\n status: failures.length > 0 ? 'completed_with_failures' : 'completed',\n counts: {\n selected: candidates.length,\n prepared: reports.filter((entry) => entry.status === 'prepared').length,\n executed: reports.filter((entry) => entry.status === 'executed').length,\n failed: failures.length,\n },\n files,\n lifecyclemodels: reports,\n };\n writeJsonArtifact(files.summary_json, report);\n return report;\n}\n\nexport const __testInternals = {\n buildCandidate,\n getLifecyclemodelFactory,\n getLifecyclemodelSchema,\n normalizeIssuePath,\n serializeError,\n summarizeValidation,\n validateLifecyclemodelPayload,\n};\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"lifecyclemodel-validate-build.js","sourceRoot":"","sources":["../../../src/lib/lifecyclemodel-validate-build.ts"],"names":[],"mappings":"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","sourcesContent":["import { existsSync, readdirSync } from 'node:fs';\nimport path from 'node:path';\nimport { readJsonArtifact, writeJsonArtifact } from './artifacts.js';\nimport { CliError } from './errors.js';\nimport {\n runValidation,\n type RunValidationOptions,\n type ValidationRunReport,\n} from './validation.js';\n\ntype JsonObject = Record<string, unknown>;\n\ntype ModelBundleEntry = {\n runName: string;\n inputDir: string;\n modelFiles: string[];\n};\n\nfunction isRecord(value: unknown): value is JsonObject {\n return typeof value === 'object' && value !== null && !Array.isArray(value);\n}\n\nfunction nonEmptyString(value: unknown): string | null {\n if (typeof value !== 'string') {\n return null;\n }\n\n const normalized = value.trim();\n return normalized || null;\n}\n\nfunction readRequiredJsonObject(\n filePath: string,\n missingCode: string,\n invalidCode: string,\n label: string,\n): JsonObject {\n if (!existsSync(filePath)) {\n throw new CliError(`Required lifecyclemodel ${label} artifact not found: ${filePath}`, {\n code: missingCode,\n exitCode: 2,\n details: { filePath, label },\n });\n }\n\n const value = readJsonArtifact(filePath);\n if (!isRecord(value)) {\n throw new CliError(`Expected lifecyclemodel ${label} artifact JSON object: ${filePath}`, {\n code: invalidCode,\n exitCode: 2,\n details: { filePath, label },\n });\n }\n\n return value;\n}\n\nexport type LifecyclemodelValidateBuildLayout = {\n runId: string;\n runRoot: string;\n modelsDir: string;\n reportsDir: string;\n modelReportsDir: string;\n manifestsDir: string;\n runManifestPath: string;\n invocationIndexPath: string;\n autoBuildReportPath: string;\n reportPath: string;\n};\n\nexport type LifecyclemodelValidateBuildModelReport = {\n run_name: string;\n input_dir: string;\n model_files: string[];\n report_file: string;\n validation: ValidationRunReport;\n};\n\nexport type LifecyclemodelValidateBuildReport = {\n schema_version: 1;\n generated_at_utc: string;\n status: 'completed_lifecyclemodel_validate_build';\n run_id: string;\n run_root: string;\n ok: boolean;\n engine: string;\n counts: {\n models: number;\n ok: number;\n failed: number;\n };\n files: {\n run_manifest: string;\n invocation_index: string;\n auto_build_report: string | null;\n report: string;\n model_reports_dir: string;\n };\n model_reports: LifecyclemodelValidateBuildModelReport[];\n next_actions: string[];\n};\n\nexport type RunLifecyclemodelValidateBuildOptions = {\n runDir: string;\n engine?: string;\n now?: Date;\n cwd?: string;\n};\n\nexport type LifecyclemodelValidateBuildDeps = {\n runValidationImpl?: (options: RunValidationOptions) => Promise<ValidationRunReport>;\n};\n\nfunction buildLayout(runRoot: string): LifecyclemodelValidateBuildLayout {\n const runId = path.basename(runRoot);\n return {\n runId,\n runRoot,\n modelsDir: path.join(runRoot, 'models'),\n reportsDir: path.join(runRoot, 'reports'),\n modelReportsDir: path.join(runRoot, 'reports', 'model-validations'),\n manifestsDir: path.join(runRoot, 'manifests'),\n runManifestPath: path.join(runRoot, 'manifests', 'run-manifest.json'),\n invocationIndexPath: path.join(runRoot, 'manifests', 'invocation-index.json'),\n autoBuildReportPath: path.join(runRoot, 'reports', 'lifecyclemodel-auto-build-report.json'),\n reportPath: path.join(runRoot, 'reports', 'lifecyclemodel-validate-build-report.json'),\n };\n}\n\nfunction resolveLayout(\n options: RunLifecyclemodelValidateBuildOptions,\n): LifecyclemodelValidateBuildLayout {\n const runDir = nonEmptyString(options.runDir);\n if (!runDir) {\n throw new CliError('Missing required --run-dir for lifecyclemodel validate-build.', {\n code: 'LIFECYCLEMODEL_VALIDATE_RUN_DIR_REQUIRED',\n exitCode: 2,\n });\n }\n\n return buildLayout(path.resolve(runDir));\n}\n\nfunction ensureRunRootExists(layout: LifecyclemodelValidateBuildLayout): void {\n if (!existsSync(layout.runRoot)) {\n throw new CliError(`lifecyclemodel validate-build run root not found: ${layout.runRoot}`, {\n code: 'LIFECYCLEMODEL_VALIDATE_RUN_NOT_FOUND',\n exitCode: 2,\n });\n }\n}\n\nfunction readRequiredRunManifest(layout: LifecyclemodelValidateBuildLayout): JsonObject {\n const manifest = readRequiredJsonObject(\n layout.runManifestPath,\n 'LIFECYCLEMODEL_VALIDATE_RUN_MANIFEST_MISSING',\n 'LIFECYCLEMODEL_VALIDATE_RUN_MANIFEST_INVALID',\n 'run-manifest',\n );\n\n const manifestRunId = nonEmptyString(manifest.runId);\n if (manifestRunId && manifestRunId !== layout.runId) {\n throw new CliError(\n `lifecyclemodel validate-build run manifest runId mismatch: ${layout.runManifestPath}`,\n {\n code: 'LIFECYCLEMODEL_VALIDATE_RUN_MANIFEST_MISMATCH',\n exitCode: 2,\n details: {\n expected: layout.runId,\n actual: manifestRunId,\n },\n },\n );\n }\n\n return manifest;\n}\n\nfunction readInvocationIndex(layout: LifecyclemodelValidateBuildLayout): JsonObject {\n if (!existsSync(layout.invocationIndexPath)) {\n return {\n schema_version: 1,\n invocations: [],\n };\n }\n\n const value = readJsonArtifact(layout.invocationIndexPath);\n if (!isRecord(value)) {\n throw new CliError(\n `Expected lifecyclemodel validate invocation index JSON object: ${layout.invocationIndexPath}`,\n {\n code: 'LIFECYCLEMODEL_VALIDATE_INVOCATION_INDEX_INVALID',\n exitCode: 2,\n },\n );\n }\n\n if (value.invocations === undefined) {\n return {\n schema_version: 1,\n invocations: [],\n };\n }\n\n if (!Array.isArray(value.invocations)) {\n throw new CliError(\n `Expected lifecyclemodel validate invocation index to contain an invocations array: ${layout.invocationIndexPath}`,\n {\n code: 'LIFECYCLEMODEL_VALIDATE_INVOCATION_INDEX_INVALID',\n exitCode: 2,\n },\n );\n }\n\n return value;\n}\n\nfunction discoverModelEntries(layout: LifecyclemodelValidateBuildLayout): ModelBundleEntry[] {\n const runNames = existsSync(layout.modelsDir) ? readdirSync(layout.modelsDir).sort() : [];\n const entries = runNames.flatMap((runName) => {\n const inputDir = path.join(layout.modelsDir, runName, 'tidas_bundle');\n const lifecyclemodelsDir = path.join(inputDir, 'lifecyclemodels');\n if (!existsSync(lifecyclemodelsDir)) {\n return [];\n }\n\n const modelFiles = readdirSync(lifecyclemodelsDir)\n .filter((entry) => entry.endsWith('.json'))\n .sort()\n .map((entry) => path.join(lifecyclemodelsDir, entry));\n\n if (modelFiles.length === 0) {\n throw new CliError(\n `lifecyclemodel validate-build found a bundle without lifecyclemodel JSON files: ${lifecyclemodelsDir}`,\n {\n code: 'LIFECYCLEMODEL_VALIDATE_MODELS_EMPTY',\n exitCode: 2,\n },\n );\n }\n\n return [{ runName, inputDir, modelFiles }];\n });\n\n if (entries.length === 0) {\n throw new CliError(\n `lifecyclemodel validate-build run does not contain any model bundles: ${layout.modelsDir}`,\n {\n code: 'LIFECYCLEMODEL_VALIDATE_MODELS_NOT_FOUND',\n exitCode: 2,\n },\n );\n }\n\n return entries;\n}\n\nfunction buildInvocationIndex(\n layout: LifecyclemodelValidateBuildLayout,\n invocationIndex: JsonObject,\n options: RunLifecyclemodelValidateBuildOptions,\n now: Date,\n): JsonObject {\n const priorInvocations = Array.isArray(invocationIndex.invocations)\n ? [...invocationIndex.invocations]\n : [];\n const command = ['lifecyclemodel', 'validate-build', '--run-dir', options.runDir];\n if (options.engine) {\n command.push('--engine', options.engine);\n }\n\n return {\n ...invocationIndex,\n schema_version:\n typeof invocationIndex.schema_version === 'number' ? invocationIndex.schema_version : 1,\n invocations: [\n ...priorInvocations,\n {\n command,\n cwd: options.cwd ?? process.cwd(),\n created_at: now.toISOString(),\n run_id: layout.runId,\n run_root: layout.runRoot,\n report_path: layout.reportPath,\n model_reports_dir: layout.modelReportsDir,\n },\n ],\n };\n}\n\nfunction buildNextActions(layout: LifecyclemodelValidateBuildLayout): string[] {\n return [\n `inspect: ${layout.reportPath}`,\n `inspect: ${layout.modelReportsDir}`,\n `run: tiangong-lca lifecyclemodel publish-build --run-dir ${layout.runRoot}`,\n ];\n}\n\nfunction resolveValidationImpl(\n deps: LifecyclemodelValidateBuildDeps,\n): (options: RunValidationOptions) => Promise<ValidationRunReport> {\n return deps.runValidationImpl ?? runValidation;\n}\n\nfunction resolveReportEngine(\n modelReports: LifecyclemodelValidateBuildModelReport[],\n requestedEngine?: string,\n): string {\n return modelReports[0]?.validation.mode ?? requestedEngine ?? 'auto';\n}\n\nexport async function runLifecyclemodelValidateBuild(\n options: RunLifecyclemodelValidateBuildOptions,\n deps: LifecyclemodelValidateBuildDeps = {},\n): Promise<LifecyclemodelValidateBuildReport> {\n const now = options.now ?? new Date();\n const layout = resolveLayout(options);\n ensureRunRootExists(layout);\n readRequiredRunManifest(layout);\n const invocationIndex = readInvocationIndex(layout);\n const validationImpl = resolveValidationImpl(deps);\n const modelEntries = discoverModelEntries(layout);\n\n const modelReports: LifecyclemodelValidateBuildModelReport[] = [];\n for (const entry of modelEntries) {\n const reportFile = path.join(layout.modelReportsDir, `${entry.runName}.json`);\n const validation = await validationImpl({\n inputDir: entry.inputDir,\n engine: options.engine,\n reportFile,\n });\n modelReports.push({\n run_name: entry.runName,\n input_dir: entry.inputDir,\n model_files: entry.modelFiles,\n report_file: reportFile,\n validation,\n });\n }\n\n const okCount = modelReports.filter((entry) => entry.validation.ok).length;\n const report: LifecyclemodelValidateBuildReport = {\n schema_version: 1,\n generated_at_utc: now.toISOString(),\n status: 'completed_lifecyclemodel_validate_build',\n run_id: layout.runId,\n run_root: layout.runRoot,\n ok: okCount === modelReports.length,\n engine: resolveReportEngine(modelReports, options.engine),\n counts: {\n models: modelReports.length,\n ok: okCount,\n failed: modelReports.length - okCount,\n },\n files: {\n run_manifest: layout.runManifestPath,\n invocation_index: layout.invocationIndexPath,\n auto_build_report: existsSync(layout.autoBuildReportPath) ? layout.autoBuildReportPath : null,\n report: layout.reportPath,\n model_reports_dir: layout.modelReportsDir,\n },\n model_reports: modelReports,\n next_actions: buildNextActions(layout),\n };\n\n writeJsonArtifact(\n layout.invocationIndexPath,\n buildInvocationIndex(layout, invocationIndex, options, now),\n );\n writeJsonArtifact(layout.reportPath, report);\n return report;\n}\n\nexport const __testInternals = {\n buildLayout,\n resolveLayout,\n readInvocationIndex,\n discoverModelEntries,\n buildInvocationIndex,\n buildNextActions,\n resolveValidationImpl,\n resolveReportEngine,\n};\n"]}
1
+ {"version":3,"file":"lifecyclemodel-validate-build.js","sourceRoot":"","sources":["../../../src/lib/lifecyclemodel-validate-build.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAClD,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACrE,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EACL,aAAa,GAGd,MAAM,iBAAiB,CAAC;AAUzB,SAAS,QAAQ,CAAC,KAAc;IAC9B,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC9E,CAAC;AAED,SAAS,cAAc,CAAC,KAAc;IACpC,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;IAChC,OAAO,UAAU,IAAI,IAAI,CAAC;AAC5B,CAAC;AAED,SAAS,sBAAsB,CAC7B,QAAgB,EAChB,WAAmB,EACnB,WAAmB,EACnB,KAAa;IAEb,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC1B,MAAM,IAAI,QAAQ,CAAC,2BAA2B,KAAK,wBAAwB,QAAQ,EAAE,EAAE;YACrF,IAAI,EAAE,WAAW;YACjB,QAAQ,EAAE,CAAC;YACX,OAAO,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE;SAC7B,CAAC,CAAC;IACL,CAAC;IAED,MAAM,KAAK,GAAG,gBAAgB,CAAC,QAAQ,CAAC,CAAC;IACzC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QACrB,MAAM,IAAI,QAAQ,CAAC,2BAA2B,KAAK,0BAA0B,QAAQ,EAAE,EAAE;YACvF,IAAI,EAAE,WAAW;YACjB,QAAQ,EAAE,CAAC;YACX,OAAO,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE;SAC7B,CAAC,CAAC;IACL,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AA0DD,SAAS,WAAW,CAAC,OAAe;IAClC,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;IACrC,OAAO;QACL,KAAK;QACL,OAAO;QACP,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC;QACvC,UAAU,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,SAAS,CAAC;QACzC,eAAe,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,SAAS,EAAE,mBAAmB,CAAC;QACnE,YAAY,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,WAAW,CAAC;QAC7C,eAAe,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,WAAW,EAAE,mBAAmB,CAAC;QACrE,mBAAmB,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,WAAW,EAAE,uBAAuB,CAAC;QAC7E,mBAAmB,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,SAAS,EAAE,uCAAuC,CAAC;QAC3F,UAAU,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,SAAS,EAAE,2CAA2C,CAAC;KACvF,CAAC;AACJ,CAAC;AAED,SAAS,aAAa,CACpB,OAA8C;IAE9C,MAAM,MAAM,GAAG,cAAc,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IAC9C,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,IAAI,QAAQ,CAAC,+DAA+D,EAAE;YAClF,IAAI,EAAE,0CAA0C;YAChD,QAAQ,EAAE,CAAC;SACZ,CAAC,CAAC;IACL,CAAC;IAED,OAAO,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;AAC3C,CAAC;AAED,SAAS,mBAAmB,CAAC,MAAyC;IACpE,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;QAChC,MAAM,IAAI,QAAQ,CAAC,qDAAqD,MAAM,CAAC,OAAO,EAAE,EAAE;YACxF,IAAI,EAAE,uCAAuC;YAC7C,QAAQ,EAAE,CAAC;SACZ,CAAC,CAAC;IACL,CAAC;AACH,CAAC;AAED,SAAS,uBAAuB,CAAC,MAAyC;IACxE,MAAM,QAAQ,GAAG,sBAAsB,CACrC,MAAM,CAAC,eAAe,EACtB,8CAA8C,EAC9C,8CAA8C,EAC9C,cAAc,CACf,CAAC;IAEF,MAAM,aAAa,GAAG,cAAc,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IACrD,IAAI,aAAa,IAAI,aAAa,KAAK,MAAM,CAAC,KAAK,EAAE,CAAC;QACpD,MAAM,IAAI,QAAQ,CAChB,8DAA8D,MAAM,CAAC,eAAe,EAAE,EACtF;YACE,IAAI,EAAE,+CAA+C;YACrD,QAAQ,EAAE,CAAC;YACX,OAAO,EAAE;gBACP,QAAQ,EAAE,MAAM,CAAC,KAAK;gBACtB,MAAM,EAAE,aAAa;aACtB;SACF,CACF,CAAC;IACJ,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,SAAS,mBAAmB,CAAC,MAAyC;IACpE,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,mBAAmB,CAAC,EAAE,CAAC;QAC5C,OAAO;YACL,cAAc,EAAE,CAAC;YACjB,WAAW,EAAE,EAAE;SAChB,CAAC;IACJ,CAAC;IAED,MAAM,KAAK,GAAG,gBAAgB,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC;IAC3D,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QACrB,MAAM,IAAI,QAAQ,CAChB,kEAAkE,MAAM,CAAC,mBAAmB,EAAE,EAC9F;YACE,IAAI,EAAE,kDAAkD;YACxD,QAAQ,EAAE,CAAC;SACZ,CACF,CAAC;IACJ,CAAC;IAED,IAAI,KAAK,CAAC,WAAW,KAAK,SAAS,EAAE,CAAC;QACpC,OAAO;YACL,cAAc,EAAE,CAAC;YACjB,WAAW,EAAE,EAAE;SAChB,CAAC;IACJ,CAAC;IAED,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE,CAAC;QACtC,MAAM,IAAI,QAAQ,CAChB,sFAAsF,MAAM,CAAC,mBAAmB,EAAE,EAClH;YACE,IAAI,EAAE,kDAAkD;YACxD,QAAQ,EAAE,CAAC;SACZ,CACF,CAAC;IACJ,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,oBAAoB,CAAC,MAAyC;IACrE,MAAM,QAAQ,GAAG,UAAU,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IAC1F,MAAM,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC3C,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,OAAO,EAAE,cAAc,CAAC,CAAC;QACtE,MAAM,kBAAkB,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,iBAAiB,CAAC,CAAC;QAClE,IAAI,CAAC,UAAU,CAAC,kBAAkB,CAAC,EAAE,CAAC;YACpC,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,MAAM,UAAU,GAAG,WAAW,CAAC,kBAAkB,CAAC;aAC/C,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;aAC1C,IAAI,EAAE;aACN,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE,KAAK,CAAC,CAAC,CAAC;QAExD,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC5B,MAAM,IAAI,QAAQ,CAChB,mFAAmF,kBAAkB,EAAE,EACvG;gBACE,IAAI,EAAE,sCAAsC;gBAC5C,QAAQ,EAAE,CAAC;aACZ,CACF,CAAC;QACJ,CAAC;QAED,OAAO,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,CAAC,CAAC;IAC7C,CAAC,CAAC,CAAC;IAEH,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,MAAM,IAAI,QAAQ,CAChB,yEAAyE,MAAM,CAAC,SAAS,EAAE,EAC3F;YACE,IAAI,EAAE,0CAA0C;YAChD,QAAQ,EAAE,CAAC;SACZ,CACF,CAAC;IACJ,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAS,oBAAoB,CAC3B,MAAyC,EACzC,eAA2B,EAC3B,OAA8C,EAC9C,GAAS;IAET,MAAM,gBAAgB,GAAG,KAAK,CAAC,OAAO,CAAC,eAAe,CAAC,WAAW,CAAC;QACjE,CAAC,CAAC,CAAC,GAAG,eAAe,CAAC,WAAW,CAAC;QAClC,CAAC,CAAC,EAAE,CAAC;IACP,MAAM,OAAO,GAAG,CAAC,gBAAgB,EAAE,gBAAgB,EAAE,WAAW,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;IAClF,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;QACnB,OAAO,CAAC,IAAI,CAAC,UAAU,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;IAC3C,CAAC;IAED,OAAO;QACL,GAAG,eAAe;QAClB,cAAc,EACZ,OAAO,eAAe,CAAC,cAAc,KAAK,QAAQ,CAAC,CAAC,CAAC,eAAe,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;QACzF,WAAW,EAAE;YACX,GAAG,gBAAgB;YACnB;gBACE,OAAO;gBACP,GAAG,EAAE,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE;gBACjC,UAAU,EAAE,GAAG,CAAC,WAAW,EAAE;gBAC7B,MAAM,EAAE,MAAM,CAAC,KAAK;gBACpB,QAAQ,EAAE,MAAM,CAAC,OAAO;gBACxB,WAAW,EAAE,MAAM,CAAC,UAAU;gBAC9B,iBAAiB,EAAE,MAAM,CAAC,eAAe;aAC1C;SACF;KACF,CAAC;AACJ,CAAC;AAED,SAAS,gBAAgB,CAAC,MAAyC;IACjE,OAAO;QACL,YAAY,MAAM,CAAC,UAAU,EAAE;QAC/B,YAAY,MAAM,CAAC,eAAe,EAAE;QACpC,4DAA4D,MAAM,CAAC,OAAO,EAAE;KAC7E,CAAC;AACJ,CAAC;AAED,SAAS,qBAAqB,CAC5B,IAAqC;IAErC,OAAO,IAAI,CAAC,iBAAiB,IAAI,aAAa,CAAC;AACjD,CAAC;AAED,SAAS,mBAAmB,CAC1B,YAAsD,EACtD,eAAwB;IAExB,OAAO,YAAY,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC,IAAI,IAAI,eAAe,IAAI,MAAM,CAAC;AACvE,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,8BAA8B,CAClD,OAA8C,EAC9C,IAAI,GAAoC,EAAE;IAE1C,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,IAAI,IAAI,IAAI,EAAE,CAAC;IACtC,MAAM,MAAM,GAAG,aAAa,CAAC,OAAO,CAAC,CAAC;IACtC,mBAAmB,CAAC,MAAM,CAAC,CAAC;IAC5B,uBAAuB,CAAC,MAAM,CAAC,CAAC;IAChC,MAAM,eAAe,GAAG,mBAAmB,CAAC,MAAM,CAAC,CAAC;IACpD,MAAM,cAAc,GAAG,qBAAqB,CAAC,IAAI,CAAC,CAAC;IACnD,MAAM,YAAY,GAAG,oBAAoB,CAAC,MAAM,CAAC,CAAC;IAElD,MAAM,YAAY,GAA6C,EAAE,CAAC;IAClE,KAAK,MAAM,KAAK,IAAI,YAAY,EAAE,CAAC;QACjC,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,eAAe,EAAE,GAAG,KAAK,CAAC,OAAO,OAAO,CAAC,CAAC;QAC9E,MAAM,UAAU,GAAG,MAAM,cAAc,CAAC;YACtC,QAAQ,EAAE,KAAK,CAAC,QAAQ;YACxB,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,UAAU;SACX,CAAC,CAAC;QACH,YAAY,CAAC,IAAI,CAAC;YAChB,QAAQ,EAAE,KAAK,CAAC,OAAO;YACvB,SAAS,EAAE,KAAK,CAAC,QAAQ;YACzB,WAAW,EAAE,KAAK,CAAC,UAAU;YAC7B,WAAW,EAAE,UAAU;YACvB,UAAU;SACX,CAAC,CAAC;IACL,CAAC;IAED,MAAM,OAAO,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC;IAC3E,MAAM,MAAM,GAAsC;QAChD,cAAc,EAAE,CAAC;QACjB,gBAAgB,EAAE,GAAG,CAAC,WAAW,EAAE;QACnC,MAAM,EAAE,yCAAyC;QACjD,MAAM,EAAE,MAAM,CAAC,KAAK;QACpB,QAAQ,EAAE,MAAM,CAAC,OAAO;QACxB,EAAE,EAAE,OAAO,KAAK,YAAY,CAAC,MAAM;QACnC,MAAM,EAAE,mBAAmB,CAAC,YAAY,EAAE,OAAO,CAAC,MAAM,CAAC;QACzD,MAAM,EAAE;YACN,MAAM,EAAE,YAAY,CAAC,MAAM;YAC3B,EAAE,EAAE,OAAO;YACX,MAAM,EAAE,YAAY,CAAC,MAAM,GAAG,OAAO;SACtC;QACD,KAAK,EAAE;YACL,YAAY,EAAE,MAAM,CAAC,eAAe;YACpC,gBAAgB,EAAE,MAAM,CAAC,mBAAmB;YAC5C,iBAAiB,EAAE,UAAU,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC,CAAC,IAAI;YAC7F,MAAM,EAAE,MAAM,CAAC,UAAU;YACzB,iBAAiB,EAAE,MAAM,CAAC,eAAe;SAC1C;QACD,aAAa,EAAE,YAAY;QAC3B,YAAY,EAAE,gBAAgB,CAAC,MAAM,CAAC;KACvC,CAAC;IAEF,iBAAiB,CACf,MAAM,CAAC,mBAAmB,EAC1B,oBAAoB,CAAC,MAAM,EAAE,eAAe,EAAE,OAAO,EAAE,GAAG,CAAC,CAC5D,CAAC;IACF,iBAAiB,CAAC,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;IAC7C,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,CAAC,MAAM,eAAe,GAAG;IAC7B,WAAW;IACX,aAAa;IACb,mBAAmB;IACnB,oBAAoB;IACpB,oBAAoB;IACpB,gBAAgB;IAChB,qBAAqB;IACrB,mBAAmB;CACpB,CAAC","sourcesContent":["import { existsSync, readdirSync } from 'node:fs';\nimport path from 'node:path';\nimport { readJsonArtifact, writeJsonArtifact } from './artifacts.js';\nimport { CliError } from './errors.js';\nimport {\n runValidation,\n type RunValidationOptions,\n type ValidationRunReport,\n} from './validation.js';\n\ntype JsonObject = Record<string, unknown>;\n\ntype ModelBundleEntry = {\n runName: string;\n inputDir: string;\n modelFiles: string[];\n};\n\nfunction isRecord(value: unknown): value is JsonObject {\n return typeof value === 'object' && value !== null && !Array.isArray(value);\n}\n\nfunction nonEmptyString(value: unknown): string | null {\n if (typeof value !== 'string') {\n return null;\n }\n\n const normalized = value.trim();\n return normalized || null;\n}\n\nfunction readRequiredJsonObject(\n filePath: string,\n missingCode: string,\n invalidCode: string,\n label: string,\n): JsonObject {\n if (!existsSync(filePath)) {\n throw new CliError(`Required lifecyclemodel ${label} artifact not found: ${filePath}`, {\n code: missingCode,\n exitCode: 2,\n details: { filePath, label },\n });\n }\n\n const value = readJsonArtifact(filePath);\n if (!isRecord(value)) {\n throw new CliError(`Expected lifecyclemodel ${label} artifact JSON object: ${filePath}`, {\n code: invalidCode,\n exitCode: 2,\n details: { filePath, label },\n });\n }\n\n return value;\n}\n\nexport type LifecyclemodelValidateBuildLayout = {\n runId: string;\n runRoot: string;\n modelsDir: string;\n reportsDir: string;\n modelReportsDir: string;\n manifestsDir: string;\n runManifestPath: string;\n invocationIndexPath: string;\n autoBuildReportPath: string;\n reportPath: string;\n};\n\nexport type LifecyclemodelValidateBuildModelReport = {\n run_name: string;\n input_dir: string;\n model_files: string[];\n report_file: string;\n validation: ValidationRunReport;\n};\n\nexport type LifecyclemodelValidateBuildReport = {\n schema_version: 1;\n generated_at_utc: string;\n status: 'completed_lifecyclemodel_validate_build';\n run_id: string;\n run_root: string;\n ok: boolean;\n engine: string;\n counts: {\n models: number;\n ok: number;\n failed: number;\n };\n files: {\n run_manifest: string;\n invocation_index: string;\n auto_build_report: string | null;\n report: string;\n model_reports_dir: string;\n };\n model_reports: LifecyclemodelValidateBuildModelReport[];\n next_actions: string[];\n};\n\nexport type RunLifecyclemodelValidateBuildOptions = {\n runDir: string;\n engine?: string;\n now?: Date;\n cwd?: string;\n};\n\nexport type LifecyclemodelValidateBuildDeps = {\n runValidationImpl?: (options: RunValidationOptions) => Promise<ValidationRunReport>;\n};\n\nfunction buildLayout(runRoot: string): LifecyclemodelValidateBuildLayout {\n const runId = path.basename(runRoot);\n return {\n runId,\n runRoot,\n modelsDir: path.join(runRoot, 'models'),\n reportsDir: path.join(runRoot, 'reports'),\n modelReportsDir: path.join(runRoot, 'reports', 'model-validations'),\n manifestsDir: path.join(runRoot, 'manifests'),\n runManifestPath: path.join(runRoot, 'manifests', 'run-manifest.json'),\n invocationIndexPath: path.join(runRoot, 'manifests', 'invocation-index.json'),\n autoBuildReportPath: path.join(runRoot, 'reports', 'lifecyclemodel-auto-build-report.json'),\n reportPath: path.join(runRoot, 'reports', 'lifecyclemodel-validate-build-report.json'),\n };\n}\n\nfunction resolveLayout(\n options: RunLifecyclemodelValidateBuildOptions,\n): LifecyclemodelValidateBuildLayout {\n const runDir = nonEmptyString(options.runDir);\n if (!runDir) {\n throw new CliError('Missing required --run-dir for lifecyclemodel validate-build.', {\n code: 'LIFECYCLEMODEL_VALIDATE_RUN_DIR_REQUIRED',\n exitCode: 2,\n });\n }\n\n return buildLayout(path.resolve(runDir));\n}\n\nfunction ensureRunRootExists(layout: LifecyclemodelValidateBuildLayout): void {\n if (!existsSync(layout.runRoot)) {\n throw new CliError(`lifecyclemodel validate-build run root not found: ${layout.runRoot}`, {\n code: 'LIFECYCLEMODEL_VALIDATE_RUN_NOT_FOUND',\n exitCode: 2,\n });\n }\n}\n\nfunction readRequiredRunManifest(layout: LifecyclemodelValidateBuildLayout): JsonObject {\n const manifest = readRequiredJsonObject(\n layout.runManifestPath,\n 'LIFECYCLEMODEL_VALIDATE_RUN_MANIFEST_MISSING',\n 'LIFECYCLEMODEL_VALIDATE_RUN_MANIFEST_INVALID',\n 'run-manifest',\n );\n\n const manifestRunId = nonEmptyString(manifest.runId);\n if (manifestRunId && manifestRunId !== layout.runId) {\n throw new CliError(\n `lifecyclemodel validate-build run manifest runId mismatch: ${layout.runManifestPath}`,\n {\n code: 'LIFECYCLEMODEL_VALIDATE_RUN_MANIFEST_MISMATCH',\n exitCode: 2,\n details: {\n expected: layout.runId,\n actual: manifestRunId,\n },\n },\n );\n }\n\n return manifest;\n}\n\nfunction readInvocationIndex(layout: LifecyclemodelValidateBuildLayout): JsonObject {\n if (!existsSync(layout.invocationIndexPath)) {\n return {\n schema_version: 1,\n invocations: [],\n };\n }\n\n const value = readJsonArtifact(layout.invocationIndexPath);\n if (!isRecord(value)) {\n throw new CliError(\n `Expected lifecyclemodel validate invocation index JSON object: ${layout.invocationIndexPath}`,\n {\n code: 'LIFECYCLEMODEL_VALIDATE_INVOCATION_INDEX_INVALID',\n exitCode: 2,\n },\n );\n }\n\n if (value.invocations === undefined) {\n return {\n schema_version: 1,\n invocations: [],\n };\n }\n\n if (!Array.isArray(value.invocations)) {\n throw new CliError(\n `Expected lifecyclemodel validate invocation index to contain an invocations array: ${layout.invocationIndexPath}`,\n {\n code: 'LIFECYCLEMODEL_VALIDATE_INVOCATION_INDEX_INVALID',\n exitCode: 2,\n },\n );\n }\n\n return value;\n}\n\nfunction discoverModelEntries(layout: LifecyclemodelValidateBuildLayout): ModelBundleEntry[] {\n const runNames = existsSync(layout.modelsDir) ? readdirSync(layout.modelsDir).sort() : [];\n const entries = runNames.flatMap((runName) => {\n const inputDir = path.join(layout.modelsDir, runName, 'tidas_bundle');\n const lifecyclemodelsDir = path.join(inputDir, 'lifecyclemodels');\n if (!existsSync(lifecyclemodelsDir)) {\n return [];\n }\n\n const modelFiles = readdirSync(lifecyclemodelsDir)\n .filter((entry) => entry.endsWith('.json'))\n .sort()\n .map((entry) => path.join(lifecyclemodelsDir, entry));\n\n if (modelFiles.length === 0) {\n throw new CliError(\n `lifecyclemodel validate-build found a bundle without lifecyclemodel JSON files: ${lifecyclemodelsDir}`,\n {\n code: 'LIFECYCLEMODEL_VALIDATE_MODELS_EMPTY',\n exitCode: 2,\n },\n );\n }\n\n return [{ runName, inputDir, modelFiles }];\n });\n\n if (entries.length === 0) {\n throw new CliError(\n `lifecyclemodel validate-build run does not contain any model bundles: ${layout.modelsDir}`,\n {\n code: 'LIFECYCLEMODEL_VALIDATE_MODELS_NOT_FOUND',\n exitCode: 2,\n },\n );\n }\n\n return entries;\n}\n\nfunction buildInvocationIndex(\n layout: LifecyclemodelValidateBuildLayout,\n invocationIndex: JsonObject,\n options: RunLifecyclemodelValidateBuildOptions,\n now: Date,\n): JsonObject {\n const priorInvocations = Array.isArray(invocationIndex.invocations)\n ? [...invocationIndex.invocations]\n : [];\n const command = ['lifecyclemodel', 'validate-build', '--run-dir', options.runDir];\n if (options.engine) {\n command.push('--engine', options.engine);\n }\n\n return {\n ...invocationIndex,\n schema_version:\n typeof invocationIndex.schema_version === 'number' ? invocationIndex.schema_version : 1,\n invocations: [\n ...priorInvocations,\n {\n command,\n cwd: options.cwd ?? process.cwd(),\n created_at: now.toISOString(),\n run_id: layout.runId,\n run_root: layout.runRoot,\n report_path: layout.reportPath,\n model_reports_dir: layout.modelReportsDir,\n },\n ],\n };\n}\n\nfunction buildNextActions(layout: LifecyclemodelValidateBuildLayout): string[] {\n return [\n `inspect: ${layout.reportPath}`,\n `inspect: ${layout.modelReportsDir}`,\n `run: tiangong-lca lifecyclemodel publish-build --run-dir ${layout.runRoot}`,\n ];\n}\n\nfunction resolveValidationImpl(\n deps: LifecyclemodelValidateBuildDeps,\n): (options: RunValidationOptions) => Promise<ValidationRunReport> {\n return deps.runValidationImpl ?? runValidation;\n}\n\nfunction resolveReportEngine(\n modelReports: LifecyclemodelValidateBuildModelReport[],\n requestedEngine?: string,\n): string {\n return modelReports[0]?.validation.mode ?? requestedEngine ?? 'auto';\n}\n\nexport async function runLifecyclemodelValidateBuild(\n options: RunLifecyclemodelValidateBuildOptions,\n deps: LifecyclemodelValidateBuildDeps = {},\n): Promise<LifecyclemodelValidateBuildReport> {\n const now = options.now ?? new Date();\n const layout = resolveLayout(options);\n ensureRunRootExists(layout);\n readRequiredRunManifest(layout);\n const invocationIndex = readInvocationIndex(layout);\n const validationImpl = resolveValidationImpl(deps);\n const modelEntries = discoverModelEntries(layout);\n\n const modelReports: LifecyclemodelValidateBuildModelReport[] = [];\n for (const entry of modelEntries) {\n const reportFile = path.join(layout.modelReportsDir, `${entry.runName}.json`);\n const validation = await validationImpl({\n inputDir: entry.inputDir,\n engine: options.engine,\n reportFile,\n });\n modelReports.push({\n run_name: entry.runName,\n input_dir: entry.inputDir,\n model_files: entry.modelFiles,\n report_file: reportFile,\n validation,\n });\n }\n\n const okCount = modelReports.filter((entry) => entry.validation.ok).length;\n const report: LifecyclemodelValidateBuildReport = {\n schema_version: 1,\n generated_at_utc: now.toISOString(),\n status: 'completed_lifecyclemodel_validate_build',\n run_id: layout.runId,\n run_root: layout.runRoot,\n ok: okCount === modelReports.length,\n engine: resolveReportEngine(modelReports, options.engine),\n counts: {\n models: modelReports.length,\n ok: okCount,\n failed: modelReports.length - okCount,\n },\n files: {\n run_manifest: layout.runManifestPath,\n invocation_index: layout.invocationIndexPath,\n auto_build_report: existsSync(layout.autoBuildReportPath) ? layout.autoBuildReportPath : null,\n report: layout.reportPath,\n model_reports_dir: layout.modelReportsDir,\n },\n model_reports: modelReports,\n next_actions: buildNextActions(layout),\n };\n\n writeJsonArtifact(\n layout.invocationIndexPath,\n buildInvocationIndex(layout, invocationIndex, options, now),\n );\n writeJsonArtifact(layout.reportPath, report);\n return report;\n}\n\nexport const __testInternals = {\n buildLayout,\n resolveLayout,\n readInvocationIndex,\n discoverModelEntries,\n buildInvocationIndex,\n buildNextActions,\n resolveValidationImpl,\n resolveReportEngine,\n};\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"package-version.js","sourceRoot":"","sources":["../../../src/lib/package-version.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAEvC,MAAM,uBAAuB,GAAG,CAAC,iBAAiB,EAAE,oBAAoB,CAAU,CAAC;AAInF,SAAS,mBAAmB,CAAC,SAAc,EAAE,QAA8B;IACzE,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,CAA0B,CAAC;QACzE,OAAO,OAAO,OAAO,CAAC,OAAO,KAAK,QAAQ,IAAI,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC;YACtE,CAAC,CAAC,OAAO,CAAC,OAAO;YACjB,CAAC,CAAC,IAAI,CAAC;IACX,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,MAAM,UAAU,qBAAqB,CACnC,gBAAwB,MAAM,CAAC,IAAI,CAAC,GAAG,EACvC,WAAiC,CAAC,GAAG,EAAE,EAAE,CAAC,YAAY,CAAC,GAAG,EAAE,MAAM,CAAC;IAEnE,KAAK,MAAM,YAAY,IAAI,uBAAuB,EAAE,CAAC;QACnD,MAAM,OAAO,GAAG,mBAAmB,CAAC,IAAI,GAAG,CAAC,YAAY,EAAE,aAAa,CAAC,EAAE,QAAQ,CAAC,CAAC;QACpF,IAAI,OAAO,EAAE,CAAC;YACZ,OAAO,OAAO,CAAC;QACjB,CAAC;IACH,CAAC;IAED,MAAM,IAAI,KAAK,CAAC,0DAA0D,CAAC,CAAC;AAC9E,CAAC","sourcesContent":["import { readFileSync } from 'node:fs';\n\nconst PACKAGE_JSON_CANDIDATES = ['../package.json', '../../package.json'] as const;\n\ntype PackageVersionReader = (url: URL) => string;\n\nfunction parsePackageVersion(candidate: URL, readText: PackageVersionReader): string | null {\n try {\n const payload = JSON.parse(readText(candidate)) as { version?: unknown };\n return typeof payload.version === 'string' && payload.version.length > 0\n ? payload.version\n : null;\n } catch {\n return null;\n }\n}\n\nexport function loadCliPackageVersion(\n importMetaUrl: string = import.meta.url,\n readText: PackageVersionReader = (url) => readFileSync(url, 'utf8'),\n): string {\n for (const relativePath of PACKAGE_JSON_CANDIDATES) {\n const version = parsePackageVersion(new URL(relativePath, importMetaUrl), readText);\n if (version) {\n return version;\n }\n }\n\n throw new Error('Could not resolve CLI package version from package.json.');\n}\n"]}
1
+ {"version":3,"file":"package-version.js","sourceRoot":"","sources":["../../../src/lib/package-version.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAEvC,MAAM,uBAAuB,GAAG,CAAC,iBAAiB,EAAE,oBAAoB,CAAU,CAAC;AAInF,SAAS,mBAAmB,CAAC,SAAc,EAAE,QAA8B;IACzE,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,CAA0B,CAAC;QACzE,OAAO,OAAO,OAAO,CAAC,OAAO,KAAK,QAAQ,IAAI,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC;YACtE,CAAC,CAAC,OAAO,CAAC,OAAO;YACjB,CAAC,CAAC,IAAI,CAAC;IACX,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,MAAM,UAAU,qBAAqB,CACnC,aAAa,GAAW,OAAO,IAAI,CAAC,GAAG,EACvC,QAAQ,GAAyB,CAAC,GAAG,EAAE,EAAE,CAAC,YAAY,CAAC,GAAG,EAAE,MAAM,CAAC;IAEnE,KAAK,MAAM,YAAY,IAAI,uBAAuB,EAAE,CAAC;QACnD,MAAM,OAAO,GAAG,mBAAmB,CAAC,IAAI,GAAG,CAAC,YAAY,EAAE,aAAa,CAAC,EAAE,QAAQ,CAAC,CAAC;QACpF,IAAI,OAAO,EAAE,CAAC;YACZ,OAAO,OAAO,CAAC;QACjB,CAAC;IACH,CAAC;IAED,MAAM,IAAI,KAAK,CAAC,0DAA0D,CAAC,CAAC;AAC9E,CAAC","sourcesContent":["import { readFileSync } from 'node:fs';\n\nconst PACKAGE_JSON_CANDIDATES = ['../package.json', '../../package.json'] as const;\n\ntype PackageVersionReader = (url: URL) => string;\n\nfunction parsePackageVersion(candidate: URL, readText: PackageVersionReader): string | null {\n try {\n const payload = JSON.parse(readText(candidate)) as { version?: unknown };\n return typeof payload.version === 'string' && payload.version.length > 0\n ? payload.version\n : null;\n } catch {\n return null;\n }\n}\n\nexport function loadCliPackageVersion(\n importMetaUrl: string = import.meta.url,\n readText: PackageVersionReader = (url) => readFileSync(url, 'utf8'),\n): string {\n for (const relativePath of PACKAGE_JSON_CANDIDATES) {\n const version = parsePackageVersion(new URL(relativePath, importMetaUrl), readText);\n if (version) {\n return version;\n }\n }\n\n throw new Error('Could not resolve CLI package version from package.json.');\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"process-auto-build.js","sourceRoot":"","sources":["../../../src/lib/process-auto-build.ts"],"names":[],"mappings":"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","sourcesContent":["import { copyFileSync, existsSync, mkdirSync, readdirSync } from 'node:fs';\nimport path from 'node:path';\nimport { writeJsonArtifact } from './artifacts.js';\nimport { CliError } from './errors.js';\nimport { readJsonInput } from './io.js';\nimport {\n buildRunManifest,\n buildUtcTimestamp,\n ensureRunLayout,\n type RunLayout,\n sanitizeRunToken,\n writeLatestRunId,\n} from './run.js';\nimport { withStateFileLock } from './state-lock.js';\n\ntype JsonRecord = Record<string, unknown>;\n\nexport type ProcessAutoBuildOperation = 'produce' | 'treat';\nexport type ProcessAutoBuildSourceInputType = 'local_file' | 'local_text';\n\nexport type ProcessAutoBuildSourcePolicy = {\n step1_route: {\n preferred: string[];\n fallback: string;\n };\n step2_process_split: {\n preferred: string[];\n fallback: string;\n };\n step3b_exchange_values: {\n preferred: string[];\n require_numeric_evidence: boolean;\n allow_estimation: boolean;\n };\n};\n\nexport type ProcessAutoBuildFlowSummary = {\n wrapper: 'flowDataSet' | 'direct';\n uuid: string | null;\n version: string | null;\n base_name: string | null;\n permanent_uri: string | null;\n};\n\nexport type NormalizedProcessAutoBuildSourceInput = {\n source_id: string;\n type: ProcessAutoBuildSourceInputType;\n source_path: string;\n artifact_path: string;\n artifact_file_name: string;\n intended_roles: string[];\n};\n\nexport type NormalizedProcessAutoBuildRequest = {\n schema_version: 1;\n request_path: string;\n request_id: string;\n flow_file: string;\n flow_summary: ProcessAutoBuildFlowSummary;\n flow_dataset: JsonRecord;\n operation: ProcessAutoBuildOperation;\n run_id: string;\n run_root: string;\n source_inputs: NormalizedProcessAutoBuildSourceInput[];\n source_policy: ProcessAutoBuildSourcePolicy;\n};\n\nexport type ProcessAutoBuildLayout = RunLayout & {\n requestDir: string;\n evidenceDir: string;\n evidenceIncomingDir: string;\n evidenceNormalizedDir: string;\n evidenceTextDir: string;\n evidenceStructuredDir: string;\n stageOutputsDir: string;\n reviewsDir: string;\n requestSnapshotPath: string;\n normalizedRequestPath: string;\n sourcePolicyPath: string;\n flowSummaryPath: string;\n inputManifestPath: string;\n buildPlanPath: string;\n assemblyPlanPath: string;\n lineageManifestPath: string;\n invocationIndexPath: string;\n runManifestPath: string;\n reportPath: string;\n statePath: string;\n handoffSummaryPath: string;\n processExportsDir: string;\n sourceExportsDir: string;\n};\n\nexport type ProcessAutoBuildReport = {\n schema_version: 1;\n generated_at_utc: string;\n status: 'prepared_local_process_auto_build_run';\n request_path: string;\n request_id: string;\n run_id: string;\n run_root: string;\n operation: ProcessAutoBuildOperation;\n flow: {\n source_path: string;\n artifact_path: string;\n wrapper: 'flowDataSet' | 'direct';\n uuid: string | null;\n version: string | null;\n base_name: string | null;\n };\n source_input_count: number;\n stage_count: number;\n files: {\n request_snapshot: string;\n normalized_request: string;\n source_policy: string;\n flow_summary: string;\n input_manifest: string;\n build_plan: string;\n assembly_plan: string;\n lineage_manifest: string;\n invocation_index: string;\n run_manifest: string;\n state: string;\n handoff_summary: string;\n report: string;\n };\n next_actions: string[];\n};\n\nexport type RunProcessAutoBuildOptions = {\n inputPath: string;\n outDir?: string | null;\n now?: Date;\n cwd?: string;\n inputValue?: unknown;\n requestIdOverride?: string;\n runIdOverride?: string;\n};\n\ntype ProcessAutoBuildStage = {\n id: string;\n title: string;\n output: string;\n createsCandidatesDir: boolean;\n modules: string[];\n};\n\nconst DEFAULT_SOURCE_POLICY: ProcessAutoBuildSourcePolicy = {\n step1_route: {\n preferred: ['user_bundle', 'kb_bundle'],\n fallback: 'expert_judgement',\n },\n step2_process_split: {\n preferred: ['user_bundle.process_split', 'si_bundle', 'kb_bundle.process_split'],\n fallback: 'expert_judgement',\n },\n step3b_exchange_values: {\n preferred: ['user_bundle.exchange_values', 'si_bundle', 'kb_bundle.exchange_values'],\n require_numeric_evidence: true,\n allow_estimation: true,\n },\n};\n\nconst PROCESS_AUTO_BUILD_STAGES: ProcessAutoBuildStage[] = [\n {\n id: '01_route',\n title: 'Route planning',\n output: 'stage_outputs/01_route/route_plan.json',\n createsCandidatesDir: true,\n modules: ['kb-search', 'llm'],\n },\n {\n id: '02_process_split',\n title: 'Process chain split',\n output: 'stage_outputs/02_process_split/process_chain.json',\n createsCandidatesDir: true,\n modules: ['llm'],\n },\n {\n id: '03_exchange_plan',\n title: 'Exchange planning',\n output: 'stage_outputs/03_exchange_plan/exchange_plan.json',\n createsCandidatesDir: false,\n modules: ['llm'],\n },\n {\n id: '04_exchange_values',\n title: 'Exchange value extraction',\n output: 'stage_outputs/04_exchange_values/exchange_values.json',\n createsCandidatesDir: true,\n modules: ['unstructured', 'kb-search', 'llm'],\n },\n {\n id: '05_chain_review',\n title: 'Chain review',\n output: 'stage_outputs/05_chain_review/chain_review.json',\n createsCandidatesDir: false,\n modules: ['llm'],\n },\n {\n id: '06_flow_match',\n title: 'Flow matching',\n output: 'stage_outputs/06_flow_match/flow_match_bundle.json',\n createsCandidatesDir: false,\n modules: ['search:flow', 'llm'],\n },\n {\n id: '07_source_build',\n title: 'Source dataset build',\n output: 'stage_outputs/07_source_build/source_bundle.json',\n createsCandidatesDir: false,\n modules: ['validation'],\n },\n {\n id: '08_process_build',\n title: 'Process dataset build',\n output: 'stage_outputs/08_process_build/process_bundle.json',\n createsCandidatesDir: false,\n modules: ['validation', 'llm'],\n },\n {\n id: '09_qa',\n title: 'QA and balance review',\n output: 'stage_outputs/09_qa/qa_bundle.json',\n createsCandidatesDir: false,\n modules: ['validation', 'llm'],\n },\n {\n id: '10_publish',\n title: 'Publish handoff',\n output: 'stage_outputs/10_publish/publish_bundle.json',\n createsCandidatesDir: false,\n modules: ['publish'],\n },\n];\n\nfunction isRecord(value: unknown): value is JsonRecord {\n return Boolean(value && typeof value === 'object' && !Array.isArray(value));\n}\n\nfunction nonEmptyString(value: unknown): string | null {\n if (typeof value !== 'string') {\n return null;\n }\n\n const normalized = value.trim();\n return normalized || null;\n}\n\nfunction extractText(value: unknown): string | null {\n const direct = nonEmptyString(value);\n if (direct) {\n return direct;\n }\n\n if (Array.isArray(value)) {\n for (const item of value) {\n const extracted = extractText(item);\n if (extracted) {\n return extracted;\n }\n }\n return null;\n }\n\n if (!isRecord(value)) {\n return null;\n }\n\n if ('#text' in value) {\n return nonEmptyString(value['#text']);\n }\n\n return null;\n}\n\nfunction requiredRequestObject(input: unknown): JsonRecord {\n if (!isRecord(input)) {\n throw new CliError('process auto-build request must be a JSON object.', {\n code: 'PROCESS_AUTO_BUILD_REQUEST_INVALID',\n exitCode: 2,\n });\n }\n\n return input;\n}\n\nfunction requiredRequestString(input: JsonRecord, key: string): string {\n const value = nonEmptyString(input[key]);\n if (!value) {\n throw new CliError(`process auto-build request is missing '${key}'.`, {\n code: 'PROCESS_AUTO_BUILD_REQUEST_INVALID',\n exitCode: 2,\n details: { key },\n });\n }\n\n return value;\n}\n\nfunction normalizeOperation(value: unknown): ProcessAutoBuildOperation {\n const normalized = nonEmptyString(value);\n if (!normalized) {\n return 'produce';\n }\n if (normalized === 'produce' || normalized === 'treat') {\n return normalized;\n }\n\n throw new CliError(\"process auto-build operation must be 'produce' or 'treat'.\", {\n code: 'PROCESS_AUTO_BUILD_OPERATION_INVALID',\n exitCode: 2,\n details: normalized,\n });\n}\n\nfunction normalizePreferredList(value: unknown, fallback: string[]): string[] {\n if (!Array.isArray(value)) {\n return [...fallback];\n }\n\n const normalized = value\n .map((entry) => nonEmptyString(entry))\n .filter((entry): entry is string => Boolean(entry));\n\n return normalized.length ? normalized : [...fallback];\n}\n\nfunction normalizeBoolean(value: unknown, fallback: boolean): boolean {\n return typeof value === 'boolean' ? value : fallback;\n}\n\nfunction buildDefaultSourcePolicy(): ProcessAutoBuildSourcePolicy {\n return {\n step1_route: {\n preferred: [...DEFAULT_SOURCE_POLICY.step1_route.preferred],\n fallback: DEFAULT_SOURCE_POLICY.step1_route.fallback,\n },\n step2_process_split: {\n preferred: [...DEFAULT_SOURCE_POLICY.step2_process_split.preferred],\n fallback: DEFAULT_SOURCE_POLICY.step2_process_split.fallback,\n },\n step3b_exchange_values: {\n preferred: [...DEFAULT_SOURCE_POLICY.step3b_exchange_values.preferred],\n require_numeric_evidence:\n DEFAULT_SOURCE_POLICY.step3b_exchange_values.require_numeric_evidence,\n allow_estimation: DEFAULT_SOURCE_POLICY.step3b_exchange_values.allow_estimation,\n },\n };\n}\n\nfunction normalizeSourcePolicy(value: unknown): ProcessAutoBuildSourcePolicy {\n if (!isRecord(value)) {\n return buildDefaultSourcePolicy();\n }\n\n const defaults = buildDefaultSourcePolicy();\n const step1Route = isRecord(value.step1_route) ? value.step1_route : {};\n const step2ProcessSplit = isRecord(value.step2_process_split) ? value.step2_process_split : {};\n const step3ExchangeValues = isRecord(value.step3b_exchange_values)\n ? value.step3b_exchange_values\n : {};\n\n return {\n step1_route: {\n preferred: normalizePreferredList(step1Route.preferred, defaults.step1_route.preferred),\n fallback: nonEmptyString(step1Route.fallback) ?? DEFAULT_SOURCE_POLICY.step1_route.fallback,\n },\n step2_process_split: {\n preferred: normalizePreferredList(\n step2ProcessSplit.preferred,\n defaults.step2_process_split.preferred,\n ),\n fallback:\n nonEmptyString(step2ProcessSplit.fallback) ??\n DEFAULT_SOURCE_POLICY.step2_process_split.fallback,\n },\n step3b_exchange_values: {\n preferred: normalizePreferredList(\n step3ExchangeValues.preferred,\n defaults.step3b_exchange_values.preferred,\n ),\n require_numeric_evidence: normalizeBoolean(\n step3ExchangeValues.require_numeric_evidence,\n DEFAULT_SOURCE_POLICY.step3b_exchange_values.require_numeric_evidence,\n ),\n allow_estimation: normalizeBoolean(\n step3ExchangeValues.allow_estimation,\n DEFAULT_SOURCE_POLICY.step3b_exchange_values.allow_estimation,\n ),\n },\n };\n}\n\nfunction extractFlowDatasetRoot(payload: unknown): {\n flowPayload: JsonRecord;\n flowDataset: JsonRecord;\n wrapper: 'flowDataSet' | 'direct';\n} {\n if (!isRecord(payload)) {\n throw new CliError('process auto-build flow file must contain a JSON object.', {\n code: 'PROCESS_AUTO_BUILD_FLOW_INVALID',\n exitCode: 2,\n });\n }\n\n if (isRecord(payload.flowDataSet)) {\n return {\n flowPayload: payload,\n flowDataset: payload.flowDataSet,\n wrapper: 'flowDataSet',\n };\n }\n\n return {\n flowPayload: payload,\n flowDataset: payload,\n wrapper: 'direct',\n };\n}\n\nfunction extractFlowSummary(\n flowDataset: JsonRecord,\n wrapper: 'flowDataSet' | 'direct',\n): ProcessAutoBuildFlowSummary {\n const flowInformation = isRecord(flowDataset.flowInformation) ? flowDataset.flowInformation : {};\n const dataSetInformation = isRecord(flowInformation.dataSetInformation)\n ? flowInformation.dataSetInformation\n : {};\n const administrativeInformation = isRecord(flowDataset.administrativeInformation)\n ? flowDataset.administrativeInformation\n : {};\n const publicationAndOwnership = isRecord(administrativeInformation.publicationAndOwnership)\n ? administrativeInformation.publicationAndOwnership\n : {};\n const name = isRecord(dataSetInformation.name) ? dataSetInformation.name : {};\n\n return {\n wrapper,\n uuid:\n nonEmptyString(dataSetInformation['common:UUID']) ??\n nonEmptyString(flowDataset['@id']) ??\n null,\n version:\n nonEmptyString(publicationAndOwnership['common:dataSetVersion']) ??\n nonEmptyString(flowDataset['@version']) ??\n null,\n base_name: extractText(name.baseName),\n permanent_uri: nonEmptyString(publicationAndOwnership['common:permanentDataSetURI']) ?? null,\n };\n}\n\nfunction runIdToken(value: string | null | undefined, fallback: string): string {\n return sanitizeRunToken(value ?? '', fallback);\n}\n\nfunction buildProcessAutoBuildRunId(\n flowFilePath: string,\n operation: ProcessAutoBuildOperation,\n summary: ProcessAutoBuildFlowSummary,\n now: Date = new Date(),\n): string {\n const stem = path.basename(flowFilePath, path.extname(flowFilePath));\n const parts = stem.split('_');\n const flowCode = runIdToken(parts[0] || summary.base_name || summary.uuid, 'flow');\n const flowUuidShort = runIdToken(parts[1] || summary.uuid, 'unknown').slice(0, 8);\n const operationToken = operation === 'treat' ? 'treat' : 'produce';\n\n return `pfw_${flowCode}_${flowUuidShort}_${operationToken}_${buildUtcTimestamp(now)}`;\n}\n\nfunction resolveRunRoot(\n requestDir: string,\n outDirOverride: string | null | undefined,\n requestRunRoot: unknown,\n): string {\n const override = nonEmptyString(outDirOverride);\n if (override) {\n return path.resolve(requestDir, override);\n }\n\n const requestValue = nonEmptyString(requestRunRoot);\n if (requestValue) {\n return path.resolve(requestDir, requestValue);\n }\n\n throw new CliError(\n 'Missing required process auto-build run root. Provide --out-dir or request.workspace_run_root.',\n {\n code: 'PROCESS_AUTO_BUILD_RUN_ROOT_REQUIRED',\n exitCode: 2,\n },\n );\n}\n\nfunction normalizeSourceInputType(value: unknown): ProcessAutoBuildSourceInputType {\n const normalized = nonEmptyString(value);\n if (normalized === 'local_file' || normalized === 'local_text') {\n return normalized;\n }\n\n throw new CliError(\n \"process auto-build source_inputs[].type must be 'local_file' or 'local_text'.\",\n {\n code: 'PROCESS_AUTO_BUILD_SOURCE_INVALID',\n exitCode: 2,\n details: { value },\n },\n );\n}\n\nfunction normalizeIntendedRoles(value: unknown): string[] {\n if (!Array.isArray(value)) {\n return [];\n }\n\n return value\n .map((entry) => nonEmptyString(entry))\n .filter((entry): entry is string => Boolean(entry));\n}\n\nfunction normalizeSourceInputs(\n value: unknown,\n requestDir: string,\n evidenceIncomingDir: string,\n): NormalizedProcessAutoBuildSourceInput[] {\n if (value === undefined) {\n return [];\n }\n\n if (!Array.isArray(value)) {\n throw new CliError('process auto-build source_inputs must be an array when provided.', {\n code: 'PROCESS_AUTO_BUILD_SOURCE_INVALID',\n exitCode: 2,\n });\n }\n\n const seenIds = new Set<string>();\n\n return value.map((entry, index) => {\n if (!isRecord(entry)) {\n throw new CliError('process auto-build source_inputs entries must be objects.', {\n code: 'PROCESS_AUTO_BUILD_SOURCE_INVALID',\n exitCode: 2,\n details: { index },\n });\n }\n\n const sourceId = requiredRequestString(entry, 'source_id');\n if (seenIds.has(sourceId)) {\n throw new CliError(`Duplicate process auto-build source_id: ${sourceId}`, {\n code: 'PROCESS_AUTO_BUILD_SOURCE_DUPLICATE',\n exitCode: 2,\n });\n }\n seenIds.add(sourceId);\n\n const sourcePath = path.resolve(requestDir, requiredRequestString(entry, 'path'));\n if (!existsSync(sourcePath)) {\n throw new CliError(`process auto-build source input not found: ${sourcePath}`, {\n code: 'PROCESS_AUTO_BUILD_SOURCE_NOT_FOUND',\n exitCode: 2,\n });\n }\n\n const extension = path.extname(sourcePath);\n const artifactFileName = `${String(index + 1).padStart(2, '0')}_${runIdToken(sourceId, 'source')}${extension}`;\n\n return {\n source_id: sourceId,\n type: normalizeSourceInputType(entry.type),\n source_path: sourcePath,\n artifact_file_name: artifactFileName,\n artifact_path: path.join(evidenceIncomingDir, artifactFileName),\n intended_roles: normalizeIntendedRoles(entry.intended_roles),\n };\n });\n}\n\nfunction buildLayout(runRoot: string, runId: string): ProcessAutoBuildLayout {\n const collectionDir = path.dirname(runRoot);\n const layout: RunLayout = {\n namespace: 'process_from_flow',\n runId,\n artifactsRoot: path.dirname(collectionDir),\n collectionDir,\n runRoot,\n cacheDir: path.join(runRoot, 'cache'),\n inputsDir: path.join(runRoot, 'input'),\n outputsDir: path.join(runRoot, 'exports'),\n reportsDir: path.join(runRoot, 'reports'),\n logsDir: path.join(runRoot, 'logs'),\n manifestsDir: path.join(runRoot, 'manifests'),\n latestRunIdPath: path.join(collectionDir, '.latest_run_id'),\n };\n\n return {\n ...layout,\n requestDir: path.join(runRoot, 'request'),\n evidenceDir: path.join(runRoot, 'evidence'),\n evidenceIncomingDir: path.join(runRoot, 'evidence', 'incoming'),\n evidenceNormalizedDir: path.join(runRoot, 'evidence', 'normalized'),\n evidenceTextDir: path.join(runRoot, 'evidence', 'text'),\n evidenceStructuredDir: path.join(runRoot, 'evidence', 'structured'),\n stageOutputsDir: path.join(runRoot, 'stage_outputs'),\n reviewsDir: path.join(runRoot, 'reviews'),\n requestSnapshotPath: path.join(runRoot, 'request', 'pff-request.json'),\n normalizedRequestPath: path.join(runRoot, 'request', 'request.normalized.json'),\n sourcePolicyPath: path.join(runRoot, 'request', 'source-policy.json'),\n flowSummaryPath: path.join(runRoot, 'manifests', 'flow-summary.json'),\n inputManifestPath: path.join(runRoot, 'input', 'input_manifest.json'),\n buildPlanPath: path.join(runRoot, 'manifests', 'process-build-plan.json'),\n assemblyPlanPath: path.join(runRoot, 'manifests', 'assembly-plan.json'),\n lineageManifestPath: path.join(runRoot, 'manifests', 'lineage-manifest.json'),\n invocationIndexPath: path.join(runRoot, 'manifests', 'invocation-index.json'),\n runManifestPath: path.join(runRoot, 'manifests', 'run-manifest.json'),\n reportPath: path.join(runRoot, 'reports', 'process-auto-build-report.json'),\n statePath: path.join(runRoot, 'cache', 'process_from_flow_state.json'),\n handoffSummaryPath: path.join(runRoot, 'cache', 'agent_handoff_summary.json'),\n processExportsDir: path.join(runRoot, 'exports', 'processes'),\n sourceExportsDir: path.join(runRoot, 'exports', 'sources'),\n };\n}\n\nfunction ensureEmptyRunRoot(runRoot: string): void {\n if (!existsSync(runRoot)) {\n return;\n }\n\n const entries = readdirSync(runRoot);\n if (entries.length > 0) {\n throw new CliError(`process auto-build run root already exists and is not empty: ${runRoot}`, {\n code: 'PROCESS_AUTO_BUILD_RUN_EXISTS',\n exitCode: 2,\n });\n }\n}\n\nfunction ensureProcessAutoBuildLayout(layout: ProcessAutoBuildLayout): void {\n ensureRunLayout(layout);\n [\n layout.requestDir,\n layout.evidenceDir,\n layout.evidenceIncomingDir,\n layout.evidenceNormalizedDir,\n layout.evidenceTextDir,\n layout.evidenceStructuredDir,\n layout.stageOutputsDir,\n layout.reviewsDir,\n layout.processExportsDir,\n layout.sourceExportsDir,\n ].forEach((dirPath) => {\n mkdirSync(dirPath, { recursive: true });\n });\n\n for (const stage of PROCESS_AUTO_BUILD_STAGES) {\n const stageDir = path.join(layout.stageOutputsDir, stage.id);\n mkdirSync(stageDir, { recursive: true });\n if (stage.createsCandidatesDir) {\n mkdirSync(path.join(stageDir, 'candidates'), { recursive: true });\n }\n }\n}\n\nfunction copyArtifactFile(sourcePath: string, targetPath: string, code: string): void {\n mkdirSync(path.dirname(targetPath), { recursive: true });\n try {\n copyFileSync(sourcePath, targetPath);\n } catch (error) {\n throw new CliError(`Failed to copy artifact file: ${sourcePath}`, {\n code,\n exitCode: 1,\n details: String(error),\n });\n }\n}\n\nfunction buildAssemblyPlan(runRoot: string): JsonRecord {\n return {\n schema_version: 1,\n stages: PROCESS_AUTO_BUILD_STAGES.map((stage) => ({\n id: stage.id,\n title: stage.title,\n status: 'pending',\n modules: stage.modules,\n output: stage.output,\n candidates_dir: stage.createsCandidatesDir\n ? path.posix.join(path.posix.dirname(stage.output), 'candidates')\n : null,\n output_abs: path.join(runRoot, stage.output),\n })),\n };\n}\n\nfunction flowReferencePropertySummary(flowDataset: JsonRecord): {\n reference_property: string;\n reference_property_id: string | null;\n reference_unit: string | null;\n} {\n const flowInformation = isRecord(flowDataset.flowInformation) ? flowDataset.flowInformation : {};\n const quantitativeReference = isRecord(flowInformation.quantitativeReference)\n ? flowInformation.quantitativeReference\n : {};\n const referenceId = nonEmptyString(quantitativeReference.referenceToReferenceFlowProperty);\n const flowProperties = isRecord(flowDataset.flowProperties) ? flowDataset.flowProperties : {};\n const propertyRows = Array.isArray(flowProperties.flowProperty)\n ? flowProperties.flowProperty\n : flowProperties.flowProperty\n ? [flowProperties.flowProperty]\n : [];\n const referenceProperty = propertyRows.find(\n (entry) =>\n isRecord(entry) && nonEmptyString(entry['@dataSetInternalID']) === (referenceId ?? '0'),\n );\n const propertyRef =\n isRecord(referenceProperty) && isRecord(referenceProperty.referenceToFlowPropertyDataSet)\n ? referenceProperty.referenceToFlowPropertyDataSet\n : {};\n const shortDescription = isRecord(propertyRef['common:shortDescription'])\n ? propertyRef['common:shortDescription']\n : {};\n const propertyText =\n extractText(shortDescription) ?? extractText(propertyRef['common:shortDescription']);\n\n return {\n reference_property: propertyText ?? 'Reference flow property',\n reference_property_id: nonEmptyString(propertyRef['@refObjectId']),\n reference_unit: null,\n };\n}\n\nfunction buildInitialProcessBuildPlan(\n normalized: NormalizedProcessAutoBuildRequest,\n flowArtifactPath: string,\n): JsonRecord {\n const flowProperty = flowReferencePropertySummary(normalized.flow_dataset);\n const referenceFlowId =\n normalized.flow_summary.uuid ??\n nonEmptyString(normalized.flow_dataset['@id']) ??\n sanitizeRunToken(normalized.flow_summary.base_name ?? normalized.run_id, 'reference-flow');\n const referenceFlowVersion = normalized.flow_summary.version ?? '00.00.000';\n const baseName = normalized.flow_summary.base_name\n ? `${normalized.operation === 'treat' ? 'Treatment of' : 'Production of'} ${normalized.flow_summary.base_name}`\n : `${normalized.operation === 'treat' ? 'Treatment' : 'Production'} process from reference flow`;\n\n return {\n schema_version: 1,\n kind: 'process',\n ruleset: {\n id: 'process-authoring/strict',\n version: '1',\n },\n target: {\n geography: 'GLO',\n technology_route:\n normalized.operation === 'treat'\n ? 'Treatment route to be evidenced during process auto-build'\n : 'Production route to be evidenced during process auto-build',\n classification_path: [\n 'Technosphere',\n normalized.operation === 'treat' ? 'Treatment' : 'Production',\n flowProperty.reference_property,\n normalized.flow_summary.base_name ?? 'Reference flow',\n ],\n },\n identity_decision: {\n decision: 'create_new',\n rationale:\n 'Initial process auto-build scaffold; identity preflight must be rerun with remote/local candidates before write.',\n },\n evidence_manifest: {\n sources: [\n {\n id: `flow:${referenceFlowId}`,\n type: 'input_flow_dataset',\n path: flowArtifactPath,\n title: normalized.flow_summary.base_name ?? referenceFlowId,\n version: referenceFlowVersion,\n },\n ...normalized.source_inputs.map((source) => ({\n id: source.source_id,\n type: source.type,\n path: source.artifact_path,\n title: source.artifact_file_name,\n intended_roles: source.intended_roles,\n })),\n ],\n field_bindings: [\n { field_path: 'target', source_id: `flow:${referenceFlowId}` },\n { field_path: 'identity_decision.decision', source_id: `flow:${referenceFlowId}` },\n { field_path: 'unit_of_analysis', source_id: `flow:${referenceFlowId}` },\n { field_path: 'name_plan.base_name', source_id: `flow:${referenceFlowId}` },\n { field_path: 'target.geography', source_id: `flow:${referenceFlowId}` },\n { field_path: 'target.technology_route', source_id: `flow:${referenceFlowId}` },\n {\n field_path: 'quantitative_reference_plan.reference_flow_id',\n source_id: `flow:${referenceFlowId}`,\n },\n ],\n },\n unit_of_analysis: {\n target_kind: normalized.operation === 'treat' ? 'treatment' : 'process_from_flow_scaffold',\n decision: 'manual_review',\n functional_unit: {\n what:\n normalized.operation === 'treat'\n ? `treat ${normalized.flow_summary.base_name ?? 'the reference flow'}`\n : `produce ${normalized.flow_summary.base_name ?? 'the reference flow'}`,\n how_much: `1 ${flowProperty.reference_unit ?? flowProperty.reference_property}`,\n how_well: 'to be determined from source evidence before materialization',\n how_long: 'not determined in the initial scaffold',\n },\n reference_flow: {\n flow_identity: normalized.flow_summary.base_name ?? referenceFlowId,\n reference_unit: flowProperty.reference_unit ?? flowProperty.reference_property,\n reference_amount: 1,\n flow_property: flowProperty.reference_property,\n },\n declared_unit_allowed: false,\n scaling_evidence_status: 'source_required',\n notes: [\n 'Initial scaffold only. A skill/Codex workflow must revise unit_of_analysis before build-plan materialize.',\n ],\n },\n name_plan: {\n base_name: baseName,\n treatment_standards_routes:\n normalized.operation === 'treat' ? 'treatment route' : 'production route',\n mix_and_location_types: 'global average',\n functional_unit_flow_properties:\n flowProperty.reference_unit ?? flowProperty.reference_property,\n },\n quantitative_reference_plan: {\n reference_flow_id: referenceFlowId,\n reference_flow_version: referenceFlowVersion,\n reference_flow_name: normalized.flow_summary.base_name ?? referenceFlowId,\n reference_flow_internal_id: '1',\n mean_amount: '1.0',\n resulting_amount: '1.0',\n reference_unit: flowProperty.reference_unit ?? flowProperty.reference_property,\n },\n flow_property_plan: flowProperty,\n exchange_plan: {\n exchanges: [],\n },\n materialization_readiness: {\n status: 'scaffold_only',\n next_required_steps: [\n 'replace scaffold unit_of_analysis with a skill-authored decision artifact',\n 'run process identity-preflight with local and remote candidates',\n 'replace scaffold geography, technology, classification, exchange values, and annual volume with evidence-backed values',\n 'run process build-plan validate/materialize before save-draft or publish-build',\n ],\n },\n };\n}\n\nfunction buildLineageManifest(normalized: NormalizedProcessAutoBuildRequest): JsonRecord {\n return {\n schema_version: 1,\n request_id: normalized.request_id,\n run_id: normalized.run_id,\n flow: {\n source_path: normalized.flow_file,\n uuid: normalized.flow_summary.uuid,\n version: normalized.flow_summary.version,\n base_name: normalized.flow_summary.base_name,\n },\n source_inputs: normalized.source_inputs.map((source) => ({\n source_id: source.source_id,\n type: source.type,\n source_path: source.source_path,\n artifact_path: source.artifact_path,\n intended_roles: source.intended_roles,\n })),\n };\n}\n\nfunction buildInvocationIndex(\n normalized: NormalizedProcessAutoBuildRequest,\n options: RunProcessAutoBuildOptions,\n reportPath: string,\n now: Date,\n): JsonRecord {\n const command = ['process', 'auto-build', '--input', options.inputPath];\n if (options.outDir) {\n command.push('--out-dir', options.outDir);\n }\n\n return {\n schema_version: 1,\n invocations: [\n {\n command,\n cwd: options.cwd ?? process.cwd(),\n created_at: now.toISOString(),\n request_path: normalized.request_path,\n report_path: reportPath,\n },\n ],\n };\n}\n\nfunction buildStepMarkers(now: Date): JsonRecord {\n const completedAt = now.toISOString();\n const markers: JsonRecord = {\n intake_prepared: {\n status: 'completed',\n completed_at: completedAt,\n },\n };\n\n PROCESS_AUTO_BUILD_STAGES.forEach((stage) => {\n markers[stage.id] = {\n status: 'pending',\n };\n });\n\n return markers;\n}\n\nfunction buildInitialState(\n normalized: NormalizedProcessAutoBuildRequest,\n flowArtifactPath: string,\n now: Date,\n): JsonRecord {\n return {\n schema_version: 1,\n build_status: 'intake_prepared',\n next_stage: PROCESS_AUTO_BUILD_STAGES[0]?.id ?? null,\n run_id: normalized.run_id,\n request_id: normalized.request_id,\n flow_path: normalized.flow_file,\n flow_artifact_path: flowArtifactPath,\n flow_dataset: normalized.flow_dataset,\n flow_summary: normalized.flow_summary,\n operation: normalized.operation,\n source_inputs: normalized.source_inputs,\n source_policy: normalized.source_policy,\n scientific_references: {\n source_inputs: normalized.source_inputs.map((source) => ({\n source_id: source.source_id,\n type: source.type,\n intended_roles: source.intended_roles,\n source_path: source.source_path,\n })),\n },\n processes: [],\n process_exchanges: [],\n matched_process_exchanges: [],\n process_datasets: [],\n source_datasets: [],\n coverage_metrics: {},\n coverage_history: [],\n step_markers: buildStepMarkers(now),\n };\n}\n\nfunction buildNextActions(layout: ProcessAutoBuildLayout): string[] {\n return [\n `inspect: ${layout.normalizedRequestPath}`,\n `inspect: ${layout.statePath}`,\n `inspect: ${layout.assemblyPlanPath}`,\n `future: tiangong-lca process resume-build --run-dir ${layout.runRoot}`,\n `future: tiangong-lca process publish-build --run-dir ${layout.runRoot}`,\n ];\n}\n\nfunction buildAgentHandoffSummary(\n normalized: NormalizedProcessAutoBuildRequest,\n layout: ProcessAutoBuildLayout,\n flowArtifactPath: string,\n now: Date,\n): JsonRecord {\n return {\n schema_version: 1,\n generated_at_utc: now.toISOString(),\n run_id: normalized.run_id,\n command: 'process auto-build',\n flow_path: normalized.flow_file,\n operation: normalized.operation,\n stop_after: null,\n process_count: 0,\n matched_exchange_count: 0,\n process_dataset_count: 0,\n source_dataset_count: 0,\n remaining_placeholder_refs: 0,\n placeholder_examples: [],\n publish_summary: {},\n artifacts: {\n state_path: layout.statePath,\n timing_report: null,\n publish_summary: null,\n llm_cost_report: null,\n process_update_report: null,\n flow_auto_build_manifest: null,\n request_snapshot: layout.requestSnapshotPath,\n normalized_request: layout.normalizedRequestPath,\n assembly_plan: layout.assemblyPlanPath,\n build_plan: layout.buildPlanPath,\n flow_copy: flowArtifactPath,\n },\n next_actions: buildNextActions(layout),\n extra: {\n status: 'prepared_local_process_auto_build_run',\n request_id: normalized.request_id,\n source_input_count: normalized.source_inputs.length,\n },\n };\n}\n\nfunction buildReport(\n normalized: NormalizedProcessAutoBuildRequest,\n layout: ProcessAutoBuildLayout,\n flowArtifactPath: string,\n now: Date,\n): ProcessAutoBuildReport {\n return {\n schema_version: 1,\n generated_at_utc: now.toISOString(),\n status: 'prepared_local_process_auto_build_run',\n request_path: normalized.request_path,\n request_id: normalized.request_id,\n run_id: normalized.run_id,\n run_root: normalized.run_root,\n operation: normalized.operation,\n flow: {\n source_path: normalized.flow_file,\n artifact_path: flowArtifactPath,\n wrapper: normalized.flow_summary.wrapper,\n uuid: normalized.flow_summary.uuid,\n version: normalized.flow_summary.version,\n base_name: normalized.flow_summary.base_name,\n },\n source_input_count: normalized.source_inputs.length,\n stage_count: PROCESS_AUTO_BUILD_STAGES.length,\n files: {\n request_snapshot: layout.requestSnapshotPath,\n normalized_request: layout.normalizedRequestPath,\n source_policy: layout.sourcePolicyPath,\n flow_summary: layout.flowSummaryPath,\n input_manifest: layout.inputManifestPath,\n build_plan: layout.buildPlanPath,\n assembly_plan: layout.assemblyPlanPath,\n lineage_manifest: layout.lineageManifestPath,\n invocation_index: layout.invocationIndexPath,\n run_manifest: layout.runManifestPath,\n state: layout.statePath,\n handoff_summary: layout.handoffSummaryPath,\n report: layout.reportPath,\n },\n next_actions: buildNextActions(layout),\n };\n}\n\nexport function normalizeProcessAutoBuildRequest(\n input: unknown,\n options: {\n inputPath: string;\n outDir?: string | null;\n now?: Date;\n requestIdOverride?: string;\n runIdOverride?: string;\n },\n): NormalizedProcessAutoBuildRequest {\n const request = requiredRequestObject(input);\n const requestDir = path.dirname(path.resolve(options.inputPath));\n const operation = normalizeOperation(request.operation);\n const flowFile = path.resolve(requestDir, requiredRequestString(request, 'flow_file'));\n const flowPayload = readJsonInput(flowFile);\n const { flowDataset, wrapper } = extractFlowDatasetRoot(flowPayload);\n const flowSummary = extractFlowSummary(flowDataset, wrapper);\n const runId =\n nonEmptyString(options.runIdOverride) ??\n nonEmptyString(request.run_id) ??\n buildProcessAutoBuildRunId(flowFile, operation, flowSummary, options.now);\n const runRoot = resolveRunRoot(requestDir, options.outDir, request.workspace_run_root);\n const layout = buildLayout(runRoot, runId);\n\n return {\n schema_version: 1,\n request_path: path.resolve(options.inputPath),\n request_id:\n nonEmptyString(options.requestIdOverride) ??\n nonEmptyString(request.request_id) ??\n `pff-${runId}`,\n flow_file: flowFile,\n flow_summary: flowSummary,\n flow_dataset: flowDataset,\n operation,\n run_id: runId,\n run_root: runRoot,\n source_inputs: normalizeSourceInputs(\n request.source_inputs,\n requestDir,\n layout.evidenceIncomingDir,\n ),\n source_policy: normalizeSourcePolicy(request.source_policy),\n };\n}\n\nexport async function runProcessAutoBuild(\n options: RunProcessAutoBuildOptions,\n): Promise<ProcessAutoBuildReport> {\n const input = options.inputValue ?? readJsonInput(options.inputPath);\n const now = options.now ?? new Date();\n const normalized = normalizeProcessAutoBuildRequest(input, {\n inputPath: options.inputPath,\n outDir: options.outDir,\n now,\n requestIdOverride: options.requestIdOverride,\n runIdOverride: options.runIdOverride,\n });\n const layout = buildLayout(normalized.run_root, normalized.run_id);\n const flowArtifactPath = path.join(layout.inputsDir, path.basename(normalized.flow_file));\n\n ensureEmptyRunRoot(layout.runRoot);\n ensureProcessAutoBuildLayout(layout);\n\n copyArtifactFile(normalized.flow_file, flowArtifactPath, 'PROCESS_AUTO_BUILD_FLOW_COPY_FAILED');\n normalized.source_inputs.forEach((source) => {\n copyArtifactFile(\n source.source_path,\n source.artifact_path,\n 'PROCESS_AUTO_BUILD_SOURCE_COPY_FAILED',\n );\n });\n\n const request = requiredRequestObject(input);\n writeJsonArtifact(layout.requestSnapshotPath, request);\n writeJsonArtifact(layout.normalizedRequestPath, normalized);\n writeJsonArtifact(layout.sourcePolicyPath, normalized.source_policy);\n writeJsonArtifact(layout.flowSummaryPath, normalized.flow_summary);\n writeJsonArtifact(layout.inputManifestPath, {\n run_id: normalized.run_id,\n flow_path: normalized.flow_file,\n flow_artifact_path: flowArtifactPath,\n operation: normalized.operation,\n build_plan_path: layout.buildPlanPath,\n });\n writeJsonArtifact(\n layout.buildPlanPath,\n buildInitialProcessBuildPlan(normalized, flowArtifactPath),\n );\n writeJsonArtifact(layout.assemblyPlanPath, buildAssemblyPlan(layout.runRoot));\n writeJsonArtifact(layout.lineageManifestPath, buildLineageManifest(normalized));\n writeJsonArtifact(\n layout.invocationIndexPath,\n buildInvocationIndex(normalized, options, layout.reportPath, now),\n );\n writeJsonArtifact(\n layout.runManifestPath,\n buildRunManifest({\n layout,\n command: options.outDir\n ? ['process', 'auto-build', '--input', options.inputPath, '--out-dir', options.outDir]\n : ['process', 'auto-build', '--input', options.inputPath],\n cwd: options.cwd,\n createdAt: now,\n }),\n );\n\n const state = buildInitialState(normalized, flowArtifactPath, now);\n await withStateFileLock(\n layout.statePath,\n { reason: 'process-auto-build.initial_state', now },\n () => writeJsonArtifact(layout.statePath, state),\n );\n\n const handoff = buildAgentHandoffSummary(normalized, layout, flowArtifactPath, now);\n writeJsonArtifact(layout.handoffSummaryPath, handoff);\n writeLatestRunId(layout, normalized.run_id);\n\n const report = buildReport(normalized, layout, flowArtifactPath, now);\n writeJsonArtifact(layout.reportPath, report);\n return report;\n}\n\n// Exposed for deterministic unit coverage of process auto-build normalization and scaffold helpers.\nexport const __testInternals = {\n PROCESS_AUTO_BUILD_STAGES,\n extractText,\n normalizeOperation,\n normalizeSourcePolicy,\n extractFlowDatasetRoot,\n extractFlowSummary,\n buildProcessAutoBuildRunId,\n buildLayout,\n buildAssemblyPlan,\n buildInitialProcessBuildPlan,\n buildLineageManifest,\n buildInvocationIndex,\n buildInitialState,\n buildAgentHandoffSummary,\n buildReport,\n};\n"]}
1
+ {"version":3,"file":"process-auto-build.js","sourceRoot":"","sources":["../../../src/lib/process-auto-build.ts"],"names":[],"mappings":"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","sourcesContent":["import { copyFileSync, existsSync, mkdirSync, readdirSync } from 'node:fs';\nimport path from 'node:path';\nimport { writeJsonArtifact } from './artifacts.js';\nimport { CliError } from './errors.js';\nimport { readJsonInput } from './io.js';\nimport {\n buildRunManifest,\n buildUtcTimestamp,\n ensureRunLayout,\n type RunLayout,\n sanitizeRunToken,\n writeLatestRunId,\n} from './run.js';\nimport { withStateFileLock } from './state-lock.js';\n\ntype JsonRecord = Record<string, unknown>;\n\nexport type ProcessAutoBuildOperation = 'produce' | 'treat';\nexport type ProcessAutoBuildSourceInputType = 'local_file' | 'local_text';\n\nexport type ProcessAutoBuildSourcePolicy = {\n step1_route: {\n preferred: string[];\n fallback: string;\n };\n step2_process_split: {\n preferred: string[];\n fallback: string;\n };\n step3b_exchange_values: {\n preferred: string[];\n require_numeric_evidence: boolean;\n allow_estimation: boolean;\n };\n};\n\nexport type ProcessAutoBuildFlowSummary = {\n wrapper: 'flowDataSet' | 'direct';\n uuid: string | null;\n version: string | null;\n base_name: string | null;\n permanent_uri: string | null;\n};\n\nexport type NormalizedProcessAutoBuildSourceInput = {\n source_id: string;\n type: ProcessAutoBuildSourceInputType;\n source_path: string;\n artifact_path: string;\n artifact_file_name: string;\n intended_roles: string[];\n};\n\nexport type NormalizedProcessAutoBuildRequest = {\n schema_version: 1;\n request_path: string;\n request_id: string;\n flow_file: string;\n flow_summary: ProcessAutoBuildFlowSummary;\n flow_dataset: JsonRecord;\n operation: ProcessAutoBuildOperation;\n run_id: string;\n run_root: string;\n source_inputs: NormalizedProcessAutoBuildSourceInput[];\n source_policy: ProcessAutoBuildSourcePolicy;\n};\n\nexport type ProcessAutoBuildLayout = RunLayout & {\n requestDir: string;\n evidenceDir: string;\n evidenceIncomingDir: string;\n evidenceNormalizedDir: string;\n evidenceTextDir: string;\n evidenceStructuredDir: string;\n stageOutputsDir: string;\n reviewsDir: string;\n requestSnapshotPath: string;\n normalizedRequestPath: string;\n sourcePolicyPath: string;\n flowSummaryPath: string;\n inputManifestPath: string;\n buildPlanPath: string;\n assemblyPlanPath: string;\n lineageManifestPath: string;\n invocationIndexPath: string;\n runManifestPath: string;\n reportPath: string;\n statePath: string;\n handoffSummaryPath: string;\n processExportsDir: string;\n sourceExportsDir: string;\n};\n\nexport type ProcessAutoBuildReport = {\n schema_version: 1;\n generated_at_utc: string;\n status: 'prepared_local_process_auto_build_run';\n request_path: string;\n request_id: string;\n run_id: string;\n run_root: string;\n operation: ProcessAutoBuildOperation;\n flow: {\n source_path: string;\n artifact_path: string;\n wrapper: 'flowDataSet' | 'direct';\n uuid: string | null;\n version: string | null;\n base_name: string | null;\n };\n source_input_count: number;\n stage_count: number;\n files: {\n request_snapshot: string;\n normalized_request: string;\n source_policy: string;\n flow_summary: string;\n input_manifest: string;\n build_plan: string;\n assembly_plan: string;\n lineage_manifest: string;\n invocation_index: string;\n run_manifest: string;\n state: string;\n handoff_summary: string;\n report: string;\n };\n next_actions: string[];\n};\n\nexport type RunProcessAutoBuildOptions = {\n inputPath: string;\n outDir?: string | null;\n now?: Date;\n cwd?: string;\n inputValue?: unknown;\n requestIdOverride?: string;\n runIdOverride?: string;\n};\n\ntype ProcessAutoBuildStage = {\n id: string;\n title: string;\n output: string;\n createsCandidatesDir: boolean;\n modules: string[];\n};\n\nconst DEFAULT_SOURCE_POLICY: ProcessAutoBuildSourcePolicy = {\n step1_route: {\n preferred: ['user_bundle', 'kb_bundle'],\n fallback: 'expert_judgement',\n },\n step2_process_split: {\n preferred: ['user_bundle.process_split', 'si_bundle', 'kb_bundle.process_split'],\n fallback: 'expert_judgement',\n },\n step3b_exchange_values: {\n preferred: ['user_bundle.exchange_values', 'si_bundle', 'kb_bundle.exchange_values'],\n require_numeric_evidence: true,\n allow_estimation: true,\n },\n};\n\nconst PROCESS_AUTO_BUILD_STAGES: ProcessAutoBuildStage[] = [\n {\n id: '01_route',\n title: 'Route planning',\n output: 'stage_outputs/01_route/route_plan.json',\n createsCandidatesDir: true,\n modules: ['kb-search', 'llm'],\n },\n {\n id: '02_process_split',\n title: 'Process chain split',\n output: 'stage_outputs/02_process_split/process_chain.json',\n createsCandidatesDir: true,\n modules: ['llm'],\n },\n {\n id: '03_exchange_plan',\n title: 'Exchange planning',\n output: 'stage_outputs/03_exchange_plan/exchange_plan.json',\n createsCandidatesDir: false,\n modules: ['llm'],\n },\n {\n id: '04_exchange_values',\n title: 'Exchange value extraction',\n output: 'stage_outputs/04_exchange_values/exchange_values.json',\n createsCandidatesDir: true,\n modules: ['unstructured', 'kb-search', 'llm'],\n },\n {\n id: '05_chain_review',\n title: 'Chain review',\n output: 'stage_outputs/05_chain_review/chain_review.json',\n createsCandidatesDir: false,\n modules: ['llm'],\n },\n {\n id: '06_flow_match',\n title: 'Flow matching',\n output: 'stage_outputs/06_flow_match/flow_match_bundle.json',\n createsCandidatesDir: false,\n modules: ['search:flow', 'llm'],\n },\n {\n id: '07_source_build',\n title: 'Source dataset build',\n output: 'stage_outputs/07_source_build/source_bundle.json',\n createsCandidatesDir: false,\n modules: ['validation'],\n },\n {\n id: '08_process_build',\n title: 'Process dataset build',\n output: 'stage_outputs/08_process_build/process_bundle.json',\n createsCandidatesDir: false,\n modules: ['validation', 'llm'],\n },\n {\n id: '09_qa',\n title: 'QA and balance review',\n output: 'stage_outputs/09_qa/qa_bundle.json',\n createsCandidatesDir: false,\n modules: ['validation', 'llm'],\n },\n {\n id: '10_publish',\n title: 'Publish handoff',\n output: 'stage_outputs/10_publish/publish_bundle.json',\n createsCandidatesDir: false,\n modules: ['publish'],\n },\n];\n\nfunction isRecord(value: unknown): value is JsonRecord {\n return Boolean(value && typeof value === 'object' && !Array.isArray(value));\n}\n\nfunction nonEmptyString(value: unknown): string | null {\n if (typeof value !== 'string') {\n return null;\n }\n\n const normalized = value.trim();\n return normalized || null;\n}\n\nfunction extractText(value: unknown): string | null {\n const direct = nonEmptyString(value);\n if (direct) {\n return direct;\n }\n\n if (Array.isArray(value)) {\n for (const item of value) {\n const extracted = extractText(item);\n if (extracted) {\n return extracted;\n }\n }\n return null;\n }\n\n if (!isRecord(value)) {\n return null;\n }\n\n if ('#text' in value) {\n return nonEmptyString(value['#text']);\n }\n\n return null;\n}\n\nfunction requiredRequestObject(input: unknown): JsonRecord {\n if (!isRecord(input)) {\n throw new CliError('process auto-build request must be a JSON object.', {\n code: 'PROCESS_AUTO_BUILD_REQUEST_INVALID',\n exitCode: 2,\n });\n }\n\n return input;\n}\n\nfunction requiredRequestString(input: JsonRecord, key: string): string {\n const value = nonEmptyString(input[key]);\n if (!value) {\n throw new CliError(`process auto-build request is missing '${key}'.`, {\n code: 'PROCESS_AUTO_BUILD_REQUEST_INVALID',\n exitCode: 2,\n details: { key },\n });\n }\n\n return value;\n}\n\nfunction normalizeOperation(value: unknown): ProcessAutoBuildOperation {\n const normalized = nonEmptyString(value);\n if (!normalized) {\n return 'produce';\n }\n if (normalized === 'produce' || normalized === 'treat') {\n return normalized;\n }\n\n throw new CliError(\"process auto-build operation must be 'produce' or 'treat'.\", {\n code: 'PROCESS_AUTO_BUILD_OPERATION_INVALID',\n exitCode: 2,\n details: normalized,\n });\n}\n\nfunction normalizePreferredList(value: unknown, fallback: string[]): string[] {\n if (!Array.isArray(value)) {\n return [...fallback];\n }\n\n const normalized = value\n .map((entry) => nonEmptyString(entry))\n .filter((entry): entry is string => Boolean(entry));\n\n return normalized.length ? normalized : [...fallback];\n}\n\nfunction normalizeBoolean(value: unknown, fallback: boolean): boolean {\n return typeof value === 'boolean' ? value : fallback;\n}\n\nfunction buildDefaultSourcePolicy(): ProcessAutoBuildSourcePolicy {\n return {\n step1_route: {\n preferred: [...DEFAULT_SOURCE_POLICY.step1_route.preferred],\n fallback: DEFAULT_SOURCE_POLICY.step1_route.fallback,\n },\n step2_process_split: {\n preferred: [...DEFAULT_SOURCE_POLICY.step2_process_split.preferred],\n fallback: DEFAULT_SOURCE_POLICY.step2_process_split.fallback,\n },\n step3b_exchange_values: {\n preferred: [...DEFAULT_SOURCE_POLICY.step3b_exchange_values.preferred],\n require_numeric_evidence:\n DEFAULT_SOURCE_POLICY.step3b_exchange_values.require_numeric_evidence,\n allow_estimation: DEFAULT_SOURCE_POLICY.step3b_exchange_values.allow_estimation,\n },\n };\n}\n\nfunction normalizeSourcePolicy(value: unknown): ProcessAutoBuildSourcePolicy {\n if (!isRecord(value)) {\n return buildDefaultSourcePolicy();\n }\n\n const defaults = buildDefaultSourcePolicy();\n const step1Route = isRecord(value.step1_route) ? value.step1_route : {};\n const step2ProcessSplit = isRecord(value.step2_process_split) ? value.step2_process_split : {};\n const step3ExchangeValues = isRecord(value.step3b_exchange_values)\n ? value.step3b_exchange_values\n : {};\n\n return {\n step1_route: {\n preferred: normalizePreferredList(step1Route.preferred, defaults.step1_route.preferred),\n fallback: nonEmptyString(step1Route.fallback) ?? DEFAULT_SOURCE_POLICY.step1_route.fallback,\n },\n step2_process_split: {\n preferred: normalizePreferredList(\n step2ProcessSplit.preferred,\n defaults.step2_process_split.preferred,\n ),\n fallback:\n nonEmptyString(step2ProcessSplit.fallback) ??\n DEFAULT_SOURCE_POLICY.step2_process_split.fallback,\n },\n step3b_exchange_values: {\n preferred: normalizePreferredList(\n step3ExchangeValues.preferred,\n defaults.step3b_exchange_values.preferred,\n ),\n require_numeric_evidence: normalizeBoolean(\n step3ExchangeValues.require_numeric_evidence,\n DEFAULT_SOURCE_POLICY.step3b_exchange_values.require_numeric_evidence,\n ),\n allow_estimation: normalizeBoolean(\n step3ExchangeValues.allow_estimation,\n DEFAULT_SOURCE_POLICY.step3b_exchange_values.allow_estimation,\n ),\n },\n };\n}\n\nfunction extractFlowDatasetRoot(payload: unknown): {\n flowPayload: JsonRecord;\n flowDataset: JsonRecord;\n wrapper: 'flowDataSet' | 'direct';\n} {\n if (!isRecord(payload)) {\n throw new CliError('process auto-build flow file must contain a JSON object.', {\n code: 'PROCESS_AUTO_BUILD_FLOW_INVALID',\n exitCode: 2,\n });\n }\n\n if (isRecord(payload.flowDataSet)) {\n return {\n flowPayload: payload,\n flowDataset: payload.flowDataSet,\n wrapper: 'flowDataSet',\n };\n }\n\n return {\n flowPayload: payload,\n flowDataset: payload,\n wrapper: 'direct',\n };\n}\n\nfunction extractFlowSummary(\n flowDataset: JsonRecord,\n wrapper: 'flowDataSet' | 'direct',\n): ProcessAutoBuildFlowSummary {\n const flowInformation = isRecord(flowDataset.flowInformation) ? flowDataset.flowInformation : {};\n const dataSetInformation = isRecord(flowInformation.dataSetInformation)\n ? flowInformation.dataSetInformation\n : {};\n const administrativeInformation = isRecord(flowDataset.administrativeInformation)\n ? flowDataset.administrativeInformation\n : {};\n const publicationAndOwnership = isRecord(administrativeInformation.publicationAndOwnership)\n ? administrativeInformation.publicationAndOwnership\n : {};\n const name = isRecord(dataSetInformation.name) ? dataSetInformation.name : {};\n\n return {\n wrapper,\n uuid:\n nonEmptyString(dataSetInformation['common:UUID']) ??\n nonEmptyString(flowDataset['@id']) ??\n null,\n version:\n nonEmptyString(publicationAndOwnership['common:dataSetVersion']) ??\n nonEmptyString(flowDataset['@version']) ??\n null,\n base_name: extractText(name.baseName),\n permanent_uri: nonEmptyString(publicationAndOwnership['common:permanentDataSetURI']) ?? null,\n };\n}\n\nfunction runIdToken(value: string | null | undefined, fallback: string): string {\n return sanitizeRunToken(value ?? '', fallback);\n}\n\nfunction buildProcessAutoBuildRunId(\n flowFilePath: string,\n operation: ProcessAutoBuildOperation,\n summary: ProcessAutoBuildFlowSummary,\n now: Date = new Date(),\n): string {\n const stem = path.basename(flowFilePath, path.extname(flowFilePath));\n const parts = stem.split('_');\n const flowCode = runIdToken(parts[0] || summary.base_name || summary.uuid, 'flow');\n const flowUuidShort = runIdToken(parts[1] || summary.uuid, 'unknown').slice(0, 8);\n const operationToken = operation === 'treat' ? 'treat' : 'produce';\n\n return `pfw_${flowCode}_${flowUuidShort}_${operationToken}_${buildUtcTimestamp(now)}`;\n}\n\nfunction resolveRunRoot(\n requestDir: string,\n outDirOverride: string | null | undefined,\n requestRunRoot: unknown,\n): string {\n const override = nonEmptyString(outDirOverride);\n if (override) {\n return path.resolve(requestDir, override);\n }\n\n const requestValue = nonEmptyString(requestRunRoot);\n if (requestValue) {\n return path.resolve(requestDir, requestValue);\n }\n\n throw new CliError(\n 'Missing required process auto-build run root. Provide --out-dir or request.workspace_run_root.',\n {\n code: 'PROCESS_AUTO_BUILD_RUN_ROOT_REQUIRED',\n exitCode: 2,\n },\n );\n}\n\nfunction normalizeSourceInputType(value: unknown): ProcessAutoBuildSourceInputType {\n const normalized = nonEmptyString(value);\n if (normalized === 'local_file' || normalized === 'local_text') {\n return normalized;\n }\n\n throw new CliError(\n \"process auto-build source_inputs[].type must be 'local_file' or 'local_text'.\",\n {\n code: 'PROCESS_AUTO_BUILD_SOURCE_INVALID',\n exitCode: 2,\n details: { value },\n },\n );\n}\n\nfunction normalizeIntendedRoles(value: unknown): string[] {\n if (!Array.isArray(value)) {\n return [];\n }\n\n return value\n .map((entry) => nonEmptyString(entry))\n .filter((entry): entry is string => Boolean(entry));\n}\n\nfunction normalizeSourceInputs(\n value: unknown,\n requestDir: string,\n evidenceIncomingDir: string,\n): NormalizedProcessAutoBuildSourceInput[] {\n if (value === undefined) {\n return [];\n }\n\n if (!Array.isArray(value)) {\n throw new CliError('process auto-build source_inputs must be an array when provided.', {\n code: 'PROCESS_AUTO_BUILD_SOURCE_INVALID',\n exitCode: 2,\n });\n }\n\n const seenIds = new Set<string>();\n\n return value.map((entry, index) => {\n if (!isRecord(entry)) {\n throw new CliError('process auto-build source_inputs entries must be objects.', {\n code: 'PROCESS_AUTO_BUILD_SOURCE_INVALID',\n exitCode: 2,\n details: { index },\n });\n }\n\n const sourceId = requiredRequestString(entry, 'source_id');\n if (seenIds.has(sourceId)) {\n throw new CliError(`Duplicate process auto-build source_id: ${sourceId}`, {\n code: 'PROCESS_AUTO_BUILD_SOURCE_DUPLICATE',\n exitCode: 2,\n });\n }\n seenIds.add(sourceId);\n\n const sourcePath = path.resolve(requestDir, requiredRequestString(entry, 'path'));\n if (!existsSync(sourcePath)) {\n throw new CliError(`process auto-build source input not found: ${sourcePath}`, {\n code: 'PROCESS_AUTO_BUILD_SOURCE_NOT_FOUND',\n exitCode: 2,\n });\n }\n\n const extension = path.extname(sourcePath);\n const artifactFileName = `${String(index + 1).padStart(2, '0')}_${runIdToken(sourceId, 'source')}${extension}`;\n\n return {\n source_id: sourceId,\n type: normalizeSourceInputType(entry.type),\n source_path: sourcePath,\n artifact_file_name: artifactFileName,\n artifact_path: path.join(evidenceIncomingDir, artifactFileName),\n intended_roles: normalizeIntendedRoles(entry.intended_roles),\n };\n });\n}\n\nfunction buildLayout(runRoot: string, runId: string): ProcessAutoBuildLayout {\n const collectionDir = path.dirname(runRoot);\n const layout: RunLayout = {\n namespace: 'process_from_flow',\n runId,\n artifactsRoot: path.dirname(collectionDir),\n collectionDir,\n runRoot,\n cacheDir: path.join(runRoot, 'cache'),\n inputsDir: path.join(runRoot, 'input'),\n outputsDir: path.join(runRoot, 'exports'),\n reportsDir: path.join(runRoot, 'reports'),\n logsDir: path.join(runRoot, 'logs'),\n manifestsDir: path.join(runRoot, 'manifests'),\n latestRunIdPath: path.join(collectionDir, '.latest_run_id'),\n };\n\n return {\n ...layout,\n requestDir: path.join(runRoot, 'request'),\n evidenceDir: path.join(runRoot, 'evidence'),\n evidenceIncomingDir: path.join(runRoot, 'evidence', 'incoming'),\n evidenceNormalizedDir: path.join(runRoot, 'evidence', 'normalized'),\n evidenceTextDir: path.join(runRoot, 'evidence', 'text'),\n evidenceStructuredDir: path.join(runRoot, 'evidence', 'structured'),\n stageOutputsDir: path.join(runRoot, 'stage_outputs'),\n reviewsDir: path.join(runRoot, 'reviews'),\n requestSnapshotPath: path.join(runRoot, 'request', 'pff-request.json'),\n normalizedRequestPath: path.join(runRoot, 'request', 'request.normalized.json'),\n sourcePolicyPath: path.join(runRoot, 'request', 'source-policy.json'),\n flowSummaryPath: path.join(runRoot, 'manifests', 'flow-summary.json'),\n inputManifestPath: path.join(runRoot, 'input', 'input_manifest.json'),\n buildPlanPath: path.join(runRoot, 'manifests', 'process-build-plan.json'),\n assemblyPlanPath: path.join(runRoot, 'manifests', 'assembly-plan.json'),\n lineageManifestPath: path.join(runRoot, 'manifests', 'lineage-manifest.json'),\n invocationIndexPath: path.join(runRoot, 'manifests', 'invocation-index.json'),\n runManifestPath: path.join(runRoot, 'manifests', 'run-manifest.json'),\n reportPath: path.join(runRoot, 'reports', 'process-auto-build-report.json'),\n statePath: path.join(runRoot, 'cache', 'process_from_flow_state.json'),\n handoffSummaryPath: path.join(runRoot, 'cache', 'agent_handoff_summary.json'),\n processExportsDir: path.join(runRoot, 'exports', 'processes'),\n sourceExportsDir: path.join(runRoot, 'exports', 'sources'),\n };\n}\n\nfunction ensureEmptyRunRoot(runRoot: string): void {\n if (!existsSync(runRoot)) {\n return;\n }\n\n const entries = readdirSync(runRoot);\n if (entries.length > 0) {\n throw new CliError(`process auto-build run root already exists and is not empty: ${runRoot}`, {\n code: 'PROCESS_AUTO_BUILD_RUN_EXISTS',\n exitCode: 2,\n });\n }\n}\n\nfunction ensureProcessAutoBuildLayout(layout: ProcessAutoBuildLayout): void {\n ensureRunLayout(layout);\n [\n layout.requestDir,\n layout.evidenceDir,\n layout.evidenceIncomingDir,\n layout.evidenceNormalizedDir,\n layout.evidenceTextDir,\n layout.evidenceStructuredDir,\n layout.stageOutputsDir,\n layout.reviewsDir,\n layout.processExportsDir,\n layout.sourceExportsDir,\n ].forEach((dirPath) => {\n mkdirSync(dirPath, { recursive: true });\n });\n\n for (const stage of PROCESS_AUTO_BUILD_STAGES) {\n const stageDir = path.join(layout.stageOutputsDir, stage.id);\n mkdirSync(stageDir, { recursive: true });\n if (stage.createsCandidatesDir) {\n mkdirSync(path.join(stageDir, 'candidates'), { recursive: true });\n }\n }\n}\n\nfunction copyArtifactFile(sourcePath: string, targetPath: string, code: string): void {\n mkdirSync(path.dirname(targetPath), { recursive: true });\n try {\n copyFileSync(sourcePath, targetPath);\n } catch (error) {\n throw new CliError(`Failed to copy artifact file: ${sourcePath}`, {\n code,\n exitCode: 1,\n details: String(error),\n });\n }\n}\n\nfunction buildAssemblyPlan(runRoot: string): JsonRecord {\n return {\n schema_version: 1,\n stages: PROCESS_AUTO_BUILD_STAGES.map((stage) => ({\n id: stage.id,\n title: stage.title,\n status: 'pending',\n modules: stage.modules,\n output: stage.output,\n candidates_dir: stage.createsCandidatesDir\n ? path.posix.join(path.posix.dirname(stage.output), 'candidates')\n : null,\n output_abs: path.join(runRoot, stage.output),\n })),\n };\n}\n\nfunction flowReferencePropertySummary(flowDataset: JsonRecord): {\n reference_property: string;\n reference_property_id: string | null;\n reference_unit: string | null;\n} {\n const flowInformation = isRecord(flowDataset.flowInformation) ? flowDataset.flowInformation : {};\n const quantitativeReference = isRecord(flowInformation.quantitativeReference)\n ? flowInformation.quantitativeReference\n : {};\n const referenceId = nonEmptyString(quantitativeReference.referenceToReferenceFlowProperty);\n const flowProperties = isRecord(flowDataset.flowProperties) ? flowDataset.flowProperties : {};\n const propertyRows = Array.isArray(flowProperties.flowProperty)\n ? flowProperties.flowProperty\n : flowProperties.flowProperty\n ? [flowProperties.flowProperty]\n : [];\n const referenceProperty = propertyRows.find(\n (entry) =>\n isRecord(entry) && nonEmptyString(entry['@dataSetInternalID']) === (referenceId ?? '0'),\n );\n const propertyRef =\n isRecord(referenceProperty) && isRecord(referenceProperty.referenceToFlowPropertyDataSet)\n ? referenceProperty.referenceToFlowPropertyDataSet\n : {};\n const shortDescription = isRecord(propertyRef['common:shortDescription'])\n ? propertyRef['common:shortDescription']\n : {};\n const propertyText =\n extractText(shortDescription) ?? extractText(propertyRef['common:shortDescription']);\n\n return {\n reference_property: propertyText ?? 'Reference flow property',\n reference_property_id: nonEmptyString(propertyRef['@refObjectId']),\n reference_unit: null,\n };\n}\n\nfunction buildInitialProcessBuildPlan(\n normalized: NormalizedProcessAutoBuildRequest,\n flowArtifactPath: string,\n): JsonRecord {\n const flowProperty = flowReferencePropertySummary(normalized.flow_dataset);\n const referenceFlowId =\n normalized.flow_summary.uuid ??\n nonEmptyString(normalized.flow_dataset['@id']) ??\n sanitizeRunToken(normalized.flow_summary.base_name ?? normalized.run_id, 'reference-flow');\n const referenceFlowVersion = normalized.flow_summary.version ?? '00.00.000';\n const baseName = normalized.flow_summary.base_name\n ? `${normalized.operation === 'treat' ? 'Treatment of' : 'Production of'} ${normalized.flow_summary.base_name}`\n : `${normalized.operation === 'treat' ? 'Treatment' : 'Production'} process from reference flow`;\n\n return {\n schema_version: 1,\n kind: 'process',\n ruleset: {\n id: 'process-authoring/strict',\n version: '1',\n },\n target: {\n geography: 'GLO',\n technology_route:\n normalized.operation === 'treat'\n ? 'Treatment route to be evidenced during process auto-build'\n : 'Production route to be evidenced during process auto-build',\n classification_path: [\n 'Technosphere',\n normalized.operation === 'treat' ? 'Treatment' : 'Production',\n flowProperty.reference_property,\n normalized.flow_summary.base_name ?? 'Reference flow',\n ],\n },\n identity_decision: {\n decision: 'create_new',\n rationale:\n 'Initial process auto-build scaffold; identity preflight must be rerun with remote/local candidates before write.',\n },\n evidence_manifest: {\n sources: [\n {\n id: `flow:${referenceFlowId}`,\n type: 'input_flow_dataset',\n path: flowArtifactPath,\n title: normalized.flow_summary.base_name ?? referenceFlowId,\n version: referenceFlowVersion,\n },\n ...normalized.source_inputs.map((source) => ({\n id: source.source_id,\n type: source.type,\n path: source.artifact_path,\n title: source.artifact_file_name,\n intended_roles: source.intended_roles,\n })),\n ],\n field_bindings: [\n { field_path: 'target', source_id: `flow:${referenceFlowId}` },\n { field_path: 'identity_decision.decision', source_id: `flow:${referenceFlowId}` },\n { field_path: 'unit_of_analysis', source_id: `flow:${referenceFlowId}` },\n { field_path: 'name_plan.base_name', source_id: `flow:${referenceFlowId}` },\n { field_path: 'target.geography', source_id: `flow:${referenceFlowId}` },\n { field_path: 'target.technology_route', source_id: `flow:${referenceFlowId}` },\n {\n field_path: 'quantitative_reference_plan.reference_flow_id',\n source_id: `flow:${referenceFlowId}`,\n },\n ],\n },\n unit_of_analysis: {\n target_kind: normalized.operation === 'treat' ? 'treatment' : 'process_from_flow_scaffold',\n decision: 'manual_review',\n functional_unit: {\n what:\n normalized.operation === 'treat'\n ? `treat ${normalized.flow_summary.base_name ?? 'the reference flow'}`\n : `produce ${normalized.flow_summary.base_name ?? 'the reference flow'}`,\n how_much: `1 ${flowProperty.reference_unit ?? flowProperty.reference_property}`,\n how_well: 'to be determined from source evidence before materialization',\n how_long: 'not determined in the initial scaffold',\n },\n reference_flow: {\n flow_identity: normalized.flow_summary.base_name ?? referenceFlowId,\n reference_unit: flowProperty.reference_unit ?? flowProperty.reference_property,\n reference_amount: 1,\n flow_property: flowProperty.reference_property,\n },\n declared_unit_allowed: false,\n scaling_evidence_status: 'source_required',\n notes: [\n 'Initial scaffold only. A skill/Codex workflow must revise unit_of_analysis before build-plan materialize.',\n ],\n },\n name_plan: {\n base_name: baseName,\n treatment_standards_routes:\n normalized.operation === 'treat' ? 'treatment route' : 'production route',\n mix_and_location_types: 'global average',\n functional_unit_flow_properties:\n flowProperty.reference_unit ?? flowProperty.reference_property,\n },\n quantitative_reference_plan: {\n reference_flow_id: referenceFlowId,\n reference_flow_version: referenceFlowVersion,\n reference_flow_name: normalized.flow_summary.base_name ?? referenceFlowId,\n reference_flow_internal_id: '1',\n mean_amount: '1.0',\n resulting_amount: '1.0',\n reference_unit: flowProperty.reference_unit ?? flowProperty.reference_property,\n },\n flow_property_plan: flowProperty,\n exchange_plan: {\n exchanges: [],\n },\n materialization_readiness: {\n status: 'scaffold_only',\n next_required_steps: [\n 'replace scaffold unit_of_analysis with a skill-authored decision artifact',\n 'run process identity-preflight with local and remote candidates',\n 'replace scaffold geography, technology, classification, exchange values, and annual volume with evidence-backed values',\n 'run process build-plan validate/materialize before save-draft or publish-build',\n ],\n },\n };\n}\n\nfunction buildLineageManifest(normalized: NormalizedProcessAutoBuildRequest): JsonRecord {\n return {\n schema_version: 1,\n request_id: normalized.request_id,\n run_id: normalized.run_id,\n flow: {\n source_path: normalized.flow_file,\n uuid: normalized.flow_summary.uuid,\n version: normalized.flow_summary.version,\n base_name: normalized.flow_summary.base_name,\n },\n source_inputs: normalized.source_inputs.map((source) => ({\n source_id: source.source_id,\n type: source.type,\n source_path: source.source_path,\n artifact_path: source.artifact_path,\n intended_roles: source.intended_roles,\n })),\n };\n}\n\nfunction buildInvocationIndex(\n normalized: NormalizedProcessAutoBuildRequest,\n options: RunProcessAutoBuildOptions,\n reportPath: string,\n now: Date,\n): JsonRecord {\n const command = ['process', 'auto-build', '--input', options.inputPath];\n if (options.outDir) {\n command.push('--out-dir', options.outDir);\n }\n\n return {\n schema_version: 1,\n invocations: [\n {\n command,\n cwd: options.cwd ?? process.cwd(),\n created_at: now.toISOString(),\n request_path: normalized.request_path,\n report_path: reportPath,\n },\n ],\n };\n}\n\nfunction buildStepMarkers(now: Date): JsonRecord {\n const completedAt = now.toISOString();\n const markers: JsonRecord = {\n intake_prepared: {\n status: 'completed',\n completed_at: completedAt,\n },\n };\n\n PROCESS_AUTO_BUILD_STAGES.forEach((stage) => {\n markers[stage.id] = {\n status: 'pending',\n };\n });\n\n return markers;\n}\n\nfunction buildInitialState(\n normalized: NormalizedProcessAutoBuildRequest,\n flowArtifactPath: string,\n now: Date,\n): JsonRecord {\n return {\n schema_version: 1,\n build_status: 'intake_prepared',\n next_stage: PROCESS_AUTO_BUILD_STAGES[0]?.id ?? null,\n run_id: normalized.run_id,\n request_id: normalized.request_id,\n flow_path: normalized.flow_file,\n flow_artifact_path: flowArtifactPath,\n flow_dataset: normalized.flow_dataset,\n flow_summary: normalized.flow_summary,\n operation: normalized.operation,\n source_inputs: normalized.source_inputs,\n source_policy: normalized.source_policy,\n scientific_references: {\n source_inputs: normalized.source_inputs.map((source) => ({\n source_id: source.source_id,\n type: source.type,\n intended_roles: source.intended_roles,\n source_path: source.source_path,\n })),\n },\n processes: [],\n process_exchanges: [],\n matched_process_exchanges: [],\n process_datasets: [],\n source_datasets: [],\n coverage_metrics: {},\n coverage_history: [],\n step_markers: buildStepMarkers(now),\n };\n}\n\nfunction buildNextActions(layout: ProcessAutoBuildLayout): string[] {\n return [\n `inspect: ${layout.normalizedRequestPath}`,\n `inspect: ${layout.statePath}`,\n `inspect: ${layout.assemblyPlanPath}`,\n `future: tiangong-lca process resume-build --run-dir ${layout.runRoot}`,\n `future: tiangong-lca process publish-build --run-dir ${layout.runRoot}`,\n ];\n}\n\nfunction buildAgentHandoffSummary(\n normalized: NormalizedProcessAutoBuildRequest,\n layout: ProcessAutoBuildLayout,\n flowArtifactPath: string,\n now: Date,\n): JsonRecord {\n return {\n schema_version: 1,\n generated_at_utc: now.toISOString(),\n run_id: normalized.run_id,\n command: 'process auto-build',\n flow_path: normalized.flow_file,\n operation: normalized.operation,\n stop_after: null,\n process_count: 0,\n matched_exchange_count: 0,\n process_dataset_count: 0,\n source_dataset_count: 0,\n remaining_placeholder_refs: 0,\n placeholder_examples: [],\n publish_summary: {},\n artifacts: {\n state_path: layout.statePath,\n timing_report: null,\n publish_summary: null,\n llm_cost_report: null,\n process_update_report: null,\n flow_auto_build_manifest: null,\n request_snapshot: layout.requestSnapshotPath,\n normalized_request: layout.normalizedRequestPath,\n assembly_plan: layout.assemblyPlanPath,\n build_plan: layout.buildPlanPath,\n flow_copy: flowArtifactPath,\n },\n next_actions: buildNextActions(layout),\n extra: {\n status: 'prepared_local_process_auto_build_run',\n request_id: normalized.request_id,\n source_input_count: normalized.source_inputs.length,\n },\n };\n}\n\nfunction buildReport(\n normalized: NormalizedProcessAutoBuildRequest,\n layout: ProcessAutoBuildLayout,\n flowArtifactPath: string,\n now: Date,\n): ProcessAutoBuildReport {\n return {\n schema_version: 1,\n generated_at_utc: now.toISOString(),\n status: 'prepared_local_process_auto_build_run',\n request_path: normalized.request_path,\n request_id: normalized.request_id,\n run_id: normalized.run_id,\n run_root: normalized.run_root,\n operation: normalized.operation,\n flow: {\n source_path: normalized.flow_file,\n artifact_path: flowArtifactPath,\n wrapper: normalized.flow_summary.wrapper,\n uuid: normalized.flow_summary.uuid,\n version: normalized.flow_summary.version,\n base_name: normalized.flow_summary.base_name,\n },\n source_input_count: normalized.source_inputs.length,\n stage_count: PROCESS_AUTO_BUILD_STAGES.length,\n files: {\n request_snapshot: layout.requestSnapshotPath,\n normalized_request: layout.normalizedRequestPath,\n source_policy: layout.sourcePolicyPath,\n flow_summary: layout.flowSummaryPath,\n input_manifest: layout.inputManifestPath,\n build_plan: layout.buildPlanPath,\n assembly_plan: layout.assemblyPlanPath,\n lineage_manifest: layout.lineageManifestPath,\n invocation_index: layout.invocationIndexPath,\n run_manifest: layout.runManifestPath,\n state: layout.statePath,\n handoff_summary: layout.handoffSummaryPath,\n report: layout.reportPath,\n },\n next_actions: buildNextActions(layout),\n };\n}\n\nexport function normalizeProcessAutoBuildRequest(\n input: unknown,\n options: {\n inputPath: string;\n outDir?: string | null;\n now?: Date;\n requestIdOverride?: string;\n runIdOverride?: string;\n },\n): NormalizedProcessAutoBuildRequest {\n const request = requiredRequestObject(input);\n const requestDir = path.dirname(path.resolve(options.inputPath));\n const operation = normalizeOperation(request.operation);\n const flowFile = path.resolve(requestDir, requiredRequestString(request, 'flow_file'));\n const flowPayload = readJsonInput(flowFile);\n const { flowDataset, wrapper } = extractFlowDatasetRoot(flowPayload);\n const flowSummary = extractFlowSummary(flowDataset, wrapper);\n const runId =\n nonEmptyString(options.runIdOverride) ??\n nonEmptyString(request.run_id) ??\n buildProcessAutoBuildRunId(flowFile, operation, flowSummary, options.now);\n const runRoot = resolveRunRoot(requestDir, options.outDir, request.workspace_run_root);\n const layout = buildLayout(runRoot, runId);\n\n return {\n schema_version: 1,\n request_path: path.resolve(options.inputPath),\n request_id:\n nonEmptyString(options.requestIdOverride) ??\n nonEmptyString(request.request_id) ??\n `pff-${runId}`,\n flow_file: flowFile,\n flow_summary: flowSummary,\n flow_dataset: flowDataset,\n operation,\n run_id: runId,\n run_root: runRoot,\n source_inputs: normalizeSourceInputs(\n request.source_inputs,\n requestDir,\n layout.evidenceIncomingDir,\n ),\n source_policy: normalizeSourcePolicy(request.source_policy),\n };\n}\n\nexport async function runProcessAutoBuild(\n options: RunProcessAutoBuildOptions,\n): Promise<ProcessAutoBuildReport> {\n const input = options.inputValue ?? readJsonInput(options.inputPath);\n const now = options.now ?? new Date();\n const normalized = normalizeProcessAutoBuildRequest(input, {\n inputPath: options.inputPath,\n outDir: options.outDir,\n now,\n requestIdOverride: options.requestIdOverride,\n runIdOverride: options.runIdOverride,\n });\n const layout = buildLayout(normalized.run_root, normalized.run_id);\n const flowArtifactPath = path.join(layout.inputsDir, path.basename(normalized.flow_file));\n\n ensureEmptyRunRoot(layout.runRoot);\n ensureProcessAutoBuildLayout(layout);\n\n copyArtifactFile(normalized.flow_file, flowArtifactPath, 'PROCESS_AUTO_BUILD_FLOW_COPY_FAILED');\n normalized.source_inputs.forEach((source) => {\n copyArtifactFile(\n source.source_path,\n source.artifact_path,\n 'PROCESS_AUTO_BUILD_SOURCE_COPY_FAILED',\n );\n });\n\n const request = requiredRequestObject(input);\n writeJsonArtifact(layout.requestSnapshotPath, request);\n writeJsonArtifact(layout.normalizedRequestPath, normalized);\n writeJsonArtifact(layout.sourcePolicyPath, normalized.source_policy);\n writeJsonArtifact(layout.flowSummaryPath, normalized.flow_summary);\n writeJsonArtifact(layout.inputManifestPath, {\n run_id: normalized.run_id,\n flow_path: normalized.flow_file,\n flow_artifact_path: flowArtifactPath,\n operation: normalized.operation,\n build_plan_path: layout.buildPlanPath,\n });\n writeJsonArtifact(\n layout.buildPlanPath,\n buildInitialProcessBuildPlan(normalized, flowArtifactPath),\n );\n writeJsonArtifact(layout.assemblyPlanPath, buildAssemblyPlan(layout.runRoot));\n writeJsonArtifact(layout.lineageManifestPath, buildLineageManifest(normalized));\n writeJsonArtifact(\n layout.invocationIndexPath,\n buildInvocationIndex(normalized, options, layout.reportPath, now),\n );\n writeJsonArtifact(\n layout.runManifestPath,\n buildRunManifest({\n layout,\n command: options.outDir\n ? ['process', 'auto-build', '--input', options.inputPath, '--out-dir', options.outDir]\n : ['process', 'auto-build', '--input', options.inputPath],\n cwd: options.cwd,\n createdAt: now,\n }),\n );\n\n const state = buildInitialState(normalized, flowArtifactPath, now);\n await withStateFileLock(\n layout.statePath,\n { reason: 'process-auto-build.initial_state', now },\n () => writeJsonArtifact(layout.statePath, state),\n );\n\n const handoff = buildAgentHandoffSummary(normalized, layout, flowArtifactPath, now);\n writeJsonArtifact(layout.handoffSummaryPath, handoff);\n writeLatestRunId(layout, normalized.run_id);\n\n const report = buildReport(normalized, layout, flowArtifactPath, now);\n writeJsonArtifact(layout.reportPath, report);\n return report;\n}\n\n// Exposed for deterministic unit coverage of process auto-build normalization and scaffold helpers.\nexport const __testInternals = {\n PROCESS_AUTO_BUILD_STAGES,\n extractText,\n normalizeOperation,\n normalizeSourcePolicy,\n extractFlowDatasetRoot,\n extractFlowSummary,\n buildProcessAutoBuildRunId,\n buildLayout,\n buildAssemblyPlan,\n buildInitialProcessBuildPlan,\n buildLineageManifest,\n buildInvocationIndex,\n buildInitialState,\n buildAgentHandoffSummary,\n buildReport,\n};\n"]}