@tiangong-lca/cli 0.0.6 → 0.0.7
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 +73 -30
- package/dist/src/cli.js +912 -113
- package/dist/src/cli.js.map +1 -1
- package/dist/src/lib/dataset-local.js +231 -0
- package/dist/src/lib/dataset-local.js.map +1 -0
- package/dist/src/lib/dataset-references-rewrite.js +214 -0
- package/dist/src/lib/dataset-references-rewrite.js.map +1 -0
- package/dist/src/lib/dataset-validate.js +191 -0
- package/dist/src/lib/dataset-validate.js.map +1 -0
- package/dist/src/lib/flow-regen-product.js +2 -10
- package/dist/src/lib/flow-regen-product.js.map +1 -1
- package/dist/src/lib/flow-remediate.js +4 -8
- package/dist/src/lib/flow-remediate.js.map +1 -1
- package/dist/src/lib/lifecyclemodel-auto-build.js +11 -8
- package/dist/src/lib/lifecyclemodel-auto-build.js.map +1 -1
- package/dist/src/lib/lifecyclemodel-graph.js +248 -0
- package/dist/src/lib/lifecyclemodel-graph.js.map +1 -0
- package/dist/src/lib/lifecyclemodel-publish-build.js +1 -1
- package/dist/src/lib/lifecyclemodel-publish-build.js.map +1 -1
- package/dist/src/lib/lifecyclemodel-save-draft-run.js +245 -0
- package/dist/src/lib/lifecyclemodel-save-draft-run.js.map +1 -0
- package/dist/src/lib/lifecyclemodel-validate-build.js +1 -1
- package/dist/src/lib/lifecyclemodel-validate-build.js.map +1 -1
- package/dist/src/lib/process-auto-build.js +11 -8
- package/dist/src/lib/process-auto-build.js.map +1 -1
- package/dist/src/lib/process-batch-build.js +6 -3
- package/dist/src/lib/process-batch-build.js.map +1 -1
- package/dist/src/lib/process-dedup-review.js +870 -0
- package/dist/src/lib/process-dedup-review.js.map +1 -0
- package/dist/src/lib/process-payload-validation.js +50 -0
- package/dist/src/lib/process-payload-validation.js.map +1 -0
- package/dist/src/lib/process-publish-build.js +4 -6
- package/dist/src/lib/process-publish-build.js.map +1 -1
- package/dist/src/lib/process-refresh-references.js +1028 -0
- package/dist/src/lib/process-refresh-references.js.map +1 -0
- package/dist/src/lib/process-resume-build.js +4 -6
- package/dist/src/lib/process-resume-build.js.map +1 -1
- package/dist/src/lib/process-save-draft-run.js +31 -12
- package/dist/src/lib/process-save-draft-run.js.map +1 -1
- package/dist/src/lib/process-scope-statistics.js +859 -0
- package/dist/src/lib/process-scope-statistics.js.map +1 -0
- package/dist/src/lib/process-verify-rows.js +250 -0
- package/dist/src/lib/process-verify-rows.js.map +1 -0
- package/dist/src/lib/publish.js +1 -1
- package/dist/src/lib/publish.js.map +1 -1
- package/dist/src/lib/remote.js +4 -4
- package/dist/src/lib/remote.js.map +1 -1
- package/dist/src/lib/review-lifecyclemodel.js +2 -2
- package/dist/src/lib/review-lifecyclemodel.js.map +1 -1
- package/dist/src/lib/tidas-sdk-package-validator.js +28 -9
- package/dist/src/lib/tidas-sdk-package-validator.js.map +1 -1
- package/dist/src/lib/tidas-sdk-validation.js +96 -0
- package/dist/src/lib/tidas-sdk-validation.js.map +1 -0
- package/dist/src/lib/user-api-key.js +1 -1
- package/dist/src/lib/user-api-key.js.map +1 -1
- package/package.json +4 -4
- /package/bin/{tiangong.d.ts → tiangong-lca.d.ts} +0 -0
- /package/bin/{tiangong.js → tiangong-lca.js} +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"publish.js","sourceRoot":"","sources":["../../../src/lib/publish.ts"],"names":[],"mappings":"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","sourcesContent":["import path from 'node:path';\nimport { CliError } from './errors.js';\nimport { writeJsonArtifact } from './artifacts.js';\nimport type { FetchLike } from './http.js';\nimport { readJsonInput } from './io.js';\nimport {\n syncLifecyclemodelBundleRecord,\n type LifecyclemodelPublishMetadata,\n} from './lifecyclemodel-bundle-save.js';\nimport { syncStateAwareProcessRecord } from './process-save-draft.js';\nimport { buildRunId, resolveRunLayout } from './run.js';\nimport {\n hasSupabaseRestRuntime,\n syncSupabaseJsonOrderedRecord,\n type SupabaseJsonOrderedTable,\n type SupabaseJsonOrderedWriteMode,\n} from './supabase-json-ordered-write.js';\n\ntype JsonObject = Record<string, unknown>;\n\nconst DEFAULT_MAX_ATTEMPTS = 5;\nconst DEFAULT_RETRY_DELAY_SECONDS = 2.0;\nconst DEFAULT_DATASET_VERSION = '01.01.000';\n\nfunction isRecord(value: unknown): value is JsonObject {\n return typeof value === 'object' && value !== null && !Array.isArray(value);\n}\n\nfunction ensure_list(value: unknown): unknown[] {\n if (value === undefined || value === null) {\n return [];\n }\n return Array.isArray(value) ? value : [value];\n}\n\nfunction first_non_empty(...values: unknown[]): string | null {\n for (const value of values) {\n if (typeof value === 'string' && value.trim()) {\n return value.trim();\n }\n }\n return null;\n}\n\nfunction to_positive_integer(value: unknown, defaultValue: number): number {\n if (value === undefined || value === null || value === '') {\n return defaultValue;\n }\n const parsed =\n typeof value === 'number'\n ? value\n : typeof value === 'string'\n ? Number.parseInt(value, 10)\n : Number.NaN;\n if (!Number.isInteger(parsed) || parsed <= 0) {\n throw new CliError('Publish request expected a positive integer value.', {\n code: 'PUBLISH_INVALID_INTEGER',\n exitCode: 2,\n details: value,\n });\n }\n return parsed;\n}\n\nfunction to_non_negative_number(value: unknown, defaultValue: number): number {\n if (value === undefined || value === null || value === '') {\n return defaultValue;\n }\n const parsed =\n typeof value === 'number' ? value : typeof value === 'string' ? Number(value) : Number.NaN;\n if (!Number.isFinite(parsed) || parsed < 0) {\n throw new CliError('Publish request expected a non-negative number value.', {\n code: 'PUBLISH_INVALID_NUMBER',\n exitCode: 2,\n details: value,\n });\n }\n return parsed;\n}\n\nfunction to_boolean(value: unknown, defaultValue: boolean): boolean {\n return value === undefined ? defaultValue : Boolean(value);\n}\n\nfunction resolve_path(baseDir: string, value: string): string {\n return path.resolve(baseDir, value);\n}\n\nfunction load_json_object(filePath: string): JsonObject {\n const value = readJsonInput(filePath);\n if (!isRecord(value)) {\n throw new CliError(`Expected JSON object input: ${filePath}`, {\n code: 'PUBLISH_INPUT_NOT_OBJECT',\n exitCode: 2,\n });\n }\n return value;\n}\n\nfunction default_out_dir(baseDir: string, commit: boolean, now: Date = new Date()): string {\n const runId = buildRunId({\n namespace: 'publish',\n operation: commit ? 'commit' : 'dry_run',\n now,\n });\n return resolveRunLayout(path.join(baseDir, 'artifacts'), 'publish', runId).runRoot;\n}\n\nfunction serialize_error(error: unknown): { message: string } {\n if (error instanceof Error) {\n return { message: error.message };\n }\n return { message: String(error) };\n}\n\nexport type PublishDatasetEntry =\n | string\n | {\n file?: string;\n path?: string;\n json_ordered?: JsonObject;\n jsonOrdered?: JsonObject;\n payload?: JsonObject;\n [key: string]: unknown;\n };\n\nexport type PublishProcessBuildRunEntry =\n | string\n | {\n run_id?: string;\n run_root?: string;\n exports_dir?: string;\n [key: string]: unknown;\n };\n\nexport type PublishCollectedOrigin = {\n source: 'bundle' | 'input';\n base_dir: string;\n bundle_path: string | null;\n};\n\nexport type PublishCollectedDatasetEntry = {\n entry: PublishDatasetEntry;\n origin: PublishCollectedOrigin;\n};\n\nexport type PublishCollectedProcessBuildRunEntry = {\n entry: PublishProcessBuildRunEntry;\n origin: PublishCollectedOrigin;\n};\n\nexport type PublishCollectedRelationEntry = {\n entry: unknown;\n origin: PublishCollectedOrigin;\n};\n\nexport type PublishRequest = {\n inputs: {\n bundle_paths: string[];\n lifecyclemodels: PublishDatasetEntry[];\n processes: PublishDatasetEntry[];\n sources: PublishDatasetEntry[];\n relations: unknown[];\n process_build_runs: PublishProcessBuildRunEntry[];\n };\n publish: {\n commit: boolean;\n publish_lifecyclemodels: boolean;\n publish_processes: boolean;\n publish_sources: boolean;\n publish_relations: boolean;\n publish_process_build_runs: boolean;\n relation_mode: 'local_manifest_only';\n max_attempts: number;\n retry_delay_seconds: number;\n process_build_forward_args: string[];\n };\n out_dir: string;\n};\n\nexport type PublishCollectedInputs = {\n bundle_paths: string[];\n lifecyclemodels: PublishCollectedDatasetEntry[];\n processes: PublishCollectedDatasetEntry[];\n sources: PublishCollectedDatasetEntry[];\n relations: PublishCollectedRelationEntry[];\n process_build_runs: PublishCollectedProcessBuildRunEntry[];\n};\n\nexport type DatasetPublishExecutorArgs = {\n table: 'lifecyclemodels' | 'processes' | 'sources';\n id: string;\n version: string;\n payload: JsonObject;\n metadata?: LifecyclemodelPublishMetadata | null;\n source: 'bundle' | 'input';\n bundle_path: string | null;\n publish: PublishRequest['publish'];\n};\n\nexport type ProcessBuildRunPublishExecutorArgs = {\n run_id: string;\n entry: PublishProcessBuildRunEntry;\n source: 'bundle' | 'input';\n bundle_path: string | null;\n forward_args: string[];\n publish: PublishRequest['publish'];\n};\n\nexport type PublishExecutors = {\n lifecyclemodels?: (args: DatasetPublishExecutorArgs) => Promise<unknown> | unknown;\n processes?: (args: DatasetPublishExecutorArgs) => Promise<unknown> | unknown;\n sources?: (args: DatasetPublishExecutorArgs) => Promise<unknown> | unknown;\n process_build_runs?: (args: ProcessBuildRunPublishExecutorArgs) => Promise<unknown> | unknown;\n};\n\nexport type PublishDatasetReport = {\n table: 'lifecyclemodels' | 'processes' | 'sources';\n id: string | null;\n version: string | null;\n status:\n | 'prepared'\n | 'executed'\n | 'deferred_no_executor'\n | 'deferred_projection_payload'\n | 'failed';\n source: 'bundle' | 'input';\n bundle_path: string | null;\n reason?: string;\n execution?: unknown;\n error?: { message: string };\n};\n\nexport type PublishProcessBuildRunReport = {\n run_id: string;\n status: 'prepared' | 'executed' | 'deferred_no_executor' | 'failed';\n source: 'bundle' | 'input';\n bundle_path: string | null;\n forward_args: string[];\n execution?: unknown;\n error?: { message: string };\n};\n\nexport type PublishRelationManifest = {\n generated_at_utc: string;\n relation_mode: 'local_manifest_only';\n status: 'prepared_local_relation_manifest';\n relations: unknown[];\n};\n\nexport type PublishReport = {\n generated_at_utc: string;\n request_path: string;\n out_dir: string;\n commit: boolean;\n status: 'completed' | 'completed_with_failures';\n counts: {\n bundle_paths: number;\n lifecyclemodels: number;\n processes: number;\n sources: number;\n relations: number;\n process_build_runs: number;\n executed: number;\n deferred: number;\n failed: number;\n };\n files: {\n normalized_request: string;\n collected_inputs: string;\n relation_manifest: string;\n publish_report: string;\n };\n lifecyclemodels: PublishDatasetReport[];\n processes: PublishDatasetReport[];\n sources: PublishDatasetReport[];\n process_build_runs: PublishProcessBuildRunReport[];\n relations: PublishRelationManifest;\n};\n\nexport type RunPublishOptions = {\n inputPath: string;\n rawRequest?: unknown;\n outDir?: string | null;\n commit?: boolean | null;\n executors?: PublishExecutors;\n env?: NodeJS.ProcessEnv;\n fetchImpl?: FetchLike;\n timeoutMs?: number;\n now?: Date;\n};\n\ntype PreparedPublishDatasetReport = PublishDatasetReport & {\n id: string;\n version: string;\n};\n\ntype NormalizePublishRequestOptions = {\n requestPath: string;\n outDirOverride?: string;\n commitOverride?: boolean;\n now?: Date;\n};\n\ntype PublishRequestOptions = {\n commit: boolean;\n executor:\n | PublishExecutors['lifecyclemodels']\n | PublishExecutors['processes']\n | PublishExecutors['sources']\n | undefined;\n publish: PublishRequest['publish'];\n};\n\ntype LoadedLifecyclemodelPublishEntry = {\n payload: JsonObject;\n metadata: LifecyclemodelPublishMetadata | null;\n};\n\nfunction extract_lifecyclemodel_identity(payload: JsonObject): [string, string] {\n const root = isRecord(payload.lifeCycleModelDataSet) ? payload.lifeCycleModelDataSet : payload;\n const lifeCycleModelInformation = isRecord(root.lifeCycleModelInformation)\n ? root.lifeCycleModelInformation\n : {};\n const dataSetInformation = isRecord(lifeCycleModelInformation.dataSetInformation)\n ? lifeCycleModelInformation.dataSetInformation\n : {};\n const administrativeInformation = isRecord(root.administrativeInformation)\n ? root.administrativeInformation\n : {};\n const publicationAndOwnership = isRecord(administrativeInformation.publicationAndOwnership)\n ? administrativeInformation.publicationAndOwnership\n : {};\n const datasetId = first_non_empty(payload['@id'], payload.id, dataSetInformation['common:UUID']);\n const version = first_non_empty(\n payload['@version'],\n payload.version,\n publicationAndOwnership['common:dataSetVersion'],\n DEFAULT_DATASET_VERSION,\n )!;\n if (!datasetId) {\n throw new CliError('Lifecycle model payload missing @id/id.', {\n code: 'PUBLISH_LIFECYCLEMODEL_ID_MISSING',\n exitCode: 2,\n });\n }\n return [datasetId, version];\n}\n\nfunction extract_process_identity(payload: JsonObject): [string, string] {\n const root = isRecord(payload.processDataSet) ? payload.processDataSet : payload;\n const processInformation = isRecord(root.processInformation) ? root.processInformation : {};\n const dataSetInformation = isRecord(processInformation.dataSetInformation)\n ? processInformation.dataSetInformation\n : {};\n const administrativeInformation = isRecord(root.administrativeInformation)\n ? root.administrativeInformation\n : {};\n const publicationAndOwnership = isRecord(administrativeInformation.publicationAndOwnership)\n ? administrativeInformation.publicationAndOwnership\n : {};\n const datasetId = first_non_empty(dataSetInformation['common:UUID']);\n const version = first_non_empty(\n publicationAndOwnership['common:dataSetVersion'],\n DEFAULT_DATASET_VERSION,\n )!;\n if (!datasetId) {\n throw new CliError(\n 'Process payload missing processInformation.dataSetInformation.common:UUID.',\n {\n code: 'PUBLISH_PROCESS_ID_MISSING',\n exitCode: 2,\n },\n );\n }\n return [datasetId, version];\n}\n\nfunction extract_source_identity(payload: JsonObject): [string, string] {\n const root = isRecord(payload.sourceDataSet) ? payload.sourceDataSet : payload;\n const sourceInformation = isRecord(root.sourceInformation) ? root.sourceInformation : {};\n const dataSetInformation = isRecord(sourceInformation.dataSetInformation)\n ? sourceInformation.dataSetInformation\n : {};\n const administrativeInformation = isRecord(root.administrativeInformation)\n ? root.administrativeInformation\n : {};\n const publicationAndOwnership = isRecord(administrativeInformation.publicationAndOwnership)\n ? administrativeInformation.publicationAndOwnership\n : {};\n const datasetId = first_non_empty(dataSetInformation['common:UUID']);\n const version = first_non_empty(\n publicationAndOwnership['common:dataSetVersion'],\n DEFAULT_DATASET_VERSION,\n )!;\n if (!datasetId) {\n throw new CliError('Source payload missing sourceInformation.dataSetInformation.common:UUID.', {\n code: 'PUBLISH_SOURCE_ID_MISSING',\n exitCode: 2,\n });\n }\n return [datasetId, version];\n}\n\nfunction load_dataset_entry(entry: PublishDatasetEntry, baseDir: string): JsonObject {\n const source = load_dataset_entry_source(entry, baseDir);\n if (isRecord(source)) {\n for (const key of ['json_ordered', 'jsonOrdered', 'payload'] as const) {\n const candidate = source[key];\n if (isRecord(candidate)) {\n return candidate;\n }\n }\n }\n\n return source;\n}\n\nfunction load_dataset_entry_source(entry: PublishDatasetEntry, baseDir: string): JsonObject {\n if (isRecord(entry)) {\n const fileValue = first_non_empty(entry.file, entry.path);\n if (fileValue) {\n return load_json_object(resolve_path(baseDir, fileValue));\n }\n return entry;\n }\n\n if (typeof entry === 'string' && entry.trim()) {\n return load_json_object(resolve_path(baseDir, entry));\n }\n\n throw new CliError('Unsupported dataset entry in publish request.', {\n code: 'PUBLISH_UNSUPPORTED_DATASET_ENTRY',\n exitCode: 2,\n details: entry,\n });\n}\n\nfunction load_lifecyclemodel_publish_entry(\n entry: PublishDatasetEntry,\n baseDir: string,\n): LoadedLifecyclemodelPublishEntry {\n const source = load_dataset_entry_source(entry, baseDir);\n const payload = load_dataset_entry(entry, baseDir);\n const metadata: LifecyclemodelPublishMetadata = {};\n const jsonTg = isRecord(source.json_tg)\n ? source.json_tg\n : isRecord(source.jsonTg)\n ? source.jsonTg\n : null;\n if (jsonTg) {\n metadata.json_tg = jsonTg;\n }\n\n const processMutations = source.processMutations ?? source.process_mutations;\n if (Array.isArray(processMutations)) {\n metadata.processMutations = processMutations as JsonObject[];\n }\n\n const ruleVerification =\n typeof source.ruleVerification === 'boolean'\n ? source.ruleVerification\n : typeof source.rule_verification === 'boolean'\n ? source.rule_verification\n : undefined;\n if (typeof ruleVerification === 'boolean') {\n metadata.ruleVerification = ruleVerification;\n }\n\n return {\n payload,\n metadata: Object.keys(metadata).length > 0 ? metadata : null,\n };\n}\n\nfunction push_collected_entries<T>(\n target: Array<{ entry: T; origin: PublishCollectedOrigin }>,\n entries: unknown[],\n origin: PublishCollectedOrigin,\n): void {\n for (const entry of entries) {\n target.push({ entry: entry as T, origin });\n }\n}\n\nexport function normalizePublishRequest(\n raw: unknown,\n options: NormalizePublishRequestOptions,\n): PublishRequest {\n if (!isRecord(raw)) {\n throw new CliError('Publish request must be a JSON object.', {\n code: 'PUBLISH_REQUEST_NOT_OBJECT',\n exitCode: 2,\n });\n }\n\n const requestDir = path.dirname(options.requestPath);\n const inputs = isRecord(raw.inputs) ? raw.inputs : {};\n const publish = isRecord(raw.publish) ? raw.publish : {};\n const commit =\n options.commitOverride === undefined\n ? to_boolean(publish.commit, false)\n : options.commitOverride;\n const outDirValue = first_non_empty(options.outDirOverride, raw.out_dir, raw.output_dir);\n const outDir = outDirValue\n ? resolve_path(requestDir, outDirValue)\n : default_out_dir(requestDir, commit, options.now);\n const relationMode = first_non_empty(publish.relation_mode, 'local_manifest_only');\n\n if (relationMode !== 'local_manifest_only') {\n throw new CliError(\"publish.relation_mode only supports 'local_manifest_only'.\", {\n code: 'PUBLISH_UNSUPPORTED_RELATION_MODE',\n exitCode: 2,\n details: relationMode,\n });\n }\n\n return {\n inputs: {\n bundle_paths: ensure_list(inputs.bundle_paths)\n .map((value) => String(value).trim())\n .filter(Boolean)\n .map((value) => resolve_path(requestDir, value)),\n lifecyclemodels: ensure_list(inputs.lifecyclemodels) as PublishDatasetEntry[],\n processes: ensure_list(inputs.processes) as PublishDatasetEntry[],\n sources: ensure_list(inputs.sources) as PublishDatasetEntry[],\n relations: ensure_list(inputs.relations),\n process_build_runs: ensure_list(inputs.process_build_runs) as PublishProcessBuildRunEntry[],\n },\n publish: {\n commit,\n publish_lifecyclemodels: to_boolean(publish.publish_lifecyclemodels, true),\n publish_processes: to_boolean(publish.publish_processes, true),\n publish_sources: to_boolean(publish.publish_sources, true),\n publish_relations: to_boolean(publish.publish_relations, true),\n publish_process_build_runs: to_boolean(publish.publish_process_build_runs, true),\n relation_mode: 'local_manifest_only',\n max_attempts: to_positive_integer(publish.max_attempts, DEFAULT_MAX_ATTEMPTS),\n retry_delay_seconds: to_non_negative_number(\n publish.retry_delay_seconds,\n DEFAULT_RETRY_DELAY_SECONDS,\n ),\n process_build_forward_args: ensure_list(publish.process_build_forward_args)\n .map((value) => String(value).trim())\n .filter(Boolean),\n },\n out_dir: outDir,\n };\n}\n\nexport function collectPublishInputs(\n normalized: PublishRequest,\n requestBaseDir: string,\n): PublishCollectedInputs {\n const collected: PublishCollectedInputs = {\n bundle_paths: [...normalized.inputs.bundle_paths],\n lifecyclemodels: [],\n processes: [],\n sources: [],\n relations: [],\n process_build_runs: [],\n };\n\n for (const bundlePath of normalized.inputs.bundle_paths) {\n const bundle = load_json_object(bundlePath);\n const origin: PublishCollectedOrigin = {\n source: 'bundle',\n base_dir: path.dirname(bundlePath),\n bundle_path: bundlePath,\n };\n push_collected_entries<PublishDatasetEntry>(\n collected.lifecyclemodels,\n ensure_list(bundle.lifecyclemodels),\n origin,\n );\n push_collected_entries<PublishDatasetEntry>(\n collected.processes,\n [...ensure_list(bundle.projected_processes), ...ensure_list(bundle.processes)],\n origin,\n );\n push_collected_entries<PublishDatasetEntry>(\n collected.sources,\n ensure_list(bundle.sources),\n origin,\n );\n push_collected_entries(\n collected.relations,\n [...ensure_list(bundle.resulting_process_relations), ...ensure_list(bundle.relations)],\n origin,\n );\n push_collected_entries<PublishProcessBuildRunEntry>(\n collected.process_build_runs,\n ensure_list(bundle.process_build_runs),\n origin,\n );\n }\n\n const directOrigin: PublishCollectedOrigin = {\n source: 'input',\n base_dir: requestBaseDir,\n bundle_path: null,\n };\n\n push_collected_entries<PublishDatasetEntry>(\n collected.lifecyclemodels,\n normalized.inputs.lifecyclemodels,\n directOrigin,\n );\n push_collected_entries<PublishDatasetEntry>(\n collected.processes,\n normalized.inputs.processes,\n directOrigin,\n );\n push_collected_entries<PublishDatasetEntry>(\n collected.sources,\n normalized.inputs.sources,\n directOrigin,\n );\n push_collected_entries(collected.relations, normalized.inputs.relations, directOrigin);\n push_collected_entries<PublishProcessBuildRunEntry>(\n collected.process_build_runs,\n normalized.inputs.process_build_runs,\n directOrigin,\n );\n\n return collected;\n}\n\nasync function maybe_execute_dataset(\n report: PreparedPublishDatasetReport,\n payload: JsonObject,\n options: PublishRequestOptions & {\n table: 'lifecyclemodels' | 'processes' | 'sources';\n metadata?: LifecyclemodelPublishMetadata | null;\n },\n): Promise<PublishDatasetReport> {\n if (!options.commit) {\n return report;\n }\n\n if (!options.executor) {\n report.status = 'deferred_no_executor';\n return report;\n }\n\n try {\n report.execution = await options.executor({\n table: options.table,\n id: report.id,\n version: report.version,\n payload,\n metadata: options.metadata,\n source: report.source,\n bundle_path: report.bundle_path,\n publish: options.publish,\n });\n report.status = 'executed';\n } catch (error) {\n report.status = 'failed';\n report.error = serialize_error(error);\n }\n\n return report;\n}\n\nasync function publish_lifecyclemodels(\n entries: PublishCollectedDatasetEntry[],\n options: PublishRequestOptions,\n): Promise<PublishDatasetReport[]> {\n const reports: PublishDatasetReport[] = [];\n for (const item of entries) {\n const loaded = load_lifecyclemodel_publish_entry(item.entry, item.origin.base_dir);\n const payload = loaded.payload;\n const [datasetId, version] = extract_lifecyclemodel_identity(payload);\n const report: PreparedPublishDatasetReport = {\n table: 'lifecyclemodels',\n id: datasetId,\n version,\n status: 'prepared',\n source: item.origin.source,\n bundle_path: item.origin.bundle_path,\n };\n reports.push(\n await maybe_execute_dataset(report, payload, {\n ...options,\n table: 'lifecyclemodels',\n executor: options.executor,\n metadata: loaded.metadata,\n }),\n );\n }\n return reports;\n}\n\nasync function publish_processes(\n entries: PublishCollectedDatasetEntry[],\n options: PublishRequestOptions,\n): Promise<PublishDatasetReport[]> {\n const reports: PublishDatasetReport[] = [];\n for (const item of entries) {\n const payload = load_dataset_entry(item.entry, item.origin.base_dir);\n try {\n const [datasetId, version] = extract_process_identity(payload);\n const report: PreparedPublishDatasetReport = {\n table: 'processes',\n id: datasetId,\n version,\n status: 'prepared',\n source: item.origin.source,\n bundle_path: item.origin.bundle_path,\n };\n reports.push(\n await maybe_execute_dataset(report, payload, {\n ...options,\n table: 'processes',\n executor: options.executor,\n }),\n );\n } catch (error) {\n const report: PublishDatasetReport = {\n table: 'processes',\n id: first_non_empty(payload['@id'], payload.id),\n version: first_non_empty(payload['@version'], payload.version, DEFAULT_DATASET_VERSION),\n status: 'deferred_projection_payload',\n source: item.origin.source,\n bundle_path: item.origin.bundle_path,\n reason:\n error instanceof CliError && error.code === 'PUBLISH_PROCESS_ID_MISSING'\n ? 'Payload is not a canonical processDataSet wrapper; keep it in the publish bundle until a projection-to-process adapter exists.'\n : serialize_error(error).message,\n };\n reports.push(report);\n }\n }\n return reports;\n}\n\nasync function publish_sources(\n entries: PublishCollectedDatasetEntry[],\n options: PublishRequestOptions,\n): Promise<PublishDatasetReport[]> {\n const reports: PublishDatasetReport[] = [];\n for (const item of entries) {\n const payload = load_dataset_entry(item.entry, item.origin.base_dir);\n const [datasetId, version] = extract_source_identity(payload);\n const report: PreparedPublishDatasetReport = {\n table: 'sources',\n id: datasetId,\n version,\n status: 'prepared',\n source: item.origin.source,\n bundle_path: item.origin.bundle_path,\n };\n reports.push(\n await maybe_execute_dataset(report, payload, {\n ...options,\n table: 'sources',\n executor: options.executor,\n }),\n );\n }\n return reports;\n}\n\nasync function publish_process_build_runs(\n entries: PublishCollectedProcessBuildRunEntry[],\n options: {\n commit: boolean;\n executor: PublishExecutors['process_build_runs'];\n publish: PublishRequest['publish'];\n },\n): Promise<PublishProcessBuildRunReport[]> {\n const reports: PublishProcessBuildRunReport[] = [];\n for (const item of entries) {\n const runId =\n typeof item.entry === 'string' ? item.entry.trim() : first_non_empty(item.entry.run_id);\n\n if (!runId) {\n throw new CliError('process_build_run entry missing run_id.', {\n code: 'PUBLISH_PROCESS_BUILD_RUN_ID_MISSING',\n exitCode: 2,\n details: item.entry,\n });\n }\n\n const report: PublishProcessBuildRunReport = {\n run_id: runId,\n status: 'prepared',\n source: item.origin.source,\n bundle_path: item.origin.bundle_path,\n forward_args: [...options.publish.process_build_forward_args],\n };\n\n if (!options.commit) {\n reports.push(report);\n continue;\n }\n\n if (!options.executor) {\n report.status = 'deferred_no_executor';\n reports.push(report);\n continue;\n }\n\n try {\n report.execution = await options.executor({\n run_id: runId,\n entry: item.entry,\n source: item.origin.source,\n bundle_path: item.origin.bundle_path,\n forward_args: [...options.publish.process_build_forward_args],\n publish: options.publish,\n });\n report.status = 'executed';\n } catch (error) {\n report.status = 'failed';\n report.error = serialize_error(error);\n }\n\n reports.push(report);\n }\n return reports;\n}\n\nfunction build_relation_manifest(\n relations: PublishCollectedRelationEntry[],\n publish: PublishRequest['publish'],\n now: Date,\n): PublishRelationManifest {\n return {\n generated_at_utc: now.toISOString(),\n relation_mode: publish.relation_mode,\n status: 'prepared_local_relation_manifest',\n relations: publish.publish_relations ? relations.map((item) => item.entry) : [],\n };\n}\n\nfunction table_write_mode_for_publish(): SupabaseJsonOrderedWriteMode {\n return 'upsert_current_version';\n}\n\nfunction build_default_dataset_executor(options: {\n table: SupabaseJsonOrderedTable;\n env: NodeJS.ProcessEnv;\n fetchImpl: FetchLike;\n timeoutMs?: number;\n}) {\n return async (args: DatasetPublishExecutorArgs): Promise<unknown> => {\n if (options.table === 'processes') {\n return syncStateAwareProcessRecord({\n id: args.id,\n version: args.version,\n payload: args.payload,\n env: options.env,\n fetchImpl: options.fetchImpl,\n timeoutMs: options.timeoutMs,\n audit: {\n command: 'tiangong publish run',\n source: args.source,\n bundle_path: args.bundle_path,\n },\n });\n }\n\n if (options.table === 'lifecyclemodels') {\n return syncLifecyclemodelBundleRecord({\n id: args.id,\n version: args.version,\n payload: args.payload,\n metadata: args.metadata ?? null,\n env: options.env,\n fetchImpl: options.fetchImpl,\n timeoutMs: options.timeoutMs,\n });\n }\n\n return syncSupabaseJsonOrderedRecord({\n table: options.table,\n id: args.id,\n version: args.version,\n payload: args.payload,\n writeMode: table_write_mode_for_publish(),\n env: options.env,\n fetchImpl: options.fetchImpl,\n timeoutMs: options.timeoutMs,\n });\n };\n}\n\nfunction resolve_dataset_executors(options: RunPublishOptions): PublishExecutors {\n const explicit = options.executors ?? {};\n const env = options.env;\n const fetchImpl = options.fetchImpl;\n\n if (!env || !fetchImpl || !hasSupabaseRestRuntime(env)) {\n return explicit;\n }\n\n return {\n lifecyclemodels:\n explicit.lifecyclemodels ??\n build_default_dataset_executor({\n table: 'lifecyclemodels',\n env,\n fetchImpl,\n timeoutMs: options.timeoutMs,\n }),\n processes:\n explicit.processes ??\n build_default_dataset_executor({\n table: 'processes',\n env,\n fetchImpl,\n timeoutMs: options.timeoutMs,\n }),\n sources:\n explicit.sources ??\n build_default_dataset_executor({\n table: 'sources',\n env,\n fetchImpl,\n timeoutMs: options.timeoutMs,\n }),\n process_build_runs: explicit.process_build_runs,\n };\n}\n\nexport async function runPublish(options: RunPublishOptions): Promise<PublishReport> {\n const requestPath = path.resolve(options.inputPath);\n const requestDir = path.dirname(requestPath);\n const raw = options.rawRequest ?? readJsonInput(requestPath);\n const normalized = normalizePublishRequest(raw, {\n requestPath,\n outDirOverride: options.outDir ?? undefined,\n commitOverride: options.commit ?? undefined,\n now: options.now,\n });\n const collected = collectPublishInputs(normalized, requestDir);\n const now = options.now ?? new Date();\n const outDir = normalized.out_dir;\n const executors = resolve_dataset_executors(options);\n\n const files = {\n normalized_request: path.join(outDir, 'normalized-request.json'),\n collected_inputs: path.join(outDir, 'collected-inputs.json'),\n relation_manifest: path.join(outDir, 'relation-manifest.json'),\n publish_report: path.join(outDir, 'publish-report.json'),\n };\n\n writeJsonArtifact(files.normalized_request, normalized);\n writeJsonArtifact(files.collected_inputs, collected);\n\n const lifecyclemodels = normalized.publish.publish_lifecyclemodels\n ? await publish_lifecyclemodels(collected.lifecyclemodels, {\n commit: normalized.publish.commit,\n executor: executors.lifecyclemodels,\n publish: normalized.publish,\n })\n : [];\n const processes = normalized.publish.publish_processes\n ? await publish_processes(collected.processes, {\n commit: normalized.publish.commit,\n executor: executors.processes,\n publish: normalized.publish,\n })\n : [];\n const sources = normalized.publish.publish_sources\n ? await publish_sources(collected.sources, {\n commit: normalized.publish.commit,\n executor: executors.sources,\n publish: normalized.publish,\n })\n : [];\n const processBuildRuns = normalized.publish.publish_process_build_runs\n ? await publish_process_build_runs(collected.process_build_runs, {\n commit: normalized.publish.commit,\n executor: executors.process_build_runs,\n publish: normalized.publish,\n })\n : [];\n const relations = build_relation_manifest(collected.relations, normalized.publish, now);\n\n writeJsonArtifact(files.relation_manifest, relations);\n\n const publishEntries = [...lifecyclemodels, ...processes, ...sources, ...processBuildRuns];\n const failed = publishEntries.filter((item) => item.status === 'failed').length;\n const executed = publishEntries.filter((item) => item.status === 'executed').length;\n const deferred = publishEntries.filter((item) => item.status.startsWith('deferred')).length;\n\n const report: PublishReport = {\n generated_at_utc: now.toISOString(),\n request_path: requestPath,\n out_dir: outDir,\n commit: normalized.publish.commit,\n status: failed > 0 ? 'completed_with_failures' : 'completed',\n counts: {\n bundle_paths: collected.bundle_paths.length,\n lifecyclemodels: lifecyclemodels.length,\n processes: processes.length,\n sources: sources.length,\n relations: relations.relations.length,\n process_build_runs: processBuildRuns.length,\n executed,\n deferred,\n failed,\n },\n files,\n lifecyclemodels,\n processes,\n sources,\n process_build_runs: processBuildRuns,\n relations,\n };\n\n writeJsonArtifact(files.publish_report, report);\n return report;\n}\n"]}
|
|
1
|
+
{"version":3,"file":"publish.js","sourceRoot":"","sources":["../../../src/lib/publish.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAEnD,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACxC,OAAO,EACL,8BAA8B,GAE/B,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAE,2BAA2B,EAAE,MAAM,yBAAyB,CAAC;AACtE,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AACxD,OAAO,EACL,sBAAsB,EACtB,6BAA6B,GAG9B,MAAM,kCAAkC,CAAC;AAI1C,MAAM,oBAAoB,GAAG,CAAC,CAAC;AAC/B,MAAM,2BAA2B,GAAG,GAAG,CAAC;AACxC,MAAM,uBAAuB,GAAG,WAAW,CAAC;AAE5C,SAAS,QAAQ,CAAC,KAAc;IAC9B,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC9E,CAAC;AAED,SAAS,WAAW,CAAC,KAAc;IACjC,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;QAC1C,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;AAChD,CAAC;AAED,SAAS,eAAe,CAAC,GAAG,MAAiB;IAC3C,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC;YAC9C,OAAO,KAAK,CAAC,IAAI,EAAE,CAAC;QACtB,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,mBAAmB,CAAC,KAAc,EAAE,YAAoB;IAC/D,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,EAAE,EAAE,CAAC;QAC1D,OAAO,YAAY,CAAC;IACtB,CAAC;IACD,MAAM,MAAM,GACV,OAAO,KAAK,KAAK,QAAQ;QACvB,CAAC,CAAC,KAAK;QACP,CAAC,CAAC,OAAO,KAAK,KAAK,QAAQ;YACzB,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,EAAE,CAAC;YAC5B,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC;IACnB,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,MAAM,IAAI,CAAC,EAAE,CAAC;QAC7C,MAAM,IAAI,QAAQ,CAAC,oDAAoD,EAAE;YACvE,IAAI,EAAE,yBAAyB;YAC/B,QAAQ,EAAE,CAAC;YACX,OAAO,EAAE,KAAK;SACf,CAAC,CAAC;IACL,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,sBAAsB,CAAC,KAAc,EAAE,YAAoB;IAClE,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,EAAE,EAAE,CAAC;QAC1D,OAAO,YAAY,CAAC;IACtB,CAAC;IACD,MAAM,MAAM,GACV,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC;IAC7F,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,MAAM,GAAG,CAAC,EAAE,CAAC;QAC3C,MAAM,IAAI,QAAQ,CAAC,uDAAuD,EAAE;YAC1E,IAAI,EAAE,wBAAwB;YAC9B,QAAQ,EAAE,CAAC;YACX,OAAO,EAAE,KAAK;SACf,CAAC,CAAC;IACL,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,UAAU,CAAC,KAAc,EAAE,YAAqB;IACvD,OAAO,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC7D,CAAC;AAED,SAAS,YAAY,CAAC,OAAe,EAAE,KAAa;IAClD,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;AACtC,CAAC;AAED,SAAS,gBAAgB,CAAC,QAAgB;IACxC,MAAM,KAAK,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAC;IACtC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QACrB,MAAM,IAAI,QAAQ,CAAC,+BAA+B,QAAQ,EAAE,EAAE;YAC5D,IAAI,EAAE,0BAA0B;YAChC,QAAQ,EAAE,CAAC;SACZ,CAAC,CAAC;IACL,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,eAAe,CAAC,OAAe,EAAE,MAAe,EAAE,MAAY,IAAI,IAAI,EAAE;IAC/E,MAAM,KAAK,GAAG,UAAU,CAAC;QACvB,SAAS,EAAE,SAAS;QACpB,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS;QACxC,GAAG;KACJ,CAAC,CAAC;IACH,OAAO,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,WAAW,CAAC,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC,OAAO,CAAC;AACrF,CAAC;AAED,SAAS,eAAe,CAAC,KAAc;IACrC,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;QAC3B,OAAO,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC;IACpC,CAAC;IACD,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;AACpC,CAAC;AA8MD,SAAS,+BAA+B,CAAC,OAAmB;IAC1D,MAAM,IAAI,GAAG,QAAQ,CAAC,OAAO,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,qBAAqB,CAAC,CAAC,CAAC,OAAO,CAAC;IAC/F,MAAM,yBAAyB,GAAG,QAAQ,CAAC,IAAI,CAAC,yBAAyB,CAAC;QACxE,CAAC,CAAC,IAAI,CAAC,yBAAyB;QAChC,CAAC,CAAC,EAAE,CAAC;IACP,MAAM,kBAAkB,GAAG,QAAQ,CAAC,yBAAyB,CAAC,kBAAkB,CAAC;QAC/E,CAAC,CAAC,yBAAyB,CAAC,kBAAkB;QAC9C,CAAC,CAAC,EAAE,CAAC;IACP,MAAM,yBAAyB,GAAG,QAAQ,CAAC,IAAI,CAAC,yBAAyB,CAAC;QACxE,CAAC,CAAC,IAAI,CAAC,yBAAyB;QAChC,CAAC,CAAC,EAAE,CAAC;IACP,MAAM,uBAAuB,GAAG,QAAQ,CAAC,yBAAyB,CAAC,uBAAuB,CAAC;QACzF,CAAC,CAAC,yBAAyB,CAAC,uBAAuB;QACnD,CAAC,CAAC,EAAE,CAAC;IACP,MAAM,SAAS,GAAG,eAAe,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC,EAAE,EAAE,kBAAkB,CAAC,aAAa,CAAC,CAAC,CAAC;IACjG,MAAM,OAAO,GAAG,eAAe,CAC7B,OAAO,CAAC,UAAU,CAAC,EACnB,OAAO,CAAC,OAAO,EACf,uBAAuB,CAAC,uBAAuB,CAAC,EAChD,uBAAuB,CACvB,CAAC;IACH,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,MAAM,IAAI,QAAQ,CAAC,yCAAyC,EAAE;YAC5D,IAAI,EAAE,mCAAmC;YACzC,QAAQ,EAAE,CAAC;SACZ,CAAC,CAAC;IACL,CAAC;IACD,OAAO,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;AAC9B,CAAC;AAED,SAAS,wBAAwB,CAAC,OAAmB;IACnD,MAAM,IAAI,GAAG,QAAQ,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC,OAAO,CAAC;IACjF,MAAM,kBAAkB,GAAG,QAAQ,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,EAAE,CAAC;IAC5F,MAAM,kBAAkB,GAAG,QAAQ,CAAC,kBAAkB,CAAC,kBAAkB,CAAC;QACxE,CAAC,CAAC,kBAAkB,CAAC,kBAAkB;QACvC,CAAC,CAAC,EAAE,CAAC;IACP,MAAM,yBAAyB,GAAG,QAAQ,CAAC,IAAI,CAAC,yBAAyB,CAAC;QACxE,CAAC,CAAC,IAAI,CAAC,yBAAyB;QAChC,CAAC,CAAC,EAAE,CAAC;IACP,MAAM,uBAAuB,GAAG,QAAQ,CAAC,yBAAyB,CAAC,uBAAuB,CAAC;QACzF,CAAC,CAAC,yBAAyB,CAAC,uBAAuB;QACnD,CAAC,CAAC,EAAE,CAAC;IACP,MAAM,SAAS,GAAG,eAAe,CAAC,kBAAkB,CAAC,aAAa,CAAC,CAAC,CAAC;IACrE,MAAM,OAAO,GAAG,eAAe,CAC7B,uBAAuB,CAAC,uBAAuB,CAAC,EAChD,uBAAuB,CACvB,CAAC;IACH,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,MAAM,IAAI,QAAQ,CAChB,4EAA4E,EAC5E;YACE,IAAI,EAAE,4BAA4B;YAClC,QAAQ,EAAE,CAAC;SACZ,CACF,CAAC;IACJ,CAAC;IACD,OAAO,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;AAC9B,CAAC;AAED,SAAS,uBAAuB,CAAC,OAAmB;IAClD,MAAM,IAAI,GAAG,QAAQ,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,CAAC;IAC/E,MAAM,iBAAiB,GAAG,QAAQ,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,EAAE,CAAC;IACzF,MAAM,kBAAkB,GAAG,QAAQ,CAAC,iBAAiB,CAAC,kBAAkB,CAAC;QACvE,CAAC,CAAC,iBAAiB,CAAC,kBAAkB;QACtC,CAAC,CAAC,EAAE,CAAC;IACP,MAAM,yBAAyB,GAAG,QAAQ,CAAC,IAAI,CAAC,yBAAyB,CAAC;QACxE,CAAC,CAAC,IAAI,CAAC,yBAAyB;QAChC,CAAC,CAAC,EAAE,CAAC;IACP,MAAM,uBAAuB,GAAG,QAAQ,CAAC,yBAAyB,CAAC,uBAAuB,CAAC;QACzF,CAAC,CAAC,yBAAyB,CAAC,uBAAuB;QACnD,CAAC,CAAC,EAAE,CAAC;IACP,MAAM,SAAS,GAAG,eAAe,CAAC,kBAAkB,CAAC,aAAa,CAAC,CAAC,CAAC;IACrE,MAAM,OAAO,GAAG,eAAe,CAC7B,uBAAuB,CAAC,uBAAuB,CAAC,EAChD,uBAAuB,CACvB,CAAC;IACH,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,MAAM,IAAI,QAAQ,CAAC,0EAA0E,EAAE;YAC7F,IAAI,EAAE,2BAA2B;YACjC,QAAQ,EAAE,CAAC;SACZ,CAAC,CAAC;IACL,CAAC;IACD,OAAO,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;AAC9B,CAAC;AAED,SAAS,kBAAkB,CAAC,KAA0B,EAAE,OAAe;IACrE,MAAM,MAAM,GAAG,yBAAyB,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IACzD,IAAI,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;QACrB,KAAK,MAAM,GAAG,IAAI,CAAC,cAAc,EAAE,aAAa,EAAE,SAAS,CAAU,EAAE,CAAC;YACtE,MAAM,SAAS,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;YAC9B,IAAI,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;gBACxB,OAAO,SAAS,CAAC;YACnB,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,yBAAyB,CAAC,KAA0B,EAAE,OAAe;IAC5E,IAAI,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QACpB,MAAM,SAAS,GAAG,eAAe,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;QAC1D,IAAI,SAAS,EAAE,CAAC;YACd,OAAO,gBAAgB,CAAC,YAAY,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC,CAAC;QAC5D,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC;QAC9C,OAAO,gBAAgB,CAAC,YAAY,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC;IACxD,CAAC;IAED,MAAM,IAAI,QAAQ,CAAC,+CAA+C,EAAE;QAClE,IAAI,EAAE,mCAAmC;QACzC,QAAQ,EAAE,CAAC;QACX,OAAO,EAAE,KAAK;KACf,CAAC,CAAC;AACL,CAAC;AAED,SAAS,iCAAiC,CACxC,KAA0B,EAC1B,OAAe;IAEf,MAAM,MAAM,GAAG,yBAAyB,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IACzD,MAAM,OAAO,GAAG,kBAAkB,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IACnD,MAAM,QAAQ,GAAkC,EAAE,CAAC;IACnD,MAAM,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC;QACrC,CAAC,CAAC,MAAM,CAAC,OAAO;QAChB,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC;YACvB,CAAC,CAAC,MAAM,CAAC,MAAM;YACf,CAAC,CAAC,IAAI,CAAC;IACX,IAAI,MAAM,EAAE,CAAC;QACX,QAAQ,CAAC,OAAO,GAAG,MAAM,CAAC;IAC5B,CAAC;IAED,MAAM,gBAAgB,GAAG,MAAM,CAAC,gBAAgB,IAAI,MAAM,CAAC,iBAAiB,CAAC;IAC7E,IAAI,KAAK,CAAC,OAAO,CAAC,gBAAgB,CAAC,EAAE,CAAC;QACpC,QAAQ,CAAC,gBAAgB,GAAG,gBAAgC,CAAC;IAC/D,CAAC;IAED,MAAM,gBAAgB,GACpB,OAAO,MAAM,CAAC,gBAAgB,KAAK,SAAS;QAC1C,CAAC,CAAC,MAAM,CAAC,gBAAgB;QACzB,CAAC,CAAC,OAAO,MAAM,CAAC,iBAAiB,KAAK,SAAS;YAC7C,CAAC,CAAC,MAAM,CAAC,iBAAiB;YAC1B,CAAC,CAAC,SAAS,CAAC;IAClB,IAAI,OAAO,gBAAgB,KAAK,SAAS,EAAE,CAAC;QAC1C,QAAQ,CAAC,gBAAgB,GAAG,gBAAgB,CAAC;IAC/C,CAAC;IAED,OAAO;QACL,OAAO;QACP,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI;KAC7D,CAAC;AACJ,CAAC;AAED,SAAS,sBAAsB,CAC7B,MAA2D,EAC3D,OAAkB,EAClB,MAA8B;IAE9B,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC5B,MAAM,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,KAAU,EAAE,MAAM,EAAE,CAAC,CAAC;IAC7C,CAAC;AACH,CAAC;AAED,MAAM,UAAU,uBAAuB,CACrC,GAAY,EACZ,OAAuC;IAEvC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;QACnB,MAAM,IAAI,QAAQ,CAAC,wCAAwC,EAAE;YAC3D,IAAI,EAAE,4BAA4B;YAClC,QAAQ,EAAE,CAAC;SACZ,CAAC,CAAC;IACL,CAAC;IAED,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;IACrD,MAAM,MAAM,GAAG,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;IACtD,MAAM,OAAO,GAAG,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;IACzD,MAAM,MAAM,GACV,OAAO,CAAC,cAAc,KAAK,SAAS;QAClC,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,MAAM,EAAE,KAAK,CAAC;QACnC,CAAC,CAAC,OAAO,CAAC,cAAc,CAAC;IAC7B,MAAM,WAAW,GAAG,eAAe,CAAC,OAAO,CAAC,cAAc,EAAE,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,UAAU,CAAC,CAAC;IACzF,MAAM,MAAM,GAAG,WAAW;QACxB,CAAC,CAAC,YAAY,CAAC,UAAU,EAAE,WAAW,CAAC;QACvC,CAAC,CAAC,eAAe,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC;IACrD,MAAM,YAAY,GAAG,eAAe,CAAC,OAAO,CAAC,aAAa,EAAE,qBAAqB,CAAC,CAAC;IAEnF,IAAI,YAAY,KAAK,qBAAqB,EAAE,CAAC;QAC3C,MAAM,IAAI,QAAQ,CAAC,4DAA4D,EAAE;YAC/E,IAAI,EAAE,mCAAmC;YACzC,QAAQ,EAAE,CAAC;YACX,OAAO,EAAE,YAAY;SACtB,CAAC,CAAC;IACL,CAAC;IAED,OAAO;QACL,MAAM,EAAE;YACN,YAAY,EAAE,WAAW,CAAC,MAAM,CAAC,YAAY,CAAC;iBAC3C,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC;iBACpC,MAAM,CAAC,OAAO,CAAC;iBACf,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,YAAY,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;YAClD,eAAe,EAAE,WAAW,CAAC,MAAM,CAAC,eAAe,CAA0B;YAC7E,SAAS,EAAE,WAAW,CAAC,MAAM,CAAC,SAAS,CAA0B;YACjE,OAAO,EAAE,WAAW,CAAC,MAAM,CAAC,OAAO,CAA0B;YAC7D,SAAS,EAAE,WAAW,CAAC,MAAM,CAAC,SAAS,CAAC;YACxC,kBAAkB,EAAE,WAAW,CAAC,MAAM,CAAC,kBAAkB,CAAkC;SAC5F;QACD,OAAO,EAAE;YACP,MAAM;YACN,uBAAuB,EAAE,UAAU,CAAC,OAAO,CAAC,uBAAuB,EAAE,IAAI,CAAC;YAC1E,iBAAiB,EAAE,UAAU,CAAC,OAAO,CAAC,iBAAiB,EAAE,IAAI,CAAC;YAC9D,eAAe,EAAE,UAAU,CAAC,OAAO,CAAC,eAAe,EAAE,IAAI,CAAC;YAC1D,iBAAiB,EAAE,UAAU,CAAC,OAAO,CAAC,iBAAiB,EAAE,IAAI,CAAC;YAC9D,0BAA0B,EAAE,UAAU,CAAC,OAAO,CAAC,0BAA0B,EAAE,IAAI,CAAC;YAChF,aAAa,EAAE,qBAAqB;YACpC,YAAY,EAAE,mBAAmB,CAAC,OAAO,CAAC,YAAY,EAAE,oBAAoB,CAAC;YAC7E,mBAAmB,EAAE,sBAAsB,CACzC,OAAO,CAAC,mBAAmB,EAC3B,2BAA2B,CAC5B;YACD,0BAA0B,EAAE,WAAW,CAAC,OAAO,CAAC,0BAA0B,CAAC;iBACxE,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC;iBACpC,MAAM,CAAC,OAAO,CAAC;SACnB;QACD,OAAO,EAAE,MAAM;KAChB,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,oBAAoB,CAClC,UAA0B,EAC1B,cAAsB;IAEtB,MAAM,SAAS,GAA2B;QACxC,YAAY,EAAE,CAAC,GAAG,UAAU,CAAC,MAAM,CAAC,YAAY,CAAC;QACjD,eAAe,EAAE,EAAE;QACnB,SAAS,EAAE,EAAE;QACb,OAAO,EAAE,EAAE;QACX,SAAS,EAAE,EAAE;QACb,kBAAkB,EAAE,EAAE;KACvB,CAAC;IAEF,KAAK,MAAM,UAAU,IAAI,UAAU,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC;QACxD,MAAM,MAAM,GAAG,gBAAgB,CAAC,UAAU,CAAC,CAAC;QAC5C,MAAM,MAAM,GAA2B;YACrC,MAAM,EAAE,QAAQ;YAChB,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC;YAClC,WAAW,EAAE,UAAU;SACxB,CAAC;QACF,sBAAsB,CACpB,SAAS,CAAC,eAAe,EACzB,WAAW,CAAC,MAAM,CAAC,eAAe,CAAC,EACnC,MAAM,CACP,CAAC;QACF,sBAAsB,CACpB,SAAS,CAAC,SAAS,EACnB,CAAC,GAAG,WAAW,CAAC,MAAM,CAAC,mBAAmB,CAAC,EAAE,GAAG,WAAW,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,EAC9E,MAAM,CACP,CAAC;QACF,sBAAsB,CACpB,SAAS,CAAC,OAAO,EACjB,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,EAC3B,MAAM,CACP,CAAC;QACF,sBAAsB,CACpB,SAAS,CAAC,SAAS,EACnB,CAAC,GAAG,WAAW,CAAC,MAAM,CAAC,2BAA2B,CAAC,EAAE,GAAG,WAAW,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,EACtF,MAAM,CACP,CAAC;QACF,sBAAsB,CACpB,SAAS,CAAC,kBAAkB,EAC5B,WAAW,CAAC,MAAM,CAAC,kBAAkB,CAAC,EACtC,MAAM,CACP,CAAC;IACJ,CAAC;IAED,MAAM,YAAY,GAA2B;QAC3C,MAAM,EAAE,OAAO;QACf,QAAQ,EAAE,cAAc;QACxB,WAAW,EAAE,IAAI;KAClB,CAAC;IAEF,sBAAsB,CACpB,SAAS,CAAC,eAAe,EACzB,UAAU,CAAC,MAAM,CAAC,eAAe,EACjC,YAAY,CACb,CAAC;IACF,sBAAsB,CACpB,SAAS,CAAC,SAAS,EACnB,UAAU,CAAC,MAAM,CAAC,SAAS,EAC3B,YAAY,CACb,CAAC;IACF,sBAAsB,CACpB,SAAS,CAAC,OAAO,EACjB,UAAU,CAAC,MAAM,CAAC,OAAO,EACzB,YAAY,CACb,CAAC;IACF,sBAAsB,CAAC,SAAS,CAAC,SAAS,EAAE,UAAU,CAAC,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;IACvF,sBAAsB,CACpB,SAAS,CAAC,kBAAkB,EAC5B,UAAU,CAAC,MAAM,CAAC,kBAAkB,EACpC,YAAY,CACb,CAAC;IAEF,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,KAAK,UAAU,qBAAqB,CAClC,MAAoC,EACpC,OAAmB,EACnB,OAGC;IAED,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;QACpB,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;QACtB,MAAM,CAAC,MAAM,GAAG,sBAAsB,CAAC;QACvC,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,IAAI,CAAC;QACH,MAAM,CAAC,SAAS,GAAG,MAAM,OAAO,CAAC,QAAQ,CAAC;YACxC,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,EAAE,EAAE,MAAM,CAAC,EAAE;YACb,OAAO,EAAE,MAAM,CAAC,OAAO;YACvB,OAAO;YACP,QAAQ,EAAE,OAAO,CAAC,QAAQ;YAC1B,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,WAAW,EAAE,MAAM,CAAC,WAAW;YAC/B,OAAO,EAAE,OAAO,CAAC,OAAO;SACzB,CAAC,CAAC;QACH,MAAM,CAAC,MAAM,GAAG,UAAU,CAAC;IAC7B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,CAAC,MAAM,GAAG,QAAQ,CAAC;QACzB,MAAM,CAAC,KAAK,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC;IACxC,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,KAAK,UAAU,uBAAuB,CACpC,OAAuC,EACvC,OAA8B;IAE9B,MAAM,OAAO,GAA2B,EAAE,CAAC;IAC3C,KAAK,MAAM,IAAI,IAAI,OAAO,EAAE,CAAC;QAC3B,MAAM,MAAM,GAAG,iCAAiC,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QACnF,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;QAC/B,MAAM,CAAC,SAAS,EAAE,OAAO,CAAC,GAAG,+BAA+B,CAAC,OAAO,CAAC,CAAC;QACtE,MAAM,MAAM,GAAiC;YAC3C,KAAK,EAAE,iBAAiB;YACxB,EAAE,EAAE,SAAS;YACb,OAAO;YACP,MAAM,EAAE,UAAU;YAClB,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM;YAC1B,WAAW,EAAE,IAAI,CAAC,MAAM,CAAC,WAAW;SACrC,CAAC;QACF,OAAO,CAAC,IAAI,CACV,MAAM,qBAAqB,CAAC,MAAM,EAAE,OAAO,EAAE;YAC3C,GAAG,OAAO;YACV,KAAK,EAAE,iBAAiB;YACxB,QAAQ,EAAE,OAAO,CAAC,QAAQ;YAC1B,QAAQ,EAAE,MAAM,CAAC,QAAQ;SAC1B,CAAC,CACH,CAAC;IACJ,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,KAAK,UAAU,iBAAiB,CAC9B,OAAuC,EACvC,OAA8B;IAE9B,MAAM,OAAO,GAA2B,EAAE,CAAC;IAC3C,KAAK,MAAM,IAAI,IAAI,OAAO,EAAE,CAAC;QAC3B,MAAM,OAAO,GAAG,kBAAkB,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QACrE,IAAI,CAAC;YACH,MAAM,CAAC,SAAS,EAAE,OAAO,CAAC,GAAG,wBAAwB,CAAC,OAAO,CAAC,CAAC;YAC/D,MAAM,MAAM,GAAiC;gBAC3C,KAAK,EAAE,WAAW;gBAClB,EAAE,EAAE,SAAS;gBACb,OAAO;gBACP,MAAM,EAAE,UAAU;gBAClB,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM;gBAC1B,WAAW,EAAE,IAAI,CAAC,MAAM,CAAC,WAAW;aACrC,CAAC;YACF,OAAO,CAAC,IAAI,CACV,MAAM,qBAAqB,CAAC,MAAM,EAAE,OAAO,EAAE;gBAC3C,GAAG,OAAO;gBACV,KAAK,EAAE,WAAW;gBAClB,QAAQ,EAAE,OAAO,CAAC,QAAQ;aAC3B,CAAC,CACH,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,MAAM,GAAyB;gBACnC,KAAK,EAAE,WAAW;gBAClB,EAAE,EAAE,eAAe,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC,EAAE,CAAC;gBAC/C,OAAO,EAAE,eAAe,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,OAAO,CAAC,OAAO,EAAE,uBAAuB,CAAC;gBACvF,MAAM,EAAE,6BAA6B;gBACrC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM;gBAC1B,WAAW,EAAE,IAAI,CAAC,MAAM,CAAC,WAAW;gBACpC,MAAM,EACJ,KAAK,YAAY,QAAQ,IAAI,KAAK,CAAC,IAAI,KAAK,4BAA4B;oBACtE,CAAC,CAAC,gIAAgI;oBAClI,CAAC,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,OAAO;aACrC,CAAC;YACF,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACvB,CAAC;IACH,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,KAAK,UAAU,eAAe,CAC5B,OAAuC,EACvC,OAA8B;IAE9B,MAAM,OAAO,GAA2B,EAAE,CAAC;IAC3C,KAAK,MAAM,IAAI,IAAI,OAAO,EAAE,CAAC;QAC3B,MAAM,OAAO,GAAG,kBAAkB,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QACrE,MAAM,CAAC,SAAS,EAAE,OAAO,CAAC,GAAG,uBAAuB,CAAC,OAAO,CAAC,CAAC;QAC9D,MAAM,MAAM,GAAiC;YAC3C,KAAK,EAAE,SAAS;YAChB,EAAE,EAAE,SAAS;YACb,OAAO;YACP,MAAM,EAAE,UAAU;YAClB,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM;YAC1B,WAAW,EAAE,IAAI,CAAC,MAAM,CAAC,WAAW;SACrC,CAAC;QACF,OAAO,CAAC,IAAI,CACV,MAAM,qBAAqB,CAAC,MAAM,EAAE,OAAO,EAAE;YAC3C,GAAG,OAAO;YACV,KAAK,EAAE,SAAS;YAChB,QAAQ,EAAE,OAAO,CAAC,QAAQ;SAC3B,CAAC,CACH,CAAC;IACJ,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,KAAK,UAAU,0BAA0B,CACvC,OAA+C,EAC/C,OAIC;IAED,MAAM,OAAO,GAAmC,EAAE,CAAC;IACnD,KAAK,MAAM,IAAI,IAAI,OAAO,EAAE,CAAC;QAC3B,MAAM,KAAK,GACT,OAAO,IAAI,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QAE1F,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,MAAM,IAAI,QAAQ,CAAC,yCAAyC,EAAE;gBAC5D,IAAI,EAAE,sCAAsC;gBAC5C,QAAQ,EAAE,CAAC;gBACX,OAAO,EAAE,IAAI,CAAC,KAAK;aACpB,CAAC,CAAC;QACL,CAAC;QAED,MAAM,MAAM,GAAiC;YAC3C,MAAM,EAAE,KAAK;YACb,MAAM,EAAE,UAAU;YAClB,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM;YAC1B,WAAW,EAAE,IAAI,CAAC,MAAM,CAAC,WAAW;YACpC,YAAY,EAAE,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,0BAA0B,CAAC;SAC9D,CAAC;QAEF,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;YACpB,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACrB,SAAS;QACX,CAAC;QAED,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;YACtB,MAAM,CAAC,MAAM,GAAG,sBAAsB,CAAC;YACvC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACrB,SAAS;QACX,CAAC;QAED,IAAI,CAAC;YACH,MAAM,CAAC,SAAS,GAAG,MAAM,OAAO,CAAC,QAAQ,CAAC;gBACxC,MAAM,EAAE,KAAK;gBACb,KAAK,EAAE,IAAI,CAAC,KAAK;gBACjB,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM;gBAC1B,WAAW,EAAE,IAAI,CAAC,MAAM,CAAC,WAAW;gBACpC,YAAY,EAAE,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,0BAA0B,CAAC;gBAC7D,OAAO,EAAE,OAAO,CAAC,OAAO;aACzB,CAAC,CAAC;YACH,MAAM,CAAC,MAAM,GAAG,UAAU,CAAC;QAC7B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,CAAC,MAAM,GAAG,QAAQ,CAAC;YACzB,MAAM,CAAC,KAAK,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC;QACxC,CAAC;QAED,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACvB,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAS,uBAAuB,CAC9B,SAA0C,EAC1C,OAAkC,EAClC,GAAS;IAET,OAAO;QACL,gBAAgB,EAAE,GAAG,CAAC,WAAW,EAAE;QACnC,aAAa,EAAE,OAAO,CAAC,aAAa;QACpC,MAAM,EAAE,kCAAkC;QAC1C,SAAS,EAAE,OAAO,CAAC,iBAAiB,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE;KAChF,CAAC;AACJ,CAAC;AAED,SAAS,4BAA4B;IACnC,OAAO,wBAAwB,CAAC;AAClC,CAAC;AAED,SAAS,8BAA8B,CAAC,OAKvC;IACC,OAAO,KAAK,EAAE,IAAgC,EAAoB,EAAE;QAClE,IAAI,OAAO,CAAC,KAAK,KAAK,WAAW,EAAE,CAAC;YAClC,OAAO,2BAA2B,CAAC;gBACjC,EAAE,EAAE,IAAI,CAAC,EAAE;gBACX,OAAO,EAAE,IAAI,CAAC,OAAO;gBACrB,OAAO,EAAE,IAAI,CAAC,OAAO;gBACrB,GAAG,EAAE,OAAO,CAAC,GAAG;gBAChB,SAAS,EAAE,OAAO,CAAC,SAAS;gBAC5B,SAAS,EAAE,OAAO,CAAC,SAAS;gBAC5B,KAAK,EAAE;oBACL,OAAO,EAAE,0BAA0B;oBACnC,MAAM,EAAE,IAAI,CAAC,MAAM;oBACnB,WAAW,EAAE,IAAI,CAAC,WAAW;iBAC9B;aACF,CAAC,CAAC;QACL,CAAC;QAED,IAAI,OAAO,CAAC,KAAK,KAAK,iBAAiB,EAAE,CAAC;YACxC,OAAO,8BAA8B,CAAC;gBACpC,EAAE,EAAE,IAAI,CAAC,EAAE;gBACX,OAAO,EAAE,IAAI,CAAC,OAAO;gBACrB,OAAO,EAAE,IAAI,CAAC,OAAO;gBACrB,QAAQ,EAAE,IAAI,CAAC,QAAQ,IAAI,IAAI;gBAC/B,GAAG,EAAE,OAAO,CAAC,GAAG;gBAChB,SAAS,EAAE,OAAO,CAAC,SAAS;gBAC5B,SAAS,EAAE,OAAO,CAAC,SAAS;aAC7B,CAAC,CAAC;QACL,CAAC;QAED,OAAO,6BAA6B,CAAC;YACnC,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,EAAE,EAAE,IAAI,CAAC,EAAE;YACX,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,SAAS,EAAE,4BAA4B,EAAE;YACzC,GAAG,EAAE,OAAO,CAAC,GAAG;YAChB,SAAS,EAAE,OAAO,CAAC,SAAS;YAC5B,SAAS,EAAE,OAAO,CAAC,SAAS;SAC7B,CAAC,CAAC;IACL,CAAC,CAAC;AACJ,CAAC;AAED,SAAS,yBAAyB,CAAC,OAA0B;IAC3D,MAAM,QAAQ,GAAG,OAAO,CAAC,SAAS,IAAI,EAAE,CAAC;IACzC,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC;IACxB,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC;IAEpC,IAAI,CAAC,GAAG,IAAI,CAAC,SAAS,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,EAAE,CAAC;QACvD,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,OAAO;QACL,eAAe,EACb,QAAQ,CAAC,eAAe;YACxB,8BAA8B,CAAC;gBAC7B,KAAK,EAAE,iBAAiB;gBACxB,GAAG;gBACH,SAAS;gBACT,SAAS,EAAE,OAAO,CAAC,SAAS;aAC7B,CAAC;QACJ,SAAS,EACP,QAAQ,CAAC,SAAS;YAClB,8BAA8B,CAAC;gBAC7B,KAAK,EAAE,WAAW;gBAClB,GAAG;gBACH,SAAS;gBACT,SAAS,EAAE,OAAO,CAAC,SAAS;aAC7B,CAAC;QACJ,OAAO,EACL,QAAQ,CAAC,OAAO;YAChB,8BAA8B,CAAC;gBAC7B,KAAK,EAAE,SAAS;gBAChB,GAAG;gBACH,SAAS;gBACT,SAAS,EAAE,OAAO,CAAC,SAAS;aAC7B,CAAC;QACJ,kBAAkB,EAAE,QAAQ,CAAC,kBAAkB;KAChD,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,OAA0B;IACzD,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IACpD,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;IAC7C,MAAM,GAAG,GAAG,OAAO,CAAC,UAAU,IAAI,aAAa,CAAC,WAAW,CAAC,CAAC;IAC7D,MAAM,UAAU,GAAG,uBAAuB,CAAC,GAAG,EAAE;QAC9C,WAAW;QACX,cAAc,EAAE,OAAO,CAAC,MAAM,IAAI,SAAS;QAC3C,cAAc,EAAE,OAAO,CAAC,MAAM,IAAI,SAAS;QAC3C,GAAG,EAAE,OAAO,CAAC,GAAG;KACjB,CAAC,CAAC;IACH,MAAM,SAAS,GAAG,oBAAoB,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;IAC/D,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,IAAI,IAAI,IAAI,EAAE,CAAC;IACtC,MAAM,MAAM,GAAG,UAAU,CAAC,OAAO,CAAC;IAClC,MAAM,SAAS,GAAG,yBAAyB,CAAC,OAAO,CAAC,CAAC;IAErD,MAAM,KAAK,GAAG;QACZ,kBAAkB,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,yBAAyB,CAAC;QAChE,gBAAgB,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,uBAAuB,CAAC;QAC5D,iBAAiB,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,wBAAwB,CAAC;QAC9D,cAAc,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,qBAAqB,CAAC;KACzD,CAAC;IAEF,iBAAiB,CAAC,KAAK,CAAC,kBAAkB,EAAE,UAAU,CAAC,CAAC;IACxD,iBAAiB,CAAC,KAAK,CAAC,gBAAgB,EAAE,SAAS,CAAC,CAAC;IAErD,MAAM,eAAe,GAAG,UAAU,CAAC,OAAO,CAAC,uBAAuB;QAChE,CAAC,CAAC,MAAM,uBAAuB,CAAC,SAAS,CAAC,eAAe,EAAE;YACvD,MAAM,EAAE,UAAU,CAAC,OAAO,CAAC,MAAM;YACjC,QAAQ,EAAE,SAAS,CAAC,eAAe;YACnC,OAAO,EAAE,UAAU,CAAC,OAAO;SAC5B,CAAC;QACJ,CAAC,CAAC,EAAE,CAAC;IACP,MAAM,SAAS,GAAG,UAAU,CAAC,OAAO,CAAC,iBAAiB;QACpD,CAAC,CAAC,MAAM,iBAAiB,CAAC,SAAS,CAAC,SAAS,EAAE;YAC3C,MAAM,EAAE,UAAU,CAAC,OAAO,CAAC,MAAM;YACjC,QAAQ,EAAE,SAAS,CAAC,SAAS;YAC7B,OAAO,EAAE,UAAU,CAAC,OAAO;SAC5B,CAAC;QACJ,CAAC,CAAC,EAAE,CAAC;IACP,MAAM,OAAO,GAAG,UAAU,CAAC,OAAO,CAAC,eAAe;QAChD,CAAC,CAAC,MAAM,eAAe,CAAC,SAAS,CAAC,OAAO,EAAE;YACvC,MAAM,EAAE,UAAU,CAAC,OAAO,CAAC,MAAM;YACjC,QAAQ,EAAE,SAAS,CAAC,OAAO;YAC3B,OAAO,EAAE,UAAU,CAAC,OAAO;SAC5B,CAAC;QACJ,CAAC,CAAC,EAAE,CAAC;IACP,MAAM,gBAAgB,GAAG,UAAU,CAAC,OAAO,CAAC,0BAA0B;QACpE,CAAC,CAAC,MAAM,0BAA0B,CAAC,SAAS,CAAC,kBAAkB,EAAE;YAC7D,MAAM,EAAE,UAAU,CAAC,OAAO,CAAC,MAAM;YACjC,QAAQ,EAAE,SAAS,CAAC,kBAAkB;YACtC,OAAO,EAAE,UAAU,CAAC,OAAO;SAC5B,CAAC;QACJ,CAAC,CAAC,EAAE,CAAC;IACP,MAAM,SAAS,GAAG,uBAAuB,CAAC,SAAS,CAAC,SAAS,EAAE,UAAU,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;IAExF,iBAAiB,CAAC,KAAK,CAAC,iBAAiB,EAAE,SAAS,CAAC,CAAC;IAEtD,MAAM,cAAc,GAAG,CAAC,GAAG,eAAe,EAAE,GAAG,SAAS,EAAE,GAAG,OAAO,EAAE,GAAG,gBAAgB,CAAC,CAAC;IAC3F,MAAM,MAAM,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,MAAM,CAAC;IAChF,MAAM,QAAQ,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,KAAK,UAAU,CAAC,CAAC,MAAM,CAAC;IACpF,MAAM,QAAQ,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC;IAE5F,MAAM,MAAM,GAAkB;QAC5B,gBAAgB,EAAE,GAAG,CAAC,WAAW,EAAE;QACnC,YAAY,EAAE,WAAW;QACzB,OAAO,EAAE,MAAM;QACf,MAAM,EAAE,UAAU,CAAC,OAAO,CAAC,MAAM;QACjC,MAAM,EAAE,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,yBAAyB,CAAC,CAAC,CAAC,WAAW;QAC5D,MAAM,EAAE;YACN,YAAY,EAAE,SAAS,CAAC,YAAY,CAAC,MAAM;YAC3C,eAAe,EAAE,eAAe,CAAC,MAAM;YACvC,SAAS,EAAE,SAAS,CAAC,MAAM;YAC3B,OAAO,EAAE,OAAO,CAAC,MAAM;YACvB,SAAS,EAAE,SAAS,CAAC,SAAS,CAAC,MAAM;YACrC,kBAAkB,EAAE,gBAAgB,CAAC,MAAM;YAC3C,QAAQ;YACR,QAAQ;YACR,MAAM;SACP;QACD,KAAK;QACL,eAAe;QACf,SAAS;QACT,OAAO;QACP,kBAAkB,EAAE,gBAAgB;QACpC,SAAS;KACV,CAAC;IAEF,iBAAiB,CAAC,KAAK,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC;IAChD,OAAO,MAAM,CAAC;AAChB,CAAC","sourcesContent":["import path from 'node:path';\nimport { CliError } from './errors.js';\nimport { writeJsonArtifact } from './artifacts.js';\nimport type { FetchLike } from './http.js';\nimport { readJsonInput } from './io.js';\nimport {\n syncLifecyclemodelBundleRecord,\n type LifecyclemodelPublishMetadata,\n} from './lifecyclemodel-bundle-save.js';\nimport { syncStateAwareProcessRecord } from './process-save-draft.js';\nimport { buildRunId, resolveRunLayout } from './run.js';\nimport {\n hasSupabaseRestRuntime,\n syncSupabaseJsonOrderedRecord,\n type SupabaseJsonOrderedTable,\n type SupabaseJsonOrderedWriteMode,\n} from './supabase-json-ordered-write.js';\n\ntype JsonObject = Record<string, unknown>;\n\nconst DEFAULT_MAX_ATTEMPTS = 5;\nconst DEFAULT_RETRY_DELAY_SECONDS = 2.0;\nconst DEFAULT_DATASET_VERSION = '01.01.000';\n\nfunction isRecord(value: unknown): value is JsonObject {\n return typeof value === 'object' && value !== null && !Array.isArray(value);\n}\n\nfunction ensure_list(value: unknown): unknown[] {\n if (value === undefined || value === null) {\n return [];\n }\n return Array.isArray(value) ? value : [value];\n}\n\nfunction first_non_empty(...values: unknown[]): string | null {\n for (const value of values) {\n if (typeof value === 'string' && value.trim()) {\n return value.trim();\n }\n }\n return null;\n}\n\nfunction to_positive_integer(value: unknown, defaultValue: number): number {\n if (value === undefined || value === null || value === '') {\n return defaultValue;\n }\n const parsed =\n typeof value === 'number'\n ? value\n : typeof value === 'string'\n ? Number.parseInt(value, 10)\n : Number.NaN;\n if (!Number.isInteger(parsed) || parsed <= 0) {\n throw new CliError('Publish request expected a positive integer value.', {\n code: 'PUBLISH_INVALID_INTEGER',\n exitCode: 2,\n details: value,\n });\n }\n return parsed;\n}\n\nfunction to_non_negative_number(value: unknown, defaultValue: number): number {\n if (value === undefined || value === null || value === '') {\n return defaultValue;\n }\n const parsed =\n typeof value === 'number' ? value : typeof value === 'string' ? Number(value) : Number.NaN;\n if (!Number.isFinite(parsed) || parsed < 0) {\n throw new CliError('Publish request expected a non-negative number value.', {\n code: 'PUBLISH_INVALID_NUMBER',\n exitCode: 2,\n details: value,\n });\n }\n return parsed;\n}\n\nfunction to_boolean(value: unknown, defaultValue: boolean): boolean {\n return value === undefined ? defaultValue : Boolean(value);\n}\n\nfunction resolve_path(baseDir: string, value: string): string {\n return path.resolve(baseDir, value);\n}\n\nfunction load_json_object(filePath: string): JsonObject {\n const value = readJsonInput(filePath);\n if (!isRecord(value)) {\n throw new CliError(`Expected JSON object input: ${filePath}`, {\n code: 'PUBLISH_INPUT_NOT_OBJECT',\n exitCode: 2,\n });\n }\n return value;\n}\n\nfunction default_out_dir(baseDir: string, commit: boolean, now: Date = new Date()): string {\n const runId = buildRunId({\n namespace: 'publish',\n operation: commit ? 'commit' : 'dry_run',\n now,\n });\n return resolveRunLayout(path.join(baseDir, 'artifacts'), 'publish', runId).runRoot;\n}\n\nfunction serialize_error(error: unknown): { message: string } {\n if (error instanceof Error) {\n return { message: error.message };\n }\n return { message: String(error) };\n}\n\nexport type PublishDatasetEntry =\n | string\n | {\n file?: string;\n path?: string;\n json_ordered?: JsonObject;\n jsonOrdered?: JsonObject;\n payload?: JsonObject;\n [key: string]: unknown;\n };\n\nexport type PublishProcessBuildRunEntry =\n | string\n | {\n run_id?: string;\n run_root?: string;\n exports_dir?: string;\n [key: string]: unknown;\n };\n\nexport type PublishCollectedOrigin = {\n source: 'bundle' | 'input';\n base_dir: string;\n bundle_path: string | null;\n};\n\nexport type PublishCollectedDatasetEntry = {\n entry: PublishDatasetEntry;\n origin: PublishCollectedOrigin;\n};\n\nexport type PublishCollectedProcessBuildRunEntry = {\n entry: PublishProcessBuildRunEntry;\n origin: PublishCollectedOrigin;\n};\n\nexport type PublishCollectedRelationEntry = {\n entry: unknown;\n origin: PublishCollectedOrigin;\n};\n\nexport type PublishRequest = {\n inputs: {\n bundle_paths: string[];\n lifecyclemodels: PublishDatasetEntry[];\n processes: PublishDatasetEntry[];\n sources: PublishDatasetEntry[];\n relations: unknown[];\n process_build_runs: PublishProcessBuildRunEntry[];\n };\n publish: {\n commit: boolean;\n publish_lifecyclemodels: boolean;\n publish_processes: boolean;\n publish_sources: boolean;\n publish_relations: boolean;\n publish_process_build_runs: boolean;\n relation_mode: 'local_manifest_only';\n max_attempts: number;\n retry_delay_seconds: number;\n process_build_forward_args: string[];\n };\n out_dir: string;\n};\n\nexport type PublishCollectedInputs = {\n bundle_paths: string[];\n lifecyclemodels: PublishCollectedDatasetEntry[];\n processes: PublishCollectedDatasetEntry[];\n sources: PublishCollectedDatasetEntry[];\n relations: PublishCollectedRelationEntry[];\n process_build_runs: PublishCollectedProcessBuildRunEntry[];\n};\n\nexport type DatasetPublishExecutorArgs = {\n table: 'lifecyclemodels' | 'processes' | 'sources';\n id: string;\n version: string;\n payload: JsonObject;\n metadata?: LifecyclemodelPublishMetadata | null;\n source: 'bundle' | 'input';\n bundle_path: string | null;\n publish: PublishRequest['publish'];\n};\n\nexport type ProcessBuildRunPublishExecutorArgs = {\n run_id: string;\n entry: PublishProcessBuildRunEntry;\n source: 'bundle' | 'input';\n bundle_path: string | null;\n forward_args: string[];\n publish: PublishRequest['publish'];\n};\n\nexport type PublishExecutors = {\n lifecyclemodels?: (args: DatasetPublishExecutorArgs) => Promise<unknown> | unknown;\n processes?: (args: DatasetPublishExecutorArgs) => Promise<unknown> | unknown;\n sources?: (args: DatasetPublishExecutorArgs) => Promise<unknown> | unknown;\n process_build_runs?: (args: ProcessBuildRunPublishExecutorArgs) => Promise<unknown> | unknown;\n};\n\nexport type PublishDatasetReport = {\n table: 'lifecyclemodels' | 'processes' | 'sources';\n id: string | null;\n version: string | null;\n status:\n | 'prepared'\n | 'executed'\n | 'deferred_no_executor'\n | 'deferred_projection_payload'\n | 'failed';\n source: 'bundle' | 'input';\n bundle_path: string | null;\n reason?: string;\n execution?: unknown;\n error?: { message: string };\n};\n\nexport type PublishProcessBuildRunReport = {\n run_id: string;\n status: 'prepared' | 'executed' | 'deferred_no_executor' | 'failed';\n source: 'bundle' | 'input';\n bundle_path: string | null;\n forward_args: string[];\n execution?: unknown;\n error?: { message: string };\n};\n\nexport type PublishRelationManifest = {\n generated_at_utc: string;\n relation_mode: 'local_manifest_only';\n status: 'prepared_local_relation_manifest';\n relations: unknown[];\n};\n\nexport type PublishReport = {\n generated_at_utc: string;\n request_path: string;\n out_dir: string;\n commit: boolean;\n status: 'completed' | 'completed_with_failures';\n counts: {\n bundle_paths: number;\n lifecyclemodels: number;\n processes: number;\n sources: number;\n relations: number;\n process_build_runs: number;\n executed: number;\n deferred: number;\n failed: number;\n };\n files: {\n normalized_request: string;\n collected_inputs: string;\n relation_manifest: string;\n publish_report: string;\n };\n lifecyclemodels: PublishDatasetReport[];\n processes: PublishDatasetReport[];\n sources: PublishDatasetReport[];\n process_build_runs: PublishProcessBuildRunReport[];\n relations: PublishRelationManifest;\n};\n\nexport type RunPublishOptions = {\n inputPath: string;\n rawRequest?: unknown;\n outDir?: string | null;\n commit?: boolean | null;\n executors?: PublishExecutors;\n env?: NodeJS.ProcessEnv;\n fetchImpl?: FetchLike;\n timeoutMs?: number;\n now?: Date;\n};\n\ntype PreparedPublishDatasetReport = PublishDatasetReport & {\n id: string;\n version: string;\n};\n\ntype NormalizePublishRequestOptions = {\n requestPath: string;\n outDirOverride?: string;\n commitOverride?: boolean;\n now?: Date;\n};\n\ntype PublishRequestOptions = {\n commit: boolean;\n executor:\n | PublishExecutors['lifecyclemodels']\n | PublishExecutors['processes']\n | PublishExecutors['sources']\n | undefined;\n publish: PublishRequest['publish'];\n};\n\ntype LoadedLifecyclemodelPublishEntry = {\n payload: JsonObject;\n metadata: LifecyclemodelPublishMetadata | null;\n};\n\nfunction extract_lifecyclemodel_identity(payload: JsonObject): [string, string] {\n const root = isRecord(payload.lifeCycleModelDataSet) ? payload.lifeCycleModelDataSet : payload;\n const lifeCycleModelInformation = isRecord(root.lifeCycleModelInformation)\n ? root.lifeCycleModelInformation\n : {};\n const dataSetInformation = isRecord(lifeCycleModelInformation.dataSetInformation)\n ? lifeCycleModelInformation.dataSetInformation\n : {};\n const administrativeInformation = isRecord(root.administrativeInformation)\n ? root.administrativeInformation\n : {};\n const publicationAndOwnership = isRecord(administrativeInformation.publicationAndOwnership)\n ? administrativeInformation.publicationAndOwnership\n : {};\n const datasetId = first_non_empty(payload['@id'], payload.id, dataSetInformation['common:UUID']);\n const version = first_non_empty(\n payload['@version'],\n payload.version,\n publicationAndOwnership['common:dataSetVersion'],\n DEFAULT_DATASET_VERSION,\n )!;\n if (!datasetId) {\n throw new CliError('Lifecycle model payload missing @id/id.', {\n code: 'PUBLISH_LIFECYCLEMODEL_ID_MISSING',\n exitCode: 2,\n });\n }\n return [datasetId, version];\n}\n\nfunction extract_process_identity(payload: JsonObject): [string, string] {\n const root = isRecord(payload.processDataSet) ? payload.processDataSet : payload;\n const processInformation = isRecord(root.processInformation) ? root.processInformation : {};\n const dataSetInformation = isRecord(processInformation.dataSetInformation)\n ? processInformation.dataSetInformation\n : {};\n const administrativeInformation = isRecord(root.administrativeInformation)\n ? root.administrativeInformation\n : {};\n const publicationAndOwnership = isRecord(administrativeInformation.publicationAndOwnership)\n ? administrativeInformation.publicationAndOwnership\n : {};\n const datasetId = first_non_empty(dataSetInformation['common:UUID']);\n const version = first_non_empty(\n publicationAndOwnership['common:dataSetVersion'],\n DEFAULT_DATASET_VERSION,\n )!;\n if (!datasetId) {\n throw new CliError(\n 'Process payload missing processInformation.dataSetInformation.common:UUID.',\n {\n code: 'PUBLISH_PROCESS_ID_MISSING',\n exitCode: 2,\n },\n );\n }\n return [datasetId, version];\n}\n\nfunction extract_source_identity(payload: JsonObject): [string, string] {\n const root = isRecord(payload.sourceDataSet) ? payload.sourceDataSet : payload;\n const sourceInformation = isRecord(root.sourceInformation) ? root.sourceInformation : {};\n const dataSetInformation = isRecord(sourceInformation.dataSetInformation)\n ? sourceInformation.dataSetInformation\n : {};\n const administrativeInformation = isRecord(root.administrativeInformation)\n ? root.administrativeInformation\n : {};\n const publicationAndOwnership = isRecord(administrativeInformation.publicationAndOwnership)\n ? administrativeInformation.publicationAndOwnership\n : {};\n const datasetId = first_non_empty(dataSetInformation['common:UUID']);\n const version = first_non_empty(\n publicationAndOwnership['common:dataSetVersion'],\n DEFAULT_DATASET_VERSION,\n )!;\n if (!datasetId) {\n throw new CliError('Source payload missing sourceInformation.dataSetInformation.common:UUID.', {\n code: 'PUBLISH_SOURCE_ID_MISSING',\n exitCode: 2,\n });\n }\n return [datasetId, version];\n}\n\nfunction load_dataset_entry(entry: PublishDatasetEntry, baseDir: string): JsonObject {\n const source = load_dataset_entry_source(entry, baseDir);\n if (isRecord(source)) {\n for (const key of ['json_ordered', 'jsonOrdered', 'payload'] as const) {\n const candidate = source[key];\n if (isRecord(candidate)) {\n return candidate;\n }\n }\n }\n\n return source;\n}\n\nfunction load_dataset_entry_source(entry: PublishDatasetEntry, baseDir: string): JsonObject {\n if (isRecord(entry)) {\n const fileValue = first_non_empty(entry.file, entry.path);\n if (fileValue) {\n return load_json_object(resolve_path(baseDir, fileValue));\n }\n return entry;\n }\n\n if (typeof entry === 'string' && entry.trim()) {\n return load_json_object(resolve_path(baseDir, entry));\n }\n\n throw new CliError('Unsupported dataset entry in publish request.', {\n code: 'PUBLISH_UNSUPPORTED_DATASET_ENTRY',\n exitCode: 2,\n details: entry,\n });\n}\n\nfunction load_lifecyclemodel_publish_entry(\n entry: PublishDatasetEntry,\n baseDir: string,\n): LoadedLifecyclemodelPublishEntry {\n const source = load_dataset_entry_source(entry, baseDir);\n const payload = load_dataset_entry(entry, baseDir);\n const metadata: LifecyclemodelPublishMetadata = {};\n const jsonTg = isRecord(source.json_tg)\n ? source.json_tg\n : isRecord(source.jsonTg)\n ? source.jsonTg\n : null;\n if (jsonTg) {\n metadata.json_tg = jsonTg;\n }\n\n const processMutations = source.processMutations ?? source.process_mutations;\n if (Array.isArray(processMutations)) {\n metadata.processMutations = processMutations as JsonObject[];\n }\n\n const ruleVerification =\n typeof source.ruleVerification === 'boolean'\n ? source.ruleVerification\n : typeof source.rule_verification === 'boolean'\n ? source.rule_verification\n : undefined;\n if (typeof ruleVerification === 'boolean') {\n metadata.ruleVerification = ruleVerification;\n }\n\n return {\n payload,\n metadata: Object.keys(metadata).length > 0 ? metadata : null,\n };\n}\n\nfunction push_collected_entries<T>(\n target: Array<{ entry: T; origin: PublishCollectedOrigin }>,\n entries: unknown[],\n origin: PublishCollectedOrigin,\n): void {\n for (const entry of entries) {\n target.push({ entry: entry as T, origin });\n }\n}\n\nexport function normalizePublishRequest(\n raw: unknown,\n options: NormalizePublishRequestOptions,\n): PublishRequest {\n if (!isRecord(raw)) {\n throw new CliError('Publish request must be a JSON object.', {\n code: 'PUBLISH_REQUEST_NOT_OBJECT',\n exitCode: 2,\n });\n }\n\n const requestDir = path.dirname(options.requestPath);\n const inputs = isRecord(raw.inputs) ? raw.inputs : {};\n const publish = isRecord(raw.publish) ? raw.publish : {};\n const commit =\n options.commitOverride === undefined\n ? to_boolean(publish.commit, false)\n : options.commitOverride;\n const outDirValue = first_non_empty(options.outDirOverride, raw.out_dir, raw.output_dir);\n const outDir = outDirValue\n ? resolve_path(requestDir, outDirValue)\n : default_out_dir(requestDir, commit, options.now);\n const relationMode = first_non_empty(publish.relation_mode, 'local_manifest_only');\n\n if (relationMode !== 'local_manifest_only') {\n throw new CliError(\"publish.relation_mode only supports 'local_manifest_only'.\", {\n code: 'PUBLISH_UNSUPPORTED_RELATION_MODE',\n exitCode: 2,\n details: relationMode,\n });\n }\n\n return {\n inputs: {\n bundle_paths: ensure_list(inputs.bundle_paths)\n .map((value) => String(value).trim())\n .filter(Boolean)\n .map((value) => resolve_path(requestDir, value)),\n lifecyclemodels: ensure_list(inputs.lifecyclemodels) as PublishDatasetEntry[],\n processes: ensure_list(inputs.processes) as PublishDatasetEntry[],\n sources: ensure_list(inputs.sources) as PublishDatasetEntry[],\n relations: ensure_list(inputs.relations),\n process_build_runs: ensure_list(inputs.process_build_runs) as PublishProcessBuildRunEntry[],\n },\n publish: {\n commit,\n publish_lifecyclemodels: to_boolean(publish.publish_lifecyclemodels, true),\n publish_processes: to_boolean(publish.publish_processes, true),\n publish_sources: to_boolean(publish.publish_sources, true),\n publish_relations: to_boolean(publish.publish_relations, true),\n publish_process_build_runs: to_boolean(publish.publish_process_build_runs, true),\n relation_mode: 'local_manifest_only',\n max_attempts: to_positive_integer(publish.max_attempts, DEFAULT_MAX_ATTEMPTS),\n retry_delay_seconds: to_non_negative_number(\n publish.retry_delay_seconds,\n DEFAULT_RETRY_DELAY_SECONDS,\n ),\n process_build_forward_args: ensure_list(publish.process_build_forward_args)\n .map((value) => String(value).trim())\n .filter(Boolean),\n },\n out_dir: outDir,\n };\n}\n\nexport function collectPublishInputs(\n normalized: PublishRequest,\n requestBaseDir: string,\n): PublishCollectedInputs {\n const collected: PublishCollectedInputs = {\n bundle_paths: [...normalized.inputs.bundle_paths],\n lifecyclemodels: [],\n processes: [],\n sources: [],\n relations: [],\n process_build_runs: [],\n };\n\n for (const bundlePath of normalized.inputs.bundle_paths) {\n const bundle = load_json_object(bundlePath);\n const origin: PublishCollectedOrigin = {\n source: 'bundle',\n base_dir: path.dirname(bundlePath),\n bundle_path: bundlePath,\n };\n push_collected_entries<PublishDatasetEntry>(\n collected.lifecyclemodels,\n ensure_list(bundle.lifecyclemodels),\n origin,\n );\n push_collected_entries<PublishDatasetEntry>(\n collected.processes,\n [...ensure_list(bundle.projected_processes), ...ensure_list(bundle.processes)],\n origin,\n );\n push_collected_entries<PublishDatasetEntry>(\n collected.sources,\n ensure_list(bundle.sources),\n origin,\n );\n push_collected_entries(\n collected.relations,\n [...ensure_list(bundle.resulting_process_relations), ...ensure_list(bundle.relations)],\n origin,\n );\n push_collected_entries<PublishProcessBuildRunEntry>(\n collected.process_build_runs,\n ensure_list(bundle.process_build_runs),\n origin,\n );\n }\n\n const directOrigin: PublishCollectedOrigin = {\n source: 'input',\n base_dir: requestBaseDir,\n bundle_path: null,\n };\n\n push_collected_entries<PublishDatasetEntry>(\n collected.lifecyclemodels,\n normalized.inputs.lifecyclemodels,\n directOrigin,\n );\n push_collected_entries<PublishDatasetEntry>(\n collected.processes,\n normalized.inputs.processes,\n directOrigin,\n );\n push_collected_entries<PublishDatasetEntry>(\n collected.sources,\n normalized.inputs.sources,\n directOrigin,\n );\n push_collected_entries(collected.relations, normalized.inputs.relations, directOrigin);\n push_collected_entries<PublishProcessBuildRunEntry>(\n collected.process_build_runs,\n normalized.inputs.process_build_runs,\n directOrigin,\n );\n\n return collected;\n}\n\nasync function maybe_execute_dataset(\n report: PreparedPublishDatasetReport,\n payload: JsonObject,\n options: PublishRequestOptions & {\n table: 'lifecyclemodels' | 'processes' | 'sources';\n metadata?: LifecyclemodelPublishMetadata | null;\n },\n): Promise<PublishDatasetReport> {\n if (!options.commit) {\n return report;\n }\n\n if (!options.executor) {\n report.status = 'deferred_no_executor';\n return report;\n }\n\n try {\n report.execution = await options.executor({\n table: options.table,\n id: report.id,\n version: report.version,\n payload,\n metadata: options.metadata,\n source: report.source,\n bundle_path: report.bundle_path,\n publish: options.publish,\n });\n report.status = 'executed';\n } catch (error) {\n report.status = 'failed';\n report.error = serialize_error(error);\n }\n\n return report;\n}\n\nasync function publish_lifecyclemodels(\n entries: PublishCollectedDatasetEntry[],\n options: PublishRequestOptions,\n): Promise<PublishDatasetReport[]> {\n const reports: PublishDatasetReport[] = [];\n for (const item of entries) {\n const loaded = load_lifecyclemodel_publish_entry(item.entry, item.origin.base_dir);\n const payload = loaded.payload;\n const [datasetId, version] = extract_lifecyclemodel_identity(payload);\n const report: PreparedPublishDatasetReport = {\n table: 'lifecyclemodels',\n id: datasetId,\n version,\n status: 'prepared',\n source: item.origin.source,\n bundle_path: item.origin.bundle_path,\n };\n reports.push(\n await maybe_execute_dataset(report, payload, {\n ...options,\n table: 'lifecyclemodels',\n executor: options.executor,\n metadata: loaded.metadata,\n }),\n );\n }\n return reports;\n}\n\nasync function publish_processes(\n entries: PublishCollectedDatasetEntry[],\n options: PublishRequestOptions,\n): Promise<PublishDatasetReport[]> {\n const reports: PublishDatasetReport[] = [];\n for (const item of entries) {\n const payload = load_dataset_entry(item.entry, item.origin.base_dir);\n try {\n const [datasetId, version] = extract_process_identity(payload);\n const report: PreparedPublishDatasetReport = {\n table: 'processes',\n id: datasetId,\n version,\n status: 'prepared',\n source: item.origin.source,\n bundle_path: item.origin.bundle_path,\n };\n reports.push(\n await maybe_execute_dataset(report, payload, {\n ...options,\n table: 'processes',\n executor: options.executor,\n }),\n );\n } catch (error) {\n const report: PublishDatasetReport = {\n table: 'processes',\n id: first_non_empty(payload['@id'], payload.id),\n version: first_non_empty(payload['@version'], payload.version, DEFAULT_DATASET_VERSION),\n status: 'deferred_projection_payload',\n source: item.origin.source,\n bundle_path: item.origin.bundle_path,\n reason:\n error instanceof CliError && error.code === 'PUBLISH_PROCESS_ID_MISSING'\n ? 'Payload is not a canonical processDataSet wrapper; keep it in the publish bundle until a projection-to-process adapter exists.'\n : serialize_error(error).message,\n };\n reports.push(report);\n }\n }\n return reports;\n}\n\nasync function publish_sources(\n entries: PublishCollectedDatasetEntry[],\n options: PublishRequestOptions,\n): Promise<PublishDatasetReport[]> {\n const reports: PublishDatasetReport[] = [];\n for (const item of entries) {\n const payload = load_dataset_entry(item.entry, item.origin.base_dir);\n const [datasetId, version] = extract_source_identity(payload);\n const report: PreparedPublishDatasetReport = {\n table: 'sources',\n id: datasetId,\n version,\n status: 'prepared',\n source: item.origin.source,\n bundle_path: item.origin.bundle_path,\n };\n reports.push(\n await maybe_execute_dataset(report, payload, {\n ...options,\n table: 'sources',\n executor: options.executor,\n }),\n );\n }\n return reports;\n}\n\nasync function publish_process_build_runs(\n entries: PublishCollectedProcessBuildRunEntry[],\n options: {\n commit: boolean;\n executor: PublishExecutors['process_build_runs'];\n publish: PublishRequest['publish'];\n },\n): Promise<PublishProcessBuildRunReport[]> {\n const reports: PublishProcessBuildRunReport[] = [];\n for (const item of entries) {\n const runId =\n typeof item.entry === 'string' ? item.entry.trim() : first_non_empty(item.entry.run_id);\n\n if (!runId) {\n throw new CliError('process_build_run entry missing run_id.', {\n code: 'PUBLISH_PROCESS_BUILD_RUN_ID_MISSING',\n exitCode: 2,\n details: item.entry,\n });\n }\n\n const report: PublishProcessBuildRunReport = {\n run_id: runId,\n status: 'prepared',\n source: item.origin.source,\n bundle_path: item.origin.bundle_path,\n forward_args: [...options.publish.process_build_forward_args],\n };\n\n if (!options.commit) {\n reports.push(report);\n continue;\n }\n\n if (!options.executor) {\n report.status = 'deferred_no_executor';\n reports.push(report);\n continue;\n }\n\n try {\n report.execution = await options.executor({\n run_id: runId,\n entry: item.entry,\n source: item.origin.source,\n bundle_path: item.origin.bundle_path,\n forward_args: [...options.publish.process_build_forward_args],\n publish: options.publish,\n });\n report.status = 'executed';\n } catch (error) {\n report.status = 'failed';\n report.error = serialize_error(error);\n }\n\n reports.push(report);\n }\n return reports;\n}\n\nfunction build_relation_manifest(\n relations: PublishCollectedRelationEntry[],\n publish: PublishRequest['publish'],\n now: Date,\n): PublishRelationManifest {\n return {\n generated_at_utc: now.toISOString(),\n relation_mode: publish.relation_mode,\n status: 'prepared_local_relation_manifest',\n relations: publish.publish_relations ? relations.map((item) => item.entry) : [],\n };\n}\n\nfunction table_write_mode_for_publish(): SupabaseJsonOrderedWriteMode {\n return 'upsert_current_version';\n}\n\nfunction build_default_dataset_executor(options: {\n table: SupabaseJsonOrderedTable;\n env: NodeJS.ProcessEnv;\n fetchImpl: FetchLike;\n timeoutMs?: number;\n}) {\n return async (args: DatasetPublishExecutorArgs): Promise<unknown> => {\n if (options.table === 'processes') {\n return syncStateAwareProcessRecord({\n id: args.id,\n version: args.version,\n payload: args.payload,\n env: options.env,\n fetchImpl: options.fetchImpl,\n timeoutMs: options.timeoutMs,\n audit: {\n command: 'tiangong-lca publish run',\n source: args.source,\n bundle_path: args.bundle_path,\n },\n });\n }\n\n if (options.table === 'lifecyclemodels') {\n return syncLifecyclemodelBundleRecord({\n id: args.id,\n version: args.version,\n payload: args.payload,\n metadata: args.metadata ?? null,\n env: options.env,\n fetchImpl: options.fetchImpl,\n timeoutMs: options.timeoutMs,\n });\n }\n\n return syncSupabaseJsonOrderedRecord({\n table: options.table,\n id: args.id,\n version: args.version,\n payload: args.payload,\n writeMode: table_write_mode_for_publish(),\n env: options.env,\n fetchImpl: options.fetchImpl,\n timeoutMs: options.timeoutMs,\n });\n };\n}\n\nfunction resolve_dataset_executors(options: RunPublishOptions): PublishExecutors {\n const explicit = options.executors ?? {};\n const env = options.env;\n const fetchImpl = options.fetchImpl;\n\n if (!env || !fetchImpl || !hasSupabaseRestRuntime(env)) {\n return explicit;\n }\n\n return {\n lifecyclemodels:\n explicit.lifecyclemodels ??\n build_default_dataset_executor({\n table: 'lifecyclemodels',\n env,\n fetchImpl,\n timeoutMs: options.timeoutMs,\n }),\n processes:\n explicit.processes ??\n build_default_dataset_executor({\n table: 'processes',\n env,\n fetchImpl,\n timeoutMs: options.timeoutMs,\n }),\n sources:\n explicit.sources ??\n build_default_dataset_executor({\n table: 'sources',\n env,\n fetchImpl,\n timeoutMs: options.timeoutMs,\n }),\n process_build_runs: explicit.process_build_runs,\n };\n}\n\nexport async function runPublish(options: RunPublishOptions): Promise<PublishReport> {\n const requestPath = path.resolve(options.inputPath);\n const requestDir = path.dirname(requestPath);\n const raw = options.rawRequest ?? readJsonInput(requestPath);\n const normalized = normalizePublishRequest(raw, {\n requestPath,\n outDirOverride: options.outDir ?? undefined,\n commitOverride: options.commit ?? undefined,\n now: options.now,\n });\n const collected = collectPublishInputs(normalized, requestDir);\n const now = options.now ?? new Date();\n const outDir = normalized.out_dir;\n const executors = resolve_dataset_executors(options);\n\n const files = {\n normalized_request: path.join(outDir, 'normalized-request.json'),\n collected_inputs: path.join(outDir, 'collected-inputs.json'),\n relation_manifest: path.join(outDir, 'relation-manifest.json'),\n publish_report: path.join(outDir, 'publish-report.json'),\n };\n\n writeJsonArtifact(files.normalized_request, normalized);\n writeJsonArtifact(files.collected_inputs, collected);\n\n const lifecyclemodels = normalized.publish.publish_lifecyclemodels\n ? await publish_lifecyclemodels(collected.lifecyclemodels, {\n commit: normalized.publish.commit,\n executor: executors.lifecyclemodels,\n publish: normalized.publish,\n })\n : [];\n const processes = normalized.publish.publish_processes\n ? await publish_processes(collected.processes, {\n commit: normalized.publish.commit,\n executor: executors.processes,\n publish: normalized.publish,\n })\n : [];\n const sources = normalized.publish.publish_sources\n ? await publish_sources(collected.sources, {\n commit: normalized.publish.commit,\n executor: executors.sources,\n publish: normalized.publish,\n })\n : [];\n const processBuildRuns = normalized.publish.publish_process_build_runs\n ? await publish_process_build_runs(collected.process_build_runs, {\n commit: normalized.publish.commit,\n executor: executors.process_build_runs,\n publish: normalized.publish,\n })\n : [];\n const relations = build_relation_manifest(collected.relations, normalized.publish, now);\n\n writeJsonArtifact(files.relation_manifest, relations);\n\n const publishEntries = [...lifecyclemodels, ...processes, ...sources, ...processBuildRuns];\n const failed = publishEntries.filter((item) => item.status === 'failed').length;\n const executed = publishEntries.filter((item) => item.status === 'executed').length;\n const deferred = publishEntries.filter((item) => item.status.startsWith('deferred')).length;\n\n const report: PublishReport = {\n generated_at_utc: now.toISOString(),\n request_path: requestPath,\n out_dir: outDir,\n commit: normalized.publish.commit,\n status: failed > 0 ? 'completed_with_failures' : 'completed',\n counts: {\n bundle_paths: collected.bundle_paths.length,\n lifecyclemodels: lifecyclemodels.length,\n processes: processes.length,\n sources: sources.length,\n relations: relations.relations.length,\n process_build_runs: processBuildRuns.length,\n executed,\n deferred,\n failed,\n },\n files,\n lifecyclemodels,\n processes,\n sources,\n process_build_runs: processBuildRuns,\n relations,\n };\n\n writeJsonArtifact(files.publish_report, report);\n return report;\n}\n"]}
|
package/dist/src/lib/remote.js
CHANGED
|
@@ -8,22 +8,22 @@ const REMOTE_COMMANDS = {
|
|
|
8
8
|
'search:flow': {
|
|
9
9
|
endpoint: 'flow_hybrid_search',
|
|
10
10
|
includeRegion: true,
|
|
11
|
-
help: 'tiangong search flow --input ./request.json [--dry-run] [--json]',
|
|
11
|
+
help: 'tiangong-lca search flow --input ./request.json [--dry-run] [--json]',
|
|
12
12
|
},
|
|
13
13
|
'search:process': {
|
|
14
14
|
endpoint: 'process_hybrid_search',
|
|
15
15
|
includeRegion: true,
|
|
16
|
-
help: 'tiangong search process --input ./request.json [--dry-run] [--json]',
|
|
16
|
+
help: 'tiangong-lca search process --input ./request.json [--dry-run] [--json]',
|
|
17
17
|
},
|
|
18
18
|
'search:lifecyclemodel': {
|
|
19
19
|
endpoint: 'lifecyclemodel_hybrid_search',
|
|
20
20
|
includeRegion: true,
|
|
21
|
-
help: 'tiangong search lifecyclemodel --input ./request.json [--dry-run] [--json]',
|
|
21
|
+
help: 'tiangong-lca search lifecyclemodel --input ./request.json [--dry-run] [--json]',
|
|
22
22
|
},
|
|
23
23
|
'admin:embedding-run': {
|
|
24
24
|
endpoint: 'embedding_ft',
|
|
25
25
|
includeRegion: false,
|
|
26
|
-
help: 'tiangong admin embedding-run --input ./jobs.json [--dry-run] [--json]',
|
|
26
|
+
help: 'tiangong-lca admin embedding-run --input ./jobs.json [--dry-run] [--json]',
|
|
27
27
|
},
|
|
28
28
|
};
|
|
29
29
|
function buildUrl(baseUrl, endpoint) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"remote.js","sourceRoot":"","sources":["../../../src/lib/remote.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAE1C,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACrC,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACvD,OAAO,EAAE,8BAA8B,EAAE,0BAA0B,EAAE,MAAM,sBAAsB,CAAC;AAClG,OAAO,EAAE,0BAA0B,EAAE,MAAM,uBAAuB,CAAC;AAQnE,MAAM,eAAe,GAAsC;IACzD,aAAa,EAAE;QACb,QAAQ,EAAE,oBAAoB;QAC9B,aAAa,EAAE,IAAI;QACnB,IAAI,EAAE,
|
|
1
|
+
{"version":3,"file":"remote.js","sourceRoot":"","sources":["../../../src/lib/remote.ts"],"names":[],"mappings":"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","sourcesContent":["import { CliError } from './errors.js';\nimport { readRuntimeEnv } from './env.js';\nimport type { FetchLike } from './http.js';\nimport { postJson } from './http.js';\nimport { readJsonInput, stringifyJson } from './io.js';\nimport { deriveSupabaseFunctionsBaseUrl, requireSupabaseRestRuntime } from './supabase-client.js';\nimport { resolveSupabaseUserSession } from './supabase-session.js';\n\ntype RemoteCommandSpec = {\n endpoint: string;\n includeRegion: boolean;\n help: string;\n};\n\nconst REMOTE_COMMANDS: Record<string, RemoteCommandSpec> = {\n 'search:flow': {\n endpoint: 'flow_hybrid_search',\n includeRegion: true,\n help: 'tiangong-lca search flow --input ./request.json [--dry-run] [--json]',\n },\n 'search:process': {\n endpoint: 'process_hybrid_search',\n includeRegion: true,\n help: 'tiangong-lca search process --input ./request.json [--dry-run] [--json]',\n },\n 'search:lifecyclemodel': {\n endpoint: 'lifecyclemodel_hybrid_search',\n includeRegion: true,\n help: 'tiangong-lca search lifecyclemodel --input ./request.json [--dry-run] [--json]',\n },\n 'admin:embedding-run': {\n endpoint: 'embedding_ft',\n includeRegion: false,\n help: 'tiangong-lca admin embedding-run --input ./jobs.json [--dry-run] [--json]',\n },\n};\n\nexport type RemoteCommandOptions = {\n commandKey: keyof typeof REMOTE_COMMANDS;\n inputPath: string;\n env: NodeJS.ProcessEnv;\n timeoutMs: number;\n dryRun: boolean;\n compactJson: boolean;\n fetchImpl: FetchLike;\n};\n\nfunction buildUrl(baseUrl: string, endpoint: string): string {\n return `${deriveSupabaseFunctionsBaseUrl(baseUrl)}/${endpoint}`;\n}\n\nfunction buildHeaders(\n accessToken: string,\n includeRegion: boolean,\n region: string | null,\n): Record<string, string> {\n const headers: Record<string, string> = {\n Authorization: `Bearer ${accessToken}`,\n 'Content-Type': 'application/json',\n };\n if (includeRegion && region) {\n headers['x-region'] = region;\n }\n return headers;\n}\n\nexport async function executeRemoteCommand(options: RemoteCommandOptions): Promise<string> {\n const spec = REMOTE_COMMANDS[options.commandKey];\n if (!spec) {\n throw new CliError(`Unsupported remote command: ${options.commandKey}`, {\n code: 'UNSUPPORTED_REMOTE_COMMAND',\n exitCode: 2,\n });\n }\n\n const runtimeEnv = readRuntimeEnv(options.env);\n const runtime = requireSupabaseRestRuntime(options.env);\n const body = readJsonInput(options.inputPath);\n const url = buildUrl(runtime.apiBaseUrl, spec.endpoint);\n\n if (options.dryRun) {\n const dryRunHeaders = buildHeaders('****', spec.includeRegion, runtimeEnv.region);\n return stringifyJson(\n {\n dryRun: true,\n request: {\n method: 'POST',\n url,\n headers: {\n ...dryRunHeaders,\n },\n inputPath: options.inputPath,\n body,\n timeoutMs: options.timeoutMs,\n },\n },\n options.compactJson,\n );\n }\n\n const session = await resolveSupabaseUserSession({\n runtime,\n fetchImpl: options.fetchImpl,\n timeoutMs: options.timeoutMs,\n });\n const headers = buildHeaders(session.accessToken, spec.includeRegion, runtimeEnv.region);\n const response = await postJson({\n url,\n headers,\n body,\n timeoutMs: options.timeoutMs,\n fetchImpl: options.fetchImpl,\n });\n return stringifyJson(response, options.compactJson);\n}\n\nexport function getRemoteCommandHelp(commandKey: keyof typeof REMOTE_COMMANDS): string {\n return REMOTE_COMMANDS[commandKey].help;\n}\n"]}
|
|
@@ -556,8 +556,8 @@ function buildNextActions(layout, validationAggregate) {
|
|
|
556
556
|
`inspect: ${layout.findingsPath}`,
|
|
557
557
|
validationAggregate.reportPath
|
|
558
558
|
? `inspect: ${validationAggregate.reportPath}`
|
|
559
|
-
: `run: tiangong lifecyclemodel validate-build --run-dir ${layout.runRoot}`,
|
|
560
|
-
`run: tiangong lifecyclemodel publish-build --run-dir ${layout.runRoot}`,
|
|
559
|
+
: `run: tiangong-lca lifecyclemodel validate-build --run-dir ${layout.runRoot}`,
|
|
560
|
+
`run: tiangong-lca lifecyclemodel publish-build --run-dir ${layout.runRoot}`,
|
|
561
561
|
];
|
|
562
562
|
}
|
|
563
563
|
function renderZhReview(options) {
|