@tiangong-lca/cli 0.0.31 → 0.0.32

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.
@@ -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":["import { 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 };\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};\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\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}): 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 reports: DatasetSaveDraftRowReport[] = [];\n const statuses = new Map<string, DatasetSaveDraftRowReport['status']>();\n const referenceOnlySupportCache = new Map<string, Promise<RemoteDatasetLookup>>();\n\n for (const [index, action] of options.contract.actions.entries()) {\n const row = options.preparedRows[index] as PreparedDatasetRow;\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 reports.push(report);\n statuses.set(action.action_id, report.status);\n continue;\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 reports.push(report);\n statuses.set(action.action_id, status);\n continue;\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 reports.push(report);\n statuses.set(action.action_id, report.status);\n continue;\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 reports.push(report);\n statuses.set(action.action_id, report.status);\n continue;\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 } 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 reports.push(report);\n statuses.set(action.action_id, report.status);\n continue;\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 reports.push(report);\n statuses.set(action.action_id, report.status);\n }\n\n const failures = reports.filter((row) => ['failed', 'unknown', 'blocked'].includes(row.status));\n writeJsonLinesArtifact(options.files.progress_jsonl, reports);\n writeJsonLinesArtifact(options.files.failures_jsonl, failures);\n const unknown = reports.filter((row) => row.status === 'unknown').length;\n const failed = reports.filter((row) => row.status === 'failed').length;\n const blocked = reports.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: reports.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(reports),\n },\n files: options.files,\n rows: reports,\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 },\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 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) {\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 });\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":["import { 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"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tiangong-lca/cli",
3
- "version": "0.0.31",
3
+ "version": "0.0.32",
4
4
  "description": "Unified TianGong LCA CLI with direct REST adapters and low-entropy command surface.",
5
5
  "repository": {
6
6
  "type": "git",