@tiangong-lca/cli 0.1.0 → 0.1.2
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 +58 -6
- package/dist/src/batch.d.ts +6 -0
- package/dist/src/batch.js +6 -0
- package/dist/src/batch.js.map +1 -0
- package/dist/src/cli.d.ts +161 -0
- package/dist/src/cli.js +130 -0
- package/dist/src/cli.js.map +1 -1
- package/dist/src/command-spec.d.ts +90 -0
- package/dist/src/command-spec.js +400 -0
- package/dist/src/command-spec.js.map +1 -0
- package/dist/src/lib/artifacts.d.ts +9 -0
- package/dist/src/lib/auth-identity-receipt.d.ts +160 -0
- package/dist/src/lib/auth-identity-receipt.js +634 -0
- package/dist/src/lib/auth-identity-receipt.js.map +1 -0
- package/dist/src/lib/batch/attempt-recovery.d.ts +12 -0
- package/dist/src/lib/batch/attempt-recovery.js +183 -0
- package/dist/src/lib/batch/attempt-recovery.js.map +1 -0
- package/dist/src/lib/batch/canonical-contracts.d.ts +21 -0
- package/dist/src/lib/batch/canonical-contracts.js +180 -0
- package/dist/src/lib/batch/canonical-contracts.js.map +1 -0
- package/dist/src/lib/batch/engine.d.ts +2 -0
- package/dist/src/lib/batch/engine.js +294 -0
- package/dist/src/lib/batch/engine.js.map +1 -0
- package/dist/src/lib/batch/errors.d.ts +51 -0
- package/dist/src/lib/batch/errors.js +81 -0
- package/dist/src/lib/batch/errors.js.map +1 -0
- package/dist/src/lib/batch/item-projection.d.ts +10 -0
- package/dist/src/lib/batch/item-projection.js +118 -0
- package/dist/src/lib/batch/item-projection.js.map +1 -0
- package/dist/src/lib/batch/run-lock.d.ts +4 -0
- package/dist/src/lib/batch/run-lock.js +155 -0
- package/dist/src/lib/batch/run-lock.js.map +1 -0
- package/dist/src/lib/batch/scheduler-runtime.d.ts +29 -0
- package/dist/src/lib/batch/scheduler-runtime.js +114 -0
- package/dist/src/lib/batch/scheduler-runtime.js.map +1 -0
- package/dist/src/lib/batch/types.d.ts +183 -0
- package/dist/src/lib/batch/types.js +2 -0
- package/dist/src/lib/batch/types.js.map +1 -0
- package/dist/src/lib/dataset-author.d.ts +39 -0
- package/dist/src/lib/dataset-bilingual.d.ts +165 -0
- package/dist/src/lib/dataset-classification.d.ts +279 -0
- package/dist/src/lib/dataset-command.d.ts +53 -0
- package/dist/src/lib/dataset-contract.d.ts +82 -0
- package/dist/src/lib/dataset-curation-queue.d.ts +219 -0
- package/dist/src/lib/dataset-evidence-search.d.ts +134 -0
- package/dist/src/lib/dataset-import-lca.d.ts +136 -0
- package/dist/src/lib/dataset-local.d.ts +23 -0
- package/dist/src/lib/dataset-maintenance-alias-request.d.ts +12 -0
- package/dist/src/lib/dataset-maintenance-alias-rewrite.d.ts +111 -0
- package/dist/src/lib/dataset-maintenance-apply.d.ts +458 -0
- package/dist/src/lib/dataset-maintenance-clear-account.d.ts +161 -0
- package/dist/src/lib/dataset-maintenance-contract.d.ts +317 -0
- package/dist/src/lib/dataset-maintenance-derivatives.d.ts +48 -0
- package/dist/src/lib/dataset-maintenance-flow-identity-approval-claim.d.ts +50 -0
- package/dist/src/lib/dataset-maintenance-flow-identity-capture.d.ts +110 -0
- package/dist/src/lib/dataset-maintenance-flow-identity-command.d.ts +15 -0
- package/dist/src/lib/dataset-maintenance-flow-identity-contract.d.ts +387 -0
- package/dist/src/lib/dataset-maintenance-flow-identity-execution-contract.d.ts +456 -0
- package/dist/src/lib/dataset-maintenance-flow-identity-freeze.d.ts +99 -0
- package/dist/src/lib/dataset-maintenance-flow-identity-plan.d.ts +85 -0
- package/dist/src/lib/dataset-maintenance-flow-identity-recovery.d.ts +268 -0
- package/dist/src/lib/dataset-maintenance-flow-identity-run.d.ts +123 -0
- package/dist/src/lib/dataset-maintenance-flow-identity-seal.d.ts +50 -0
- package/dist/src/lib/dataset-maintenance-flow-identity-verify.d.ts +85 -0
- package/dist/src/lib/dataset-maintenance-flow-identity-wire.d.ts +32 -0
- package/dist/src/lib/dataset-maintenance-pagination.d.ts +58 -0
- package/dist/src/lib/dataset-maintenance-plan.d.ts +40 -0
- package/dist/src/lib/dataset-maintenance-protected-artifacts.d.ts +16 -0
- package/dist/src/lib/dataset-maintenance-protected-before.d.ts +71 -0
- package/dist/src/lib/dataset-maintenance-protected-contract.d.ts +385 -0
- package/dist/src/lib/dataset-maintenance-protected-freeze.d.ts +148 -0
- package/dist/src/lib/dataset-maintenance-protected-preparation.d.ts +76 -0
- package/dist/src/lib/dataset-maintenance-protected-run.d.ts +252 -0
- package/dist/src/lib/dataset-maintenance-protected-seal.d.ts +93 -0
- package/dist/src/lib/dataset-maintenance-protected-toolchain.d.ts +31 -0
- package/dist/src/lib/dataset-maintenance-protected-verify.d.ts +99 -0
- package/dist/src/lib/dataset-maintenance-remote.d.ts +212 -0
- package/dist/src/lib/dataset-maintenance-support-validation.d.ts +18 -0
- package/dist/src/lib/dataset-maintenance-verify.d.ts +102 -0
- package/dist/src/lib/dataset-patch.d.ts +193 -0
- package/dist/src/lib/dataset-references-rewrite.d.ts +77 -0
- package/dist/src/lib/dataset-remote-refresh.d.ts +64 -0
- package/dist/src/lib/dataset-remote-verify.d.ts +168 -0
- package/dist/src/lib/dataset-save-draft-run.d.ts +283 -0
- package/dist/src/lib/dataset-save-draft-run.js +54 -21
- package/dist/src/lib/dataset-save-draft-run.js.map +1 -1
- package/dist/src/lib/dataset-source-upload-attachments.d.ts +109 -0
- package/dist/src/lib/dataset-validate.d.ts +62 -0
- package/dist/src/lib/dotenv.d.ts +6 -0
- package/dist/src/lib/env.d.ts +59 -0
- package/dist/src/lib/errors.d.ts +18 -0
- package/dist/src/lib/flow-build-alias-map.d.ts +80 -0
- package/dist/src/lib/flow-fetch-rows.d.ts +70 -0
- package/dist/src/lib/flow-get.d.ts +35 -0
- package/dist/src/lib/flow-governance.d.ts +22 -0
- package/dist/src/lib/flow-list.d.ts +57 -0
- package/dist/src/lib/flow-materialize-decisions.d.ts +67 -0
- package/dist/src/lib/flow-payload-validation.d.ts +32 -0
- package/dist/src/lib/flow-publish-reviewed-data.d.ts +262 -0
- package/dist/src/lib/flow-publish-version.d.ts +193 -0
- package/dist/src/lib/flow-qa.d.ts +289 -0
- package/dist/src/lib/flow-read.d.ts +70 -0
- package/dist/src/lib/flow-regen-product.d.ts +431 -0
- package/dist/src/lib/flow-remediate.d.ts +133 -0
- package/dist/src/lib/http.d.ts +25 -0
- package/dist/src/lib/http.js.map +1 -1
- package/dist/src/lib/identity-preflight.d.ts +235 -0
- package/dist/src/lib/io.d.ts +2 -0
- package/dist/src/lib/kb-search.d.ts +23 -0
- package/dist/src/lib/lca-release.d.ts +105 -0
- package/dist/src/lib/lifecyclemodel-auto-build.d.ts +223 -0
- package/dist/src/lib/lifecyclemodel-bundle-save.d.ts +71 -0
- package/dist/src/lib/lifecyclemodel-graph.d.ts +91 -0
- package/dist/src/lib/lifecyclemodel-orchestrate.d.ts +349 -0
- package/dist/src/lib/lifecyclemodel-publish-build.d.ts +77 -0
- package/dist/src/lib/lifecyclemodel-publish-resulting-process.d.ts +27 -0
- package/dist/src/lib/lifecyclemodel-qa.d.ts +206 -0
- package/dist/src/lib/lifecyclemodel-resulting-process.d.ts +204 -0
- package/dist/src/lib/lifecyclemodel-save-draft-run.d.ts +96 -0
- package/dist/src/lib/lifecyclemodel-validate-build.d.ts +78 -0
- package/dist/src/lib/llm.d.ts +51 -0
- package/dist/src/lib/package-version.d.ts +3 -0
- package/dist/src/lib/process-auto-build.d.ts +168 -0
- package/dist/src/lib/process-batch-build.d.ts +97 -0
- package/dist/src/lib/process-dedup-review.d.ts +253 -0
- package/dist/src/lib/process-flow-build-plan.d.ts +108 -0
- package/dist/src/lib/process-get.d.ts +26 -0
- package/dist/src/lib/process-list.d.ts +87 -0
- package/dist/src/lib/process-payload-validation.d.ts +27 -0
- package/dist/src/lib/process-publish-build.d.ts +148 -0
- package/dist/src/lib/process-qa.d.ts +243 -0
- package/dist/src/lib/process-refresh-references.d.ts +179 -0
- package/dist/src/lib/process-required-fields.d.ts +142 -0
- package/dist/src/lib/process-resume-build.d.ts +77 -0
- package/dist/src/lib/process-save-draft-run.d.ts +72 -0
- package/dist/src/lib/process-save-draft.d.ts +53 -0
- package/dist/src/lib/process-scope-statistics.d.ts +210 -0
- package/dist/src/lib/process-verify-rows.d.ts +71 -0
- package/dist/src/lib/publish.d.ts +219 -0
- package/dist/src/lib/remote.d.ts +19 -0
- package/dist/src/lib/run.d.ts +60 -0
- package/dist/src/lib/runtime-rulesets.d.ts +29 -0
- package/dist/src/lib/state-lock.d.ts +25 -0
- package/dist/src/lib/state-lock.js +23 -1
- package/dist/src/lib/state-lock.js.map +1 -1
- package/dist/src/lib/supabase-client.d.ts +47 -0
- package/dist/src/lib/supabase-data-api-contract.d.ts +304 -0
- package/dist/src/lib/supabase-data-api-replay.d.ts +74 -0
- package/dist/src/lib/supabase-json-ordered-write.d.ts +65 -0
- package/dist/src/lib/supabase-rest.d.ts +26 -0
- package/dist/src/lib/supabase-session.d.ts +115 -0
- package/dist/src/lib/tidas-languages.d.ts +3 -0
- package/dist/src/lib/tidas-sdk-package-validator.d.ts +111 -0
- package/dist/src/lib/tidas-sdk-validation.d.ts +42 -0
- package/dist/src/lib/unstructured.d.ts +32 -0
- package/dist/src/lib/user-api-key.d.ts +16 -0
- package/dist/src/lib/validation.d.ts +82 -0
- package/dist/src/main.d.ts +4 -0
- package/package.json +17 -3
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dataset-save-draft-run.js","sourceRoot":"","sources":["../../../src/lib/dataset-save-draft-run.ts"],"names":[],"mappings":"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","sourcesContent":["// data-api-relations: contacts, flowproperties, flows, processes, sources, unitgroups\n// data-api-dynamic-relation-expression: options.table\nimport { closeSync, chmodSync, fsyncSync, mkdirSync, openSync, writeFileSync } from 'node:fs';\nimport path from 'node:path';\nimport * as tidasSdk from '@tiangong-lca/tidas-sdk';\nimport { writeJsonArtifact, writeJsonLinesArtifact } from './artifacts.js';\nimport { collectImportContentIssues } from './dataset-validate.js';\nimport {\n createDatasetRecord,\n saveDraftDatasetRecord,\n type DatasetCommandTable,\n} from './dataset-command.js';\nimport { readDatasetRowsInput } from './dataset-local.js';\nimport { CliError } from './errors.js';\nimport type { FetchLike } from './http.js';\nimport {\n normalizeIssuePath,\n type SafeParseSchema,\n type SdkValidationFactory,\n validateSchemaWithDeepFallback,\n} from './tidas-sdk-validation.js';\nimport {\n collectProcessPlaceholderIssues,\n collectProcessRequiredFieldIssues,\n} from './process-required-fields.js';\nimport { buildDatasetCommandTransport } from './dataset-command.js';\nimport {\n createSupabaseDataClient,\n requireSupabaseRestRuntime,\n runSupabaseArrayQuery,\n type SupabaseDataRuntime,\n} from './supabase-client.js';\nimport { createSupabaseDataRuntime } from './supabase-session.js';\nimport {\n collectRemoteReferences,\n lookupRemoteDataset,\n type RemoteDatasetLookup,\n type RemoteDatasetReference,\n type RemoteDatasetTable,\n} from './dataset-remote-verify.js';\nimport {\n readJsonFile,\n readJsonLinesIfPresent,\n sha256Json,\n stableJsonText,\n} from './dataset-maintenance-contract.js';\nimport { resolveFlowIdentityApprovalClaimRoot } from './dataset-maintenance-flow-identity-approval-claim.js';\n\ntype JsonObject = Record<string, unknown>;\n\nconst DEFAULT_TIMEOUT_MS = 10_000;\n\nexport type DatasetSaveDraftType =\n | 'auto'\n | 'contact'\n | 'source'\n | 'unitgroup'\n | 'flowproperty'\n | 'flow'\n | 'process';\n\ntype ConcreteDatasetSaveDraftType = Exclude<DatasetSaveDraftType, 'auto'>;\n\ntype DatasetTypeConfig = {\n table: DatasetCommandTable;\n rootKey: string;\n informationKey: string;\n schemaName: keyof typeof tidasSdk;\n factoryName: keyof typeof tidasSdk;\n};\n\ntype DatasetSaveDraftValidationIssue = {\n path: string;\n message: string;\n code: string;\n};\n\ntype DatasetSaveDraftValidationResult =\n | {\n ok: true;\n validator: string;\n issue_count: 0;\n issues: [];\n }\n | {\n ok: false;\n validator: string;\n issue_count: number;\n issues: DatasetSaveDraftValidationIssue[];\n };\n\nfunction normalizeValidationIssue(issue: {\n path?: Array<string | number>;\n message?: string;\n code?: string;\n}): DatasetSaveDraftValidationIssue {\n return {\n path: normalizeIssuePath(issue.path ?? []),\n message: issue.message ?? 'Validation failed',\n code: issue.code ?? 'custom',\n };\n}\n\nexport type DatasetSaveDraftRowReport = {\n index: number;\n id: string | null;\n version: string | null;\n type: ConcreteDatasetSaveDraftType | null;\n table: DatasetCommandTable | null;\n status: 'prepared' | 'executed' | 'failed' | 'unknown' | 'blocked';\n operation:\n | 'would_sync'\n | 'insert'\n | 'save_draft'\n | 'skipped_invalid'\n | 'reference_only_type'\n | 'type_unknown'\n | 'identity_missing'\n | 'elementary_flow_insert_blocked'\n | 'remote_reference_unresolved'\n | 'recovered_exact_readback'\n | 'blocked_dependency'\n | null;\n validation: DatasetSaveDraftValidationResult | null;\n visible_row?: VisibleDatasetRow | null;\n error?: { message: string; details?: unknown };\n action_id?: string;\n desired_sha256?: string;\n attempt_consumed?: boolean;\n replayed?: false;\n readback?: 'desired_exact' | 'not_desired' | 'not_performed';\n};\n\nexport type DatasetSaveDraftReport = {\n schema_version: 1 | 2;\n generated_at_utc: string;\n input_path: string;\n requested_type: DatasetSaveDraftType;\n out_dir: string;\n commit: boolean;\n mode: 'dry_run' | 'commit';\n status: 'completed' | 'completed_with_failures' | 'completed_with_unknowns';\n counts: {\n selected: number;\n prepared: number;\n executed: number;\n failed: number;\n unknown?: number;\n blocked?: number;\n attempts_consumed?: number;\n by_table: Partial<Record<DatasetCommandTable, number>>;\n operations: Record<string, number>;\n };\n files: {\n selected_rows: string;\n progress_jsonl: string;\n failures_jsonl: string;\n summary_json: string;\n execution_ledger?: string;\n };\n rows: DatasetSaveDraftRowReport[];\n execution_contract?: {\n path: string;\n sha256: string;\n execution_id: string;\n target_mode: 'owner_draft';\n max_parallel: number;\n serial_prefix_actions: number;\n parallel_suffix_actions: number;\n };\n};\n\nexport type RunDatasetSaveDraftOptions = {\n inputPath: string;\n type?: string | null;\n outDir?: string | null;\n commit?: boolean | null;\n rawInput?: unknown;\n env?: NodeJS.ProcessEnv;\n fetchImpl?: FetchLike;\n timeoutMs?: number;\n now?: Date;\n /**\n * Explicit opt-in to write account-local (My Data, state_code=0) Unit Group and\n * Flow Property support rows that are otherwise reference-only. Default false keeps\n * the CLI safe-by-default for interactive operators.\n */\n allowReferenceOnlySupport?: boolean | null;\n executionContractPath?: string | null;\n maxParallel?: number | null;\n};\n\ntype DatasetSaveDraftExecutionAction = {\n action_id: string;\n desired_sha256: string;\n expected_operation: 'insert' | 'save_draft';\n table: DatasetCommandTable;\n id: string;\n version: string;\n before_sha256: string | null;\n dependency_action_ids: string[];\n};\n\ntype DatasetSaveDraftExecutionContract = {\n schema_version: 'dataset-save-draft-execution-contract.v1';\n execution_id: string;\n project_ref: string;\n target_mode: 'owner_draft';\n owner: {\n user_id: string;\n email: string;\n state_code: 0;\n };\n actions: DatasetSaveDraftExecutionAction[];\n};\n\ntype DatasetSaveDraftLedgerEvent = {\n schema_version: 'dataset-save-draft-execution-event.v1';\n sequence: number;\n contract_sha256: string;\n action_id: string;\n desired_sha256: string;\n action_binding_sha256: string;\n event_type: 'attempt_emitted' | 'outcome';\n operation: 'insert' | 'save_draft';\n outcome: 'executed' | 'unknown' | null;\n recovered: boolean;\n recorded_at_utc: string;\n previous_event_sha256: string | null;\n event_sha256: string;\n};\n\ntype ExecutionLedgerState = {\n events: Map<string, DatasetSaveDraftLedgerEvent[]>;\n attempts: Map<string, DatasetSaveDraftLedgerEvent>;\n outcomes: Map<string, DatasetSaveDraftLedgerEvent>;\n};\n\ntype PreparedDatasetRow = {\n index: number;\n row: JsonObject;\n payload: JsonObject;\n type: ConcreteDatasetSaveDraftType | null;\n config: DatasetTypeConfig | null;\n id: string | null;\n version: string | null;\n validation: DatasetSaveDraftValidationResult | null;\n};\n\ntype VisibleDatasetRow = {\n id: string;\n version: string;\n user_id: string | null;\n state_code: number | null;\n};\n\ntype ExecutionDatasetRow = VisibleDatasetRow & {\n json_ordered: JsonObject | null;\n};\n\ntype SupabaseDataClient = ReturnType<typeof createSupabaseDataClient>['client'];\n\ntype MissingFlowRemoteReference = {\n table: RemoteDatasetTable | null;\n id: string | null;\n version: string | null;\n path: string;\n short_description: string | null;\n status:\n | 'missing_dataset'\n | 'missing_version'\n | 'unsupported_type'\n | 'version_missing'\n | 'version_outdated';\n latest_version: string | null;\n};\n\nconst DATASET_CONFIGS: Record<ConcreteDatasetSaveDraftType, DatasetTypeConfig> = {\n contact: {\n table: 'contacts',\n rootKey: 'contactDataSet',\n informationKey: 'contactInformation',\n schemaName: 'ContactSchema',\n factoryName: 'createContact',\n },\n source: {\n table: 'sources',\n rootKey: 'sourceDataSet',\n informationKey: 'sourceInformation',\n schemaName: 'SourceSchema',\n factoryName: 'createSource',\n },\n unitgroup: {\n table: 'unitgroups',\n rootKey: 'unitGroupDataSet',\n informationKey: 'unitGroupInformation',\n schemaName: 'UnitGroupSchema',\n factoryName: 'createUnitGroup',\n },\n flowproperty: {\n table: 'flowproperties',\n rootKey: 'flowPropertyDataSet',\n informationKey: 'flowPropertiesInformation',\n schemaName: 'FlowPropertySchema',\n factoryName: 'createFlowProperty',\n },\n flow: {\n table: 'flows',\n rootKey: 'flowDataSet',\n informationKey: 'flowInformation',\n schemaName: 'FlowSchema',\n factoryName: 'createFlow',\n },\n process: {\n table: 'processes',\n rootKey: 'processDataSet',\n informationKey: 'processInformation',\n schemaName: 'ProcessSchema',\n factoryName: 'createProcess',\n },\n};\n\nconst REFERENCE_ONLY_SAVE_DRAFT_TYPES = new Set<ConcreteDatasetSaveDraftType>([\n 'unitgroup',\n 'flowproperty',\n]);\n\nconst SHA256_PATTERN = /^[0-9a-f]{64}$/u;\n\nfunction executionContractError(message: string): never {\n throw new CliError(message, {\n code: 'DATASET_SAVE_DRAFT_EXECUTION_CONTRACT_INVALID',\n exitCode: 2,\n });\n}\n\nfunction requireExecutionToken(value: unknown, label: string): string {\n const normalized = trimToken(value);\n return normalized ?? executionContractError(`${label} must be a non-empty string.`);\n}\n\nfunction requireExecutionSha(value: unknown, label: string): string {\n const normalized = requireExecutionToken(value, label);\n return SHA256_PATTERN.test(normalized)\n ? normalized\n : executionContractError(`${label} must be a lowercase SHA-256 digest.`);\n}\n\nfunction parseExecutionContract(value: unknown): DatasetSaveDraftExecutionContract {\n if (!isRecord(value)) {\n executionContractError('Execution contract must be a JSON object.');\n }\n if (\n value.schema_version !== 'dataset-save-draft-execution-contract.v1' ||\n value.target_mode !== 'owner_draft' ||\n !isRecord(value.owner) ||\n value.owner.state_code !== 0 ||\n !Array.isArray(value.actions) ||\n value.actions.length === 0\n ) {\n executionContractError('Execution contract header is invalid.');\n }\n const executionId = requireExecutionToken(value.execution_id, 'execution_id');\n const projectRef = requireExecutionToken(value.project_ref, 'project_ref');\n const ownerUserId = requireExecutionToken(value.owner.user_id, 'owner.user_id');\n const ownerEmail = requireExecutionToken(value.owner.email, 'owner.email').toLowerCase();\n const actions: DatasetSaveDraftExecutionAction[] = [];\n const seen = new Set<string>();\n for (const [index, rawAction] of value.actions.entries()) {\n if (!isRecord(rawAction) || !Array.isArray(rawAction.dependency_action_ids)) {\n executionContractError(`actions[${index}] is invalid.`);\n }\n const actionId = requireExecutionToken(rawAction.action_id, `actions[${index}].action_id`);\n if (seen.has(actionId)) {\n executionContractError(`Duplicate action_id: ${actionId}`);\n }\n const table = requireExecutionToken(rawAction.table, `actions[${index}].table`);\n if (!Object.values(DATASET_CONFIGS).some((config) => config.table === table)) {\n executionContractError(`actions[${index}].table is unsupported.`);\n }\n const expectedOperation = rawAction.expected_operation;\n if (expectedOperation !== 'insert' && expectedOperation !== 'save_draft') {\n executionContractError(`actions[${index}].expected_operation is invalid.`);\n }\n const beforeSha =\n rawAction.before_sha256 === null\n ? null\n : requireExecutionSha(rawAction.before_sha256, `actions[${index}].before_sha256`);\n if (\n (expectedOperation === 'insert' && beforeSha !== null) ||\n (expectedOperation === 'save_draft' && beforeSha === null)\n ) {\n executionContractError(`actions[${index}].before_sha256 contradicts expected_operation.`);\n }\n const dependencies = rawAction.dependency_action_ids.map((dependency, dependencyIndex) =>\n requireExecutionToken(\n dependency,\n `actions[${index}].dependency_action_ids[${dependencyIndex}]`,\n ),\n );\n if (\n new Set(dependencies).size !== dependencies.length ||\n dependencies.some((id) => !seen.has(id))\n ) {\n executionContractError(\n `actions[${index}].dependency_action_ids must be unique earlier actions.`,\n );\n }\n actions.push({\n action_id: actionId,\n desired_sha256: requireExecutionSha(\n rawAction.desired_sha256,\n `actions[${index}].desired_sha256`,\n ),\n expected_operation: expectedOperation,\n table: table as DatasetCommandTable,\n id: requireExecutionToken(rawAction.id, `actions[${index}].id`),\n version: requireExecutionToken(rawAction.version, `actions[${index}].version`),\n before_sha256: beforeSha,\n dependency_action_ids: dependencies,\n });\n seen.add(actionId);\n }\n return {\n schema_version: 'dataset-save-draft-execution-contract.v1',\n execution_id: executionId,\n project_ref: projectRef,\n target_mode: 'owner_draft',\n owner: { user_id: ownerUserId, email: ownerEmail, state_code: 0 },\n actions,\n };\n}\n\nfunction bindExecutionContractRows(\n contract: DatasetSaveDraftExecutionContract,\n rows: PreparedDatasetRow[],\n): void {\n if (contract.actions.length !== rows.length) {\n executionContractError('Execution contract action count does not match selected rows.');\n }\n contract.actions.forEach((action, index) => {\n const row = rows[index];\n const payloadIdentity = row?.config\n ? extractIdentity(row.payload, {}, row.config)\n : { id: null, version: null };\n if (\n !row ||\n row.config?.table !== action.table ||\n row.id !== action.id ||\n row.version !== action.version ||\n payloadIdentity.id !== action.id ||\n payloadIdentity.version !== action.version ||\n sha256Json(row.payload) !== action.desired_sha256\n ) {\n executionContractError(\n `Execution contract action ${action.action_id} does not bind row ${index}.`,\n );\n }\n });\n}\n\nfunction executionActionBindingSha256(action: DatasetSaveDraftExecutionAction): string {\n return sha256Json({\n schema_version: 'dataset-save-draft-action-binding.v1',\n action_id: action.action_id,\n desired_sha256: action.desired_sha256,\n expected_operation: action.expected_operation,\n table: action.table,\n id: action.id,\n version: action.version,\n before_sha256: action.before_sha256,\n });\n}\n\nfunction executionLedgerRoot(\n env: NodeJS.ProcessEnv,\n contract: DatasetSaveDraftExecutionContract,\n): string {\n const ownerScopeSha256 = sha256Json({\n schema_version: 'dataset-save-draft-owner-scope.v1',\n project_ref: contract.project_ref,\n owner: contract.owner,\n });\n return path.join(\n resolveFlowIdentityApprovalClaimRoot({ env }),\n 'execution-ledgers',\n 'dataset-save-draft',\n 'v1',\n ownerScopeSha256,\n );\n}\n\nfunction executionLedgerPath(ledgerRoot: string, action: DatasetSaveDraftExecutionAction): string {\n const actionIdentitySha256 = sha256Json({\n schema_version: 'dataset-save-draft-action-identity.v1',\n action_id: action.action_id,\n desired_sha256: action.desired_sha256,\n });\n return path.join(path.resolve(ledgerRoot), `${actionIdentitySha256}.events.jsonl`);\n}\n\nfunction eventWithoutSha(\n event: DatasetSaveDraftLedgerEvent,\n): Omit<DatasetSaveDraftLedgerEvent, 'event_sha256'> {\n const core: Partial<DatasetSaveDraftLedgerEvent> = { ...event };\n delete core.event_sha256;\n return core as Omit<DatasetSaveDraftLedgerEvent, 'event_sha256'>;\n}\n\nfunction parseLedgerEvent(value: unknown, index: number): DatasetSaveDraftLedgerEvent {\n if (!isRecord(value)) {\n executionContractError(`Execution ledger event ${index} is not an object.`);\n }\n const event = value as DatasetSaveDraftLedgerEvent;\n if (\n event.schema_version !== 'dataset-save-draft-execution-event.v1' ||\n event.sequence !== index + 1 ||\n !SHA256_PATTERN.test(event.contract_sha256) ||\n !trimToken(event.action_id) ||\n !SHA256_PATTERN.test(event.desired_sha256) ||\n !SHA256_PATTERN.test(event.action_binding_sha256) ||\n !['attempt_emitted', 'outcome'].includes(event.event_type) ||\n !['insert', 'save_draft'].includes(event.operation) ||\n !['executed', 'unknown', null].includes(event.outcome) ||\n typeof event.recovered !== 'boolean' ||\n !trimToken(event.recorded_at_utc) ||\n !(event.previous_event_sha256 === null || SHA256_PATTERN.test(event.previous_event_sha256)) ||\n !SHA256_PATTERN.test(event.event_sha256)\n ) {\n executionContractError(`Execution ledger event ${index} has an invalid shape.`);\n }\n if (\n (event.event_type === 'attempt_emitted' && event.outcome !== null) ||\n (event.event_type === 'outcome' && event.outcome === null)\n ) {\n executionContractError(`Execution ledger event ${index} has an invalid outcome.`);\n }\n return event;\n}\n\nfunction loadExecutionLedger(\n ledgerRoot: string,\n contract: DatasetSaveDraftExecutionContract,\n): ExecutionLedgerState {\n const events = new Map<string, DatasetSaveDraftLedgerEvent[]>();\n const attempts = new Map<string, DatasetSaveDraftLedgerEvent>();\n const outcomes = new Map<string, DatasetSaveDraftLedgerEvent>();\n for (const action of contract.actions) {\n const actionEvents: DatasetSaveDraftLedgerEvent[] = [];\n const rawEvents = readJsonLinesIfPresent(executionLedgerPath(ledgerRoot, action));\n for (const [index, value] of rawEvents.entries()) {\n const event = parseLedgerEvent(value, index);\n const previous = actionEvents.at(-1) ?? null;\n if (\n event.action_id !== action.action_id ||\n event.desired_sha256 !== action.desired_sha256 ||\n event.action_binding_sha256 !== executionActionBindingSha256(action) ||\n event.operation !== action.expected_operation ||\n event.previous_event_sha256 !== (previous?.event_sha256 ?? null) ||\n event.event_sha256 !== sha256Json(eventWithoutSha(event))\n ) {\n executionContractError(\n `Execution ledger event ${index} failed its hash or action binding for ${action.action_id}.`,\n );\n }\n if (event.event_type === 'attempt_emitted') {\n if (attempts.has(event.action_id) || outcomes.has(event.action_id)) {\n executionContractError(`Execution ledger repeats attempt for ${event.action_id}.`);\n }\n attempts.set(event.action_id, event);\n } else {\n if (!attempts.has(event.action_id) || outcomes.has(event.action_id)) {\n executionContractError(\n `Execution ledger outcome ordering is invalid for ${event.action_id}.`,\n );\n }\n outcomes.set(event.action_id, event);\n }\n actionEvents.push(event);\n }\n events.set(action.action_id, actionEvents);\n }\n return { events, attempts, outcomes };\n}\n\nfunction appendExecutionEvent(options: {\n ledgerRoot: string;\n ledger: ExecutionLedgerState;\n contractSha256: string;\n action: DatasetSaveDraftExecutionAction;\n eventType: 'attempt_emitted' | 'outcome';\n outcome: 'executed' | 'unknown' | null;\n recovered: boolean;\n recordedAtUtc: string;\n}): DatasetSaveDraftLedgerEvent {\n const actionEvents = options.ledger.events.get(\n options.action.action_id,\n ) as DatasetSaveDraftLedgerEvent[];\n const core = {\n schema_version: 'dataset-save-draft-execution-event.v1' as const,\n sequence: actionEvents.length + 1,\n contract_sha256: options.contractSha256,\n action_id: options.action.action_id,\n desired_sha256: options.action.desired_sha256,\n action_binding_sha256: executionActionBindingSha256(options.action),\n event_type: options.eventType,\n operation: options.action.expected_operation,\n outcome: options.outcome,\n recovered: options.recovered,\n recorded_at_utc: options.recordedAtUtc,\n previous_event_sha256: actionEvents.at(-1)?.event_sha256 ?? null,\n };\n const event: DatasetSaveDraftLedgerEvent = { ...core, event_sha256: sha256Json(core) };\n const ledgerPath = executionLedgerPath(options.ledgerRoot, options.action);\n mkdirSync(path.dirname(ledgerPath), { recursive: true, mode: 0o700 });\n chmodSync(path.dirname(ledgerPath), 0o700);\n if (event.event_type === 'attempt_emitted') {\n const createDescriptor = openSync(ledgerPath, 'wx', 0o600);\n try {\n writeFileSync(createDescriptor, `${stableJsonText(event)}\\n`, 'utf8');\n fsyncSync(createDescriptor);\n } finally {\n closeSync(createDescriptor);\n }\n } else {\n const appendDescriptor = openSync(ledgerPath, 'a', 0o600);\n try {\n writeFileSync(appendDescriptor, `${stableJsonText(event)}\\n`, 'utf8');\n fsyncSync(appendDescriptor);\n } finally {\n closeSync(appendDescriptor);\n }\n }\n chmodSync(ledgerPath, 0o600);\n actionEvents.push(event);\n options.ledger.events.set(event.action_id, actionEvents);\n if (event.event_type === 'attempt_emitted') {\n options.ledger.attempts.set(event.action_id, event);\n } else {\n options.ledger.outcomes.set(event.action_id, event);\n }\n return event;\n}\n\nfunction projectRefFromApiBaseUrl(apiBaseUrl: string): string {\n return new URL(apiBaseUrl).hostname.split('.')[0] as string;\n}\n\nfunction decodeExecutionActor(accessToken: string): { user_id: string; email: string } {\n const payload = accessToken.split('.')[1];\n if (!payload) {\n executionContractError('Owner-session access token is not a JWT.');\n }\n let decoded: unknown;\n try {\n decoded = JSON.parse(Buffer.from(payload, 'base64url').toString('utf8'));\n } catch {\n executionContractError('Owner-session access token JWT payload is invalid.');\n }\n if (!isRecord(decoded)) {\n executionContractError('Owner-session access token JWT payload is not an object.');\n }\n return {\n user_id: requireExecutionToken(decoded.sub, 'owner-session sub'),\n email: requireExecutionToken(decoded.email, 'owner-session email').toLowerCase(),\n };\n}\n\nfunction isRecord(value: unknown): value is JsonObject {\n return typeof value === 'object' && value !== null && !Array.isArray(value);\n}\n\nfunction trimToken(value: unknown): string | null {\n if (typeof value !== 'string') {\n return null;\n }\n const trimmed = value.trim();\n return trimmed || null;\n}\n\nfunction serializeError(error: unknown): { message: string; details?: unknown } {\n if (error instanceof CliError) {\n return { message: error.message, details: error.details };\n }\n if (error instanceof Error) {\n return { message: error.message };\n }\n return { message: String(error) };\n}\n\nfunction normalizeType(\n value: string | null | undefined,\n allowReferenceOnlySupport = false,\n): DatasetSaveDraftType {\n const normalized = value?.trim().toLowerCase();\n if (!normalized || normalized === 'auto') {\n return 'auto';\n }\n if (normalized === 'contact' || normalized === 'contacts') {\n return 'contact';\n }\n if (normalized === 'source' || normalized === 'sources') {\n return 'source';\n }\n if (\n normalized === 'unitgroup' ||\n normalized === 'unitgroups' ||\n normalized === 'unit-group' ||\n normalized === 'unit-groups'\n ) {\n if (allowReferenceOnlySupport) {\n return 'unitgroup';\n }\n throw new CliError(\n 'Unit groups are reference-only support data for dataset save-draft. Select an existing database row instead of creating a custom My Data unit group.',\n {\n code: 'DATASET_SAVE_DRAFT_REFERENCE_ONLY_TYPE',\n exitCode: 2,\n details: { type: normalized },\n },\n );\n }\n if (\n normalized === 'flowproperty' ||\n normalized === 'flowproperties' ||\n normalized === 'flow-property' ||\n normalized === 'flow-properties'\n ) {\n if (allowReferenceOnlySupport) {\n return 'flowproperty';\n }\n throw new CliError(\n 'Flow properties are reference-only support data for dataset save-draft. Select an existing database row instead of creating a custom My Data flow property.',\n {\n code: 'DATASET_SAVE_DRAFT_REFERENCE_ONLY_TYPE',\n exitCode: 2,\n details: { type: normalized },\n },\n );\n }\n if (normalized === 'flow' || normalized === 'flows') {\n return 'flow';\n }\n if (normalized === 'process' || normalized === 'processes') {\n return 'process';\n }\n\n throw new CliError('Expected --type to be auto, contact, source, flow, or process.', {\n code: 'DATASET_SAVE_DRAFT_TYPE_INVALID',\n exitCode: 2,\n details: value,\n });\n}\n\nfunction unwrapPayload(row: JsonObject): JsonObject {\n for (const key of ['json_ordered', 'jsonOrdered', 'payload', 'json'] as const) {\n if (isRecord(row[key])) {\n return row[key];\n }\n }\n return row;\n}\n\nfunction detectType(payload: JsonObject): ConcreteDatasetSaveDraftType | null {\n for (const [type, config] of Object.entries(DATASET_CONFIGS)) {\n if (isRecord(payload[config.rootKey])) {\n return type as ConcreteDatasetSaveDraftType;\n }\n }\n return null;\n}\n\nfunction schemaForConfig(config: DatasetTypeConfig): {\n schema: SafeParseSchema;\n createEntity: SdkValidationFactory | null;\n} {\n const schema = (tidasSdk as Record<string, unknown>)[config.schemaName];\n if (\n !schema ||\n typeof schema !== 'object' ||\n typeof (schema as SafeParseSchema).safeParse !== 'function'\n ) {\n throw new CliError(`${String(config.schemaName)} is unavailable in @tiangong-lca/tidas-sdk.`, {\n code: 'DATASET_SAVE_DRAFT_SCHEMA_UNAVAILABLE',\n exitCode: 2,\n details: { table: config.table },\n });\n }\n const createEntity = (tidasSdk as Record<string, unknown>)[config.factoryName];\n return {\n schema: schema as SafeParseSchema,\n createEntity:\n typeof createEntity === 'function' ? (createEntity as SdkValidationFactory) : null,\n };\n}\n\nfunction validatePayload(\n payload: JsonObject,\n type: ConcreteDatasetSaveDraftType,\n config: DatasetTypeConfig,\n): DatasetSaveDraftValidationResult {\n const { schema, createEntity } = schemaForConfig(config);\n // SDK schema/entity validation may apply defaults by mutating its input. Keep validation\n // isolated so execution-contract hashing, dispatch, and readback all use the exact input.\n const validationPayload = structuredClone(payload);\n const outcome = validateSchemaWithDeepFallback(schema, validationPayload, createEntity);\n const processIssues =\n type === 'process'\n ? [\n ...collectProcessRequiredFieldIssues(validationPayload),\n ...collectProcessPlaceholderIssues(validationPayload),\n ]\n : [];\n const importIssues = type === 'process' ? [] : collectImportContentIssues(validationPayload);\n const issues: DatasetSaveDraftValidationIssue[] = [\n ...outcome.issues.map(normalizeValidationIssue),\n ...processIssues,\n ...importIssues,\n ];\n\n if (outcome.success && issues.length === 0) {\n return {\n ok: true,\n validator: `@tiangong-lca/tidas-sdk/${String(config.schemaName)}+tiangong/import-content`,\n issue_count: 0,\n issues: [],\n };\n }\n\n return {\n ok: false,\n validator: `@tiangong-lca/tidas-sdk/${String(config.schemaName)}+tiangong/import-content`,\n issue_count: issues.length,\n issues,\n };\n}\n\nfunction extractIdentity(\n payload: JsonObject,\n row: JsonObject,\n config: DatasetTypeConfig,\n): {\n id: string | null;\n version: string | null;\n} {\n const rootCandidate = payload[config.rootKey];\n const root: JsonObject = isRecord(rootCandidate) ? rootCandidate : payload;\n const informationCandidate = root[config.informationKey];\n const information: JsonObject = isRecord(informationCandidate) ? informationCandidate : {};\n const dataSetInformationCandidate = information.dataSetInformation;\n const dataSetInformation = isRecord(dataSetInformationCandidate)\n ? dataSetInformationCandidate\n : {};\n const administrativeInformation = isRecord(root.administrativeInformation)\n ? root.administrativeInformation\n : {};\n const publicationAndOwnership = isRecord(administrativeInformation.publicationAndOwnership)\n ? administrativeInformation.publicationAndOwnership\n : {};\n\n return {\n id: trimToken(row.id) ?? trimToken(dataSetInformation['common:UUID']),\n version:\n trimToken(row.version) ?? trimToken(publicationAndOwnership['common:dataSetVersion']) ?? null,\n };\n}\n\nfunction flowType(payload: JsonObject): string | null {\n const rootCandidate = payload.flowDataSet;\n const root = isRecord(rootCandidate) ? rootCandidate : payload;\n const modellingCandidate = root.modellingAndValidation;\n const modelling = isRecord(modellingCandidate) ? modellingCandidate : {};\n const lciMethodCandidate = modelling.LCIMethod;\n const lciMethod = isRecord(lciMethodCandidate) ? lciMethodCandidate : {};\n return trimToken(lciMethod.typeOfDataSet);\n}\n\nfunction isElementaryFlowPayload(payload: JsonObject): boolean {\n return flowType(payload)?.trim().toLowerCase() === 'elementary flow';\n}\n\nfunction compareVersions(left: string | null, right: string | null): number {\n if (!left && !right) {\n return 0;\n }\n if (!left) {\n return -1;\n }\n if (!right) {\n return 1;\n }\n const leftParts = left.split(/[._-]/u);\n const rightParts = right.split(/[._-]/u);\n const length = Math.max(leftParts.length, rightParts.length);\n for (let index = 0; index < length; index += 1) {\n const leftPart = leftParts[index] ?? '0';\n const rightPart = rightParts[index] ?? '0';\n const leftNumber = Number(leftPart);\n const rightNumber = Number(rightPart);\n if (Number.isFinite(leftNumber) && Number.isFinite(rightNumber)) {\n if (leftNumber !== rightNumber) {\n return leftNumber > rightNumber ? 1 : -1;\n }\n } else {\n const compared = leftPart.localeCompare(rightPart);\n if (compared !== 0) {\n return compared > 0 ? 1 : -1;\n }\n }\n }\n return 0;\n}\n\nfunction supportLookupKey(reference: {\n table: RemoteDatasetTable;\n id: string;\n version: string | null;\n}): string {\n return `${reference.table}:${reference.id}:${reference.version ?? ''}`;\n}\n\nfunction isLookupableRemoteReference(\n reference: RemoteDatasetReference,\n): reference is RemoteDatasetReference & { table: RemoteDatasetTable; id: string } {\n return Boolean(reference.table && reference.id);\n}\n\nfunction uniqueFlowRemoteReferences(payload: JsonObject): RemoteDatasetReference[] {\n const references = new Map<string, RemoteDatasetReference>();\n for (const reference of collectRemoteReferences([payload])) {\n if (reference.role !== 'reference') {\n continue;\n }\n if (reference.table && reference.id) {\n references.set(\n supportLookupKey({\n table: reference.table,\n id: reference.id,\n version: reference.version,\n }),\n reference,\n );\n } else {\n references.set(remoteReferenceFallbackKey(reference), reference);\n }\n }\n return [...references.values()];\n}\n\nfunction remoteReferenceFallbackKey(\n reference: Pick<RemoteDatasetReference, 'path' | 'type'>,\n): string {\n return `${reference.path}:${reference.type ?? 'unknown'}`;\n}\n\nasync function lookupCachedReferenceOnlySupport(options: {\n runtime: SupabaseDataRuntime;\n fetchImpl: FetchLike;\n timeoutMs: number;\n cache: Map<string, Promise<RemoteDatasetLookup>>;\n reference: RemoteDatasetReference & { table: RemoteDatasetTable; id: string };\n}): Promise<RemoteDatasetLookup> {\n const key = supportLookupKey(options.reference);\n if (!options.cache.has(key)) {\n options.cache.set(\n key,\n lookupRemoteDataset({\n runtime: options.runtime,\n fetchImpl: options.fetchImpl,\n timeoutMs: options.timeoutMs,\n request: {\n table: options.reference.table,\n id: options.reference.id,\n version: options.reference.version,\n },\n }),\n );\n }\n return options.cache.get(key) as Promise<RemoteDatasetLookup>;\n}\n\nasync function missingFlowRemoteReferences(options: {\n runtime: SupabaseDataRuntime;\n fetchImpl: FetchLike;\n timeoutMs: number;\n cache: Map<string, Promise<RemoteDatasetLookup>>;\n payload: JsonObject;\n}): Promise<MissingFlowRemoteReference[]> {\n const missing: MissingFlowRemoteReference[] = [];\n for (const reference of uniqueFlowRemoteReferences(options.payload)) {\n if (!isLookupableRemoteReference(reference)) {\n missing.push({\n table: reference.table,\n id: reference.id,\n version: reference.version,\n path: reference.path,\n short_description: reference.short_description,\n status: 'unsupported_type',\n latest_version: null,\n });\n continue;\n }\n if (!reference.version) {\n missing.push({\n table: reference.table,\n id: reference.id,\n version: null,\n path: reference.path,\n short_description: reference.short_description,\n status: 'version_missing',\n latest_version: null,\n });\n continue;\n }\n const lookup = await lookupCachedReferenceOnlySupport({ ...options, reference });\n if (!lookup.latest) {\n missing.push({\n table: reference.table,\n id: reference.id,\n version: reference.version,\n path: reference.path,\n short_description: reference.short_description,\n status: 'missing_dataset',\n latest_version: null,\n });\n } else if (!lookup.exact) {\n missing.push({\n table: reference.table,\n id: reference.id,\n version: reference.version,\n path: reference.path,\n short_description: reference.short_description,\n status: 'missing_version',\n latest_version: lookup.latest.version,\n });\n } else if (compareVersions(lookup.latest.version, reference.version) > 0) {\n missing.push({\n table: reference.table,\n id: reference.id,\n version: reference.version,\n path: reference.path,\n short_description: reference.short_description,\n status: 'version_outdated',\n latest_version: lookup.latest.version,\n });\n }\n }\n return missing;\n}\n\nfunction prepareRows(\n inputPath: string,\n rawInput: unknown | undefined,\n requestedType: DatasetSaveDraftType,\n): PreparedDatasetRow[] {\n const rows = readDatasetRowsInput(inputPath, rawInput);\n return rows.map((row, index) => {\n const payload = unwrapPayload(row);\n const type = requestedType === 'auto' ? detectType(payload) : requestedType;\n const config = type ? DATASET_CONFIGS[type] : null;\n const identity = config ? extractIdentity(payload, row, config) : { id: null, version: null };\n return {\n index,\n row,\n payload,\n type,\n config,\n id: identity.id,\n version: identity.version,\n validation: config && type ? validatePayload(payload, type, config) : null,\n };\n });\n}\n\nfunction buildFiles(outDir: string): DatasetSaveDraftReport['files'] {\n const outputDir = path.join(outDir, 'outputs', 'dataset-save-draft');\n return {\n selected_rows: path.join(outputDir, 'selected-rows.jsonl'),\n progress_jsonl: path.join(outputDir, 'progress.jsonl'),\n failures_jsonl: path.join(outputDir, 'failures.jsonl'),\n summary_json: path.join(outputDir, 'summary.json'),\n };\n}\n\nfunction defaultOutDir(inputPath: string, commit: boolean, now: Date): string {\n const mode = commit ? 'commit' : 'dry-run';\n const timestamp = now.toISOString().replace(/[:.]/gu, '').replace(/Z$/u, 'Z');\n return path.join(\n path.dirname(inputPath),\n 'artifacts',\n 'dataset-save-draft',\n `${mode}-${timestamp}`,\n );\n}\n\nfunction operationCount(rows: DatasetSaveDraftRowReport[]): Record<string, number> {\n const counts: Record<string, number> = {};\n for (const row of rows) {\n const key = row.operation ?? 'none';\n counts[key] = (counts[key] ?? 0) + 1;\n }\n return counts;\n}\n\nfunction byTable(rows: PreparedDatasetRow[]): Partial<Record<DatasetCommandTable, number>> {\n const counts: Partial<Record<DatasetCommandTable, number>> = {};\n for (const row of rows) {\n if (row.config) {\n counts[row.config.table] = (counts[row.config.table] ?? 0) + 1;\n }\n }\n return counts;\n}\n\nfunction selectedRow(row: PreparedDatasetRow): JsonObject {\n return {\n index: row.index,\n type: row.type,\n table: row.config?.table ?? null,\n id: row.id,\n version: row.version,\n validation: row.validation,\n payload: row.payload,\n };\n}\n\nfunction buildPreparedFailure(\n row: PreparedDatasetRow,\n allowReferenceOnlySupport = false,\n): DatasetSaveDraftRowReport | null {\n if (!row.type || !row.config) {\n return {\n index: row.index,\n id: row.id,\n version: row.version,\n type: row.type,\n table: null,\n status: 'failed',\n operation: 'type_unknown',\n validation: null,\n error: {\n message: 'Could not detect dataset type. Use --type or provide a supported TIDAS wrapper.',\n },\n };\n }\n\n if (REFERENCE_ONLY_SAVE_DRAFT_TYPES.has(row.type) && !allowReferenceOnlySupport) {\n return {\n index: row.index,\n id: row.id,\n version: row.version,\n type: row.type,\n table: row.config.table,\n status: 'failed',\n operation: 'reference_only_type',\n validation: row.validation,\n error: {\n message:\n 'Unit Groups and Flow Properties are reference-only support data. Rewrite references to existing database rows instead of writing these rows through dataset save-draft.',\n },\n };\n }\n\n if (!row.id || !row.version) {\n return {\n index: row.index,\n id: row.id,\n version: row.version,\n type: row.type,\n table: row.config.table,\n status: 'failed',\n operation: 'identity_missing',\n validation: row.validation,\n error: {\n message:\n 'Dataset row is missing common:UUID or common:dataSetVersion required for save-draft.',\n },\n };\n }\n\n if (!row.validation?.ok) {\n return {\n index: row.index,\n id: row.id,\n version: row.version,\n type: row.type,\n table: row.config.table,\n status: 'failed',\n operation: 'skipped_invalid',\n validation: row.validation,\n error: {\n message: `Local dataset validation failed with ${row.validation?.issue_count ?? 0} issue(s).`,\n },\n };\n }\n\n return null;\n}\n\nfunction buildVisibleRowsUrl(\n restBaseUrl: string,\n table: DatasetCommandTable,\n id: string,\n version: string,\n): string {\n const url = new URL(`${restBaseUrl.replace(/\\/+$/u, '')}/${table}`);\n url.searchParams.set('select', 'id,version,user_id,state_code');\n url.searchParams.set('id', `eq.${id}`);\n url.searchParams.set('version', `eq.${version}`);\n return url.toString();\n}\n\nfunction parseVisibleRows(payload: unknown, url: string): VisibleDatasetRow[] {\n if (!Array.isArray(payload)) {\n throw new CliError(`Supabase REST response was not a JSON array for ${url}`, {\n code: 'SUPABASE_REST_RESPONSE_INVALID',\n exitCode: 1,\n details: payload,\n });\n }\n\n return payload.map((item, index) => {\n if (!isRecord(item)) {\n throw new CliError(`Supabase REST row ${index} was not a JSON object for ${url}`, {\n code: 'SUPABASE_REST_RESPONSE_INVALID',\n exitCode: 1,\n details: item,\n });\n }\n return {\n id: trimToken(item.id) ?? '',\n version: trimToken(item.version) ?? '',\n user_id: trimToken(item.user_id),\n state_code: typeof item.state_code === 'number' ? item.state_code : null,\n };\n });\n}\n\nasync function exactVisibleRows(options: {\n client: SupabaseDataClient;\n restBaseUrl: string;\n table: DatasetCommandTable;\n id: string;\n version: string;\n}): Promise<VisibleDatasetRow[]> {\n const url = buildVisibleRowsUrl(options.restBaseUrl, options.table, options.id, options.version);\n const payload = await runSupabaseArrayQuery(\n options.client\n .from(options.table)\n .select('id,version,user_id,state_code')\n .eq('id', options.id)\n .eq('version', options.version),\n url,\n );\n return parseVisibleRows(payload, url);\n}\n\nfunction parseExecutionRows(payload: unknown, url: string): ExecutionDatasetRow[] {\n const visible = parseVisibleRows(payload, url);\n return visible.map((row, index) => {\n const raw = (payload as unknown[])[index];\n const jsonOrdered = isRecord(raw) && isRecord(raw.json_ordered) ? raw.json_ordered : null;\n return { ...row, json_ordered: jsonOrdered };\n });\n}\n\nasync function exactExecutionRows(options: {\n client: SupabaseDataClient;\n restBaseUrl: string;\n table: DatasetCommandTable;\n id: string;\n version: string;\n}): Promise<ExecutionDatasetRow[]> {\n const url = new URL(\n buildVisibleRowsUrl(options.restBaseUrl, options.table, options.id, options.version),\n );\n url.searchParams.set('select', 'id,version,user_id,state_code,json_ordered');\n const payload = await runSupabaseArrayQuery(\n options.client\n .from(options.table)\n .select('id,version,user_id,state_code,json_ordered')\n .eq('id', options.id)\n .eq('version', options.version),\n url.toString(),\n );\n return parseExecutionRows(payload, url.toString());\n}\n\nfunction exactDesiredReadback(options: {\n rows: ExecutionDatasetRow[];\n action: DatasetSaveDraftExecutionAction;\n contract: DatasetSaveDraftExecutionContract;\n}): boolean {\n const row = options.rows[0];\n return Boolean(\n options.rows.length === 1 &&\n row &&\n row.id === options.action.id &&\n row.version === options.action.version &&\n row.user_id === options.contract.owner.user_id &&\n row.state_code === 0 &&\n row.json_ordered &&\n sha256Json(row.json_ordered) === options.action.desired_sha256,\n );\n}\n\nfunction contractRowReport(options: {\n row: PreparedDatasetRow;\n action: DatasetSaveDraftExecutionAction;\n status: 'executed' | 'failed' | 'unknown' | 'blocked';\n operation: DatasetSaveDraftRowReport['operation'];\n attemptConsumed: boolean;\n readback: DatasetSaveDraftRowReport['readback'];\n error?: { message: string; details?: unknown };\n}): DatasetSaveDraftRowReport {\n return {\n index: options.row.index,\n id: options.row.id,\n version: options.row.version,\n type: options.row.type,\n table: options.action.table,\n status: options.status,\n operation: options.operation,\n validation: options.row.validation,\n action_id: options.action.action_id,\n desired_sha256: options.action.desired_sha256,\n attempt_consumed: options.attemptConsumed,\n replayed: false,\n readback: options.readback,\n ...(options.error ? { error: options.error } : {}),\n };\n}\n\nasync function finalizeAttemptedAction(options: {\n row: PreparedDatasetRow;\n action: DatasetSaveDraftExecutionAction;\n contract: DatasetSaveDraftExecutionContract;\n contractSha256: string;\n ledgerRoot: string;\n ledger: ExecutionLedgerState;\n client: SupabaseDataClient;\n restBaseUrl: string;\n now: () => string;\n recovered: boolean;\n}): Promise<DatasetSaveDraftRowReport> {\n const desiredExact = await readbackIsDesiredExact(options);\n appendExecutionEvent({\n ledgerRoot: options.ledgerRoot,\n ledger: options.ledger,\n contractSha256: options.contractSha256,\n action: options.action,\n eventType: 'outcome',\n outcome: desiredExact ? 'executed' : 'unknown',\n recovered: options.recovered,\n recordedAtUtc: options.now(),\n });\n return contractRowReport({\n row: options.row,\n action: options.action,\n status: desiredExact ? 'executed' : 'unknown',\n operation:\n desiredExact && options.recovered\n ? 'recovered_exact_readback'\n : options.action.expected_operation,\n attemptConsumed: true,\n readback: desiredExact ? 'desired_exact' : 'not_desired',\n ...(desiredExact\n ? {}\n : {\n error: {\n message:\n 'A prior protected request was emitted without a terminal desired-exact readback; the action is UNKNOWN and will never be replayed.',\n },\n }),\n });\n}\n\nasync function readbackIsDesiredExact(options: {\n client: SupabaseDataClient;\n restBaseUrl: string;\n action: DatasetSaveDraftExecutionAction;\n contract: DatasetSaveDraftExecutionContract;\n}): Promise<boolean> {\n try {\n return exactDesiredReadback({\n rows: await exactExecutionRows({\n client: options.client,\n restBaseUrl: options.restBaseUrl,\n table: options.action.table,\n id: options.action.id,\n version: options.action.version,\n }),\n action: options.action,\n contract: options.contract,\n });\n } catch {\n return false;\n }\n}\n\nfunction normalizeExecutionMaxParallel(value: number | null | undefined): number {\n const normalized = value ?? 1;\n if (!Number.isInteger(normalized) || normalized < 1 || normalized > 8) {\n executionContractError('Execution contract --max-parallel must be an integer from 1 to 8.');\n }\n return normalized;\n}\n\nfunction executionSerialPrefixLength(contract: DatasetSaveDraftExecutionContract): number {\n const actionIndexes = new Map(\n contract.actions.map((action, index) => [action.action_id, index] as const),\n );\n let highestDependencyIndex = -1;\n for (const action of contract.actions) {\n for (const dependencyActionId of action.dependency_action_ids) {\n highestDependencyIndex = Math.max(\n highestDependencyIndex,\n actionIndexes.get(dependencyActionId) as number,\n );\n }\n }\n return highestDependencyIndex + 1;\n}\n\nfunction assertParallelSuffixTargetsAreUnique(\n contract: DatasetSaveDraftExecutionContract,\n serialPrefixLength: number,\n): void {\n const targets = new Set<string>();\n for (const action of contract.actions.slice(serialPrefixLength)) {\n const target = `${action.table}\\u0000${action.id}\\u0000${action.version}`;\n if (targets.has(target)) {\n executionContractError(\n 'Execution contract parallel suffix contains a repeated table/id/version target.',\n );\n }\n targets.add(target);\n }\n}\n\nasync function renewExecutionOwnerToken(options: {\n runtime: SupabaseDataRuntime;\n commandTransport: NonNullable<Awaited<ReturnType<typeof buildDatasetCommandTransport>>>;\n contract: DatasetSaveDraftExecutionContract;\n}): Promise<void> {\n const accessToken = await options.runtime.getAccessToken();\n const actor = decodeExecutionActor(accessToken);\n if (\n actor.user_id !== options.contract.owner.user_id ||\n actor.email !== options.contract.owner.email\n ) {\n executionContractError('Renewed owner session does not match the execution contract.');\n }\n options.commandTransport.accessToken = accessToken;\n}\n\nasync function runExecutionContractBatch(options: {\n contractPath: string;\n contract: DatasetSaveDraftExecutionContract;\n preparedRows: PreparedDatasetRow[];\n allowReferenceOnlySupport: boolean;\n files: DatasetSaveDraftReport['files'];\n inputPath: string;\n requestedType: DatasetSaveDraftType;\n outDir: string;\n env: NodeJS.ProcessEnv;\n runtime: SupabaseDataRuntime;\n commandTransport: NonNullable<Awaited<ReturnType<typeof buildDatasetCommandTransport>>>;\n dataClient: NonNullable<ReturnType<typeof createSupabaseDataClient>>;\n fetchImpl: FetchLike;\n timeoutMs: number;\n now: () => string;\n maxParallel: number;\n}): Promise<DatasetSaveDraftReport> {\n const contractSha256 = sha256Json(options.contract);\n const ledgerRoot = executionLedgerRoot(options.env, options.contract);\n const ledger = loadExecutionLedger(ledgerRoot, options.contract);\n const actor = decodeExecutionActor(options.commandTransport.accessToken);\n if (\n projectRefFromApiBaseUrl(options.runtime.apiBaseUrl) !== options.contract.project_ref ||\n actor.user_id !== options.contract.owner.user_id ||\n actor.email !== options.contract.owner.email\n ) {\n executionContractError('Owner session or project does not match the execution contract.');\n }\n options.files.execution_ledger = ledgerRoot;\n const serialPrefixLength = executionSerialPrefixLength(options.contract);\n if (options.maxParallel > 1) {\n assertParallelSuffixTargetsAreUnique(options.contract, serialPrefixLength);\n }\n const reports: Array<DatasetSaveDraftRowReport | undefined> = new Array(\n options.contract.actions.length,\n );\n const statuses = new Map<string, DatasetSaveDraftRowReport['status']>();\n const referenceOnlySupportCache = new Map<string, Promise<RemoteDatasetLookup>>();\n\n const executeAction = async (index: number): Promise<void> => {\n const action = options.contract.actions[index] as DatasetSaveDraftExecutionAction;\n const row = options.preparedRows[index] as PreparedDatasetRow;\n const storeReport = (report: DatasetSaveDraftRowReport): void => {\n reports[index] = report;\n statuses.set(action.action_id, report.status);\n };\n const preparedFailure = buildPreparedFailure(row, options.allowReferenceOnlySupport);\n if (preparedFailure) {\n const report = {\n ...preparedFailure,\n action_id: action.action_id,\n desired_sha256: action.desired_sha256,\n attempt_consumed: false,\n replayed: false as const,\n readback: 'not_performed' as const,\n };\n storeReport(report);\n return;\n }\n\n const priorOutcome = ledger.outcomes.get(action.action_id);\n if (priorOutcome) {\n const desiredStillExact =\n priorOutcome.outcome === 'executed' &&\n (await readbackIsDesiredExact({\n client: options.dataClient.client,\n restBaseUrl: options.dataClient.restBaseUrl,\n action,\n contract: options.contract,\n }));\n const status = desiredStillExact ? 'executed' : 'unknown';\n const report = contractRowReport({\n row,\n action,\n status,\n operation: action.expected_operation,\n attemptConsumed: true,\n readback: desiredStillExact ? 'desired_exact' : 'not_desired',\n ...(status === 'unknown'\n ? {\n error: {\n message:\n priorOutcome.outcome === 'unknown'\n ? 'Terminal UNKNOWN action retained; replay is forbidden.'\n : 'A terminal success no longer has exact desired owner readback; replay is forbidden.',\n },\n }\n : {}),\n });\n storeReport(report);\n return;\n }\n\n if (ledger.attempts.has(action.action_id)) {\n const report = await finalizeAttemptedAction({\n row,\n action,\n contract: options.contract,\n contractSha256,\n ledgerRoot,\n ledger,\n client: options.dataClient.client,\n restBaseUrl: options.dataClient.restBaseUrl,\n now: options.now,\n recovered: true,\n });\n storeReport(report);\n return;\n }\n\n const blockingDependencies = action.dependency_action_ids.filter(\n (dependency) => statuses.get(dependency) !== 'executed',\n );\n if (blockingDependencies.length > 0) {\n const report = contractRowReport({\n row,\n action,\n status: 'blocked',\n operation: 'blocked_dependency',\n attemptConsumed: false,\n readback: 'not_performed',\n error: {\n message: 'Action dependencies are not terminal successes; no request was emitted.',\n details: { dependency_action_ids: blockingDependencies },\n },\n });\n storeReport(report);\n return;\n }\n\n let beforeRows: ExecutionDatasetRow[];\n let transportFailed = false;\n try {\n beforeRows = await exactExecutionRows({\n client: options.dataClient.client,\n restBaseUrl: options.dataClient.restBaseUrl,\n table: action.table,\n id: action.id,\n version: action.version,\n });\n const before = beforeRows[0];\n const observedOperation = beforeRows.length === 0 ? 'insert' : 'save_draft';\n const beforeExact = Boolean(\n beforeRows.length === 1 &&\n before &&\n before.id === action.id &&\n before.version === action.version &&\n before.user_id === options.contract.owner.user_id &&\n before.state_code === 0 &&\n before.json_ordered &&\n sha256Json(before.json_ordered) === action.before_sha256,\n );\n if (\n beforeRows.length > 1 ||\n observedOperation !== action.expected_operation ||\n (observedOperation === 'save_draft' && !beforeExact)\n ) {\n throw new CliError('Execution action before-state or expected operation drifted.', {\n code: 'DATASET_SAVE_DRAFT_EXECUTION_BEFORE_DRIFT',\n exitCode: 1,\n });\n }\n if (row.type === 'flow') {\n const unresolvedReferences = await missingFlowRemoteReferences({\n runtime: options.runtime,\n fetchImpl: options.fetchImpl,\n timeoutMs: options.timeoutMs,\n cache: referenceOnlySupportCache,\n payload: row.payload,\n });\n if (unresolvedReferences.length > 0) {\n throw new CliError('Flow execution action has unresolved remote references.', {\n code: 'DATASET_SAVE_DRAFT_REMOTE_REFERENCE_UNRESOLVED',\n exitCode: 1,\n details: { references: unresolvedReferences },\n });\n }\n }\n await renewExecutionOwnerToken({\n runtime: options.runtime,\n commandTransport: options.commandTransport,\n contract: options.contract,\n });\n } catch (error) {\n const report = contractRowReport({\n row,\n action,\n status: 'failed',\n operation: action.expected_operation,\n attemptConsumed: false,\n readback: 'not_performed',\n error: serializeError(error),\n });\n storeReport(report);\n return;\n }\n\n try {\n const beforeDispatch = () => {\n appendExecutionEvent({\n ledgerRoot,\n ledger,\n contractSha256,\n action,\n eventType: 'attempt_emitted',\n outcome: null,\n recovered: false,\n recordedAtUtc: options.now(),\n });\n };\n if (action.expected_operation === 'insert') {\n await createDatasetRecord({\n transport: options.commandTransport,\n table: action.table,\n id: action.id,\n payload: row.payload,\n extraData: { ruleVerification: true },\n beforeDispatch,\n });\n } else {\n await saveDraftDatasetRecord({\n transport: options.commandTransport,\n table: action.table,\n id: action.id,\n version: action.version,\n payload: row.payload,\n extraData: { ruleVerification: true },\n beforeDispatch,\n });\n }\n } catch (error) {\n if (error instanceof CliError && error.code === 'DATASET_COMMAND_BEFORE_DISPATCH_FAILED') {\n throw error;\n }\n // Once emission is durably recorded, transport outcomes are resolved by readback only.\n transportFailed = true;\n }\n const report = await finalizeAttemptedAction({\n row,\n action,\n contract: options.contract,\n contractSha256,\n ledgerRoot,\n ledger,\n client: options.dataClient.client,\n restBaseUrl: options.dataClient.restBaseUrl,\n now: options.now,\n recovered: transportFailed,\n });\n storeReport(report);\n };\n\n for (let index = 0; index < serialPrefixLength; index += 1) {\n await executeAction(index);\n }\n\n let nextParallelIndex = serialPrefixLength;\n let fatalWorkerError: unknown = null;\n const runParallelWorker = async (): Promise<void> => {\n while (fatalWorkerError === null) {\n const index = nextParallelIndex;\n nextParallelIndex += 1;\n if (index >= options.contract.actions.length) {\n return;\n }\n try {\n await executeAction(index);\n } catch (error) {\n fatalWorkerError ??= error;\n }\n }\n };\n const parallelWorkerCount = Math.min(\n options.maxParallel,\n options.contract.actions.length - serialPrefixLength,\n );\n await Promise.all(Array.from({ length: parallelWorkerCount }, () => runParallelWorker()));\n if (fatalWorkerError !== null) {\n throw fatalWorkerError;\n }\n\n const completedReports = reports as DatasetSaveDraftRowReport[];\n const failures = completedReports.filter((row) =>\n ['failed', 'unknown', 'blocked'].includes(row.status),\n );\n writeJsonLinesArtifact(options.files.progress_jsonl, completedReports);\n writeJsonLinesArtifact(options.files.failures_jsonl, failures);\n const unknown = completedReports.filter((row) => row.status === 'unknown').length;\n const failed = completedReports.filter((row) => row.status === 'failed').length;\n const blocked = completedReports.filter((row) => row.status === 'blocked').length;\n const report: DatasetSaveDraftReport = {\n schema_version: 2,\n generated_at_utc: options.now(),\n input_path: options.inputPath,\n requested_type: options.requestedType,\n out_dir: options.outDir,\n commit: true,\n mode: 'commit',\n status:\n unknown > 0\n ? 'completed_with_unknowns'\n : failed + blocked > 0\n ? 'completed_with_failures'\n : 'completed',\n counts: {\n selected: options.preparedRows.length,\n prepared: 0,\n executed: completedReports.filter((row) => row.status === 'executed').length,\n failed,\n unknown,\n blocked,\n attempts_consumed: ledger.attempts.size,\n by_table: byTable(options.preparedRows),\n operations: operationCount(completedReports),\n },\n files: options.files,\n rows: completedReports,\n execution_contract: {\n path: path.resolve(options.contractPath),\n sha256: contractSha256,\n execution_id: options.contract.execution_id,\n target_mode: 'owner_draft',\n max_parallel: options.maxParallel,\n serial_prefix_actions: serialPrefixLength,\n parallel_suffix_actions: options.contract.actions.length - serialPrefixLength,\n },\n };\n writeJsonArtifact(options.files.summary_json, report);\n return report;\n}\n\nexport async function runDatasetSaveDraft(\n options: RunDatasetSaveDraftOptions,\n): Promise<DatasetSaveDraftReport> {\n const now = options.now ?? new Date();\n const inputPath = path.resolve(options.inputPath);\n const commit = options.commit === true;\n const allowReferenceOnlySupport =\n options.allowReferenceOnlySupport === true ||\n (options.env?.TIANGONG_ALLOW_ACCOUNT_LOCAL_SUPPORT ?? '') === '1';\n const requestedType = normalizeType(options.type, allowReferenceOnlySupport);\n const outDir = path.resolve(options.outDir ?? defaultOutDir(inputPath, commit, now));\n const files = buildFiles(outDir);\n const preparedRows = prepareRows(inputPath, options.rawInput, requestedType);\n const timeoutMs = options.timeoutMs ?? DEFAULT_TIMEOUT_MS;\n const maxParallel = normalizeExecutionMaxParallel(options.maxParallel);\n const executionContractPath = options.executionContractPath\n ? path.resolve(options.executionContractPath)\n : null;\n const executionContract = executionContractPath\n ? parseExecutionContract(\n readJsonFile(executionContractPath, 'Dataset save-draft execution contract'),\n )\n : null;\n\n if (executionContract && !commit) {\n executionContractError('Execution contract mode requires --commit.');\n }\n if (!executionContract && maxParallel !== 1) {\n executionContractError('--max-parallel greater than 1 requires --execution-contract.');\n }\n if (executionContract) {\n bindExecutionContractRows(executionContract, preparedRows);\n }\n\n if (commit && (!options.env || !options.fetchImpl)) {\n throw new CliError('Dataset save-draft commit requires env and fetch runtime bindings.', {\n code: 'DATASET_SAVE_DRAFT_RUNTIME_REQUIRED',\n exitCode: 2,\n });\n }\n\n writeJsonLinesArtifact(files.selected_rows, preparedRows.map(selectedRow));\n\n const runtime =\n commit && options.env && options.fetchImpl\n ? createSupabaseDataRuntime({\n runtime: requireSupabaseRestRuntime(options.env),\n fetchImpl: options.fetchImpl,\n timeoutMs,\n })\n : null;\n const commandTransport =\n runtime && options.fetchImpl\n ? await buildDatasetCommandTransport({\n runtime,\n fetchImpl: options.fetchImpl,\n timeoutMs,\n })\n : null;\n const dataClient =\n runtime && options.fetchImpl\n ? createSupabaseDataClient(runtime, options.fetchImpl, timeoutMs)\n : null;\n const referenceOnlySupportCache = new Map<string, Promise<RemoteDatasetLookup>>();\n\n if (executionContract && executionContractPath) {\n return runExecutionContractBatch({\n contractPath: executionContractPath,\n contract: executionContract,\n preparedRows,\n allowReferenceOnlySupport,\n files,\n inputPath,\n requestedType,\n outDir,\n env: options.env!,\n runtime: runtime!,\n commandTransport: commandTransport!,\n dataClient: dataClient!,\n fetchImpl: options.fetchImpl!,\n timeoutMs,\n now: () => now.toISOString(),\n maxParallel,\n });\n }\n\n const reports: DatasetSaveDraftRowReport[] = [];\n for (const row of preparedRows) {\n const preparedFailure = buildPreparedFailure(row, allowReferenceOnlySupport);\n if (preparedFailure) {\n reports.push(preparedFailure);\n continue;\n }\n\n const baseReport: DatasetSaveDraftRowReport = {\n index: row.index,\n id: row.id,\n version: row.version,\n type: row.type,\n table: row.config!.table,\n status: 'prepared',\n operation: 'would_sync',\n validation: row.validation,\n };\n\n if (!commit) {\n reports.push(baseReport);\n continue;\n }\n\n try {\n const visibleRows = await exactVisibleRows({\n client: dataClient!.client,\n restBaseUrl: dataClient!.restBaseUrl,\n table: row.config!.table,\n id: row.id!,\n version: row.version!,\n });\n const visibleRow = visibleRows[0] ?? null;\n if (row.type === 'flow') {\n if (!visibleRow && isElementaryFlowPayload(row.payload) && !allowReferenceOnlySupport) {\n reports.push({\n ...baseReport,\n status: 'failed',\n operation: 'elementary_flow_insert_blocked',\n visible_row: null,\n error: {\n message:\n 'Elementary flows are reference-only for dataset save-draft. Resolve the flow with remote hybrid search and reference the existing database row instead of creating a My Data flow.',\n details: {\n code: 'DATASET_SAVE_DRAFT_ELEMENTARY_FLOW_INSERT_BLOCKED',\n },\n },\n });\n continue;\n }\n\n const unresolvedReferences = await missingFlowRemoteReferences({\n runtime: runtime!,\n fetchImpl: options.fetchImpl!,\n timeoutMs,\n cache: referenceOnlySupportCache,\n payload: row.payload,\n });\n if (unresolvedReferences.length > 0) {\n reports.push({\n ...baseReport,\n status: 'failed',\n operation: 'remote_reference_unresolved',\n visible_row: visibleRow,\n error: {\n message:\n 'Flow save-draft commit requires all referenced datasets to already resolve in the remote database.',\n details: {\n code: 'DATASET_SAVE_DRAFT_REMOTE_REFERENCE_UNRESOLVED',\n references: unresolvedReferences,\n },\n },\n });\n continue;\n }\n }\n if (visibleRow) {\n await saveDraftDatasetRecord({\n transport: commandTransport!,\n table: row.config!.table,\n id: row.id!,\n version: row.version!,\n payload: row.payload,\n extraData: { ruleVerification: true },\n });\n reports.push({\n ...baseReport,\n status: 'executed',\n operation: 'save_draft',\n visible_row: visibleRow,\n });\n } else {\n await createDatasetRecord({\n transport: commandTransport!,\n table: row.config!.table,\n id: row.id!,\n payload: row.payload,\n extraData: { ruleVerification: true },\n });\n reports.push({\n ...baseReport,\n status: 'executed',\n operation: 'insert',\n visible_row: null,\n });\n }\n } catch (error) {\n reports.push({\n ...baseReport,\n status: 'failed',\n error: serializeError(error),\n });\n }\n }\n\n const failures = reports.filter((row) => row.status === 'failed');\n writeJsonLinesArtifact(files.progress_jsonl, reports);\n writeJsonLinesArtifact(files.failures_jsonl, failures);\n\n const report: DatasetSaveDraftReport = {\n schema_version: 1,\n generated_at_utc: now.toISOString(),\n input_path: inputPath,\n requested_type: requestedType,\n out_dir: outDir,\n commit,\n mode: commit ? 'commit' : 'dry_run',\n status: failures.length > 0 ? 'completed_with_failures' : 'completed',\n counts: {\n selected: preparedRows.length,\n prepared: reports.filter((row) => row.status === 'prepared').length,\n executed: reports.filter((row) => row.status === 'executed').length,\n failed: failures.length,\n by_table: byTable(preparedRows),\n operations: operationCount(reports),\n },\n files,\n rows: reports,\n };\n\n writeJsonArtifact(files.summary_json, report);\n return report;\n}\n\nexport const __testInternals = {\n DATASET_CONFIGS,\n buildFiles,\n buildPreparedFailure,\n buildVisibleRowsUrl,\n byTable,\n compareVersions,\n defaultOutDir,\n detectType,\n decodeExecutionActor,\n bindExecutionContractRows,\n executionLedgerRoot,\n executionLedgerPath,\n executionActionBindingSha256,\n loadExecutionLedger,\n exactDesiredReadback,\n extractIdentity,\n flowType,\n isElementaryFlowPayload,\n isLookupableRemoteReference,\n missingFlowRemoteReferences,\n normalizeValidationIssue,\n normalizeType,\n operationCount,\n parseVisibleRows,\n parseExecutionContract,\n parseExecutionRows,\n parseLedgerEvent,\n projectRefFromApiBaseUrl,\n prepareRows,\n remoteReferenceFallbackKey,\n selectedRow,\n serializeError,\n supportLookupKey,\n unwrapPayload,\n uniqueFlowRemoteReferences,\n validatePayload,\n};\n"]}
|
|
1
|
+
{"version":3,"file":"dataset-save-draft-run.js","sourceRoot":"","sources":["../../../src/lib/dataset-save-draft-run.ts"],"names":[],"mappings":"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","sourcesContent":["// data-api-relations: contacts, flowproperties, flows, processes, sources, unitgroups\n// data-api-dynamic-relation-expression: options.table\nimport { closeSync, chmodSync, fsyncSync, mkdirSync, openSync, writeFileSync } from 'node:fs';\nimport path from 'node:path';\nimport * as tidasSdk from '@tiangong-lca/tidas-sdk';\nimport { createBatchContract, runBoundedBatch, type BatchJsonValue } from '../batch.js';\nimport { writeJsonArtifact, writeJsonLinesArtifact } from './artifacts.js';\nimport { collectImportContentIssues } from './dataset-validate.js';\nimport {\n createDatasetRecord,\n saveDraftDatasetRecord,\n type DatasetCommandTable,\n} from './dataset-command.js';\nimport { readDatasetRowsInput } from './dataset-local.js';\nimport { CliError } from './errors.js';\nimport type { FetchLike } from './http.js';\nimport {\n normalizeIssuePath,\n type SafeParseSchema,\n type SdkValidationFactory,\n validateSchemaWithDeepFallback,\n} from './tidas-sdk-validation.js';\nimport {\n collectProcessPlaceholderIssues,\n collectProcessRequiredFieldIssues,\n} from './process-required-fields.js';\nimport { buildDatasetCommandTransport } from './dataset-command.js';\nimport {\n createSupabaseDataClient,\n requireSupabaseRestRuntime,\n runSupabaseArrayQuery,\n type SupabaseDataRuntime,\n} from './supabase-client.js';\nimport { createSupabaseDataRuntime } from './supabase-session.js';\nimport {\n collectRemoteReferences,\n lookupRemoteDataset,\n type RemoteDatasetLookup,\n type RemoteDatasetReference,\n type RemoteDatasetTable,\n} from './dataset-remote-verify.js';\nimport {\n readJsonFile,\n readJsonLinesIfPresent,\n sha256Json,\n stableJsonText,\n} from './dataset-maintenance-contract.js';\nimport { resolveFlowIdentityApprovalClaimRoot } from './dataset-maintenance-flow-identity-approval-claim.js';\n\ntype JsonObject = Record<string, unknown>;\n\nconst DEFAULT_TIMEOUT_MS = 10_000;\n\nexport type DatasetSaveDraftType =\n | 'auto'\n | 'contact'\n | 'source'\n | 'unitgroup'\n | 'flowproperty'\n | 'flow'\n | 'process';\n\ntype ConcreteDatasetSaveDraftType = Exclude<DatasetSaveDraftType, 'auto'>;\n\ntype DatasetTypeConfig = {\n table: DatasetCommandTable;\n rootKey: string;\n informationKey: string;\n schemaName: keyof typeof tidasSdk;\n factoryName: keyof typeof tidasSdk;\n};\n\ntype DatasetSaveDraftValidationIssue = {\n path: string;\n message: string;\n code: string;\n};\n\ntype DatasetSaveDraftValidationResult =\n | {\n ok: true;\n validator: string;\n issue_count: 0;\n issues: [];\n }\n | {\n ok: false;\n validator: string;\n issue_count: number;\n issues: DatasetSaveDraftValidationIssue[];\n };\n\nfunction normalizeValidationIssue(issue: {\n path?: Array<string | number>;\n message?: string;\n code?: string;\n}): DatasetSaveDraftValidationIssue {\n return {\n path: normalizeIssuePath(issue.path ?? []),\n message: issue.message ?? 'Validation failed',\n code: issue.code ?? 'custom',\n };\n}\n\nexport type DatasetSaveDraftRowReport = {\n index: number;\n id: string | null;\n version: string | null;\n type: ConcreteDatasetSaveDraftType | null;\n table: DatasetCommandTable | null;\n status: 'prepared' | 'executed' | 'failed' | 'unknown' | 'blocked';\n operation:\n | 'would_sync'\n | 'insert'\n | 'save_draft'\n | 'skipped_invalid'\n | 'reference_only_type'\n | 'type_unknown'\n | 'identity_missing'\n | 'elementary_flow_insert_blocked'\n | 'remote_reference_unresolved'\n | 'recovered_exact_readback'\n | 'blocked_dependency'\n | null;\n validation: DatasetSaveDraftValidationResult | null;\n visible_row?: VisibleDatasetRow | null;\n error?: { message: string; details?: unknown };\n action_id?: string;\n desired_sha256?: string;\n attempt_consumed?: boolean;\n replayed?: false;\n readback?: 'desired_exact' | 'not_desired' | 'not_performed';\n};\n\nexport type DatasetSaveDraftReport = {\n schema_version: 1 | 2;\n generated_at_utc: string;\n input_path: string;\n requested_type: DatasetSaveDraftType;\n out_dir: string;\n commit: boolean;\n mode: 'dry_run' | 'commit';\n status: 'completed' | 'completed_with_failures' | 'completed_with_unknowns';\n counts: {\n selected: number;\n prepared: number;\n executed: number;\n failed: number;\n unknown?: number;\n blocked?: number;\n attempts_consumed?: number;\n by_table: Partial<Record<DatasetCommandTable, number>>;\n operations: Record<string, number>;\n };\n files: {\n selected_rows: string;\n progress_jsonl: string;\n failures_jsonl: string;\n summary_json: string;\n execution_ledger?: string;\n };\n rows: DatasetSaveDraftRowReport[];\n execution_contract?: {\n path: string;\n sha256: string;\n execution_id: string;\n target_mode: 'owner_draft';\n max_parallel: number;\n serial_prefix_actions: number;\n parallel_suffix_actions: number;\n };\n};\n\nexport type RunDatasetSaveDraftOptions = {\n inputPath: string;\n type?: string | null;\n outDir?: string | null;\n commit?: boolean | null;\n rawInput?: unknown;\n env?: NodeJS.ProcessEnv;\n fetchImpl?: FetchLike;\n timeoutMs?: number;\n now?: Date;\n /**\n * Explicit opt-in to write account-local (My Data, state_code=0) Unit Group and\n * Flow Property support rows that are otherwise reference-only. Default false keeps\n * the CLI safe-by-default for interactive operators.\n */\n allowReferenceOnlySupport?: boolean | null;\n executionContractPath?: string | null;\n maxParallel?: number | null;\n};\n\ntype DatasetSaveDraftExecutionAction = {\n action_id: string;\n desired_sha256: string;\n expected_operation: 'insert' | 'save_draft';\n table: DatasetCommandTable;\n id: string;\n version: string;\n before_sha256: string | null;\n dependency_action_ids: string[];\n};\n\ntype DatasetSaveDraftExecutionContract = {\n schema_version: 'dataset-save-draft-execution-contract.v1';\n execution_id: string;\n project_ref: string;\n target_mode: 'owner_draft';\n owner: {\n user_id: string;\n email: string;\n state_code: 0;\n };\n actions: DatasetSaveDraftExecutionAction[];\n};\n\ntype DatasetSaveDraftLedgerEvent = {\n schema_version: 'dataset-save-draft-execution-event.v1';\n sequence: number;\n contract_sha256: string;\n action_id: string;\n desired_sha256: string;\n action_binding_sha256: string;\n event_type: 'attempt_emitted' | 'outcome';\n operation: 'insert' | 'save_draft';\n outcome: 'executed' | 'unknown' | null;\n recovered: boolean;\n recorded_at_utc: string;\n previous_event_sha256: string | null;\n event_sha256: string;\n};\n\ntype ExecutionLedgerState = {\n events: Map<string, DatasetSaveDraftLedgerEvent[]>;\n attempts: Map<string, DatasetSaveDraftLedgerEvent>;\n outcomes: Map<string, DatasetSaveDraftLedgerEvent>;\n};\n\ntype PreparedDatasetRow = {\n index: number;\n row: JsonObject;\n payload: JsonObject;\n type: ConcreteDatasetSaveDraftType | null;\n config: DatasetTypeConfig | null;\n id: string | null;\n version: string | null;\n validation: DatasetSaveDraftValidationResult | null;\n};\n\ntype VisibleDatasetRow = {\n id: string;\n version: string;\n user_id: string | null;\n state_code: number | null;\n};\n\ntype ExecutionDatasetRow = VisibleDatasetRow & {\n json_ordered: JsonObject | null;\n};\n\ntype SupabaseDataClient = ReturnType<typeof createSupabaseDataClient>['client'];\n\ntype MissingFlowRemoteReference = {\n table: RemoteDatasetTable | null;\n id: string | null;\n version: string | null;\n path: string;\n short_description: string | null;\n status:\n | 'missing_dataset'\n | 'missing_version'\n | 'unsupported_type'\n | 'version_missing'\n | 'version_outdated';\n latest_version: string | null;\n};\n\nconst DATASET_CONFIGS: Record<ConcreteDatasetSaveDraftType, DatasetTypeConfig> = {\n contact: {\n table: 'contacts',\n rootKey: 'contactDataSet',\n informationKey: 'contactInformation',\n schemaName: 'ContactSchema',\n factoryName: 'createContact',\n },\n source: {\n table: 'sources',\n rootKey: 'sourceDataSet',\n informationKey: 'sourceInformation',\n schemaName: 'SourceSchema',\n factoryName: 'createSource',\n },\n unitgroup: {\n table: 'unitgroups',\n rootKey: 'unitGroupDataSet',\n informationKey: 'unitGroupInformation',\n schemaName: 'UnitGroupSchema',\n factoryName: 'createUnitGroup',\n },\n flowproperty: {\n table: 'flowproperties',\n rootKey: 'flowPropertyDataSet',\n informationKey: 'flowPropertiesInformation',\n schemaName: 'FlowPropertySchema',\n factoryName: 'createFlowProperty',\n },\n flow: {\n table: 'flows',\n rootKey: 'flowDataSet',\n informationKey: 'flowInformation',\n schemaName: 'FlowSchema',\n factoryName: 'createFlow',\n },\n process: {\n table: 'processes',\n rootKey: 'processDataSet',\n informationKey: 'processInformation',\n schemaName: 'ProcessSchema',\n factoryName: 'createProcess',\n },\n};\n\nconst REFERENCE_ONLY_SAVE_DRAFT_TYPES = new Set<ConcreteDatasetSaveDraftType>([\n 'unitgroup',\n 'flowproperty',\n]);\n\nconst SHA256_PATTERN = /^[0-9a-f]{64}$/u;\n\nfunction executionContractError(message: string): never {\n throw new CliError(message, {\n code: 'DATASET_SAVE_DRAFT_EXECUTION_CONTRACT_INVALID',\n exitCode: 2,\n });\n}\n\nfunction requireExecutionToken(value: unknown, label: string): string {\n const normalized = trimToken(value);\n return normalized ?? executionContractError(`${label} must be a non-empty string.`);\n}\n\nfunction requireExecutionSha(value: unknown, label: string): string {\n const normalized = requireExecutionToken(value, label);\n return SHA256_PATTERN.test(normalized)\n ? normalized\n : executionContractError(`${label} must be a lowercase SHA-256 digest.`);\n}\n\nfunction parseExecutionContract(value: unknown): DatasetSaveDraftExecutionContract {\n if (!isRecord(value)) {\n executionContractError('Execution contract must be a JSON object.');\n }\n if (\n value.schema_version !== 'dataset-save-draft-execution-contract.v1' ||\n value.target_mode !== 'owner_draft' ||\n !isRecord(value.owner) ||\n value.owner.state_code !== 0 ||\n !Array.isArray(value.actions) ||\n value.actions.length === 0\n ) {\n executionContractError('Execution contract header is invalid.');\n }\n const executionId = requireExecutionToken(value.execution_id, 'execution_id');\n const projectRef = requireExecutionToken(value.project_ref, 'project_ref');\n const ownerUserId = requireExecutionToken(value.owner.user_id, 'owner.user_id');\n const ownerEmail = requireExecutionToken(value.owner.email, 'owner.email').toLowerCase();\n const actions: DatasetSaveDraftExecutionAction[] = [];\n const seen = new Set<string>();\n for (const [index, rawAction] of value.actions.entries()) {\n if (!isRecord(rawAction) || !Array.isArray(rawAction.dependency_action_ids)) {\n executionContractError(`actions[${index}] is invalid.`);\n }\n const actionId = requireExecutionToken(rawAction.action_id, `actions[${index}].action_id`);\n if (seen.has(actionId)) {\n executionContractError(`Duplicate action_id: ${actionId}`);\n }\n const table = requireExecutionToken(rawAction.table, `actions[${index}].table`);\n if (!Object.values(DATASET_CONFIGS).some((config) => config.table === table)) {\n executionContractError(`actions[${index}].table is unsupported.`);\n }\n const expectedOperation = rawAction.expected_operation;\n if (expectedOperation !== 'insert' && expectedOperation !== 'save_draft') {\n executionContractError(`actions[${index}].expected_operation is invalid.`);\n }\n const beforeSha =\n rawAction.before_sha256 === null\n ? null\n : requireExecutionSha(rawAction.before_sha256, `actions[${index}].before_sha256`);\n if (\n (expectedOperation === 'insert' && beforeSha !== null) ||\n (expectedOperation === 'save_draft' && beforeSha === null)\n ) {\n executionContractError(`actions[${index}].before_sha256 contradicts expected_operation.`);\n }\n const dependencies = rawAction.dependency_action_ids.map((dependency, dependencyIndex) =>\n requireExecutionToken(\n dependency,\n `actions[${index}].dependency_action_ids[${dependencyIndex}]`,\n ),\n );\n if (\n new Set(dependencies).size !== dependencies.length ||\n dependencies.some((id) => !seen.has(id))\n ) {\n executionContractError(\n `actions[${index}].dependency_action_ids must be unique earlier actions.`,\n );\n }\n actions.push({\n action_id: actionId,\n desired_sha256: requireExecutionSha(\n rawAction.desired_sha256,\n `actions[${index}].desired_sha256`,\n ),\n expected_operation: expectedOperation,\n table: table as DatasetCommandTable,\n id: requireExecutionToken(rawAction.id, `actions[${index}].id`),\n version: requireExecutionToken(rawAction.version, `actions[${index}].version`),\n before_sha256: beforeSha,\n dependency_action_ids: dependencies,\n });\n seen.add(actionId);\n }\n return {\n schema_version: 'dataset-save-draft-execution-contract.v1',\n execution_id: executionId,\n project_ref: projectRef,\n target_mode: 'owner_draft',\n owner: { user_id: ownerUserId, email: ownerEmail, state_code: 0 },\n actions,\n };\n}\n\nfunction bindExecutionContractRows(\n contract: DatasetSaveDraftExecutionContract,\n rows: PreparedDatasetRow[],\n): void {\n if (contract.actions.length !== rows.length) {\n executionContractError('Execution contract action count does not match selected rows.');\n }\n contract.actions.forEach((action, index) => {\n const row = rows[index];\n const payloadIdentity = row?.config\n ? extractIdentity(row.payload, {}, row.config)\n : { id: null, version: null };\n if (\n !row ||\n row.config?.table !== action.table ||\n row.id !== action.id ||\n row.version !== action.version ||\n payloadIdentity.id !== action.id ||\n payloadIdentity.version !== action.version ||\n sha256Json(row.payload) !== action.desired_sha256\n ) {\n executionContractError(\n `Execution contract action ${action.action_id} does not bind row ${index}.`,\n );\n }\n });\n}\n\nfunction executionActionBindingSha256(action: DatasetSaveDraftExecutionAction): string {\n return sha256Json({\n schema_version: 'dataset-save-draft-action-binding.v1',\n action_id: action.action_id,\n desired_sha256: action.desired_sha256,\n expected_operation: action.expected_operation,\n table: action.table,\n id: action.id,\n version: action.version,\n before_sha256: action.before_sha256,\n });\n}\n\nfunction executionLedgerRoot(\n env: NodeJS.ProcessEnv,\n contract: DatasetSaveDraftExecutionContract,\n): string {\n const ownerScopeSha256 = sha256Json({\n schema_version: 'dataset-save-draft-owner-scope.v1',\n project_ref: contract.project_ref,\n owner: contract.owner,\n });\n return path.join(\n resolveFlowIdentityApprovalClaimRoot({ env }),\n 'execution-ledgers',\n 'dataset-save-draft',\n 'v1',\n ownerScopeSha256,\n );\n}\n\nfunction executionLedgerPath(ledgerRoot: string, action: DatasetSaveDraftExecutionAction): string {\n const actionIdentitySha256 = sha256Json({\n schema_version: 'dataset-save-draft-action-identity.v1',\n action_id: action.action_id,\n desired_sha256: action.desired_sha256,\n });\n return path.join(path.resolve(ledgerRoot), `${actionIdentitySha256}.events.jsonl`);\n}\n\nfunction eventWithoutSha(\n event: DatasetSaveDraftLedgerEvent,\n): Omit<DatasetSaveDraftLedgerEvent, 'event_sha256'> {\n const core: Partial<DatasetSaveDraftLedgerEvent> = { ...event };\n delete core.event_sha256;\n return core as Omit<DatasetSaveDraftLedgerEvent, 'event_sha256'>;\n}\n\nfunction parseLedgerEvent(value: unknown, index: number): DatasetSaveDraftLedgerEvent {\n if (!isRecord(value)) {\n executionContractError(`Execution ledger event ${index} is not an object.`);\n }\n const event = value as DatasetSaveDraftLedgerEvent;\n if (\n event.schema_version !== 'dataset-save-draft-execution-event.v1' ||\n event.sequence !== index + 1 ||\n !SHA256_PATTERN.test(event.contract_sha256) ||\n !trimToken(event.action_id) ||\n !SHA256_PATTERN.test(event.desired_sha256) ||\n !SHA256_PATTERN.test(event.action_binding_sha256) ||\n !['attempt_emitted', 'outcome'].includes(event.event_type) ||\n !['insert', 'save_draft'].includes(event.operation) ||\n !['executed', 'unknown', null].includes(event.outcome) ||\n typeof event.recovered !== 'boolean' ||\n !trimToken(event.recorded_at_utc) ||\n !(event.previous_event_sha256 === null || SHA256_PATTERN.test(event.previous_event_sha256)) ||\n !SHA256_PATTERN.test(event.event_sha256)\n ) {\n executionContractError(`Execution ledger event ${index} has an invalid shape.`);\n }\n if (\n (event.event_type === 'attempt_emitted' && event.outcome !== null) ||\n (event.event_type === 'outcome' && event.outcome === null)\n ) {\n executionContractError(`Execution ledger event ${index} has an invalid outcome.`);\n }\n return event;\n}\n\nfunction loadExecutionLedger(\n ledgerRoot: string,\n contract: DatasetSaveDraftExecutionContract,\n): ExecutionLedgerState {\n const events = new Map<string, DatasetSaveDraftLedgerEvent[]>();\n const attempts = new Map<string, DatasetSaveDraftLedgerEvent>();\n const outcomes = new Map<string, DatasetSaveDraftLedgerEvent>();\n for (const action of contract.actions) {\n const actionEvents: DatasetSaveDraftLedgerEvent[] = [];\n const rawEvents = readJsonLinesIfPresent(executionLedgerPath(ledgerRoot, action));\n for (const [index, value] of rawEvents.entries()) {\n const event = parseLedgerEvent(value, index);\n const previous = actionEvents.at(-1) ?? null;\n if (\n event.action_id !== action.action_id ||\n event.desired_sha256 !== action.desired_sha256 ||\n event.action_binding_sha256 !== executionActionBindingSha256(action) ||\n event.operation !== action.expected_operation ||\n event.previous_event_sha256 !== (previous?.event_sha256 ?? null) ||\n event.event_sha256 !== sha256Json(eventWithoutSha(event))\n ) {\n executionContractError(\n `Execution ledger event ${index} failed its hash or action binding for ${action.action_id}.`,\n );\n }\n if (event.event_type === 'attempt_emitted') {\n if (attempts.has(event.action_id) || outcomes.has(event.action_id)) {\n executionContractError(`Execution ledger repeats attempt for ${event.action_id}.`);\n }\n attempts.set(event.action_id, event);\n } else {\n if (!attempts.has(event.action_id) || outcomes.has(event.action_id)) {\n executionContractError(\n `Execution ledger outcome ordering is invalid for ${event.action_id}.`,\n );\n }\n outcomes.set(event.action_id, event);\n }\n actionEvents.push(event);\n }\n events.set(action.action_id, actionEvents);\n }\n return { events, attempts, outcomes };\n}\n\nfunction appendExecutionEvent(options: {\n ledgerRoot: string;\n ledger: ExecutionLedgerState;\n contractSha256: string;\n action: DatasetSaveDraftExecutionAction;\n eventType: 'attempt_emitted' | 'outcome';\n outcome: 'executed' | 'unknown' | null;\n recovered: boolean;\n recordedAtUtc: string;\n}): DatasetSaveDraftLedgerEvent {\n const actionEvents = options.ledger.events.get(\n options.action.action_id,\n ) as DatasetSaveDraftLedgerEvent[];\n const core = {\n schema_version: 'dataset-save-draft-execution-event.v1' as const,\n sequence: actionEvents.length + 1,\n contract_sha256: options.contractSha256,\n action_id: options.action.action_id,\n desired_sha256: options.action.desired_sha256,\n action_binding_sha256: executionActionBindingSha256(options.action),\n event_type: options.eventType,\n operation: options.action.expected_operation,\n outcome: options.outcome,\n recovered: options.recovered,\n recorded_at_utc: options.recordedAtUtc,\n previous_event_sha256: actionEvents.at(-1)?.event_sha256 ?? null,\n };\n const event: DatasetSaveDraftLedgerEvent = { ...core, event_sha256: sha256Json(core) };\n const ledgerPath = executionLedgerPath(options.ledgerRoot, options.action);\n mkdirSync(path.dirname(ledgerPath), { recursive: true, mode: 0o700 });\n chmodSync(path.dirname(ledgerPath), 0o700);\n if (event.event_type === 'attempt_emitted') {\n const createDescriptor = openSync(ledgerPath, 'wx', 0o600);\n try {\n writeFileSync(createDescriptor, `${stableJsonText(event)}\\n`, 'utf8');\n fsyncSync(createDescriptor);\n } finally {\n closeSync(createDescriptor);\n }\n } else {\n const appendDescriptor = openSync(ledgerPath, 'a', 0o600);\n try {\n writeFileSync(appendDescriptor, `${stableJsonText(event)}\\n`, 'utf8');\n fsyncSync(appendDescriptor);\n } finally {\n closeSync(appendDescriptor);\n }\n }\n chmodSync(ledgerPath, 0o600);\n actionEvents.push(event);\n options.ledger.events.set(event.action_id, actionEvents);\n if (event.event_type === 'attempt_emitted') {\n options.ledger.attempts.set(event.action_id, event);\n } else {\n options.ledger.outcomes.set(event.action_id, event);\n }\n return event;\n}\n\nfunction projectRefFromApiBaseUrl(apiBaseUrl: string): string {\n return new URL(apiBaseUrl).hostname.split('.')[0] as string;\n}\n\nfunction decodeExecutionActor(accessToken: string): { user_id: string; email: string } {\n const payload = accessToken.split('.')[1];\n if (!payload) {\n executionContractError('Owner-session access token is not a JWT.');\n }\n let decoded: unknown;\n try {\n decoded = JSON.parse(Buffer.from(payload, 'base64url').toString('utf8'));\n } catch {\n executionContractError('Owner-session access token JWT payload is invalid.');\n }\n if (!isRecord(decoded)) {\n executionContractError('Owner-session access token JWT payload is not an object.');\n }\n return {\n user_id: requireExecutionToken(decoded.sub, 'owner-session sub'),\n email: requireExecutionToken(decoded.email, 'owner-session email').toLowerCase(),\n };\n}\n\nfunction isRecord(value: unknown): value is JsonObject {\n return typeof value === 'object' && value !== null && !Array.isArray(value);\n}\n\nfunction trimToken(value: unknown): string | null {\n if (typeof value !== 'string') {\n return null;\n }\n const trimmed = value.trim();\n return trimmed || null;\n}\n\nfunction serializeError(error: unknown): { message: string; details?: unknown } {\n if (error instanceof CliError) {\n return { message: error.message, details: error.details };\n }\n if (error instanceof Error) {\n return { message: error.message };\n }\n return { message: String(error) };\n}\n\nfunction normalizeType(\n value: string | null | undefined,\n allowReferenceOnlySupport = false,\n): DatasetSaveDraftType {\n const normalized = value?.trim().toLowerCase();\n if (!normalized || normalized === 'auto') {\n return 'auto';\n }\n if (normalized === 'contact' || normalized === 'contacts') {\n return 'contact';\n }\n if (normalized === 'source' || normalized === 'sources') {\n return 'source';\n }\n if (\n normalized === 'unitgroup' ||\n normalized === 'unitgroups' ||\n normalized === 'unit-group' ||\n normalized === 'unit-groups'\n ) {\n if (allowReferenceOnlySupport) {\n return 'unitgroup';\n }\n throw new CliError(\n 'Unit groups are reference-only support data for dataset save-draft. Select an existing database row instead of creating a custom My Data unit group.',\n {\n code: 'DATASET_SAVE_DRAFT_REFERENCE_ONLY_TYPE',\n exitCode: 2,\n details: { type: normalized },\n },\n );\n }\n if (\n normalized === 'flowproperty' ||\n normalized === 'flowproperties' ||\n normalized === 'flow-property' ||\n normalized === 'flow-properties'\n ) {\n if (allowReferenceOnlySupport) {\n return 'flowproperty';\n }\n throw new CliError(\n 'Flow properties are reference-only support data for dataset save-draft. Select an existing database row instead of creating a custom My Data flow property.',\n {\n code: 'DATASET_SAVE_DRAFT_REFERENCE_ONLY_TYPE',\n exitCode: 2,\n details: { type: normalized },\n },\n );\n }\n if (normalized === 'flow' || normalized === 'flows') {\n return 'flow';\n }\n if (normalized === 'process' || normalized === 'processes') {\n return 'process';\n }\n\n throw new CliError('Expected --type to be auto, contact, source, flow, or process.', {\n code: 'DATASET_SAVE_DRAFT_TYPE_INVALID',\n exitCode: 2,\n details: value,\n });\n}\n\nfunction unwrapPayload(row: JsonObject): JsonObject {\n for (const key of ['json_ordered', 'jsonOrdered', 'payload', 'json'] as const) {\n if (isRecord(row[key])) {\n return row[key];\n }\n }\n return row;\n}\n\nfunction detectType(payload: JsonObject): ConcreteDatasetSaveDraftType | null {\n for (const [type, config] of Object.entries(DATASET_CONFIGS)) {\n if (isRecord(payload[config.rootKey])) {\n return type as ConcreteDatasetSaveDraftType;\n }\n }\n return null;\n}\n\nfunction schemaForConfig(config: DatasetTypeConfig): {\n schema: SafeParseSchema;\n createEntity: SdkValidationFactory | null;\n} {\n const schema = (tidasSdk as Record<string, unknown>)[config.schemaName];\n if (\n !schema ||\n typeof schema !== 'object' ||\n typeof (schema as SafeParseSchema).safeParse !== 'function'\n ) {\n throw new CliError(`${String(config.schemaName)} is unavailable in @tiangong-lca/tidas-sdk.`, {\n code: 'DATASET_SAVE_DRAFT_SCHEMA_UNAVAILABLE',\n exitCode: 2,\n details: { table: config.table },\n });\n }\n const createEntity = (tidasSdk as Record<string, unknown>)[config.factoryName];\n return {\n schema: schema as SafeParseSchema,\n createEntity:\n typeof createEntity === 'function' ? (createEntity as SdkValidationFactory) : null,\n };\n}\n\nfunction validatePayload(\n payload: JsonObject,\n type: ConcreteDatasetSaveDraftType,\n config: DatasetTypeConfig,\n): DatasetSaveDraftValidationResult {\n const { schema, createEntity } = schemaForConfig(config);\n // SDK schema/entity validation may apply defaults by mutating its input. Keep validation\n // isolated so execution-contract hashing, dispatch, and readback all use the exact input.\n const validationPayload = structuredClone(payload);\n const outcome = validateSchemaWithDeepFallback(schema, validationPayload, createEntity);\n const processIssues =\n type === 'process'\n ? [\n ...collectProcessRequiredFieldIssues(validationPayload),\n ...collectProcessPlaceholderIssues(validationPayload),\n ]\n : [];\n const importIssues = type === 'process' ? [] : collectImportContentIssues(validationPayload);\n const issues: DatasetSaveDraftValidationIssue[] = [\n ...outcome.issues.map(normalizeValidationIssue),\n ...processIssues,\n ...importIssues,\n ];\n\n if (outcome.success && issues.length === 0) {\n return {\n ok: true,\n validator: `@tiangong-lca/tidas-sdk/${String(config.schemaName)}+tiangong/import-content`,\n issue_count: 0,\n issues: [],\n };\n }\n\n return {\n ok: false,\n validator: `@tiangong-lca/tidas-sdk/${String(config.schemaName)}+tiangong/import-content`,\n issue_count: issues.length,\n issues,\n };\n}\n\nfunction extractIdentity(\n payload: JsonObject,\n row: JsonObject,\n config: DatasetTypeConfig,\n): {\n id: string | null;\n version: string | null;\n} {\n const rootCandidate = payload[config.rootKey];\n const root: JsonObject = isRecord(rootCandidate) ? rootCandidate : payload;\n const informationCandidate = root[config.informationKey];\n const information: JsonObject = isRecord(informationCandidate) ? informationCandidate : {};\n const dataSetInformationCandidate = information.dataSetInformation;\n const dataSetInformation = isRecord(dataSetInformationCandidate)\n ? dataSetInformationCandidate\n : {};\n const administrativeInformation = isRecord(root.administrativeInformation)\n ? root.administrativeInformation\n : {};\n const publicationAndOwnership = isRecord(administrativeInformation.publicationAndOwnership)\n ? administrativeInformation.publicationAndOwnership\n : {};\n\n return {\n id: trimToken(row.id) ?? trimToken(dataSetInformation['common:UUID']),\n version:\n trimToken(row.version) ?? trimToken(publicationAndOwnership['common:dataSetVersion']) ?? null,\n };\n}\n\nfunction flowType(payload: JsonObject): string | null {\n const rootCandidate = payload.flowDataSet;\n const root = isRecord(rootCandidate) ? rootCandidate : payload;\n const modellingCandidate = root.modellingAndValidation;\n const modelling = isRecord(modellingCandidate) ? modellingCandidate : {};\n const lciMethodCandidate = modelling.LCIMethod;\n const lciMethod = isRecord(lciMethodCandidate) ? lciMethodCandidate : {};\n return trimToken(lciMethod.typeOfDataSet);\n}\n\nfunction isElementaryFlowPayload(payload: JsonObject): boolean {\n return flowType(payload)?.trim().toLowerCase() === 'elementary flow';\n}\n\nfunction compareVersions(left: string | null, right: string | null): number {\n if (!left && !right) {\n return 0;\n }\n if (!left) {\n return -1;\n }\n if (!right) {\n return 1;\n }\n const leftParts = left.split(/[._-]/u);\n const rightParts = right.split(/[._-]/u);\n const length = Math.max(leftParts.length, rightParts.length);\n for (let index = 0; index < length; index += 1) {\n const leftPart = leftParts[index] ?? '0';\n const rightPart = rightParts[index] ?? '0';\n const leftNumber = Number(leftPart);\n const rightNumber = Number(rightPart);\n if (Number.isFinite(leftNumber) && Number.isFinite(rightNumber)) {\n if (leftNumber !== rightNumber) {\n return leftNumber > rightNumber ? 1 : -1;\n }\n } else {\n const compared = leftPart.localeCompare(rightPart);\n if (compared !== 0) {\n return compared > 0 ? 1 : -1;\n }\n }\n }\n return 0;\n}\n\nfunction supportLookupKey(reference: {\n table: RemoteDatasetTable;\n id: string;\n version: string | null;\n}): string {\n return `${reference.table}:${reference.id}:${reference.version ?? ''}`;\n}\n\nfunction isLookupableRemoteReference(\n reference: RemoteDatasetReference,\n): reference is RemoteDatasetReference & { table: RemoteDatasetTable; id: string } {\n return Boolean(reference.table && reference.id);\n}\n\nfunction uniqueFlowRemoteReferences(payload: JsonObject): RemoteDatasetReference[] {\n const references = new Map<string, RemoteDatasetReference>();\n for (const reference of collectRemoteReferences([payload])) {\n if (reference.role !== 'reference') {\n continue;\n }\n if (reference.table && reference.id) {\n references.set(\n supportLookupKey({\n table: reference.table,\n id: reference.id,\n version: reference.version,\n }),\n reference,\n );\n } else {\n references.set(remoteReferenceFallbackKey(reference), reference);\n }\n }\n return [...references.values()];\n}\n\nfunction remoteReferenceFallbackKey(\n reference: Pick<RemoteDatasetReference, 'path' | 'type'>,\n): string {\n return `${reference.path}:${reference.type ?? 'unknown'}`;\n}\n\nasync function lookupCachedReferenceOnlySupport(options: {\n runtime: SupabaseDataRuntime;\n fetchImpl: FetchLike;\n timeoutMs: number;\n cache: Map<string, Promise<RemoteDatasetLookup>>;\n reference: RemoteDatasetReference & { table: RemoteDatasetTable; id: string };\n}): Promise<RemoteDatasetLookup> {\n const key = supportLookupKey(options.reference);\n if (!options.cache.has(key)) {\n options.cache.set(\n key,\n lookupRemoteDataset({\n runtime: options.runtime,\n fetchImpl: options.fetchImpl,\n timeoutMs: options.timeoutMs,\n request: {\n table: options.reference.table,\n id: options.reference.id,\n version: options.reference.version,\n },\n }),\n );\n }\n return options.cache.get(key) as Promise<RemoteDatasetLookup>;\n}\n\nasync function missingFlowRemoteReferences(options: {\n runtime: SupabaseDataRuntime;\n fetchImpl: FetchLike;\n timeoutMs: number;\n cache: Map<string, Promise<RemoteDatasetLookup>>;\n payload: JsonObject;\n}): Promise<MissingFlowRemoteReference[]> {\n const missing: MissingFlowRemoteReference[] = [];\n for (const reference of uniqueFlowRemoteReferences(options.payload)) {\n if (!isLookupableRemoteReference(reference)) {\n missing.push({\n table: reference.table,\n id: reference.id,\n version: reference.version,\n path: reference.path,\n short_description: reference.short_description,\n status: 'unsupported_type',\n latest_version: null,\n });\n continue;\n }\n if (!reference.version) {\n missing.push({\n table: reference.table,\n id: reference.id,\n version: null,\n path: reference.path,\n short_description: reference.short_description,\n status: 'version_missing',\n latest_version: null,\n });\n continue;\n }\n const lookup = await lookupCachedReferenceOnlySupport({ ...options, reference });\n if (!lookup.latest) {\n missing.push({\n table: reference.table,\n id: reference.id,\n version: reference.version,\n path: reference.path,\n short_description: reference.short_description,\n status: 'missing_dataset',\n latest_version: null,\n });\n } else if (!lookup.exact) {\n missing.push({\n table: reference.table,\n id: reference.id,\n version: reference.version,\n path: reference.path,\n short_description: reference.short_description,\n status: 'missing_version',\n latest_version: lookup.latest.version,\n });\n } else if (compareVersions(lookup.latest.version, reference.version) > 0) {\n missing.push({\n table: reference.table,\n id: reference.id,\n version: reference.version,\n path: reference.path,\n short_description: reference.short_description,\n status: 'version_outdated',\n latest_version: lookup.latest.version,\n });\n }\n }\n return missing;\n}\n\nfunction prepareRows(\n inputPath: string,\n rawInput: unknown | undefined,\n requestedType: DatasetSaveDraftType,\n): PreparedDatasetRow[] {\n const rows = readDatasetRowsInput(inputPath, rawInput);\n return rows.map((row, index) => {\n const payload = unwrapPayload(row);\n const type = requestedType === 'auto' ? detectType(payload) : requestedType;\n const config = type ? DATASET_CONFIGS[type] : null;\n const identity = config ? extractIdentity(payload, row, config) : { id: null, version: null };\n return {\n index,\n row,\n payload,\n type,\n config,\n id: identity.id,\n version: identity.version,\n validation: config && type ? validatePayload(payload, type, config) : null,\n };\n });\n}\n\nfunction buildFiles(outDir: string): DatasetSaveDraftReport['files'] {\n const outputDir = path.join(outDir, 'outputs', 'dataset-save-draft');\n return {\n selected_rows: path.join(outputDir, 'selected-rows.jsonl'),\n progress_jsonl: path.join(outputDir, 'progress.jsonl'),\n failures_jsonl: path.join(outputDir, 'failures.jsonl'),\n summary_json: path.join(outputDir, 'summary.json'),\n };\n}\n\nfunction defaultOutDir(inputPath: string, commit: boolean, now: Date): string {\n const mode = commit ? 'commit' : 'dry-run';\n const timestamp = now.toISOString().replace(/[:.]/gu, '').replace(/Z$/u, 'Z');\n return path.join(\n path.dirname(inputPath),\n 'artifacts',\n 'dataset-save-draft',\n `${mode}-${timestamp}`,\n );\n}\n\nfunction operationCount(rows: DatasetSaveDraftRowReport[]): Record<string, number> {\n const counts: Record<string, number> = {};\n for (const row of rows) {\n const key = row.operation ?? 'none';\n counts[key] = (counts[key] ?? 0) + 1;\n }\n return counts;\n}\n\nfunction byTable(rows: PreparedDatasetRow[]): Partial<Record<DatasetCommandTable, number>> {\n const counts: Partial<Record<DatasetCommandTable, number>> = {};\n for (const row of rows) {\n if (row.config) {\n counts[row.config.table] = (counts[row.config.table] ?? 0) + 1;\n }\n }\n return counts;\n}\n\nfunction selectedRow(row: PreparedDatasetRow): JsonObject {\n return {\n index: row.index,\n type: row.type,\n table: row.config?.table ?? null,\n id: row.id,\n version: row.version,\n validation: row.validation,\n payload: row.payload,\n };\n}\n\nfunction buildPreparedFailure(\n row: PreparedDatasetRow,\n allowReferenceOnlySupport = false,\n): DatasetSaveDraftRowReport | null {\n if (!row.type || !row.config) {\n return {\n index: row.index,\n id: row.id,\n version: row.version,\n type: row.type,\n table: null,\n status: 'failed',\n operation: 'type_unknown',\n validation: null,\n error: {\n message: 'Could not detect dataset type. Use --type or provide a supported TIDAS wrapper.',\n },\n };\n }\n\n if (REFERENCE_ONLY_SAVE_DRAFT_TYPES.has(row.type) && !allowReferenceOnlySupport) {\n return {\n index: row.index,\n id: row.id,\n version: row.version,\n type: row.type,\n table: row.config.table,\n status: 'failed',\n operation: 'reference_only_type',\n validation: row.validation,\n error: {\n message:\n 'Unit Groups and Flow Properties are reference-only support data. Rewrite references to existing database rows instead of writing these rows through dataset save-draft.',\n },\n };\n }\n\n if (!row.id || !row.version) {\n return {\n index: row.index,\n id: row.id,\n version: row.version,\n type: row.type,\n table: row.config.table,\n status: 'failed',\n operation: 'identity_missing',\n validation: row.validation,\n error: {\n message:\n 'Dataset row is missing common:UUID or common:dataSetVersion required for save-draft.',\n },\n };\n }\n\n if (!row.validation?.ok) {\n return {\n index: row.index,\n id: row.id,\n version: row.version,\n type: row.type,\n table: row.config.table,\n status: 'failed',\n operation: 'skipped_invalid',\n validation: row.validation,\n error: {\n message: `Local dataset validation failed with ${row.validation?.issue_count ?? 0} issue(s).`,\n },\n };\n }\n\n return null;\n}\n\nfunction buildVisibleRowsUrl(\n restBaseUrl: string,\n table: DatasetCommandTable,\n id: string,\n version: string,\n): string {\n const url = new URL(`${restBaseUrl.replace(/\\/+$/u, '')}/${table}`);\n url.searchParams.set('select', 'id,version,user_id,state_code');\n url.searchParams.set('id', `eq.${id}`);\n url.searchParams.set('version', `eq.${version}`);\n return url.toString();\n}\n\nfunction parseVisibleRows(payload: unknown, url: string): VisibleDatasetRow[] {\n if (!Array.isArray(payload)) {\n throw new CliError(`Supabase REST response was not a JSON array for ${url}`, {\n code: 'SUPABASE_REST_RESPONSE_INVALID',\n exitCode: 1,\n details: payload,\n });\n }\n\n return payload.map((item, index) => {\n if (!isRecord(item)) {\n throw new CliError(`Supabase REST row ${index} was not a JSON object for ${url}`, {\n code: 'SUPABASE_REST_RESPONSE_INVALID',\n exitCode: 1,\n details: item,\n });\n }\n return {\n id: trimToken(item.id) ?? '',\n version: trimToken(item.version) ?? '',\n user_id: trimToken(item.user_id),\n state_code: typeof item.state_code === 'number' ? item.state_code : null,\n };\n });\n}\n\nasync function exactVisibleRows(options: {\n client: SupabaseDataClient;\n restBaseUrl: string;\n table: DatasetCommandTable;\n id: string;\n version: string;\n}): Promise<VisibleDatasetRow[]> {\n const url = buildVisibleRowsUrl(options.restBaseUrl, options.table, options.id, options.version);\n const payload = await runSupabaseArrayQuery(\n options.client\n .from(options.table)\n .select('id,version,user_id,state_code')\n .eq('id', options.id)\n .eq('version', options.version),\n url,\n );\n return parseVisibleRows(payload, url);\n}\n\nfunction parseExecutionRows(payload: unknown, url: string): ExecutionDatasetRow[] {\n const visible = parseVisibleRows(payload, url);\n return visible.map((row, index) => {\n const raw = (payload as unknown[])[index];\n const jsonOrdered = isRecord(raw) && isRecord(raw.json_ordered) ? raw.json_ordered : null;\n return { ...row, json_ordered: jsonOrdered };\n });\n}\n\nasync function exactExecutionRows(options: {\n client: SupabaseDataClient;\n restBaseUrl: string;\n table: DatasetCommandTable;\n id: string;\n version: string;\n}): Promise<ExecutionDatasetRow[]> {\n const url = new URL(\n buildVisibleRowsUrl(options.restBaseUrl, options.table, options.id, options.version),\n );\n url.searchParams.set('select', 'id,version,user_id,state_code,json_ordered');\n const payload = await runSupabaseArrayQuery(\n options.client\n .from(options.table)\n .select('id,version,user_id,state_code,json_ordered')\n .eq('id', options.id)\n .eq('version', options.version),\n url.toString(),\n );\n return parseExecutionRows(payload, url.toString());\n}\n\nfunction exactDesiredReadback(options: {\n rows: ExecutionDatasetRow[];\n action: DatasetSaveDraftExecutionAction;\n contract: DatasetSaveDraftExecutionContract;\n}): boolean {\n const row = options.rows[0];\n return Boolean(\n options.rows.length === 1 &&\n row &&\n row.id === options.action.id &&\n row.version === options.action.version &&\n row.user_id === options.contract.owner.user_id &&\n row.state_code === 0 &&\n row.json_ordered &&\n sha256Json(row.json_ordered) === options.action.desired_sha256,\n );\n}\n\nfunction contractRowReport(options: {\n row: PreparedDatasetRow;\n action: DatasetSaveDraftExecutionAction;\n status: 'executed' | 'failed' | 'unknown' | 'blocked';\n operation: DatasetSaveDraftRowReport['operation'];\n attemptConsumed: boolean;\n readback: DatasetSaveDraftRowReport['readback'];\n error?: { message: string; details?: unknown };\n}): DatasetSaveDraftRowReport {\n return {\n index: options.row.index,\n id: options.row.id,\n version: options.row.version,\n type: options.row.type,\n table: options.action.table,\n status: options.status,\n operation: options.operation,\n validation: options.row.validation,\n action_id: options.action.action_id,\n desired_sha256: options.action.desired_sha256,\n attempt_consumed: options.attemptConsumed,\n replayed: false,\n readback: options.readback,\n ...(options.error ? { error: options.error } : {}),\n };\n}\n\nasync function finalizeAttemptedAction(options: {\n row: PreparedDatasetRow;\n action: DatasetSaveDraftExecutionAction;\n contract: DatasetSaveDraftExecutionContract;\n contractSha256: string;\n ledgerRoot: string;\n ledger: ExecutionLedgerState;\n client: SupabaseDataClient;\n restBaseUrl: string;\n now: () => string;\n recovered: boolean;\n}): Promise<DatasetSaveDraftRowReport> {\n const desiredExact = await readbackIsDesiredExact(options);\n appendExecutionEvent({\n ledgerRoot: options.ledgerRoot,\n ledger: options.ledger,\n contractSha256: options.contractSha256,\n action: options.action,\n eventType: 'outcome',\n outcome: desiredExact ? 'executed' : 'unknown',\n recovered: options.recovered,\n recordedAtUtc: options.now(),\n });\n return contractRowReport({\n row: options.row,\n action: options.action,\n status: desiredExact ? 'executed' : 'unknown',\n operation:\n desiredExact && options.recovered\n ? 'recovered_exact_readback'\n : options.action.expected_operation,\n attemptConsumed: true,\n readback: desiredExact ? 'desired_exact' : 'not_desired',\n ...(desiredExact\n ? {}\n : {\n error: {\n message:\n 'A prior protected request was emitted without a terminal desired-exact readback; the action is UNKNOWN and will never be replayed.',\n },\n }),\n });\n}\n\nasync function readbackIsDesiredExact(options: {\n client: SupabaseDataClient;\n restBaseUrl: string;\n action: DatasetSaveDraftExecutionAction;\n contract: DatasetSaveDraftExecutionContract;\n}): Promise<boolean> {\n try {\n return exactDesiredReadback({\n rows: await exactExecutionRows({\n client: options.client,\n restBaseUrl: options.restBaseUrl,\n table: options.action.table,\n id: options.action.id,\n version: options.action.version,\n }),\n action: options.action,\n contract: options.contract,\n });\n } catch {\n return false;\n }\n}\n\nfunction normalizeExecutionMaxParallel(value: number | null | undefined): number {\n const normalized = value ?? 1;\n if (!Number.isInteger(normalized) || normalized < 1 || normalized > 8) {\n executionContractError('Execution contract --max-parallel must be an integer from 1 to 8.');\n }\n return normalized;\n}\n\nfunction executionSerialPrefixLength(contract: DatasetSaveDraftExecutionContract): number {\n const actionIndexes = new Map(\n contract.actions.map((action, index) => [action.action_id, index] as const),\n );\n let highestDependencyIndex = -1;\n for (const action of contract.actions) {\n for (const dependencyActionId of action.dependency_action_ids) {\n highestDependencyIndex = Math.max(\n highestDependencyIndex,\n actionIndexes.get(dependencyActionId) as number,\n );\n }\n }\n return highestDependencyIndex + 1;\n}\n\nfunction assertParallelSuffixTargetsAreUnique(\n contract: DatasetSaveDraftExecutionContract,\n serialPrefixLength: number,\n): void {\n const targets = new Set<string>();\n for (const action of contract.actions.slice(serialPrefixLength)) {\n const target = `${action.table}\\u0000${action.id}\\u0000${action.version}`;\n if (targets.has(target)) {\n executionContractError(\n 'Execution contract parallel suffix contains a repeated table/id/version target.',\n );\n }\n targets.add(target);\n }\n}\n\nfunction executionBatchActionContent(action: DatasetSaveDraftExecutionAction): BatchJsonValue {\n return {\n action_id: action.action_id,\n desired_sha256: action.desired_sha256,\n expected_operation: action.expected_operation,\n table: action.table,\n id: action.id,\n version: action.version,\n before_sha256: action.before_sha256,\n dependency_action_ids: [...action.dependency_action_ids],\n };\n}\n\nasync function renewExecutionOwnerToken(options: {\n runtime: SupabaseDataRuntime;\n commandTransport: NonNullable<Awaited<ReturnType<typeof buildDatasetCommandTransport>>>;\n contract: DatasetSaveDraftExecutionContract;\n}): Promise<void> {\n const accessToken = await options.runtime.getAccessToken();\n const actor = decodeExecutionActor(accessToken);\n if (\n actor.user_id !== options.contract.owner.user_id ||\n actor.email !== options.contract.owner.email\n ) {\n executionContractError('Renewed owner session does not match the execution contract.');\n }\n options.commandTransport.accessToken = accessToken;\n}\n\nasync function runExecutionContractBatch(options: {\n contractPath: string;\n contract: DatasetSaveDraftExecutionContract;\n preparedRows: PreparedDatasetRow[];\n allowReferenceOnlySupport: boolean;\n files: DatasetSaveDraftReport['files'];\n inputPath: string;\n requestedType: DatasetSaveDraftType;\n outDir: string;\n env: NodeJS.ProcessEnv;\n runtime: SupabaseDataRuntime;\n commandTransport: NonNullable<Awaited<ReturnType<typeof buildDatasetCommandTransport>>>;\n dataClient: NonNullable<ReturnType<typeof createSupabaseDataClient>>;\n fetchImpl: FetchLike;\n timeoutMs: number;\n now: () => string;\n maxParallel: number;\n}): Promise<DatasetSaveDraftReport> {\n const contractSha256 = sha256Json(options.contract);\n const ledgerRoot = executionLedgerRoot(options.env, options.contract);\n const ledger = loadExecutionLedger(ledgerRoot, options.contract);\n const actor = decodeExecutionActor(options.commandTransport.accessToken);\n if (\n projectRefFromApiBaseUrl(options.runtime.apiBaseUrl) !== options.contract.project_ref ||\n actor.user_id !== options.contract.owner.user_id ||\n actor.email !== options.contract.owner.email\n ) {\n executionContractError('Owner session or project does not match the execution contract.');\n }\n options.files.execution_ledger = ledgerRoot;\n const serialPrefixLength = executionSerialPrefixLength(options.contract);\n if (options.maxParallel > 1) {\n assertParallelSuffixTargetsAreUnique(options.contract, serialPrefixLength);\n }\n const reports: Array<DatasetSaveDraftRowReport | undefined> = new Array(\n options.contract.actions.length,\n );\n const statuses = new Map<string, DatasetSaveDraftRowReport['status']>();\n const referenceOnlySupportCache = new Map<string, Promise<RemoteDatasetLookup>>();\n\n const executeAction = async (index: number): Promise<void> => {\n const action = options.contract.actions[index] as DatasetSaveDraftExecutionAction;\n const row = options.preparedRows[index] as PreparedDatasetRow;\n const storeReport = (report: DatasetSaveDraftRowReport): void => {\n reports[index] = report;\n statuses.set(action.action_id, report.status);\n };\n const preparedFailure = buildPreparedFailure(row, options.allowReferenceOnlySupport);\n if (preparedFailure) {\n const report = {\n ...preparedFailure,\n action_id: action.action_id,\n desired_sha256: action.desired_sha256,\n attempt_consumed: false,\n replayed: false as const,\n readback: 'not_performed' as const,\n };\n storeReport(report);\n return;\n }\n\n const priorOutcome = ledger.outcomes.get(action.action_id);\n if (priorOutcome) {\n const desiredStillExact =\n priorOutcome.outcome === 'executed' &&\n (await readbackIsDesiredExact({\n client: options.dataClient.client,\n restBaseUrl: options.dataClient.restBaseUrl,\n action,\n contract: options.contract,\n }));\n const status = desiredStillExact ? 'executed' : 'unknown';\n const report = contractRowReport({\n row,\n action,\n status,\n operation: action.expected_operation,\n attemptConsumed: true,\n readback: desiredStillExact ? 'desired_exact' : 'not_desired',\n ...(status === 'unknown'\n ? {\n error: {\n message:\n priorOutcome.outcome === 'unknown'\n ? 'Terminal UNKNOWN action retained; replay is forbidden.'\n : 'A terminal success no longer has exact desired owner readback; replay is forbidden.',\n },\n }\n : {}),\n });\n storeReport(report);\n return;\n }\n\n if (ledger.attempts.has(action.action_id)) {\n const report = await finalizeAttemptedAction({\n row,\n action,\n contract: options.contract,\n contractSha256,\n ledgerRoot,\n ledger,\n client: options.dataClient.client,\n restBaseUrl: options.dataClient.restBaseUrl,\n now: options.now,\n recovered: true,\n });\n storeReport(report);\n return;\n }\n\n const blockingDependencies = action.dependency_action_ids.filter(\n (dependency) => statuses.get(dependency) !== 'executed',\n );\n if (blockingDependencies.length > 0) {\n const report = contractRowReport({\n row,\n action,\n status: 'blocked',\n operation: 'blocked_dependency',\n attemptConsumed: false,\n readback: 'not_performed',\n error: {\n message: 'Action dependencies are not terminal successes; no request was emitted.',\n details: { dependency_action_ids: blockingDependencies },\n },\n });\n storeReport(report);\n return;\n }\n\n let beforeRows: ExecutionDatasetRow[];\n let transportFailed = false;\n try {\n beforeRows = await exactExecutionRows({\n client: options.dataClient.client,\n restBaseUrl: options.dataClient.restBaseUrl,\n table: action.table,\n id: action.id,\n version: action.version,\n });\n const before = beforeRows[0];\n const observedOperation = beforeRows.length === 0 ? 'insert' : 'save_draft';\n const beforeExact = Boolean(\n beforeRows.length === 1 &&\n before &&\n before.id === action.id &&\n before.version === action.version &&\n before.user_id === options.contract.owner.user_id &&\n before.state_code === 0 &&\n before.json_ordered &&\n sha256Json(before.json_ordered) === action.before_sha256,\n );\n if (\n beforeRows.length > 1 ||\n observedOperation !== action.expected_operation ||\n (observedOperation === 'save_draft' && !beforeExact)\n ) {\n throw new CliError('Execution action before-state or expected operation drifted.', {\n code: 'DATASET_SAVE_DRAFT_EXECUTION_BEFORE_DRIFT',\n exitCode: 1,\n });\n }\n if (row.type === 'flow') {\n const unresolvedReferences = await missingFlowRemoteReferences({\n runtime: options.runtime,\n fetchImpl: options.fetchImpl,\n timeoutMs: options.timeoutMs,\n cache: referenceOnlySupportCache,\n payload: row.payload,\n });\n if (unresolvedReferences.length > 0) {\n throw new CliError('Flow execution action has unresolved remote references.', {\n code: 'DATASET_SAVE_DRAFT_REMOTE_REFERENCE_UNRESOLVED',\n exitCode: 1,\n details: { references: unresolvedReferences },\n });\n }\n }\n await renewExecutionOwnerToken({\n runtime: options.runtime,\n commandTransport: options.commandTransport,\n contract: options.contract,\n });\n } catch (error) {\n const report = contractRowReport({\n row,\n action,\n status: 'failed',\n operation: action.expected_operation,\n attemptConsumed: false,\n readback: 'not_performed',\n error: serializeError(error),\n });\n storeReport(report);\n return;\n }\n\n try {\n const beforeDispatch = () => {\n appendExecutionEvent({\n ledgerRoot,\n ledger,\n contractSha256,\n action,\n eventType: 'attempt_emitted',\n outcome: null,\n recovered: false,\n recordedAtUtc: options.now(),\n });\n };\n if (action.expected_operation === 'insert') {\n await createDatasetRecord({\n transport: options.commandTransport,\n table: action.table,\n id: action.id,\n payload: row.payload,\n extraData: { ruleVerification: true },\n beforeDispatch,\n });\n } else {\n await saveDraftDatasetRecord({\n transport: options.commandTransport,\n table: action.table,\n id: action.id,\n version: action.version,\n payload: row.payload,\n extraData: { ruleVerification: true },\n beforeDispatch,\n });\n }\n } catch (error) {\n if (error instanceof CliError && error.code === 'DATASET_COMMAND_BEFORE_DISPATCH_FAILED') {\n throw error;\n }\n // Once emission is durably recorded, transport outcomes are resolved by readback only.\n transportFailed = true;\n }\n const report = await finalizeAttemptedAction({\n row,\n action,\n contract: options.contract,\n contractSha256,\n ledgerRoot,\n ledger,\n client: options.dataClient.client,\n restBaseUrl: options.dataClient.restBaseUrl,\n now: options.now,\n recovered: transportFailed,\n });\n storeReport(report);\n };\n\n for (let index = 0; index < serialPrefixLength; index += 1) {\n await executeAction(index);\n }\n\n const parallelIndexes = options.contract.actions\n .slice(serialPrefixLength)\n .map((_action, suffixIndex) => serialPrefixLength + suffixIndex);\n const parallelBatch = await runBoundedBatch({\n contract: createBatchContract({\n identity: {\n schema: 'dataset-save-draft.parallel-suffix.v1',\n execution_id: options.contract.execution_id,\n contract_sha256: contractSha256,\n },\n content: parallelIndexes.map((index) =>\n executionBatchActionContent(\n options.contract.actions[index] as DatasetSaveDraftExecutionAction,\n ),\n ),\n policy: {\n max_parallel: options.maxParallel,\n serial_prefix_actions: serialPrefixLength,\n mutation_retry: 'none',\n fatal_stop: true,\n },\n }),\n items: parallelIndexes,\n getItemIdentity: (index) =>\n (options.contract.actions[index] as DatasetSaveDraftExecutionAction).action_id,\n projectItemContent: (index) =>\n executionBatchActionContent(\n options.contract.actions[index] as DatasetSaveDraftExecutionAction,\n ),\n projectItemPolicy: (index) => {\n const action = options.contract.actions[index] as DatasetSaveDraftExecutionAction;\n return {\n contract_sha256: contractSha256,\n target_mode: 'owner_draft',\n expected_operation: action.expected_operation,\n };\n },\n getExclusiveKey: ({ item: index }) => {\n const action = options.contract.actions[index] as DatasetSaveDraftExecutionAction;\n return JSON.stringify([action.table, action.id, action.version]);\n },\n mode: 'mutation',\n maxConcurrency: options.maxParallel,\n execute: async ({ item: index }) => executeAction(index),\n shouldStop: ({ last_result: lastResult }) => lastResult.status === 'failed',\n });\n const fatalWorkerResult = parallelBatch.results_completion_order.find(\n (result) => result.status === 'failed',\n );\n if (fatalWorkerResult?.status === 'failed') {\n throw fatalWorkerResult.error;\n }\n\n const completedReports = reports as DatasetSaveDraftRowReport[];\n const failures = completedReports.filter((row) =>\n ['failed', 'unknown', 'blocked'].includes(row.status),\n );\n writeJsonLinesArtifact(options.files.progress_jsonl, completedReports);\n writeJsonLinesArtifact(options.files.failures_jsonl, failures);\n const unknown = completedReports.filter((row) => row.status === 'unknown').length;\n const failed = completedReports.filter((row) => row.status === 'failed').length;\n const blocked = completedReports.filter((row) => row.status === 'blocked').length;\n const report: DatasetSaveDraftReport = {\n schema_version: 2,\n generated_at_utc: options.now(),\n input_path: options.inputPath,\n requested_type: options.requestedType,\n out_dir: options.outDir,\n commit: true,\n mode: 'commit',\n status:\n unknown > 0\n ? 'completed_with_unknowns'\n : failed + blocked > 0\n ? 'completed_with_failures'\n : 'completed',\n counts: {\n selected: options.preparedRows.length,\n prepared: 0,\n executed: completedReports.filter((row) => row.status === 'executed').length,\n failed,\n unknown,\n blocked,\n attempts_consumed: ledger.attempts.size,\n by_table: byTable(options.preparedRows),\n operations: operationCount(completedReports),\n },\n files: options.files,\n rows: completedReports,\n execution_contract: {\n path: path.resolve(options.contractPath),\n sha256: contractSha256,\n execution_id: options.contract.execution_id,\n target_mode: 'owner_draft',\n max_parallel: options.maxParallel,\n serial_prefix_actions: serialPrefixLength,\n parallel_suffix_actions: options.contract.actions.length - serialPrefixLength,\n },\n };\n writeJsonArtifact(options.files.summary_json, report);\n return report;\n}\n\nexport async function runDatasetSaveDraft(\n options: RunDatasetSaveDraftOptions,\n): Promise<DatasetSaveDraftReport> {\n const now = options.now ?? new Date();\n const inputPath = path.resolve(options.inputPath);\n const commit = options.commit === true;\n const allowReferenceOnlySupport =\n options.allowReferenceOnlySupport === true ||\n (options.env?.TIANGONG_ALLOW_ACCOUNT_LOCAL_SUPPORT ?? '') === '1';\n const requestedType = normalizeType(options.type, allowReferenceOnlySupport);\n const outDir = path.resolve(options.outDir ?? defaultOutDir(inputPath, commit, now));\n const files = buildFiles(outDir);\n const preparedRows = prepareRows(inputPath, options.rawInput, requestedType);\n const timeoutMs = options.timeoutMs ?? DEFAULT_TIMEOUT_MS;\n const maxParallel = normalizeExecutionMaxParallel(options.maxParallel);\n const executionContractPath = options.executionContractPath\n ? path.resolve(options.executionContractPath)\n : null;\n const executionContract = executionContractPath\n ? parseExecutionContract(\n readJsonFile(executionContractPath, 'Dataset save-draft execution contract'),\n )\n : null;\n\n if (executionContract && !commit) {\n executionContractError('Execution contract mode requires --commit.');\n }\n if (!executionContract && maxParallel !== 1) {\n executionContractError('--max-parallel greater than 1 requires --execution-contract.');\n }\n if (executionContract) {\n bindExecutionContractRows(executionContract, preparedRows);\n }\n\n if (commit && (!options.env || !options.fetchImpl)) {\n throw new CliError('Dataset save-draft commit requires env and fetch runtime bindings.', {\n code: 'DATASET_SAVE_DRAFT_RUNTIME_REQUIRED',\n exitCode: 2,\n });\n }\n\n writeJsonLinesArtifact(files.selected_rows, preparedRows.map(selectedRow));\n\n const runtime =\n commit && options.env && options.fetchImpl\n ? createSupabaseDataRuntime({\n runtime: requireSupabaseRestRuntime(options.env),\n fetchImpl: options.fetchImpl,\n timeoutMs,\n })\n : null;\n const commandTransport =\n runtime && options.fetchImpl\n ? await buildDatasetCommandTransport({\n runtime,\n fetchImpl: options.fetchImpl,\n timeoutMs,\n })\n : null;\n const dataClient =\n runtime && options.fetchImpl\n ? createSupabaseDataClient(runtime, options.fetchImpl, timeoutMs)\n : null;\n const referenceOnlySupportCache = new Map<string, Promise<RemoteDatasetLookup>>();\n\n if (executionContract && executionContractPath) {\n return runExecutionContractBatch({\n contractPath: executionContractPath,\n contract: executionContract,\n preparedRows,\n allowReferenceOnlySupport,\n files,\n inputPath,\n requestedType,\n outDir,\n env: options.env!,\n runtime: runtime!,\n commandTransport: commandTransport!,\n dataClient: dataClient!,\n fetchImpl: options.fetchImpl!,\n timeoutMs,\n now: () => now.toISOString(),\n maxParallel,\n });\n }\n\n const reports: DatasetSaveDraftRowReport[] = [];\n for (const row of preparedRows) {\n const preparedFailure = buildPreparedFailure(row, allowReferenceOnlySupport);\n if (preparedFailure) {\n reports.push(preparedFailure);\n continue;\n }\n\n const baseReport: DatasetSaveDraftRowReport = {\n index: row.index,\n id: row.id,\n version: row.version,\n type: row.type,\n table: row.config!.table,\n status: 'prepared',\n operation: 'would_sync',\n validation: row.validation,\n };\n\n if (!commit) {\n reports.push(baseReport);\n continue;\n }\n\n try {\n const visibleRows = await exactVisibleRows({\n client: dataClient!.client,\n restBaseUrl: dataClient!.restBaseUrl,\n table: row.config!.table,\n id: row.id!,\n version: row.version!,\n });\n const visibleRow = visibleRows[0] ?? null;\n if (row.type === 'flow') {\n if (!visibleRow && isElementaryFlowPayload(row.payload) && !allowReferenceOnlySupport) {\n reports.push({\n ...baseReport,\n status: 'failed',\n operation: 'elementary_flow_insert_blocked',\n visible_row: null,\n error: {\n message:\n 'Elementary flows are reference-only for dataset save-draft. Resolve the flow with remote hybrid search and reference the existing database row instead of creating a My Data flow.',\n details: {\n code: 'DATASET_SAVE_DRAFT_ELEMENTARY_FLOW_INSERT_BLOCKED',\n },\n },\n });\n continue;\n }\n\n const unresolvedReferences = await missingFlowRemoteReferences({\n runtime: runtime!,\n fetchImpl: options.fetchImpl!,\n timeoutMs,\n cache: referenceOnlySupportCache,\n payload: row.payload,\n });\n if (unresolvedReferences.length > 0) {\n reports.push({\n ...baseReport,\n status: 'failed',\n operation: 'remote_reference_unresolved',\n visible_row: visibleRow,\n error: {\n message:\n 'Flow save-draft commit requires all referenced datasets to already resolve in the remote database.',\n details: {\n code: 'DATASET_SAVE_DRAFT_REMOTE_REFERENCE_UNRESOLVED',\n references: unresolvedReferences,\n },\n },\n });\n continue;\n }\n }\n if (visibleRow) {\n await saveDraftDatasetRecord({\n transport: commandTransport!,\n table: row.config!.table,\n id: row.id!,\n version: row.version!,\n payload: row.payload,\n extraData: { ruleVerification: true },\n });\n reports.push({\n ...baseReport,\n status: 'executed',\n operation: 'save_draft',\n visible_row: visibleRow,\n });\n } else {\n await createDatasetRecord({\n transport: commandTransport!,\n table: row.config!.table,\n id: row.id!,\n payload: row.payload,\n extraData: { ruleVerification: true },\n });\n reports.push({\n ...baseReport,\n status: 'executed',\n operation: 'insert',\n visible_row: null,\n });\n }\n } catch (error) {\n reports.push({\n ...baseReport,\n status: 'failed',\n error: serializeError(error),\n });\n }\n }\n\n const failures = reports.filter((row) => row.status === 'failed');\n writeJsonLinesArtifact(files.progress_jsonl, reports);\n writeJsonLinesArtifact(files.failures_jsonl, failures);\n\n const report: DatasetSaveDraftReport = {\n schema_version: 1,\n generated_at_utc: now.toISOString(),\n input_path: inputPath,\n requested_type: requestedType,\n out_dir: outDir,\n commit,\n mode: commit ? 'commit' : 'dry_run',\n status: failures.length > 0 ? 'completed_with_failures' : 'completed',\n counts: {\n selected: preparedRows.length,\n prepared: reports.filter((row) => row.status === 'prepared').length,\n executed: reports.filter((row) => row.status === 'executed').length,\n failed: failures.length,\n by_table: byTable(preparedRows),\n operations: operationCount(reports),\n },\n files,\n rows: reports,\n };\n\n writeJsonArtifact(files.summary_json, report);\n return report;\n}\n\nexport const __testInternals = {\n DATASET_CONFIGS,\n buildFiles,\n buildPreparedFailure,\n buildVisibleRowsUrl,\n byTable,\n compareVersions,\n defaultOutDir,\n detectType,\n decodeExecutionActor,\n bindExecutionContractRows,\n executionLedgerRoot,\n executionLedgerPath,\n executionActionBindingSha256,\n loadExecutionLedger,\n exactDesiredReadback,\n extractIdentity,\n flowType,\n isElementaryFlowPayload,\n isLookupableRemoteReference,\n missingFlowRemoteReferences,\n normalizeValidationIssue,\n normalizeType,\n operationCount,\n parseVisibleRows,\n parseExecutionContract,\n parseExecutionRows,\n parseLedgerEvent,\n projectRefFromApiBaseUrl,\n prepareRows,\n remoteReferenceFallbackKey,\n selectedRow,\n serializeError,\n supportLookupKey,\n unwrapPayload,\n uniqueFlowRemoteReferences,\n validatePayload,\n};\n"]}
|