@tiangong-lca/cli 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (96) hide show
  1. package/README.md +368 -0
  2. package/bin/tiangong.d.ts +1 -0
  3. package/bin/tiangong.js +32 -0
  4. package/dist/scripts/assert-full-coverage.js +77 -0
  5. package/dist/scripts/assert-full-coverage.js.map +1 -0
  6. package/dist/src/cli.js +2740 -0
  7. package/dist/src/cli.js.map +1 -0
  8. package/dist/src/lib/artifacts.js +86 -0
  9. package/dist/src/lib/artifacts.js.map +1 -0
  10. package/dist/src/lib/dotenv.js +36 -0
  11. package/dist/src/lib/dotenv.js.map +1 -0
  12. package/dist/src/lib/env.js +139 -0
  13. package/dist/src/lib/env.js.map +1 -0
  14. package/dist/src/lib/errors.js +38 -0
  15. package/dist/src/lib/errors.js.map +1 -0
  16. package/dist/src/lib/flow-build-alias-map.js +299 -0
  17. package/dist/src/lib/flow-build-alias-map.js.map +1 -0
  18. package/dist/src/lib/flow-get.js +81 -0
  19. package/dist/src/lib/flow-get.js.map +1 -0
  20. package/dist/src/lib/flow-governance.js +164 -0
  21. package/dist/src/lib/flow-governance.js.map +1 -0
  22. package/dist/src/lib/flow-list.js +187 -0
  23. package/dist/src/lib/flow-list.js.map +1 -0
  24. package/dist/src/lib/flow-publish-reviewed-data.js +808 -0
  25. package/dist/src/lib/flow-publish-reviewed-data.js.map +1 -0
  26. package/dist/src/lib/flow-publish-version.js +541 -0
  27. package/dist/src/lib/flow-publish-version.js.map +1 -0
  28. package/dist/src/lib/flow-read.js +310 -0
  29. package/dist/src/lib/flow-read.js.map +1 -0
  30. package/dist/src/lib/flow-regen-product.js +1396 -0
  31. package/dist/src/lib/flow-regen-product.js.map +1 -0
  32. package/dist/src/lib/flow-remediate.js +821 -0
  33. package/dist/src/lib/flow-remediate.js.map +1 -0
  34. package/dist/src/lib/http.js +45 -0
  35. package/dist/src/lib/http.js.map +1 -0
  36. package/dist/src/lib/io.js +30 -0
  37. package/dist/src/lib/io.js.map +1 -0
  38. package/dist/src/lib/kb-search.js +83 -0
  39. package/dist/src/lib/kb-search.js.map +1 -0
  40. package/dist/src/lib/lifecyclemodel-auto-build.js +1328 -0
  41. package/dist/src/lib/lifecyclemodel-auto-build.js.map +1 -0
  42. package/dist/src/lib/lifecyclemodel-orchestrate.js +1556 -0
  43. package/dist/src/lib/lifecyclemodel-orchestrate.js.map +1 -0
  44. package/dist/src/lib/lifecyclemodel-publish-build.js +296 -0
  45. package/dist/src/lib/lifecyclemodel-publish-build.js.map +1 -0
  46. package/dist/src/lib/lifecyclemodel-publish-resulting-process.js +101 -0
  47. package/dist/src/lib/lifecyclemodel-publish-resulting-process.js.map +1 -0
  48. package/dist/src/lib/lifecyclemodel-resulting-process.js +1152 -0
  49. package/dist/src/lib/lifecyclemodel-resulting-process.js.map +1 -0
  50. package/dist/src/lib/lifecyclemodel-validate-build.js +238 -0
  51. package/dist/src/lib/lifecyclemodel-validate-build.js.map +1 -0
  52. package/dist/src/lib/llm.js +383 -0
  53. package/dist/src/lib/llm.js.map +1 -0
  54. package/dist/src/lib/process-auto-build.js +717 -0
  55. package/dist/src/lib/process-auto-build.js.map +1 -0
  56. package/dist/src/lib/process-batch-build.js +409 -0
  57. package/dist/src/lib/process-batch-build.js.map +1 -0
  58. package/dist/src/lib/process-get.js +66 -0
  59. package/dist/src/lib/process-get.js.map +1 -0
  60. package/dist/src/lib/process-publish-build.js +451 -0
  61. package/dist/src/lib/process-publish-build.js.map +1 -0
  62. package/dist/src/lib/process-resume-build.js +364 -0
  63. package/dist/src/lib/process-resume-build.js.map +1 -0
  64. package/dist/src/lib/publish.js +562 -0
  65. package/dist/src/lib/publish.js.map +1 -0
  66. package/dist/src/lib/remote.js +88 -0
  67. package/dist/src/lib/remote.js.map +1 -0
  68. package/dist/src/lib/review-flow.js +1110 -0
  69. package/dist/src/lib/review-flow.js.map +1 -0
  70. package/dist/src/lib/review-lifecyclemodel.js +727 -0
  71. package/dist/src/lib/review-lifecyclemodel.js.map +1 -0
  72. package/dist/src/lib/review-process.js +702 -0
  73. package/dist/src/lib/review-process.js.map +1 -0
  74. package/dist/src/lib/run.js +106 -0
  75. package/dist/src/lib/run.js.map +1 -0
  76. package/dist/src/lib/state-lock.js +150 -0
  77. package/dist/src/lib/state-lock.js.map +1 -0
  78. package/dist/src/lib/supabase-client.js +269 -0
  79. package/dist/src/lib/supabase-client.js.map +1 -0
  80. package/dist/src/lib/supabase-json-ordered-write.js +186 -0
  81. package/dist/src/lib/supabase-json-ordered-write.js.map +1 -0
  82. package/dist/src/lib/supabase-rest.js +138 -0
  83. package/dist/src/lib/supabase-rest.js.map +1 -0
  84. package/dist/src/lib/supabase-session.js +424 -0
  85. package/dist/src/lib/supabase-session.js.map +1 -0
  86. package/dist/src/lib/tidas-sdk-package-validator.js +493 -0
  87. package/dist/src/lib/tidas-sdk-package-validator.js.map +1 -0
  88. package/dist/src/lib/unstructured.js +203 -0
  89. package/dist/src/lib/unstructured.js.map +1 -0
  90. package/dist/src/lib/user-api-key.js +75 -0
  91. package/dist/src/lib/user-api-key.js.map +1 -0
  92. package/dist/src/lib/validation.js +191 -0
  93. package/dist/src/lib/validation.js.map +1 -0
  94. package/dist/src/main.js +38 -0
  95. package/dist/src/main.js.map +1 -0
  96. package/package.json +81 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"flow-publish-reviewed-data.js","sourceRoot":"","sources":["../../../src/lib/flow-publish-reviewed-data.ts"],"names":[],"mappings":"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","sourcesContent":["import { existsSync } from 'node:fs';\nimport path from 'node:path';\nimport { writeJsonArtifact, writeJsonLinesArtifact } from './artifacts.js';\nimport { CliError } from './errors.js';\nimport {\n coerceText,\n datasetPayloadFromRow,\n deepGet,\n extractFlowRecord,\n isRecord,\n listify,\n loadRowsFromFile,\n type FlowRecord,\n type JsonRecord,\n} from './flow-governance.js';\nimport {\n runFlowPublishVersion,\n type FlowPublishVersionReport,\n type RunFlowPublishVersionOptions,\n} from './flow-publish-version.js';\nimport type { FetchLike } from './http.js';\nimport {\n hasSupabaseRestRuntime,\n syncSupabaseJsonOrderedRecord,\n type SupabaseJsonOrderedWriteOperation,\n} from './supabase-json-ordered-write.js';\n\nconst DEFAULT_MAX_WORKERS = 4;\nconst LEGACY_OUTPUT_PREFIX = 'flows_tidas_sdk_plus_classification';\n\nexport type FlowPublishPolicy = 'skip' | 'append_only_bump' | 'upsert_current_version';\nexport type ProcessPublishPolicy = FlowPublishPolicy;\n\ntype FlowPublishVersionCompatMode = 'dry_run' | 'commit';\n\ntype FlowVersionMapEntry = {\n id: string;\n source_version: string;\n target_version: string;\n};\n\ntype ProcessIdentity = {\n id: string;\n version: string;\n name: string;\n};\n\ntype FlowIndex = {\n byUuidVersion: Record<string, FlowRecord>;\n};\n\ntype SkippedUnchangedFlowRow = {\n entity_type: 'flow';\n entity_id: string;\n entity_name: string;\n version: string;\n reason: 'unchanged_vs_original_rows_file';\n};\n\ntype PreparedFlowPlan = {\n entity_type: 'flow';\n entity_id: string;\n entity_name: string;\n original_version: string;\n publish_version: string;\n version_strategy: 'keep_current' | 'bump';\n publish_policy: FlowPublishPolicy;\n row: JsonRecord;\n};\n\ntype PreparedProcessPlan = {\n entity_type: 'process';\n entity_id: string;\n entity_name: string;\n original_version: string;\n publish_version: string;\n version_strategy: 'keep_current' | 'bump';\n publish_policy: ProcessPublishPolicy;\n row: JsonRecord;\n};\n\ntype ProcessFlowRefRewriteEvidence = {\n process_id: string;\n process_version_before_publish: string;\n process_name: string;\n exchange_internal_id: string;\n source_flow_id: string;\n source_flow_version: string;\n target_flow_id: string;\n target_flow_version: string;\n target_flow_name: string;\n};\n\ntype FlowPublishSuccessRow = {\n id: string;\n version: string;\n operation:\n | 'would_insert'\n | 'would_update_existing'\n | 'insert'\n | 'update_existing'\n | 'update_after_insert_error';\n};\n\ntype FlowPublishFailureReason = {\n validator: string;\n stage: string;\n path: string;\n message: string;\n code: string;\n visible_user_id?: string;\n visible_state_code?: string;\n};\n\ntype FlowPublishFailureRow = {\n id: unknown;\n user_id?: unknown;\n json_ordered: JsonRecord;\n reason: FlowPublishFailureReason[];\n state_code?: unknown;\n};\n\ntype FlowReviewedPublishFiles = {\n prepared_flow_rows: string;\n prepared_process_rows: string;\n flow_version_map: string;\n skipped_unchanged_flow_rows: string;\n process_ref_rewrite_evidence: string;\n success_list: string;\n remote_failed: string;\n flow_publish_version_report: string;\n report: string;\n};\n\nexport type FlowReviewedPublishRowReport = {\n entity_type: 'flow';\n id: string;\n name: string;\n original_version: string;\n publish_version: string;\n publish_policy: FlowPublishPolicy;\n version_strategy: 'keep_current' | 'bump';\n status: 'prepared' | 'inserted' | 'updated' | 'failed';\n operation?: FlowPublishSuccessRow['operation'];\n error?: unknown;\n};\n\nexport type FlowReviewedPublishProcessRowReport = {\n entity_type: 'process';\n id: string;\n name: string;\n original_version: string;\n publish_version: string;\n publish_policy: ProcessPublishPolicy;\n version_strategy: 'keep_current' | 'bump';\n status: 'prepared' | 'inserted' | 'updated' | 'skipped_existing' | 'failed';\n operation?: SupabaseJsonOrderedWriteOperation;\n error?: unknown;\n};\n\nexport type FlowReviewedPublishDataReport = {\n schema_version: 1;\n generated_at_utc: string;\n status:\n | 'prepared_flow_publish_reviewed_data'\n | 'completed_flow_publish_reviewed_data'\n | 'completed_flow_publish_reviewed_data_with_failures';\n mode: FlowPublishVersionCompatMode;\n flow_rows_file: string | null;\n process_rows_file: string | null;\n original_flow_rows_file: string | null;\n out_dir: string;\n flow_publish_policy: FlowPublishPolicy;\n process_publish_policy: ProcessPublishPolicy;\n rewrite_process_flow_refs: boolean;\n counts: {\n input_flow_rows: number;\n input_process_rows: number;\n original_flow_rows: number;\n prepared_flow_rows: number;\n prepared_process_rows: number;\n skipped_unchanged_flow_rows: number;\n rewritten_process_flow_refs: number;\n flow_publish_reports: number;\n process_publish_reports: number;\n success_count: number;\n failure_count: number;\n };\n max_workers: number;\n target_user_id_override: string | null;\n files: FlowReviewedPublishFiles;\n flow_reports: FlowReviewedPublishRowReport[];\n process_reports: FlowReviewedPublishProcessRowReport[];\n skipped_unchanged_flow_rows: SkippedUnchangedFlowRow[];\n};\n\nexport type RunFlowReviewedPublishDataOptions = {\n flowRowsFile?: string | null;\n originalFlowRowsFile?: string | null;\n processRowsFile?: string | null;\n outDir: string;\n flowPublishPolicy?: FlowPublishPolicy;\n processPublishPolicy?: ProcessPublishPolicy;\n rewriteProcessFlowRefs?: boolean;\n commit?: boolean;\n maxWorkers?: number;\n targetUserId?: string | null;\n env?: NodeJS.ProcessEnv;\n fetchImpl?: FetchLike;\n timeoutMs?: number;\n now?: Date;\n runFlowPublishVersionImpl?: (\n options: RunFlowPublishVersionOptions,\n ) => Promise<FlowPublishVersionReport>;\n};\n\nfunction assert_input_file(\n inputFile: string,\n code: string,\n message = 'Missing required input file value.',\n): string {\n if (!inputFile) {\n throw new CliError(message, {\n code,\n exitCode: 2,\n });\n }\n\n const resolved = path.resolve(inputFile);\n if (!existsSync(resolved)) {\n throw new CliError(`Input file not found: ${resolved}`, {\n code,\n exitCode: 2,\n });\n }\n\n return resolved;\n}\n\nfunction assert_optional_input_file(\n inputFile: string | null | undefined,\n code: string,\n): string | null {\n if (!inputFile) {\n return null;\n }\n\n const resolved = path.resolve(inputFile);\n if (!existsSync(resolved)) {\n throw new CliError(`Input file not found: ${resolved}`, {\n code,\n exitCode: 2,\n });\n }\n\n return resolved;\n}\n\nfunction assert_out_dir(outDir: string): string {\n if (!outDir) {\n throw new CliError('Missing required --out-dir value.', {\n code: 'FLOW_PUBLISH_REVIEWED_OUT_DIR_REQUIRED',\n exitCode: 2,\n });\n }\n\n return path.resolve(outDir);\n}\n\nfunction clone_json<T>(value: T): T {\n if (value === undefined) {\n return value;\n }\n return JSON.parse(JSON.stringify(value)) as T;\n}\n\nfunction json_equal(left: unknown, right: unknown): boolean {\n if (left === right) {\n return true;\n }\n\n if (Array.isArray(left) || Array.isArray(right)) {\n if (!Array.isArray(left) || !Array.isArray(right) || left.length !== right.length) {\n return false;\n }\n\n return left.every((value, index) => json_equal(value, right[index]));\n }\n\n if (!isRecord(left) || !isRecord(right)) {\n return false;\n }\n\n const leftKeys = Object.keys(left).sort();\n const rightKeys = Object.keys(right).sort();\n if (leftKeys.length !== rightKeys.length) {\n return false;\n }\n\n return leftKeys.every(\n (key, index) => key === rightKeys[index] && json_equal(left[key], right[key]),\n );\n}\n\nfunction normalize_publish_policy(\n value: FlowPublishPolicy | string | undefined,\n label = '--flow-publish-policy',\n code = 'FLOW_PUBLISH_REVIEWED_POLICY_INVALID',\n): FlowPublishPolicy {\n if (value === undefined || value === '') {\n return 'append_only_bump';\n }\n\n if (value === 'skip' || value === 'append_only_bump' || value === 'upsert_current_version') {\n return value;\n }\n\n throw new CliError(\n `Expected ${label} to be one of: skip, append_only_bump, upsert_current_version.`,\n {\n code,\n exitCode: 2,\n },\n );\n}\n\nfunction bump_ilcd_version(version: string): string {\n const parts = String(version || '')\n .trim()\n .split('.');\n if (parts.length !== 3 || !parts.every((part) => /^\\d+$/u.test(part))) {\n return '01.01.001';\n }\n\n const [head, middle, tail] = parts;\n return `${Number.parseInt(head, 10).toString().padStart(head.length, '0')}.${Number.parseInt(\n middle,\n 10,\n )\n .toString()\n .padStart(middle.length, '0')}.${(Number.parseInt(tail, 10) + 1)\n .toString()\n .padStart(tail.length, '0')}`;\n}\n\nfunction set_flow_version(row: JsonRecord, newVersion: string): void {\n const payload = datasetPayloadFromRow(row);\n const dataset = isRecord(payload.flowDataSet) ? payload.flowDataSet : payload;\n const administrativeInformation = isRecord(dataset.administrativeInformation)\n ? dataset.administrativeInformation\n : {};\n if (!isRecord(dataset.administrativeInformation)) {\n dataset.administrativeInformation = administrativeInformation;\n }\n const publicationAndOwnership = isRecord(administrativeInformation.publicationAndOwnership)\n ? administrativeInformation.publicationAndOwnership\n : {};\n if (!isRecord(administrativeInformation.publicationAndOwnership)) {\n administrativeInformation.publicationAndOwnership = publicationAndOwnership;\n }\n publicationAndOwnership['common:dataSetVersion'] = newVersion;\n row.version = newVersion;\n}\n\nfunction process_dataset_from_row(row: JsonRecord): JsonRecord {\n const payload = datasetPayloadFromRow(row);\n return isRecord(payload.processDataSet) ? payload.processDataSet : payload;\n}\n\nfunction extract_process_identity(row: JsonRecord): ProcessIdentity {\n const dataset = process_dataset_from_row(row);\n const info = deepGet(dataset, ['processInformation', 'dataSetInformation'], {}) as JsonRecord;\n const id = coerceText(row.id) || coerceText(info['common:UUID']);\n const version =\n coerceText(row.version) ||\n coerceText(\n deepGet(dataset, [\n 'administrativeInformation',\n 'publicationAndOwnership',\n 'common:dataSetVersion',\n ]),\n ) ||\n '01.00.000';\n const nameBlock = deepGet(info, ['name', 'baseName']) ?? deepGet(info, ['name']) ?? info.name;\n const name = coerceText(nameBlock) || id;\n\n return {\n id,\n version,\n name,\n };\n}\n\nfunction exchange_records(processRow: JsonRecord): JsonRecord[] {\n const dataset = process_dataset_from_row(processRow);\n return listify(deepGet(dataset, ['exchanges', 'exchange'], [])).filter(isRecord);\n}\n\nfunction set_process_version(row: JsonRecord, newVersion: string): void {\n const payload = datasetPayloadFromRow(row);\n const dataset = isRecord(payload.processDataSet) ? payload.processDataSet : payload;\n const administrativeInformation = isRecord(dataset.administrativeInformation)\n ? dataset.administrativeInformation\n : {};\n if (!isRecord(dataset.administrativeInformation)) {\n dataset.administrativeInformation = administrativeInformation;\n }\n const publicationAndOwnership = isRecord(administrativeInformation.publicationAndOwnership)\n ? administrativeInformation.publicationAndOwnership\n : {};\n if (!isRecord(administrativeInformation.publicationAndOwnership)) {\n administrativeInformation.publicationAndOwnership = publicationAndOwnership;\n }\n publicationAndOwnership['common:dataSetVersion'] = newVersion;\n row.version = newVersion;\n}\n\nfunction build_flow_index(rows: JsonRecord[]): FlowIndex {\n const byUuidVersion: Record<string, FlowRecord> = {};\n\n for (const row of rows) {\n const record = extractFlowRecord(row);\n byUuidVersion[`${record.id}@${record.version}`] = record;\n }\n\n return {\n byUuidVersion,\n };\n}\n\nfunction build_local_dataset_uri(datasetKind: string, uuidValue: string, version: string): string {\n if (!uuidValue) {\n return '';\n }\n\n const folderMap: Record<string, string> = {\n flow: 'flows',\n 'flow data set': 'flows',\n };\n const folder = folderMap[datasetKind.trim().toLowerCase()] ?? 'datasets';\n const versionText = version.trim() || '01.00.000';\n return `../${folder}/${uuidValue}_${versionText}.xml`;\n}\n\nfunction preserve_short_description_shape(existing: unknown, target: JsonRecord): unknown {\n if (Array.isArray(existing)) {\n if (existing.length > 0 && isRecord(existing[0])) {\n const patched = clone_json(existing[0]);\n patched['@xml:lang'] =\n coerceText(target['@xml:lang']) || coerceText(patched['@xml:lang']) || 'en';\n patched['#text'] = coerceText(target['#text']);\n return [patched];\n }\n return [clone_json(target)];\n }\n\n if (isRecord(existing)) {\n const patched = clone_json(existing);\n patched['@xml:lang'] =\n coerceText(target['@xml:lang']) || coerceText(patched['@xml:lang']) || 'en';\n patched['#text'] = coerceText(target['#text']);\n return patched;\n }\n\n return clone_json(target);\n}\n\nfunction flow_reference_from_record(record: FlowRecord): JsonRecord {\n const targetShortDescription =\n record.shortDescription ??\n ({\n '@xml:lang': 'en',\n '#text': record.name,\n } satisfies JsonRecord);\n\n return {\n '@type': 'flow data set',\n '@refObjectId': record.id,\n '@version': record.version,\n '@uri': build_local_dataset_uri('flow data set', record.id, record.version),\n 'common:shortDescription': clone_json(targetShortDescription),\n };\n}\n\nfunction patched_flow_reference(currentRef: unknown, record: FlowRecord): JsonRecord {\n const current = isRecord(currentRef) ? clone_json(currentRef) : {};\n const target = flow_reference_from_record(record);\n\n current['@type'] = coerceText(current['@type']) || coerceText(target['@type']);\n current['@refObjectId'] = target['@refObjectId'];\n current['@version'] = target['@version'];\n current['@uri'] = target['@uri'];\n current['common:shortDescription'] = preserve_short_description_shape(\n current['common:shortDescription'],\n target['common:shortDescription'] as JsonRecord,\n );\n\n return current;\n}\n\nfunction build_output_files(outDir: string): FlowReviewedPublishFiles {\n return {\n prepared_flow_rows: path.join(outDir, 'prepared-flow-rows.json'),\n prepared_process_rows: path.join(outDir, 'prepared-process-rows.json'),\n flow_version_map: path.join(outDir, 'flow-version-map.json'),\n skipped_unchanged_flow_rows: path.join(outDir, 'skipped-unchanged-flow-rows.json'),\n process_ref_rewrite_evidence: path.join(outDir, 'process-flow-ref-rewrite-evidence.jsonl'),\n success_list: path.join(outDir, `${LEGACY_OUTPUT_PREFIX}_mcp_success_list.json`),\n remote_failed: path.join(outDir, `${LEGACY_OUTPUT_PREFIX}_remote_validation_failed.jsonl`),\n flow_publish_version_report: path.join(outDir, `${LEGACY_OUTPUT_PREFIX}_mcp_sync_report.json`),\n report: path.join(outDir, 'publish-report.json'),\n };\n}\n\nfunction status_from_mode(\n mode: FlowPublishVersionCompatMode,\n failureCount: number,\n): FlowReviewedPublishDataReport['status'] {\n if (mode === 'dry_run') {\n return 'prepared_flow_publish_reviewed_data';\n }\n\n return failureCount > 0\n ? 'completed_flow_publish_reviewed_data_with_failures'\n : 'completed_flow_publish_reviewed_data';\n}\n\nfunction prepare_flow_rows(options: {\n rows: JsonRecord[];\n policy: FlowPublishPolicy;\n originalRows: JsonRecord[];\n}): {\n preparedRows: JsonRecord[];\n plans: PreparedFlowPlan[];\n flowVersionMap: Record<string, FlowVersionMapEntry>;\n skippedUnchangedRows: SkippedUnchangedFlowRow[];\n} {\n if (options.policy === 'skip') {\n return {\n preparedRows: [],\n plans: [],\n flowVersionMap: {},\n skippedUnchangedRows: [],\n };\n }\n\n const originalMap = new Map<string, JsonRecord>();\n for (const row of options.originalRows) {\n const record = extractFlowRecord(row);\n if (record.id && record.version) {\n originalMap.set(`${record.id}@${record.version}`, row);\n }\n }\n\n const preparedRows: JsonRecord[] = [];\n const plans: PreparedFlowPlan[] = [];\n const flowVersionMap: Record<string, FlowVersionMapEntry> = {};\n const skippedUnchangedRows: SkippedUnchangedFlowRow[] = [];\n\n for (const row of options.rows) {\n const working = clone_json(row);\n const record = extractFlowRecord(working);\n const originalRow =\n record.id && record.version ? originalMap.get(`${record.id}@${record.version}`) : undefined;\n\n if (originalRow && json_equal(datasetPayloadFromRow(originalRow), datasetPayloadFromRow(row))) {\n skippedUnchangedRows.push({\n entity_type: 'flow',\n entity_id: record.id,\n entity_name: record.name,\n version: record.version,\n reason: 'unchanged_vs_original_rows_file',\n });\n continue;\n }\n\n let publishVersion = record.version;\n let versionStrategy: PreparedFlowPlan['version_strategy'] = 'keep_current';\n if (options.policy === 'append_only_bump') {\n publishVersion = bump_ilcd_version(record.version);\n set_flow_version(working, publishVersion);\n versionStrategy = 'bump';\n if (record.id && record.version) {\n flowVersionMap[`${record.id}@${record.version}`] = {\n id: record.id,\n source_version: record.version,\n target_version: publishVersion,\n };\n }\n }\n\n preparedRows.push(working);\n plans.push({\n entity_type: 'flow',\n entity_id: record.id,\n entity_name: record.name,\n original_version: record.version,\n publish_version: publishVersion,\n version_strategy: versionStrategy,\n publish_policy: options.policy,\n row: working,\n });\n }\n\n return {\n preparedRows,\n plans,\n flowVersionMap,\n skippedUnchangedRows,\n };\n}\n\nfunction prepare_process_rows(options: {\n rows: JsonRecord[];\n policy: ProcessPublishPolicy;\n rewriteRefs: boolean;\n preparedFlowRows: JsonRecord[];\n flowVersionMap: Record<string, FlowVersionMapEntry>;\n}): {\n preparedRows: JsonRecord[];\n plans: PreparedProcessPlan[];\n rewriteEvidence: ProcessFlowRefRewriteEvidence[];\n} {\n if (options.policy === 'skip') {\n return {\n preparedRows: [],\n plans: [],\n rewriteEvidence: [],\n };\n }\n\n const preparedRows = options.rows.map((row) => clone_json(row));\n const rewriteEvidence: ProcessFlowRefRewriteEvidence[] = [];\n\n if (\n options.rewriteRefs &&\n preparedRows.length > 0 &&\n options.preparedFlowRows.length > 0 &&\n Object.keys(options.flowVersionMap).length > 0\n ) {\n const targetIndex = build_flow_index(options.preparedFlowRows).byUuidVersion;\n\n for (const row of preparedRows) {\n const processIdentity = extract_process_identity(row);\n\n for (const exchange of exchange_records(row)) {\n const currentRef = isRecord(exchange.referenceToFlowDataSet)\n ? exchange.referenceToFlowDataSet\n : null;\n if (!currentRef) {\n continue;\n }\n\n const flowId = coerceText(currentRef['@refObjectId']);\n const flowVersion = coerceText(currentRef['@version']);\n const mapped = options.flowVersionMap[`${flowId}@${flowVersion}`];\n if (!mapped) {\n continue;\n }\n\n const targetRecord = targetIndex[`${mapped.id}@${mapped.target_version}`];\n if (!targetRecord) {\n continue;\n }\n\n exchange.referenceToFlowDataSet = patched_flow_reference(currentRef, targetRecord);\n rewriteEvidence.push({\n process_id: processIdentity.id,\n process_version_before_publish: processIdentity.version,\n process_name: processIdentity.name,\n exchange_internal_id: coerceText(exchange['@dataSetInternalID']),\n source_flow_id: flowId,\n source_flow_version: flowVersion,\n target_flow_id: mapped.id,\n target_flow_version: mapped.target_version,\n target_flow_name: targetRecord.name,\n });\n }\n }\n }\n\n const plans: PreparedProcessPlan[] = [];\n for (const row of preparedRows) {\n const record = extract_process_identity(row);\n let publishVersion = record.version;\n let versionStrategy: PreparedProcessPlan['version_strategy'] = 'keep_current';\n if (options.policy === 'append_only_bump') {\n publishVersion = bump_ilcd_version(record.version);\n set_process_version(row, publishVersion);\n versionStrategy = 'bump';\n }\n\n plans.push({\n entity_type: 'process',\n entity_id: record.id,\n entity_name: record.name,\n original_version: record.version,\n publish_version: publishVersion,\n version_strategy: versionStrategy,\n publish_policy: options.policy,\n row,\n });\n }\n\n return {\n preparedRows,\n plans,\n rewriteEvidence,\n };\n}\n\nfunction build_local_row_report(plan: PreparedFlowPlan): FlowReviewedPublishRowReport {\n return {\n entity_type: 'flow',\n id: plan.entity_id,\n name: plan.entity_name,\n original_version: plan.original_version,\n publish_version: plan.publish_version,\n publish_policy: plan.publish_policy,\n version_strategy: plan.version_strategy,\n status: 'prepared',\n };\n}\n\nfunction build_local_process_row_report(\n plan: PreparedProcessPlan,\n): FlowReviewedPublishProcessRowReport {\n return {\n entity_type: 'process',\n id: plan.entity_id,\n name: plan.entity_name,\n original_version: plan.original_version,\n publish_version: plan.publish_version,\n publish_policy: plan.publish_policy,\n version_strategy: plan.version_strategy,\n status: 'prepared',\n };\n}\n\nfunction process_publish_payload_from_row(row: JsonRecord): JsonRecord {\n const payload = datasetPayloadFromRow(row);\n const dataset = isRecord(payload.processDataSet) ? payload.processDataSet : payload;\n return {\n processDataSet: clone_json(dataset),\n };\n}\n\nfunction build_process_commit_success_report(\n plan: PreparedProcessPlan,\n operation: SupabaseJsonOrderedWriteOperation,\n): FlowReviewedPublishProcessRowReport {\n return {\n entity_type: 'process',\n id: plan.entity_id,\n name: plan.entity_name,\n original_version: plan.original_version,\n publish_version: plan.publish_version,\n publish_policy: plan.publish_policy,\n version_strategy: plan.version_strategy,\n status:\n operation === 'insert'\n ? 'inserted'\n : operation === 'skipped_existing'\n ? 'skipped_existing'\n : 'updated',\n operation,\n };\n}\n\nfunction build_process_commit_failure_report(\n plan: PreparedProcessPlan,\n error: unknown,\n): FlowReviewedPublishProcessRowReport {\n return {\n entity_type: 'process',\n id: plan.entity_id,\n name: plan.entity_name,\n original_version: plan.original_version,\n publish_version: plan.publish_version,\n publish_policy: plan.publish_policy,\n version_strategy: plan.version_strategy,\n status: 'failed',\n error,\n };\n}\n\nfunction normalize_process_commit_failure(error: unknown): unknown {\n if (error instanceof CliError && error.code === 'REMOTE_REQUEST_FAILED') {\n if (typeof error.details === 'string' && error.details.trim()) {\n return error.details;\n }\n\n if (error.message.startsWith('HTTP 0 returned') && isRecord(error.details)) {\n const detailMessage =\n typeof error.details.message === 'string' ? error.details.message.trim() : '';\n const normalized = detailMessage.replace(/^(?:FetchError|Error):\\s*/u, '').trim();\n if (normalized && normalized !== 'undefined') {\n return normalized;\n }\n }\n }\n\n return error instanceof Error ? error.message : error;\n}\n\nfunction build_commit_success_report(\n plan: PreparedFlowPlan,\n success: FlowPublishSuccessRow,\n): FlowReviewedPublishRowReport {\n return {\n entity_type: 'flow',\n id: plan.entity_id,\n name: plan.entity_name,\n original_version: plan.original_version,\n publish_version: plan.publish_version,\n publish_policy: plan.publish_policy,\n version_strategy: plan.version_strategy,\n status: success.operation === 'insert' ? 'inserted' : 'updated',\n operation: success.operation,\n };\n}\n\nfunction build_commit_failure_report(\n plan: PreparedFlowPlan,\n failure: FlowPublishFailureRow,\n): FlowReviewedPublishRowReport {\n return {\n entity_type: 'flow',\n id: plan.entity_id,\n name: plan.entity_name,\n original_version: plan.original_version,\n publish_version: plan.publish_version,\n publish_policy: plan.publish_policy,\n version_strategy: plan.version_strategy,\n status: 'failed',\n error: failure.reason,\n };\n}\n\nfunction build_flow_key(id: string, version: string): string | null {\n if (!id || !version) {\n return null;\n }\n return `${id}@${version}`;\n}\n\nfunction queue_by_key<T>(items: T[], keyFn: (item: T) => string | null): Map<string, T[]> {\n const queued = new Map<string, T[]>();\n\n for (const item of items) {\n const key = keyFn(item);\n if (!key) {\n continue;\n }\n const queue = queued.get(key) ?? [];\n queue.push(item);\n queued.set(key, queue);\n }\n\n return queued;\n}\n\nfunction failure_key(row: FlowPublishFailureRow): string | null {\n const record = extractFlowRecord(row as unknown as JsonRecord);\n return build_flow_key(record.id, record.version);\n}\n\nfunction success_key(row: FlowPublishSuccessRow): string | null {\n return build_flow_key(row.id, row.version);\n}\n\nfunction shift_queue<T>(queue: Map<string, T[]>, key: string | null): T | null {\n if (!key) {\n return null;\n }\n\n const items = queue.get(key);\n if (!items?.length) {\n return null;\n }\n\n const [first, ...rest] = items;\n if (rest.length) {\n queue.set(key, rest);\n } else {\n queue.delete(key);\n }\n return first ?? null;\n}\n\nasync function map_with_concurrency<T, R>(\n items: T[],\n maxWorkers: number,\n worker: (item: T, index: number) => Promise<R>,\n): Promise<R[]> {\n const results = new Array<R>(items.length);\n const workerCount = Math.min(Math.max(1, maxWorkers), Math.max(items.length, 1));\n let nextIndex = 0;\n\n async function runWorker(): Promise<void> {\n while (true) {\n const currentIndex = nextIndex;\n nextIndex += 1;\n if (currentIndex >= items.length) {\n return;\n }\n results[currentIndex] = await worker(items[currentIndex] as T, currentIndex);\n }\n }\n\n await Promise.all(Array.from({ length: workerCount }, () => runWorker()));\n return results;\n}\n\nfunction map_commit_reports(\n plans: PreparedFlowPlan[],\n successes: FlowPublishSuccessRow[],\n failures: FlowPublishFailureRow[],\n): FlowReviewedPublishRowReport[] {\n const successQueue = queue_by_key(successes, success_key);\n const failureQueue = queue_by_key(failures, failure_key);\n const unkeyedFailures = failures.filter((failure) => failure_key(failure) === null);\n\n return plans.map((plan) => {\n const key = build_flow_key(plan.entity_id, plan.publish_version);\n const success = shift_queue(successQueue, key);\n if (success) {\n return build_commit_success_report(plan, success);\n }\n\n const failure =\n shift_queue(failureQueue, key) ?? (key ? null : (unkeyedFailures.shift() ?? null));\n if (failure) {\n return build_commit_failure_report(plan, failure);\n }\n\n return {\n ...build_local_row_report(plan),\n status: 'failed',\n error: [\n {\n code: 'UNMATCHED_PUBLISH_RESULT',\n message: 'Publish result was missing for prepared flow row.',\n },\n ],\n };\n });\n}\n\nfunction build_compat_report(options: {\n now: Date;\n mode: FlowPublishVersionCompatMode;\n preparedRows: number;\n successCount: number;\n failureCount: number;\n maxWorkers: number;\n targetUserId: string | null;\n files: FlowReviewedPublishFiles;\n}): FlowPublishVersionReport {\n let status: FlowPublishVersionReport['status'];\n if (options.mode === 'dry_run') {\n status = 'prepared_flow_publish_version';\n } else {\n status =\n options.failureCount > 0\n ? 'completed_flow_publish_version_with_failures'\n : 'completed_flow_publish_version';\n }\n\n return {\n schema_version: 1,\n generated_at_utc: options.now.toISOString(),\n status,\n mode: options.mode,\n input_file: options.files.prepared_flow_rows,\n out_dir: path.dirname(options.files.report),\n counts: {\n total_rows: options.preparedRows,\n success_count: options.successCount,\n failure_count: options.failureCount,\n },\n operation_counts: {},\n max_workers: options.maxWorkers,\n limit: null,\n target_user_id_override: options.targetUserId,\n files: {\n success_list: options.files.success_list,\n remote_failed: options.files.remote_failed,\n report: options.files.flow_publish_version_report,\n },\n };\n}\n\nasync function commit_process_plans(options: {\n plans: PreparedProcessPlan[];\n maxWorkers: number;\n env: NodeJS.ProcessEnv;\n fetchImpl: FetchLike;\n timeoutMs?: number;\n}): Promise<FlowReviewedPublishProcessRowReport[]> {\n return map_with_concurrency(options.plans, options.maxWorkers, async (plan) => {\n try {\n const result = await syncSupabaseJsonOrderedRecord({\n table: 'processes',\n id: plan.entity_id,\n version: plan.publish_version,\n payload: process_publish_payload_from_row(plan.row),\n writeMode:\n plan.publish_policy === 'append_only_bump'\n ? 'append_only_insert'\n : 'upsert_current_version',\n env: options.env,\n fetchImpl: options.fetchImpl,\n timeoutMs: options.timeoutMs,\n });\n return build_process_commit_success_report(plan, result.operation);\n } catch (error) {\n return build_process_commit_failure_report(plan, normalize_process_commit_failure(error));\n }\n });\n}\n\nexport async function runFlowReviewedPublishData(\n options: RunFlowReviewedPublishDataOptions,\n): Promise<FlowReviewedPublishDataReport> {\n const flowRowsFile = assert_optional_input_file(\n options.flowRowsFile,\n 'FLOW_PUBLISH_REVIEWED_FLOW_ROWS_NOT_FOUND',\n );\n const processRowsFile = assert_optional_input_file(\n options.processRowsFile,\n 'FLOW_PUBLISH_REVIEWED_PROCESS_ROWS_NOT_FOUND',\n );\n if (!flowRowsFile && !processRowsFile) {\n throw new CliError('Provide at least one of --flow-rows-file or --process-rows-file.', {\n code: 'FLOW_PUBLISH_REVIEWED_INPUT_REQUIRED',\n exitCode: 2,\n });\n }\n const originalFlowRowsFile = assert_optional_input_file(\n options.originalFlowRowsFile,\n 'FLOW_PUBLISH_REVIEWED_ORIGINAL_ROWS_NOT_FOUND',\n );\n const outDir = assert_out_dir(options.outDir);\n const flowPublishPolicy = normalize_publish_policy(options.flowPublishPolicy);\n const processPublishPolicy = normalize_publish_policy(\n options.processPublishPolicy,\n '--process-publish-policy',\n 'FLOW_PUBLISH_REVIEWED_PROCESS_POLICY_INVALID',\n );\n const rewriteProcessFlowRefs = options.rewriteProcessFlowRefs !== false;\n const mode: FlowPublishVersionCompatMode = options.commit ? 'commit' : 'dry_run';\n const maxWorkers = options.maxWorkers ?? DEFAULT_MAX_WORKERS;\n const targetUserId =\n typeof options.targetUserId === 'string' && options.targetUserId.trim()\n ? options.targetUserId.trim()\n : null;\n const now = options.now ?? new Date();\n const files = build_output_files(outDir);\n const inputFlowRows = flowRowsFile ? loadRowsFromFile(flowRowsFile) : [];\n const originalFlowRows = originalFlowRowsFile ? loadRowsFromFile(originalFlowRowsFile) : [];\n const inputProcessRows = processRowsFile ? loadRowsFromFile(processRowsFile) : [];\n const prepared = prepare_flow_rows({\n rows: inputFlowRows,\n policy: flowPublishPolicy,\n originalRows: originalFlowRows,\n });\n const preparedProcesses = prepare_process_rows({\n rows: inputProcessRows,\n policy: processPublishPolicy,\n rewriteRefs: rewriteProcessFlowRefs,\n preparedFlowRows: prepared.preparedRows,\n flowVersionMap: prepared.flowVersionMap,\n });\n\n writeJsonArtifact(files.prepared_flow_rows, prepared.preparedRows);\n writeJsonArtifact(files.prepared_process_rows, preparedProcesses.preparedRows);\n writeJsonArtifact(files.flow_version_map, prepared.flowVersionMap);\n writeJsonArtifact(files.skipped_unchanged_flow_rows, prepared.skippedUnchangedRows);\n writeJsonLinesArtifact(files.process_ref_rewrite_evidence, preparedProcesses.rewriteEvidence);\n\n let flowReports = prepared.plans.map(build_local_row_report);\n let processReports = preparedProcesses.plans.map(build_local_process_row_report);\n\n if (options.commit && prepared.preparedRows.length > 0) {\n const publishImpl = options.runFlowPublishVersionImpl ?? runFlowPublishVersion;\n await publishImpl({\n inputFile: files.prepared_flow_rows,\n outDir,\n commit: true,\n maxWorkers,\n targetUserId,\n env: options.env,\n fetchImpl: options.fetchImpl,\n timeoutMs: options.timeoutMs,\n now,\n });\n\n const successRows = loadRowsFromFile(files.success_list) as FlowPublishSuccessRow[];\n const failureRows = loadRowsFromFile(files.remote_failed) as FlowPublishFailureRow[];\n flowReports = map_commit_reports(prepared.plans, successRows, failureRows);\n } else {\n writeJsonArtifact(files.success_list, []);\n writeJsonLinesArtifact(files.remote_failed, []);\n const compatReport = build_compat_report({\n now,\n mode,\n preparedRows: prepared.preparedRows.length,\n successCount: 0,\n failureCount: 0,\n maxWorkers,\n targetUserId,\n files,\n });\n writeJsonArtifact(files.flow_publish_version_report, compatReport);\n }\n\n if (options.commit && preparedProcesses.preparedRows.length > 0) {\n if (!options.fetchImpl) {\n throw new CliError(\n 'Process commit requires a fetch implementation in flow publish-reviewed-data.',\n {\n code: 'FLOW_PUBLISH_REVIEWED_PROCESS_FETCH_REQUIRED',\n exitCode: 2,\n },\n );\n }\n\n const runtimeEnv = options.env;\n if (!runtimeEnv || !hasSupabaseRestRuntime(runtimeEnv)) {\n throw new CliError(\n 'Process commit requires TIANGONG_LCA_API_BASE_URL, TIANGONG_LCA_API_KEY, and TIANGONG_LCA_SUPABASE_PUBLISHABLE_KEY.',\n {\n code: 'FLOW_PUBLISH_REVIEWED_PROCESS_RUNTIME_REQUIRED',\n exitCode: 2,\n },\n );\n }\n\n processReports = await commit_process_plans({\n plans: preparedProcesses.plans,\n maxWorkers,\n env: runtimeEnv,\n fetchImpl: options.fetchImpl,\n timeoutMs: options.timeoutMs,\n });\n }\n\n const successCount =\n flowReports.filter((report) => report.status === 'inserted' || report.status === 'updated')\n .length +\n processReports.filter(\n (report) =>\n report.status === 'inserted' ||\n report.status === 'updated' ||\n report.status === 'skipped_existing',\n ).length;\n const failureCount =\n flowReports.filter((report) => report.status === 'failed').length +\n processReports.filter((report) => report.status === 'failed').length;\n\n const report: FlowReviewedPublishDataReport = {\n schema_version: 1,\n generated_at_utc: now.toISOString(),\n status: status_from_mode(mode, failureCount),\n mode,\n flow_rows_file: flowRowsFile,\n process_rows_file: processRowsFile,\n original_flow_rows_file: originalFlowRowsFile,\n out_dir: outDir,\n flow_publish_policy: flowPublishPolicy,\n process_publish_policy: processPublishPolicy,\n rewrite_process_flow_refs: rewriteProcessFlowRefs,\n counts: {\n input_flow_rows: inputFlowRows.length,\n input_process_rows: inputProcessRows.length,\n original_flow_rows: originalFlowRows.length,\n prepared_flow_rows: prepared.preparedRows.length,\n prepared_process_rows: preparedProcesses.preparedRows.length,\n skipped_unchanged_flow_rows: prepared.skippedUnchangedRows.length,\n rewritten_process_flow_refs: preparedProcesses.rewriteEvidence.length,\n flow_publish_reports: flowReports.length,\n process_publish_reports: processReports.length,\n success_count: successCount,\n failure_count: failureCount,\n },\n max_workers: maxWorkers,\n target_user_id_override: targetUserId,\n files,\n flow_reports: flowReports,\n process_reports: processReports,\n skipped_unchanged_flow_rows: prepared.skippedUnchangedRows,\n };\n\n writeJsonArtifact(files.report, report);\n return report;\n}\n\nexport const __testInternals = {\n assert_input_file,\n assert_optional_input_file,\n assert_out_dir,\n clone_json,\n json_equal,\n normalize_publish_policy,\n bump_ilcd_version,\n set_flow_version,\n process_dataset_from_row,\n extract_process_identity,\n exchange_records,\n set_process_version,\n build_flow_index,\n build_local_dataset_uri,\n preserve_short_description_shape,\n flow_reference_from_record,\n patched_flow_reference,\n build_output_files,\n status_from_mode,\n prepare_flow_rows,\n prepare_process_rows,\n build_compat_report,\n map_commit_reports,\n shift_queue,\n process_publish_payload_from_row,\n build_process_commit_success_report,\n build_process_commit_failure_report,\n normalize_process_commit_failure,\n map_with_concurrency,\n commit_process_plans,\n};\n"]}