@runa-ai/runa-cli 0.10.3 → 0.10.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (27) hide show
  1. package/dist/{build-P2A6345N.js → build-C65G2QQE.js} +3 -2
  2. package/dist/{chunk-UHDAYPHH.js → chunk-47BG6DRP.js} +1 -1
  3. package/dist/chunk-AYYHYZU7.js +3636 -0
  4. package/dist/{chunk-MAFJAA2P.js → chunk-C3SRIUWX.js} +1 -1
  5. package/dist/{chunk-QSEF4T3Y.js → chunk-F2AQ3EYJ.js} +10 -199
  6. package/dist/chunk-NOXYPVMZ.js +204 -0
  7. package/dist/{chunk-S7VGVFYF.js → chunk-OUMW5LKJ.js} +274 -3863
  8. package/dist/{chunk-SS7RIWW3.js → chunk-WIT46HVC.js} +1 -1
  9. package/dist/{chunk-XFXGFUAM.js → chunk-XVGMGFKF.js} +1 -1
  10. package/dist/{chunk-WGRVAGSR.js → chunk-ZDETCPCE.js} +2 -2
  11. package/dist/{ci-6P7VK6WB.js → ci-Q4PLRFPB.js} +11 -9
  12. package/dist/{cli-Q665YRVT.js → cli-LS2THG3F.js} +12 -12
  13. package/dist/{db-BQOVOQXU.js → db-MB3LQIGI.js} +50 -31
  14. package/dist/{dev-QR55VDNZ.js → dev-N3BFJZ7F.js} +3 -2
  15. package/dist/{env-KYR6Q7WO.js → env-2XM45E7O.js} +4 -3
  16. package/dist/{env-XPPACZM4.js → env-KIMSQSPS.js} +3 -2
  17. package/dist/helpers-PDT3WQNF.js +15 -0
  18. package/dist/{hotfix-JYHDY2M6.js → hotfix-QP5J6FCD.js} +4 -3
  19. package/dist/index.js +3 -3
  20. package/dist/local-supabase-KTTC3O2L.js +8 -0
  21. package/dist/{risk-detector-GDDLISVE.js → risk-detector-4D5HRUMY.js} +1 -1
  22. package/dist/{risk-detector-core-YI3M6INI.js → risk-detector-core-CHUY6M5N.js} +1 -1
  23. package/dist/{vuln-check-WW43E7PS.js → vuln-check-JSPRI5ZY.js} +1 -1
  24. package/dist/{vuln-checker-BC3ZAXJ3.js → vuln-checker-H3VJY5WX.js} +1 -1
  25. package/dist/{watch-4RHXVCQ3.js → watch-VQQHKDNQ.js} +1 -1
  26. package/package.json +3 -3
  27. package/dist/{risk-detector-plpgsql-4GWEQXUG.js → risk-detector-plpgsql-NNUZU3OQ.js} +1 -1
@@ -6,7 +6,7 @@ createRequire(import.meta.url);
6
6
 
7
7
  // src/version.ts
8
8
  init_esm_shims();
9
- var CLI_VERSION = "0.10.3";
9
+ var CLI_VERSION = "0.10.4";
10
10
  var HAS_ADMIN_COMMAND = false;
11
11
 
12
12
  export { CLI_VERSION, HAS_ADMIN_COMMAND };
@@ -9,7 +9,7 @@ init_esm_shims();
9
9
  var riskDetectorModulePromise = null;
10
10
  async function loadRiskDetectorModule() {
11
11
  if (!riskDetectorModulePromise) {
12
- riskDetectorModulePromise = import('./risk-detector-core-YI3M6INI.js').catch((error) => {
12
+ riskDetectorModulePromise = import('./risk-detector-core-CHUY6M5N.js').catch((error) => {
13
13
  riskDetectorModulePromise = null;
14
14
  throw error;
15
15
  });
@@ -1,8 +1,8 @@
1
1
  #!/usr/bin/env node
2
2
  import { createRequire } from 'module';
3
- import { env } from './chunk-UHDAYPHH.js';
3
+ import { env } from './chunk-47BG6DRP.js';
4
4
  import { redactSecrets } from './chunk-II7VYQEM.js';
5
- import { init_local_supabase, buildLocalDatabaseUrl } from './chunk-QSEF4T3Y.js';
5
+ import { init_local_supabase, buildLocalDatabaseUrl } from './chunk-F2AQ3EYJ.js';
6
6
  import { init_esm_shims } from './chunk-VRXHCR5K.js';
7
7
  import { CLIError } from '@runa-ai/runa';
8
8
 
@@ -1,25 +1,27 @@
1
1
  #!/usr/bin/env node
2
2
  import { createRequire } from 'module';
3
- import { normalizeDatabaseUrlForDdl, parseBoolish, enhanceConnectionError, isIdempotentRoleHazard, detectAppSchemas, formatSchemasForSql, getDbPlanArtifactPath, runDbApply } from './chunk-S7VGVFYF.js';
4
- import './chunk-WGRVAGSR.js';
5
- import './chunk-HWR5NUUZ.js';
6
- import './chunk-UHDAYPHH.js';
3
+ import { runDbApply } from './chunk-AYYHYZU7.js';
4
+ import { normalizeDatabaseUrlForDdl, parseBoolish, enhanceConnectionError, isIdempotentRoleHazard, detectAppSchemas, formatSchemasForSql, getDbPlanArtifactPath } from './chunk-OUMW5LKJ.js';
7
5
  import './chunk-EZ46JIEO.js';
6
+ import './chunk-ZDETCPCE.js';
7
+ import './chunk-HWR5NUUZ.js';
8
+ import './chunk-47BG6DRP.js';
9
+ import { createInitialSummary, resolveMode, appendGithubStepSummary, buildCiProdApplyStepSummaryMarkdown, setSummaryErrorFromUnknown, writeEnvLocal, startAppBackground, waitForAppReady, executePrSetupBase, createErrorOutput, requireCiAutoApprove, resolveProdApplyInputs, parseIntOr, classifyCiProdApplyError, addGithubMask } from './chunk-EXR4J2JT.js';
10
+ import './chunk-O3M7A73M.js';
11
+ import { parsePostgresUrl, buildPsqlArgs, buildPsqlEnv, psqlSyncQuery } from './chunk-A6A7JIRD.js';
8
12
  import './chunk-IWVXI5O4.js';
9
- import './chunk-SS7RIWW3.js';
13
+ import './chunk-WIT46HVC.js';
10
14
  import './chunk-B7C7CLW2.js';
11
15
  import './chunk-QDF7QXBL.js';
12
16
  import { getSnapshotStateName, getSnapshotStatePaths, isSnapshotComplete } from './chunk-XVNDDHAF.js';
13
- import { createInitialSummary, resolveMode, appendGithubStepSummary, buildCiProdApplyStepSummaryMarkdown, setSummaryErrorFromUnknown, writeEnvLocal, startAppBackground, waitForAppReady, executePrSetupBase, createErrorOutput, requireCiAutoApprove, resolveProdApplyInputs, parseIntOr, classifyCiProdApplyError, addGithubMask } from './chunk-EXR4J2JT.js';
14
- import './chunk-O3M7A73M.js';
15
- import { parsePostgresUrl, buildPsqlArgs, buildPsqlEnv, psqlSyncQuery } from './chunk-A6A7JIRD.js';
16
17
  import { ensureRunaTmpDir, runLogged } from './chunk-ELXXQIGW.js';
17
18
  import { createMachineStateChangeLogger } from './chunk-5FT3F36G.js';
18
19
  import { getSafeEnv, getFilteredEnv, redactSecrets } from './chunk-II7VYQEM.js';
19
- import { init_constants, init_local_supabase, detectLocalSupabasePorts } from './chunk-QSEF4T3Y.js';
20
+ import { init_constants } from './chunk-NOXYPVMZ.js';
20
21
  import { emitJsonSuccess } from './chunk-KE6QJBZG.js';
21
22
  import './chunk-WJXC4MVY.js';
22
23
  import { setOutputFormat } from './chunk-HKUWEGUX.js';
24
+ import { init_local_supabase, detectLocalSupabasePorts } from './chunk-F2AQ3EYJ.js';
23
25
  import './chunk-OERS32LW.js';
24
26
  import './chunk-GT5DMS5R.js';
25
27
  import { init_esm_shims } from './chunk-VRXHCR5K.js';
@@ -2,7 +2,7 @@
2
2
  import { createRequire } from 'module';
3
3
  import { enableNonInteractiveMode } from './chunk-6Y3LAUGL.js';
4
4
  import { getRequestedCommandNameFromArgv } from './chunk-UWWSAPDR.js';
5
- import { CLI_VERSION, HAS_ADMIN_COMMAND } from './chunk-SS7RIWW3.js';
5
+ import { CLI_VERSION, HAS_ADMIN_COMMAND } from './chunk-WIT46HVC.js';
6
6
  import { emitDefaultSuccessIfNeeded } from './chunk-WJXC4MVY.js';
7
7
  import { parseOutputFormat, setOutputFormat, getOutputFormatFromEnv } from './chunk-HKUWEGUX.js';
8
8
  import { init_esm_shims } from './chunk-VRXHCR5K.js';
@@ -165,12 +165,12 @@ async function registerProjectLifecycleCommands(program, requested, loadAllComma
165
165
  return;
166
166
  }
167
167
  if (requested === "build") {
168
- const { buildCommand: buildCommand2 } = await import('./build-P2A6345N.js');
168
+ const { buildCommand: buildCommand2 } = await import('./build-C65G2QQE.js');
169
169
  program.addCommand(buildCommand2);
170
170
  return;
171
171
  }
172
172
  if (requested === "dev") {
173
- const { devCommand: devCommand2 } = await import('./dev-QR55VDNZ.js');
173
+ const { devCommand: devCommand2 } = await import('./dev-N3BFJZ7F.js');
174
174
  program.addCommand(devCommand2);
175
175
  return;
176
176
  }
@@ -187,8 +187,8 @@ async function registerProjectLifecycleCommands(program, requested, loadAllComma
187
187
  import('./prepare-32DOVHTE.js'),
188
188
  import('./upgrade-X7P6WRD5.js'),
189
189
  import('./validate-CAAW4Y44.js'),
190
- import('./build-P2A6345N.js'),
191
- import('./dev-QR55VDNZ.js')
190
+ import('./build-C65G2QQE.js'),
191
+ import('./dev-N3BFJZ7F.js')
192
192
  ]);
193
193
  program.addCommand(initCommand);
194
194
  program.addCommand(prepareCommand);
@@ -462,11 +462,11 @@ async function registerFocusedStatusUtilityCommand(program, requested) {
462
462
  return false;
463
463
  }
464
464
  async function registerCiCommand(program) {
465
- const { ciCommand } = await import('./ci-6P7VK6WB.js');
465
+ const { ciCommand } = await import('./ci-Q4PLRFPB.js');
466
466
  program.addCommand(ciCommand);
467
467
  }
468
468
  async function registerDbCommand(program) {
469
- const { dbCommand } = await import('./db-BQOVOQXU.js');
469
+ const { dbCommand } = await import('./db-MB3LQIGI.js');
470
470
  program.addCommand(dbCommand);
471
471
  }
472
472
  async function registerServicesCommand(program) {
@@ -474,11 +474,11 @@ async function registerServicesCommand(program) {
474
474
  program.addCommand(servicesCommand);
475
475
  }
476
476
  async function registerEnvCommand(program) {
477
- const { envCommand } = await import('./env-KYR6Q7WO.js');
477
+ const { envCommand } = await import('./env-2XM45E7O.js');
478
478
  program.addCommand(envCommand);
479
479
  }
480
480
  async function registerHotfixCommand(program) {
481
- const { hotfixCommand } = await import('./hotfix-JYHDY2M6.js');
481
+ const { hotfixCommand } = await import('./hotfix-QP5J6FCD.js');
482
482
  program.addCommand(hotfixCommand);
483
483
  }
484
484
  async function registerSdkCommand(program) {
@@ -490,7 +490,7 @@ async function registerUiCommand(program) {
490
490
  program.addCommand(uiCommand);
491
491
  }
492
492
  async function registerWatchCommand(program) {
493
- const { watchCommand } = await import('./watch-4RHXVCQ3.js');
493
+ const { watchCommand } = await import('./watch-VQQHKDNQ.js');
494
494
  program.addCommand(watchCommand);
495
495
  }
496
496
  async function registerWorkflowCommand(program) {
@@ -498,7 +498,7 @@ async function registerWorkflowCommand(program) {
498
498
  program.addCommand(workflowCommand);
499
499
  }
500
500
  async function registerVulnCheckCommand(program) {
501
- const { vulnCheckCommand } = await import('./vuln-check-WW43E7PS.js');
501
+ const { vulnCheckCommand } = await import('./vuln-check-JSPRI5ZY.js');
502
502
  program.addCommand(vulnCheckCommand);
503
503
  }
504
504
  async function registerTemplateCheckCommand(program) {
@@ -714,7 +714,7 @@ async function executeProgram(program) {
714
714
  silent: true
715
715
  });
716
716
  await enforceLicenseInCI();
717
- await import('./env-XPPACZM4.js');
717
+ await import('./env-KIMSQSPS.js');
718
718
  }
719
719
  await program.parseAsync(process.argv);
720
720
  }
@@ -1,30 +1,32 @@
1
1
  #!/usr/bin/env node
2
2
  import { createRequire } from 'module';
3
- import { detectDatabaseStack, getStackPaths } from './chunk-MILCC3B6.js';
4
- import { categorizeRisks, detectSchemaRisks } from './chunk-XFXGFUAM.js';
5
- import { isExecaError, resolveDbPreviewEnvironment, buildDbPlanCommandLabel, runDbApply, buildDbApplyCliError, DbPlanOutputSchema, parseDbPreviewProfile, DEFAULT_DB_PREVIEW_PROFILE, getDbPreviewModeLabel, buildDbPreviewCommandLabel, isCompareOnlyPreviewProfile, DbApplyOutputSchema, applyCommand, getDbPreviewIdempotentSchemaCount, classifyDbSyncCommandFailure, getDbSyncFallbackSuggestions, detectAppSchemas, normalizeDatabaseUrlForDdl, analyzeDuplicateFunctionOwnership, formatDuplicateFunctionOwnershipFinding, reviewDeclarativeDependencyWarnings, logDeclarativeDependencyWarnings, buildDeclarativeDependencyWarningFailureLines, parsePlanOutput, validateDependencyOrder, getBoundaryPolicy, resolveProductionApplyStrictMode, findDeclarativeRiskAllowlistMatch, assertBoundaryPolicyUsable, assertBoundaryPolicyQualityGate, formatSchemasForSql, findDirectoryPlacementAllowlistMatch, formatAllowlistMetadata, FUNCTION_ACL_RECONCILIATION_RELATIVE_PATH, functionAclManifestHasEntries, validateFunctionAclMigration, isManagedFunctionAclFileContentStale, renderFunctionAclFile, assessPlanSize, formatPlanSizeSummary, buildFunctionAclManifestFromSqlFiles, buildFunctionAclIdempotentTouchMetadata, stableSorted, normalizePolicyCommand, normalizeFileList, extractFunctionOwnershipDefinition, SECURITY_DEFINER_RE, MANAGED_BOUNDARY_SCHEMAS, currentIsoTimestamp, makeGraphVersion, GENERATOR_VERSION, MAX_SCHEMA_GUIDANCE_TARGETS_PER_FILE, QUALIFIED_SQL_OBJECT_RE, SEARCH_PATH_LOCK_RE, TRIGGER_GUIDANCE_SUPPRESSED_FUNCTIONS, SQL_EXTENSION_IDENTIFIER_PATTERN, SQL_IDENTIFIER_PATTERN } from './chunk-S7VGVFYF.js';
6
3
  import { createError } from './chunk-NIS77243.js';
7
- import { resolveDatabaseUrl, resolveDatabaseTarget, tryResolveDatabaseUrl } from './chunk-WGRVAGSR.js';
8
- export { resolveDatabaseUrl, tryResolveDatabaseUrl } from './chunk-WGRVAGSR.js';
9
- import { analyzeDeclarativeDependencyContract, formatDeclarativeDependencyViolation, parseSqlFilename, collectSqlFiles, splitSqlStatements, ALLOW_DYNAMIC_SQL_ANNOTATION, extractFirstDollarBody, sanitizeExecutableCode, detectExtensionFilePath, FUNCTION_DEFINITION_RE, blankQuotedStrings, sanitizeExecutableCodePreserveStrings, countNewlines, shouldReviewUnknownDeclarativeDdl, extractDdlObject, isNonSchemaOperation, isNonDdlMaintenanceStatement, shouldReviewUnknownIdempotentDdl } from './chunk-HWR5NUUZ.js';
10
- import './chunk-UHDAYPHH.js';
4
+ import { detectDatabaseStack, getStackPaths } from './chunk-MILCC3B6.js';
5
+ import { categorizeRisks, detectSchemaRisks } from './chunk-XVGMGFKF.js';
6
+ import { isExecaError, resolveDbPreviewEnvironment, buildDbPlanCommandLabel, runDbApply, buildDbApplyCliError, parseDbPreviewProfile, DEFAULT_DB_PREVIEW_PROFILE, getDbPreviewModeLabel, buildDbPreviewCommandLabel, isCompareOnlyPreviewProfile, applyCommand, getDbPreviewIdempotentSchemaCount, classifyDbSyncCommandFailure, getDbSyncFallbackSuggestions, reviewDeclarativeDependencyWarnings, logDeclarativeDependencyWarnings, buildDeclarativeDependencyWarningFailureLines, getBoundaryPolicy, resolveProductionApplyStrictMode, findDeclarativeRiskAllowlistMatch, assertBoundaryPolicyUsable, assertBoundaryPolicyQualityGate, findDirectoryPlacementAllowlistMatch, formatAllowlistMetadata, assessPlanSize, formatPlanSizeSummary } from './chunk-AYYHYZU7.js';
7
+ import { DbPlanOutputSchema, DbApplyOutputSchema, detectAppSchemas, normalizeDatabaseUrlForDdl, analyzeDuplicateFunctionOwnership, formatDuplicateFunctionOwnershipFinding, parsePlanOutput, validateDependencyOrder, formatSchemasForSql, FUNCTION_ACL_RECONCILIATION_RELATIVE_PATH, functionAclManifestHasEntries, validateFunctionAclMigration, isManagedFunctionAclFileContentStale, renderFunctionAclFile, buildFunctionAclManifestFromSqlFiles, buildFunctionAclIdempotentTouchMetadata, stableSorted, normalizePolicyCommand, normalizeFileList, extractFunctionOwnershipDefinition, SECURITY_DEFINER_RE, MANAGED_BOUNDARY_SCHEMAS, currentIsoTimestamp, makeGraphVersion, GENERATOR_VERSION, MAX_SCHEMA_GUIDANCE_TARGETS_PER_FILE, QUALIFIED_SQL_OBJECT_RE, SEARCH_PATH_LOCK_RE, TRIGGER_GUIDANCE_SUPPRESSED_FUNCTIONS, SQL_EXTENSION_IDENTIFIER_PATTERN, SQL_IDENTIFIER_PATTERN } from './chunk-OUMW5LKJ.js';
11
8
  import './chunk-EZ46JIEO.js';
9
+ import { resolveDatabaseUrl, resolveDatabaseTarget, tryResolveDatabaseUrl } from './chunk-ZDETCPCE.js';
10
+ export { resolveDatabaseUrl, tryResolveDatabaseUrl } from './chunk-ZDETCPCE.js';
11
+ import { analyzeDeclarativeDependencyContract, formatDeclarativeDependencyViolation, parseSqlFilename, collectSqlFiles, splitSqlStatements, ALLOW_DYNAMIC_SQL_ANNOTATION, extractFirstDollarBody, sanitizeExecutableCode, detectExtensionFilePath, FUNCTION_DEFINITION_RE, blankQuotedStrings, sanitizeExecutableCodePreserveStrings, countNewlines, shouldReviewUnknownDeclarativeDdl, extractDdlObject, isNonSchemaOperation, isNonDdlMaintenanceStatement, shouldReviewUnknownIdempotentDdl } from './chunk-HWR5NUUZ.js';
12
+ import './chunk-47BG6DRP.js';
13
+ import { writeEnvLocalBridge, removeEnvLocalBridge } from './chunk-KUH3G522.js';
14
+ import { extractSchemaTablesAndEnums, fetchDbTablesAndEnums, extractTablesFromIdempotentSql, extractDynamicTablePatternsFromIdempotentSql, diffSchema, getSqlParserUtils, buildTablePatternMatcher } from './chunk-O3M7A73M.js';
15
+ import { psqlExec, psqlQuery, blankDollarQuotedBodies, stripSqlComments, parsePostgresUrl, buildPsqlArgs, buildPsqlEnv } from './chunk-A6A7JIRD.js';
12
16
  import { loadEnvFiles } from './chunk-IWVXI5O4.js';
13
- import './chunk-SS7RIWW3.js';
17
+ import './chunk-WIT46HVC.js';
14
18
  import { diagnoseSupabaseStart } from './chunk-AAIE4F2U.js';
15
19
  import { validateUserFilePath, filterSafePaths, resolveSafePath } from './chunk-B7C7CLW2.js';
16
20
  import { runMachine } from './chunk-QDF7QXBL.js';
17
21
  import './chunk-XVNDDHAF.js';
18
- import { writeEnvLocalBridge, removeEnvLocalBridge } from './chunk-KUH3G522.js';
19
- import { extractSchemaTablesAndEnums, fetchDbTablesAndEnums, extractTablesFromIdempotentSql, extractDynamicTablePatternsFromIdempotentSql, diffSchema, getSqlParserUtils, buildTablePatternMatcher } from './chunk-O3M7A73M.js';
20
- import { psqlExec, psqlQuery, blankDollarQuotedBodies, stripSqlComments, parsePostgresUrl, buildPsqlArgs, buildPsqlEnv } from './chunk-A6A7JIRD.js';
21
22
  import { redactSecrets } from './chunk-II7VYQEM.js';
22
- import { init_local_supabase, init_constants, detectLocalSupabasePorts, buildLocalDatabaseUrl, DATABASE_DEFAULTS, SEED_DEFAULTS, SCRIPT_LOCATIONS } from './chunk-QSEF4T3Y.js';
23
- export { DATABASE_DEFAULTS, SCRIPT_LOCATIONS, SEED_DEFAULTS } from './chunk-QSEF4T3Y.js';
23
+ import { init_constants, DATABASE_DEFAULTS, SEED_DEFAULTS, SCRIPT_LOCATIONS } from './chunk-NOXYPVMZ.js';
24
+ export { DATABASE_DEFAULTS, SCRIPT_LOCATIONS, SEED_DEFAULTS } from './chunk-NOXYPVMZ.js';
24
25
  import { secureSupabase, secureDocker } from './chunk-RZLYEO4U.js';
25
26
  import { emitJsonSuccess } from './chunk-KE6QJBZG.js';
26
27
  import './chunk-WJXC4MVY.js';
27
28
  import { getOutputFormatFromEnv } from './chunk-HKUWEGUX.js';
29
+ import { init_local_supabase, detectLocalSupabasePorts, buildLocalDatabaseUrl } from './chunk-F2AQ3EYJ.js';
28
30
  import { getDatabasePackagePath, loadRunaConfig, getSDKScriptsPath } from './chunk-OERS32LW.js';
29
31
  import { findRunaConfig, findWorkspaceRoot } from './chunk-GT5DMS5R.js';
30
32
  import { init_esm_shims } from './chunk-VRXHCR5K.js';
@@ -4205,7 +4207,7 @@ init_esm_shims();
4205
4207
  var riskDetectorLoader = null;
4206
4208
  function loadRiskDetectorModule() {
4207
4209
  if (!riskDetectorLoader) {
4208
- riskDetectorLoader = import('./risk-detector-GDDLISVE.js').then((module) => ({
4210
+ riskDetectorLoader = import('./risk-detector-4D5HRUMY.js').then((module) => ({
4209
4211
  detectSchemaRisks: module.detectSchemaRisks
4210
4212
  })).catch((error) => {
4211
4213
  riskDetectorLoader = null;
@@ -8429,6 +8431,37 @@ function tryGetProductionAdminUrl(targetDir) {
8429
8431
  }
8430
8432
  return void 0;
8431
8433
  }
8434
+ function validateProductionPlan(planOutput, log) {
8435
+ if (!planOutput.trim() || planOutput.includes("No changes")) {
8436
+ log.info("\u2705 Production schema is up-to-date (no changes needed)");
8437
+ return;
8438
+ }
8439
+ const plan = parsePlanOutput(planOutput);
8440
+ const orderIssues = validateDependencyOrder(plan);
8441
+ if (orderIssues.length > 0) {
8442
+ for (const issue of orderIssues) {
8443
+ logger3.error(issue);
8444
+ }
8445
+ throw new Error(
8446
+ `\u274C Production DDL ordering issue detected (${orderIssues.length} problem(s)):
8447
+ ` + orderIssues.map((i) => ` \u2022 ${i}`).join("\n") + "\n\nThis plan would fail during production deploy. The automatic reorder will attempt to fix this, but review the ordering."
8448
+ );
8449
+ }
8450
+ log.info("\u2705 Production DDL ordering verified");
8451
+ }
8452
+ async function resolveTempDbDsnForProductionCheck(targetDir) {
8453
+ const envDsn = process.env.PG_SCHEMA_DIFF_TEMP_DB_DSN?.trim();
8454
+ if (envDsn) return envDsn;
8455
+ try {
8456
+ const { buildLocalDatabaseUrl: buildLocalDatabaseUrl2 } = await import('./local-supabase-KTTC3O2L.js');
8457
+ const { verifyDatabaseConnection } = await import('./helpers-PDT3WQNF.js');
8458
+ const localDsn = buildLocalDatabaseUrl2(targetDir);
8459
+ await verifyDatabaseConnection(localDsn, { maxRetries: 0 });
8460
+ return localDsn;
8461
+ } catch {
8462
+ }
8463
+ return void 0;
8464
+ }
8432
8465
  async function runProductionDdlOrderCheck(params) {
8433
8466
  const productionUrl = tryGetProductionAdminUrl(params.targetDir);
8434
8467
  if (productionUrl) {
@@ -8448,30 +8481,16 @@ async function runProductionDdlOrderCheck(params) {
8448
8481
  params.logger.info("\u{1F50D} Checking production DDL ordering...");
8449
8482
  try {
8450
8483
  const { executePgSchemaDiffPlan } = await import('./pg-schema-diff-helpers-JZO4GAQG.js');
8484
+ const tempDbDsn = await resolveTempDbDsnForProductionCheck(params.targetDir);
8451
8485
  const { planOutput } = executePgSchemaDiffPlan(
8452
8486
  productionUrl,
8453
8487
  schemasDir,
8454
8488
  includeSchemas,
8455
8489
  false,
8456
8490
  // not verbose
8457
- { targetDir: params.targetDir }
8491
+ { targetDir: params.targetDir, tempDbDsn }
8458
8492
  );
8459
- if (!planOutput.trim() || planOutput.includes("No changes")) {
8460
- params.logger.info("\u2705 Production schema is up-to-date (no changes needed)");
8461
- return;
8462
- }
8463
- const plan = parsePlanOutput(planOutput);
8464
- const orderIssues = validateDependencyOrder(plan);
8465
- if (orderIssues.length > 0) {
8466
- for (const issue of orderIssues) {
8467
- logger3.error(issue);
8468
- }
8469
- throw new Error(
8470
- `\u274C Production DDL ordering issue detected (${orderIssues.length} problem(s)):
8471
- ` + orderIssues.map((i) => ` \u2022 ${i}`).join("\n") + "\n\nThis plan would fail during production deploy. The automatic reorder will attempt to fix this, but review the ordering."
8472
- );
8473
- }
8474
- params.logger.info("\u2705 Production DDL ordering verified");
8493
+ validateProductionPlan(planOutput, params.logger);
8475
8494
  } catch (error) {
8476
8495
  if (error instanceof Error && error.message.includes("DDL ordering issue")) {
8477
8496
  throw error;
@@ -4,16 +4,17 @@ import { startAppBackground, waitForAppReady, detectApp } from './chunk-EXR4J2JT
4
4
  import { writeEnvLocalBridge } from './chunk-KUH3G522.js';
5
5
  import { generateTablesManifest } from './chunk-O3M7A73M.js';
6
6
  import './chunk-A6A7JIRD.js';
7
- import { manifestActor, supabaseStartActor, envCheckActor, depsInstallActor, detectManifestTask, detectDatabase } from './chunk-MAFJAA2P.js';
7
+ import { manifestActor, supabaseStartActor, envCheckActor, depsInstallActor, detectManifestTask, detectDatabase } from './chunk-C3SRIUWX.js';
8
8
  import { findRepoRoot } from './chunk-3WDV32GA.js';
9
9
  import './chunk-ELXXQIGW.js';
10
10
  import { createMachineStateChangeLogger } from './chunk-5FT3F36G.js';
11
11
  import './chunk-II7VYQEM.js';
12
- import { init_local_supabase, buildLocalDatabaseUrl, detectLocalSupabasePorts } from './chunk-QSEF4T3Y.js';
12
+ import './chunk-NOXYPVMZ.js';
13
13
  import { secureExeca } from './chunk-RZLYEO4U.js';
14
14
  import { emitJsonSuccess } from './chunk-KE6QJBZG.js';
15
15
  import './chunk-WJXC4MVY.js';
16
16
  import './chunk-HKUWEGUX.js';
17
+ import { init_local_supabase, buildLocalDatabaseUrl, detectLocalSupabasePorts } from './chunk-F2AQ3EYJ.js';
17
18
  import './chunk-OERS32LW.js';
18
19
  import './chunk-GT5DMS5R.js';
19
20
  import { init_esm_shims } from './chunk-VRXHCR5K.js';
@@ -2,17 +2,18 @@
2
2
  import { createRequire } from 'module';
3
3
  import { isNonInteractiveEnabled } from './chunk-6Y3LAUGL.js';
4
4
  import { registerCleanup } from './chunk-TYIAD6SB.js';
5
- import { tryResolveDatabaseUrl } from './chunk-WGRVAGSR.js';
6
- import './chunk-UHDAYPHH.js';
5
+ import { tryResolveDatabaseUrl } from './chunk-ZDETCPCE.js';
6
+ import './chunk-47BG6DRP.js';
7
7
  import { loadEnvFiles } from './chunk-IWVXI5O4.js';
8
8
  import { getVercelRootDirectory } from './chunk-MXRWBNIY.js';
9
9
  import { syncRunaConfigWithVercel } from './chunk-6AALH2ED.js';
10
10
  import './chunk-B7C7CLW2.js';
11
11
  import './chunk-II7VYQEM.js';
12
- import { init_local_supabase, getLocalSupabaseEnvValues, getLocalValueDescriptions } from './chunk-QSEF4T3Y.js';
12
+ import './chunk-NOXYPVMZ.js';
13
13
  import { emitJsonSuccess } from './chunk-KE6QJBZG.js';
14
14
  import './chunk-WJXC4MVY.js';
15
15
  import './chunk-HKUWEGUX.js';
16
+ import { init_local_supabase, getLocalSupabaseEnvValues, getLocalValueDescriptions } from './chunk-F2AQ3EYJ.js';
16
17
  import './chunk-GT5DMS5R.js';
17
18
  import { init_esm_shims } from './chunk-VRXHCR5K.js';
18
19
  import { Command } from 'commander';
@@ -1,7 +1,8 @@
1
1
  #!/usr/bin/env node
2
2
  import { createRequire } from 'module';
3
- export { env, getDatabaseUrl, hasEnv, isCI, isDebug, sanitizeEnv } from './chunk-UHDAYPHH.js';
4
- import './chunk-QSEF4T3Y.js';
3
+ export { env, getDatabaseUrl, hasEnv, isCI, isDebug, sanitizeEnv } from './chunk-47BG6DRP.js';
4
+ import './chunk-NOXYPVMZ.js';
5
+ import './chunk-F2AQ3EYJ.js';
5
6
  import './chunk-VRXHCR5K.js';
6
7
 
7
8
  createRequire(import.meta.url);
@@ -0,0 +1,15 @@
1
+ #!/usr/bin/env node
2
+ import { createRequire } from 'module';
3
+ export { ALLOWED_DDL_PREFIXES, BASE_DELAY_MS, BLOCKED_SQL_PATTERNS, DEFAULT_MAX_DELAY_MS, DbPlanArtifactSchema, MAX_RETRIES, MIGRATION_LOCK_ID, acquireAdvisoryLock, backupIdempotentTables, bootstrapTempDbFromSource, buildAllowedHazards, buildCheckConstraintQuery, buildCheckModePlanSummary, buildNotNullQuery, buildTargetFingerprint, buildTempDbBootstrapStatements, buildTypeCastQuery, buildUniqueQuery, calculateBackoffDelay, checkDataCompatibility, checkPasswordSecurity, cleanPartitionAclsForPgSchemaDiff, cleanupOrphanShadowDatabases, createShadowDbWithExtensions, detectPartitionDrift, detectPlannerSchemas, displayCheckModeResults, displayDataCompatibilityResults, displayHazardsWithContext, executePlanSqlWithRetry, filterCheckModePlanStatements, filterFalsePositiveHazards, filterIdempotentProtectedStatements, formatPartitionWarnings, getDbPlanArtifactPath, getIdempotentProtectedObjects, getIdempotentProtectedTables, getIdempotentRoles, getTableRowEstimates, getTransactionStrategy, handleFreshDbCase, handleHazardsWithContext, handleProductionAuthzProtection, handleProductionDataProtection, hasAppTables, hasTransactionIncompatibleContent, hasTransactionIncompatibleStatements, isDropStatementForProtectedObject, isIdempotentManagedAuthzStatement, isIdempotentManagedRlsStatement, isIdempotentRoleHazard, isLockTimeoutError, isNoChangePlanOutput, isValidIdentifier, maskDbCredentials, needsShadowDb, parseAddCheck, parseAddUnique, parseAlterType, parseCreateUniqueIndex, parseDbCredentials, parseExpectedPartitions, parseHazardsWithContext, parsePlanOutput, parseSetNotNull, persistDbPlanArtifact, prefilterPartitionStubs, qualifiedTable, queryActualPartitions, quoteIdent, releaseAdvisoryLock, reorderRawSqlDependencies, resetIdempotentRolesCache, resetManagedAuthzCache, setRolePasswords, sleep, stripLeadingSessionStatements, tryReuseDbPlanArtifact, validateDependencyOrder, validateDependencyOrderFromRawSql, validatePlanForExecution, validateStatementTypes, verifyDataIntegrity, wrapInTransaction } from './chunk-OUMW5LKJ.js';
4
+ import './chunk-EZ46JIEO.js';
5
+ import './chunk-ZDETCPCE.js';
6
+ export { PG_SCHEMA_DIFF_APPLY_TIMEOUT_MS, detectDropTableStatements, detectPartitionPrivilegeError, executePgSchemaDiffPlan, formatPartitionPrivilegeHint, freeConnectionSlotsForPgSchemaDiff, startConnectionCleanupDaemon, stopConnectionCleanupDaemon, verifyDatabaseConnection, verifyPgSchemaDiffBinary } from './chunk-HWR5NUUZ.js';
7
+ import './chunk-47BG6DRP.js';
8
+ export { blankDollarQuotedBodies } from './chunk-A6A7JIRD.js';
9
+ import './chunk-WIT46HVC.js';
10
+ import './chunk-II7VYQEM.js';
11
+ import './chunk-NOXYPVMZ.js';
12
+ import './chunk-F2AQ3EYJ.js';
13
+ import './chunk-VRXHCR5K.js';
14
+
15
+ createRequire(import.meta.url);
@@ -1,12 +1,13 @@
1
1
  #!/usr/bin/env node
2
2
  import { createRequire } from 'module';
3
3
  import { createError } from './chunk-NIS77243.js';
4
- import { tryResolveDatabaseUrl } from './chunk-WGRVAGSR.js';
5
- import './chunk-UHDAYPHH.js';
4
+ import { tryResolveDatabaseUrl } from './chunk-ZDETCPCE.js';
5
+ import './chunk-47BG6DRP.js';
6
6
  import { loadEnvFiles } from './chunk-IWVXI5O4.js';
7
7
  import { isPathContained } from './chunk-B7C7CLW2.js';
8
8
  import './chunk-II7VYQEM.js';
9
- import './chunk-QSEF4T3Y.js';
9
+ import './chunk-NOXYPVMZ.js';
10
+ import './chunk-F2AQ3EYJ.js';
10
11
  import './chunk-GT5DMS5R.js';
11
12
  import { init_esm_shims } from './chunk-VRXHCR5K.js';
12
13
  import { Command } from 'commander';
package/dist/index.js CHANGED
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
  import { createRequire } from 'module';
3
3
  import { getRequestedCommandNameFromArgv } from './chunk-UWWSAPDR.js';
4
- import { CLI_VERSION } from './chunk-SS7RIWW3.js';
4
+ import { CLI_VERSION } from './chunk-WIT46HVC.js';
5
5
  import { init_esm_shims } from './chunk-VRXHCR5K.js';
6
6
  import { realpathSync } from 'fs';
7
7
  import { fileURLToPath } from 'url';
@@ -36,7 +36,7 @@ async function getProgram(options) {
36
36
  };
37
37
  const nextKey = getProgramCacheKey(resolvedOptions);
38
38
  if (!programInstance || programCacheKey !== nextKey) {
39
- const { createProgram } = await import('./cli-Q665YRVT.js');
39
+ const { createProgram } = await import('./cli-LS2THG3F.js');
40
40
  programInstance = await createProgram(resolvedOptions);
41
41
  programCacheKey = nextKey;
42
42
  }
@@ -60,7 +60,7 @@ async function runCliFromProcessArgv() {
60
60
  return;
61
61
  }
62
62
  const { setupSignalHandlers } = await import('./signal-handler-DO3OANW5.js');
63
- const { executeProgram } = await import('./cli-Q665YRVT.js');
63
+ const { executeProgram } = await import('./cli-LS2THG3F.js');
64
64
  setupSignalHandlers();
65
65
  const options = getProgramLoadOptions(argv);
66
66
  const program = await getProgram(options);
@@ -0,0 +1,8 @@
1
+ #!/usr/bin/env node
2
+ import { createRequire } from 'module';
3
+ import { init_local_supabase } from './chunk-F2AQ3EYJ.js';
4
+ export { LOCAL_DATABASE_URL, LOCAL_REPLACEMENT_KEYS, LOCAL_SUPABASE_ANON_KEY, LOCAL_SUPABASE_ENV_VALUES, LOCAL_SUPABASE_SERVICE_ROLE_KEY, LOCAL_SUPABASE_URL, LOCAL_VALUE_DESCRIPTIONS, buildLocalDatabaseUrl, buildLocalSupabaseUrl, clearLocalSupabaseDetectionCache, detectLocalSupabasePorts, getLocalSupabaseEnvValues, getLocalValueDescriptions, parseTomlPort, validateLocalhostValues } from './chunk-F2AQ3EYJ.js';
5
+ import './chunk-VRXHCR5K.js';
6
+
7
+ createRequire(import.meta.url);
8
+ init_local_supabase();
@@ -1,6 +1,6 @@
1
1
  #!/usr/bin/env node
2
2
  import { createRequire } from 'module';
3
- export { categorizeRisks, detectSchemaRisks } from './chunk-XFXGFUAM.js';
3
+ export { categorizeRisks, detectSchemaRisks } from './chunk-XVGMGFKF.js';
4
4
  import './chunk-VRXHCR5K.js';
5
5
 
6
6
  createRequire(import.meta.url);
@@ -54,7 +54,7 @@ var UNQUALIFIED_EXTENSION_REFERENCE_PATTERNS = [
54
54
  var plpgsqlModulePromise = null;
55
55
  async function loadPlpgsqlRiskDetectorModule() {
56
56
  if (!plpgsqlModulePromise) {
57
- plpgsqlModulePromise = import('./risk-detector-plpgsql-4GWEQXUG.js').catch((error) => {
57
+ plpgsqlModulePromise = import('./risk-detector-plpgsql-NNUZU3OQ.js').catch((error) => {
58
58
  plpgsqlModulePromise = null;
59
59
  throw error;
60
60
  });
@@ -71,7 +71,7 @@ var vulnCheckCommand = new Command("vuln-check").description("Run comprehensive
71
71
  const logger = createCLILogger("vuln-check");
72
72
  const isJsonMode = getOutputFormatFromEnv() === "json" || options.format === "json";
73
73
  try {
74
- const { VulnChecker } = await import('./vuln-checker-BC3ZAXJ3.js');
74
+ const { VulnChecker } = await import('./vuln-checker-H3VJY5WX.js');
75
75
  const categoryMap = {
76
76
  code: ["injection", "auth", "crypto"],
77
77
  deps: ["dependency"],
@@ -1,6 +1,6 @@
1
1
  #!/usr/bin/env node
2
2
  import { createRequire } from 'module';
3
- import { CLI_VERSION } from './chunk-SS7RIWW3.js';
3
+ import { CLI_VERSION } from './chunk-WIT46HVC.js';
4
4
  import { init_esm_shims } from './chunk-VRXHCR5K.js';
5
5
  import { glob } from 'glob';
6
6
  import { exec } from 'child_process';
@@ -284,7 +284,7 @@ function validateSqlSchema(content, errors, warnings) {
284
284
  var riskDetectorLoader = null;
285
285
  function loadRiskDetectorModule() {
286
286
  if (!riskDetectorLoader) {
287
- riskDetectorLoader = import('./risk-detector-GDDLISVE.js').then((module) => ({
287
+ riskDetectorLoader = import('./risk-detector-4D5HRUMY.js').then((module) => ({
288
288
  detectSchemaRisks: module.detectSchemaRisks
289
289
  })).catch((error) => {
290
290
  riskDetectorLoader = null;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@runa-ai/runa-cli",
3
- "version": "0.10.3",
3
+ "version": "0.10.4",
4
4
  "private": false,
5
5
  "description": "AI-powered DevOps CLI",
6
6
  "type": "module",
@@ -56,8 +56,8 @@
56
56
  "typescript": "5.9.3",
57
57
  "xstate": "5.28.0",
58
58
  "zod": "4.3.6",
59
- "@runa-ai/runa": "0.10.0",
60
- "@runa-ai/runa-xstate-test-plugin": "0.10.0"
59
+ "@runa-ai/runa-xstate-test-plugin": "0.10.0",
60
+ "@runa-ai/runa": "0.10.0"
61
61
  },
62
62
  "engines": {
63
63
  "node": ">=20.0.0"
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
  import { createRequire } from 'module';
3
- import { splitPlpgsqlStatementsWithOffsets, parseTopLevelAssignment, extractExecuteExpressions, skipWhitespace, extractStaticSqlFromExpression, mergeStringEnvValue, skipIdentifier } from './chunk-EZ46JIEO.js';
4
3
  import { stripSqlCommentsPreserveLines, buildLineStarts, lineNumberFromIndex, stripSqlStringsPreserveLines, detectRisksFromContent, stripSqlForPatternMatching } from './chunk-3FDQW524.js';
4
+ import { splitPlpgsqlStatementsWithOffsets, parseTopLevelAssignment, extractExecuteExpressions, skipWhitespace, extractStaticSqlFromExpression, mergeStringEnvValue, skipIdentifier } from './chunk-EZ46JIEO.js';
5
5
  import { init_esm_shims } from './chunk-VRXHCR5K.js';
6
6
 
7
7
  createRequire(import.meta.url);