@tiangong-lca/cli 0.0.7 → 0.0.9

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 (59) hide show
  1. package/README.md +97 -16
  2. package/dist/src/cli.js +1429 -131
  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-fetch-rows.js +12 -12
  21. package/dist/src/lib/flow-fetch-rows.js.map +1 -1
  22. package/dist/src/lib/flow-payload-validation.js +51 -0
  23. package/dist/src/lib/flow-payload-validation.js.map +1 -0
  24. package/dist/src/lib/flow-publish-reviewed-data.js +16 -0
  25. package/dist/src/lib/flow-publish-reviewed-data.js.map +1 -1
  26. package/dist/src/lib/flow-publish-version.js +182 -12
  27. package/dist/src/lib/flow-publish-version.js.map +1 -1
  28. package/dist/src/lib/{review-flow.js → flow-qa.js} +86 -28
  29. package/dist/src/lib/flow-qa.js.map +1 -0
  30. package/dist/src/lib/identity-preflight.js +1021 -0
  31. package/dist/src/lib/identity-preflight.js.map +1 -0
  32. package/dist/src/lib/{review-lifecyclemodel.js → lifecyclemodel-qa.js} +54 -54
  33. package/dist/src/lib/lifecyclemodel-qa.js.map +1 -0
  34. package/dist/src/lib/process-auto-build.js +147 -0
  35. package/dist/src/lib/process-auto-build.js.map +1 -1
  36. package/dist/src/lib/process-dedup-review.js +51 -0
  37. package/dist/src/lib/process-dedup-review.js.map +1 -1
  38. package/dist/src/lib/process-flow-build-plan.js +1071 -0
  39. package/dist/src/lib/process-flow-build-plan.js.map +1 -0
  40. package/dist/src/lib/process-payload-validation.js +14 -7
  41. package/dist/src/lib/process-payload-validation.js.map +1 -1
  42. package/dist/src/lib/process-publish-build.js +122 -4
  43. package/dist/src/lib/process-publish-build.js.map +1 -1
  44. package/dist/src/lib/{review-process.js → process-qa.js} +259 -117
  45. package/dist/src/lib/process-qa.js.map +1 -0
  46. package/dist/src/lib/process-refresh-references.js +19 -10
  47. package/dist/src/lib/process-refresh-references.js.map +1 -1
  48. package/dist/src/lib/process-required-fields.js +810 -0
  49. package/dist/src/lib/process-required-fields.js.map +1 -0
  50. package/dist/src/lib/process-save-draft-run.js +4 -1
  51. package/dist/src/lib/process-save-draft-run.js.map +1 -1
  52. package/dist/src/lib/publish.js +100 -0
  53. package/dist/src/lib/publish.js.map +1 -1
  54. package/dist/src/lib/runtime-rulesets.js +283 -0
  55. package/dist/src/lib/runtime-rulesets.js.map +1 -0
  56. package/package.json +2 -2
  57. package/dist/src/lib/review-flow.js.map +0 -1
  58. package/dist/src/lib/review-lifecyclemodel.js.map +0 -1
  59. package/dist/src/lib/review-process.js.map +0 -1
@@ -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"]}