@tiangong-lca/cli 0.0.32 → 0.0.33
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +5 -0
- package/dist/src/cli.js +20 -1
- package/dist/src/cli.js.map +1 -1
- package/dist/src/lib/dataset-maintenance-apply.js +713 -7
- package/dist/src/lib/dataset-maintenance-apply.js.map +1 -1
- package/dist/src/lib/dataset-maintenance-remote.js +34 -0
- package/dist/src/lib/dataset-maintenance-remote.js.map +1 -1
- package/package.json +1 -1
|
@@ -278,6 +278,40 @@ export async function fetchMaintenanceAccountTableRows(options) {
|
|
|
278
278
|
},
|
|
279
279
|
});
|
|
280
280
|
}
|
|
281
|
+
/**
|
|
282
|
+
* Read every row visible to the authenticated owner for one maintenance table.
|
|
283
|
+
*
|
|
284
|
+
* This deliberately omits a user_id predicate. It is a SELECT-only RLS view used
|
|
285
|
+
* by destructive maintenance admission to prove that a draft flow has no inbound
|
|
286
|
+
* reference from either an owner row or another row visible to the owner session.
|
|
287
|
+
*/
|
|
288
|
+
export async function fetchMaintenanceVisibleTableRows(options) {
|
|
289
|
+
const pageSize = normalizeMaintenancePageSize(options.pageSize);
|
|
290
|
+
return fetchCompletePostgrestPages({
|
|
291
|
+
table: options.table,
|
|
292
|
+
requestedPageSize: pageSize,
|
|
293
|
+
rowIdentity: (row) => `${row.id}\u0000${row.version}\u0000${row.user_id ?? ''}\u0000${row.state_code === null ? '' : String(row.state_code).padStart(12, '0')}`,
|
|
294
|
+
fetchPage: async (offset) => {
|
|
295
|
+
const url = new URL(`${options.context.rest_base_url}/${options.table}`);
|
|
296
|
+
url.searchParams.set('select', selectForTable(options.table, options.includeJson));
|
|
297
|
+
url.searchParams.set('order', 'id.asc,version.asc,user_id.asc.nullsfirst,state_code.asc.nullsfirst');
|
|
298
|
+
url.searchParams.set('limit', String(pageSize));
|
|
299
|
+
url.searchParams.set('offset', String(offset));
|
|
300
|
+
const sourceUrl = url.toString();
|
|
301
|
+
const response = await fetchJsonResponse({
|
|
302
|
+
context: options.context,
|
|
303
|
+
url: sourceUrl,
|
|
304
|
+
init: { headers: { Prefer: 'count=exact' } },
|
|
305
|
+
label: `${options.table} visible maintenance snapshot`,
|
|
306
|
+
});
|
|
307
|
+
return {
|
|
308
|
+
rows: normalizeRemoteRows(options.table, response.body, sourceUrl, options.includeJson),
|
|
309
|
+
source_url: sourceUrl,
|
|
310
|
+
content_range: response.headers.get('content-range'),
|
|
311
|
+
};
|
|
312
|
+
},
|
|
313
|
+
});
|
|
314
|
+
}
|
|
281
315
|
async function invokeMaintenanceRpc(options) {
|
|
282
316
|
const url = `${options.context.rest_base_url}/rpc/${options.rpc}`;
|
|
283
317
|
const redactResponseDetails = options.rpc.startsWith('cmd_dataset_flow_identity_');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dataset-maintenance-remote.js","sourceRoot":"","sources":["../../../src/lib/dataset-maintenance-remote.ts"],"names":[],"mappings":"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","sourcesContent":["import { CliError } from './errors.js';\nimport type { FetchLike, ResponseLike } from './http.js';\nimport {\n buildSnapshotCompleteness,\n fetchCompletePostgrestPages,\n type DatasetMaintenanceTableCompleteness,\n type DatasetMaintenanceSnapshotCompleteness,\n} from './dataset-maintenance-pagination.js';\nimport {\n buildSupabaseAuthHeaders,\n deriveSupabaseProjectBaseUrl,\n requireSupabaseRestRuntime,\n} from './supabase-client.js';\nimport { resolveSupabaseUserSession } from './supabase-session.js';\nimport {\n isJsonObject,\n MAINTENANCE_SCAN_TABLES,\n type DatasetMaintenanceMutableTable,\n type DatasetMaintenanceRemoteRow,\n type DatasetMaintenanceScanTable,\n type JsonObject,\n} from './dataset-maintenance-contract.js';\nimport { assertFlowIdentityWireJson } from './dataset-maintenance-flow-identity-wire.js';\n\nconst DEFAULT_PAGE_SIZE = 1_000;\nconst DEFAULT_TIMEOUT_MS = 10_000;\n\nexport type DatasetMaintenanceRemoteContext = {\n project_ref: string;\n rest_base_url: string;\n publishable_key: string;\n access_token: string;\n account: {\n user_id: string;\n email: string;\n session_source: string;\n };\n fetch_impl: FetchLike;\n timeout_ms: number;\n};\n\nexport type DatasetMaintenanceDerivativeRemoteRow = {\n table: 'flows' | 'processes';\n id: string;\n version: string;\n user_id: string;\n state_code: number;\n raw: JsonObject;\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 normalizeStateCode(value: unknown): number | null {\n if (typeof value === 'number' && Number.isInteger(value)) {\n return value;\n }\n return typeof value === 'string' && /^-?\\d+$/u.test(value.trim())\n ? Number.parseInt(value.trim(), 10)\n : null;\n}\n\nexport function normalizeMaintenancePageSize(value?: number): number {\n const normalized = value ?? DEFAULT_PAGE_SIZE;\n if (!Number.isInteger(normalized) || normalized < 1 || normalized > 5_000) {\n throw new CliError('Maintenance page size must be an integer between 1 and 5000.', {\n code: 'DATASET_MAINTENANCE_PAGE_SIZE_INVALID',\n exitCode: 2,\n details: value,\n });\n }\n return normalized;\n}\n\nexport function normalizeMaintenanceTimeout(value?: number): number {\n const normalized = value ?? DEFAULT_TIMEOUT_MS;\n if (!Number.isInteger(normalized) || normalized < 1) {\n throw new CliError('Maintenance timeout must be a positive integer.', {\n code: 'DATASET_MAINTENANCE_TIMEOUT_INVALID',\n exitCode: 2,\n details: value,\n });\n }\n return normalized;\n}\n\nasync function fetchJsonResponse(options: {\n context: Pick<\n DatasetMaintenanceRemoteContext,\n 'publishable_key' | 'access_token' | 'fetch_impl' | 'timeout_ms'\n >;\n url: string;\n init?: RequestInit;\n label: string;\n redactResponseDetails?: boolean;\n}): Promise<{ body: unknown; headers: ResponseLike['headers'] }> {\n const response = await options.context.fetch_impl(options.url, {\n ...options.init,\n headers: {\n ...buildSupabaseAuthHeaders(options.context.publishable_key, options.context.access_token),\n ...(options.init?.headers ?? {}),\n },\n signal: AbortSignal.timeout(options.context.timeout_ms),\n });\n const text = await response.text();\n if (!response.ok) {\n throw new CliError(`HTTP ${response.status} returned from ${options.label}`, {\n code: 'DATASET_MAINTENANCE_REMOTE_REQUEST_FAILED',\n exitCode: 1,\n details: options.redactResponseDetails\n ? { url: options.url, response_redacted: true }\n : { url: options.url, response: text },\n });\n }\n if (!text.trim()) {\n return { body: null, headers: response.headers };\n }\n try {\n return { body: JSON.parse(text), headers: response.headers };\n } catch (error) {\n throw new CliError(`Remote response was not valid JSON for ${options.label}`, {\n code: 'DATASET_MAINTENANCE_REMOTE_INVALID_JSON',\n exitCode: 1,\n details: {\n url: options.url,\n error: String(error),\n },\n });\n }\n}\n\nasync function fetchJson(options: {\n context: Pick<\n DatasetMaintenanceRemoteContext,\n 'publishable_key' | 'access_token' | 'fetch_impl' | 'timeout_ms'\n >;\n url: string;\n init?: RequestInit;\n label: string;\n redactResponseDetails?: boolean;\n}): Promise<unknown> {\n return (await fetchJsonResponse(options)).body;\n}\n\nfunction selectForTable(table: DatasetMaintenanceScanTable, includeJson = false): string {\n const common = `id,version,user_id,state_code,modified_at,${includeJson ? 'json,' : ''}json_ordered,rule_verification`;\n return table === 'processes' ? `${common},model_id` : common;\n}\n\nfunction normalizeRemoteRow(\n table: DatasetMaintenanceScanTable,\n value: unknown,\n includeJson = false,\n): DatasetMaintenanceRemoteRow | null {\n if (!isJsonObject(value)) {\n return null;\n }\n const id = trimToken(value.id);\n const version = trimToken(value.version);\n if (!id || !version) {\n return null;\n }\n return {\n table,\n id,\n version,\n user_id: trimToken(value.user_id),\n state_code: normalizeStateCode(value.state_code),\n modified_at: trimToken(value.modified_at),\n ...(includeJson ? { json: isJsonObject(value.json) ? value.json : null } : {}),\n json_ordered: isJsonObject(value.json_ordered) ? value.json_ordered : null,\n model_id: trimToken(value.model_id),\n rule_verification:\n typeof value.rule_verification === 'boolean' ? value.rule_verification : null,\n };\n}\n\nfunction normalizeRemoteRows(\n table: DatasetMaintenanceScanTable,\n value: unknown,\n label: string,\n includeJson = false,\n): DatasetMaintenanceRemoteRow[] {\n if (!Array.isArray(value)) {\n throw new CliError(`Remote response was not an array for ${label}.`, {\n code: 'DATASET_MAINTENANCE_REMOTE_ROWS_INVALID',\n exitCode: 1,\n details: value,\n });\n }\n const rows = value.map((entry) => normalizeRemoteRow(table, entry, includeJson));\n if (rows.some((row) => row === null)) {\n throw new CliError(`Remote response contained an invalid row for ${label}.`, {\n code: 'DATASET_MAINTENANCE_REMOTE_ROW_INVALID',\n exitCode: 1,\n });\n }\n return rows as DatasetMaintenanceRemoteRow[];\n}\n\nexport async function resolveMaintenanceRemoteContext(options: {\n env: NodeJS.ProcessEnv;\n fetchImpl: FetchLike;\n timeoutMs?: number;\n now?: Date;\n}): Promise<DatasetMaintenanceRemoteContext> {\n const timeoutMs = normalizeMaintenanceTimeout(options.timeoutMs);\n const runtime = requireSupabaseRestRuntime(options.env);\n const session = await resolveSupabaseUserSession({\n runtime,\n fetchImpl: options.fetchImpl,\n timeoutMs,\n now: options.now,\n });\n const projectBaseUrl = deriveSupabaseProjectBaseUrl(runtime.apiBaseUrl);\n const projectHost = new URL(projectBaseUrl).hostname;\n const projectRef = projectHost.endsWith('.supabase.co')\n ? projectHost.slice(0, -'.supabase.co'.length)\n : projectHost;\n const partialContext = {\n publishable_key: runtime.publishableKey,\n access_token: session.accessToken,\n fetch_impl: options.fetchImpl,\n timeout_ms: timeoutMs,\n };\n const currentUser = await fetchJson({\n context: partialContext,\n url: `${projectBaseUrl}/auth/v1/user`,\n label: 'supabase current-user lookup',\n });\n const userId = isJsonObject(currentUser) ? trimToken(currentUser.id) : null;\n const email = isJsonObject(currentUser)\n ? (trimToken(currentUser.email) ?? trimToken(session.userEmail))\n : trimToken(session.userEmail);\n if (!userId || !email) {\n throw new CliError('Supabase current-user lookup did not return id and email.', {\n code: 'DATASET_MAINTENANCE_CURRENT_USER_INVALID',\n exitCode: 1,\n });\n }\n return {\n project_ref: projectRef,\n rest_base_url: `${projectBaseUrl}/rest/v1`,\n publishable_key: runtime.publishableKey,\n access_token: session.accessToken,\n account: {\n user_id: userId,\n email,\n session_source: session.source,\n },\n fetch_impl: options.fetchImpl,\n timeout_ms: timeoutMs,\n };\n}\n\nexport async function fetchMaintenanceExactRows(options: {\n context: DatasetMaintenanceRemoteContext;\n table: DatasetMaintenanceScanTable;\n id: string;\n version: string;\n includeJson?: boolean;\n}): Promise<{ rows: DatasetMaintenanceRemoteRow[]; source_url: string }> {\n const url = new URL(`${options.context.rest_base_url}/${options.table}`);\n url.searchParams.set('select', selectForTable(options.table, options.includeJson));\n url.searchParams.set('id', `eq.${options.id}`);\n url.searchParams.set('version', `eq.${options.version}`);\n url.searchParams.set('limit', '2');\n const sourceUrl = url.toString();\n const body = await fetchJson({\n context: options.context,\n url: sourceUrl,\n label: `${options.table} exact maintenance lookup`,\n });\n return {\n rows: normalizeRemoteRows(options.table, body, sourceUrl, options.includeJson),\n source_url: sourceUrl,\n };\n}\n\nexport async function fetchMaintenanceAccountRows(options: {\n context: DatasetMaintenanceRemoteContext;\n userId: string;\n pageSize?: number;\n}): Promise<{\n rows: DatasetMaintenanceRemoteRow[];\n source_urls: string[];\n completeness: DatasetMaintenanceSnapshotCompleteness<DatasetMaintenanceScanTable>;\n}> {\n const pageSize = normalizeMaintenancePageSize(options.pageSize);\n const tableResults: Array<{\n table: DatasetMaintenanceScanTable;\n rows: DatasetMaintenanceRemoteRow[];\n source_urls: string[];\n completeness: Awaited<ReturnType<typeof fetchCompletePostgrestPages>>['completeness'];\n }> = [];\n for (const table of MAINTENANCE_SCAN_TABLES) {\n const result = await fetchCompletePostgrestPages({\n table,\n requestedPageSize: pageSize,\n rowIdentity: (row: DatasetMaintenanceRemoteRow) => `${row.id}\\u0000${row.version}`,\n fetchPage: async (offset) => {\n const url = new URL(`${options.context.rest_base_url}/${table}`);\n url.searchParams.set('select', selectForTable(table));\n url.searchParams.set('user_id', `eq.${options.userId}`);\n url.searchParams.set('order', 'id.asc,version.asc');\n url.searchParams.set('limit', String(pageSize));\n url.searchParams.set('offset', String(offset));\n const sourceUrl = url.toString();\n const response = await fetchJsonResponse({\n context: options.context,\n url: sourceUrl,\n init: { headers: { Prefer: 'count=exact' } },\n label: `${table} account maintenance snapshot`,\n });\n const rows = normalizeRemoteRows(table, response.body, sourceUrl);\n if (rows.some((row) => row.user_id !== options.userId)) {\n throw new CliError(`Remote ${table} snapshot contained a foreign account row.`, {\n code: 'DATASET_MAINTENANCE_REMOTE_ROW_INVALID',\n exitCode: 1,\n });\n }\n return {\n rows,\n source_url: sourceUrl,\n content_range: response.headers.get('content-range'),\n };\n },\n });\n tableResults.push({ table, ...result });\n }\n return {\n rows: tableResults.flatMap((result) => result.rows),\n source_urls: tableResults.flatMap((result) => result.source_urls),\n completeness: buildSnapshotCompleteness({\n tables: MAINTENANCE_SCAN_TABLES,\n requestedPageSize: pageSize,\n results: tableResults,\n }),\n };\n}\n\nexport async function fetchMaintenanceAccountTableRows(options: {\n context: DatasetMaintenanceRemoteContext;\n userId: string;\n table: DatasetMaintenanceScanTable;\n stateCode?: number;\n includeJson?: boolean;\n pageSize?: number;\n}): Promise<{\n rows: DatasetMaintenanceRemoteRow[];\n source_urls: string[];\n completeness: DatasetMaintenanceTableCompleteness;\n}> {\n const pageSize = normalizeMaintenancePageSize(options.pageSize);\n return fetchCompletePostgrestPages({\n table: options.table,\n requestedPageSize: pageSize,\n rowIdentity: (row: DatasetMaintenanceRemoteRow) => `${row.id}\\u0000${row.version}`,\n fetchPage: async (offset) => {\n const url = new URL(`${options.context.rest_base_url}/${options.table}`);\n url.searchParams.set('select', selectForTable(options.table, options.includeJson));\n url.searchParams.set('user_id', `eq.${options.userId}`);\n if (options.stateCode !== undefined) {\n url.searchParams.set('state_code', `eq.${options.stateCode}`);\n }\n url.searchParams.set('order', 'id.asc,version.asc');\n url.searchParams.set('limit', String(pageSize));\n url.searchParams.set('offset', String(offset));\n const sourceUrl = url.toString();\n const response = await fetchJsonResponse({\n context: options.context,\n url: sourceUrl,\n init: { headers: { Prefer: 'count=exact' } },\n label: `${options.table} account maintenance snapshot`,\n });\n const rows = normalizeRemoteRows(\n options.table,\n response.body,\n sourceUrl,\n options.includeJson,\n );\n if (\n rows.some(\n (row) =>\n row.user_id !== options.userId ||\n (options.stateCode !== undefined && row.state_code !== options.stateCode),\n )\n ) {\n throw new CliError(`Remote ${options.table} snapshot violated the account/state fence.`, {\n code: 'DATASET_MAINTENANCE_REMOTE_ROW_INVALID',\n exitCode: 1,\n });\n }\n return {\n rows,\n source_url: sourceUrl,\n content_range: response.headers.get('content-range'),\n };\n },\n });\n}\n\nasync function invokeMaintenanceRpc(options: {\n context: DatasetMaintenanceRemoteContext;\n rpc:\n | 'cmd_dataset_save_draft'\n | 'cmd_dataset_delete'\n | 'cmd_dataset_alias_plan_guarded'\n | 'cmd_dataset_alias_execution_preflight_guarded'\n | 'cmd_dataset_alias_execution_gate_guarded'\n | 'cmd_dataset_alias_execution_admit_guarded'\n | 'cmd_dataset_alias_execution_read'\n | 'cmd_dataset_derivative_rebuild_snapshot'\n | 'cmd_dataset_derivative_rebuild_plan_guarded'\n | 'cmd_dataset_derivative_rebuild_read'\n | 'cmd_dataset_flow_identity_capture_attest_guarded'\n | 'cmd_dataset_flow_identity_scope_preflight_guarded'\n | 'cmd_dataset_flow_identity_scope_lookup'\n | 'cmd_dataset_flow_identity_scope_recover_guarded'\n | 'cmd_dataset_flow_identity_process_rewrite_guarded'\n | 'cmd_dataset_flow_identity_scope_read'\n | 'cmd_dataset_flow_identity_scope_finalize_guarded';\n body: JsonObject;\n minimumTimeoutMs?: number;\n allowDomainFailure?: boolean;\n}): Promise<JsonObject> {\n const url = `${options.context.rest_base_url}/rpc/${options.rpc}`;\n const redactResponseDetails = options.rpc.startsWith('cmd_dataset_flow_identity_');\n const body = await fetchJson({\n context: {\n ...options.context,\n timeout_ms: Math.max(options.context.timeout_ms, options.minimumTimeoutMs ?? 0),\n },\n url,\n init: {\n method: 'POST',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify(options.body),\n },\n label: options.rpc,\n redactResponseDetails,\n });\n if (\n redactResponseDetails &&\n isJsonObject(body) &&\n body.ok !== true &&\n Object.hasOwn(body, 'execution_permit')\n ) {\n throw new CliError(`${options.rpc} returned an invalid rejection envelope.`, {\n code: 'DATASET_MAINTENANCE_RPC_FAILED',\n exitCode: 1,\n details: { rpc: options.rpc, response_redacted: true },\n });\n }\n if (\n !isJsonObject(body) ||\n (body.ok !== true &&\n !(options.allowDomainFailure === true && isMaintenanceRpcDomainFailure(body)))\n ) {\n throw new CliError(`${options.rpc} returned an unexpected response.`, {\n code: 'DATASET_MAINTENANCE_RPC_FAILED',\n exitCode: 1,\n details: redactResponseDetails ? { rpc: options.rpc, response_redacted: true } : body,\n });\n }\n return body;\n}\n\nexport type MaintenanceRpcDomainFailure = JsonObject & {\n ok: false;\n code: string;\n status: string | number;\n};\n\nexport function isMaintenanceRpcDomainFailure(\n value: unknown,\n): value is MaintenanceRpcDomainFailure {\n return Boolean(\n isJsonObject(value) &&\n value.ok === false &&\n typeof value.code === 'string' &&\n value.code.trim() &&\n ((typeof value.status === 'number' && Number.isSafeInteger(value.status)) ||\n (typeof value.status === 'string' && value.status.trim())),\n );\n}\n\nexport async function preflightMaintenanceAliasExecution(options: {\n context: DatasetMaintenanceRemoteContext;\n request: JsonObject;\n}): Promise<JsonObject> {\n return invokeMaintenanceRpc({\n context: options.context,\n rpc: 'cmd_dataset_alias_execution_preflight_guarded',\n body: { p_request: options.request },\n minimumTimeoutMs: 90_000,\n });\n}\n\nexport async function admitMaintenanceAliasExecution(options: {\n context: DatasetMaintenanceRemoteContext;\n request: JsonObject;\n}): Promise<JsonObject> {\n return invokeMaintenanceRpc({\n context: options.context,\n rpc: 'cmd_dataset_alias_execution_admit_guarded',\n body: { p_request: options.request },\n minimumTimeoutMs: 90_000,\n });\n}\n\nexport async function captureMaintenanceAliasExecutionGate(options: {\n context: DatasetMaintenanceRemoteContext;\n requestId: string;\n preflightToken: string;\n gateName: 'primary_support_plan' | 'execution_unused' | 'derivative_quiescence';\n}): Promise<JsonObject> {\n return invokeMaintenanceRpc({\n context: options.context,\n rpc: 'cmd_dataset_alias_execution_gate_guarded',\n body: {\n p_request_id: options.requestId,\n p_preflight_token: options.preflightToken,\n p_gate_name: options.gateName,\n },\n minimumTimeoutMs: 90_000,\n });\n}\n\nexport async function readMaintenanceAliasExecution(options: {\n context: DatasetMaintenanceRemoteContext;\n requestId: string;\n}): Promise<JsonObject> {\n return invokeMaintenanceRpc({\n context: options.context,\n rpc: 'cmd_dataset_alias_execution_read',\n body: { p_request_id: options.requestId },\n minimumTimeoutMs: 90_000,\n });\n}\n\nfunction derivativeSelectForTable(table: 'flows' | 'processes'): string {\n void table;\n return 'id,version,user_id,state_code,modified_at,json,json_ordered,extracted_text,extracted_md,embedding_ft,embedding_ft_at';\n}\n\nexport async function fetchMaintenanceDerivativeTargetRows(options: {\n context: DatasetMaintenanceRemoteContext;\n targets: Array<{ table: 'flows' | 'processes'; id: string; version: string }>;\n concurrency?: number;\n}): Promise<{ rows: DatasetMaintenanceDerivativeRemoteRow[]; source_urls: string[] }> {\n const concurrency = options.concurrency ?? 5;\n if (!Number.isInteger(concurrency) || concurrency < 1 || concurrency > 10) {\n throw new CliError('Derivative target read concurrency must be an integer between 1 and 10.', {\n code: 'DATASET_MAINTENANCE_DERIVATIVE_READ_CONCURRENCY_INVALID',\n exitCode: 2,\n });\n }\n if (options.targets.length > 50) {\n throw new CliError('Protected derivative target read is bounded to 50 rows.', {\n code: 'DATASET_MAINTENANCE_DERIVATIVE_TARGET_COUNT_INVALID',\n exitCode: 2,\n });\n }\n const rows: DatasetMaintenanceDerivativeRemoteRow[] = [];\n const sourceUrls: string[] = [];\n for (let offset = 0; offset < options.targets.length; offset += concurrency) {\n const chunk = options.targets.slice(offset, offset + concurrency);\n const results = await Promise.all(\n chunk.map(async (target) => {\n const url = new URL(`${options.context.rest_base_url}/${target.table}`);\n url.searchParams.set('select', derivativeSelectForTable(target.table));\n url.searchParams.set('id', `eq.${target.id}`);\n url.searchParams.set('version', `eq.${target.version}`);\n url.searchParams.set('limit', '2');\n const sourceUrl = url.toString();\n const body = await fetchJson({\n context: options.context,\n url: sourceUrl,\n label: `${target.table} protected derivative lookup`,\n });\n if (!Array.isArray(body) || body.length !== 1 || !isJsonObject(body[0])) {\n throw new CliError('Protected derivative target was missing, duplicated, or malformed.', {\n code: 'DATASET_MAINTENANCE_DERIVATIVE_TARGET_READ_INVALID',\n exitCode: 1,\n details: target,\n });\n }\n const row = body[0];\n const id = trimToken(row.id);\n const version = trimToken(row.version);\n const userId = trimToken(row.user_id);\n const stateCode = normalizeStateCode(row.state_code);\n if (id !== target.id || version !== target.version || !userId || stateCode === null) {\n throw new CliError('Protected derivative target identity was malformed.', {\n code: 'DATASET_MAINTENANCE_DERIVATIVE_TARGET_READ_INVALID',\n exitCode: 1,\n details: target,\n });\n }\n return {\n row: {\n table: target.table,\n id,\n version,\n user_id: userId,\n state_code: stateCode,\n raw: row,\n } satisfies DatasetMaintenanceDerivativeRemoteRow,\n sourceUrl,\n };\n }),\n );\n rows.push(...results.map((result) => result.row));\n sourceUrls.push(...results.map((result) => result.sourceUrl));\n }\n return { rows, source_urls: sourceUrls };\n}\n\nexport async function fetchMaintenanceDerivativeSnapshot(options: {\n context: DatasetMaintenanceRemoteContext;\n table?: 'flows' | 'processes';\n id: string;\n version: string;\n}): Promise<JsonObject> {\n return invokeMaintenanceRpc({\n context: options.context,\n rpc: 'cmd_dataset_derivative_rebuild_snapshot',\n body: {\n p_table: options.table ?? 'processes',\n p_id: options.id,\n p_version: options.version,\n },\n });\n}\n\nexport async function applyMaintenanceDerivativeRebuild(options: {\n context: DatasetMaintenanceRemoteContext;\n plan: JsonObject;\n}): Promise<JsonObject> {\n return invokeMaintenanceRpc({\n context: options.context,\n rpc: 'cmd_dataset_derivative_rebuild_plan_guarded',\n body: { p_plan: options.plan },\n });\n}\n\nexport async function readMaintenanceDerivativeRebuild(options: {\n context: DatasetMaintenanceRemoteContext;\n requestId: string;\n}): Promise<JsonObject> {\n return invokeMaintenanceRpc({\n context: options.context,\n rpc: 'cmd_dataset_derivative_rebuild_read',\n body: { p_request_id: options.requestId },\n });\n}\n\nexport async function applyMaintenanceAliasPlan(options: {\n context: DatasetMaintenanceRemoteContext;\n plan: JsonObject;\n}): Promise<JsonObject> {\n return invokeMaintenanceRpc({\n context: options.context,\n rpc: 'cmd_dataset_alias_plan_guarded',\n body: { p_plan: options.plan },\n });\n}\n\nexport async function preflightMaintenanceFlowIdentityScope(options: {\n context: DatasetMaintenanceRemoteContext;\n request: JsonObject;\n}): Promise<JsonObject> {\n const body = assertFlowIdentityWireJson({ p_request: options.request });\n return invokeMaintenanceRpc({\n context: options.context,\n rpc: 'cmd_dataset_flow_identity_scope_preflight_guarded',\n body,\n minimumTimeoutMs: 130_000,\n allowDomainFailure: true,\n });\n}\n\nexport async function lookupMaintenanceFlowIdentityScope(options: {\n context: DatasetMaintenanceRemoteContext;\n request: JsonObject;\n}): Promise<JsonObject> {\n const body = assertFlowIdentityWireJson({ p_request: options.request });\n return invokeMaintenanceRpc({\n context: options.context,\n rpc: 'cmd_dataset_flow_identity_scope_lookup',\n body,\n minimumTimeoutMs: 90_000,\n allowDomainFailure: true,\n });\n}\n\nexport async function rewriteMaintenanceFlowIdentityProcess(options: {\n context: DatasetMaintenanceRemoteContext;\n scopeId: string;\n request: JsonObject;\n authorization: JsonObject;\n}): Promise<JsonObject> {\n const body = assertFlowIdentityWireJson({\n p_scope_id: options.scopeId,\n p_request: options.request,\n p_authorization: options.authorization,\n });\n return invokeMaintenanceRpc({\n context: options.context,\n rpc: 'cmd_dataset_flow_identity_process_rewrite_guarded',\n body,\n minimumTimeoutMs: 90_000,\n allowDomainFailure: true,\n });\n}\n\nexport async function readMaintenanceFlowIdentityScope(options: {\n context: DatasetMaintenanceRemoteContext;\n scopeId: string;\n}): Promise<JsonObject> {\n const body = assertFlowIdentityWireJson({ p_scope_id: options.scopeId });\n return invokeMaintenanceRpc({\n context: options.context,\n rpc: 'cmd_dataset_flow_identity_scope_read',\n body,\n minimumTimeoutMs: 90_000,\n allowDomainFailure: true,\n });\n}\n\nexport async function finalizeMaintenanceFlowIdentityScope(options: {\n context: DatasetMaintenanceRemoteContext;\n scopeId: string;\n request: JsonObject;\n authorization: JsonObject;\n}): Promise<JsonObject> {\n const body = assertFlowIdentityWireJson({\n p_scope_id: options.scopeId,\n p_request: options.request,\n p_authorization: options.authorization,\n });\n return invokeMaintenanceRpc({\n context: options.context,\n rpc: 'cmd_dataset_flow_identity_scope_finalize_guarded',\n body,\n minimumTimeoutMs: 190_000,\n allowDomainFailure: true,\n });\n}\n\nexport async function recoverMaintenanceFlowIdentityScope(options: {\n context: DatasetMaintenanceRemoteContext;\n scopeId: string;\n request: JsonObject;\n}): Promise<JsonObject> {\n const body = assertFlowIdentityWireJson({\n p_scope_id: options.scopeId,\n p_request: options.request,\n });\n return invokeMaintenanceRpc({\n context: options.context,\n rpc: 'cmd_dataset_flow_identity_scope_recover_guarded',\n body,\n minimumTimeoutMs: 130_000,\n allowDomainFailure: true,\n });\n}\n\nexport async function attestMaintenanceFlowIdentityCapture(options: {\n context: DatasetMaintenanceRemoteContext;\n request: JsonObject;\n}): Promise<JsonObject> {\n const body = assertFlowIdentityWireJson({ p_request: options.request });\n return invokeMaintenanceRpc({\n context: options.context,\n rpc: 'cmd_dataset_flow_identity_capture_attest_guarded',\n body,\n minimumTimeoutMs: 190_000,\n allowDomainFailure: true,\n });\n}\n\nexport async function saveDraftMaintenanceRow(options: {\n context: DatasetMaintenanceRemoteContext;\n table: DatasetMaintenanceMutableTable;\n id: string;\n version: string;\n payload: JsonObject;\n modelId: string | null;\n ruleVerification: boolean | null;\n audit: JsonObject;\n}): Promise<JsonObject> {\n return invokeMaintenanceRpc({\n context: options.context,\n rpc: 'cmd_dataset_save_draft',\n body: {\n p_table: options.table,\n p_id: options.id,\n p_version: options.version,\n p_json_ordered: options.payload,\n p_model_id: options.modelId,\n p_rule_verification: options.ruleVerification,\n p_audit: options.audit,\n },\n });\n}\n\nexport async function deleteMaintenanceRow(options: {\n context: DatasetMaintenanceRemoteContext;\n table: DatasetMaintenanceMutableTable;\n id: string;\n version: string;\n audit: JsonObject;\n}): Promise<JsonObject> {\n return invokeMaintenanceRpc({\n context: options.context,\n rpc: 'cmd_dataset_delete',\n body: {\n p_table: options.table,\n p_id: options.id,\n p_version: options.version,\n p_audit: options.audit,\n },\n });\n}\n\nexport const __testInternals = {\n fetchJson,\n fetchJsonResponse,\n normalizeRemoteRow,\n normalizeRemoteRows,\n selectForTable,\n};\n"]}
|
|
1
|
+
{"version":3,"file":"dataset-maintenance-remote.js","sourceRoot":"","sources":["../../../src/lib/dataset-maintenance-remote.ts"],"names":[],"mappings":"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","sourcesContent":["import { CliError } from './errors.js';\nimport type { FetchLike, ResponseLike } from './http.js';\nimport {\n buildSnapshotCompleteness,\n fetchCompletePostgrestPages,\n type DatasetMaintenanceTableCompleteness,\n type DatasetMaintenanceSnapshotCompleteness,\n} from './dataset-maintenance-pagination.js';\nimport {\n buildSupabaseAuthHeaders,\n deriveSupabaseProjectBaseUrl,\n requireSupabaseRestRuntime,\n} from './supabase-client.js';\nimport { resolveSupabaseUserSession } from './supabase-session.js';\nimport {\n isJsonObject,\n MAINTENANCE_SCAN_TABLES,\n type DatasetMaintenanceMutableTable,\n type DatasetMaintenanceRemoteRow,\n type DatasetMaintenanceScanTable,\n type JsonObject,\n} from './dataset-maintenance-contract.js';\nimport { assertFlowIdentityWireJson } from './dataset-maintenance-flow-identity-wire.js';\n\nconst DEFAULT_PAGE_SIZE = 1_000;\nconst DEFAULT_TIMEOUT_MS = 10_000;\n\nexport type DatasetMaintenanceRemoteContext = {\n project_ref: string;\n rest_base_url: string;\n publishable_key: string;\n access_token: string;\n account: {\n user_id: string;\n email: string;\n session_source: string;\n };\n fetch_impl: FetchLike;\n timeout_ms: number;\n};\n\nexport type DatasetMaintenanceDerivativeRemoteRow = {\n table: 'flows' | 'processes';\n id: string;\n version: string;\n user_id: string;\n state_code: number;\n raw: JsonObject;\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 normalizeStateCode(value: unknown): number | null {\n if (typeof value === 'number' && Number.isInteger(value)) {\n return value;\n }\n return typeof value === 'string' && /^-?\\d+$/u.test(value.trim())\n ? Number.parseInt(value.trim(), 10)\n : null;\n}\n\nexport function normalizeMaintenancePageSize(value?: number): number {\n const normalized = value ?? DEFAULT_PAGE_SIZE;\n if (!Number.isInteger(normalized) || normalized < 1 || normalized > 5_000) {\n throw new CliError('Maintenance page size must be an integer between 1 and 5000.', {\n code: 'DATASET_MAINTENANCE_PAGE_SIZE_INVALID',\n exitCode: 2,\n details: value,\n });\n }\n return normalized;\n}\n\nexport function normalizeMaintenanceTimeout(value?: number): number {\n const normalized = value ?? DEFAULT_TIMEOUT_MS;\n if (!Number.isInteger(normalized) || normalized < 1) {\n throw new CliError('Maintenance timeout must be a positive integer.', {\n code: 'DATASET_MAINTENANCE_TIMEOUT_INVALID',\n exitCode: 2,\n details: value,\n });\n }\n return normalized;\n}\n\nasync function fetchJsonResponse(options: {\n context: Pick<\n DatasetMaintenanceRemoteContext,\n 'publishable_key' | 'access_token' | 'fetch_impl' | 'timeout_ms'\n >;\n url: string;\n init?: RequestInit;\n label: string;\n redactResponseDetails?: boolean;\n}): Promise<{ body: unknown; headers: ResponseLike['headers'] }> {\n const response = await options.context.fetch_impl(options.url, {\n ...options.init,\n headers: {\n ...buildSupabaseAuthHeaders(options.context.publishable_key, options.context.access_token),\n ...(options.init?.headers ?? {}),\n },\n signal: AbortSignal.timeout(options.context.timeout_ms),\n });\n const text = await response.text();\n if (!response.ok) {\n throw new CliError(`HTTP ${response.status} returned from ${options.label}`, {\n code: 'DATASET_MAINTENANCE_REMOTE_REQUEST_FAILED',\n exitCode: 1,\n details: options.redactResponseDetails\n ? { url: options.url, response_redacted: true }\n : { url: options.url, response: text },\n });\n }\n if (!text.trim()) {\n return { body: null, headers: response.headers };\n }\n try {\n return { body: JSON.parse(text), headers: response.headers };\n } catch (error) {\n throw new CliError(`Remote response was not valid JSON for ${options.label}`, {\n code: 'DATASET_MAINTENANCE_REMOTE_INVALID_JSON',\n exitCode: 1,\n details: {\n url: options.url,\n error: String(error),\n },\n });\n }\n}\n\nasync function fetchJson(options: {\n context: Pick<\n DatasetMaintenanceRemoteContext,\n 'publishable_key' | 'access_token' | 'fetch_impl' | 'timeout_ms'\n >;\n url: string;\n init?: RequestInit;\n label: string;\n redactResponseDetails?: boolean;\n}): Promise<unknown> {\n return (await fetchJsonResponse(options)).body;\n}\n\nfunction selectForTable(table: DatasetMaintenanceScanTable, includeJson = false): string {\n const common = `id,version,user_id,state_code,modified_at,${includeJson ? 'json,' : ''}json_ordered,rule_verification`;\n return table === 'processes' ? `${common},model_id` : common;\n}\n\nfunction normalizeRemoteRow(\n table: DatasetMaintenanceScanTable,\n value: unknown,\n includeJson = false,\n): DatasetMaintenanceRemoteRow | null {\n if (!isJsonObject(value)) {\n return null;\n }\n const id = trimToken(value.id);\n const version = trimToken(value.version);\n if (!id || !version) {\n return null;\n }\n return {\n table,\n id,\n version,\n user_id: trimToken(value.user_id),\n state_code: normalizeStateCode(value.state_code),\n modified_at: trimToken(value.modified_at),\n ...(includeJson ? { json: isJsonObject(value.json) ? value.json : null } : {}),\n json_ordered: isJsonObject(value.json_ordered) ? value.json_ordered : null,\n model_id: trimToken(value.model_id),\n rule_verification:\n typeof value.rule_verification === 'boolean' ? value.rule_verification : null,\n };\n}\n\nfunction normalizeRemoteRows(\n table: DatasetMaintenanceScanTable,\n value: unknown,\n label: string,\n includeJson = false,\n): DatasetMaintenanceRemoteRow[] {\n if (!Array.isArray(value)) {\n throw new CliError(`Remote response was not an array for ${label}.`, {\n code: 'DATASET_MAINTENANCE_REMOTE_ROWS_INVALID',\n exitCode: 1,\n details: value,\n });\n }\n const rows = value.map((entry) => normalizeRemoteRow(table, entry, includeJson));\n if (rows.some((row) => row === null)) {\n throw new CliError(`Remote response contained an invalid row for ${label}.`, {\n code: 'DATASET_MAINTENANCE_REMOTE_ROW_INVALID',\n exitCode: 1,\n });\n }\n return rows as DatasetMaintenanceRemoteRow[];\n}\n\nexport async function resolveMaintenanceRemoteContext(options: {\n env: NodeJS.ProcessEnv;\n fetchImpl: FetchLike;\n timeoutMs?: number;\n now?: Date;\n}): Promise<DatasetMaintenanceRemoteContext> {\n const timeoutMs = normalizeMaintenanceTimeout(options.timeoutMs);\n const runtime = requireSupabaseRestRuntime(options.env);\n const session = await resolveSupabaseUserSession({\n runtime,\n fetchImpl: options.fetchImpl,\n timeoutMs,\n now: options.now,\n });\n const projectBaseUrl = deriveSupabaseProjectBaseUrl(runtime.apiBaseUrl);\n const projectHost = new URL(projectBaseUrl).hostname;\n const projectRef = projectHost.endsWith('.supabase.co')\n ? projectHost.slice(0, -'.supabase.co'.length)\n : projectHost;\n const partialContext = {\n publishable_key: runtime.publishableKey,\n access_token: session.accessToken,\n fetch_impl: options.fetchImpl,\n timeout_ms: timeoutMs,\n };\n const currentUser = await fetchJson({\n context: partialContext,\n url: `${projectBaseUrl}/auth/v1/user`,\n label: 'supabase current-user lookup',\n });\n const userId = isJsonObject(currentUser) ? trimToken(currentUser.id) : null;\n const email = isJsonObject(currentUser)\n ? (trimToken(currentUser.email) ?? trimToken(session.userEmail))\n : trimToken(session.userEmail);\n if (!userId || !email) {\n throw new CliError('Supabase current-user lookup did not return id and email.', {\n code: 'DATASET_MAINTENANCE_CURRENT_USER_INVALID',\n exitCode: 1,\n });\n }\n return {\n project_ref: projectRef,\n rest_base_url: `${projectBaseUrl}/rest/v1`,\n publishable_key: runtime.publishableKey,\n access_token: session.accessToken,\n account: {\n user_id: userId,\n email,\n session_source: session.source,\n },\n fetch_impl: options.fetchImpl,\n timeout_ms: timeoutMs,\n };\n}\n\nexport async function fetchMaintenanceExactRows(options: {\n context: DatasetMaintenanceRemoteContext;\n table: DatasetMaintenanceScanTable;\n id: string;\n version: string;\n includeJson?: boolean;\n}): Promise<{ rows: DatasetMaintenanceRemoteRow[]; source_url: string }> {\n const url = new URL(`${options.context.rest_base_url}/${options.table}`);\n url.searchParams.set('select', selectForTable(options.table, options.includeJson));\n url.searchParams.set('id', `eq.${options.id}`);\n url.searchParams.set('version', `eq.${options.version}`);\n url.searchParams.set('limit', '2');\n const sourceUrl = url.toString();\n const body = await fetchJson({\n context: options.context,\n url: sourceUrl,\n label: `${options.table} exact maintenance lookup`,\n });\n return {\n rows: normalizeRemoteRows(options.table, body, sourceUrl, options.includeJson),\n source_url: sourceUrl,\n };\n}\n\nexport async function fetchMaintenanceAccountRows(options: {\n context: DatasetMaintenanceRemoteContext;\n userId: string;\n pageSize?: number;\n}): Promise<{\n rows: DatasetMaintenanceRemoteRow[];\n source_urls: string[];\n completeness: DatasetMaintenanceSnapshotCompleteness<DatasetMaintenanceScanTable>;\n}> {\n const pageSize = normalizeMaintenancePageSize(options.pageSize);\n const tableResults: Array<{\n table: DatasetMaintenanceScanTable;\n rows: DatasetMaintenanceRemoteRow[];\n source_urls: string[];\n completeness: Awaited<ReturnType<typeof fetchCompletePostgrestPages>>['completeness'];\n }> = [];\n for (const table of MAINTENANCE_SCAN_TABLES) {\n const result = await fetchCompletePostgrestPages({\n table,\n requestedPageSize: pageSize,\n rowIdentity: (row: DatasetMaintenanceRemoteRow) => `${row.id}\\u0000${row.version}`,\n fetchPage: async (offset) => {\n const url = new URL(`${options.context.rest_base_url}/${table}`);\n url.searchParams.set('select', selectForTable(table));\n url.searchParams.set('user_id', `eq.${options.userId}`);\n url.searchParams.set('order', 'id.asc,version.asc');\n url.searchParams.set('limit', String(pageSize));\n url.searchParams.set('offset', String(offset));\n const sourceUrl = url.toString();\n const response = await fetchJsonResponse({\n context: options.context,\n url: sourceUrl,\n init: { headers: { Prefer: 'count=exact' } },\n label: `${table} account maintenance snapshot`,\n });\n const rows = normalizeRemoteRows(table, response.body, sourceUrl);\n if (rows.some((row) => row.user_id !== options.userId)) {\n throw new CliError(`Remote ${table} snapshot contained a foreign account row.`, {\n code: 'DATASET_MAINTENANCE_REMOTE_ROW_INVALID',\n exitCode: 1,\n });\n }\n return {\n rows,\n source_url: sourceUrl,\n content_range: response.headers.get('content-range'),\n };\n },\n });\n tableResults.push({ table, ...result });\n }\n return {\n rows: tableResults.flatMap((result) => result.rows),\n source_urls: tableResults.flatMap((result) => result.source_urls),\n completeness: buildSnapshotCompleteness({\n tables: MAINTENANCE_SCAN_TABLES,\n requestedPageSize: pageSize,\n results: tableResults,\n }),\n };\n}\n\nexport async function fetchMaintenanceAccountTableRows(options: {\n context: DatasetMaintenanceRemoteContext;\n userId: string;\n table: DatasetMaintenanceScanTable;\n stateCode?: number;\n includeJson?: boolean;\n pageSize?: number;\n}): Promise<{\n rows: DatasetMaintenanceRemoteRow[];\n source_urls: string[];\n completeness: DatasetMaintenanceTableCompleteness;\n}> {\n const pageSize = normalizeMaintenancePageSize(options.pageSize);\n return fetchCompletePostgrestPages({\n table: options.table,\n requestedPageSize: pageSize,\n rowIdentity: (row: DatasetMaintenanceRemoteRow) => `${row.id}\\u0000${row.version}`,\n fetchPage: async (offset) => {\n const url = new URL(`${options.context.rest_base_url}/${options.table}`);\n url.searchParams.set('select', selectForTable(options.table, options.includeJson));\n url.searchParams.set('user_id', `eq.${options.userId}`);\n if (options.stateCode !== undefined) {\n url.searchParams.set('state_code', `eq.${options.stateCode}`);\n }\n url.searchParams.set('order', 'id.asc,version.asc');\n url.searchParams.set('limit', String(pageSize));\n url.searchParams.set('offset', String(offset));\n const sourceUrl = url.toString();\n const response = await fetchJsonResponse({\n context: options.context,\n url: sourceUrl,\n init: { headers: { Prefer: 'count=exact' } },\n label: `${options.table} account maintenance snapshot`,\n });\n const rows = normalizeRemoteRows(\n options.table,\n response.body,\n sourceUrl,\n options.includeJson,\n );\n if (\n rows.some(\n (row) =>\n row.user_id !== options.userId ||\n (options.stateCode !== undefined && row.state_code !== options.stateCode),\n )\n ) {\n throw new CliError(`Remote ${options.table} snapshot violated the account/state fence.`, {\n code: 'DATASET_MAINTENANCE_REMOTE_ROW_INVALID',\n exitCode: 1,\n });\n }\n return {\n rows,\n source_url: sourceUrl,\n content_range: response.headers.get('content-range'),\n };\n },\n });\n}\n\n/**\n * Read every row visible to the authenticated owner for one maintenance table.\n *\n * This deliberately omits a user_id predicate. It is a SELECT-only RLS view used\n * by destructive maintenance admission to prove that a draft flow has no inbound\n * reference from either an owner row or another row visible to the owner session.\n */\nexport async function fetchMaintenanceVisibleTableRows(options: {\n context: DatasetMaintenanceRemoteContext;\n table: DatasetMaintenanceScanTable;\n includeJson?: boolean;\n pageSize?: number;\n}): Promise<{\n rows: DatasetMaintenanceRemoteRow[];\n source_urls: string[];\n completeness: DatasetMaintenanceTableCompleteness;\n}> {\n const pageSize = normalizeMaintenancePageSize(options.pageSize);\n return fetchCompletePostgrestPages({\n table: options.table,\n requestedPageSize: pageSize,\n rowIdentity: (row: DatasetMaintenanceRemoteRow) =>\n `${row.id}\\u0000${row.version}\\u0000${row.user_id ?? ''}\\u0000${\n row.state_code === null ? '' : String(row.state_code).padStart(12, '0')\n }`,\n fetchPage: async (offset) => {\n const url = new URL(`${options.context.rest_base_url}/${options.table}`);\n url.searchParams.set('select', selectForTable(options.table, options.includeJson));\n url.searchParams.set(\n 'order',\n 'id.asc,version.asc,user_id.asc.nullsfirst,state_code.asc.nullsfirst',\n );\n url.searchParams.set('limit', String(pageSize));\n url.searchParams.set('offset', String(offset));\n const sourceUrl = url.toString();\n const response = await fetchJsonResponse({\n context: options.context,\n url: sourceUrl,\n init: { headers: { Prefer: 'count=exact' } },\n label: `${options.table} visible maintenance snapshot`,\n });\n return {\n rows: normalizeRemoteRows(options.table, response.body, sourceUrl, options.includeJson),\n source_url: sourceUrl,\n content_range: response.headers.get('content-range'),\n };\n },\n });\n}\n\nasync function invokeMaintenanceRpc(options: {\n context: DatasetMaintenanceRemoteContext;\n rpc:\n | 'cmd_dataset_save_draft'\n | 'cmd_dataset_delete'\n | 'cmd_dataset_alias_plan_guarded'\n | 'cmd_dataset_alias_execution_preflight_guarded'\n | 'cmd_dataset_alias_execution_gate_guarded'\n | 'cmd_dataset_alias_execution_admit_guarded'\n | 'cmd_dataset_alias_execution_read'\n | 'cmd_dataset_derivative_rebuild_snapshot'\n | 'cmd_dataset_derivative_rebuild_plan_guarded'\n | 'cmd_dataset_derivative_rebuild_read'\n | 'cmd_dataset_flow_identity_capture_attest_guarded'\n | 'cmd_dataset_flow_identity_scope_preflight_guarded'\n | 'cmd_dataset_flow_identity_scope_lookup'\n | 'cmd_dataset_flow_identity_scope_recover_guarded'\n | 'cmd_dataset_flow_identity_process_rewrite_guarded'\n | 'cmd_dataset_flow_identity_scope_read'\n | 'cmd_dataset_flow_identity_scope_finalize_guarded';\n body: JsonObject;\n minimumTimeoutMs?: number;\n allowDomainFailure?: boolean;\n}): Promise<JsonObject> {\n const url = `${options.context.rest_base_url}/rpc/${options.rpc}`;\n const redactResponseDetails = options.rpc.startsWith('cmd_dataset_flow_identity_');\n const body = await fetchJson({\n context: {\n ...options.context,\n timeout_ms: Math.max(options.context.timeout_ms, options.minimumTimeoutMs ?? 0),\n },\n url,\n init: {\n method: 'POST',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify(options.body),\n },\n label: options.rpc,\n redactResponseDetails,\n });\n if (\n redactResponseDetails &&\n isJsonObject(body) &&\n body.ok !== true &&\n Object.hasOwn(body, 'execution_permit')\n ) {\n throw new CliError(`${options.rpc} returned an invalid rejection envelope.`, {\n code: 'DATASET_MAINTENANCE_RPC_FAILED',\n exitCode: 1,\n details: { rpc: options.rpc, response_redacted: true },\n });\n }\n if (\n !isJsonObject(body) ||\n (body.ok !== true &&\n !(options.allowDomainFailure === true && isMaintenanceRpcDomainFailure(body)))\n ) {\n throw new CliError(`${options.rpc} returned an unexpected response.`, {\n code: 'DATASET_MAINTENANCE_RPC_FAILED',\n exitCode: 1,\n details: redactResponseDetails ? { rpc: options.rpc, response_redacted: true } : body,\n });\n }\n return body;\n}\n\nexport type MaintenanceRpcDomainFailure = JsonObject & {\n ok: false;\n code: string;\n status: string | number;\n};\n\nexport function isMaintenanceRpcDomainFailure(\n value: unknown,\n): value is MaintenanceRpcDomainFailure {\n return Boolean(\n isJsonObject(value) &&\n value.ok === false &&\n typeof value.code === 'string' &&\n value.code.trim() &&\n ((typeof value.status === 'number' && Number.isSafeInteger(value.status)) ||\n (typeof value.status === 'string' && value.status.trim())),\n );\n}\n\nexport async function preflightMaintenanceAliasExecution(options: {\n context: DatasetMaintenanceRemoteContext;\n request: JsonObject;\n}): Promise<JsonObject> {\n return invokeMaintenanceRpc({\n context: options.context,\n rpc: 'cmd_dataset_alias_execution_preflight_guarded',\n body: { p_request: options.request },\n minimumTimeoutMs: 90_000,\n });\n}\n\nexport async function admitMaintenanceAliasExecution(options: {\n context: DatasetMaintenanceRemoteContext;\n request: JsonObject;\n}): Promise<JsonObject> {\n return invokeMaintenanceRpc({\n context: options.context,\n rpc: 'cmd_dataset_alias_execution_admit_guarded',\n body: { p_request: options.request },\n minimumTimeoutMs: 90_000,\n });\n}\n\nexport async function captureMaintenanceAliasExecutionGate(options: {\n context: DatasetMaintenanceRemoteContext;\n requestId: string;\n preflightToken: string;\n gateName: 'primary_support_plan' | 'execution_unused' | 'derivative_quiescence';\n}): Promise<JsonObject> {\n return invokeMaintenanceRpc({\n context: options.context,\n rpc: 'cmd_dataset_alias_execution_gate_guarded',\n body: {\n p_request_id: options.requestId,\n p_preflight_token: options.preflightToken,\n p_gate_name: options.gateName,\n },\n minimumTimeoutMs: 90_000,\n });\n}\n\nexport async function readMaintenanceAliasExecution(options: {\n context: DatasetMaintenanceRemoteContext;\n requestId: string;\n}): Promise<JsonObject> {\n return invokeMaintenanceRpc({\n context: options.context,\n rpc: 'cmd_dataset_alias_execution_read',\n body: { p_request_id: options.requestId },\n minimumTimeoutMs: 90_000,\n });\n}\n\nfunction derivativeSelectForTable(table: 'flows' | 'processes'): string {\n void table;\n return 'id,version,user_id,state_code,modified_at,json,json_ordered,extracted_text,extracted_md,embedding_ft,embedding_ft_at';\n}\n\nexport async function fetchMaintenanceDerivativeTargetRows(options: {\n context: DatasetMaintenanceRemoteContext;\n targets: Array<{ table: 'flows' | 'processes'; id: string; version: string }>;\n concurrency?: number;\n}): Promise<{ rows: DatasetMaintenanceDerivativeRemoteRow[]; source_urls: string[] }> {\n const concurrency = options.concurrency ?? 5;\n if (!Number.isInteger(concurrency) || concurrency < 1 || concurrency > 10) {\n throw new CliError('Derivative target read concurrency must be an integer between 1 and 10.', {\n code: 'DATASET_MAINTENANCE_DERIVATIVE_READ_CONCURRENCY_INVALID',\n exitCode: 2,\n });\n }\n if (options.targets.length > 50) {\n throw new CliError('Protected derivative target read is bounded to 50 rows.', {\n code: 'DATASET_MAINTENANCE_DERIVATIVE_TARGET_COUNT_INVALID',\n exitCode: 2,\n });\n }\n const rows: DatasetMaintenanceDerivativeRemoteRow[] = [];\n const sourceUrls: string[] = [];\n for (let offset = 0; offset < options.targets.length; offset += concurrency) {\n const chunk = options.targets.slice(offset, offset + concurrency);\n const results = await Promise.all(\n chunk.map(async (target) => {\n const url = new URL(`${options.context.rest_base_url}/${target.table}`);\n url.searchParams.set('select', derivativeSelectForTable(target.table));\n url.searchParams.set('id', `eq.${target.id}`);\n url.searchParams.set('version', `eq.${target.version}`);\n url.searchParams.set('limit', '2');\n const sourceUrl = url.toString();\n const body = await fetchJson({\n context: options.context,\n url: sourceUrl,\n label: `${target.table} protected derivative lookup`,\n });\n if (!Array.isArray(body) || body.length !== 1 || !isJsonObject(body[0])) {\n throw new CliError('Protected derivative target was missing, duplicated, or malformed.', {\n code: 'DATASET_MAINTENANCE_DERIVATIVE_TARGET_READ_INVALID',\n exitCode: 1,\n details: target,\n });\n }\n const row = body[0];\n const id = trimToken(row.id);\n const version = trimToken(row.version);\n const userId = trimToken(row.user_id);\n const stateCode = normalizeStateCode(row.state_code);\n if (id !== target.id || version !== target.version || !userId || stateCode === null) {\n throw new CliError('Protected derivative target identity was malformed.', {\n code: 'DATASET_MAINTENANCE_DERIVATIVE_TARGET_READ_INVALID',\n exitCode: 1,\n details: target,\n });\n }\n return {\n row: {\n table: target.table,\n id,\n version,\n user_id: userId,\n state_code: stateCode,\n raw: row,\n } satisfies DatasetMaintenanceDerivativeRemoteRow,\n sourceUrl,\n };\n }),\n );\n rows.push(...results.map((result) => result.row));\n sourceUrls.push(...results.map((result) => result.sourceUrl));\n }\n return { rows, source_urls: sourceUrls };\n}\n\nexport async function fetchMaintenanceDerivativeSnapshot(options: {\n context: DatasetMaintenanceRemoteContext;\n table?: 'flows' | 'processes';\n id: string;\n version: string;\n}): Promise<JsonObject> {\n return invokeMaintenanceRpc({\n context: options.context,\n rpc: 'cmd_dataset_derivative_rebuild_snapshot',\n body: {\n p_table: options.table ?? 'processes',\n p_id: options.id,\n p_version: options.version,\n },\n });\n}\n\nexport async function applyMaintenanceDerivativeRebuild(options: {\n context: DatasetMaintenanceRemoteContext;\n plan: JsonObject;\n}): Promise<JsonObject> {\n return invokeMaintenanceRpc({\n context: options.context,\n rpc: 'cmd_dataset_derivative_rebuild_plan_guarded',\n body: { p_plan: options.plan },\n });\n}\n\nexport async function readMaintenanceDerivativeRebuild(options: {\n context: DatasetMaintenanceRemoteContext;\n requestId: string;\n}): Promise<JsonObject> {\n return invokeMaintenanceRpc({\n context: options.context,\n rpc: 'cmd_dataset_derivative_rebuild_read',\n body: { p_request_id: options.requestId },\n });\n}\n\nexport async function applyMaintenanceAliasPlan(options: {\n context: DatasetMaintenanceRemoteContext;\n plan: JsonObject;\n}): Promise<JsonObject> {\n return invokeMaintenanceRpc({\n context: options.context,\n rpc: 'cmd_dataset_alias_plan_guarded',\n body: { p_plan: options.plan },\n });\n}\n\nexport async function preflightMaintenanceFlowIdentityScope(options: {\n context: DatasetMaintenanceRemoteContext;\n request: JsonObject;\n}): Promise<JsonObject> {\n const body = assertFlowIdentityWireJson({ p_request: options.request });\n return invokeMaintenanceRpc({\n context: options.context,\n rpc: 'cmd_dataset_flow_identity_scope_preflight_guarded',\n body,\n minimumTimeoutMs: 130_000,\n allowDomainFailure: true,\n });\n}\n\nexport async function lookupMaintenanceFlowIdentityScope(options: {\n context: DatasetMaintenanceRemoteContext;\n request: JsonObject;\n}): Promise<JsonObject> {\n const body = assertFlowIdentityWireJson({ p_request: options.request });\n return invokeMaintenanceRpc({\n context: options.context,\n rpc: 'cmd_dataset_flow_identity_scope_lookup',\n body,\n minimumTimeoutMs: 90_000,\n allowDomainFailure: true,\n });\n}\n\nexport async function rewriteMaintenanceFlowIdentityProcess(options: {\n context: DatasetMaintenanceRemoteContext;\n scopeId: string;\n request: JsonObject;\n authorization: JsonObject;\n}): Promise<JsonObject> {\n const body = assertFlowIdentityWireJson({\n p_scope_id: options.scopeId,\n p_request: options.request,\n p_authorization: options.authorization,\n });\n return invokeMaintenanceRpc({\n context: options.context,\n rpc: 'cmd_dataset_flow_identity_process_rewrite_guarded',\n body,\n minimumTimeoutMs: 90_000,\n allowDomainFailure: true,\n });\n}\n\nexport async function readMaintenanceFlowIdentityScope(options: {\n context: DatasetMaintenanceRemoteContext;\n scopeId: string;\n}): Promise<JsonObject> {\n const body = assertFlowIdentityWireJson({ p_scope_id: options.scopeId });\n return invokeMaintenanceRpc({\n context: options.context,\n rpc: 'cmd_dataset_flow_identity_scope_read',\n body,\n minimumTimeoutMs: 90_000,\n allowDomainFailure: true,\n });\n}\n\nexport async function finalizeMaintenanceFlowIdentityScope(options: {\n context: DatasetMaintenanceRemoteContext;\n scopeId: string;\n request: JsonObject;\n authorization: JsonObject;\n}): Promise<JsonObject> {\n const body = assertFlowIdentityWireJson({\n p_scope_id: options.scopeId,\n p_request: options.request,\n p_authorization: options.authorization,\n });\n return invokeMaintenanceRpc({\n context: options.context,\n rpc: 'cmd_dataset_flow_identity_scope_finalize_guarded',\n body,\n minimumTimeoutMs: 190_000,\n allowDomainFailure: true,\n });\n}\n\nexport async function recoverMaintenanceFlowIdentityScope(options: {\n context: DatasetMaintenanceRemoteContext;\n scopeId: string;\n request: JsonObject;\n}): Promise<JsonObject> {\n const body = assertFlowIdentityWireJson({\n p_scope_id: options.scopeId,\n p_request: options.request,\n });\n return invokeMaintenanceRpc({\n context: options.context,\n rpc: 'cmd_dataset_flow_identity_scope_recover_guarded',\n body,\n minimumTimeoutMs: 130_000,\n allowDomainFailure: true,\n });\n}\n\nexport async function attestMaintenanceFlowIdentityCapture(options: {\n context: DatasetMaintenanceRemoteContext;\n request: JsonObject;\n}): Promise<JsonObject> {\n const body = assertFlowIdentityWireJson({ p_request: options.request });\n return invokeMaintenanceRpc({\n context: options.context,\n rpc: 'cmd_dataset_flow_identity_capture_attest_guarded',\n body,\n minimumTimeoutMs: 190_000,\n allowDomainFailure: true,\n });\n}\n\nexport async function saveDraftMaintenanceRow(options: {\n context: DatasetMaintenanceRemoteContext;\n table: DatasetMaintenanceMutableTable;\n id: string;\n version: string;\n payload: JsonObject;\n modelId: string | null;\n ruleVerification: boolean | null;\n audit: JsonObject;\n}): Promise<JsonObject> {\n return invokeMaintenanceRpc({\n context: options.context,\n rpc: 'cmd_dataset_save_draft',\n body: {\n p_table: options.table,\n p_id: options.id,\n p_version: options.version,\n p_json_ordered: options.payload,\n p_model_id: options.modelId,\n p_rule_verification: options.ruleVerification,\n p_audit: options.audit,\n },\n });\n}\n\nexport async function deleteMaintenanceRow(options: {\n context: DatasetMaintenanceRemoteContext;\n table: DatasetMaintenanceMutableTable;\n id: string;\n version: string;\n audit: JsonObject;\n}): Promise<JsonObject> {\n return invokeMaintenanceRpc({\n context: options.context,\n rpc: 'cmd_dataset_delete',\n body: {\n p_table: options.table,\n p_id: options.id,\n p_version: options.version,\n p_audit: options.audit,\n },\n });\n}\n\nexport const __testInternals = {\n fetchJson,\n fetchJsonResponse,\n normalizeRemoteRow,\n normalizeRemoteRows,\n selectForTable,\n};\n"]}
|