@runa-ai/runa-cli 0.5.72 → 0.7.0

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 (528) hide show
  1. package/dist/build-V66FAQXB.js +1719 -0
  2. package/dist/cache-N7WNPEYF.js +111 -0
  3. package/dist/check-LOMVIRHX.js +12 -0
  4. package/dist/chunk-2APB25TT.js +442 -0
  5. package/dist/chunk-3FDQW524.js +544 -0
  6. package/dist/chunk-3WDV32GA.js +33 -0
  7. package/dist/chunk-5FT3F36G.js +59 -0
  8. package/dist/chunk-5NKWR4FF.js +254 -0
  9. package/dist/chunk-644FVGIQ.js +194 -0
  10. package/dist/chunk-6AALH2ED.js +121 -0
  11. package/dist/chunk-6FAU4IGR.js +63 -0
  12. package/dist/chunk-6Y3LAUGL.js +35 -0
  13. package/dist/chunk-7B5C6U2K.js +274 -0
  14. package/dist/chunk-AAIE4F2U.js +140 -0
  15. package/dist/chunk-AIP6MR42.js +12 -0
  16. package/dist/chunk-CCKG5R4Y.js +59 -0
  17. package/dist/chunk-DRSUEMAK.js +123 -0
  18. package/dist/chunk-FHG3ILE4.js +2011 -0
  19. package/dist/chunk-H2AHNI75.js +31 -0
  20. package/dist/chunk-HD74F6W2.js +460 -0
  21. package/dist/chunk-HKUWEGUX.js +36 -0
  22. package/dist/chunk-IBVVGH6X.js +33 -0
  23. package/dist/chunk-II7VYQEM.js +179 -0
  24. package/dist/chunk-JMJP4A47.js +204 -0
  25. package/dist/chunk-JQXOVCOP.js +574 -0
  26. package/dist/chunk-KE6QJBZG.js +41 -0
  27. package/dist/chunk-KWX3JHCY.js +85 -0
  28. package/dist/chunk-MXRWBNIY.js +74 -0
  29. package/dist/chunk-NPSRD26F.js +149 -0
  30. package/dist/chunk-QDF7QXBL.js +67 -0
  31. package/dist/chunk-QM53IQHM.js +209 -0
  32. package/dist/chunk-RZLYEO4U.js +219 -0
  33. package/dist/chunk-SGJG3BKD.js +351 -0
  34. package/dist/chunk-TYIAD6SB.js +74 -0
  35. package/dist/chunk-UWWSAPDR.js +31 -0
  36. package/dist/chunk-VM3IWOT5.js +458 -0
  37. package/dist/chunk-VRXHCR5K.js +42 -0
  38. package/dist/chunk-WJXC4MVY.js +75 -0
  39. package/dist/chunk-XDCHRVE3.js +215 -0
  40. package/dist/chunk-Z4Z5DNW4.js +1196 -0
  41. package/dist/chunk-ZZOXM6Q4.js +8 -0
  42. package/dist/ci-ZWRVWNFX.js +9298 -0
  43. package/dist/cli/contract-output.d.ts +1 -0
  44. package/dist/cli/index.d.ts +7 -1
  45. package/dist/cli/requested-command.d.ts +8 -0
  46. package/dist/cli-2JNBJUBB.js +704 -0
  47. package/dist/commands/build/actors/db-sync.d.ts +2 -0
  48. package/dist/commands/build/actors/static-checks.d.ts +7 -6
  49. package/dist/commands/build/actors/validate.d.ts +2 -0
  50. package/dist/commands/build/contract.d.ts +30 -30
  51. package/dist/commands/build/machine-dry-run.d.ts +3 -0
  52. package/dist/commands/build/machine-e2e-meta.d.ts +120 -0
  53. package/dist/commands/build/machine.d.ts +22 -22
  54. package/dist/commands/build/types.d.ts +2 -4
  55. package/dist/commands/check/commands/check.d.ts +8 -3
  56. package/dist/commands/ci/machine/actors/db/collect-schema-stats.d.ts +9 -6
  57. package/dist/commands/ci/machine/actors/db/schema-canonical-diff.d.ts +55 -0
  58. package/dist/commands/ci/machine/actors/db/schema-stats.d.ts +11 -0
  59. package/dist/commands/ci/machine/actors/db/sync-schema.d.ts +9 -1
  60. package/dist/commands/ci/machine/contract.d.ts +26 -26
  61. package/dist/commands/ci/machine/formatters/sections/final-comment.d.ts +1 -5
  62. package/dist/commands/ci/machine/formatters/sections/format-helpers.d.ts +5 -0
  63. package/dist/commands/ci/machine/formatters/sections/index.d.ts +2 -2
  64. package/dist/commands/ci/machine/formatters/sections/schema-matrix.d.ts +3 -3
  65. package/dist/commands/ci/machine/machine-execution-helpers.d.ts +40 -0
  66. package/dist/commands/ci/machine/machine-state-helpers.d.ts +14 -0
  67. package/dist/commands/ci/machine/machine.d.ts +12 -12
  68. package/dist/commands/ci/machine/types.d.ts +2 -5
  69. package/dist/commands/ci/utils/ci-summary.d.ts +15 -15
  70. package/dist/commands/ci/utils/execa-helpers.d.ts +2 -0
  71. package/dist/commands/db/apply/actors/idempotent-actors.d.ts +34 -0
  72. package/dist/commands/db/apply/actors/lock-actors.d.ts +16 -0
  73. package/dist/commands/db/apply/actors/pg-schema-diff-actors.d.ts +31 -0
  74. package/dist/commands/db/apply/actors/seed-actors.d.ts +11 -0
  75. package/dist/commands/db/apply/actors/shared.d.ts +9 -0
  76. package/dist/commands/db/apply/actors.d.ts +16 -65
  77. package/dist/commands/db/apply/contract.d.ts +8 -1
  78. package/dist/commands/db/apply/helpers/data-compatibility-checker.d.ts +3 -4
  79. package/dist/commands/db/apply/helpers/data-integrity-verifier.d.ts +37 -0
  80. package/dist/commands/db/apply/helpers/fresh-db-handler.d.ts +34 -0
  81. package/dist/commands/db/apply/helpers/hazard-handler.d.ts +60 -0
  82. package/dist/commands/db/apply/helpers/idempotent-object-registry.d.ts +96 -0
  83. package/dist/commands/db/apply/helpers/idempotent-transaction.d.ts +20 -0
  84. package/dist/commands/db/apply/helpers/index.d.ts +6 -0
  85. package/dist/commands/db/apply/helpers/partition-validator.d.ts +2 -15
  86. package/dist/commands/db/apply/helpers/pg-schema-diff-helpers.d.ts +18 -162
  87. package/dist/commands/db/apply/helpers/pg-schema-diff-patterns.d.ts +55 -0
  88. package/dist/commands/db/apply/helpers/pg-schema-diff-version.d.ts +50 -0
  89. package/dist/commands/db/apply/helpers/plan-validator.d.ts +4 -10
  90. package/dist/commands/db/apply/helpers/rbac-password-manager.d.ts +34 -0
  91. package/dist/commands/db/apply/helpers/retry-logic.d.ts +16 -2
  92. package/dist/commands/db/apply/helpers/shadow-db-manager.d.ts +1 -1
  93. package/dist/commands/db/apply/helpers/sql-utils.d.ts +26 -0
  94. package/dist/commands/db/apply/machine.d.ts +52 -1
  95. package/dist/commands/db/commands/db-apply.d.ts +18 -0
  96. package/dist/commands/db/commands/db-sync/boundary-classifier.d.ts +21 -0
  97. package/dist/commands/db/commands/db-sync/error-classifier.d.ts +9 -0
  98. package/dist/commands/db/commands/db-sync/plan-hazard-analyzer.d.ts +13 -0
  99. package/dist/commands/db/commands/db-sync/risk-reporter.d.ts +19 -0
  100. package/dist/commands/db/commands/db-sync/sql-parser.d.ts +25 -0
  101. package/dist/commands/db/commands/db-sync/types.d.ts +47 -0
  102. package/dist/commands/db/commands/db-sync.d.ts +14 -0
  103. package/dist/commands/db/sync/contract.d.ts +6 -2
  104. package/dist/commands/db/sync/machine.d.ts +2 -1
  105. package/dist/commands/db/types.d.ts +2 -0
  106. package/dist/commands/db/utils/boundary-policy/rule-compiler.d.ts +11 -0
  107. package/dist/commands/db/utils/boundary-policy/types.d.ts +105 -0
  108. package/dist/commands/db/utils/boundary-policy/validation.d.ts +20 -0
  109. package/dist/commands/db/utils/boundary-policy-runtime.d.ts +28 -0
  110. package/dist/commands/db/utils/boundary-policy.d.ts +5 -0
  111. package/dist/commands/db/utils/idempotent-risk-context.d.ts +29 -0
  112. package/dist/commands/db/utils/preflight-check.d.ts +14 -0
  113. package/dist/commands/db/utils/preflight-checks/domain-naming-checks.d.ts +106 -0
  114. package/dist/commands/db/utils/preflight-checks/orphan-checks.d.ts +36 -0
  115. package/dist/commands/db/utils/preflight-checks/schema-risk-checks.d.ts +22 -0
  116. package/dist/commands/db/utils/preflight-checks/supabase-checks.d.ts +55 -0
  117. package/dist/commands/db/utils/risk-detector-loader.d.ts +8 -0
  118. package/dist/commands/db/utils/schema-precheck-budget.d.ts +17 -0
  119. package/dist/commands/db/utils/sql-boundary-parser.d.ts +12 -0
  120. package/dist/commands/db/utils/sql-file-collector.d.ts +8 -0
  121. package/dist/commands/db/utils/sql-filename-parser.d.ts +20 -0
  122. package/dist/commands/db/utils/sql-table-extractor-ast.d.ts +19 -0
  123. package/dist/commands/db/utils/sql-table-extractor-regex.d.ts +50 -0
  124. package/dist/commands/db/utils/sql-table-extractor-rls.d.ts +13 -0
  125. package/dist/commands/db/utils/sql-table-extractor.d.ts +79 -1
  126. package/dist/commands/db/utils/table-registry-introspection.d.ts +68 -0
  127. package/dist/commands/db/utils/table-registry.d.ts +3 -38
  128. package/dist/commands/dev/actors/app-lifecycle.d.ts +18 -0
  129. package/dist/commands/dev/actors/index.d.ts +12 -2
  130. package/dist/commands/dev/actors/process-check.d.ts +12 -0
  131. package/dist/commands/dev/actors/shared.d.ts +15 -0
  132. package/dist/commands/dev/actors/tables-manifest.d.ts +16 -0
  133. package/dist/commands/dev/contract.d.ts +3 -3
  134. package/dist/commands/dev/guards.d.ts +24 -0
  135. package/dist/commands/dev/machine.d.ts +27 -32
  136. package/dist/commands/dev/types.d.ts +2 -0
  137. package/dist/commands/doctor.d.ts +9 -0
  138. package/dist/commands/env/commands/env-pull/auth.d.ts +13 -0
  139. package/dist/commands/env/commands/env-pull/dotenv-files.d.ts +14 -0
  140. package/dist/commands/env/commands/env-pull/security.d.ts +12 -0
  141. package/dist/commands/env/commands/env-pull/service.d.ts +8 -0
  142. package/dist/commands/env/commands/env-pull/shared.d.ts +79 -0
  143. package/dist/commands/env/commands/setup/types.d.ts +1 -1
  144. package/dist/commands/env/constants/local-supabase.d.ts +2 -0
  145. package/dist/commands/inject-test-attrs/defaults.d.ts +9 -0
  146. package/dist/commands/template-check/contract.d.ts +6 -6
  147. package/dist/commands/template-check/machine.d.ts +2 -2
  148. package/dist/commands/template-check/types.d.ts +0 -4
  149. package/dist/commands/template-check/utils/diff-analyzer.d.ts +0 -4
  150. package/dist/commands/utils/machine-state-logging.d.ts +20 -0
  151. package/dist/commands/utils/repo-root.d.ts +2 -0
  152. package/dist/config/env.d.ts +4 -4
  153. package/dist/config-loader-GT3HAQ7U.js +7 -0
  154. package/dist/db-XULCILOU.js +14137 -0
  155. package/dist/dev-5YXNPTCJ.js +992 -0
  156. package/dist/doctor-MZLOA53G.js +44 -0
  157. package/dist/env-HMMRSYCI.js +7 -0
  158. package/dist/env-SS66PZ4B.js +2623 -0
  159. package/dist/env-files-2UIUYLLR.js +8 -0
  160. package/dist/error-handler-HEXBRNVV.js +460 -0
  161. package/dist/hotfix-YA3DGLOM.js +1477 -0
  162. package/dist/index.d.ts +5 -1
  163. package/dist/index.js +48 -42995
  164. package/dist/init-ZIL6LRFO.js +631 -0
  165. package/dist/inject-test-attrs-P44BVTQS.js +23 -0
  166. package/dist/internal/machines/snapshot-helpers.d.ts +6 -0
  167. package/dist/lib/sql-comment-utils.d.ts +25 -0
  168. package/dist/license-OB7GVJQ2.js +468 -0
  169. package/dist/link-VSNDVZZD.js +59 -0
  170. package/dist/manifest-TMFLESHW.js +19 -0
  171. package/dist/prepare-32DOVHTE.js +250 -0
  172. package/dist/risk-detector-4U6ZJ2G5.js +6 -0
  173. package/dist/risk-detector-core-TK4OAI3N.js +166 -0
  174. package/dist/risk-detector-plpgsql-HWKS4OLR.js +1886 -0
  175. package/dist/sdk-XK6HQU7S.js +348 -0
  176. package/dist/services-7VK5KZTO.js +177 -0
  177. package/dist/session-SFW5QSXZ.js +142 -0
  178. package/dist/signal-handler-DO3OANW5.js +6 -0
  179. package/dist/status-UTKS63AB.js +94 -0
  180. package/dist/telemetry-P56UBLZ2.js +93 -0
  181. package/dist/template-check-3P4HZXVY.js +1944 -0
  182. package/dist/test-V4KQL574.js +650 -0
  183. package/dist/test-gen-FS4CEY3P.js +88 -0
  184. package/dist/ui-RJAMCWUI.js +331 -0
  185. package/dist/upgrade-NUK3ZBCL.js +637 -0
  186. package/dist/utils/config-loader.d.ts +0 -3
  187. package/dist/validate-CAAW4Y44.js +54 -0
  188. package/dist/validators/risk-detector-content-risks.d.ts +13 -0
  189. package/dist/validators/risk-detector-core.d.ts +25 -0
  190. package/dist/validators/risk-detector-patterns.d.ts +15 -0
  191. package/dist/validators/risk-detector-plpgsql-expression-resolver.d.ts +22 -0
  192. package/dist/validators/risk-detector-plpgsql-parser.d.ts +5 -0
  193. package/dist/validators/risk-detector-plpgsql-tokenizer.d.ts +18 -0
  194. package/dist/validators/risk-detector-plpgsql.d.ts +9 -0
  195. package/dist/validators/risk-detector-text-utils.d.ts +6 -0
  196. package/dist/validators/risk-detector-types.d.ts +16 -0
  197. package/dist/validators/risk-detector.d.ts +7 -26
  198. package/dist/vuln-check-2W7N5TA2.js +121 -0
  199. package/dist/vuln-checker-IQJ56RUV.js +3223 -0
  200. package/dist/watch-PNTKZYFB.js +911 -0
  201. package/dist/workflow-H75N4BXX.js +897 -0
  202. package/package.json +5 -2
  203. package/dist/cli/contract-mode.d.ts.map +0 -1
  204. package/dist/cli/contract-output.d.ts.map +0 -1
  205. package/dist/cli/early-flags.d.ts.map +0 -1
  206. package/dist/cli/error-handler.d.ts.map +0 -1
  207. package/dist/cli/exec.d.ts.map +0 -1
  208. package/dist/cli/index.d.ts.map +0 -1
  209. package/dist/cli/json-output.d.ts.map +0 -1
  210. package/dist/cli/non-interactive.d.ts.map +0 -1
  211. package/dist/cli/output-format.d.ts.map +0 -1
  212. package/dist/cli/signal-handler.d.ts.map +0 -1
  213. package/dist/commands/build/actors/build.d.ts.map +0 -1
  214. package/dist/commands/build/actors/clean.d.ts.map +0 -1
  215. package/dist/commands/build/actors/db-sync.d.ts.map +0 -1
  216. package/dist/commands/build/actors/index.d.ts.map +0 -1
  217. package/dist/commands/build/actors/manifest.d.ts.map +0 -1
  218. package/dist/commands/build/actors/setup.d.ts.map +0 -1
  219. package/dist/commands/build/actors/static-checks.d.ts.map +0 -1
  220. package/dist/commands/build/actors/validate.d.ts.map +0 -1
  221. package/dist/commands/build/commands/build.d.ts.map +0 -1
  222. package/dist/commands/build/contract.d.ts.map +0 -1
  223. package/dist/commands/build/guards.d.ts.map +0 -1
  224. package/dist/commands/build/index.d.ts.map +0 -1
  225. package/dist/commands/build/machine.d.ts.map +0 -1
  226. package/dist/commands/build/types.d.ts.map +0 -1
  227. package/dist/commands/cache.d.ts.map +0 -1
  228. package/dist/commands/check/commands/check.d.ts.map +0 -1
  229. package/dist/commands/check/index.d.ts.map +0 -1
  230. package/dist/commands/ci/commands/ci-checks.d.ts.map +0 -1
  231. package/dist/commands/ci/commands/ci-layer-content.d.ts.map +0 -1
  232. package/dist/commands/ci/commands/ci-pr-capabilities.d.ts.map +0 -1
  233. package/dist/commands/ci/commands/ci-prod-apply.d.ts.map +0 -1
  234. package/dist/commands/ci/commands/ci-prod-db-operations.d.ts.map +0 -1
  235. package/dist/commands/ci/commands/ci-prod-github.d.ts.map +0 -1
  236. package/dist/commands/ci/commands/ci-prod-types.d.ts.map +0 -1
  237. package/dist/commands/ci/commands/ci-prod-utils.d.ts.map +0 -1
  238. package/dist/commands/ci/commands/ci-prod-workflow.d.ts.map +0 -1
  239. package/dist/commands/ci/commands/ci-resolvers.d.ts.map +0 -1
  240. package/dist/commands/ci/commands/ci-static.d.ts.map +0 -1
  241. package/dist/commands/ci/commands/ci-supabase-local.d.ts.map +0 -1
  242. package/dist/commands/ci/index.d.ts.map +0 -1
  243. package/dist/commands/ci/machine/actors/build/app-build.d.ts.map +0 -1
  244. package/dist/commands/ci/machine/actors/build/app-start.d.ts.map +0 -1
  245. package/dist/commands/ci/machine/actors/build/build-and-playwright.d.ts.map +0 -1
  246. package/dist/commands/ci/machine/actors/build/index.d.ts.map +0 -1
  247. package/dist/commands/ci/machine/actors/build/playwright-install.d.ts.map +0 -1
  248. package/dist/commands/ci/machine/actors/build/static-checks.d.ts.map +0 -1
  249. package/dist/commands/ci/machine/actors/db/apply-seeds.d.ts.map +0 -1
  250. package/dist/commands/ci/machine/actors/db/collect-schema-stats.d.ts.map +0 -1
  251. package/dist/commands/ci/machine/actors/db/index.d.ts.map +0 -1
  252. package/dist/commands/ci/machine/actors/db/pgtap-install.d.ts.map +0 -1
  253. package/dist/commands/ci/machine/actors/db/production-preview.d.ts.map +0 -1
  254. package/dist/commands/ci/machine/actors/db/pull-production.d.ts.map +0 -1
  255. package/dist/commands/ci/machine/actors/db/reset.d.ts.map +0 -1
  256. package/dist/commands/ci/machine/actors/db/schema-stats.d.ts.map +0 -1
  257. package/dist/commands/ci/machine/actors/db/setup-roles.d.ts.map +0 -1
  258. package/dist/commands/ci/machine/actors/db/sync-schema.d.ts.map +0 -1
  259. package/dist/commands/ci/machine/actors/finalize/github.d.ts.map +0 -1
  260. package/dist/commands/ci/machine/actors/finalize/index.d.ts.map +0 -1
  261. package/dist/commands/ci/machine/actors/finalize/summary.d.ts.map +0 -1
  262. package/dist/commands/ci/machine/actors/index.d.ts.map +0 -1
  263. package/dist/commands/ci/machine/actors/setup/index.d.ts.map +0 -1
  264. package/dist/commands/ci/machine/actors/setup/local.d.ts.map +0 -1
  265. package/dist/commands/ci/machine/actors/setup/pr-common.d.ts.map +0 -1
  266. package/dist/commands/ci/machine/actors/setup/pr-local.d.ts.map +0 -1
  267. package/dist/commands/ci/machine/actors/test/capabilities.d.ts.map +0 -1
  268. package/dist/commands/ci/machine/actors/test/index.d.ts.map +0 -1
  269. package/dist/commands/ci/machine/actors/test/run-layers.d.ts.map +0 -1
  270. package/dist/commands/ci/machine/commands/ci-local.d.ts.map +0 -1
  271. package/dist/commands/ci/machine/commands/ci-pr.d.ts.map +0 -1
  272. package/dist/commands/ci/machine/commands/index.d.ts.map +0 -1
  273. package/dist/commands/ci/machine/commands/machine-runner.d.ts.map +0 -1
  274. package/dist/commands/ci/machine/commands/runtime-env.d.ts.map +0 -1
  275. package/dist/commands/ci/machine/contract.d.ts.map +0 -1
  276. package/dist/commands/ci/machine/formatters/github-comment-types.d.ts.map +0 -1
  277. package/dist/commands/ci/machine/formatters/github-comment.d.ts.map +0 -1
  278. package/dist/commands/ci/machine/formatters/index.d.ts.map +0 -1
  279. package/dist/commands/ci/machine/formatters/sections/final-comment.d.ts.map +0 -1
  280. package/dist/commands/ci/machine/formatters/sections/format-helpers.d.ts.map +0 -1
  281. package/dist/commands/ci/machine/formatters/sections/index.d.ts.map +0 -1
  282. package/dist/commands/ci/machine/formatters/sections/progress-comment.d.ts.map +0 -1
  283. package/dist/commands/ci/machine/formatters/sections/schema-matrix.d.ts.map +0 -1
  284. package/dist/commands/ci/machine/formatters/summary.d.ts.map +0 -1
  285. package/dist/commands/ci/machine/guards.d.ts.map +0 -1
  286. package/dist/commands/ci/machine/helpers.d.ts.map +0 -1
  287. package/dist/commands/ci/machine/index.d.ts.map +0 -1
  288. package/dist/commands/ci/machine/machine.d.ts.map +0 -1
  289. package/dist/commands/ci/machine/types.d.ts.map +0 -1
  290. package/dist/commands/ci/utils/ai-report.d.ts.map +0 -1
  291. package/dist/commands/ci/utils/app-process.d.ts.map +0 -1
  292. package/dist/commands/ci/utils/app-runtime.d.ts.map +0 -1
  293. package/dist/commands/ci/utils/ci-config.d.ts.map +0 -1
  294. package/dist/commands/ci/utils/ci-env-schema.d.ts.map +0 -1
  295. package/dist/commands/ci/utils/ci-logging.d.ts.map +0 -1
  296. package/dist/commands/ci/utils/ci-summary.d.ts.map +0 -1
  297. package/dist/commands/ci/utils/config-readers.d.ts.map +0 -1
  298. package/dist/commands/ci/utils/db-url-utils.d.ts.map +0 -1
  299. package/dist/commands/ci/utils/e2e-auth-setup.d.ts.map +0 -1
  300. package/dist/commands/ci/utils/env-security.d.ts.map +0 -1
  301. package/dist/commands/ci/utils/execa-helpers.d.ts.map +0 -1
  302. package/dist/commands/ci/utils/exit-code-computation.d.ts.map +0 -1
  303. package/dist/commands/ci/utils/github-api.d.ts.map +0 -1
  304. package/dist/commands/ci/utils/github.d.ts.map +0 -1
  305. package/dist/commands/ci/utils/index.d.ts.map +0 -1
  306. package/dist/commands/ci/utils/pgtap-installer.d.ts.map +0 -1
  307. package/dist/commands/ci/utils/rls-verification.d.ts.map +0 -1
  308. package/dist/commands/ci/utils/schema-operations.d.ts.map +0 -1
  309. package/dist/commands/ci/utils/seed-operations.d.ts.map +0 -1
  310. package/dist/commands/ci/utils/test-parallel.d.ts.map +0 -1
  311. package/dist/commands/ci/utils/timestamp-invariants.d.ts.map +0 -1
  312. package/dist/commands/ci/utils/workflow-idempotency.d.ts.map +0 -1
  313. package/dist/commands/db/apply/actors.d.ts.map +0 -1
  314. package/dist/commands/db/apply/contract.d.ts.map +0 -1
  315. package/dist/commands/db/apply/helpers/advisory-lock.d.ts.map +0 -1
  316. package/dist/commands/db/apply/helpers/data-compatibility-checker.d.ts.map +0 -1
  317. package/dist/commands/db/apply/helpers/index.d.ts.map +0 -1
  318. package/dist/commands/db/apply/helpers/partition-acl-cleaner.d.ts.map +0 -1
  319. package/dist/commands/db/apply/helpers/partition-prefilter.d.ts.map +0 -1
  320. package/dist/commands/db/apply/helpers/partition-validator.d.ts.map +0 -1
  321. package/dist/commands/db/apply/helpers/pg-schema-diff-helpers.d.ts.map +0 -1
  322. package/dist/commands/db/apply/helpers/plan-validator.d.ts.map +0 -1
  323. package/dist/commands/db/apply/helpers/retry-logic.d.ts.map +0 -1
  324. package/dist/commands/db/apply/helpers/shadow-db-manager.d.ts.map +0 -1
  325. package/dist/commands/db/apply/index.d.ts.map +0 -1
  326. package/dist/commands/db/apply/machine.d.ts.map +0 -1
  327. package/dist/commands/db/commands/db-apply.d.ts.map +0 -1
  328. package/dist/commands/db/commands/db-audit.d.ts.map +0 -1
  329. package/dist/commands/db/commands/db-backup.d.ts.map +0 -1
  330. package/dist/commands/db/commands/db-cleanup.d.ts.map +0 -1
  331. package/dist/commands/db/commands/db-derive-role-passwords.d.ts.map +0 -1
  332. package/dist/commands/db/commands/db-derive-urls.d.ts.map +0 -1
  333. package/dist/commands/db/commands/db-diagram.d.ts.map +0 -1
  334. package/dist/commands/db/commands/db-drizzle.d.ts.map +0 -1
  335. package/dist/commands/db/commands/db-extension.d.ts.map +0 -1
  336. package/dist/commands/db/commands/db-generate-password.d.ts.map +0 -1
  337. package/dist/commands/db/commands/db-lifecycle.d.ts.map +0 -1
  338. package/dist/commands/db/commands/db-rollback.d.ts.map +0 -1
  339. package/dist/commands/db/commands/db-schema.d.ts.map +0 -1
  340. package/dist/commands/db/commands/db-seed-metadata.d.ts.map +0 -1
  341. package/dist/commands/db/commands/db-seed-verify.d.ts.map +0 -1
  342. package/dist/commands/db/commands/db-seed.d.ts.map +0 -1
  343. package/dist/commands/db/commands/db-snapshot.d.ts.map +0 -1
  344. package/dist/commands/db/commands/db-stack.d.ts.map +0 -1
  345. package/dist/commands/db/commands/db-stats.d.ts.map +0 -1
  346. package/dist/commands/db/commands/db-sync.d.ts.map +0 -1
  347. package/dist/commands/db/commands/db-test.d.ts.map +0 -1
  348. package/dist/commands/db/constants.d.ts.map +0 -1
  349. package/dist/commands/db/extension-registry.d.ts.map +0 -1
  350. package/dist/commands/db/index.d.ts.map +0 -1
  351. package/dist/commands/db/preflight/actors.d.ts.map +0 -1
  352. package/dist/commands/db/preflight/contract.d.ts.map +0 -1
  353. package/dist/commands/db/preflight/index.d.ts.map +0 -1
  354. package/dist/commands/db/sync/actors.d.ts.map +0 -1
  355. package/dist/commands/db/sync/contract.d.ts.map +0 -1
  356. package/dist/commands/db/sync/index.d.ts.map +0 -1
  357. package/dist/commands/db/sync/machine.d.ts.map +0 -1
  358. package/dist/commands/db/types.d.ts.map +0 -1
  359. package/dist/commands/db/utils/db-target.d.ts.map +0 -1
  360. package/dist/commands/db/utils/db-url-builder.d.ts.map +0 -1
  361. package/dist/commands/db/utils/error-handlers.d.ts.map +0 -1
  362. package/dist/commands/db/utils/import-impact-analyzer.d.ts.map +0 -1
  363. package/dist/commands/db/utils/preflight-check.d.ts.map +0 -1
  364. package/dist/commands/db/utils/psql.d.ts.map +0 -1
  365. package/dist/commands/db/utils/schema-detector.d.ts.map +0 -1
  366. package/dist/commands/db/utils/schema-sync.d.ts.map +0 -1
  367. package/dist/commands/db/utils/script-runner.d.ts.map +0 -1
  368. package/dist/commands/db/utils/seed-manager.d.ts.map +0 -1
  369. package/dist/commands/db/utils/semantic-mapper.d.ts.map +0 -1
  370. package/dist/commands/db/utils/sql-table-extractor.d.ts.map +0 -1
  371. package/dist/commands/db/utils/stack-detector.d.ts.map +0 -1
  372. package/dist/commands/db/utils/table-registry.d.ts.map +0 -1
  373. package/dist/commands/db/utils/table-source-classifier.d.ts.map +0 -1
  374. package/dist/commands/dev/actors/index.d.ts.map +0 -1
  375. package/dist/commands/dev/commands/dev.d.ts.map +0 -1
  376. package/dist/commands/dev/contract.d.ts.map +0 -1
  377. package/dist/commands/dev/guards.d.ts.map +0 -1
  378. package/dist/commands/dev/helpers/stale-process-detector.d.ts.map +0 -1
  379. package/dist/commands/dev/machine.d.ts.map +0 -1
  380. package/dist/commands/dev/types.d.ts.map +0 -1
  381. package/dist/commands/env/commands/env-check.d.ts.map +0 -1
  382. package/dist/commands/env/commands/env-encrypt.d.ts.map +0 -1
  383. package/dist/commands/env/commands/env-pull.d.ts.map +0 -1
  384. package/dist/commands/env/commands/env-setup.d.ts.map +0 -1
  385. package/dist/commands/env/commands/env-sync.d.ts.map +0 -1
  386. package/dist/commands/env/commands/setup/action.d.ts.map +0 -1
  387. package/dist/commands/env/commands/setup/auth.d.ts.map +0 -1
  388. package/dist/commands/env/commands/setup/file-export.d.ts.map +0 -1
  389. package/dist/commands/env/commands/setup/github-api.d.ts.map +0 -1
  390. package/dist/commands/env/commands/setup/helpers.d.ts.map +0 -1
  391. package/dist/commands/env/commands/setup/index.d.ts.map +0 -1
  392. package/dist/commands/env/commands/setup/parsers.d.ts.map +0 -1
  393. package/dist/commands/env/commands/setup/prompts.d.ts.map +0 -1
  394. package/dist/commands/env/commands/setup/supabase-api.d.ts.map +0 -1
  395. package/dist/commands/env/commands/setup/types.d.ts.map +0 -1
  396. package/dist/commands/env/commands/setup/vercel-api.d.ts.map +0 -1
  397. package/dist/commands/env/constants/local-supabase.d.ts.map +0 -1
  398. package/dist/commands/env/index.d.ts.map +0 -1
  399. package/dist/commands/hotfix/actors.d.ts.map +0 -1
  400. package/dist/commands/hotfix/commands/hotfix-complete.d.ts.map +0 -1
  401. package/dist/commands/hotfix/commands/hotfix-create.d.ts.map +0 -1
  402. package/dist/commands/hotfix/commands/hotfix-deploy.d.ts.map +0 -1
  403. package/dist/commands/hotfix/commands/hotfix-status.d.ts.map +0 -1
  404. package/dist/commands/hotfix/contract.d.ts.map +0 -1
  405. package/dist/commands/hotfix/index.d.ts.map +0 -1
  406. package/dist/commands/hotfix/machine.d.ts.map +0 -1
  407. package/dist/commands/hotfix/metadata.d.ts.map +0 -1
  408. package/dist/commands/hotfix/utils/hotfix-machine-helper.d.ts.map +0 -1
  409. package/dist/commands/init.d.ts.map +0 -1
  410. package/dist/commands/inject-test-attrs/action.d.ts.map +0 -1
  411. package/dist/commands/inject-test-attrs/commands/inject-test-attrs.d.ts.map +0 -1
  412. package/dist/commands/inject-test-attrs/contract.d.ts.map +0 -1
  413. package/dist/commands/inject-test-attrs/detection-diagnostics.d.ts.map +0 -1
  414. package/dist/commands/inject-test-attrs/formatter.d.ts.map +0 -1
  415. package/dist/commands/inject-test-attrs/index.d.ts.map +0 -1
  416. package/dist/commands/inject-test-attrs/manifest-generator.d.ts.map +0 -1
  417. package/dist/commands/inject-test-attrs/processor-utils.d.ts.map +0 -1
  418. package/dist/commands/inject-test-attrs/processor.d.ts.map +0 -1
  419. package/dist/commands/inject-test-attrs/types.d.ts.map +0 -1
  420. package/dist/commands/link.d.ts.map +0 -1
  421. package/dist/commands/manifest/index.d.ts.map +0 -1
  422. package/dist/commands/prepare/commands/prepare.d.ts.map +0 -1
  423. package/dist/commands/prepare/index.d.ts.map +0 -1
  424. package/dist/commands/sdk/commands/publish.d.ts.map +0 -1
  425. package/dist/commands/sdk/index.d.ts.map +0 -1
  426. package/dist/commands/services/index.d.ts.map +0 -1
  427. package/dist/commands/session/index.d.ts.map +0 -1
  428. package/dist/commands/status.d.ts.map +0 -1
  429. package/dist/commands/telemetry.d.ts.map +0 -1
  430. package/dist/commands/template-check/actors/compare.d.ts.map +0 -1
  431. package/dist/commands/template-check/actors/discover.d.ts.map +0 -1
  432. package/dist/commands/template-check/actors/index.d.ts.map +0 -1
  433. package/dist/commands/template-check/actors/report.d.ts.map +0 -1
  434. package/dist/commands/template-check/commands/template-check.d.ts.map +0 -1
  435. package/dist/commands/template-check/config.d.ts.map +0 -1
  436. package/dist/commands/template-check/contract.d.ts.map +0 -1
  437. package/dist/commands/template-check/index.d.ts.map +0 -1
  438. package/dist/commands/template-check/machine.d.ts.map +0 -1
  439. package/dist/commands/template-check/types.d.ts.map +0 -1
  440. package/dist/commands/template-check/utils/diff-analyzer.d.ts.map +0 -1
  441. package/dist/commands/template-check/utils/normalizer.d.ts.map +0 -1
  442. package/dist/commands/template-check/utils/path-mapping.d.ts.map +0 -1
  443. package/dist/commands/test/commands/test-db.d.ts.map +0 -1
  444. package/dist/commands/test/commands/test-e2e.d.ts.map +0 -1
  445. package/dist/commands/test/commands/test-fast.d.ts.map +0 -1
  446. package/dist/commands/test/commands/test-integration.d.ts.map +0 -1
  447. package/dist/commands/test/commands/test-layer.d.ts.map +0 -1
  448. package/dist/commands/test/commands/test-owasp-generate.d.ts.map +0 -1
  449. package/dist/commands/test/commands/test-service.d.ts.map +0 -1
  450. package/dist/commands/test/commands/test-static.d.ts.map +0 -1
  451. package/dist/commands/test/commands/test.d.ts.map +0 -1
  452. package/dist/commands/test/index.d.ts.map +0 -1
  453. package/dist/commands/test-gen.d.ts.map +0 -1
  454. package/dist/commands/ui.d.ts.map +0 -1
  455. package/dist/commands/upgrade.d.ts.map +0 -1
  456. package/dist/commands/validate.d.ts.map +0 -1
  457. package/dist/commands/vuln-check.d.ts.map +0 -1
  458. package/dist/commands/watch.d.ts.map +0 -1
  459. package/dist/commands/workflow/commands/deploy-production.d.ts.map +0 -1
  460. package/dist/commands/workflow/commands/final-status.d.ts.map +0 -1
  461. package/dist/commands/workflow/commands/log.d.ts.map +0 -1
  462. package/dist/commands/workflow/commands/notify.d.ts.map +0 -1
  463. package/dist/commands/workflow/commands/paths.d.ts.map +0 -1
  464. package/dist/commands/workflow/commands/sync.d.ts.map +0 -1
  465. package/dist/commands/workflow/commands/validate.d.ts.map +0 -1
  466. package/dist/commands/workflow/commands/verify-credentials.d.ts.map +0 -1
  467. package/dist/commands/workflow/index.d.ts.map +0 -1
  468. package/dist/commands/workflow/types.d.ts.map +0 -1
  469. package/dist/config/env-files.d.ts.map +0 -1
  470. package/dist/config/env.d.ts.map +0 -1
  471. package/dist/constants/versions.d.ts.map +0 -1
  472. package/dist/contracts/envelope.d.ts.map +0 -1
  473. package/dist/errors/catalog.d.ts.map +0 -1
  474. package/dist/errors/exit-codes.d.ts.map +0 -1
  475. package/dist/errors/index.d.ts.map +0 -1
  476. package/dist/incremental/affected-tests.d.ts.map +0 -1
  477. package/dist/index.d.ts.map +0 -1
  478. package/dist/internal/machines/index.d.ts.map +0 -1
  479. package/dist/internal/machines/machine-runner.d.ts.map +0 -1
  480. package/dist/internal/machines/snapshot-helpers.d.ts.map +0 -1
  481. package/dist/internal/machines/types.d.ts.map +0 -1
  482. package/dist/internal/vuln-checker/analyzers/dependency-analyzer.d.ts.map +0 -1
  483. package/dist/internal/vuln-checker/analyzers/rls-analyzer.d.ts.map +0 -1
  484. package/dist/internal/vuln-checker/analyzers/secret-analyzer.d.ts.map +0 -1
  485. package/dist/internal/vuln-checker/analyzers/typescript-analyzer.d.ts.map +0 -1
  486. package/dist/internal/vuln-checker/config/loader.d.ts.map +0 -1
  487. package/dist/internal/vuln-checker/constants.d.ts.map +0 -1
  488. package/dist/internal/vuln-checker/ignore/matcher.d.ts.map +0 -1
  489. package/dist/internal/vuln-checker/index.d.ts.map +0 -1
  490. package/dist/internal/vuln-checker/reporters/console-reporter.d.ts.map +0 -1
  491. package/dist/internal/vuln-checker/reporters/json-reporter.d.ts.map +0 -1
  492. package/dist/internal/vuln-checker/reporters/markdown-reporter.d.ts.map +0 -1
  493. package/dist/internal/vuln-checker/reporters/sarif-reporter.d.ts.map +0 -1
  494. package/dist/internal/vuln-checker/security/path-validation.d.ts.map +0 -1
  495. package/dist/internal/vuln-checker/types.d.ts.map +0 -1
  496. package/dist/notifiers/desktop-notifier.d.ts.map +0 -1
  497. package/dist/ui/components/db-panel.d.ts.map +0 -1
  498. package/dist/ui/components/status-bar.d.ts.map +0 -1
  499. package/dist/ui/components/test-panel.d.ts.map +0 -1
  500. package/dist/ui/dashboard.d.ts.map +0 -1
  501. package/dist/ui/index.d.ts.map +0 -1
  502. package/dist/utils/config-loader.d.ts.map +0 -1
  503. package/dist/utils/config-updater.d.ts.map +0 -1
  504. package/dist/utils/diagnostics.d.ts.map +0 -1
  505. package/dist/utils/dotenvx.d.ts.map +0 -1
  506. package/dist/utils/env-local-bridge.d.ts.map +0 -1
  507. package/dist/utils/execution-plan.d.ts.map +0 -1
  508. package/dist/utils/github-output-security.d.ts.map +0 -1
  509. package/dist/utils/help-system.d.ts.map +0 -1
  510. package/dist/utils/license/admin-auth.d.ts.map +0 -1
  511. package/dist/utils/license/allowlist-checker.d.ts.map +0 -1
  512. package/dist/utils/license/ci-detector.d.ts.map +0 -1
  513. package/dist/utils/license/index.d.ts.map +0 -1
  514. package/dist/utils/license/owner-resolver.d.ts.map +0 -1
  515. package/dist/utils/license/types.d.ts.map +0 -1
  516. package/dist/utils/license/validate-owner.d.ts.map +0 -1
  517. package/dist/utils/path-security.d.ts.map +0 -1
  518. package/dist/utils/port-allocator.d.ts.map +0 -1
  519. package/dist/utils/secure-exec.d.ts.map +0 -1
  520. package/dist/utils/template-fetcher.d.ts.map +0 -1
  521. package/dist/utils/type-guards.d.ts.map +0 -1
  522. package/dist/utils/vercel-project.d.ts.map +0 -1
  523. package/dist/utils/workspace-detector.d.ts.map +0 -1
  524. package/dist/validators/risk-detector.d.ts.map +0 -1
  525. package/dist/validators/schema-validator.d.ts.map +0 -1
  526. package/dist/version.d.ts.map +0 -1
  527. package/dist/watchers/schema-watcher.d.ts.map +0 -1
  528. package/dist/watchers/test-watcher.d.ts.map +0 -1
@@ -0,0 +1,544 @@
1
+ #!/usr/bin/env node
2
+ import { createRequire } from 'module';
3
+ import { init_esm_shims } from './chunk-VRXHCR5K.js';
4
+
5
+ createRequire(import.meta.url);
6
+
7
+ // src/validators/risk-detector-patterns.ts
8
+ init_esm_shims();
9
+ var IDENTIFIER_PATTERN = "[A-Za-z_][A-Za-z0-9_]*";
10
+ var QUOTED_IDENTIFIER_PATTERN = '"(?:[^"]|"")*"';
11
+ var SQL_IDENTIFIER = `(?:${IDENTIFIER_PATTERN}|${QUOTED_IDENTIFIER_PATTERN})`;
12
+ var QUALIFIED_IDENTIFIER = `${SQL_IDENTIFIER}(?:\\s*\\.\\s*${SQL_IDENTIFIER})?`;
13
+ var RUNA_AUTH_FUNCTION_NAME = /runa_auth_[A-Za-z_][A-Za-z0-9_]*/i;
14
+ var RISK_PATTERNS = [
15
+ {
16
+ pattern: new RegExp(`\\bREFERENCES\\s+auth\\.${SQL_IDENTIFIER}\\s*\\(`, "gi"),
17
+ level: "high",
18
+ description: "REFERENCES auth.* violates Supabase Auth Schema Independence (AGENTS.md)",
19
+ mitigation: "Remove FK constraint. Store UUID without REFERENCES. See database.md#Supabase-Auth-Schema-Independence",
20
+ reasonCode: "HIGH_RISK_AUTH_REFERENCE",
21
+ confidence: "high"
22
+ },
23
+ {
24
+ pattern: /\bauth\.uid\s*\(\s*\)/gi,
25
+ level: "high",
26
+ description: "Direct auth.uid() usage violates Supabase Auth Schema Independence (AGENTS.md)",
27
+ mitigation: "Use runa_auth_uid() wrapper function instead. See database.md#Supabase-Auth-Schema-Independence",
28
+ reasonCode: "HIGH_RISK_AUTH_UID",
29
+ confidence: "high"
30
+ },
31
+ {
32
+ pattern: /\bauth\.jwt\s*\(\s*\)/gi,
33
+ level: "high",
34
+ description: "Direct auth.jwt() usage violates Supabase Auth Schema Independence (AGENTS.md)",
35
+ mitigation: "Use runa_auth_jwt() or runa_auth_claim_text() wrapper instead. See database.md#Supabase-Auth-Schema-Independence",
36
+ reasonCode: "HIGH_RISK_AUTH_JWT",
37
+ confidence: "high"
38
+ },
39
+ {
40
+ pattern: /\bpublic\.(?:st_[a-z_]+|geometry|geography|vector|halfvec|sparsevec|cube|earth|hstore|citext|ltree|lquery|ltxtquery|crypt|gen_salt|uuid_generate_v[0-9])\s*\(/gi,
41
+ level: "high",
42
+ description: "public.* schema-qualified extension function/type detected \u2014 extension objects live in extensions schema, not public",
43
+ mitigation: "Use unqualified name (e.g., st_x(geom)) or extensions-qualified (e.g., extensions.st_x(geom)). See known-limitations #15",
44
+ reasonCode: "HIGH_RISK_WRONG_EXTENSION_SCHEMA",
45
+ confidence: "high"
46
+ },
47
+ {
48
+ pattern: new RegExp(
49
+ `\\bDROP\\s+TABLE\\s+(?:IF\\s+(?:NOT\\s+)?EXISTS\\s+)?(?:ONLY\\s+)?${QUALIFIED_IDENTIFIER}(?:\\s*,\\s*(?:ONLY\\s+)?${QUALIFIED_IDENTIFIER})*`,
50
+ "gi"
51
+ ),
52
+ level: "high",
53
+ description: "DROP TABLE detected - potential data loss",
54
+ mitigation: "Use _deprecated_ prefix instead of dropping",
55
+ reasonCode: "HIGH_RISK_DROP_TABLE",
56
+ confidence: "high"
57
+ },
58
+ {
59
+ pattern: new RegExp(
60
+ `\\bALTER\\s+TABLE\\s+${QUALIFIED_IDENTIFIER}\\s+DROP\\s+COLUMN\\s+(?:IF\\s+EXISTS\\s+)?${SQL_IDENTIFIER}`,
61
+ "gi"
62
+ ),
63
+ level: "high",
64
+ description: "DROP COLUMN detected - potential data loss",
65
+ mitigation: "Rename to _deprecated_ prefix instead",
66
+ reasonCode: "HIGH_RISK_DROP_COLUMN",
67
+ confidence: "high"
68
+ },
69
+ {
70
+ pattern: new RegExp(
71
+ `\\bALTER\\s+TABLE\\s+${QUALIFIED_IDENTIFIER}\\s+ALTER\\s+COLUMN\\s+(?:IF\\s+EXISTS\\s+)?${SQL_IDENTIFIER}\\s+SET\\s+NOT\\s+NULL`,
72
+ "gi"
73
+ ),
74
+ level: "high",
75
+ description: "Adding NOT NULL constraint may fail if existing data has nulls",
76
+ mitigation: "Ensure all existing rows have non-null values first",
77
+ reasonCode: "HIGH_RISK_SET_NOT_NULL",
78
+ confidence: "high"
79
+ },
80
+ {
81
+ pattern: new RegExp(
82
+ `\\bTRUNCATE\\s+(?:TABLE\\s+)?(?:ONLY\\s+)?${QUALIFIED_IDENTIFIER}(?:\\s*,\\s*${QUALIFIED_IDENTIFIER})*`,
83
+ "gi"
84
+ ),
85
+ level: "high",
86
+ description: "TRUNCATE detected - all data will be deleted",
87
+ mitigation: "Use DELETE with WHERE clause for selective deletion",
88
+ reasonCode: "HIGH_RISK_TRUNCATE",
89
+ confidence: "high"
90
+ },
91
+ {
92
+ pattern: new RegExp(
93
+ `\\bALTER\\s+TABLE\\s+${QUALIFIED_IDENTIFIER}\\s+ADD\\s+CONSTRAINT\\s+${SQL_IDENTIFIER}\\s+UNIQUE`,
94
+ "gi"
95
+ ),
96
+ level: "medium",
97
+ description: "Adding UNIQUE constraint may fail if existing data has duplicates",
98
+ mitigation: "Check for duplicate values before adding constraint",
99
+ reasonCode: "MEDIUM_RISK_ADD_UNIQUE",
100
+ confidence: "medium"
101
+ },
102
+ {
103
+ pattern: new RegExp(
104
+ `\\bALTER\\s+TABLE\\s+${QUALIFIED_IDENTIFIER}\\s+ALTER\\s+COLUMN\\s+${SQL_IDENTIFIER}\\s+(?:SET\\s+DATA\\s+)?TYPE`,
105
+ "gi"
106
+ ),
107
+ level: "medium",
108
+ description: "Changing column type may cause data loss or conversion errors",
109
+ mitigation: "Verify data compatibility before type change",
110
+ reasonCode: "MEDIUM_RISK_ALTER_COLUMN_TYPE",
111
+ confidence: "medium"
112
+ },
113
+ {
114
+ pattern: new RegExp(`\\bALTER\\s+TYPE\\s+${QUALIFIED_IDENTIFIER}`, "gi"),
115
+ level: "medium",
116
+ description: "Altering enum/composite type may affect existing data",
117
+ mitigation: "Check all usages of this type before modification",
118
+ reasonCode: "MEDIUM_RISK_ALTER_TYPE",
119
+ confidence: "medium"
120
+ },
121
+ {
122
+ pattern: new RegExp(
123
+ `\\bALTER\\s+TABLE\\s+${QUALIFIED_IDENTIFIER}\\s+DISABLE\\s+ROW\\s+LEVEL\\s+SECURITY`,
124
+ "gi"
125
+ ),
126
+ level: "high",
127
+ description: "DISABLE ROW LEVEL SECURITY removes all RLS protection",
128
+ mitigation: "Verify this is intentional. RLS bypass exposes all rows to all roles.",
129
+ reasonCode: "HIGH_RISK_DISABLE_RLS",
130
+ confidence: "high"
131
+ },
132
+ {
133
+ pattern: new RegExp(`\\bDROP\\s+POLICY\\s+(?:IF\\s+EXISTS\\s+)?${SQL_IDENTIFIER}\\s+ON`, "gi"),
134
+ level: "high",
135
+ description: "DROP POLICY removes access control rules",
136
+ mitigation: "Ensure replacement policy exists. Dropping without replacement may block or expose access.",
137
+ reasonCode: "HIGH_RISK_DROP_POLICY",
138
+ confidence: "high"
139
+ },
140
+ {
141
+ pattern: new RegExp(`\\bDROP\\s+SCHEMA\\s+(?:IF\\s+EXISTS\\s+)?${SQL_IDENTIFIER}`, "gi"),
142
+ level: "high",
143
+ description: "DROP SCHEMA removes entire schema and all contained objects",
144
+ mitigation: "Verify all tables in this schema are backed up or migrated first.",
145
+ reasonCode: "HIGH_RISK_DROP_SCHEMA",
146
+ confidence: "high"
147
+ },
148
+ {
149
+ pattern: new RegExp(
150
+ `\\bALTER\\s+TABLE\\s+${QUALIFIED_IDENTIFIER}\\s+RENAME\\s+(?:COLUMN\\s+)?${SQL_IDENTIFIER}`,
151
+ "gi"
152
+ ),
153
+ level: "medium",
154
+ description: "RENAME TABLE/COLUMN may break application queries and foreign key references",
155
+ mitigation: "Update all application code referencing the old name. Consider add-then-migrate-then-drop instead.",
156
+ reasonCode: "MEDIUM_RISK_RENAME",
157
+ confidence: "medium"
158
+ },
159
+ {
160
+ pattern: /\bREVOKE\s+(?:ALL|SELECT|INSERT|UPDATE|DELETE)\b/gi,
161
+ level: "medium",
162
+ description: "REVOKE may break application access if privileges are required",
163
+ mitigation: "Verify the role being revoked is no longer needed for application operations.",
164
+ reasonCode: "MEDIUM_RISK_REVOKE",
165
+ confidence: "medium"
166
+ },
167
+ {
168
+ pattern: new RegExp(
169
+ `\\bCREATE\\s+(?:UNIQUE\\s+)?INDEX\\s+(?:IF\\s+NOT\\s+EXISTS\\s+)?(?!CONCURRENTLY)${SQL_IDENTIFIER}\\s+ON`,
170
+ "gi"
171
+ ),
172
+ level: "low",
173
+ description: "Creating index without CONCURRENTLY may lock table",
174
+ mitigation: "Consider CREATE INDEX CONCURRENTLY for large tables",
175
+ reasonCode: "LOW_RISK_INDEX_NO_CONCURRENTLY",
176
+ confidence: "low"
177
+ },
178
+ // --- Gap 6: Additional DROP patterns ---
179
+ {
180
+ pattern: new RegExp(
181
+ `\\bDROP\\s+FUNCTION\\s+(?:IF\\s+EXISTS\\s+)?${QUALIFIED_IDENTIFIER}`,
182
+ "gi"
183
+ ),
184
+ level: "medium",
185
+ description: "DROP FUNCTION detected - may break dependent views, triggers, or policies",
186
+ mitigation: "Use CREATE OR REPLACE FUNCTION when possible. Verify no dependencies.",
187
+ reasonCode: "MEDIUM_RISK_DROP_FUNCTION",
188
+ confidence: "medium"
189
+ },
190
+ {
191
+ pattern: new RegExp(`\\bDROP\\s+TRIGGER\\s+(?:IF\\s+EXISTS\\s+)?${SQL_IDENTIFIER}\\s+ON`, "gi"),
192
+ level: "medium",
193
+ description: "DROP TRIGGER detected - may disable audit trails or business rules",
194
+ mitigation: "Verify the trigger is being replaced or is no longer needed.",
195
+ reasonCode: "MEDIUM_RISK_DROP_TRIGGER",
196
+ confidence: "medium"
197
+ },
198
+ {
199
+ pattern: new RegExp(
200
+ `\\bDROP\\s+(?:MATERIALIZED\\s+)?VIEW\\s+(?:IF\\s+EXISTS\\s+)?${QUALIFIED_IDENTIFIER}`,
201
+ "gi"
202
+ ),
203
+ level: "medium",
204
+ description: "DROP VIEW detected - may break dependent queries or applications",
205
+ mitigation: "Use CREATE OR REPLACE VIEW when possible. Check for dependencies.",
206
+ reasonCode: "MEDIUM_RISK_DROP_VIEW",
207
+ confidence: "medium"
208
+ },
209
+ {
210
+ pattern: new RegExp(
211
+ `\\bDROP\\s+SEQUENCE\\s+(?:IF\\s+EXISTS\\s+)?${QUALIFIED_IDENTIFIER}`,
212
+ "gi"
213
+ ),
214
+ level: "medium",
215
+ description: "DROP SEQUENCE detected - may break tables using this sequence for defaults",
216
+ mitigation: "Verify no tables reference this sequence before dropping.",
217
+ reasonCode: "MEDIUM_RISK_DROP_SEQUENCE",
218
+ confidence: "medium"
219
+ },
220
+ {
221
+ pattern: new RegExp(`\\bDROP\\s+EXTENSION\\s+(?:IF\\s+EXISTS\\s+)?${SQL_IDENTIFIER}`, "gi"),
222
+ level: "high",
223
+ description: "DROP EXTENSION detected \u2014 CASCADE removes all dependent functions, types, operators, and indexes",
224
+ mitigation: "Verify no tables or functions depend on this extension. DROP EXTENSION postgis CASCADE destroys all geometry columns.",
225
+ reasonCode: "HIGH_RISK_DROP_EXTENSION",
226
+ confidence: "high"
227
+ },
228
+ {
229
+ pattern: /\b(?:REASSIGN|DROP)\s+OWNED\s+BY\b/gi,
230
+ level: "high",
231
+ description: "REASSIGN/DROP OWNED BY detected - mass ownership change or object deletion",
232
+ mitigation: "This affects ALL objects owned by the role. Review carefully.",
233
+ reasonCode: "HIGH_RISK_REASSIGN_DROP_OWNED",
234
+ confidence: "high"
235
+ },
236
+ {
237
+ pattern: new RegExp(`\\bALTER\\s+TABLE\\s+${QUALIFIED_IDENTIFIER}\\s+DISABLE\\s+TRIGGER`, "gi"),
238
+ level: "high",
239
+ description: "DISABLE TRIGGER detected - may bypass audit trails and business rules",
240
+ mitigation: "This disables triggers which may enforce critical business logic. Verify intent.",
241
+ reasonCode: "HIGH_RISK_DISABLE_TRIGGER",
242
+ confidence: "high"
243
+ },
244
+ {
245
+ pattern: new RegExp(`\\bALTER\\s+TABLE\\s+${QUALIFIED_IDENTIFIER}\\s+SET\\s+UNLOGGED`, "gi"),
246
+ level: "medium",
247
+ description: "SET UNLOGGED detected - data will not survive crash recovery",
248
+ mitigation: "UNLOGGED tables are not WAL-logged. Data is lost on crash. Use only for ephemeral data.",
249
+ reasonCode: "MEDIUM_RISK_SET_UNLOGGED",
250
+ confidence: "medium"
251
+ },
252
+ {
253
+ pattern: new RegExp(
254
+ `\\bDROP\\s+INDEX\\s+(?:IF\\s+EXISTS\\s+)?(?:CONCURRENTLY\\s+)?${QUALIFIED_IDENTIFIER}`,
255
+ "gi"
256
+ ),
257
+ level: "medium",
258
+ description: "DROP INDEX detected - may degrade query performance",
259
+ mitigation: "Verify the index is no longer needed for query performance.",
260
+ reasonCode: "MEDIUM_RISK_DROP_INDEX",
261
+ confidence: "medium"
262
+ },
263
+ // --- ENUM type detection (pg-schema-diff cannot manage ENUM value changes) ---
264
+ {
265
+ pattern: new RegExp(`\\bCREATE\\s+TYPE\\s+${QUALIFIED_IDENTIFIER}\\s+AS\\s+ENUM\\b`, "gi"),
266
+ level: "high",
267
+ description: "CREATE TYPE AS ENUM detected \u2014 pg-schema-diff cannot manage ENUM value changes",
268
+ mitigation: "Use TEXT column with CHECK constraint instead. See database-pg-schema-diff.md",
269
+ reasonCode: "HIGH_RISK_ENUM_TYPE",
270
+ confidence: "high"
271
+ },
272
+ // --- Cloud-incompatible SQL (managed PostgreSQL restrictions) ---
273
+ {
274
+ pattern: new RegExp(`\\bCREATE\\s+DATABASE\\s+${SQL_IDENTIFIER}`, "gi"),
275
+ level: "high",
276
+ description: "CREATE DATABASE detected \u2014 not available on managed PostgreSQL (Supabase)",
277
+ mitigation: "Use Supabase dashboard or API for database creation.",
278
+ reasonCode: "HIGH_RISK_CREATE_DATABASE",
279
+ confidence: "high"
280
+ },
281
+ {
282
+ pattern: /\bALTER\s+SYSTEM\s+(?:SET|RESET)\b/gi,
283
+ level: "high",
284
+ description: "ALTER SYSTEM detected \u2014 requires superuser, not available on managed PostgreSQL",
285
+ mitigation: "Use Supabase dashboard for server configuration changes.",
286
+ reasonCode: "HIGH_RISK_ALTER_SYSTEM",
287
+ confidence: "high"
288
+ },
289
+ {
290
+ pattern: new RegExp(`\\b(?:CREATE|ALTER|DROP)\\s+TABLESPACE\\s+${SQL_IDENTIFIER}`, "gi"),
291
+ level: "medium",
292
+ description: "TABLESPACE operation detected \u2014 not available on managed PostgreSQL",
293
+ mitigation: "Remove tablespace references. Managed databases handle storage allocation.",
294
+ reasonCode: "MEDIUM_RISK_TABLESPACE",
295
+ confidence: "medium"
296
+ },
297
+ {
298
+ pattern: /\bCREATE\s+(?:OR\s+REPLACE\s+)?(?:TRUSTED\s+)?(?:PROCEDURAL\s+)?LANGUAGE\b/gi,
299
+ level: "medium",
300
+ description: "CREATE LANGUAGE detected \u2014 requires superuser on managed PostgreSQL",
301
+ mitigation: "Use CREATE EXTENSION instead (e.g., CREATE EXTENSION plpython3u).",
302
+ reasonCode: "MEDIUM_RISK_CREATE_LANGUAGE",
303
+ confidence: "medium"
304
+ },
305
+ // --- Gap 7: auth.role() detection ---
306
+ {
307
+ pattern: /\bauth\.role\s*\(\s*\)/gi,
308
+ level: "high",
309
+ description: "Direct auth.role() usage violates Supabase Auth Schema Independence",
310
+ mitigation: "Use a runa_auth_* wrapper function instead. See database.md#Supabase-Auth-Schema-Independence",
311
+ reasonCode: "HIGH_RISK_AUTH_ROLE",
312
+ confidence: "high"
313
+ },
314
+ // --- Auth table reference detection (FROM/JOIN auth.*) ---
315
+ {
316
+ pattern: new RegExp(`\\b(?:FROM|JOIN)\\s+auth\\.${SQL_IDENTIFIER}`, "gi"),
317
+ level: "high",
318
+ description: "Direct auth.* table reference detected \u2014 violates Supabase Auth Schema Independence",
319
+ mitigation: "Do not query auth schema tables directly. Use your own user/profile tables instead. See database.md#Supabase-Auth-Schema-Independence",
320
+ reasonCode: "HIGH_RISK_AUTH_TABLE_REFERENCE",
321
+ confidence: "high"
322
+ },
323
+ // --- SECURITY DEFINER detection (RLS bypass risk) ---
324
+ {
325
+ pattern: /\bSECURITY\s+DEFINER\b/gi,
326
+ level: "high",
327
+ description: "SECURITY DEFINER detected \u2014 function executes with owner privileges, bypassing caller RLS",
328
+ mitigation: "Use SECURITY INVOKER (default) unless owner-privilege execution is explicitly required. Review function body for RLS bypass.",
329
+ reasonCode: "HIGH_RISK_SECURITY_DEFINER",
330
+ confidence: "high"
331
+ },
332
+ // --- GRANT ALL mass privilege detection ---
333
+ {
334
+ pattern: /\bGRANT\s+ALL\s+(?:PRIVILEGES\s+)?ON\s+ALL\s+(?:TABLES|FUNCTIONS|SEQUENCES)\b/gi,
335
+ level: "medium",
336
+ description: "GRANT ALL ON ALL detected \u2014 mass privilege grant affects all current objects in schema",
337
+ mitigation: "Prefer granular GRANT on specific tables/functions. Mass grants may expose unintended objects.",
338
+ reasonCode: "MEDIUM_RISK_GRANT_ALL",
339
+ confidence: "medium"
340
+ }
341
+ ];
342
+
343
+ // src/validators/risk-detector-text-utils.ts
344
+ init_esm_shims();
345
+ var RE_DOLLAR_TAG = /\$([a-zA-Z_][a-zA-Z0-9_]*)?\$/y;
346
+ var RE_WRAPPER_FUNCTION = new RegExp(
347
+ `CREATE\\s+(?:OR\\s+REPLACE\\s+)?FUNCTION\\s+(${QUALIFIED_IDENTIFIER})\\s*\\([\\s\\S]*?\\)\\s+[\\s\\S]*?\\s+AS\\s*(\\$\\$|\\$[a-zA-Z_][a-zA-Z0-9_]*\\$)`,
348
+ "gi"
349
+ );
350
+ function stripSqlCommentsPreserveLines(content) {
351
+ const lineMasked = content.replace(/--[^\n]*/g, (match) => " ".repeat(match.length));
352
+ return lineMasked.replace(/\/\*[\s\S]*?\*\//g, (match) => match.replace(/[^\n]/g, " "));
353
+ }
354
+ function asMaskedChar(char) {
355
+ return char === "\n" ? "\n" : " ";
356
+ }
357
+ function consumeSingleQuotedString(content, state) {
358
+ if (!state.inSingleQuote) return false;
359
+ const char = content[state.i];
360
+ const next = content[state.i + 1];
361
+ if (char === "'" && next === "'") {
362
+ state.result += " ";
363
+ state.i += 2;
364
+ return true;
365
+ }
366
+ if (char === "'") {
367
+ state.inSingleQuote = false;
368
+ }
369
+ state.result += asMaskedChar(char);
370
+ state.i += 1;
371
+ return true;
372
+ }
373
+ function consumeDoubleQuotedIdentifier(content, state) {
374
+ if (!state.inDoubleQuote) return false;
375
+ const char = content[state.i];
376
+ const next = content[state.i + 1];
377
+ if (char === '"' && next === '"') {
378
+ state.result += '""';
379
+ state.i += 2;
380
+ return true;
381
+ }
382
+ if (char === '"') {
383
+ state.inDoubleQuote = false;
384
+ }
385
+ state.result += char ?? "";
386
+ state.i += 1;
387
+ return true;
388
+ }
389
+ function consumeDollarQuotedString(content, state) {
390
+ if (!state.inDollarQuote) return false;
391
+ const closingTag = `$${state.dollarTag}$`;
392
+ if (content.startsWith(closingTag, state.i)) {
393
+ state.inDollarQuote = false;
394
+ state.dollarTag = "";
395
+ state.result += " ".repeat(closingTag.length);
396
+ state.i += closingTag.length;
397
+ return true;
398
+ }
399
+ state.result += asMaskedChar(content[state.i]);
400
+ state.i += 1;
401
+ return true;
402
+ }
403
+ function tryStartSingleQuotedString(content, state) {
404
+ if (content[state.i] !== "'") return false;
405
+ state.inSingleQuote = true;
406
+ state.result += asMaskedChar(content[state.i]);
407
+ state.i += 1;
408
+ return true;
409
+ }
410
+ function tryStartDoubleQuotedIdentifier(content, state) {
411
+ if (content[state.i] !== '"') return false;
412
+ state.inDoubleQuote = true;
413
+ state.result += content[state.i] ?? "";
414
+ state.i += 1;
415
+ return true;
416
+ }
417
+ function tryStartDollarQuotedString(content, state) {
418
+ if (content[state.i] !== "$") return false;
419
+ RE_DOLLAR_TAG.lastIndex = state.i;
420
+ const match = RE_DOLLAR_TAG.exec(content);
421
+ if (!match) return false;
422
+ state.inDollarQuote = true;
423
+ state.dollarTag = match[1] ?? "";
424
+ state.result += " ".repeat(match[0].length);
425
+ state.i += match[0].length;
426
+ return true;
427
+ }
428
+ function stripSqlStringsPreserveLines(content) {
429
+ const state = {
430
+ result: "",
431
+ i: 0,
432
+ inSingleQuote: false,
433
+ inDoubleQuote: false,
434
+ inDollarQuote: false,
435
+ dollarTag: ""
436
+ };
437
+ while (state.i < content.length) {
438
+ if (consumeSingleQuotedString(content, state)) continue;
439
+ if (consumeDoubleQuotedIdentifier(content, state)) continue;
440
+ if (consumeDollarQuotedString(content, state)) continue;
441
+ if (tryStartSingleQuotedString(content, state)) continue;
442
+ if (tryStartDoubleQuotedIdentifier(content, state)) continue;
443
+ if (tryStartDollarQuotedString(content, state)) continue;
444
+ state.result += content[state.i] ?? "";
445
+ state.i += 1;
446
+ }
447
+ return state.result;
448
+ }
449
+ function normalizeSqlIdentifier(identifier) {
450
+ const trimmed = identifier.trim();
451
+ if (trimmed.startsWith('"') && trimmed.endsWith('"')) {
452
+ return trimmed.slice(1, -1).replace(/""/g, '"');
453
+ }
454
+ return trimmed;
455
+ }
456
+ function maskWrapperFunctions(content) {
457
+ RE_WRAPPER_FUNCTION.lastIndex = 0;
458
+ let lastIndex = 0;
459
+ let output = "";
460
+ for (const match of content.matchAll(RE_WRAPPER_FUNCTION)) {
461
+ const matchStart = match.index ?? 0;
462
+ const functionName = normalizeSqlIdentifier((match[1] ?? "").split(".").pop() ?? "");
463
+ if (!RUNA_AUTH_FUNCTION_NAME.test(functionName)) {
464
+ continue;
465
+ }
466
+ const tag = String(match[2]);
467
+ const tagStart = matchStart + match[0].lastIndexOf(tag);
468
+ const bodyStart = tagStart + tag.length;
469
+ const tagEnd = content.indexOf(tag, bodyStart);
470
+ if (tagEnd === -1) {
471
+ continue;
472
+ }
473
+ output += content.slice(lastIndex, matchStart);
474
+ output += " ".repeat(tagEnd + tag.length - matchStart);
475
+ lastIndex = tagEnd + tag.length;
476
+ }
477
+ if (!output) return content;
478
+ return output + content.slice(lastIndex);
479
+ }
480
+ function buildLineStarts(content) {
481
+ const lineStarts = [0];
482
+ for (let i = 0; i < content.length; i += 1) {
483
+ if (content[i] === "\n") {
484
+ lineStarts.push(i + 1);
485
+ }
486
+ }
487
+ return lineStarts;
488
+ }
489
+ function lineNumberFromIndex(content, index, lineStarts = []) {
490
+ const clampedIndex = Math.max(0, Math.min(index, Math.max(0, content.length - 1)));
491
+ if (!lineStarts.length) {
492
+ return content.substring(0, clampedIndex + 1).split("\n").length;
493
+ }
494
+ let low = 0;
495
+ let high = lineStarts.length - 1;
496
+ let line = 0;
497
+ while (low <= high) {
498
+ const mid = Math.floor((low + high) / 2);
499
+ if (lineStarts[mid] <= clampedIndex) {
500
+ line = mid;
501
+ low = mid + 1;
502
+ } else {
503
+ high = mid - 1;
504
+ }
505
+ }
506
+ return line + 1;
507
+ }
508
+
509
+ // src/validators/risk-detector-content-risks.ts
510
+ init_esm_shims();
511
+ function stripSqlForPatternMatching(content) {
512
+ return content.replace(/--[^\n]*/g, (match) => " ".repeat(match.length)).replace(/\/\*[\s\S]*?\*\//g, (match) => match.replace(/[^\n]/g, " "));
513
+ }
514
+ function detectRisksFromContent(normalizedContent, originalContent, lineStarts) {
515
+ const risks = [];
516
+ const seenDescriptions = /* @__PURE__ */ new Set();
517
+ for (const riskPattern of RISK_PATTERNS) {
518
+ riskPattern.pattern.lastIndex = 0;
519
+ let match = riskPattern.pattern.exec(normalizedContent);
520
+ while (match !== null) {
521
+ const key = `${riskPattern.description}:${match[0]}`;
522
+ if (!seenDescriptions.has(key)) {
523
+ seenDescriptions.add(key);
524
+ risks.push({
525
+ level: riskPattern.level,
526
+ description: riskPattern.description,
527
+ mitigation: riskPattern.mitigation,
528
+ reasonCode: riskPattern.reasonCode,
529
+ confidence: riskPattern.confidence,
530
+ evidence: {
531
+ source: "pattern-match",
532
+ snippet: match[0],
533
+ detail: `Matched pattern ${riskPattern.pattern.toString()}`
534
+ },
535
+ line: lineNumberFromIndex(originalContent, match.index ?? 0, lineStarts)
536
+ });
537
+ }
538
+ match = riskPattern.pattern.exec(normalizedContent);
539
+ }
540
+ }
541
+ return risks;
542
+ }
543
+
544
+ export { QUALIFIED_IDENTIFIER, buildLineStarts, detectRisksFromContent, lineNumberFromIndex, maskWrapperFunctions, stripSqlCommentsPreserveLines, stripSqlForPatternMatching, stripSqlStringsPreserveLines };
@@ -0,0 +1,33 @@
1
+ #!/usr/bin/env node
2
+ import { createRequire } from 'module';
3
+ import { init_esm_shims } from './chunk-VRXHCR5K.js';
4
+ import { existsSync, readFileSync } from 'fs';
5
+ import path from 'path';
6
+
7
+ createRequire(import.meta.url);
8
+
9
+ // src/commands/utils/repo-root.ts
10
+ init_esm_shims();
11
+ function findRepoRoot(startDir) {
12
+ let current = startDir;
13
+ while (current !== path.dirname(current)) {
14
+ if (existsSync(path.join(current, "turbo.json"))) {
15
+ return current;
16
+ }
17
+ const pkgPath = path.join(current, "package.json");
18
+ if (existsSync(pkgPath)) {
19
+ try {
20
+ const rawPackage = readFileSync(pkgPath, "utf-8");
21
+ const pkg = JSON.parse(rawPackage);
22
+ if (pkg.workspaces) {
23
+ return current;
24
+ }
25
+ } catch (error) {
26
+ }
27
+ }
28
+ current = path.dirname(current);
29
+ }
30
+ return startDir;
31
+ }
32
+
33
+ export { findRepoRoot };
@@ -0,0 +1,59 @@
1
+ #!/usr/bin/env node
2
+ import { createRequire } from 'module';
3
+ import { init_esm_shims } from './chunk-VRXHCR5K.js';
4
+
5
+ createRequire(import.meta.url);
6
+
7
+ // src/commands/utils/machine-state-logging.ts
8
+ init_esm_shims();
9
+ function createMachineStateChangeLogger(options) {
10
+ const {
11
+ getState,
12
+ getContext,
13
+ handlers,
14
+ useParentState = false,
15
+ shouldSkipState,
16
+ onUnknownState,
17
+ handlerArgumentOrder = "logger-first"
18
+ } = options;
19
+ function resolveHandler(state) {
20
+ const exact = handlers[state];
21
+ if (exact) return exact;
22
+ if (!useParentState) return void 0;
23
+ const parent = state.includes(".") ? state.split(".")[0] : void 0;
24
+ return parent ? handlers[parent] : void 0;
25
+ }
26
+ function invokeHandler(handler, context, logger, extra) {
27
+ if (handlerArgumentOrder === "context-first") {
28
+ handler(
29
+ context,
30
+ logger,
31
+ extra
32
+ );
33
+ return;
34
+ }
35
+ handler(
36
+ logger,
37
+ context,
38
+ extra
39
+ );
40
+ }
41
+ return (snapshot, prevState, logger, extra) => {
42
+ const state = getState(snapshot);
43
+ if (state === prevState) {
44
+ return;
45
+ }
46
+ const context = getContext(snapshot);
47
+ if (shouldSkipState?.(state, prevState, context, extra)) {
48
+ return;
49
+ }
50
+ const handler = resolveHandler(state);
51
+ if (handler) {
52
+ invokeHandler(handler, context, logger, extra);
53
+ return;
54
+ }
55
+ onUnknownState?.(state, logger, context, extra, prevState);
56
+ };
57
+ }
58
+
59
+ export { createMachineStateChangeLogger };