@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.
- package/README.md +83 -2
- package/dist/src/cli.js +1327 -40
- package/dist/src/cli.js.map +1 -1
- package/dist/src/lib/dataset-author.js +100 -0
- package/dist/src/lib/dataset-author.js.map +1 -0
- package/dist/src/lib/dataset-bilingual.js +545 -0
- package/dist/src/lib/dataset-bilingual.js.map +1 -0
- package/dist/src/lib/dataset-contract.js +350 -0
- package/dist/src/lib/dataset-contract.js.map +1 -0
- package/dist/src/lib/dataset-evidence-search.js +636 -0
- package/dist/src/lib/dataset-evidence-search.js.map +1 -0
- package/dist/src/lib/dataset-import-lca.js +171 -0
- package/dist/src/lib/dataset-import-lca.js.map +1 -0
- package/dist/src/lib/dataset-remote-refresh.js +166 -0
- package/dist/src/lib/dataset-remote-refresh.js.map +1 -0
- package/dist/src/lib/dataset-remote-verify.js +543 -0
- package/dist/src/lib/dataset-remote-verify.js.map +1 -0
- package/dist/src/lib/dataset-validate.js +63 -7
- package/dist/src/lib/dataset-validate.js.map +1 -1
- package/dist/src/lib/flow-payload-validation.js +51 -0
- package/dist/src/lib/flow-payload-validation.js.map +1 -0
- package/dist/src/lib/flow-publish-reviewed-data.js +16 -0
- package/dist/src/lib/flow-publish-reviewed-data.js.map +1 -1
- package/dist/src/lib/flow-publish-version.js +182 -12
- package/dist/src/lib/flow-publish-version.js.map +1 -1
- package/dist/src/lib/identity-preflight.js +1021 -0
- package/dist/src/lib/identity-preflight.js.map +1 -0
- package/dist/src/lib/process-auto-build.js +147 -0
- package/dist/src/lib/process-auto-build.js.map +1 -1
- package/dist/src/lib/process-dedup-review.js +51 -0
- package/dist/src/lib/process-dedup-review.js.map +1 -1
- package/dist/src/lib/process-flow-build-plan.js +1071 -0
- package/dist/src/lib/process-flow-build-plan.js.map +1 -0
- package/dist/src/lib/process-payload-validation.js +14 -7
- package/dist/src/lib/process-payload-validation.js.map +1 -1
- package/dist/src/lib/process-publish-build.js +122 -4
- package/dist/src/lib/process-publish-build.js.map +1 -1
- package/dist/src/lib/process-refresh-references.js +19 -10
- package/dist/src/lib/process-refresh-references.js.map +1 -1
- package/dist/src/lib/process-required-fields.js +810 -0
- package/dist/src/lib/process-required-fields.js.map +1 -0
- package/dist/src/lib/process-save-draft-run.js +4 -1
- package/dist/src/lib/process-save-draft-run.js.map +1 -1
- package/dist/src/lib/publish.js +100 -0
- package/dist/src/lib/publish.js.map +1 -1
- package/dist/src/lib/review-flow.js +58 -0
- package/dist/src/lib/review-flow.js.map +1 -1
- package/dist/src/lib/review-process.js +150 -2
- package/dist/src/lib/review-process.js.map +1 -1
- package/dist/src/lib/runtime-rulesets.js +283 -0
- package/dist/src/lib/runtime-rulesets.js.map +1 -0
- 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
|
-
|
|
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 (
|
|
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 (
|
|
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 (
|
|
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 (
|
|
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 (
|
|
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 (
|
|
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
|
-
|
|
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 =
|
|
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 =
|
|
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
|