@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.
- package/README.md +97 -16
- package/dist/src/cli.js +1429 -131
- 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-fetch-rows.js +12 -12
- package/dist/src/lib/flow-fetch-rows.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/{review-flow.js → flow-qa.js} +86 -28
- package/dist/src/lib/flow-qa.js.map +1 -0
- package/dist/src/lib/identity-preflight.js +1021 -0
- package/dist/src/lib/identity-preflight.js.map +1 -0
- package/dist/src/lib/{review-lifecyclemodel.js → lifecyclemodel-qa.js} +54 -54
- package/dist/src/lib/lifecyclemodel-qa.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/{review-process.js → process-qa.js} +259 -117
- package/dist/src/lib/process-qa.js.map +1 -0
- 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/runtime-rulesets.js +283 -0
- package/dist/src/lib/runtime-rulesets.js.map +1 -0
- package/package.json +2 -2
- package/dist/src/lib/review-flow.js.map +0 -1
- package/dist/src/lib/review-lifecyclemodel.js.map +0 -1
- package/dist/src/lib/review-process.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"process-auto-build.js","sourceRoot":"","sources":["../../../src/lib/process-auto-build.ts"],"names":[],"mappings":"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","sourcesContent":["import { copyFileSync, existsSync, mkdirSync, readdirSync } from 'node:fs';\nimport path from 'node:path';\nimport { writeJsonArtifact } from './artifacts.js';\nimport { CliError } from './errors.js';\nimport { readJsonInput } from './io.js';\nimport {\n buildRunManifest,\n buildUtcTimestamp,\n ensureRunLayout,\n type RunLayout,\n sanitizeRunToken,\n writeLatestRunId,\n} from './run.js';\nimport { withStateFileLock } from './state-lock.js';\n\ntype JsonRecord = Record<string, unknown>;\n\nexport type ProcessAutoBuildOperation = 'produce' | 'treat';\nexport type ProcessAutoBuildSourceInputType = 'local_file' | 'local_text';\n\nexport type ProcessAutoBuildSourcePolicy = {\n step1_route: {\n preferred: string[];\n fallback: string;\n };\n step2_process_split: {\n preferred: string[];\n fallback: string;\n };\n step3b_exchange_values: {\n preferred: string[];\n require_numeric_evidence: boolean;\n allow_estimation: boolean;\n };\n};\n\nexport type ProcessAutoBuildFlowSummary = {\n wrapper: 'flowDataSet' | 'direct';\n uuid: string | null;\n version: string | null;\n base_name: string | null;\n permanent_uri: string | null;\n};\n\nexport type NormalizedProcessAutoBuildSourceInput = {\n source_id: string;\n type: ProcessAutoBuildSourceInputType;\n source_path: string;\n artifact_path: string;\n artifact_file_name: string;\n intended_roles: string[];\n};\n\nexport type NormalizedProcessAutoBuildRequest = {\n schema_version: 1;\n request_path: string;\n request_id: string;\n flow_file: string;\n flow_summary: ProcessAutoBuildFlowSummary;\n flow_dataset: JsonRecord;\n operation: ProcessAutoBuildOperation;\n run_id: string;\n run_root: string;\n source_inputs: NormalizedProcessAutoBuildSourceInput[];\n source_policy: ProcessAutoBuildSourcePolicy;\n};\n\nexport type ProcessAutoBuildLayout = RunLayout & {\n requestDir: string;\n evidenceDir: string;\n evidenceIncomingDir: string;\n evidenceNormalizedDir: string;\n evidenceTextDir: string;\n evidenceStructuredDir: string;\n stageOutputsDir: string;\n reviewsDir: string;\n requestSnapshotPath: string;\n normalizedRequestPath: string;\n sourcePolicyPath: string;\n flowSummaryPath: string;\n inputManifestPath: string;\n assemblyPlanPath: string;\n lineageManifestPath: string;\n invocationIndexPath: string;\n runManifestPath: string;\n reportPath: string;\n statePath: string;\n handoffSummaryPath: string;\n processExportsDir: string;\n sourceExportsDir: string;\n};\n\nexport type ProcessAutoBuildReport = {\n schema_version: 1;\n generated_at_utc: string;\n status: 'prepared_local_process_auto_build_run';\n request_path: string;\n request_id: string;\n run_id: string;\n run_root: string;\n operation: ProcessAutoBuildOperation;\n flow: {\n source_path: string;\n artifact_path: string;\n wrapper: 'flowDataSet' | 'direct';\n uuid: string | null;\n version: string | null;\n base_name: string | null;\n };\n source_input_count: number;\n stage_count: number;\n files: {\n request_snapshot: string;\n normalized_request: string;\n source_policy: string;\n flow_summary: string;\n input_manifest: string;\n assembly_plan: string;\n lineage_manifest: string;\n invocation_index: string;\n run_manifest: string;\n state: string;\n handoff_summary: string;\n report: string;\n };\n next_actions: string[];\n};\n\nexport type RunProcessAutoBuildOptions = {\n inputPath: string;\n outDir?: string | null;\n now?: Date;\n cwd?: string;\n inputValue?: unknown;\n requestIdOverride?: string;\n runIdOverride?: string;\n};\n\ntype ProcessAutoBuildStage = {\n id: string;\n title: string;\n output: string;\n createsCandidatesDir: boolean;\n modules: string[];\n};\n\nconst DEFAULT_SOURCE_POLICY: ProcessAutoBuildSourcePolicy = {\n step1_route: {\n preferred: ['user_bundle', 'kb_bundle'],\n fallback: 'expert_judgement',\n },\n step2_process_split: {\n preferred: ['user_bundle.process_split', 'si_bundle', 'kb_bundle.process_split'],\n fallback: 'expert_judgement',\n },\n step3b_exchange_values: {\n preferred: ['user_bundle.exchange_values', 'si_bundle', 'kb_bundle.exchange_values'],\n require_numeric_evidence: true,\n allow_estimation: true,\n },\n};\n\nconst PROCESS_AUTO_BUILD_STAGES: ProcessAutoBuildStage[] = [\n {\n id: '01_route',\n title: 'Route planning',\n output: 'stage_outputs/01_route/route_plan.json',\n createsCandidatesDir: true,\n modules: ['kb-search', 'llm'],\n },\n {\n id: '02_process_split',\n title: 'Process chain split',\n output: 'stage_outputs/02_process_split/process_chain.json',\n createsCandidatesDir: true,\n modules: ['llm'],\n },\n {\n id: '03_exchange_plan',\n title: 'Exchange planning',\n output: 'stage_outputs/03_exchange_plan/exchange_plan.json',\n createsCandidatesDir: false,\n modules: ['llm'],\n },\n {\n id: '04_exchange_values',\n title: 'Exchange value extraction',\n output: 'stage_outputs/04_exchange_values/exchange_values.json',\n createsCandidatesDir: true,\n modules: ['unstructured', 'kb-search', 'llm'],\n },\n {\n id: '05_chain_review',\n title: 'Chain review',\n output: 'stage_outputs/05_chain_review/chain_review.json',\n createsCandidatesDir: false,\n modules: ['llm'],\n },\n {\n id: '06_flow_match',\n title: 'Flow matching',\n output: 'stage_outputs/06_flow_match/flow_match_bundle.json',\n createsCandidatesDir: false,\n modules: ['search:flow', 'llm'],\n },\n {\n id: '07_source_build',\n title: 'Source dataset build',\n output: 'stage_outputs/07_source_build/source_bundle.json',\n createsCandidatesDir: false,\n modules: ['validation'],\n },\n {\n id: '08_process_build',\n title: 'Process dataset build',\n output: 'stage_outputs/08_process_build/process_bundle.json',\n createsCandidatesDir: false,\n modules: ['validation', 'llm'],\n },\n {\n id: '09_qa',\n title: 'QA and balance review',\n output: 'stage_outputs/09_qa/qa_bundle.json',\n createsCandidatesDir: false,\n modules: ['validation', 'llm'],\n },\n {\n id: '10_publish',\n title: 'Publish handoff',\n output: 'stage_outputs/10_publish/publish_bundle.json',\n createsCandidatesDir: false,\n modules: ['publish'],\n },\n];\n\nfunction isRecord(value: unknown): value is JsonRecord {\n return Boolean(value && typeof value === 'object' && !Array.isArray(value));\n}\n\nfunction nonEmptyString(value: unknown): string | null {\n if (typeof value !== 'string') {\n return null;\n }\n\n const normalized = value.trim();\n return normalized || null;\n}\n\nfunction extractText(value: unknown): string | null {\n const direct = nonEmptyString(value);\n if (direct) {\n return direct;\n }\n\n if (Array.isArray(value)) {\n for (const item of value) {\n const extracted = extractText(item);\n if (extracted) {\n return extracted;\n }\n }\n return null;\n }\n\n if (!isRecord(value)) {\n return null;\n }\n\n if ('#text' in value) {\n return nonEmptyString(value['#text']);\n }\n\n return null;\n}\n\nfunction requiredRequestObject(input: unknown): JsonRecord {\n if (!isRecord(input)) {\n throw new CliError('process auto-build request must be a JSON object.', {\n code: 'PROCESS_AUTO_BUILD_REQUEST_INVALID',\n exitCode: 2,\n });\n }\n\n return input;\n}\n\nfunction requiredRequestString(input: JsonRecord, key: string): string {\n const value = nonEmptyString(input[key]);\n if (!value) {\n throw new CliError(`process auto-build request is missing '${key}'.`, {\n code: 'PROCESS_AUTO_BUILD_REQUEST_INVALID',\n exitCode: 2,\n details: { key },\n });\n }\n\n return value;\n}\n\nfunction normalizeOperation(value: unknown): ProcessAutoBuildOperation {\n const normalized = nonEmptyString(value);\n if (!normalized) {\n return 'produce';\n }\n if (normalized === 'produce' || normalized === 'treat') {\n return normalized;\n }\n\n throw new CliError(\"process auto-build operation must be 'produce' or 'treat'.\", {\n code: 'PROCESS_AUTO_BUILD_OPERATION_INVALID',\n exitCode: 2,\n details: normalized,\n });\n}\n\nfunction normalizePreferredList(value: unknown, fallback: string[]): string[] {\n if (!Array.isArray(value)) {\n return [...fallback];\n }\n\n const normalized = value\n .map((entry) => nonEmptyString(entry))\n .filter((entry): entry is string => Boolean(entry));\n\n return normalized.length ? normalized : [...fallback];\n}\n\nfunction normalizeBoolean(value: unknown, fallback: boolean): boolean {\n return typeof value === 'boolean' ? value : fallback;\n}\n\nfunction buildDefaultSourcePolicy(): ProcessAutoBuildSourcePolicy {\n return {\n step1_route: {\n preferred: [...DEFAULT_SOURCE_POLICY.step1_route.preferred],\n fallback: DEFAULT_SOURCE_POLICY.step1_route.fallback,\n },\n step2_process_split: {\n preferred: [...DEFAULT_SOURCE_POLICY.step2_process_split.preferred],\n fallback: DEFAULT_SOURCE_POLICY.step2_process_split.fallback,\n },\n step3b_exchange_values: {\n preferred: [...DEFAULT_SOURCE_POLICY.step3b_exchange_values.preferred],\n require_numeric_evidence:\n DEFAULT_SOURCE_POLICY.step3b_exchange_values.require_numeric_evidence,\n allow_estimation: DEFAULT_SOURCE_POLICY.step3b_exchange_values.allow_estimation,\n },\n };\n}\n\nfunction normalizeSourcePolicy(value: unknown): ProcessAutoBuildSourcePolicy {\n if (!isRecord(value)) {\n return buildDefaultSourcePolicy();\n }\n\n const defaults = buildDefaultSourcePolicy();\n const step1Route = isRecord(value.step1_route) ? value.step1_route : {};\n const step2ProcessSplit = isRecord(value.step2_process_split) ? value.step2_process_split : {};\n const step3ExchangeValues = isRecord(value.step3b_exchange_values)\n ? value.step3b_exchange_values\n : {};\n\n return {\n step1_route: {\n preferred: normalizePreferredList(step1Route.preferred, defaults.step1_route.preferred),\n fallback: nonEmptyString(step1Route.fallback) ?? DEFAULT_SOURCE_POLICY.step1_route.fallback,\n },\n step2_process_split: {\n preferred: normalizePreferredList(\n step2ProcessSplit.preferred,\n defaults.step2_process_split.preferred,\n ),\n fallback:\n nonEmptyString(step2ProcessSplit.fallback) ??\n DEFAULT_SOURCE_POLICY.step2_process_split.fallback,\n },\n step3b_exchange_values: {\n preferred: normalizePreferredList(\n step3ExchangeValues.preferred,\n defaults.step3b_exchange_values.preferred,\n ),\n require_numeric_evidence: normalizeBoolean(\n step3ExchangeValues.require_numeric_evidence,\n DEFAULT_SOURCE_POLICY.step3b_exchange_values.require_numeric_evidence,\n ),\n allow_estimation: normalizeBoolean(\n step3ExchangeValues.allow_estimation,\n DEFAULT_SOURCE_POLICY.step3b_exchange_values.allow_estimation,\n ),\n },\n };\n}\n\nfunction extractFlowDatasetRoot(payload: unknown): {\n flowPayload: JsonRecord;\n flowDataset: JsonRecord;\n wrapper: 'flowDataSet' | 'direct';\n} {\n if (!isRecord(payload)) {\n throw new CliError('process auto-build flow file must contain a JSON object.', {\n code: 'PROCESS_AUTO_BUILD_FLOW_INVALID',\n exitCode: 2,\n });\n }\n\n if (isRecord(payload.flowDataSet)) {\n return {\n flowPayload: payload,\n flowDataset: payload.flowDataSet,\n wrapper: 'flowDataSet',\n };\n }\n\n return {\n flowPayload: payload,\n flowDataset: payload,\n wrapper: 'direct',\n };\n}\n\nfunction extractFlowSummary(\n flowDataset: JsonRecord,\n wrapper: 'flowDataSet' | 'direct',\n): ProcessAutoBuildFlowSummary {\n const flowInformation = isRecord(flowDataset.flowInformation) ? flowDataset.flowInformation : {};\n const dataSetInformation = isRecord(flowInformation.dataSetInformation)\n ? flowInformation.dataSetInformation\n : {};\n const administrativeInformation = isRecord(flowDataset.administrativeInformation)\n ? flowDataset.administrativeInformation\n : {};\n const publicationAndOwnership = isRecord(administrativeInformation.publicationAndOwnership)\n ? administrativeInformation.publicationAndOwnership\n : {};\n const name = isRecord(dataSetInformation.name) ? dataSetInformation.name : {};\n\n return {\n wrapper,\n uuid:\n nonEmptyString(dataSetInformation['common:UUID']) ??\n nonEmptyString(flowDataset['@id']) ??\n null,\n version:\n nonEmptyString(publicationAndOwnership['common:dataSetVersion']) ??\n nonEmptyString(flowDataset['@version']) ??\n null,\n base_name: extractText(name.baseName),\n permanent_uri: nonEmptyString(publicationAndOwnership['common:permanentDataSetURI']) ?? null,\n };\n}\n\nfunction runIdToken(value: string | null | undefined, fallback: string): string {\n return sanitizeRunToken(value ?? '', fallback);\n}\n\nfunction buildProcessAutoBuildRunId(\n flowFilePath: string,\n operation: ProcessAutoBuildOperation,\n summary: ProcessAutoBuildFlowSummary,\n now: Date = new Date(),\n): string {\n const stem = path.basename(flowFilePath, path.extname(flowFilePath));\n const parts = stem.split('_');\n const flowCode = runIdToken(parts[0] || summary.base_name || summary.uuid, 'flow');\n const flowUuidShort = runIdToken(parts[1] || summary.uuid, 'unknown').slice(0, 8);\n const operationToken = operation === 'treat' ? 'treat' : 'produce';\n\n return `pfw_${flowCode}_${flowUuidShort}_${operationToken}_${buildUtcTimestamp(now)}`;\n}\n\nfunction resolveRunRoot(\n requestDir: string,\n outDirOverride: string | null | undefined,\n requestRunRoot: unknown,\n): string {\n const override = nonEmptyString(outDirOverride);\n if (override) {\n return path.resolve(requestDir, override);\n }\n\n const requestValue = nonEmptyString(requestRunRoot);\n if (requestValue) {\n return path.resolve(requestDir, requestValue);\n }\n\n throw new CliError(\n 'Missing required process auto-build run root. Provide --out-dir or request.workspace_run_root.',\n {\n code: 'PROCESS_AUTO_BUILD_RUN_ROOT_REQUIRED',\n exitCode: 2,\n },\n );\n}\n\nfunction normalizeSourceInputType(value: unknown): ProcessAutoBuildSourceInputType {\n const normalized = nonEmptyString(value);\n if (normalized === 'local_file' || normalized === 'local_text') {\n return normalized;\n }\n\n throw new CliError(\n \"process auto-build source_inputs[].type must be 'local_file' or 'local_text'.\",\n {\n code: 'PROCESS_AUTO_BUILD_SOURCE_INVALID',\n exitCode: 2,\n details: { value },\n },\n );\n}\n\nfunction normalizeIntendedRoles(value: unknown): string[] {\n if (!Array.isArray(value)) {\n return [];\n }\n\n return value\n .map((entry) => nonEmptyString(entry))\n .filter((entry): entry is string => Boolean(entry));\n}\n\nfunction normalizeSourceInputs(\n value: unknown,\n requestDir: string,\n evidenceIncomingDir: string,\n): NormalizedProcessAutoBuildSourceInput[] {\n if (value === undefined) {\n return [];\n }\n\n if (!Array.isArray(value)) {\n throw new CliError('process auto-build source_inputs must be an array when provided.', {\n code: 'PROCESS_AUTO_BUILD_SOURCE_INVALID',\n exitCode: 2,\n });\n }\n\n const seenIds = new Set<string>();\n\n return value.map((entry, index) => {\n if (!isRecord(entry)) {\n throw new CliError('process auto-build source_inputs entries must be objects.', {\n code: 'PROCESS_AUTO_BUILD_SOURCE_INVALID',\n exitCode: 2,\n details: { index },\n });\n }\n\n const sourceId = requiredRequestString(entry, 'source_id');\n if (seenIds.has(sourceId)) {\n throw new CliError(`Duplicate process auto-build source_id: ${sourceId}`, {\n code: 'PROCESS_AUTO_BUILD_SOURCE_DUPLICATE',\n exitCode: 2,\n });\n }\n seenIds.add(sourceId);\n\n const sourcePath = path.resolve(requestDir, requiredRequestString(entry, 'path'));\n if (!existsSync(sourcePath)) {\n throw new CliError(`process auto-build source input not found: ${sourcePath}`, {\n code: 'PROCESS_AUTO_BUILD_SOURCE_NOT_FOUND',\n exitCode: 2,\n });\n }\n\n const extension = path.extname(sourcePath);\n const artifactFileName = `${String(index + 1).padStart(2, '0')}_${runIdToken(sourceId, 'source')}${extension}`;\n\n return {\n source_id: sourceId,\n type: normalizeSourceInputType(entry.type),\n source_path: sourcePath,\n artifact_file_name: artifactFileName,\n artifact_path: path.join(evidenceIncomingDir, artifactFileName),\n intended_roles: normalizeIntendedRoles(entry.intended_roles),\n };\n });\n}\n\nfunction buildLayout(runRoot: string, runId: string): ProcessAutoBuildLayout {\n const collectionDir = path.dirname(runRoot);\n const layout: RunLayout = {\n namespace: 'process_from_flow',\n runId,\n artifactsRoot: path.dirname(collectionDir),\n collectionDir,\n runRoot,\n cacheDir: path.join(runRoot, 'cache'),\n inputsDir: path.join(runRoot, 'input'),\n outputsDir: path.join(runRoot, 'exports'),\n reportsDir: path.join(runRoot, 'reports'),\n logsDir: path.join(runRoot, 'logs'),\n manifestsDir: path.join(runRoot, 'manifests'),\n latestRunIdPath: path.join(collectionDir, '.latest_run_id'),\n };\n\n return {\n ...layout,\n requestDir: path.join(runRoot, 'request'),\n evidenceDir: path.join(runRoot, 'evidence'),\n evidenceIncomingDir: path.join(runRoot, 'evidence', 'incoming'),\n evidenceNormalizedDir: path.join(runRoot, 'evidence', 'normalized'),\n evidenceTextDir: path.join(runRoot, 'evidence', 'text'),\n evidenceStructuredDir: path.join(runRoot, 'evidence', 'structured'),\n stageOutputsDir: path.join(runRoot, 'stage_outputs'),\n reviewsDir: path.join(runRoot, 'reviews'),\n requestSnapshotPath: path.join(runRoot, 'request', 'pff-request.json'),\n normalizedRequestPath: path.join(runRoot, 'request', 'request.normalized.json'),\n sourcePolicyPath: path.join(runRoot, 'request', 'source-policy.json'),\n flowSummaryPath: path.join(runRoot, 'manifests', 'flow-summary.json'),\n inputManifestPath: path.join(runRoot, 'input', 'input_manifest.json'),\n assemblyPlanPath: path.join(runRoot, 'manifests', 'assembly-plan.json'),\n lineageManifestPath: path.join(runRoot, 'manifests', 'lineage-manifest.json'),\n invocationIndexPath: path.join(runRoot, 'manifests', 'invocation-index.json'),\n runManifestPath: path.join(runRoot, 'manifests', 'run-manifest.json'),\n reportPath: path.join(runRoot, 'reports', 'process-auto-build-report.json'),\n statePath: path.join(runRoot, 'cache', 'process_from_flow_state.json'),\n handoffSummaryPath: path.join(runRoot, 'cache', 'agent_handoff_summary.json'),\n processExportsDir: path.join(runRoot, 'exports', 'processes'),\n sourceExportsDir: path.join(runRoot, 'exports', 'sources'),\n };\n}\n\nfunction ensureEmptyRunRoot(runRoot: string): void {\n if (!existsSync(runRoot)) {\n return;\n }\n\n const entries = readdirSync(runRoot);\n if (entries.length > 0) {\n throw new CliError(`process auto-build run root already exists and is not empty: ${runRoot}`, {\n code: 'PROCESS_AUTO_BUILD_RUN_EXISTS',\n exitCode: 2,\n });\n }\n}\n\nfunction ensureProcessAutoBuildLayout(layout: ProcessAutoBuildLayout): void {\n ensureRunLayout(layout);\n [\n layout.requestDir,\n layout.evidenceDir,\n layout.evidenceIncomingDir,\n layout.evidenceNormalizedDir,\n layout.evidenceTextDir,\n layout.evidenceStructuredDir,\n layout.stageOutputsDir,\n layout.reviewsDir,\n layout.processExportsDir,\n layout.sourceExportsDir,\n ].forEach((dirPath) => {\n mkdirSync(dirPath, { recursive: true });\n });\n\n for (const stage of PROCESS_AUTO_BUILD_STAGES) {\n const stageDir = path.join(layout.stageOutputsDir, stage.id);\n mkdirSync(stageDir, { recursive: true });\n if (stage.createsCandidatesDir) {\n mkdirSync(path.join(stageDir, 'candidates'), { recursive: true });\n }\n }\n}\n\nfunction copyArtifactFile(sourcePath: string, targetPath: string, code: string): void {\n mkdirSync(path.dirname(targetPath), { recursive: true });\n try {\n copyFileSync(sourcePath, targetPath);\n } catch (error) {\n throw new CliError(`Failed to copy artifact file: ${sourcePath}`, {\n code,\n exitCode: 1,\n details: String(error),\n });\n }\n}\n\nfunction buildAssemblyPlan(runRoot: string): JsonRecord {\n return {\n schema_version: 1,\n stages: PROCESS_AUTO_BUILD_STAGES.map((stage) => ({\n id: stage.id,\n title: stage.title,\n status: 'pending',\n modules: stage.modules,\n output: stage.output,\n candidates_dir: stage.createsCandidatesDir\n ? path.posix.join(path.posix.dirname(stage.output), 'candidates')\n : null,\n output_abs: path.join(runRoot, stage.output),\n })),\n };\n}\n\nfunction buildLineageManifest(normalized: NormalizedProcessAutoBuildRequest): JsonRecord {\n return {\n schema_version: 1,\n request_id: normalized.request_id,\n run_id: normalized.run_id,\n flow: {\n source_path: normalized.flow_file,\n uuid: normalized.flow_summary.uuid,\n version: normalized.flow_summary.version,\n base_name: normalized.flow_summary.base_name,\n },\n source_inputs: normalized.source_inputs.map((source) => ({\n source_id: source.source_id,\n type: source.type,\n source_path: source.source_path,\n artifact_path: source.artifact_path,\n intended_roles: source.intended_roles,\n })),\n };\n}\n\nfunction buildInvocationIndex(\n normalized: NormalizedProcessAutoBuildRequest,\n options: RunProcessAutoBuildOptions,\n reportPath: string,\n now: Date,\n): JsonRecord {\n const command = ['process', 'auto-build', '--input', options.inputPath];\n if (options.outDir) {\n command.push('--out-dir', options.outDir);\n }\n\n return {\n schema_version: 1,\n invocations: [\n {\n command,\n cwd: options.cwd ?? process.cwd(),\n created_at: now.toISOString(),\n request_path: normalized.request_path,\n report_path: reportPath,\n },\n ],\n };\n}\n\nfunction buildStepMarkers(now: Date): JsonRecord {\n const completedAt = now.toISOString();\n const markers: JsonRecord = {\n intake_prepared: {\n status: 'completed',\n completed_at: completedAt,\n },\n };\n\n PROCESS_AUTO_BUILD_STAGES.forEach((stage) => {\n markers[stage.id] = {\n status: 'pending',\n };\n });\n\n return markers;\n}\n\nfunction buildInitialState(\n normalized: NormalizedProcessAutoBuildRequest,\n flowArtifactPath: string,\n now: Date,\n): JsonRecord {\n return {\n schema_version: 1,\n build_status: 'intake_prepared',\n next_stage: PROCESS_AUTO_BUILD_STAGES[0]?.id ?? null,\n run_id: normalized.run_id,\n request_id: normalized.request_id,\n flow_path: normalized.flow_file,\n flow_artifact_path: flowArtifactPath,\n flow_dataset: normalized.flow_dataset,\n flow_summary: normalized.flow_summary,\n operation: normalized.operation,\n source_inputs: normalized.source_inputs,\n source_policy: normalized.source_policy,\n scientific_references: {\n source_inputs: normalized.source_inputs.map((source) => ({\n source_id: source.source_id,\n type: source.type,\n intended_roles: source.intended_roles,\n source_path: source.source_path,\n })),\n },\n processes: [],\n process_exchanges: [],\n matched_process_exchanges: [],\n process_datasets: [],\n source_datasets: [],\n coverage_metrics: {},\n coverage_history: [],\n step_markers: buildStepMarkers(now),\n };\n}\n\nfunction buildNextActions(layout: ProcessAutoBuildLayout): string[] {\n return [\n `inspect: ${layout.normalizedRequestPath}`,\n `inspect: ${layout.statePath}`,\n `inspect: ${layout.assemblyPlanPath}`,\n `future: tiangong-lca process resume-build --run-dir ${layout.runRoot}`,\n `future: tiangong-lca process publish-build --run-dir ${layout.runRoot}`,\n ];\n}\n\nfunction buildAgentHandoffSummary(\n normalized: NormalizedProcessAutoBuildRequest,\n layout: ProcessAutoBuildLayout,\n flowArtifactPath: string,\n now: Date,\n): JsonRecord {\n return {\n schema_version: 1,\n generated_at_utc: now.toISOString(),\n run_id: normalized.run_id,\n command: 'process auto-build',\n flow_path: normalized.flow_file,\n operation: normalized.operation,\n stop_after: null,\n process_count: 0,\n matched_exchange_count: 0,\n process_dataset_count: 0,\n source_dataset_count: 0,\n remaining_placeholder_refs: 0,\n placeholder_examples: [],\n publish_summary: {},\n artifacts: {\n state_path: layout.statePath,\n timing_report: null,\n publish_summary: null,\n llm_cost_report: null,\n process_update_report: null,\n flow_auto_build_manifest: null,\n request_snapshot: layout.requestSnapshotPath,\n normalized_request: layout.normalizedRequestPath,\n assembly_plan: layout.assemblyPlanPath,\n flow_copy: flowArtifactPath,\n },\n next_actions: buildNextActions(layout),\n extra: {\n status: 'prepared_local_process_auto_build_run',\n request_id: normalized.request_id,\n source_input_count: normalized.source_inputs.length,\n },\n };\n}\n\nfunction buildReport(\n normalized: NormalizedProcessAutoBuildRequest,\n layout: ProcessAutoBuildLayout,\n flowArtifactPath: string,\n now: Date,\n): ProcessAutoBuildReport {\n return {\n schema_version: 1,\n generated_at_utc: now.toISOString(),\n status: 'prepared_local_process_auto_build_run',\n request_path: normalized.request_path,\n request_id: normalized.request_id,\n run_id: normalized.run_id,\n run_root: normalized.run_root,\n operation: normalized.operation,\n flow: {\n source_path: normalized.flow_file,\n artifact_path: flowArtifactPath,\n wrapper: normalized.flow_summary.wrapper,\n uuid: normalized.flow_summary.uuid,\n version: normalized.flow_summary.version,\n base_name: normalized.flow_summary.base_name,\n },\n source_input_count: normalized.source_inputs.length,\n stage_count: PROCESS_AUTO_BUILD_STAGES.length,\n files: {\n request_snapshot: layout.requestSnapshotPath,\n normalized_request: layout.normalizedRequestPath,\n source_policy: layout.sourcePolicyPath,\n flow_summary: layout.flowSummaryPath,\n input_manifest: layout.inputManifestPath,\n assembly_plan: layout.assemblyPlanPath,\n lineage_manifest: layout.lineageManifestPath,\n invocation_index: layout.invocationIndexPath,\n run_manifest: layout.runManifestPath,\n state: layout.statePath,\n handoff_summary: layout.handoffSummaryPath,\n report: layout.reportPath,\n },\n next_actions: buildNextActions(layout),\n };\n}\n\nexport function normalizeProcessAutoBuildRequest(\n input: unknown,\n options: {\n inputPath: string;\n outDir?: string | null;\n now?: Date;\n requestIdOverride?: string;\n runIdOverride?: string;\n },\n): NormalizedProcessAutoBuildRequest {\n const request = requiredRequestObject(input);\n const requestDir = path.dirname(path.resolve(options.inputPath));\n const operation = normalizeOperation(request.operation);\n const flowFile = path.resolve(requestDir, requiredRequestString(request, 'flow_file'));\n const flowPayload = readJsonInput(flowFile);\n const { flowDataset, wrapper } = extractFlowDatasetRoot(flowPayload);\n const flowSummary = extractFlowSummary(flowDataset, wrapper);\n const runId =\n nonEmptyString(options.runIdOverride) ??\n nonEmptyString(request.run_id) ??\n buildProcessAutoBuildRunId(flowFile, operation, flowSummary, options.now);\n const runRoot = resolveRunRoot(requestDir, options.outDir, request.workspace_run_root);\n const layout = buildLayout(runRoot, runId);\n\n return {\n schema_version: 1,\n request_path: path.resolve(options.inputPath),\n request_id:\n nonEmptyString(options.requestIdOverride) ??\n nonEmptyString(request.request_id) ??\n `pff-${runId}`,\n flow_file: flowFile,\n flow_summary: flowSummary,\n flow_dataset: flowDataset,\n operation,\n run_id: runId,\n run_root: runRoot,\n source_inputs: normalizeSourceInputs(\n request.source_inputs,\n requestDir,\n layout.evidenceIncomingDir,\n ),\n source_policy: normalizeSourcePolicy(request.source_policy),\n };\n}\n\nexport async function runProcessAutoBuild(\n options: RunProcessAutoBuildOptions,\n): Promise<ProcessAutoBuildReport> {\n const input = options.inputValue ?? readJsonInput(options.inputPath);\n const now = options.now ?? new Date();\n const normalized = normalizeProcessAutoBuildRequest(input, {\n inputPath: options.inputPath,\n outDir: options.outDir,\n now,\n requestIdOverride: options.requestIdOverride,\n runIdOverride: options.runIdOverride,\n });\n const layout = buildLayout(normalized.run_root, normalized.run_id);\n const flowArtifactPath = path.join(layout.inputsDir, path.basename(normalized.flow_file));\n\n ensureEmptyRunRoot(layout.runRoot);\n ensureProcessAutoBuildLayout(layout);\n\n copyArtifactFile(normalized.flow_file, flowArtifactPath, 'PROCESS_AUTO_BUILD_FLOW_COPY_FAILED');\n normalized.source_inputs.forEach((source) => {\n copyArtifactFile(\n source.source_path,\n source.artifact_path,\n 'PROCESS_AUTO_BUILD_SOURCE_COPY_FAILED',\n );\n });\n\n const request = requiredRequestObject(input);\n writeJsonArtifact(layout.requestSnapshotPath, request);\n writeJsonArtifact(layout.normalizedRequestPath, normalized);\n writeJsonArtifact(layout.sourcePolicyPath, normalized.source_policy);\n writeJsonArtifact(layout.flowSummaryPath, normalized.flow_summary);\n writeJsonArtifact(layout.inputManifestPath, {\n run_id: normalized.run_id,\n flow_path: normalized.flow_file,\n flow_artifact_path: flowArtifactPath,\n operation: normalized.operation,\n });\n writeJsonArtifact(layout.assemblyPlanPath, buildAssemblyPlan(layout.runRoot));\n writeJsonArtifact(layout.lineageManifestPath, buildLineageManifest(normalized));\n writeJsonArtifact(\n layout.invocationIndexPath,\n buildInvocationIndex(normalized, options, layout.reportPath, now),\n );\n writeJsonArtifact(\n layout.runManifestPath,\n buildRunManifest({\n layout,\n command: options.outDir\n ? ['process', 'auto-build', '--input', options.inputPath, '--out-dir', options.outDir]\n : ['process', 'auto-build', '--input', options.inputPath],\n cwd: options.cwd,\n createdAt: now,\n }),\n );\n\n const state = buildInitialState(normalized, flowArtifactPath, now);\n await withStateFileLock(\n layout.statePath,\n { reason: 'process-auto-build.initial_state', now },\n () => writeJsonArtifact(layout.statePath, state),\n );\n\n const handoff = buildAgentHandoffSummary(normalized, layout, flowArtifactPath, now);\n writeJsonArtifact(layout.handoffSummaryPath, handoff);\n writeLatestRunId(layout, normalized.run_id);\n\n const report = buildReport(normalized, layout, flowArtifactPath, now);\n writeJsonArtifact(layout.reportPath, report);\n return report;\n}\n\n// Exposed for deterministic unit coverage of process auto-build normalization and scaffold helpers.\nexport const __testInternals = {\n PROCESS_AUTO_BUILD_STAGES,\n extractText,\n normalizeOperation,\n normalizeSourcePolicy,\n extractFlowDatasetRoot,\n extractFlowSummary,\n buildProcessAutoBuildRunId,\n buildLayout,\n buildAssemblyPlan,\n buildLineageManifest,\n buildInvocationIndex,\n buildInitialState,\n buildAgentHandoffSummary,\n buildReport,\n};\n"]}
|
|
1
|
+
{"version":3,"file":"process-auto-build.js","sourceRoot":"","sources":["../../../src/lib/process-auto-build.ts"],"names":[],"mappings":"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","sourcesContent":["import { copyFileSync, existsSync, mkdirSync, readdirSync } from 'node:fs';\nimport path from 'node:path';\nimport { writeJsonArtifact } from './artifacts.js';\nimport { CliError } from './errors.js';\nimport { readJsonInput } from './io.js';\nimport {\n buildRunManifest,\n buildUtcTimestamp,\n ensureRunLayout,\n type RunLayout,\n sanitizeRunToken,\n writeLatestRunId,\n} from './run.js';\nimport { withStateFileLock } from './state-lock.js';\n\ntype JsonRecord = Record<string, unknown>;\n\nexport type ProcessAutoBuildOperation = 'produce' | 'treat';\nexport type ProcessAutoBuildSourceInputType = 'local_file' | 'local_text';\n\nexport type ProcessAutoBuildSourcePolicy = {\n step1_route: {\n preferred: string[];\n fallback: string;\n };\n step2_process_split: {\n preferred: string[];\n fallback: string;\n };\n step3b_exchange_values: {\n preferred: string[];\n require_numeric_evidence: boolean;\n allow_estimation: boolean;\n };\n};\n\nexport type ProcessAutoBuildFlowSummary = {\n wrapper: 'flowDataSet' | 'direct';\n uuid: string | null;\n version: string | null;\n base_name: string | null;\n permanent_uri: string | null;\n};\n\nexport type NormalizedProcessAutoBuildSourceInput = {\n source_id: string;\n type: ProcessAutoBuildSourceInputType;\n source_path: string;\n artifact_path: string;\n artifact_file_name: string;\n intended_roles: string[];\n};\n\nexport type NormalizedProcessAutoBuildRequest = {\n schema_version: 1;\n request_path: string;\n request_id: string;\n flow_file: string;\n flow_summary: ProcessAutoBuildFlowSummary;\n flow_dataset: JsonRecord;\n operation: ProcessAutoBuildOperation;\n run_id: string;\n run_root: string;\n source_inputs: NormalizedProcessAutoBuildSourceInput[];\n source_policy: ProcessAutoBuildSourcePolicy;\n};\n\nexport type ProcessAutoBuildLayout = RunLayout & {\n requestDir: string;\n evidenceDir: string;\n evidenceIncomingDir: string;\n evidenceNormalizedDir: string;\n evidenceTextDir: string;\n evidenceStructuredDir: string;\n stageOutputsDir: string;\n reviewsDir: string;\n requestSnapshotPath: string;\n normalizedRequestPath: string;\n sourcePolicyPath: string;\n flowSummaryPath: string;\n inputManifestPath: string;\n buildPlanPath: string;\n assemblyPlanPath: string;\n lineageManifestPath: string;\n invocationIndexPath: string;\n runManifestPath: string;\n reportPath: string;\n statePath: string;\n handoffSummaryPath: string;\n processExportsDir: string;\n sourceExportsDir: string;\n};\n\nexport type ProcessAutoBuildReport = {\n schema_version: 1;\n generated_at_utc: string;\n status: 'prepared_local_process_auto_build_run';\n request_path: string;\n request_id: string;\n run_id: string;\n run_root: string;\n operation: ProcessAutoBuildOperation;\n flow: {\n source_path: string;\n artifact_path: string;\n wrapper: 'flowDataSet' | 'direct';\n uuid: string | null;\n version: string | null;\n base_name: string | null;\n };\n source_input_count: number;\n stage_count: number;\n files: {\n request_snapshot: string;\n normalized_request: string;\n source_policy: string;\n flow_summary: string;\n input_manifest: string;\n build_plan: string;\n assembly_plan: string;\n lineage_manifest: string;\n invocation_index: string;\n run_manifest: string;\n state: string;\n handoff_summary: string;\n report: string;\n };\n next_actions: string[];\n};\n\nexport type RunProcessAutoBuildOptions = {\n inputPath: string;\n outDir?: string | null;\n now?: Date;\n cwd?: string;\n inputValue?: unknown;\n requestIdOverride?: string;\n runIdOverride?: string;\n};\n\ntype ProcessAutoBuildStage = {\n id: string;\n title: string;\n output: string;\n createsCandidatesDir: boolean;\n modules: string[];\n};\n\nconst DEFAULT_SOURCE_POLICY: ProcessAutoBuildSourcePolicy = {\n step1_route: {\n preferred: ['user_bundle', 'kb_bundle'],\n fallback: 'expert_judgement',\n },\n step2_process_split: {\n preferred: ['user_bundle.process_split', 'si_bundle', 'kb_bundle.process_split'],\n fallback: 'expert_judgement',\n },\n step3b_exchange_values: {\n preferred: ['user_bundle.exchange_values', 'si_bundle', 'kb_bundle.exchange_values'],\n require_numeric_evidence: true,\n allow_estimation: true,\n },\n};\n\nconst PROCESS_AUTO_BUILD_STAGES: ProcessAutoBuildStage[] = [\n {\n id: '01_route',\n title: 'Route planning',\n output: 'stage_outputs/01_route/route_plan.json',\n createsCandidatesDir: true,\n modules: ['kb-search', 'llm'],\n },\n {\n id: '02_process_split',\n title: 'Process chain split',\n output: 'stage_outputs/02_process_split/process_chain.json',\n createsCandidatesDir: true,\n modules: ['llm'],\n },\n {\n id: '03_exchange_plan',\n title: 'Exchange planning',\n output: 'stage_outputs/03_exchange_plan/exchange_plan.json',\n createsCandidatesDir: false,\n modules: ['llm'],\n },\n {\n id: '04_exchange_values',\n title: 'Exchange value extraction',\n output: 'stage_outputs/04_exchange_values/exchange_values.json',\n createsCandidatesDir: true,\n modules: ['unstructured', 'kb-search', 'llm'],\n },\n {\n id: '05_chain_review',\n title: 'Chain review',\n output: 'stage_outputs/05_chain_review/chain_review.json',\n createsCandidatesDir: false,\n modules: ['llm'],\n },\n {\n id: '06_flow_match',\n title: 'Flow matching',\n output: 'stage_outputs/06_flow_match/flow_match_bundle.json',\n createsCandidatesDir: false,\n modules: ['search:flow', 'llm'],\n },\n {\n id: '07_source_build',\n title: 'Source dataset build',\n output: 'stage_outputs/07_source_build/source_bundle.json',\n createsCandidatesDir: false,\n modules: ['validation'],\n },\n {\n id: '08_process_build',\n title: 'Process dataset build',\n output: 'stage_outputs/08_process_build/process_bundle.json',\n createsCandidatesDir: false,\n modules: ['validation', 'llm'],\n },\n {\n id: '09_qa',\n title: 'QA and balance review',\n output: 'stage_outputs/09_qa/qa_bundle.json',\n createsCandidatesDir: false,\n modules: ['validation', 'llm'],\n },\n {\n id: '10_publish',\n title: 'Publish handoff',\n output: 'stage_outputs/10_publish/publish_bundle.json',\n createsCandidatesDir: false,\n modules: ['publish'],\n },\n];\n\nfunction isRecord(value: unknown): value is JsonRecord {\n return Boolean(value && typeof value === 'object' && !Array.isArray(value));\n}\n\nfunction nonEmptyString(value: unknown): string | null {\n if (typeof value !== 'string') {\n return null;\n }\n\n const normalized = value.trim();\n return normalized || null;\n}\n\nfunction extractText(value: unknown): string | null {\n const direct = nonEmptyString(value);\n if (direct) {\n return direct;\n }\n\n if (Array.isArray(value)) {\n for (const item of value) {\n const extracted = extractText(item);\n if (extracted) {\n return extracted;\n }\n }\n return null;\n }\n\n if (!isRecord(value)) {\n return null;\n }\n\n if ('#text' in value) {\n return nonEmptyString(value['#text']);\n }\n\n return null;\n}\n\nfunction requiredRequestObject(input: unknown): JsonRecord {\n if (!isRecord(input)) {\n throw new CliError('process auto-build request must be a JSON object.', {\n code: 'PROCESS_AUTO_BUILD_REQUEST_INVALID',\n exitCode: 2,\n });\n }\n\n return input;\n}\n\nfunction requiredRequestString(input: JsonRecord, key: string): string {\n const value = nonEmptyString(input[key]);\n if (!value) {\n throw new CliError(`process auto-build request is missing '${key}'.`, {\n code: 'PROCESS_AUTO_BUILD_REQUEST_INVALID',\n exitCode: 2,\n details: { key },\n });\n }\n\n return value;\n}\n\nfunction normalizeOperation(value: unknown): ProcessAutoBuildOperation {\n const normalized = nonEmptyString(value);\n if (!normalized) {\n return 'produce';\n }\n if (normalized === 'produce' || normalized === 'treat') {\n return normalized;\n }\n\n throw new CliError(\"process auto-build operation must be 'produce' or 'treat'.\", {\n code: 'PROCESS_AUTO_BUILD_OPERATION_INVALID',\n exitCode: 2,\n details: normalized,\n });\n}\n\nfunction normalizePreferredList(value: unknown, fallback: string[]): string[] {\n if (!Array.isArray(value)) {\n return [...fallback];\n }\n\n const normalized = value\n .map((entry) => nonEmptyString(entry))\n .filter((entry): entry is string => Boolean(entry));\n\n return normalized.length ? normalized : [...fallback];\n}\n\nfunction normalizeBoolean(value: unknown, fallback: boolean): boolean {\n return typeof value === 'boolean' ? value : fallback;\n}\n\nfunction buildDefaultSourcePolicy(): ProcessAutoBuildSourcePolicy {\n return {\n step1_route: {\n preferred: [...DEFAULT_SOURCE_POLICY.step1_route.preferred],\n fallback: DEFAULT_SOURCE_POLICY.step1_route.fallback,\n },\n step2_process_split: {\n preferred: [...DEFAULT_SOURCE_POLICY.step2_process_split.preferred],\n fallback: DEFAULT_SOURCE_POLICY.step2_process_split.fallback,\n },\n step3b_exchange_values: {\n preferred: [...DEFAULT_SOURCE_POLICY.step3b_exchange_values.preferred],\n require_numeric_evidence:\n DEFAULT_SOURCE_POLICY.step3b_exchange_values.require_numeric_evidence,\n allow_estimation: DEFAULT_SOURCE_POLICY.step3b_exchange_values.allow_estimation,\n },\n };\n}\n\nfunction normalizeSourcePolicy(value: unknown): ProcessAutoBuildSourcePolicy {\n if (!isRecord(value)) {\n return buildDefaultSourcePolicy();\n }\n\n const defaults = buildDefaultSourcePolicy();\n const step1Route = isRecord(value.step1_route) ? value.step1_route : {};\n const step2ProcessSplit = isRecord(value.step2_process_split) ? value.step2_process_split : {};\n const step3ExchangeValues = isRecord(value.step3b_exchange_values)\n ? value.step3b_exchange_values\n : {};\n\n return {\n step1_route: {\n preferred: normalizePreferredList(step1Route.preferred, defaults.step1_route.preferred),\n fallback: nonEmptyString(step1Route.fallback) ?? DEFAULT_SOURCE_POLICY.step1_route.fallback,\n },\n step2_process_split: {\n preferred: normalizePreferredList(\n step2ProcessSplit.preferred,\n defaults.step2_process_split.preferred,\n ),\n fallback:\n nonEmptyString(step2ProcessSplit.fallback) ??\n DEFAULT_SOURCE_POLICY.step2_process_split.fallback,\n },\n step3b_exchange_values: {\n preferred: normalizePreferredList(\n step3ExchangeValues.preferred,\n defaults.step3b_exchange_values.preferred,\n ),\n require_numeric_evidence: normalizeBoolean(\n step3ExchangeValues.require_numeric_evidence,\n DEFAULT_SOURCE_POLICY.step3b_exchange_values.require_numeric_evidence,\n ),\n allow_estimation: normalizeBoolean(\n step3ExchangeValues.allow_estimation,\n DEFAULT_SOURCE_POLICY.step3b_exchange_values.allow_estimation,\n ),\n },\n };\n}\n\nfunction extractFlowDatasetRoot(payload: unknown): {\n flowPayload: JsonRecord;\n flowDataset: JsonRecord;\n wrapper: 'flowDataSet' | 'direct';\n} {\n if (!isRecord(payload)) {\n throw new CliError('process auto-build flow file must contain a JSON object.', {\n code: 'PROCESS_AUTO_BUILD_FLOW_INVALID',\n exitCode: 2,\n });\n }\n\n if (isRecord(payload.flowDataSet)) {\n return {\n flowPayload: payload,\n flowDataset: payload.flowDataSet,\n wrapper: 'flowDataSet',\n };\n }\n\n return {\n flowPayload: payload,\n flowDataset: payload,\n wrapper: 'direct',\n };\n}\n\nfunction extractFlowSummary(\n flowDataset: JsonRecord,\n wrapper: 'flowDataSet' | 'direct',\n): ProcessAutoBuildFlowSummary {\n const flowInformation = isRecord(flowDataset.flowInformation) ? flowDataset.flowInformation : {};\n const dataSetInformation = isRecord(flowInformation.dataSetInformation)\n ? flowInformation.dataSetInformation\n : {};\n const administrativeInformation = isRecord(flowDataset.administrativeInformation)\n ? flowDataset.administrativeInformation\n : {};\n const publicationAndOwnership = isRecord(administrativeInformation.publicationAndOwnership)\n ? administrativeInformation.publicationAndOwnership\n : {};\n const name = isRecord(dataSetInformation.name) ? dataSetInformation.name : {};\n\n return {\n wrapper,\n uuid:\n nonEmptyString(dataSetInformation['common:UUID']) ??\n nonEmptyString(flowDataset['@id']) ??\n null,\n version:\n nonEmptyString(publicationAndOwnership['common:dataSetVersion']) ??\n nonEmptyString(flowDataset['@version']) ??\n null,\n base_name: extractText(name.baseName),\n permanent_uri: nonEmptyString(publicationAndOwnership['common:permanentDataSetURI']) ?? null,\n };\n}\n\nfunction runIdToken(value: string | null | undefined, fallback: string): string {\n return sanitizeRunToken(value ?? '', fallback);\n}\n\nfunction buildProcessAutoBuildRunId(\n flowFilePath: string,\n operation: ProcessAutoBuildOperation,\n summary: ProcessAutoBuildFlowSummary,\n now: Date = new Date(),\n): string {\n const stem = path.basename(flowFilePath, path.extname(flowFilePath));\n const parts = stem.split('_');\n const flowCode = runIdToken(parts[0] || summary.base_name || summary.uuid, 'flow');\n const flowUuidShort = runIdToken(parts[1] || summary.uuid, 'unknown').slice(0, 8);\n const operationToken = operation === 'treat' ? 'treat' : 'produce';\n\n return `pfw_${flowCode}_${flowUuidShort}_${operationToken}_${buildUtcTimestamp(now)}`;\n}\n\nfunction resolveRunRoot(\n requestDir: string,\n outDirOverride: string | null | undefined,\n requestRunRoot: unknown,\n): string {\n const override = nonEmptyString(outDirOverride);\n if (override) {\n return path.resolve(requestDir, override);\n }\n\n const requestValue = nonEmptyString(requestRunRoot);\n if (requestValue) {\n return path.resolve(requestDir, requestValue);\n }\n\n throw new CliError(\n 'Missing required process auto-build run root. Provide --out-dir or request.workspace_run_root.',\n {\n code: 'PROCESS_AUTO_BUILD_RUN_ROOT_REQUIRED',\n exitCode: 2,\n },\n );\n}\n\nfunction normalizeSourceInputType(value: unknown): ProcessAutoBuildSourceInputType {\n const normalized = nonEmptyString(value);\n if (normalized === 'local_file' || normalized === 'local_text') {\n return normalized;\n }\n\n throw new CliError(\n \"process auto-build source_inputs[].type must be 'local_file' or 'local_text'.\",\n {\n code: 'PROCESS_AUTO_BUILD_SOURCE_INVALID',\n exitCode: 2,\n details: { value },\n },\n );\n}\n\nfunction normalizeIntendedRoles(value: unknown): string[] {\n if (!Array.isArray(value)) {\n return [];\n }\n\n return value\n .map((entry) => nonEmptyString(entry))\n .filter((entry): entry is string => Boolean(entry));\n}\n\nfunction normalizeSourceInputs(\n value: unknown,\n requestDir: string,\n evidenceIncomingDir: string,\n): NormalizedProcessAutoBuildSourceInput[] {\n if (value === undefined) {\n return [];\n }\n\n if (!Array.isArray(value)) {\n throw new CliError('process auto-build source_inputs must be an array when provided.', {\n code: 'PROCESS_AUTO_BUILD_SOURCE_INVALID',\n exitCode: 2,\n });\n }\n\n const seenIds = new Set<string>();\n\n return value.map((entry, index) => {\n if (!isRecord(entry)) {\n throw new CliError('process auto-build source_inputs entries must be objects.', {\n code: 'PROCESS_AUTO_BUILD_SOURCE_INVALID',\n exitCode: 2,\n details: { index },\n });\n }\n\n const sourceId = requiredRequestString(entry, 'source_id');\n if (seenIds.has(sourceId)) {\n throw new CliError(`Duplicate process auto-build source_id: ${sourceId}`, {\n code: 'PROCESS_AUTO_BUILD_SOURCE_DUPLICATE',\n exitCode: 2,\n });\n }\n seenIds.add(sourceId);\n\n const sourcePath = path.resolve(requestDir, requiredRequestString(entry, 'path'));\n if (!existsSync(sourcePath)) {\n throw new CliError(`process auto-build source input not found: ${sourcePath}`, {\n code: 'PROCESS_AUTO_BUILD_SOURCE_NOT_FOUND',\n exitCode: 2,\n });\n }\n\n const extension = path.extname(sourcePath);\n const artifactFileName = `${String(index + 1).padStart(2, '0')}_${runIdToken(sourceId, 'source')}${extension}`;\n\n return {\n source_id: sourceId,\n type: normalizeSourceInputType(entry.type),\n source_path: sourcePath,\n artifact_file_name: artifactFileName,\n artifact_path: path.join(evidenceIncomingDir, artifactFileName),\n intended_roles: normalizeIntendedRoles(entry.intended_roles),\n };\n });\n}\n\nfunction buildLayout(runRoot: string, runId: string): ProcessAutoBuildLayout {\n const collectionDir = path.dirname(runRoot);\n const layout: RunLayout = {\n namespace: 'process_from_flow',\n runId,\n artifactsRoot: path.dirname(collectionDir),\n collectionDir,\n runRoot,\n cacheDir: path.join(runRoot, 'cache'),\n inputsDir: path.join(runRoot, 'input'),\n outputsDir: path.join(runRoot, 'exports'),\n reportsDir: path.join(runRoot, 'reports'),\n logsDir: path.join(runRoot, 'logs'),\n manifestsDir: path.join(runRoot, 'manifests'),\n latestRunIdPath: path.join(collectionDir, '.latest_run_id'),\n };\n\n return {\n ...layout,\n requestDir: path.join(runRoot, 'request'),\n evidenceDir: path.join(runRoot, 'evidence'),\n evidenceIncomingDir: path.join(runRoot, 'evidence', 'incoming'),\n evidenceNormalizedDir: path.join(runRoot, 'evidence', 'normalized'),\n evidenceTextDir: path.join(runRoot, 'evidence', 'text'),\n evidenceStructuredDir: path.join(runRoot, 'evidence', 'structured'),\n stageOutputsDir: path.join(runRoot, 'stage_outputs'),\n reviewsDir: path.join(runRoot, 'reviews'),\n requestSnapshotPath: path.join(runRoot, 'request', 'pff-request.json'),\n normalizedRequestPath: path.join(runRoot, 'request', 'request.normalized.json'),\n sourcePolicyPath: path.join(runRoot, 'request', 'source-policy.json'),\n flowSummaryPath: path.join(runRoot, 'manifests', 'flow-summary.json'),\n inputManifestPath: path.join(runRoot, 'input', 'input_manifest.json'),\n buildPlanPath: path.join(runRoot, 'manifests', 'process-build-plan.json'),\n assemblyPlanPath: path.join(runRoot, 'manifests', 'assembly-plan.json'),\n lineageManifestPath: path.join(runRoot, 'manifests', 'lineage-manifest.json'),\n invocationIndexPath: path.join(runRoot, 'manifests', 'invocation-index.json'),\n runManifestPath: path.join(runRoot, 'manifests', 'run-manifest.json'),\n reportPath: path.join(runRoot, 'reports', 'process-auto-build-report.json'),\n statePath: path.join(runRoot, 'cache', 'process_from_flow_state.json'),\n handoffSummaryPath: path.join(runRoot, 'cache', 'agent_handoff_summary.json'),\n processExportsDir: path.join(runRoot, 'exports', 'processes'),\n sourceExportsDir: path.join(runRoot, 'exports', 'sources'),\n };\n}\n\nfunction ensureEmptyRunRoot(runRoot: string): void {\n if (!existsSync(runRoot)) {\n return;\n }\n\n const entries = readdirSync(runRoot);\n if (entries.length > 0) {\n throw new CliError(`process auto-build run root already exists and is not empty: ${runRoot}`, {\n code: 'PROCESS_AUTO_BUILD_RUN_EXISTS',\n exitCode: 2,\n });\n }\n}\n\nfunction ensureProcessAutoBuildLayout(layout: ProcessAutoBuildLayout): void {\n ensureRunLayout(layout);\n [\n layout.requestDir,\n layout.evidenceDir,\n layout.evidenceIncomingDir,\n layout.evidenceNormalizedDir,\n layout.evidenceTextDir,\n layout.evidenceStructuredDir,\n layout.stageOutputsDir,\n layout.reviewsDir,\n layout.processExportsDir,\n layout.sourceExportsDir,\n ].forEach((dirPath) => {\n mkdirSync(dirPath, { recursive: true });\n });\n\n for (const stage of PROCESS_AUTO_BUILD_STAGES) {\n const stageDir = path.join(layout.stageOutputsDir, stage.id);\n mkdirSync(stageDir, { recursive: true });\n if (stage.createsCandidatesDir) {\n mkdirSync(path.join(stageDir, 'candidates'), { recursive: true });\n }\n }\n}\n\nfunction copyArtifactFile(sourcePath: string, targetPath: string, code: string): void {\n mkdirSync(path.dirname(targetPath), { recursive: true });\n try {\n copyFileSync(sourcePath, targetPath);\n } catch (error) {\n throw new CliError(`Failed to copy artifact file: ${sourcePath}`, {\n code,\n exitCode: 1,\n details: String(error),\n });\n }\n}\n\nfunction buildAssemblyPlan(runRoot: string): JsonRecord {\n return {\n schema_version: 1,\n stages: PROCESS_AUTO_BUILD_STAGES.map((stage) => ({\n id: stage.id,\n title: stage.title,\n status: 'pending',\n modules: stage.modules,\n output: stage.output,\n candidates_dir: stage.createsCandidatesDir\n ? path.posix.join(path.posix.dirname(stage.output), 'candidates')\n : null,\n output_abs: path.join(runRoot, stage.output),\n })),\n };\n}\n\nfunction flowReferencePropertySummary(flowDataset: JsonRecord): {\n reference_property: string;\n reference_property_id: string | null;\n reference_unit: string | null;\n} {\n const flowInformation = isRecord(flowDataset.flowInformation) ? flowDataset.flowInformation : {};\n const quantitativeReference = isRecord(flowInformation.quantitativeReference)\n ? flowInformation.quantitativeReference\n : {};\n const referenceId = nonEmptyString(quantitativeReference.referenceToReferenceFlowProperty);\n const flowProperties = isRecord(flowDataset.flowProperties) ? flowDataset.flowProperties : {};\n const propertyRows = Array.isArray(flowProperties.flowProperty)\n ? flowProperties.flowProperty\n : flowProperties.flowProperty\n ? [flowProperties.flowProperty]\n : [];\n const referenceProperty = propertyRows.find(\n (entry) =>\n isRecord(entry) && nonEmptyString(entry['@dataSetInternalID']) === (referenceId ?? '0'),\n );\n const propertyRef =\n isRecord(referenceProperty) && isRecord(referenceProperty.referenceToFlowPropertyDataSet)\n ? referenceProperty.referenceToFlowPropertyDataSet\n : {};\n const shortDescription = isRecord(propertyRef['common:shortDescription'])\n ? propertyRef['common:shortDescription']\n : {};\n const propertyText =\n extractText(shortDescription) ?? extractText(propertyRef['common:shortDescription']);\n\n return {\n reference_property: propertyText ?? 'Reference flow property',\n reference_property_id: nonEmptyString(propertyRef['@refObjectId']),\n reference_unit: null,\n };\n}\n\nfunction buildInitialProcessBuildPlan(\n normalized: NormalizedProcessAutoBuildRequest,\n flowArtifactPath: string,\n): JsonRecord {\n const flowProperty = flowReferencePropertySummary(normalized.flow_dataset);\n const referenceFlowId =\n normalized.flow_summary.uuid ??\n nonEmptyString(normalized.flow_dataset['@id']) ??\n sanitizeRunToken(normalized.flow_summary.base_name ?? normalized.run_id, 'reference-flow');\n const referenceFlowVersion = normalized.flow_summary.version ?? '00.00.000';\n const baseName = normalized.flow_summary.base_name\n ? `${normalized.operation === 'treat' ? 'Treatment of' : 'Production of'} ${normalized.flow_summary.base_name}`\n : `${normalized.operation === 'treat' ? 'Treatment' : 'Production'} process from reference flow`;\n\n return {\n schema_version: 1,\n kind: 'process',\n ruleset: {\n id: 'process-authoring/strict',\n version: '1',\n },\n target: {\n geography: 'GLO',\n technology_route:\n normalized.operation === 'treat'\n ? 'Treatment route to be evidenced during process auto-build'\n : 'Production route to be evidenced during process auto-build',\n classification_path: [\n 'Technosphere',\n normalized.operation === 'treat' ? 'Treatment' : 'Production',\n flowProperty.reference_property,\n normalized.flow_summary.base_name ?? 'Reference flow',\n ],\n },\n identity_decision: {\n decision: 'create_new',\n rationale:\n 'Initial process auto-build scaffold; identity preflight must be rerun with remote/local candidates before write.',\n },\n evidence_manifest: {\n sources: [\n {\n id: `flow:${referenceFlowId}`,\n type: 'input_flow_dataset',\n path: flowArtifactPath,\n title: normalized.flow_summary.base_name ?? referenceFlowId,\n version: referenceFlowVersion,\n },\n ...normalized.source_inputs.map((source) => ({\n id: source.source_id,\n type: source.type,\n path: source.artifact_path,\n title: source.artifact_file_name,\n intended_roles: source.intended_roles,\n })),\n ],\n field_bindings: [\n { field_path: 'target', source_id: `flow:${referenceFlowId}` },\n { field_path: 'identity_decision.decision', source_id: `flow:${referenceFlowId}` },\n { field_path: 'unit_of_analysis', source_id: `flow:${referenceFlowId}` },\n { field_path: 'name_plan.base_name', source_id: `flow:${referenceFlowId}` },\n { field_path: 'target.geography', source_id: `flow:${referenceFlowId}` },\n { field_path: 'target.technology_route', source_id: `flow:${referenceFlowId}` },\n {\n field_path: 'quantitative_reference_plan.reference_flow_id',\n source_id: `flow:${referenceFlowId}`,\n },\n ],\n },\n unit_of_analysis: {\n target_kind: normalized.operation === 'treat' ? 'treatment' : 'process_from_flow_scaffold',\n decision: 'manual_review',\n functional_unit: {\n what:\n normalized.operation === 'treat'\n ? `treat ${normalized.flow_summary.base_name ?? 'the reference flow'}`\n : `produce ${normalized.flow_summary.base_name ?? 'the reference flow'}`,\n how_much: `1 ${flowProperty.reference_unit ?? flowProperty.reference_property}`,\n how_well: 'to be determined from source evidence before materialization',\n how_long: 'not determined in the initial scaffold',\n },\n reference_flow: {\n flow_identity: normalized.flow_summary.base_name ?? referenceFlowId,\n reference_unit: flowProperty.reference_unit ?? flowProperty.reference_property,\n reference_amount: 1,\n flow_property: flowProperty.reference_property,\n },\n declared_unit_allowed: false,\n scaling_evidence_status: 'source_required',\n notes: [\n 'Initial scaffold only. A skill/Codex workflow must revise unit_of_analysis before build-plan materialize.',\n ],\n },\n name_plan: {\n base_name: baseName,\n treatment_standards_routes:\n normalized.operation === 'treat' ? 'treatment route' : 'production route',\n mix_and_location_types: 'global average',\n functional_unit_flow_properties:\n flowProperty.reference_unit ?? flowProperty.reference_property,\n },\n quantitative_reference_plan: {\n reference_flow_id: referenceFlowId,\n reference_flow_version: referenceFlowVersion,\n reference_flow_name: normalized.flow_summary.base_name ?? referenceFlowId,\n reference_flow_internal_id: '1',\n mean_amount: '1.0',\n resulting_amount: '1.0',\n reference_unit: flowProperty.reference_unit ?? flowProperty.reference_property,\n },\n flow_property_plan: flowProperty,\n exchange_plan: {\n exchanges: [],\n },\n materialization_readiness: {\n status: 'scaffold_only',\n next_required_steps: [\n 'replace scaffold unit_of_analysis with a skill-authored decision artifact',\n 'run process identity-preflight with local and remote candidates',\n 'replace scaffold geography, technology, classification, exchange values, and annual volume with evidence-backed values',\n 'run process build-plan validate/materialize before save-draft or publish-build',\n ],\n },\n };\n}\n\nfunction buildLineageManifest(normalized: NormalizedProcessAutoBuildRequest): JsonRecord {\n return {\n schema_version: 1,\n request_id: normalized.request_id,\n run_id: normalized.run_id,\n flow: {\n source_path: normalized.flow_file,\n uuid: normalized.flow_summary.uuid,\n version: normalized.flow_summary.version,\n base_name: normalized.flow_summary.base_name,\n },\n source_inputs: normalized.source_inputs.map((source) => ({\n source_id: source.source_id,\n type: source.type,\n source_path: source.source_path,\n artifact_path: source.artifact_path,\n intended_roles: source.intended_roles,\n })),\n };\n}\n\nfunction buildInvocationIndex(\n normalized: NormalizedProcessAutoBuildRequest,\n options: RunProcessAutoBuildOptions,\n reportPath: string,\n now: Date,\n): JsonRecord {\n const command = ['process', 'auto-build', '--input', options.inputPath];\n if (options.outDir) {\n command.push('--out-dir', options.outDir);\n }\n\n return {\n schema_version: 1,\n invocations: [\n {\n command,\n cwd: options.cwd ?? process.cwd(),\n created_at: now.toISOString(),\n request_path: normalized.request_path,\n report_path: reportPath,\n },\n ],\n };\n}\n\nfunction buildStepMarkers(now: Date): JsonRecord {\n const completedAt = now.toISOString();\n const markers: JsonRecord = {\n intake_prepared: {\n status: 'completed',\n completed_at: completedAt,\n },\n };\n\n PROCESS_AUTO_BUILD_STAGES.forEach((stage) => {\n markers[stage.id] = {\n status: 'pending',\n };\n });\n\n return markers;\n}\n\nfunction buildInitialState(\n normalized: NormalizedProcessAutoBuildRequest,\n flowArtifactPath: string,\n now: Date,\n): JsonRecord {\n return {\n schema_version: 1,\n build_status: 'intake_prepared',\n next_stage: PROCESS_AUTO_BUILD_STAGES[0]?.id ?? null,\n run_id: normalized.run_id,\n request_id: normalized.request_id,\n flow_path: normalized.flow_file,\n flow_artifact_path: flowArtifactPath,\n flow_dataset: normalized.flow_dataset,\n flow_summary: normalized.flow_summary,\n operation: normalized.operation,\n source_inputs: normalized.source_inputs,\n source_policy: normalized.source_policy,\n scientific_references: {\n source_inputs: normalized.source_inputs.map((source) => ({\n source_id: source.source_id,\n type: source.type,\n intended_roles: source.intended_roles,\n source_path: source.source_path,\n })),\n },\n processes: [],\n process_exchanges: [],\n matched_process_exchanges: [],\n process_datasets: [],\n source_datasets: [],\n coverage_metrics: {},\n coverage_history: [],\n step_markers: buildStepMarkers(now),\n };\n}\n\nfunction buildNextActions(layout: ProcessAutoBuildLayout): string[] {\n return [\n `inspect: ${layout.normalizedRequestPath}`,\n `inspect: ${layout.statePath}`,\n `inspect: ${layout.assemblyPlanPath}`,\n `future: tiangong-lca process resume-build --run-dir ${layout.runRoot}`,\n `future: tiangong-lca process publish-build --run-dir ${layout.runRoot}`,\n ];\n}\n\nfunction buildAgentHandoffSummary(\n normalized: NormalizedProcessAutoBuildRequest,\n layout: ProcessAutoBuildLayout,\n flowArtifactPath: string,\n now: Date,\n): JsonRecord {\n return {\n schema_version: 1,\n generated_at_utc: now.toISOString(),\n run_id: normalized.run_id,\n command: 'process auto-build',\n flow_path: normalized.flow_file,\n operation: normalized.operation,\n stop_after: null,\n process_count: 0,\n matched_exchange_count: 0,\n process_dataset_count: 0,\n source_dataset_count: 0,\n remaining_placeholder_refs: 0,\n placeholder_examples: [],\n publish_summary: {},\n artifacts: {\n state_path: layout.statePath,\n timing_report: null,\n publish_summary: null,\n llm_cost_report: null,\n process_update_report: null,\n flow_auto_build_manifest: null,\n request_snapshot: layout.requestSnapshotPath,\n normalized_request: layout.normalizedRequestPath,\n assembly_plan: layout.assemblyPlanPath,\n build_plan: layout.buildPlanPath,\n flow_copy: flowArtifactPath,\n },\n next_actions: buildNextActions(layout),\n extra: {\n status: 'prepared_local_process_auto_build_run',\n request_id: normalized.request_id,\n source_input_count: normalized.source_inputs.length,\n },\n };\n}\n\nfunction buildReport(\n normalized: NormalizedProcessAutoBuildRequest,\n layout: ProcessAutoBuildLayout,\n flowArtifactPath: string,\n now: Date,\n): ProcessAutoBuildReport {\n return {\n schema_version: 1,\n generated_at_utc: now.toISOString(),\n status: 'prepared_local_process_auto_build_run',\n request_path: normalized.request_path,\n request_id: normalized.request_id,\n run_id: normalized.run_id,\n run_root: normalized.run_root,\n operation: normalized.operation,\n flow: {\n source_path: normalized.flow_file,\n artifact_path: flowArtifactPath,\n wrapper: normalized.flow_summary.wrapper,\n uuid: normalized.flow_summary.uuid,\n version: normalized.flow_summary.version,\n base_name: normalized.flow_summary.base_name,\n },\n source_input_count: normalized.source_inputs.length,\n stage_count: PROCESS_AUTO_BUILD_STAGES.length,\n files: {\n request_snapshot: layout.requestSnapshotPath,\n normalized_request: layout.normalizedRequestPath,\n source_policy: layout.sourcePolicyPath,\n flow_summary: layout.flowSummaryPath,\n input_manifest: layout.inputManifestPath,\n build_plan: layout.buildPlanPath,\n assembly_plan: layout.assemblyPlanPath,\n lineage_manifest: layout.lineageManifestPath,\n invocation_index: layout.invocationIndexPath,\n run_manifest: layout.runManifestPath,\n state: layout.statePath,\n handoff_summary: layout.handoffSummaryPath,\n report: layout.reportPath,\n },\n next_actions: buildNextActions(layout),\n };\n}\n\nexport function normalizeProcessAutoBuildRequest(\n input: unknown,\n options: {\n inputPath: string;\n outDir?: string | null;\n now?: Date;\n requestIdOverride?: string;\n runIdOverride?: string;\n },\n): NormalizedProcessAutoBuildRequest {\n const request = requiredRequestObject(input);\n const requestDir = path.dirname(path.resolve(options.inputPath));\n const operation = normalizeOperation(request.operation);\n const flowFile = path.resolve(requestDir, requiredRequestString(request, 'flow_file'));\n const flowPayload = readJsonInput(flowFile);\n const { flowDataset, wrapper } = extractFlowDatasetRoot(flowPayload);\n const flowSummary = extractFlowSummary(flowDataset, wrapper);\n const runId =\n nonEmptyString(options.runIdOverride) ??\n nonEmptyString(request.run_id) ??\n buildProcessAutoBuildRunId(flowFile, operation, flowSummary, options.now);\n const runRoot = resolveRunRoot(requestDir, options.outDir, request.workspace_run_root);\n const layout = buildLayout(runRoot, runId);\n\n return {\n schema_version: 1,\n request_path: path.resolve(options.inputPath),\n request_id:\n nonEmptyString(options.requestIdOverride) ??\n nonEmptyString(request.request_id) ??\n `pff-${runId}`,\n flow_file: flowFile,\n flow_summary: flowSummary,\n flow_dataset: flowDataset,\n operation,\n run_id: runId,\n run_root: runRoot,\n source_inputs: normalizeSourceInputs(\n request.source_inputs,\n requestDir,\n layout.evidenceIncomingDir,\n ),\n source_policy: normalizeSourcePolicy(request.source_policy),\n };\n}\n\nexport async function runProcessAutoBuild(\n options: RunProcessAutoBuildOptions,\n): Promise<ProcessAutoBuildReport> {\n const input = options.inputValue ?? readJsonInput(options.inputPath);\n const now = options.now ?? new Date();\n const normalized = normalizeProcessAutoBuildRequest(input, {\n inputPath: options.inputPath,\n outDir: options.outDir,\n now,\n requestIdOverride: options.requestIdOverride,\n runIdOverride: options.runIdOverride,\n });\n const layout = buildLayout(normalized.run_root, normalized.run_id);\n const flowArtifactPath = path.join(layout.inputsDir, path.basename(normalized.flow_file));\n\n ensureEmptyRunRoot(layout.runRoot);\n ensureProcessAutoBuildLayout(layout);\n\n copyArtifactFile(normalized.flow_file, flowArtifactPath, 'PROCESS_AUTO_BUILD_FLOW_COPY_FAILED');\n normalized.source_inputs.forEach((source) => {\n copyArtifactFile(\n source.source_path,\n source.artifact_path,\n 'PROCESS_AUTO_BUILD_SOURCE_COPY_FAILED',\n );\n });\n\n const request = requiredRequestObject(input);\n writeJsonArtifact(layout.requestSnapshotPath, request);\n writeJsonArtifact(layout.normalizedRequestPath, normalized);\n writeJsonArtifact(layout.sourcePolicyPath, normalized.source_policy);\n writeJsonArtifact(layout.flowSummaryPath, normalized.flow_summary);\n writeJsonArtifact(layout.inputManifestPath, {\n run_id: normalized.run_id,\n flow_path: normalized.flow_file,\n flow_artifact_path: flowArtifactPath,\n operation: normalized.operation,\n build_plan_path: layout.buildPlanPath,\n });\n writeJsonArtifact(\n layout.buildPlanPath,\n buildInitialProcessBuildPlan(normalized, flowArtifactPath),\n );\n writeJsonArtifact(layout.assemblyPlanPath, buildAssemblyPlan(layout.runRoot));\n writeJsonArtifact(layout.lineageManifestPath, buildLineageManifest(normalized));\n writeJsonArtifact(\n layout.invocationIndexPath,\n buildInvocationIndex(normalized, options, layout.reportPath, now),\n );\n writeJsonArtifact(\n layout.runManifestPath,\n buildRunManifest({\n layout,\n command: options.outDir\n ? ['process', 'auto-build', '--input', options.inputPath, '--out-dir', options.outDir]\n : ['process', 'auto-build', '--input', options.inputPath],\n cwd: options.cwd,\n createdAt: now,\n }),\n );\n\n const state = buildInitialState(normalized, flowArtifactPath, now);\n await withStateFileLock(\n layout.statePath,\n { reason: 'process-auto-build.initial_state', now },\n () => writeJsonArtifact(layout.statePath, state),\n );\n\n const handoff = buildAgentHandoffSummary(normalized, layout, flowArtifactPath, now);\n writeJsonArtifact(layout.handoffSummaryPath, handoff);\n writeLatestRunId(layout, normalized.run_id);\n\n const report = buildReport(normalized, layout, flowArtifactPath, now);\n writeJsonArtifact(layout.reportPath, report);\n return report;\n}\n\n// Exposed for deterministic unit coverage of process auto-build normalization and scaffold helpers.\nexport const __testInternals = {\n PROCESS_AUTO_BUILD_STAGES,\n extractText,\n normalizeOperation,\n normalizeSourcePolicy,\n extractFlowDatasetRoot,\n extractFlowSummary,\n buildProcessAutoBuildRunId,\n buildLayout,\n buildAssemblyPlan,\n buildInitialProcessBuildPlan,\n buildLineageManifest,\n buildInvocationIndex,\n buildInitialState,\n buildAgentHandoffSummary,\n buildReport,\n};\n"]}
|
|
@@ -2,6 +2,7 @@ import path from 'node:path';
|
|
|
2
2
|
import { writeJsonArtifact } from './artifacts.js';
|
|
3
3
|
import { CliError } from './errors.js';
|
|
4
4
|
import { readJsonInput } from './io.js';
|
|
5
|
+
import { getRuntimeRuleset, resolveRuntimeRuleId } from './runtime-rulesets.js';
|
|
5
6
|
import { deriveSupabaseProjectBaseUrl, requireSupabaseRestRuntime } from './supabase-client.js';
|
|
6
7
|
import { resolveSupabaseUserSession } from './supabase-session.js';
|
|
7
8
|
const DEFAULT_TIMEOUT_MS = 30_000;
|
|
@@ -671,6 +672,14 @@ function analyzeGroups(groups, remoteById, referenceHits) {
|
|
|
671
672
|
group_id: group.group_id,
|
|
672
673
|
group_pattern: groupPattern,
|
|
673
674
|
exact_duplicate: exactDuplicate,
|
|
675
|
+
...(exactDuplicate
|
|
676
|
+
? {
|
|
677
|
+
rule_id: 'process_exact_duplicate_fingerprint',
|
|
678
|
+
methodology_rule_id: resolveRuntimeRuleId('process-dedup/default', 'process_exact_duplicate_fingerprint'),
|
|
679
|
+
severity: 'blocker',
|
|
680
|
+
blocker: true,
|
|
681
|
+
}
|
|
682
|
+
: {}),
|
|
674
683
|
processes,
|
|
675
684
|
});
|
|
676
685
|
if (!exactDuplicate) {
|
|
@@ -728,6 +737,31 @@ function analyzeGroups(groups, remoteById, referenceHits) {
|
|
|
728
737
|
deletePlanGroups,
|
|
729
738
|
};
|
|
730
739
|
}
|
|
740
|
+
function buildDedupGate(duplicateGroups) {
|
|
741
|
+
const ruleset = getRuntimeRuleset('process-dedup/default');
|
|
742
|
+
const blockers = duplicateGroups
|
|
743
|
+
.filter((group) => group.exact_duplicate)
|
|
744
|
+
.map((group) => ({
|
|
745
|
+
group_id: group.group_id,
|
|
746
|
+
code: 'process_exact_duplicate_fingerprint',
|
|
747
|
+
methodology_rule_id: resolveRuntimeRuleId(ruleset.id, 'process_exact_duplicate_fingerprint'),
|
|
748
|
+
severity: 'blocker',
|
|
749
|
+
message: 'Process group has an exact duplicate normalized exchange fingerprint and must be resolved before creating or publishing another process.',
|
|
750
|
+
}));
|
|
751
|
+
return {
|
|
752
|
+
status: blockers.length > 0 ? 'blocked' : 'passed',
|
|
753
|
+
ruleset_id: ruleset.id,
|
|
754
|
+
ruleset_version: ruleset.version,
|
|
755
|
+
ruleset_source_version: ruleset.source_version,
|
|
756
|
+
ruleset_rule_ids: ruleset.rule_ids,
|
|
757
|
+
counts: {
|
|
758
|
+
duplicate_groups: duplicateGroups.length,
|
|
759
|
+
blocker_groups: blockers.length,
|
|
760
|
+
},
|
|
761
|
+
blockers,
|
|
762
|
+
next_action: blockers.length > 0 ? 'resolve_duplicate_processes' : 'continue',
|
|
763
|
+
};
|
|
764
|
+
}
|
|
731
765
|
export async function runProcessDedupReview(options) {
|
|
732
766
|
const inputPath = requiredNonEmpty(options.inputPath, '--input', 'PROCESS_DEDUP_INPUT_REQUIRED');
|
|
733
767
|
const outDir = requiredNonEmpty(options.outDir, '--out-dir', 'PROCESS_DEDUP_OUT_DIR_REQUIRED');
|
|
@@ -809,6 +843,7 @@ export async function runProcessDedupReview(options) {
|
|
|
809
843
|
}
|
|
810
844
|
}
|
|
811
845
|
const analysis = analyzeGroups(document.groups, remoteById, referenceHits);
|
|
846
|
+
const gate = buildDedupGate(analysis.duplicateGroups);
|
|
812
847
|
const duplicateGroupsPath = path.join(resolvedOutDir, 'outputs', 'duplicate-groups.json');
|
|
813
848
|
const deletePlanPath = path.join(resolvedOutDir, 'outputs', 'delete-plan.json');
|
|
814
849
|
writeJsonArtifact(duplicateGroupsPath, {
|
|
@@ -816,6 +851,11 @@ export async function runProcessDedupReview(options) {
|
|
|
816
851
|
generated_at_utc: generatedAtUtc,
|
|
817
852
|
input_file: resolvedInputPath,
|
|
818
853
|
source_label: document.sourceLabel,
|
|
854
|
+
ruleset_id: gate.ruleset_id,
|
|
855
|
+
ruleset_version: gate.ruleset_version,
|
|
856
|
+
ruleset_source_version: gate.ruleset_source_version,
|
|
857
|
+
ruleset_rule_ids: gate.ruleset_rule_ids,
|
|
858
|
+
gate,
|
|
819
859
|
remote_status: remoteStatus,
|
|
820
860
|
groups: analysis.duplicateGroups,
|
|
821
861
|
});
|
|
@@ -824,6 +864,11 @@ export async function runProcessDedupReview(options) {
|
|
|
824
864
|
generated_at_utc: generatedAtUtc,
|
|
825
865
|
input_file: resolvedInputPath,
|
|
826
866
|
source_label: document.sourceLabel,
|
|
867
|
+
ruleset_id: gate.ruleset_id,
|
|
868
|
+
ruleset_version: gate.ruleset_version,
|
|
869
|
+
ruleset_source_version: gate.ruleset_source_version,
|
|
870
|
+
ruleset_rule_ids: gate.ruleset_rule_ids,
|
|
871
|
+
gate,
|
|
827
872
|
remote_status: remoteStatus,
|
|
828
873
|
groups: analysis.deletePlanGroups,
|
|
829
874
|
});
|
|
@@ -837,6 +882,11 @@ export async function runProcessDedupReview(options) {
|
|
|
837
882
|
group_count: analysis.duplicateGroups.length,
|
|
838
883
|
exact_duplicate_group_count: analysis.duplicateGroups.filter((group) => group.exact_duplicate)
|
|
839
884
|
.length,
|
|
885
|
+
ruleset_id: gate.ruleset_id,
|
|
886
|
+
ruleset_version: gate.ruleset_version,
|
|
887
|
+
ruleset_source_version: gate.ruleset_source_version,
|
|
888
|
+
ruleset_rule_ids: gate.ruleset_rule_ids,
|
|
889
|
+
gate,
|
|
840
890
|
remote_status: remoteStatus,
|
|
841
891
|
files: {
|
|
842
892
|
input_manifest: inputManifestPath,
|
|
@@ -849,6 +899,7 @@ export async function runProcessDedupReview(options) {
|
|
|
849
899
|
}
|
|
850
900
|
export const __testInternals = {
|
|
851
901
|
analyzeGroups,
|
|
902
|
+
buildDedupGate,
|
|
852
903
|
collectReferenceHits,
|
|
853
904
|
detectGroupPattern,
|
|
854
905
|
errorMessage,
|