@tiangong-lca/cli 0.0.7 → 0.0.8

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 (52) hide show
  1. package/README.md +83 -2
  2. package/dist/src/cli.js +1327 -40
  3. package/dist/src/cli.js.map +1 -1
  4. package/dist/src/lib/dataset-author.js +100 -0
  5. package/dist/src/lib/dataset-author.js.map +1 -0
  6. package/dist/src/lib/dataset-bilingual.js +545 -0
  7. package/dist/src/lib/dataset-bilingual.js.map +1 -0
  8. package/dist/src/lib/dataset-contract.js +350 -0
  9. package/dist/src/lib/dataset-contract.js.map +1 -0
  10. package/dist/src/lib/dataset-evidence-search.js +636 -0
  11. package/dist/src/lib/dataset-evidence-search.js.map +1 -0
  12. package/dist/src/lib/dataset-import-lca.js +171 -0
  13. package/dist/src/lib/dataset-import-lca.js.map +1 -0
  14. package/dist/src/lib/dataset-remote-refresh.js +166 -0
  15. package/dist/src/lib/dataset-remote-refresh.js.map +1 -0
  16. package/dist/src/lib/dataset-remote-verify.js +543 -0
  17. package/dist/src/lib/dataset-remote-verify.js.map +1 -0
  18. package/dist/src/lib/dataset-validate.js +63 -7
  19. package/dist/src/lib/dataset-validate.js.map +1 -1
  20. package/dist/src/lib/flow-payload-validation.js +51 -0
  21. package/dist/src/lib/flow-payload-validation.js.map +1 -0
  22. package/dist/src/lib/flow-publish-reviewed-data.js +16 -0
  23. package/dist/src/lib/flow-publish-reviewed-data.js.map +1 -1
  24. package/dist/src/lib/flow-publish-version.js +182 -12
  25. package/dist/src/lib/flow-publish-version.js.map +1 -1
  26. package/dist/src/lib/identity-preflight.js +1021 -0
  27. package/dist/src/lib/identity-preflight.js.map +1 -0
  28. package/dist/src/lib/process-auto-build.js +147 -0
  29. package/dist/src/lib/process-auto-build.js.map +1 -1
  30. package/dist/src/lib/process-dedup-review.js +51 -0
  31. package/dist/src/lib/process-dedup-review.js.map +1 -1
  32. package/dist/src/lib/process-flow-build-plan.js +1071 -0
  33. package/dist/src/lib/process-flow-build-plan.js.map +1 -0
  34. package/dist/src/lib/process-payload-validation.js +14 -7
  35. package/dist/src/lib/process-payload-validation.js.map +1 -1
  36. package/dist/src/lib/process-publish-build.js +122 -4
  37. package/dist/src/lib/process-publish-build.js.map +1 -1
  38. package/dist/src/lib/process-refresh-references.js +19 -10
  39. package/dist/src/lib/process-refresh-references.js.map +1 -1
  40. package/dist/src/lib/process-required-fields.js +810 -0
  41. package/dist/src/lib/process-required-fields.js.map +1 -0
  42. package/dist/src/lib/process-save-draft-run.js +4 -1
  43. package/dist/src/lib/process-save-draft-run.js.map +1 -1
  44. package/dist/src/lib/publish.js +100 -0
  45. package/dist/src/lib/publish.js.map +1 -1
  46. package/dist/src/lib/review-flow.js +58 -0
  47. package/dist/src/lib/review-flow.js.map +1 -1
  48. package/dist/src/lib/review-process.js +150 -2
  49. package/dist/src/lib/review-process.js.map +1 -1
  50. package/dist/src/lib/runtime-rulesets.js +283 -0
  51. package/dist/src/lib/runtime-rulesets.js.map +1 -0
  52. package/package.json +2 -2
@@ -1 +1 @@
1
- {"version":3,"file":"process-publish-build.js","sourceRoot":"","sources":["../../../src/lib/process-publish-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 { normalizePublishRequest } from './publish.js';\nimport { withStateFileLock } from './state-lock.js';\n\ntype JsonRecord = Record<string, unknown>;\n\ntype DatasetOrigin = 'exports' | 'state';\n\nexport type ProcessPublishBuildLayout = {\n runId: string;\n runRoot: string;\n collectionDir: string;\n cacheDir: string;\n manifestsDir: string;\n reportsDir: string;\n processExportsDir: string;\n sourceExportsDir: string;\n publishStageDir: string;\n statePath: string;\n handoffSummaryPath: string;\n runManifestPath: string;\n invocationIndexPath: string;\n publishBundlePath: string;\n publishRequestPath: string;\n publishIntentPath: string;\n reportPath: string;\n};\n\nexport type ProcessPublishBuildReport = {\n schema_version: 1;\n generated_at_utc: string;\n status: 'prepared_local_process_publish_bundle';\n run_id: string;\n run_root: string;\n request_id: string | null;\n state_summary: {\n build_status: string | null;\n next_stage: string | null;\n stop_after: string | null;\n };\n dataset_origins: {\n processes: DatasetOrigin;\n sources: DatasetOrigin;\n };\n counts: {\n processes: number;\n sources: number;\n relations: number;\n };\n publish_defaults: {\n commit: boolean;\n publish_lifecyclemodels: boolean;\n publish_processes: boolean;\n publish_sources: boolean;\n publish_relations: boolean;\n publish_process_build_runs: boolean;\n relation_mode: 'local_manifest_only';\n };\n files: {\n state: string;\n handoff_summary: string;\n run_manifest: string;\n invocation_index: string;\n publish_bundle: string;\n publish_request: string;\n publish_intent: string;\n report: string;\n };\n next_actions: string[];\n};\n\nexport type RunProcessPublishBuildOptions = {\n runId?: string;\n runDir?: string | null;\n now?: Date;\n cwd?: string;\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 copyJson<T>(value: T): T {\n return JSON.parse(JSON.stringify(value)) as T;\n}\n\nfunction readRequiredJsonObject(\n filePath: string,\n missingCode: string,\n invalidCode: string,\n label: string,\n): JsonRecord {\n if (!existsSync(filePath)) {\n throw new CliError(`Required process publish artifact not found: ${filePath}`, {\n code: missingCode,\n exitCode: 2,\n details: { label, filePath },\n });\n }\n\n const value = readJsonArtifact(filePath);\n if (!isRecord(value)) {\n throw new CliError(`Expected process publish artifact JSON object: ${filePath}`, {\n code: invalidCode,\n exitCode: 2,\n details: { label, filePath },\n });\n }\n\n return value;\n}\n\nfunction buildLayout(runRoot: string, runId: string): ProcessPublishBuildLayout {\n return {\n runId,\n runRoot,\n collectionDir: path.dirname(runRoot),\n cacheDir: path.join(runRoot, 'cache'),\n manifestsDir: path.join(runRoot, 'manifests'),\n reportsDir: path.join(runRoot, 'reports'),\n processExportsDir: path.join(runRoot, 'exports', 'processes'),\n sourceExportsDir: path.join(runRoot, 'exports', 'sources'),\n publishStageDir: path.join(runRoot, 'stage_outputs', '10_publish'),\n statePath: path.join(runRoot, 'cache', 'process_from_flow_state.json'),\n handoffSummaryPath: path.join(runRoot, 'cache', 'agent_handoff_summary.json'),\n runManifestPath: path.join(runRoot, 'manifests', 'run-manifest.json'),\n invocationIndexPath: path.join(runRoot, 'manifests', 'invocation-index.json'),\n publishBundlePath: path.join(runRoot, 'stage_outputs', '10_publish', 'publish-bundle.json'),\n publishRequestPath: path.join(runRoot, 'stage_outputs', '10_publish', 'publish-request.json'),\n publishIntentPath: path.join(runRoot, 'stage_outputs', '10_publish', 'publish-intent.json'),\n reportPath: path.join(runRoot, 'reports', 'process-publish-build-report.json'),\n };\n}\n\nfunction resolveLayout(options: RunProcessPublishBuildOptions): ProcessPublishBuildLayout {\n const runId = nonEmptyString(options.runId);\n const runDir = nonEmptyString(options.runDir);\n\n if (!runDir) {\n throw new CliError('Missing required --run-dir for process publish-build.', {\n code: 'PROCESS_PUBLISH_RUN_REQUIRED',\n exitCode: 2,\n });\n }\n\n const runRoot = path.resolve(runDir);\n const derivedRunId = path.basename(runRoot);\n\n if (runDir && runId && derivedRunId !== runId) {\n throw new CliError(\n `process publish-build run-id does not match run-dir basename: ${runId} !== ${derivedRunId}`,\n {\n code: 'PROCESS_PUBLISH_RUN_ID_MISMATCH',\n exitCode: 2,\n },\n );\n }\n\n return buildLayout(runRoot, runId ?? derivedRunId);\n}\n\nfunction ensureRunRootExists(layout: ProcessPublishBuildLayout): void {\n if (!existsSync(layout.runRoot)) {\n throw new CliError(`process publish-build run root not found: ${layout.runRoot}`, {\n code: 'PROCESS_PUBLISH_RUN_NOT_FOUND',\n exitCode: 2,\n });\n }\n}\n\nfunction readRequiredRunManifest(layout: ProcessPublishBuildLayout): JsonRecord {\n const manifest = readRequiredJsonObject(\n layout.runManifestPath,\n 'PROCESS_PUBLISH_RUN_MANIFEST_MISSING',\n 'PROCESS_PUBLISH_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 `process publish-build run manifest runId mismatch: ${layout.runManifestPath}`,\n {\n code: 'PROCESS_PUBLISH_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 readRequiredState(layout: ProcessPublishBuildLayout): JsonRecord {\n const state = readRequiredJsonObject(\n layout.statePath,\n 'PROCESS_PUBLISH_STATE_MISSING',\n 'PROCESS_PUBLISH_STATE_INVALID',\n 'state',\n );\n\n const stateRunId = nonEmptyString(state.run_id);\n if (stateRunId && stateRunId !== layout.runId) {\n throw new CliError(`process publish-build state run_id mismatch: ${layout.statePath}`, {\n code: 'PROCESS_PUBLISH_STATE_RUN_ID_MISMATCH',\n exitCode: 2,\n details: {\n expected: layout.runId,\n actual: stateRunId,\n },\n });\n }\n\n return state;\n}\n\nfunction readRequiredHandoffSummary(layout: ProcessPublishBuildLayout): JsonRecord {\n return readRequiredJsonObject(\n layout.handoffSummaryPath,\n 'PROCESS_PUBLISH_HANDOFF_MISSING',\n 'PROCESS_PUBLISH_HANDOFF_INVALID',\n 'handoff-summary',\n );\n}\n\nfunction readInvocationIndex(layout: ProcessPublishBuildLayout): JsonRecord {\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 process publish invocation index JSON object: ${layout.invocationIndexPath}`,\n {\n code: 'PROCESS_PUBLISH_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 process publish invocation index to contain an invocations array: ${layout.invocationIndexPath}`,\n {\n code: 'PROCESS_PUBLISH_INVOCATION_INDEX_INVALID',\n exitCode: 2,\n },\n );\n }\n\n return value;\n}\n\nfunction buildStateSummary(state: JsonRecord): ProcessPublishBuildReport['state_summary'] {\n return {\n build_status: nonEmptyString(state.build_status),\n next_stage: nonEmptyString(state.next_stage),\n stop_after: nonEmptyString(state.stop_after),\n };\n}\n\nfunction readDatasetArrayFromState(\n state: JsonRecord,\n key: 'process_datasets' | 'source_datasets',\n): JsonRecord[] {\n if (state[key] === undefined) {\n return [];\n }\n\n if (!Array.isArray(state[key])) {\n throw new CliError(`process publish-build expected state.${key} to be an array.`, {\n code: 'PROCESS_PUBLISH_STATE_DATASETS_INVALID',\n exitCode: 2,\n details: { key },\n });\n }\n\n return state[key].map((item, index) => {\n if (!isRecord(item)) {\n throw new CliError(`process publish-build expected state.${key}[${index}] to be an object.`, {\n code: 'PROCESS_PUBLISH_STATE_DATASETS_INVALID',\n exitCode: 2,\n details: { key, index },\n });\n }\n\n return item;\n });\n}\n\nfunction readDatasetDir(dirPath: string, label: string): JsonRecord[] {\n if (!existsSync(dirPath)) {\n return [];\n }\n\n return readdirSync(dirPath)\n .filter((entry) => entry.endsWith('.json'))\n .sort()\n .map((entry) => {\n const filePath = path.join(dirPath, entry);\n const value = readJsonArtifact(filePath);\n if (!isRecord(value)) {\n throw new CliError(`Expected ${label} export JSON object: ${filePath}`, {\n code: 'PROCESS_PUBLISH_EXPORT_INVALID',\n exitCode: 2,\n details: { label, filePath },\n });\n }\n\n return value;\n });\n}\n\nfunction collectCanonicalDatasets(\n layout: ProcessPublishBuildLayout,\n state: JsonRecord,\n): {\n processes: JsonRecord[];\n processOrigin: DatasetOrigin;\n sources: JsonRecord[];\n sourceOrigin: DatasetOrigin;\n} {\n const processExports = readDatasetDir(layout.processExportsDir, 'process');\n const sourceExports = readDatasetDir(layout.sourceExportsDir, 'source');\n\n const stateProcesses = readDatasetArrayFromState(state, 'process_datasets');\n const stateSources = readDatasetArrayFromState(state, 'source_datasets');\n\n return {\n processes: processExports.length > 0 ? processExports : stateProcesses,\n processOrigin: processExports.length > 0 ? 'exports' : 'state',\n sources: sourceExports.length > 0 ? sourceExports : stateSources,\n sourceOrigin: sourceExports.length > 0 ? 'exports' : 'state',\n };\n}\n\nfunction updateStepMarkers(stepMarkers: unknown, completedAt: string): JsonRecord {\n const markers = isRecord(stepMarkers) ? { ...stepMarkers } : {};\n markers.publish_handoff_prepared = {\n status: 'completed',\n completed_at: completedAt,\n };\n return markers;\n}\n\nfunction buildUpdatedState(\n state: JsonRecord,\n layout: ProcessPublishBuildLayout,\n counts: ProcessPublishBuildReport['counts'],\n datasetOrigins: ProcessPublishBuildReport['dataset_origins'],\n now: Date,\n): JsonRecord {\n return {\n ...state,\n publish_build_requested_at: now.toISOString(),\n last_publish_build: {\n status: 'prepared_local_process_publish_bundle',\n prepared_at: now.toISOString(),\n publish_bundle_path: layout.publishBundlePath,\n publish_request_path: layout.publishRequestPath,\n publish_intent_path: layout.publishIntentPath,\n process_count: counts.processes,\n source_count: counts.sources,\n relation_count: counts.relations,\n dataset_origins: datasetOrigins,\n },\n step_markers: updateStepMarkers(state.step_markers, now.toISOString()),\n };\n}\n\nfunction buildInvocationIndex(\n layout: ProcessPublishBuildLayout,\n invocationIndex: JsonRecord,\n options: RunProcessPublishBuildOptions,\n now: Date,\n): JsonRecord {\n const priorInvocations = Array.isArray(invocationIndex.invocations)\n ? [...invocationIndex.invocations]\n : [];\n const command = ['process', 'publish-build'];\n\n if (options.runId) {\n command.push('--run-id', options.runId);\n }\n if (options.runDir) {\n command.push('--run-dir', options.runDir);\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 publish_request_path: layout.publishRequestPath,\n },\n ],\n };\n}\n\nfunction buildPublishBundle(\n layout: ProcessPublishBuildLayout,\n state: JsonRecord,\n runManifest: JsonRecord,\n processes: JsonRecord[],\n sources: JsonRecord[],\n counts: ProcessPublishBuildReport['counts'],\n datasetOrigins: ProcessPublishBuildReport['dataset_origins'],\n now: Date,\n): JsonRecord {\n return {\n generated_at_utc: now.toISOString(),\n run_id: layout.runId,\n run_root: layout.runRoot,\n request_id: nonEmptyString(state.request_id),\n status: 'prepared_local_process_publish_bundle',\n counts,\n dataset_origins: datasetOrigins,\n source_run: {\n build_status: nonEmptyString(state.build_status),\n next_stage: nonEmptyString(state.next_stage),\n stop_after: nonEmptyString(state.stop_after),\n run_manifest: copyJson(runManifest),\n },\n processes: copyJson(processes),\n sources: copyJson(sources),\n relations: [],\n };\n}\n\nfunction buildPublishRequest(): JsonRecord {\n return {\n inputs: {\n bundle_paths: ['./publish-bundle.json'],\n },\n publish: {\n commit: false,\n publish_lifecyclemodels: false,\n publish_processes: true,\n publish_sources: true,\n publish_relations: true,\n publish_process_build_runs: false,\n relation_mode: 'local_manifest_only',\n },\n out_dir: './publish-run',\n };\n}\n\nfunction buildPublishIntent(\n layout: ProcessPublishBuildLayout,\n counts: ProcessPublishBuildReport['counts'],\n): JsonRecord {\n return {\n ok: true,\n command: 'publish run',\n input_path: layout.publishRequestPath,\n run_id: layout.runId,\n run_root: layout.runRoot,\n status: 'prepared_local_process_publish_bundle',\n process_count: counts.processes,\n source_count: counts.sources,\n relation_count: counts.relations,\n };\n}\n\nfunction buildNextActions(layout: ProcessPublishBuildLayout): string[] {\n return [\n `inspect: ${layout.publishBundlePath}`,\n `inspect: ${layout.publishRequestPath}`,\n `run: tiangong-lca publish run --input ${layout.publishRequestPath}`,\n 'future: wire publish executors before remote commit mode is expected',\n ];\n}\n\nfunction stateArrayLength(value: unknown): number {\n return Array.isArray(value) ? value.length : 0;\n}\n\nfunction buildAgentHandoffSummary(\n layout: ProcessPublishBuildLayout,\n state: JsonRecord,\n counts: ProcessPublishBuildReport['counts'],\n now: Date,\n): JsonRecord {\n return {\n schema_version: 1,\n generated_at_utc: now.toISOString(),\n run_id: layout.runId,\n command: 'process publish-build',\n flow_path: nonEmptyString(state.flow_path),\n operation: nonEmptyString(state.operation),\n stop_after: nonEmptyString(state.stop_after),\n process_count: counts.processes,\n matched_exchange_count: stateArrayLength(state.matched_process_exchanges),\n process_dataset_count: counts.processes,\n source_dataset_count: counts.sources,\n remaining_placeholder_refs: stateArrayLength(state.placeholder_resolutions),\n placeholder_examples: [],\n publish_summary: {},\n artifacts: {\n state_path: layout.statePath,\n publish_bundle: layout.publishBundlePath,\n publish_request: layout.publishRequestPath,\n publish_intent: layout.publishIntentPath,\n process_update_report: null,\n flow_auto_build_manifest: null,\n publish_summary: null,\n timing_report: null,\n llm_cost_report: null,\n },\n next_actions: buildNextActions(layout),\n extra: {\n status: 'prepared_local_process_publish_bundle',\n request_id: nonEmptyString(state.request_id),\n },\n };\n}\n\nfunction buildReport(\n layout: ProcessPublishBuildLayout,\n state: JsonRecord,\n counts: ProcessPublishBuildReport['counts'],\n datasetOrigins: ProcessPublishBuildReport['dataset_origins'],\n publishDefaults: ProcessPublishBuildReport['publish_defaults'],\n now: Date,\n): ProcessPublishBuildReport {\n return {\n schema_version: 1,\n generated_at_utc: now.toISOString(),\n status: 'prepared_local_process_publish_bundle',\n run_id: layout.runId,\n run_root: layout.runRoot,\n request_id: nonEmptyString(state.request_id),\n state_summary: buildStateSummary(state),\n dataset_origins: datasetOrigins,\n counts,\n publish_defaults: publishDefaults,\n files: {\n state: layout.statePath,\n handoff_summary: layout.handoffSummaryPath,\n run_manifest: layout.runManifestPath,\n invocation_index: layout.invocationIndexPath,\n publish_bundle: layout.publishBundlePath,\n publish_request: layout.publishRequestPath,\n publish_intent: layout.publishIntentPath,\n report: layout.reportPath,\n },\n next_actions: buildNextActions(layout),\n };\n}\n\nexport async function runProcessPublishBuild(\n options: RunProcessPublishBuildOptions,\n): Promise<ProcessPublishBuildReport> {\n const now = options.now ?? new Date();\n const layout = resolveLayout(options);\n ensureRunRootExists(layout);\n const runManifest = readRequiredRunManifest(layout);\n readRequiredHandoffSummary(layout);\n const invocationIndex = readInvocationIndex(layout);\n\n return await withStateFileLock(\n layout.statePath,\n { reason: 'process-publish-build.prepare_publish', now },\n () => {\n const state = readRequiredState(layout);\n const datasets = collectCanonicalDatasets(layout, state);\n\n if (datasets.processes.length === 0) {\n throw new CliError(\n 'process publish-build run does not contain any process datasets to publish.',\n {\n code: 'PROCESS_PUBLISH_PROCESSES_MISSING',\n exitCode: 2,\n },\n );\n }\n\n const counts: ProcessPublishBuildReport['counts'] = {\n processes: datasets.processes.length,\n sources: datasets.sources.length,\n relations: 0,\n };\n const datasetOrigins: ProcessPublishBuildReport['dataset_origins'] = {\n processes: datasets.processOrigin,\n sources: datasets.sourceOrigin,\n };\n const publishBundle = buildPublishBundle(\n layout,\n state,\n runManifest,\n datasets.processes,\n datasets.sources,\n counts,\n datasetOrigins,\n now,\n );\n const publishRequest = buildPublishRequest();\n const normalizedPublishRequest = normalizePublishRequest(publishRequest, {\n requestPath: layout.publishRequestPath,\n now,\n });\n const publishIntent = buildPublishIntent(layout, counts);\n const updatedState = buildUpdatedState(state, layout, counts, datasetOrigins, now);\n const updatedInvocationIndex = buildInvocationIndex(layout, invocationIndex, options, now);\n const handoffSummary = buildAgentHandoffSummary(layout, updatedState, counts, now);\n const report = buildReport(\n layout,\n updatedState,\n counts,\n datasetOrigins,\n {\n commit: normalizedPublishRequest.publish.commit,\n publish_lifecyclemodels: normalizedPublishRequest.publish.publish_lifecyclemodels,\n publish_processes: normalizedPublishRequest.publish.publish_processes,\n publish_sources: normalizedPublishRequest.publish.publish_sources,\n publish_relations: normalizedPublishRequest.publish.publish_relations,\n publish_process_build_runs: normalizedPublishRequest.publish.publish_process_build_runs,\n relation_mode: normalizedPublishRequest.publish.relation_mode,\n },\n now,\n );\n\n writeJsonArtifact(layout.statePath, updatedState);\n writeJsonArtifact(layout.invocationIndexPath, updatedInvocationIndex);\n writeJsonArtifact(layout.publishBundlePath, publishBundle);\n writeJsonArtifact(layout.publishRequestPath, publishRequest);\n writeJsonArtifact(layout.publishIntentPath, publishIntent);\n writeJsonArtifact(layout.handoffSummaryPath, handoffSummary);\n writeJsonArtifact(layout.reportPath, report);\n\n return report;\n },\n );\n}\n\nexport const __testInternals = {\n buildLayout,\n resolveLayout,\n buildStateSummary,\n readDatasetArrayFromState,\n collectCanonicalDatasets,\n buildPublishRequest,\n buildPublishIntent,\n buildUpdatedState,\n buildInvocationIndex,\n buildNextActions,\n buildReport,\n};\n"]}
1
+ {"version":3,"file":"process-publish-build.js","sourceRoot":"","sources":["../../../src/lib/process-publish-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 summarizeProcessPayloadValidation,\n validateProcessPayload,\n type ProcessPayloadValidationResult,\n} from './process-payload-validation.js';\nimport { normalizePublishRequest } from './publish.js';\nimport { getRuntimeRuleset, resolveRuntimeRuleId } from './runtime-rulesets.js';\nimport { withStateFileLock } from './state-lock.js';\n\ntype JsonRecord = Record<string, unknown>;\n\ntype DatasetOrigin = 'exports' | 'state';\ntype GateSeverity = 'info' | 'warning' | 'blocker';\n\nconst PROCESS_PUBLISH_RULESET_ID = 'process-publish/default';\nconst PROCESS_PUBLISH_RULESET_VERSION = '1';\n\ntype ProcessGateFinding = {\n code: string;\n severity: GateSeverity;\n methodology_rule_id: string | null;\n message: string;\n path: string;\n dataset_index: number;\n dataset_id: string | null;\n dataset_version: string | null;\n};\n\nexport type ProcessPublishBuildLayout = {\n runId: string;\n runRoot: string;\n collectionDir: string;\n cacheDir: string;\n manifestsDir: string;\n reportsDir: string;\n processExportsDir: string;\n sourceExportsDir: string;\n publishStageDir: string;\n statePath: string;\n handoffSummaryPath: string;\n runManifestPath: string;\n invocationIndexPath: string;\n publishBundlePath: string;\n publishRequestPath: string;\n publishIntentPath: string;\n processSchemaGatePath: string;\n reportPath: string;\n};\n\nexport type ProcessPublishSchemaGateReport = {\n schema_version: 1;\n generated_at_utc: string;\n status: 'passed' | 'blocked';\n ruleset_id: string;\n ruleset_version: string;\n ruleset_source_version: string;\n ruleset_rule_ids: string[];\n validator: string;\n counts: {\n total: number;\n valid: number;\n invalid: number;\n };\n findings: ProcessGateFinding[];\n blockers: ProcessGateFinding[];\n next_action: 'write_publish_bundle' | 'fix_process_payloads';\n processes: Array<{\n index: number;\n id: string | null;\n version: string | null;\n ok: boolean;\n issue_count: number;\n issues: ProcessPayloadValidationResult['issues'];\n }>;\n};\n\nexport type ProcessPublishBuildReport = {\n schema_version: 1;\n generated_at_utc: string;\n status: 'prepared_local_process_publish_bundle';\n run_id: string;\n run_root: string;\n request_id: string | null;\n state_summary: {\n build_status: string | null;\n next_stage: string | null;\n stop_after: string | null;\n };\n dataset_origins: {\n processes: DatasetOrigin;\n sources: DatasetOrigin;\n };\n counts: {\n processes: number;\n sources: number;\n relations: number;\n };\n publish_defaults: {\n commit: boolean;\n publish_lifecyclemodels: boolean;\n publish_processes: boolean;\n publish_sources: boolean;\n publish_relations: boolean;\n publish_process_build_runs: boolean;\n relation_mode: 'local_manifest_only';\n };\n files: {\n state: string;\n handoff_summary: string;\n run_manifest: string;\n invocation_index: string;\n publish_bundle: string;\n publish_request: string;\n publish_intent: string;\n process_schema_gate: string;\n report: string;\n };\n next_actions: string[];\n};\n\nexport type RunProcessPublishBuildOptions = {\n runId?: string;\n runDir?: string | null;\n now?: Date;\n cwd?: string;\n validateProcessPayloadImpl?: (payload: JsonRecord) => ProcessPayloadValidationResult;\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 copyJson<T>(value: T): T {\n return JSON.parse(JSON.stringify(value)) as T;\n}\n\nfunction readRequiredJsonObject(\n filePath: string,\n missingCode: string,\n invalidCode: string,\n label: string,\n): JsonRecord {\n if (!existsSync(filePath)) {\n throw new CliError(`Required process publish artifact not found: ${filePath}`, {\n code: missingCode,\n exitCode: 2,\n details: { label, filePath },\n });\n }\n\n const value = readJsonArtifact(filePath);\n if (!isRecord(value)) {\n throw new CliError(`Expected process publish artifact JSON object: ${filePath}`, {\n code: invalidCode,\n exitCode: 2,\n details: { label, filePath },\n });\n }\n\n return value;\n}\n\nfunction buildLayout(runRoot: string, runId: string): ProcessPublishBuildLayout {\n return {\n runId,\n runRoot,\n collectionDir: path.dirname(runRoot),\n cacheDir: path.join(runRoot, 'cache'),\n manifestsDir: path.join(runRoot, 'manifests'),\n reportsDir: path.join(runRoot, 'reports'),\n processExportsDir: path.join(runRoot, 'exports', 'processes'),\n sourceExportsDir: path.join(runRoot, 'exports', 'sources'),\n publishStageDir: path.join(runRoot, 'stage_outputs', '10_publish'),\n statePath: path.join(runRoot, 'cache', 'process_from_flow_state.json'),\n handoffSummaryPath: path.join(runRoot, 'cache', 'agent_handoff_summary.json'),\n runManifestPath: path.join(runRoot, 'manifests', 'run-manifest.json'),\n invocationIndexPath: path.join(runRoot, 'manifests', 'invocation-index.json'),\n publishBundlePath: path.join(runRoot, 'stage_outputs', '10_publish', 'publish-bundle.json'),\n publishRequestPath: path.join(runRoot, 'stage_outputs', '10_publish', 'publish-request.json'),\n publishIntentPath: path.join(runRoot, 'stage_outputs', '10_publish', 'publish-intent.json'),\n processSchemaGatePath: path.join(runRoot, 'reports', 'process-publish-schema-gate.json'),\n reportPath: path.join(runRoot, 'reports', 'process-publish-build-report.json'),\n };\n}\n\nfunction resolveLayout(options: RunProcessPublishBuildOptions): ProcessPublishBuildLayout {\n const runId = nonEmptyString(options.runId);\n const runDir = nonEmptyString(options.runDir);\n\n if (!runDir) {\n throw new CliError('Missing required --run-dir for process publish-build.', {\n code: 'PROCESS_PUBLISH_RUN_REQUIRED',\n exitCode: 2,\n });\n }\n\n const runRoot = path.resolve(runDir);\n const derivedRunId = path.basename(runRoot);\n\n if (runDir && runId && derivedRunId !== runId) {\n throw new CliError(\n `process publish-build run-id does not match run-dir basename: ${runId} !== ${derivedRunId}`,\n {\n code: 'PROCESS_PUBLISH_RUN_ID_MISMATCH',\n exitCode: 2,\n },\n );\n }\n\n return buildLayout(runRoot, runId ?? derivedRunId);\n}\n\nfunction ensureRunRootExists(layout: ProcessPublishBuildLayout): void {\n if (!existsSync(layout.runRoot)) {\n throw new CliError(`process publish-build run root not found: ${layout.runRoot}`, {\n code: 'PROCESS_PUBLISH_RUN_NOT_FOUND',\n exitCode: 2,\n });\n }\n}\n\nfunction readRequiredRunManifest(layout: ProcessPublishBuildLayout): JsonRecord {\n const manifest = readRequiredJsonObject(\n layout.runManifestPath,\n 'PROCESS_PUBLISH_RUN_MANIFEST_MISSING',\n 'PROCESS_PUBLISH_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 `process publish-build run manifest runId mismatch: ${layout.runManifestPath}`,\n {\n code: 'PROCESS_PUBLISH_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 readRequiredState(layout: ProcessPublishBuildLayout): JsonRecord {\n const state = readRequiredJsonObject(\n layout.statePath,\n 'PROCESS_PUBLISH_STATE_MISSING',\n 'PROCESS_PUBLISH_STATE_INVALID',\n 'state',\n );\n\n const stateRunId = nonEmptyString(state.run_id);\n if (stateRunId && stateRunId !== layout.runId) {\n throw new CliError(`process publish-build state run_id mismatch: ${layout.statePath}`, {\n code: 'PROCESS_PUBLISH_STATE_RUN_ID_MISMATCH',\n exitCode: 2,\n details: {\n expected: layout.runId,\n actual: stateRunId,\n },\n });\n }\n\n return state;\n}\n\nfunction readRequiredHandoffSummary(layout: ProcessPublishBuildLayout): JsonRecord {\n return readRequiredJsonObject(\n layout.handoffSummaryPath,\n 'PROCESS_PUBLISH_HANDOFF_MISSING',\n 'PROCESS_PUBLISH_HANDOFF_INVALID',\n 'handoff-summary',\n );\n}\n\nfunction readInvocationIndex(layout: ProcessPublishBuildLayout): JsonRecord {\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 process publish invocation index JSON object: ${layout.invocationIndexPath}`,\n {\n code: 'PROCESS_PUBLISH_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 process publish invocation index to contain an invocations array: ${layout.invocationIndexPath}`,\n {\n code: 'PROCESS_PUBLISH_INVOCATION_INDEX_INVALID',\n exitCode: 2,\n },\n );\n }\n\n return value;\n}\n\nfunction buildStateSummary(state: JsonRecord): ProcessPublishBuildReport['state_summary'] {\n return {\n build_status: nonEmptyString(state.build_status),\n next_stage: nonEmptyString(state.next_stage),\n stop_after: nonEmptyString(state.stop_after),\n };\n}\n\nfunction readDatasetArrayFromState(\n state: JsonRecord,\n key: 'process_datasets' | 'source_datasets',\n): JsonRecord[] {\n if (state[key] === undefined) {\n return [];\n }\n\n if (!Array.isArray(state[key])) {\n throw new CliError(`process publish-build expected state.${key} to be an array.`, {\n code: 'PROCESS_PUBLISH_STATE_DATASETS_INVALID',\n exitCode: 2,\n details: { key },\n });\n }\n\n return state[key].map((item, index) => {\n if (!isRecord(item)) {\n throw new CliError(`process publish-build expected state.${key}[${index}] to be an object.`, {\n code: 'PROCESS_PUBLISH_STATE_DATASETS_INVALID',\n exitCode: 2,\n details: { key, index },\n });\n }\n\n return item;\n });\n}\n\nfunction readDatasetDir(dirPath: string, label: string): JsonRecord[] {\n if (!existsSync(dirPath)) {\n return [];\n }\n\n return readdirSync(dirPath)\n .filter((entry) => entry.endsWith('.json'))\n .sort()\n .map((entry) => {\n const filePath = path.join(dirPath, entry);\n const value = readJsonArtifact(filePath);\n if (!isRecord(value)) {\n throw new CliError(`Expected ${label} export JSON object: ${filePath}`, {\n code: 'PROCESS_PUBLISH_EXPORT_INVALID',\n exitCode: 2,\n details: { label, filePath },\n });\n }\n\n return value;\n });\n}\n\nfunction collectCanonicalDatasets(\n layout: ProcessPublishBuildLayout,\n state: JsonRecord,\n): {\n processes: JsonRecord[];\n processOrigin: DatasetOrigin;\n sources: JsonRecord[];\n sourceOrigin: DatasetOrigin;\n} {\n const processExports = readDatasetDir(layout.processExportsDir, 'process');\n const sourceExports = readDatasetDir(layout.sourceExportsDir, 'source');\n\n const stateProcesses = readDatasetArrayFromState(state, 'process_datasets');\n const stateSources = readDatasetArrayFromState(state, 'source_datasets');\n\n return {\n processes: processExports.length > 0 ? processExports : stateProcesses,\n processOrigin: processExports.length > 0 ? 'exports' : 'state',\n sources: sourceExports.length > 0 ? sourceExports : stateSources,\n sourceOrigin: sourceExports.length > 0 ? 'exports' : 'state',\n };\n}\n\nfunction updateStepMarkers(stepMarkers: unknown, completedAt: string): JsonRecord {\n const markers = isRecord(stepMarkers) ? { ...stepMarkers } : {};\n markers.publish_handoff_prepared = {\n status: 'completed',\n completed_at: completedAt,\n };\n return markers;\n}\n\nfunction buildUpdatedState(\n state: JsonRecord,\n layout: ProcessPublishBuildLayout,\n counts: ProcessPublishBuildReport['counts'],\n datasetOrigins: ProcessPublishBuildReport['dataset_origins'],\n now: Date,\n): JsonRecord {\n return {\n ...state,\n publish_build_requested_at: now.toISOString(),\n last_publish_build: {\n status: 'prepared_local_process_publish_bundle',\n prepared_at: now.toISOString(),\n publish_bundle_path: layout.publishBundlePath,\n publish_request_path: layout.publishRequestPath,\n publish_intent_path: layout.publishIntentPath,\n process_count: counts.processes,\n source_count: counts.sources,\n relation_count: counts.relations,\n dataset_origins: datasetOrigins,\n },\n step_markers: updateStepMarkers(state.step_markers, now.toISOString()),\n };\n}\n\nfunction buildInvocationIndex(\n layout: ProcessPublishBuildLayout,\n invocationIndex: JsonRecord,\n options: RunProcessPublishBuildOptions,\n now: Date,\n): JsonRecord {\n const priorInvocations = Array.isArray(invocationIndex.invocations)\n ? [...invocationIndex.invocations]\n : [];\n const command = ['process', 'publish-build'];\n\n if (options.runId) {\n command.push('--run-id', options.runId);\n }\n if (options.runDir) {\n command.push('--run-dir', options.runDir);\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 publish_request_path: layout.publishRequestPath,\n },\n ],\n };\n}\n\nfunction buildPublishBundle(\n layout: ProcessPublishBuildLayout,\n state: JsonRecord,\n runManifest: JsonRecord,\n processes: JsonRecord[],\n sources: JsonRecord[],\n counts: ProcessPublishBuildReport['counts'],\n datasetOrigins: ProcessPublishBuildReport['dataset_origins'],\n schemaGate: ProcessPublishSchemaGateReport,\n now: Date,\n): JsonRecord {\n return {\n generated_at_utc: now.toISOString(),\n run_id: layout.runId,\n run_root: layout.runRoot,\n request_id: nonEmptyString(state.request_id),\n status: 'prepared_local_process_publish_bundle',\n counts,\n dataset_origins: datasetOrigins,\n process_schema_gate: {\n status: schemaGate.status,\n ruleset_id: schemaGate.ruleset_id,\n ruleset_version: schemaGate.ruleset_version,\n validator: schemaGate.validator,\n counts: schemaGate.counts,\n blocker_count: schemaGate.blockers.length,\n next_action: schemaGate.next_action,\n report_path: layout.processSchemaGatePath,\n },\n source_run: {\n build_status: nonEmptyString(state.build_status),\n next_stage: nonEmptyString(state.next_stage),\n stop_after: nonEmptyString(state.stop_after),\n run_manifest: copyJson(runManifest),\n },\n processes: copyJson(processes),\n sources: copyJson(sources),\n relations: [],\n };\n}\n\nfunction buildPublishRequest(): JsonRecord {\n return {\n inputs: {\n bundle_paths: ['./publish-bundle.json'],\n },\n publish: {\n commit: false,\n publish_lifecyclemodels: false,\n publish_processes: true,\n publish_sources: true,\n publish_relations: true,\n publish_process_build_runs: false,\n relation_mode: 'local_manifest_only',\n },\n out_dir: './publish-run',\n };\n}\n\nfunction buildPublishIntent(\n layout: ProcessPublishBuildLayout,\n counts: ProcessPublishBuildReport['counts'],\n): JsonRecord {\n return {\n ok: true,\n command: 'publish run',\n input_path: layout.publishRequestPath,\n run_id: layout.runId,\n run_root: layout.runRoot,\n status: 'prepared_local_process_publish_bundle',\n process_count: counts.processes,\n source_count: counts.sources,\n relation_count: counts.relations,\n };\n}\n\nfunction buildNextActions(layout: ProcessPublishBuildLayout): string[] {\n return [\n `inspect: ${layout.publishBundlePath}`,\n `inspect: ${layout.publishRequestPath}`,\n `run: tiangong-lca publish run --input ${layout.publishRequestPath}`,\n 'future: wire publish executors before remote commit mode is expected',\n ];\n}\n\nfunction stateArrayLength(value: unknown): number {\n return Array.isArray(value) ? value.length : 0;\n}\n\nfunction buildAgentHandoffSummary(\n layout: ProcessPublishBuildLayout,\n state: JsonRecord,\n counts: ProcessPublishBuildReport['counts'],\n schemaGate: ProcessPublishSchemaGateReport,\n now: Date,\n): JsonRecord {\n return {\n schema_version: 1,\n generated_at_utc: now.toISOString(),\n run_id: layout.runId,\n command: 'process publish-build',\n flow_path: nonEmptyString(state.flow_path),\n operation: nonEmptyString(state.operation),\n stop_after: nonEmptyString(state.stop_after),\n process_count: counts.processes,\n matched_exchange_count: stateArrayLength(state.matched_process_exchanges),\n process_dataset_count: counts.processes,\n source_dataset_count: counts.sources,\n remaining_placeholder_refs: stateArrayLength(state.placeholder_resolutions),\n placeholder_examples: [],\n publish_summary: {},\n artifacts: {\n state_path: layout.statePath,\n publish_bundle: layout.publishBundlePath,\n publish_request: layout.publishRequestPath,\n publish_intent: layout.publishIntentPath,\n process_schema_gate: layout.processSchemaGatePath,\n process_update_report: null,\n flow_auto_build_manifest: null,\n publish_summary: null,\n timing_report: null,\n llm_cost_report: null,\n },\n next_actions: buildNextActions(layout),\n extra: {\n status: 'prepared_local_process_publish_bundle',\n request_id: nonEmptyString(state.request_id),\n process_schema_gate: {\n status: schemaGate.status,\n ruleset_id: schemaGate.ruleset_id,\n ruleset_version: schemaGate.ruleset_version,\n counts: schemaGate.counts,\n blocker_count: schemaGate.blockers.length,\n next_action: schemaGate.next_action,\n },\n },\n };\n}\n\nfunction buildReport(\n layout: ProcessPublishBuildLayout,\n state: JsonRecord,\n counts: ProcessPublishBuildReport['counts'],\n datasetOrigins: ProcessPublishBuildReport['dataset_origins'],\n publishDefaults: ProcessPublishBuildReport['publish_defaults'],\n now: Date,\n): ProcessPublishBuildReport {\n return {\n schema_version: 1,\n generated_at_utc: now.toISOString(),\n status: 'prepared_local_process_publish_bundle',\n run_id: layout.runId,\n run_root: layout.runRoot,\n request_id: nonEmptyString(state.request_id),\n state_summary: buildStateSummary(state),\n dataset_origins: datasetOrigins,\n counts,\n publish_defaults: publishDefaults,\n files: {\n state: layout.statePath,\n handoff_summary: layout.handoffSummaryPath,\n run_manifest: layout.runManifestPath,\n invocation_index: layout.invocationIndexPath,\n publish_bundle: layout.publishBundlePath,\n publish_request: layout.publishRequestPath,\n publish_intent: layout.publishIntentPath,\n process_schema_gate: layout.processSchemaGatePath,\n report: layout.reportPath,\n },\n next_actions: buildNextActions(layout),\n };\n}\n\nfunction extractProcessSummary(process: JsonRecord): { id: string | null; version: string | null } {\n const root = isRecord(process.processDataSet) ? process.processDataSet : process;\n const processInformation = isRecord(root.processInformation) ? root.processInformation : {};\n const dataSetInformation = isRecord(processInformation.dataSetInformation)\n ? processInformation.dataSetInformation\n : {};\n const administrativeInformation = isRecord(root.administrativeInformation)\n ? root.administrativeInformation\n : {};\n const publicationAndOwnership = isRecord(administrativeInformation.publicationAndOwnership)\n ? administrativeInformation.publicationAndOwnership\n : {};\n\n return {\n id: nonEmptyString(dataSetInformation['common:UUID']),\n version: nonEmptyString(publicationAndOwnership['common:dataSetVersion']),\n };\n}\n\nfunction buildProcessSchemaGateReport(\n processes: JsonRecord[],\n options: {\n now: Date;\n validateProcessPayloadImpl?: (payload: JsonRecord) => ProcessPayloadValidationResult;\n },\n): ProcessPublishSchemaGateReport {\n const ruleset = getRuntimeRuleset('process-publish/default');\n const validate = options.validateProcessPayloadImpl ?? validateProcessPayload;\n const processResults = processes.map((process, index) => {\n const result = validate(process);\n const summary = extractProcessSummary(process);\n return {\n index,\n id: summary.id,\n version: summary.version,\n ok: result.ok,\n issue_count: result.issue_count,\n issues: result.issues,\n };\n });\n const invalid = processResults.filter((process) => !process.ok).length;\n const blockers = processResults.flatMap((process) =>\n process.issues.map((issue) => ({\n code: issue.code,\n severity: 'blocker' as const,\n methodology_rule_id: resolveRuntimeRuleId(ruleset.id, issue.code),\n message: issue.message,\n path: issue.path,\n dataset_index: process.index,\n dataset_id: process.id,\n dataset_version: process.version,\n })),\n );\n\n return {\n schema_version: 1,\n generated_at_utc: options.now.toISOString(),\n status: invalid > 0 ? 'blocked' : 'passed',\n ruleset_id: PROCESS_PUBLISH_RULESET_ID,\n ruleset_version: PROCESS_PUBLISH_RULESET_VERSION,\n ruleset_source_version: ruleset.source_version,\n ruleset_rule_ids: ruleset.rule_ids,\n validator: '@tiangong-lca/tidas-sdk/ProcessSchema',\n counts: {\n total: processResults.length,\n valid: processResults.length - invalid,\n invalid,\n },\n findings: blockers,\n blockers,\n next_action: invalid > 0 ? 'fix_process_payloads' : 'write_publish_bundle',\n processes: processResults,\n };\n}\n\nfunction assertProcessSchemaGatePassed(\n gate: ProcessPublishSchemaGateReport,\n layout: ProcessPublishBuildLayout,\n): void {\n if (gate.status === 'passed') {\n return;\n }\n\n const firstInvalid = gate.processes.find((process) => !process.ok);\n const detail = firstInvalid\n ? ` First invalid process index ${firstInvalid.index}: ${summarizeProcessPayloadValidation({\n ok: false,\n validator: gate.validator,\n issue_count: firstInvalid.issue_count,\n issues: firstInvalid.issues,\n })}`\n : '';\n\n throw new CliError(\n `process publish-build schema gate failed with ${gate.counts.invalid} invalid process dataset(s).${detail}`,\n {\n code: 'PROCESS_PUBLISH_SCHEMA_GATE_FAILED',\n exitCode: 2,\n details: {\n gate_report: layout.processSchemaGatePath,\n counts: gate.counts,\n },\n },\n );\n}\n\nexport async function runProcessPublishBuild(\n options: RunProcessPublishBuildOptions,\n): Promise<ProcessPublishBuildReport> {\n const now = options.now ?? new Date();\n const layout = resolveLayout(options);\n ensureRunRootExists(layout);\n const runManifest = readRequiredRunManifest(layout);\n readRequiredHandoffSummary(layout);\n const invocationIndex = readInvocationIndex(layout);\n\n return await withStateFileLock(\n layout.statePath,\n { reason: 'process-publish-build.prepare_publish', now },\n () => {\n const state = readRequiredState(layout);\n const datasets = collectCanonicalDatasets(layout, state);\n\n if (datasets.processes.length === 0) {\n throw new CliError(\n 'process publish-build run does not contain any process datasets to publish.',\n {\n code: 'PROCESS_PUBLISH_PROCESSES_MISSING',\n exitCode: 2,\n },\n );\n }\n\n const counts: ProcessPublishBuildReport['counts'] = {\n processes: datasets.processes.length,\n sources: datasets.sources.length,\n relations: 0,\n };\n const datasetOrigins: ProcessPublishBuildReport['dataset_origins'] = {\n processes: datasets.processOrigin,\n sources: datasets.sourceOrigin,\n };\n const schemaGate = buildProcessSchemaGateReport(datasets.processes, {\n now,\n validateProcessPayloadImpl: options.validateProcessPayloadImpl,\n });\n writeJsonArtifact(layout.processSchemaGatePath, schemaGate);\n assertProcessSchemaGatePassed(schemaGate, layout);\n const publishBundle = buildPublishBundle(\n layout,\n state,\n runManifest,\n datasets.processes,\n datasets.sources,\n counts,\n datasetOrigins,\n schemaGate,\n now,\n );\n const publishRequest = buildPublishRequest();\n const normalizedPublishRequest = normalizePublishRequest(publishRequest, {\n requestPath: layout.publishRequestPath,\n now,\n });\n const publishIntent = buildPublishIntent(layout, counts);\n const updatedState = buildUpdatedState(state, layout, counts, datasetOrigins, now);\n const updatedInvocationIndex = buildInvocationIndex(layout, invocationIndex, options, now);\n const handoffSummary = buildAgentHandoffSummary(\n layout,\n updatedState,\n counts,\n schemaGate,\n now,\n );\n const report = buildReport(\n layout,\n updatedState,\n counts,\n datasetOrigins,\n {\n commit: normalizedPublishRequest.publish.commit,\n publish_lifecyclemodels: normalizedPublishRequest.publish.publish_lifecyclemodels,\n publish_processes: normalizedPublishRequest.publish.publish_processes,\n publish_sources: normalizedPublishRequest.publish.publish_sources,\n publish_relations: normalizedPublishRequest.publish.publish_relations,\n publish_process_build_runs: normalizedPublishRequest.publish.publish_process_build_runs,\n relation_mode: normalizedPublishRequest.publish.relation_mode,\n },\n now,\n );\n\n writeJsonArtifact(layout.statePath, updatedState);\n writeJsonArtifact(layout.invocationIndexPath, updatedInvocationIndex);\n writeJsonArtifact(layout.publishBundlePath, publishBundle);\n writeJsonArtifact(layout.publishRequestPath, publishRequest);\n writeJsonArtifact(layout.publishIntentPath, publishIntent);\n writeJsonArtifact(layout.handoffSummaryPath, handoffSummary);\n writeJsonArtifact(layout.reportPath, report);\n\n return report;\n },\n );\n}\n\nexport const __testInternals = {\n buildLayout,\n resolveLayout,\n buildStateSummary,\n readDatasetArrayFromState,\n collectCanonicalDatasets,\n buildPublishRequest,\n buildPublishIntent,\n buildProcessSchemaGateReport,\n assertProcessSchemaGatePassed,\n buildUpdatedState,\n buildInvocationIndex,\n buildNextActions,\n buildReport,\n};\n"]}
@@ -23,6 +23,12 @@ const TABLE_BY_TYPE = new Map([
23
23
  ['lifeCycleModel data set', 'lifecyclemodels'],
24
24
  ['LCIA method data set', 'lciamethods'],
25
25
  ]);
26
+ function normalizeReferenceType(type) {
27
+ return type.trim().toLowerCase();
28
+ }
29
+ function tableForReferenceType(type) {
30
+ return TABLE_BY_TYPE.get(type) ?? TABLE_BY_TYPE.get(normalizeReferenceType(type)) ?? null;
31
+ }
26
32
  function isRecord(value) {
27
33
  return typeof value === 'object' && value !== null && !Array.isArray(value);
28
34
  }
@@ -227,14 +233,15 @@ function normalizeDatasetPayload(payload, label) {
227
233
  return payload;
228
234
  }
229
235
  function getShortDescription(payload, type) {
230
- if (type === 'flow data set') {
236
+ const normalizedType = normalizeReferenceType(type);
237
+ if (normalizedType === 'flow data set') {
231
238
  const flowDataSet = isRecord(payload.flowDataSet) ? payload.flowDataSet : {};
232
239
  const info = isRecord(flowDataSet.flowInformation) ? flowDataSet.flowInformation : {};
233
240
  const dataSetInformation = isRecord(info.dataSetInformation) ? info.dataSetInformation : {};
234
241
  const name = isRecord(dataSetInformation.name) ? dataSetInformation.name : null;
235
242
  return genFlowNameJson(name);
236
243
  }
237
- if (type === 'process data set') {
244
+ if (normalizedType === 'process data set') {
238
245
  const processDataSet = isRecord(payload.processDataSet) ? payload.processDataSet : {};
239
246
  const info = isRecord(processDataSet.processInformation)
240
247
  ? processDataSet.processInformation
@@ -243,7 +250,7 @@ function getShortDescription(payload, type) {
243
250
  const name = isRecord(dataSetInformation.name) ? dataSetInformation.name : null;
244
251
  return genProcessNameJson(name);
245
252
  }
246
- if (type === 'contact data set') {
253
+ if (normalizedType === 'contact data set') {
247
254
  const contactDataSet = isRecord(payload.contactDataSet) ? payload.contactDataSet : {};
248
255
  const info = isRecord(contactDataSet.contactInformation)
249
256
  ? contactDataSet.contactInformation
@@ -251,13 +258,13 @@ function getShortDescription(payload, type) {
251
258
  const dataSetInformation = isRecord(info.dataSetInformation) ? info.dataSetInformation : {};
252
259
  return getLangList(dataSetInformation['common:shortName']);
253
260
  }
254
- if (type === 'source data set') {
261
+ if (normalizedType === 'source data set') {
255
262
  const sourceDataSet = isRecord(payload.sourceDataSet) ? payload.sourceDataSet : {};
256
263
  const info = isRecord(sourceDataSet.sourceInformation) ? sourceDataSet.sourceInformation : {};
257
264
  const dataSetInformation = isRecord(info.dataSetInformation) ? info.dataSetInformation : {};
258
265
  return getLangList(dataSetInformation['common:shortName']);
259
266
  }
260
- if (type === 'flow property data set') {
267
+ if (normalizedType === 'flow property data set') {
261
268
  const flowPropertyDataSet = isRecord(payload.flowPropertyDataSet)
262
269
  ? payload.flowPropertyDataSet
263
270
  : {};
@@ -267,7 +274,7 @@ function getShortDescription(payload, type) {
267
274
  const dataSetInformation = isRecord(info.dataSetInformation) ? info.dataSetInformation : {};
268
275
  return getLangList(dataSetInformation['common:shortName']);
269
276
  }
270
- if (type === 'unit group data set') {
277
+ if (normalizedType === 'unit group data set') {
271
278
  const unitGroupDataSet = isRecord(payload.unitGroupDataSet) ? payload.unitGroupDataSet : {};
272
279
  const info = isRecord(unitGroupDataSet.unitGroupInformation)
273
280
  ? unitGroupDataSet.unitGroupInformation
@@ -275,7 +282,7 @@ function getShortDescription(payload, type) {
275
282
  const dataSetInformation = isRecord(info.dataSetInformation) ? info.dataSetInformation : {};
276
283
  return getLangList(dataSetInformation['common:shortName']);
277
284
  }
278
- if (type === 'LCIA method data set') {
285
+ if (normalizedType === 'lcia method data set') {
279
286
  const lciaMethodDataSet = isRecord(payload.lciaMethodDataSet) ? payload.lciaMethodDataSet : {};
280
287
  const info = isRecord(lciaMethodDataSet.LCIAMethodInformation)
281
288
  ? lciaMethodDataSet.LCIAMethodInformation
@@ -576,7 +583,7 @@ function collectRefs(root) {
576
583
  typeof current['@refObjectId'] === 'string' &&
577
584
  typeof current['@version'] === 'string' &&
578
585
  typeof current['@type'] === 'string' &&
579
- TABLE_BY_TYPE.has(current['@type'])) {
586
+ tableForReferenceType(current['@type'])) {
580
587
  refs.push({
581
588
  node: current,
582
589
  path: pathParts.join('.'),
@@ -594,7 +601,7 @@ function collectRefs(root) {
594
601
  async function fetchLatestRefs(options) {
595
602
  const missingByTable = new Map();
596
603
  for (const ref of options.refs) {
597
- const table = TABLE_BY_TYPE.get(ref.node['@type']);
604
+ const table = tableForReferenceType(ref.node['@type']);
598
605
  const id = ref.node['@refObjectId'];
599
606
  const cacheKey = table ? `${table}:${id}` : '';
600
607
  if (!table || options.cache.has(cacheKey)) {
@@ -681,7 +688,7 @@ function updateProcessJson(payload, refs, cache) {
681
688
  const touchedRefs = [];
682
689
  const unresolvedRefs = [];
683
690
  for (const ref of refs) {
684
- const table = TABLE_BY_TYPE.get(ref.node['@type']);
691
+ const table = tableForReferenceType(ref.node['@type']);
685
692
  const cacheKey = table ? `${table}:${ref.node['@refObjectId']}` : '';
686
693
  const latest = cacheKey ? cache.get(cacheKey) : null;
687
694
  if (!latest?.row) {
@@ -1016,6 +1023,7 @@ export const __testInternals = {
1016
1023
  getLangList,
1017
1024
  getLangText,
1018
1025
  getShortDescription,
1026
+ normalizeReferenceType,
1019
1027
  normalizeDatasetPayload,
1020
1028
  normalizeManifestRow,
1021
1029
  parseJsonResponse,
@@ -1023,6 +1031,7 @@ export const __testInternals = {
1023
1031
  readCompleted,
1024
1032
  readManifest,
1025
1033
  recordKey,
1034
+ tableForReferenceType,
1026
1035
  updateProcessJson,
1027
1036
  };
1028
1037
  //# sourceMappingURL=process-refresh-references.js.map