@schema-weaver/pg-connector 0.0.0-stage → 2.0.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.
- package/CHANGELOG.md +21 -0
- package/LICENSE +21 -0
- package/README.md +457 -2
- package/dist/cjs/audit/chain.d.ts +365 -0
- package/dist/cjs/audit/chain.d.ts.map +1 -0
- package/dist/cjs/audit/chain.js +959 -0
- package/dist/cjs/audit/chain.js.map +1 -0
- package/dist/cjs/audit/cloud-client.d.ts +142 -0
- package/dist/cjs/audit/cloud-client.d.ts.map +1 -0
- package/dist/cjs/audit/cloud-client.js +364 -0
- package/dist/cjs/audit/cloud-client.js.map +1 -0
- package/dist/cjs/audit/cloud-writer.d.ts +57 -0
- package/dist/cjs/audit/cloud-writer.d.ts.map +1 -0
- package/dist/cjs/audit/cloud-writer.js +95 -0
- package/dist/cjs/audit/cloud-writer.js.map +1 -0
- package/dist/cjs/audit/context.d.ts +51 -0
- package/dist/cjs/audit/context.d.ts.map +1 -0
- package/dist/cjs/audit/context.js +75 -0
- package/dist/cjs/audit/context.js.map +1 -0
- package/dist/cjs/audit/files.d.ts +111 -0
- package/dist/cjs/audit/files.d.ts.map +1 -0
- package/dist/cjs/audit/files.js +406 -0
- package/dist/cjs/audit/files.js.map +1 -0
- package/dist/cjs/audit/index.d.ts +9 -0
- package/dist/cjs/audit/index.d.ts.map +1 -0
- package/dist/cjs/audit/index.js +68 -0
- package/dist/cjs/audit/index.js.map +1 -0
- package/dist/cjs/audit/local-writer.d.ts +255 -0
- package/dist/cjs/audit/local-writer.d.ts.map +1 -0
- package/dist/cjs/audit/local-writer.js +829 -0
- package/dist/cjs/audit/local-writer.js.map +1 -0
- package/dist/cjs/audit/redact.d.ts +151 -0
- package/dist/cjs/audit/redact.d.ts.map +1 -0
- package/dist/cjs/audit/redact.js +549 -0
- package/dist/cjs/audit/redact.js.map +1 -0
- package/dist/cjs/audit/sanitize.d.ts +78 -0
- package/dist/cjs/audit/sanitize.d.ts.map +1 -0
- package/dist/cjs/audit/sanitize.js +315 -0
- package/dist/cjs/audit/sanitize.js.map +1 -0
- package/dist/cjs/audit/sink.d.ts +278 -0
- package/dist/cjs/audit/sink.d.ts.map +1 -0
- package/dist/cjs/audit/sink.js +819 -0
- package/dist/cjs/audit/sink.js.map +1 -0
- package/dist/cjs/audit/types.d.ts +226 -0
- package/dist/cjs/audit/types.d.ts.map +1 -0
- package/dist/cjs/audit/types.js +3 -0
- package/dist/cjs/audit/types.js.map +1 -0
- package/dist/cjs/audit/verify-cache.d.ts +127 -0
- package/dist/cjs/audit/verify-cache.d.ts.map +1 -0
- package/dist/cjs/audit/verify-cache.js +668 -0
- package/dist/cjs/audit/verify-cache.js.map +1 -0
- package/dist/cjs/channels/agent-session.d.ts +228 -0
- package/dist/cjs/channels/agent-session.d.ts.map +1 -0
- package/dist/cjs/channels/agent-session.js +604 -0
- package/dist/cjs/channels/agent-session.js.map +1 -0
- package/dist/cjs/channels/data-channel.d.ts +181 -0
- package/dist/cjs/channels/data-channel.d.ts.map +1 -0
- package/dist/cjs/channels/data-channel.js +607 -0
- package/dist/cjs/channels/data-channel.js.map +1 -0
- package/dist/cjs/channels/reconnect.d.ts +142 -0
- package/dist/cjs/channels/reconnect.d.ts.map +1 -0
- package/dist/cjs/channels/reconnect.js +247 -0
- package/dist/cjs/channels/reconnect.js.map +1 -0
- package/dist/cjs/channels/types.d.ts +112 -0
- package/dist/cjs/channels/types.d.ts.map +1 -0
- package/dist/cjs/channels/types.js +3 -0
- package/dist/cjs/channels/types.js.map +1 -0
- package/dist/cjs/channels/wake-channel.d.ts +232 -0
- package/dist/cjs/channels/wake-channel.d.ts.map +1 -0
- package/dist/cjs/channels/wake-channel.js +752 -0
- package/dist/cjs/channels/wake-channel.js.map +1 -0
- package/dist/cjs/cli/banner.d.ts +2 -0
- package/dist/cjs/cli/banner.d.ts.map +1 -0
- package/dist/cjs/cli/banner.js +150 -0
- package/dist/cjs/cli/banner.js.map +1 -0
- package/dist/cjs/cli/commands/agent.d.ts +30 -0
- package/dist/cjs/cli/commands/agent.d.ts.map +1 -0
- package/dist/cjs/cli/commands/agent.js +214 -0
- package/dist/cjs/cli/commands/agent.js.map +1 -0
- package/dist/cjs/cli/commands/audit-verify.d.ts +19 -0
- package/dist/cjs/cli/commands/audit-verify.d.ts.map +1 -0
- package/dist/cjs/cli/commands/audit-verify.js +382 -0
- package/dist/cjs/cli/commands/audit-verify.js.map +1 -0
- package/dist/cjs/cli/commands/clean.d.ts +23 -0
- package/dist/cjs/cli/commands/clean.d.ts.map +1 -0
- package/dist/cjs/cli/commands/clean.js +272 -0
- package/dist/cjs/cli/commands/clean.js.map +1 -0
- package/dist/cjs/cli/commands/config-show.d.ts +2 -0
- package/dist/cjs/cli/commands/config-show.d.ts.map +1 -0
- package/dist/cjs/cli/commands/config-show.js +10 -0
- package/dist/cjs/cli/commands/config-show.js.map +1 -0
- package/dist/cjs/cli/commands/config.d.ts +6 -0
- package/dist/cjs/cli/commands/config.d.ts.map +1 -0
- package/dist/cjs/cli/commands/config.js +266 -0
- package/dist/cjs/cli/commands/config.js.map +1 -0
- package/dist/cjs/cli/commands/db-add.d.ts +16 -0
- package/dist/cjs/cli/commands/db-add.d.ts.map +1 -0
- package/dist/cjs/cli/commands/db-add.js +613 -0
- package/dist/cjs/cli/commands/db-add.js.map +1 -0
- package/dist/cjs/cli/commands/db-edit.d.ts +2 -0
- package/dist/cjs/cli/commands/db-edit.d.ts.map +1 -0
- package/dist/cjs/cli/commands/db-edit.js +388 -0
- package/dist/cjs/cli/commands/db-edit.js.map +1 -0
- package/dist/cjs/cli/commands/db-logs.d.ts +3 -0
- package/dist/cjs/cli/commands/db-logs.d.ts.map +1 -0
- package/dist/cjs/cli/commands/db-logs.js +67 -0
- package/dist/cjs/cli/commands/db-logs.js.map +1 -0
- package/dist/cjs/cli/commands/db-ls.d.ts +2 -0
- package/dist/cjs/cli/commands/db-ls.d.ts.map +1 -0
- package/dist/cjs/cli/commands/db-ls.js +118 -0
- package/dist/cjs/cli/commands/db-ls.js.map +1 -0
- package/dist/cjs/cli/commands/db-query.d.ts +121 -0
- package/dist/cjs/cli/commands/db-query.d.ts.map +1 -0
- package/dist/cjs/cli/commands/db-query.js +802 -0
- package/dist/cjs/cli/commands/db-query.js.map +1 -0
- package/dist/cjs/cli/commands/db-remove.d.ts +2 -0
- package/dist/cjs/cli/commands/db-remove.d.ts.map +1 -0
- package/dist/cjs/cli/commands/db-remove.js +51 -0
- package/dist/cjs/cli/commands/db-remove.js.map +1 -0
- package/dist/cjs/cli/commands/db-show.d.ts +2 -0
- package/dist/cjs/cli/commands/db-show.d.ts.map +1 -0
- package/dist/cjs/cli/commands/db-show.js +134 -0
- package/dist/cjs/cli/commands/db-show.js.map +1 -0
- package/dist/cjs/cli/commands/db-test.d.ts +3 -0
- package/dist/cjs/cli/commands/db-test.d.ts.map +1 -0
- package/dist/cjs/cli/commands/db-test.js +311 -0
- package/dist/cjs/cli/commands/db-test.js.map +1 -0
- package/dist/cjs/cli/commands/db.d.ts +11 -0
- package/dist/cjs/cli/commands/db.d.ts.map +1 -0
- package/dist/cjs/cli/commands/db.js +90 -0
- package/dist/cjs/cli/commands/db.js.map +1 -0
- package/dist/cjs/cli/commands/debug.d.ts +2 -0
- package/dist/cjs/cli/commands/debug.d.ts.map +1 -0
- package/dist/cjs/cli/commands/debug.js +241 -0
- package/dist/cjs/cli/commands/debug.js.map +1 -0
- package/dist/cjs/cli/commands/doctor.d.ts +5 -0
- package/dist/cjs/cli/commands/doctor.d.ts.map +1 -0
- package/dist/cjs/cli/commands/doctor.js +117 -0
- package/dist/cjs/cli/commands/doctor.js.map +1 -0
- package/dist/cjs/cli/commands/index.d.ts +10 -0
- package/dist/cjs/cli/commands/index.d.ts.map +1 -0
- package/dist/cjs/cli/commands/index.js +30 -0
- package/dist/cjs/cli/commands/index.js.map +1 -0
- package/dist/cjs/cli/commands/init.d.ts +2 -0
- package/dist/cjs/cli/commands/init.d.ts.map +1 -0
- package/dist/cjs/cli/commands/init.js +199 -0
- package/dist/cjs/cli/commands/init.js.map +1 -0
- package/dist/cjs/cli/commands/link.d.ts +5 -0
- package/dist/cjs/cli/commands/link.d.ts.map +1 -0
- package/dist/cjs/cli/commands/link.js +44 -0
- package/dist/cjs/cli/commands/link.js.map +1 -0
- package/dist/cjs/cli/commands/logs.d.ts +17 -0
- package/dist/cjs/cli/commands/logs.d.ts.map +1 -0
- package/dist/cjs/cli/commands/logs.js +314 -0
- package/dist/cjs/cli/commands/logs.js.map +1 -0
- package/dist/cjs/cli/commands/project-show.d.ts +2 -0
- package/dist/cjs/cli/commands/project-show.d.ts.map +1 -0
- package/dist/cjs/cli/commands/project-show.js +105 -0
- package/dist/cjs/cli/commands/project-show.js.map +1 -0
- package/dist/cjs/cli/commands/project.d.ts +3 -0
- package/dist/cjs/cli/commands/project.d.ts.map +1 -0
- package/dist/cjs/cli/commands/project.js +64 -0
- package/dist/cjs/cli/commands/project.js.map +1 -0
- package/dist/cjs/cli/commands/service.d.ts +123 -0
- package/dist/cjs/cli/commands/service.d.ts.map +1 -0
- package/dist/cjs/cli/commands/service.js +554 -0
- package/dist/cjs/cli/commands/service.js.map +1 -0
- package/dist/cjs/cli/commands/start.d.ts +6 -0
- package/dist/cjs/cli/commands/start.d.ts.map +1 -0
- package/dist/cjs/cli/commands/start.js +308 -0
- package/dist/cjs/cli/commands/start.js.map +1 -0
- package/dist/cjs/cli/commands/status.d.ts +2 -0
- package/dist/cjs/cli/commands/status.d.ts.map +1 -0
- package/dist/cjs/cli/commands/status.js +225 -0
- package/dist/cjs/cli/commands/status.js.map +1 -0
- package/dist/cjs/cli/commands/stop.d.ts +6 -0
- package/dist/cjs/cli/commands/stop.d.ts.map +1 -0
- package/dist/cjs/cli/commands/stop.js +99 -0
- package/dist/cjs/cli/commands/stop.js.map +1 -0
- package/dist/cjs/cli/daemon/error-tracker.d.ts +119 -0
- package/dist/cjs/cli/daemon/error-tracker.d.ts.map +1 -0
- package/dist/cjs/cli/daemon/error-tracker.js +500 -0
- package/dist/cjs/cli/daemon/error-tracker.js.map +1 -0
- package/dist/cjs/cli/daemon/fault-shutdown.d.ts +144 -0
- package/dist/cjs/cli/daemon/fault-shutdown.d.ts.map +1 -0
- package/dist/cjs/cli/daemon/fault-shutdown.js +312 -0
- package/dist/cjs/cli/daemon/fault-shutdown.js.map +1 -0
- package/dist/cjs/cli/daemon/index.d.ts +12 -0
- package/dist/cjs/cli/daemon/index.d.ts.map +1 -0
- package/dist/cjs/cli/daemon/index.js +23 -0
- package/dist/cjs/cli/daemon/index.js.map +1 -0
- package/dist/cjs/cli/daemon/pid-file.d.ts +13 -0
- package/dist/cjs/cli/daemon/pid-file.d.ts.map +1 -0
- package/dist/cjs/cli/daemon/pid-file.js +90 -0
- package/dist/cjs/cli/daemon/pid-file.js.map +1 -0
- package/dist/cjs/cli/daemon/readiness.d.ts +30 -0
- package/dist/cjs/cli/daemon/readiness.d.ts.map +1 -0
- package/dist/cjs/cli/daemon/readiness.js +74 -0
- package/dist/cjs/cli/daemon/readiness.js.map +1 -0
- package/dist/cjs/cli/daemon/runtime.d.ts +366 -0
- package/dist/cjs/cli/daemon/runtime.d.ts.map +1 -0
- package/dist/cjs/cli/daemon/runtime.js +1343 -0
- package/dist/cjs/cli/daemon/runtime.js.map +1 -0
- package/dist/cjs/cli/daemon/shutdown.d.ts +7 -0
- package/dist/cjs/cli/daemon/shutdown.d.ts.map +1 -0
- package/dist/cjs/cli/daemon/shutdown.js +66 -0
- package/dist/cjs/cli/daemon/shutdown.js.map +1 -0
- package/dist/cjs/cli/daemon/signal-handlers.d.ts +3 -0
- package/dist/cjs/cli/daemon/signal-handlers.d.ts.map +1 -0
- package/dist/cjs/cli/daemon/signal-handlers.js +27 -0
- package/dist/cjs/cli/daemon/signal-handlers.js.map +1 -0
- package/dist/cjs/cli/daemon/state.d.ts +157 -0
- package/dist/cjs/cli/daemon/state.d.ts.map +1 -0
- package/dist/cjs/cli/daemon/state.js +397 -0
- package/dist/cjs/cli/daemon/state.js.map +1 -0
- package/dist/cjs/cli/daemon/status-file.d.ts +139 -0
- package/dist/cjs/cli/daemon/status-file.d.ts.map +1 -0
- package/dist/cjs/cli/daemon/status-file.js +88 -0
- package/dist/cjs/cli/daemon/status-file.js.map +1 -0
- package/dist/cjs/cli/doctor/checks.d.ts +133 -0
- package/dist/cjs/cli/doctor/checks.d.ts.map +1 -0
- package/dist/cjs/cli/doctor/checks.js +677 -0
- package/dist/cjs/cli/doctor/checks.js.map +1 -0
- package/dist/cjs/cli/doctor/fixes.d.ts +9 -0
- package/dist/cjs/cli/doctor/fixes.d.ts.map +1 -0
- package/dist/cjs/cli/doctor/fixes.js +199 -0
- package/dist/cjs/cli/doctor/fixes.js.map +1 -0
- package/dist/cjs/cli/doctor/index.d.ts +7 -0
- package/dist/cjs/cli/doctor/index.d.ts.map +1 -0
- package/dist/cjs/cli/doctor/index.js +27 -0
- package/dist/cjs/cli/doctor/index.js.map +1 -0
- package/dist/cjs/cli/index.d.ts +3 -0
- package/dist/cjs/cli/index.d.ts.map +1 -0
- package/dist/cjs/cli/index.js +336 -0
- package/dist/cjs/cli/index.js.map +1 -0
- package/dist/cjs/cli/interactive.d.ts +8 -0
- package/dist/cjs/cli/interactive.d.ts.map +1 -0
- package/dist/cjs/cli/interactive.js +670 -0
- package/dist/cjs/cli/interactive.js.map +1 -0
- package/dist/cjs/cli/logs/format.d.ts +13 -0
- package/dist/cjs/cli/logs/format.d.ts.map +1 -0
- package/dist/cjs/cli/logs/format.js +178 -0
- package/dist/cjs/cli/logs/format.js.map +1 -0
- package/dist/cjs/cli/logs/index.d.ts +3 -0
- package/dist/cjs/cli/logs/index.d.ts.map +1 -0
- package/dist/cjs/cli/logs/index.js +13 -0
- package/dist/cjs/cli/logs/index.js.map +1 -0
- package/dist/cjs/cli/logs/viewer.d.ts +41 -0
- package/dist/cjs/cli/logs/viewer.d.ts.map +1 -0
- package/dist/cjs/cli/logs/viewer.js +417 -0
- package/dist/cjs/cli/logs/viewer.js.map +1 -0
- package/dist/cjs/cli/ops/operation-logger.d.ts +63 -0
- package/dist/cjs/cli/ops/operation-logger.d.ts.map +1 -0
- package/dist/cjs/cli/ops/operation-logger.js +183 -0
- package/dist/cjs/cli/ops/operation-logger.js.map +1 -0
- package/dist/cjs/cli/palette.d.ts +11 -0
- package/dist/cjs/cli/palette.d.ts.map +1 -0
- package/dist/cjs/cli/palette.js +243 -0
- package/dist/cjs/cli/palette.js.map +1 -0
- package/dist/cjs/cli/prompt.d.ts +186 -0
- package/dist/cjs/cli/prompt.d.ts.map +1 -0
- package/dist/cjs/cli/prompt.js +541 -0
- package/dist/cjs/cli/prompt.js.map +1 -0
- package/dist/cjs/cli/ui/box.d.ts +21 -0
- package/dist/cjs/cli/ui/box.d.ts.map +1 -0
- package/dist/cjs/cli/ui/box.js +72 -0
- package/dist/cjs/cli/ui/box.js.map +1 -0
- package/dist/cjs/cli/ui/clipboard.d.ts +6 -0
- package/dist/cjs/cli/ui/clipboard.d.ts.map +1 -0
- package/dist/cjs/cli/ui/clipboard.js +78 -0
- package/dist/cjs/cli/ui/clipboard.js.map +1 -0
- package/dist/cjs/cli/ui/colors.d.ts +57 -0
- package/dist/cjs/cli/ui/colors.d.ts.map +1 -0
- package/dist/cjs/cli/ui/colors.js +151 -0
- package/dist/cjs/cli/ui/colors.js.map +1 -0
- package/dist/cjs/cli/ui/index.d.ts +9 -0
- package/dist/cjs/cli/ui/index.d.ts.map +1 -0
- package/dist/cjs/cli/ui/index.js +55 -0
- package/dist/cjs/cli/ui/index.js.map +1 -0
- package/dist/cjs/cli/ui/spinner.d.ts +12 -0
- package/dist/cjs/cli/ui/spinner.d.ts.map +1 -0
- package/dist/cjs/cli/ui/spinner.js +82 -0
- package/dist/cjs/cli/ui/spinner.js.map +1 -0
- package/dist/cjs/cli/ui/symbols.d.ts +47 -0
- package/dist/cjs/cli/ui/symbols.d.ts.map +1 -0
- package/dist/cjs/cli/ui/symbols.js +112 -0
- package/dist/cjs/cli/ui/symbols.js.map +1 -0
- package/dist/cjs/cli/ui/table.d.ts +23 -0
- package/dist/cjs/cli/ui/table.d.ts.map +1 -0
- package/dist/cjs/cli/ui/table.js +160 -0
- package/dist/cjs/cli/ui/table.js.map +1 -0
- package/dist/cjs/cli/ui/terminal.d.ts +7 -0
- package/dist/cjs/cli/ui/terminal.d.ts.map +1 -0
- package/dist/cjs/cli/ui/terminal.js +40 -0
- package/dist/cjs/cli/ui/terminal.js.map +1 -0
- package/dist/cjs/config/atomic-write.d.ts +69 -0
- package/dist/cjs/config/atomic-write.d.ts.map +1 -0
- package/dist/cjs/config/atomic-write.js +289 -0
- package/dist/cjs/config/atomic-write.js.map +1 -0
- package/dist/cjs/config/db-config.d.ts +134 -0
- package/dist/cjs/config/db-config.d.ts.map +1 -0
- package/dist/cjs/config/db-config.js +594 -0
- package/dist/cjs/config/db-config.js.map +1 -0
- package/dist/cjs/config/machine-config.d.ts +85 -0
- package/dist/cjs/config/machine-config.d.ts.map +1 -0
- package/dist/cjs/config/machine-config.js +232 -0
- package/dist/cjs/config/machine-config.js.map +1 -0
- package/dist/cjs/config/paths.d.ts +64 -0
- package/dist/cjs/config/paths.d.ts.map +1 -0
- package/dist/cjs/config/paths.js +155 -0
- package/dist/cjs/config/paths.js.map +1 -0
- package/dist/cjs/config/schema.d.ts +72 -0
- package/dist/cjs/config/schema.d.ts.map +1 -0
- package/dist/cjs/config/schema.js +197 -0
- package/dist/cjs/config/schema.js.map +1 -0
- package/dist/cjs/config/token.d.ts +63 -0
- package/dist/cjs/config/token.d.ts.map +1 -0
- package/dist/cjs/config/token.js +146 -0
- package/dist/cjs/config/token.js.map +1 -0
- package/dist/cjs/execution/canceller.d.ts +41 -0
- package/dist/cjs/execution/canceller.d.ts.map +1 -0
- package/dist/cjs/execution/canceller.js +209 -0
- package/dist/cjs/execution/canceller.js.map +1 -0
- package/dist/cjs/execution/database-lookup.d.ts +56 -0
- package/dist/cjs/execution/database-lookup.d.ts.map +1 -0
- package/dist/cjs/execution/database-lookup.js +43 -0
- package/dist/cjs/execution/database-lookup.js.map +1 -0
- package/dist/cjs/execution/dispatcher.d.ts +181 -0
- package/dist/cjs/execution/dispatcher.d.ts.map +1 -0
- package/dist/cjs/execution/dispatcher.js +1296 -0
- package/dist/cjs/execution/dispatcher.js.map +1 -0
- package/dist/cjs/execution/function-effects.d.ts +209 -0
- package/dist/cjs/execution/function-effects.d.ts.map +1 -0
- package/dist/cjs/execution/function-effects.js +596 -0
- package/dist/cjs/execution/function-effects.js.map +1 -0
- package/dist/cjs/execution/introspection.d.ts +76 -0
- package/dist/cjs/execution/introspection.d.ts.map +1 -0
- package/dist/cjs/execution/introspection.js +448 -0
- package/dist/cjs/execution/introspection.js.map +1 -0
- package/dist/cjs/execution/migration-runner.d.ts +128 -0
- package/dist/cjs/execution/migration-runner.d.ts.map +1 -0
- package/dist/cjs/execution/migration-runner.js +798 -0
- package/dist/cjs/execution/migration-runner.js.map +1 -0
- package/dist/cjs/execution/non-tx-detector.d.ts +23 -0
- package/dist/cjs/execution/non-tx-detector.d.ts.map +1 -0
- package/dist/cjs/execution/non-tx-detector.js +218 -0
- package/dist/cjs/execution/non-tx-detector.js.map +1 -0
- package/dist/cjs/execution/pool.d.ts +229 -0
- package/dist/cjs/execution/pool.d.ts.map +1 -0
- package/dist/cjs/execution/pool.js +738 -0
- package/dist/cjs/execution/pool.js.map +1 -0
- package/dist/cjs/execution/query-runner.d.ts +88 -0
- package/dist/cjs/execution/query-runner.d.ts.map +1 -0
- package/dist/cjs/execution/query-runner.js +751 -0
- package/dist/cjs/execution/query-runner.js.map +1 -0
- package/dist/cjs/execution/rate-limiter.d.ts +120 -0
- package/dist/cjs/execution/rate-limiter.d.ts.map +1 -0
- package/dist/cjs/execution/rate-limiter.js +273 -0
- package/dist/cjs/execution/rate-limiter.js.map +1 -0
- package/dist/cjs/execution/search-path.d.ts +161 -0
- package/dist/cjs/execution/search-path.d.ts.map +1 -0
- package/dist/cjs/execution/search-path.js +279 -0
- package/dist/cjs/execution/search-path.js.map +1 -0
- package/dist/cjs/execution/sql-parser.d.ts +195 -0
- package/dist/cjs/execution/sql-parser.d.ts.map +1 -0
- package/dist/cjs/execution/sql-parser.js +704 -0
- package/dist/cjs/execution/sql-parser.js.map +1 -0
- package/dist/cjs/execution/statement-classifier.d.ts +103 -0
- package/dist/cjs/execution/statement-classifier.d.ts.map +1 -0
- package/dist/cjs/execution/statement-classifier.js +535 -0
- package/dist/cjs/execution/statement-classifier.js.map +1 -0
- package/dist/cjs/execution/types.d.ts +189 -0
- package/dist/cjs/execution/types.d.ts.map +1 -0
- package/dist/cjs/execution/types.js +28 -0
- package/dist/cjs/execution/types.js.map +1 -0
- package/dist/cjs/index.d.ts +34 -0
- package/dist/cjs/index.d.ts.map +1 -0
- package/dist/cjs/index.js +98 -0
- package/dist/cjs/index.js.map +1 -0
- package/dist/cjs/permissions/auto-upgrade.d.ts +40 -0
- package/dist/cjs/permissions/auto-upgrade.d.ts.map +1 -0
- package/dist/cjs/permissions/auto-upgrade.js +168 -0
- package/dist/cjs/permissions/auto-upgrade.js.map +1 -0
- package/dist/cjs/permissions/checker.d.ts +53 -0
- package/dist/cjs/permissions/checker.d.ts.map +1 -0
- package/dist/cjs/permissions/checker.js +326 -0
- package/dist/cjs/permissions/checker.js.map +1 -0
- package/dist/cjs/permissions/manual-approval.d.ts +213 -0
- package/dist/cjs/permissions/manual-approval.d.ts.map +1 -0
- package/dist/cjs/permissions/manual-approval.js +541 -0
- package/dist/cjs/permissions/manual-approval.js.map +1 -0
- package/dist/cjs/permissions/plan-registry.d.ts +274 -0
- package/dist/cjs/permissions/plan-registry.d.ts.map +1 -0
- package/dist/cjs/permissions/plan-registry.js +454 -0
- package/dist/cjs/permissions/plan-registry.js.map +1 -0
- package/dist/cjs/permissions/role-policy.d.ts +217 -0
- package/dist/cjs/permissions/role-policy.d.ts.map +1 -0
- package/dist/cjs/permissions/role-policy.js +584 -0
- package/dist/cjs/permissions/role-policy.js.map +1 -0
- package/dist/cjs/permissions/types.d.ts +126 -0
- package/dist/cjs/permissions/types.d.ts.map +1 -0
- package/dist/cjs/permissions/types.js +3 -0
- package/dist/cjs/permissions/types.js.map +1 -0
- package/dist/cjs/protocol/constants.d.ts +72 -0
- package/dist/cjs/protocol/constants.d.ts.map +1 -0
- package/dist/cjs/protocol/constants.js +107 -0
- package/dist/cjs/protocol/constants.js.map +1 -0
- package/dist/cjs/protocol/envelope.d.ts +165 -0
- package/dist/cjs/protocol/envelope.d.ts.map +1 -0
- package/dist/cjs/protocol/envelope.js +309 -0
- package/dist/cjs/protocol/envelope.js.map +1 -0
- package/dist/cjs/protocol/errors.d.ts +33 -0
- package/dist/cjs/protocol/errors.d.ts.map +1 -0
- package/dist/cjs/protocol/errors.js +391 -0
- package/dist/cjs/protocol/errors.js.map +1 -0
- package/dist/cjs/protocol/messages.d.ts +327 -0
- package/dist/cjs/protocol/messages.d.ts.map +1 -0
- package/dist/cjs/protocol/messages.js +3 -0
- package/dist/cjs/protocol/messages.js.map +1 -0
- package/dist/cjs/protocol/serialize.d.ts +26 -0
- package/dist/cjs/protocol/serialize.d.ts.map +1 -0
- package/dist/cjs/protocol/serialize.js +71 -0
- package/dist/cjs/protocol/serialize.js.map +1 -0
- package/dist/cjs/protocol/validate.d.ts +135 -0
- package/dist/cjs/protocol/validate.d.ts.map +1 -0
- package/dist/cjs/protocol/validate.js +852 -0
- package/dist/cjs/protocol/validate.js.map +1 -0
- package/dist/esm/audit/chain.d.ts +365 -0
- package/dist/esm/audit/chain.d.ts.map +1 -0
- package/dist/esm/audit/chain.js +895 -0
- package/dist/esm/audit/chain.js.map +1 -0
- package/dist/esm/audit/cloud-client.d.ts +142 -0
- package/dist/esm/audit/cloud-client.d.ts.map +1 -0
- package/dist/esm/audit/cloud-client.js +326 -0
- package/dist/esm/audit/cloud-client.js.map +1 -0
- package/dist/esm/audit/cloud-writer.d.ts +57 -0
- package/dist/esm/audit/cloud-writer.d.ts.map +1 -0
- package/dist/esm/audit/cloud-writer.js +91 -0
- package/dist/esm/audit/cloud-writer.js.map +1 -0
- package/dist/esm/audit/context.d.ts +51 -0
- package/dist/esm/audit/context.d.ts.map +1 -0
- package/dist/esm/audit/context.js +69 -0
- package/dist/esm/audit/context.js.map +1 -0
- package/dist/esm/audit/files.d.ts +111 -0
- package/dist/esm/audit/files.d.ts.map +1 -0
- package/dist/esm/audit/files.js +361 -0
- package/dist/esm/audit/files.js.map +1 -0
- package/dist/esm/audit/index.d.ts +9 -0
- package/dist/esm/audit/index.d.ts.map +1 -0
- package/dist/esm/audit/index.js +8 -0
- package/dist/esm/audit/index.js.map +1 -0
- package/dist/esm/audit/local-writer.d.ts +255 -0
- package/dist/esm/audit/local-writer.d.ts.map +1 -0
- package/dist/esm/audit/local-writer.js +785 -0
- package/dist/esm/audit/local-writer.js.map +1 -0
- package/dist/esm/audit/redact.d.ts +151 -0
- package/dist/esm/audit/redact.d.ts.map +1 -0
- package/dist/esm/audit/redact.js +506 -0
- package/dist/esm/audit/redact.js.map +1 -0
- package/dist/esm/audit/sanitize.d.ts +78 -0
- package/dist/esm/audit/sanitize.d.ts.map +1 -0
- package/dist/esm/audit/sanitize.js +307 -0
- package/dist/esm/audit/sanitize.js.map +1 -0
- package/dist/esm/audit/sink.d.ts +278 -0
- package/dist/esm/audit/sink.d.ts.map +1 -0
- package/dist/esm/audit/sink.js +782 -0
- package/dist/esm/audit/sink.js.map +1 -0
- package/dist/esm/audit/types.d.ts +226 -0
- package/dist/esm/audit/types.d.ts.map +1 -0
- package/dist/esm/audit/types.js +2 -0
- package/dist/esm/audit/types.js.map +1 -0
- package/dist/esm/audit/verify-cache.d.ts +127 -0
- package/dist/esm/audit/verify-cache.d.ts.map +1 -0
- package/dist/esm/audit/verify-cache.js +628 -0
- package/dist/esm/audit/verify-cache.js.map +1 -0
- package/dist/esm/channels/agent-session.d.ts +228 -0
- package/dist/esm/channels/agent-session.d.ts.map +1 -0
- package/dist/esm/channels/agent-session.js +566 -0
- package/dist/esm/channels/agent-session.js.map +1 -0
- package/dist/esm/channels/data-channel.d.ts +181 -0
- package/dist/esm/channels/data-channel.d.ts.map +1 -0
- package/dist/esm/channels/data-channel.js +567 -0
- package/dist/esm/channels/data-channel.js.map +1 -0
- package/dist/esm/channels/reconnect.d.ts +142 -0
- package/dist/esm/channels/reconnect.d.ts.map +1 -0
- package/dist/esm/channels/reconnect.js +234 -0
- package/dist/esm/channels/reconnect.js.map +1 -0
- package/dist/esm/channels/types.d.ts +112 -0
- package/dist/esm/channels/types.d.ts.map +1 -0
- package/dist/esm/channels/types.js +2 -0
- package/dist/esm/channels/types.js.map +1 -0
- package/dist/esm/channels/wake-channel.d.ts +232 -0
- package/dist/esm/channels/wake-channel.d.ts.map +1 -0
- package/dist/esm/channels/wake-channel.js +715 -0
- package/dist/esm/channels/wake-channel.js.map +1 -0
- package/dist/esm/cli/banner.d.ts +2 -0
- package/dist/esm/cli/banner.d.ts.map +1 -0
- package/dist/esm/cli/banner.js +114 -0
- package/dist/esm/cli/banner.js.map +1 -0
- package/dist/esm/cli/commands/agent.d.ts +30 -0
- package/dist/esm/cli/commands/agent.d.ts.map +1 -0
- package/dist/esm/cli/commands/agent.js +204 -0
- package/dist/esm/cli/commands/agent.js.map +1 -0
- package/dist/esm/cli/commands/audit-verify.d.ts +19 -0
- package/dist/esm/cli/commands/audit-verify.d.ts.map +1 -0
- package/dist/esm/cli/commands/audit-verify.js +345 -0
- package/dist/esm/cli/commands/audit-verify.js.map +1 -0
- package/dist/esm/cli/commands/clean.d.ts +23 -0
- package/dist/esm/cli/commands/clean.d.ts.map +1 -0
- package/dist/esm/cli/commands/clean.js +235 -0
- package/dist/esm/cli/commands/clean.js.map +1 -0
- package/dist/esm/cli/commands/config-show.d.ts +2 -0
- package/dist/esm/cli/commands/config-show.d.ts.map +1 -0
- package/dist/esm/cli/commands/config-show.js +2 -0
- package/dist/esm/cli/commands/config-show.js.map +1 -0
- package/dist/esm/cli/commands/config.d.ts +6 -0
- package/dist/esm/cli/commands/config.d.ts.map +1 -0
- package/dist/esm/cli/commands/config.js +259 -0
- package/dist/esm/cli/commands/config.js.map +1 -0
- package/dist/esm/cli/commands/db-add.d.ts +16 -0
- package/dist/esm/cli/commands/db-add.d.ts.map +1 -0
- package/dist/esm/cli/commands/db-add.js +576 -0
- package/dist/esm/cli/commands/db-add.js.map +1 -0
- package/dist/esm/cli/commands/db-edit.d.ts +2 -0
- package/dist/esm/cli/commands/db-edit.d.ts.map +1 -0
- package/dist/esm/cli/commands/db-edit.js +352 -0
- package/dist/esm/cli/commands/db-edit.js.map +1 -0
- package/dist/esm/cli/commands/db-logs.d.ts +3 -0
- package/dist/esm/cli/commands/db-logs.d.ts.map +1 -0
- package/dist/esm/cli/commands/db-logs.js +64 -0
- package/dist/esm/cli/commands/db-logs.js.map +1 -0
- package/dist/esm/cli/commands/db-ls.d.ts +2 -0
- package/dist/esm/cli/commands/db-ls.d.ts.map +1 -0
- package/dist/esm/cli/commands/db-ls.js +115 -0
- package/dist/esm/cli/commands/db-ls.js.map +1 -0
- package/dist/esm/cli/commands/db-query.d.ts +121 -0
- package/dist/esm/cli/commands/db-query.d.ts.map +1 -0
- package/dist/esm/cli/commands/db-query.js +754 -0
- package/dist/esm/cli/commands/db-query.js.map +1 -0
- package/dist/esm/cli/commands/db-remove.d.ts +2 -0
- package/dist/esm/cli/commands/db-remove.d.ts.map +1 -0
- package/dist/esm/cli/commands/db-remove.js +48 -0
- package/dist/esm/cli/commands/db-remove.js.map +1 -0
- package/dist/esm/cli/commands/db-show.d.ts +2 -0
- package/dist/esm/cli/commands/db-show.d.ts.map +1 -0
- package/dist/esm/cli/commands/db-show.js +131 -0
- package/dist/esm/cli/commands/db-show.js.map +1 -0
- package/dist/esm/cli/commands/db-test.d.ts +3 -0
- package/dist/esm/cli/commands/db-test.d.ts.map +1 -0
- package/dist/esm/cli/commands/db-test.js +307 -0
- package/dist/esm/cli/commands/db-test.js.map +1 -0
- package/dist/esm/cli/commands/db.d.ts +11 -0
- package/dist/esm/cli/commands/db.d.ts.map +1 -0
- package/dist/esm/cli/commands/db.js +76 -0
- package/dist/esm/cli/commands/db.js.map +1 -0
- package/dist/esm/cli/commands/debug.d.ts +2 -0
- package/dist/esm/cli/commands/debug.d.ts.map +1 -0
- package/dist/esm/cli/commands/debug.js +205 -0
- package/dist/esm/cli/commands/debug.js.map +1 -0
- package/dist/esm/cli/commands/doctor.d.ts +5 -0
- package/dist/esm/cli/commands/doctor.d.ts.map +1 -0
- package/dist/esm/cli/commands/doctor.js +114 -0
- package/dist/esm/cli/commands/doctor.js.map +1 -0
- package/dist/esm/cli/commands/index.d.ts +10 -0
- package/dist/esm/cli/commands/index.d.ts.map +1 -0
- package/dist/esm/cli/commands/index.js +10 -0
- package/dist/esm/cli/commands/index.js.map +1 -0
- package/dist/esm/cli/commands/init.d.ts +2 -0
- package/dist/esm/cli/commands/init.d.ts.map +1 -0
- package/dist/esm/cli/commands/init.js +163 -0
- package/dist/esm/cli/commands/init.js.map +1 -0
- package/dist/esm/cli/commands/link.d.ts +5 -0
- package/dist/esm/cli/commands/link.d.ts.map +1 -0
- package/dist/esm/cli/commands/link.js +41 -0
- package/dist/esm/cli/commands/link.js.map +1 -0
- package/dist/esm/cli/commands/logs.d.ts +17 -0
- package/dist/esm/cli/commands/logs.d.ts.map +1 -0
- package/dist/esm/cli/commands/logs.js +278 -0
- package/dist/esm/cli/commands/logs.js.map +1 -0
- package/dist/esm/cli/commands/project-show.d.ts +2 -0
- package/dist/esm/cli/commands/project-show.d.ts.map +1 -0
- package/dist/esm/cli/commands/project-show.js +69 -0
- package/dist/esm/cli/commands/project-show.js.map +1 -0
- package/dist/esm/cli/commands/project.d.ts +3 -0
- package/dist/esm/cli/commands/project.d.ts.map +1 -0
- package/dist/esm/cli/commands/project.js +60 -0
- package/dist/esm/cli/commands/project.js.map +1 -0
- package/dist/esm/cli/commands/service.d.ts +123 -0
- package/dist/esm/cli/commands/service.d.ts.map +1 -0
- package/dist/esm/cli/commands/service.js +505 -0
- package/dist/esm/cli/commands/service.js.map +1 -0
- package/dist/esm/cli/commands/start.d.ts +6 -0
- package/dist/esm/cli/commands/start.d.ts.map +1 -0
- package/dist/esm/cli/commands/start.js +272 -0
- package/dist/esm/cli/commands/start.js.map +1 -0
- package/dist/esm/cli/commands/status.d.ts +2 -0
- package/dist/esm/cli/commands/status.d.ts.map +1 -0
- package/dist/esm/cli/commands/status.js +222 -0
- package/dist/esm/cli/commands/status.js.map +1 -0
- package/dist/esm/cli/commands/stop.d.ts +6 -0
- package/dist/esm/cli/commands/stop.d.ts.map +1 -0
- package/dist/esm/cli/commands/stop.js +96 -0
- package/dist/esm/cli/commands/stop.js.map +1 -0
- package/dist/esm/cli/daemon/error-tracker.d.ts +119 -0
- package/dist/esm/cli/daemon/error-tracker.d.ts.map +1 -0
- package/dist/esm/cli/daemon/error-tracker.js +451 -0
- package/dist/esm/cli/daemon/error-tracker.js.map +1 -0
- package/dist/esm/cli/daemon/fault-shutdown.d.ts +144 -0
- package/dist/esm/cli/daemon/fault-shutdown.d.ts.map +1 -0
- package/dist/esm/cli/daemon/fault-shutdown.js +273 -0
- package/dist/esm/cli/daemon/fault-shutdown.js.map +1 -0
- package/dist/esm/cli/daemon/index.d.ts +12 -0
- package/dist/esm/cli/daemon/index.d.ts.map +1 -0
- package/dist/esm/cli/daemon/index.js +7 -0
- package/dist/esm/cli/daemon/index.js.map +1 -0
- package/dist/esm/cli/daemon/pid-file.d.ts +13 -0
- package/dist/esm/cli/daemon/pid-file.d.ts.map +1 -0
- package/dist/esm/cli/daemon/pid-file.js +51 -0
- package/dist/esm/cli/daemon/pid-file.js.map +1 -0
- package/dist/esm/cli/daemon/readiness.d.ts +30 -0
- package/dist/esm/cli/daemon/readiness.d.ts.map +1 -0
- package/dist/esm/cli/daemon/readiness.js +70 -0
- package/dist/esm/cli/daemon/readiness.js.map +1 -0
- package/dist/esm/cli/daemon/runtime.d.ts +366 -0
- package/dist/esm/cli/daemon/runtime.d.ts.map +1 -0
- package/dist/esm/cli/daemon/runtime.js +1284 -0
- package/dist/esm/cli/daemon/runtime.js.map +1 -0
- package/dist/esm/cli/daemon/shutdown.d.ts +7 -0
- package/dist/esm/cli/daemon/shutdown.d.ts.map +1 -0
- package/dist/esm/cli/daemon/shutdown.js +63 -0
- package/dist/esm/cli/daemon/shutdown.js.map +1 -0
- package/dist/esm/cli/daemon/signal-handlers.d.ts +3 -0
- package/dist/esm/cli/daemon/signal-handlers.d.ts.map +1 -0
- package/dist/esm/cli/daemon/signal-handlers.js +24 -0
- package/dist/esm/cli/daemon/signal-handlers.js.map +1 -0
- package/dist/esm/cli/daemon/state.d.ts +157 -0
- package/dist/esm/cli/daemon/state.d.ts.map +1 -0
- package/dist/esm/cli/daemon/state.js +352 -0
- package/dist/esm/cli/daemon/state.js.map +1 -0
- package/dist/esm/cli/daemon/status-file.d.ts +139 -0
- package/dist/esm/cli/daemon/status-file.d.ts.map +1 -0
- package/dist/esm/cli/daemon/status-file.js +50 -0
- package/dist/esm/cli/daemon/status-file.js.map +1 -0
- package/dist/esm/cli/doctor/checks.d.ts +133 -0
- package/dist/esm/cli/doctor/checks.d.ts.map +1 -0
- package/dist/esm/cli/doctor/checks.js +624 -0
- package/dist/esm/cli/doctor/checks.js.map +1 -0
- package/dist/esm/cli/doctor/fixes.d.ts +9 -0
- package/dist/esm/cli/doctor/fixes.d.ts.map +1 -0
- package/dist/esm/cli/doctor/fixes.js +163 -0
- package/dist/esm/cli/doctor/fixes.js.map +1 -0
- package/dist/esm/cli/doctor/index.d.ts +7 -0
- package/dist/esm/cli/doctor/index.d.ts.map +1 -0
- package/dist/esm/cli/doctor/index.js +5 -0
- package/dist/esm/cli/doctor/index.js.map +1 -0
- package/dist/esm/cli/index.d.ts +3 -0
- package/dist/esm/cli/index.d.ts.map +1 -0
- package/dist/esm/cli/index.js +333 -0
- package/dist/esm/cli/index.js.map +1 -0
- package/dist/esm/cli/interactive.d.ts +8 -0
- package/dist/esm/cli/interactive.d.ts.map +1 -0
- package/dist/esm/cli/interactive.js +665 -0
- package/dist/esm/cli/interactive.js.map +1 -0
- package/dist/esm/cli/logs/format.d.ts +13 -0
- package/dist/esm/cli/logs/format.d.ts.map +1 -0
- package/dist/esm/cli/logs/format.js +169 -0
- package/dist/esm/cli/logs/format.js.map +1 -0
- package/dist/esm/cli/logs/index.d.ts +3 -0
- package/dist/esm/cli/logs/index.d.ts.map +1 -0
- package/dist/esm/cli/logs/index.js +3 -0
- package/dist/esm/cli/logs/index.js.map +1 -0
- package/dist/esm/cli/logs/viewer.d.ts +41 -0
- package/dist/esm/cli/logs/viewer.d.ts.map +1 -0
- package/dist/esm/cli/logs/viewer.js +412 -0
- package/dist/esm/cli/logs/viewer.js.map +1 -0
- package/dist/esm/cli/ops/operation-logger.d.ts +63 -0
- package/dist/esm/cli/ops/operation-logger.d.ts.map +1 -0
- package/dist/esm/cli/ops/operation-logger.js +142 -0
- package/dist/esm/cli/ops/operation-logger.js.map +1 -0
- package/dist/esm/cli/palette.d.ts +11 -0
- package/dist/esm/cli/palette.d.ts.map +1 -0
- package/dist/esm/cli/palette.js +240 -0
- package/dist/esm/cli/palette.js.map +1 -0
- package/dist/esm/cli/prompt.d.ts +186 -0
- package/dist/esm/cli/prompt.d.ts.map +1 -0
- package/dist/esm/cli/prompt.js +483 -0
- package/dist/esm/cli/prompt.js.map +1 -0
- package/dist/esm/cli/ui/box.d.ts +21 -0
- package/dist/esm/cli/ui/box.d.ts.map +1 -0
- package/dist/esm/cli/ui/box.js +60 -0
- package/dist/esm/cli/ui/box.js.map +1 -0
- package/dist/esm/cli/ui/clipboard.d.ts +6 -0
- package/dist/esm/cli/ui/clipboard.d.ts.map +1 -0
- package/dist/esm/cli/ui/clipboard.js +42 -0
- package/dist/esm/cli/ui/clipboard.js.map +1 -0
- package/dist/esm/cli/ui/colors.d.ts +57 -0
- package/dist/esm/cli/ui/colors.d.ts.map +1 -0
- package/dist/esm/cli/ui/colors.js +126 -0
- package/dist/esm/cli/ui/colors.js.map +1 -0
- package/dist/esm/cli/ui/index.d.ts +9 -0
- package/dist/esm/cli/ui/index.d.ts.map +1 -0
- package/dist/esm/cli/ui/index.js +7 -0
- package/dist/esm/cli/ui/index.js.map +1 -0
- package/dist/esm/cli/ui/spinner.d.ts +12 -0
- package/dist/esm/cli/ui/spinner.d.ts.map +1 -0
- package/dist/esm/cli/ui/spinner.js +78 -0
- package/dist/esm/cli/ui/spinner.js.map +1 -0
- package/dist/esm/cli/ui/symbols.d.ts +47 -0
- package/dist/esm/cli/ui/symbols.d.ts.map +1 -0
- package/dist/esm/cli/ui/symbols.js +109 -0
- package/dist/esm/cli/ui/symbols.js.map +1 -0
- package/dist/esm/cli/ui/table.d.ts +23 -0
- package/dist/esm/cli/ui/table.d.ts.map +1 -0
- package/dist/esm/cli/ui/table.js +156 -0
- package/dist/esm/cli/ui/table.js.map +1 -0
- package/dist/esm/cli/ui/terminal.d.ts +7 -0
- package/dist/esm/cli/ui/terminal.d.ts.map +1 -0
- package/dist/esm/cli/ui/terminal.js +32 -0
- package/dist/esm/cli/ui/terminal.js.map +1 -0
- package/dist/esm/config/atomic-write.d.ts +69 -0
- package/dist/esm/config/atomic-write.d.ts.map +1 -0
- package/dist/esm/config/atomic-write.js +246 -0
- package/dist/esm/config/atomic-write.js.map +1 -0
- package/dist/esm/config/db-config.d.ts +134 -0
- package/dist/esm/config/db-config.d.ts.map +1 -0
- package/dist/esm/config/db-config.js +542 -0
- package/dist/esm/config/db-config.js.map +1 -0
- package/dist/esm/config/machine-config.d.ts +85 -0
- package/dist/esm/config/machine-config.d.ts.map +1 -0
- package/dist/esm/config/machine-config.js +190 -0
- package/dist/esm/config/machine-config.js.map +1 -0
- package/dist/esm/config/paths.d.ts +64 -0
- package/dist/esm/config/paths.d.ts.map +1 -0
- package/dist/esm/config/paths.js +108 -0
- package/dist/esm/config/paths.js.map +1 -0
- package/dist/esm/config/schema.d.ts +72 -0
- package/dist/esm/config/schema.d.ts.map +1 -0
- package/dist/esm/config/schema.js +180 -0
- package/dist/esm/config/schema.js.map +1 -0
- package/dist/esm/config/token.d.ts +63 -0
- package/dist/esm/config/token.d.ts.map +1 -0
- package/dist/esm/config/token.js +104 -0
- package/dist/esm/config/token.js.map +1 -0
- package/dist/esm/execution/canceller.d.ts +41 -0
- package/dist/esm/execution/canceller.d.ts.map +1 -0
- package/dist/esm/execution/canceller.js +205 -0
- package/dist/esm/execution/canceller.js.map +1 -0
- package/dist/esm/execution/database-lookup.d.ts +56 -0
- package/dist/esm/execution/database-lookup.d.ts.map +1 -0
- package/dist/esm/execution/database-lookup.js +38 -0
- package/dist/esm/execution/database-lookup.js.map +1 -0
- package/dist/esm/execution/dispatcher.d.ts +181 -0
- package/dist/esm/execution/dispatcher.d.ts.map +1 -0
- package/dist/esm/execution/dispatcher.js +1258 -0
- package/dist/esm/execution/dispatcher.js.map +1 -0
- package/dist/esm/execution/function-effects.d.ts +209 -0
- package/dist/esm/execution/function-effects.d.ts.map +1 -0
- package/dist/esm/execution/function-effects.js +586 -0
- package/dist/esm/execution/function-effects.js.map +1 -0
- package/dist/esm/execution/introspection.d.ts +76 -0
- package/dist/esm/execution/introspection.d.ts.map +1 -0
- package/dist/esm/execution/introspection.js +442 -0
- package/dist/esm/execution/introspection.js.map +1 -0
- package/dist/esm/execution/migration-runner.d.ts +128 -0
- package/dist/esm/execution/migration-runner.d.ts.map +1 -0
- package/dist/esm/execution/migration-runner.js +754 -0
- package/dist/esm/execution/migration-runner.js.map +1 -0
- package/dist/esm/execution/non-tx-detector.d.ts +23 -0
- package/dist/esm/execution/non-tx-detector.d.ts.map +1 -0
- package/dist/esm/execution/non-tx-detector.js +215 -0
- package/dist/esm/execution/non-tx-detector.js.map +1 -0
- package/dist/esm/execution/pool.d.ts +229 -0
- package/dist/esm/execution/pool.d.ts.map +1 -0
- package/dist/esm/execution/pool.js +685 -0
- package/dist/esm/execution/pool.js.map +1 -0
- package/dist/esm/execution/query-runner.d.ts +88 -0
- package/dist/esm/execution/query-runner.d.ts.map +1 -0
- package/dist/esm/execution/query-runner.js +743 -0
- package/dist/esm/execution/query-runner.js.map +1 -0
- package/dist/esm/execution/rate-limiter.d.ts +120 -0
- package/dist/esm/execution/rate-limiter.d.ts.map +1 -0
- package/dist/esm/execution/rate-limiter.js +269 -0
- package/dist/esm/execution/rate-limiter.js.map +1 -0
- package/dist/esm/execution/search-path.d.ts +161 -0
- package/dist/esm/execution/search-path.d.ts.map +1 -0
- package/dist/esm/execution/search-path.js +270 -0
- package/dist/esm/execution/search-path.js.map +1 -0
- package/dist/esm/execution/sql-parser.d.ts +195 -0
- package/dist/esm/execution/sql-parser.d.ts.map +1 -0
- package/dist/esm/execution/sql-parser.js +683 -0
- package/dist/esm/execution/sql-parser.js.map +1 -0
- package/dist/esm/execution/statement-classifier.d.ts +103 -0
- package/dist/esm/execution/statement-classifier.d.ts.map +1 -0
- package/dist/esm/execution/statement-classifier.js +526 -0
- package/dist/esm/execution/statement-classifier.js.map +1 -0
- package/dist/esm/execution/types.d.ts +189 -0
- package/dist/esm/execution/types.d.ts.map +1 -0
- package/dist/esm/execution/types.js +22 -0
- package/dist/esm/execution/types.js.map +1 -0
- package/dist/esm/index.d.ts +34 -0
- package/dist/esm/index.d.ts.map +1 -0
- package/dist/esm/index.js +38 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/permissions/auto-upgrade.d.ts +40 -0
- package/dist/esm/permissions/auto-upgrade.d.ts.map +1 -0
- package/dist/esm/permissions/auto-upgrade.js +164 -0
- package/dist/esm/permissions/auto-upgrade.js.map +1 -0
- package/dist/esm/permissions/checker.d.ts +53 -0
- package/dist/esm/permissions/checker.d.ts.map +1 -0
- package/dist/esm/permissions/checker.js +322 -0
- package/dist/esm/permissions/checker.js.map +1 -0
- package/dist/esm/permissions/manual-approval.d.ts +213 -0
- package/dist/esm/permissions/manual-approval.d.ts.map +1 -0
- package/dist/esm/permissions/manual-approval.js +503 -0
- package/dist/esm/permissions/manual-approval.js.map +1 -0
- package/dist/esm/permissions/plan-registry.d.ts +274 -0
- package/dist/esm/permissions/plan-registry.d.ts.map +1 -0
- package/dist/esm/permissions/plan-registry.js +450 -0
- package/dist/esm/permissions/plan-registry.js.map +1 -0
- package/dist/esm/permissions/role-policy.d.ts +217 -0
- package/dist/esm/permissions/role-policy.d.ts.map +1 -0
- package/dist/esm/permissions/role-policy.js +570 -0
- package/dist/esm/permissions/role-policy.js.map +1 -0
- package/dist/esm/permissions/types.d.ts +126 -0
- package/dist/esm/permissions/types.d.ts.map +1 -0
- package/dist/esm/permissions/types.js +2 -0
- package/dist/esm/permissions/types.js.map +1 -0
- package/dist/esm/protocol/constants.d.ts +72 -0
- package/dist/esm/protocol/constants.d.ts.map +1 -0
- package/dist/esm/protocol/constants.js +104 -0
- package/dist/esm/protocol/constants.js.map +1 -0
- package/dist/esm/protocol/envelope.d.ts +165 -0
- package/dist/esm/protocol/envelope.d.ts.map +1 -0
- package/dist/esm/protocol/envelope.js +263 -0
- package/dist/esm/protocol/envelope.js.map +1 -0
- package/dist/esm/protocol/errors.d.ts +33 -0
- package/dist/esm/protocol/errors.d.ts.map +1 -0
- package/dist/esm/protocol/errors.js +384 -0
- package/dist/esm/protocol/errors.js.map +1 -0
- package/dist/esm/protocol/messages.d.ts +327 -0
- package/dist/esm/protocol/messages.d.ts.map +1 -0
- package/dist/esm/protocol/messages.js +2 -0
- package/dist/esm/protocol/messages.js.map +1 -0
- package/dist/esm/protocol/serialize.d.ts +26 -0
- package/dist/esm/protocol/serialize.d.ts.map +1 -0
- package/dist/esm/protocol/serialize.js +63 -0
- package/dist/esm/protocol/serialize.js.map +1 -0
- package/dist/esm/protocol/validate.d.ts +135 -0
- package/dist/esm/protocol/validate.d.ts.map +1 -0
- package/dist/esm/protocol/validate.js +830 -0
- package/dist/esm/protocol/validate.js.map +1 -0
- package/dist/types/audit/chain.d.ts +365 -0
- package/dist/types/audit/chain.d.ts.map +1 -0
- package/dist/types/audit/cloud-client.d.ts +142 -0
- package/dist/types/audit/cloud-client.d.ts.map +1 -0
- package/dist/types/audit/cloud-writer.d.ts +57 -0
- package/dist/types/audit/cloud-writer.d.ts.map +1 -0
- package/dist/types/audit/context.d.ts +51 -0
- package/dist/types/audit/context.d.ts.map +1 -0
- package/dist/types/audit/files.d.ts +111 -0
- package/dist/types/audit/files.d.ts.map +1 -0
- package/dist/types/audit/index.d.ts +9 -0
- package/dist/types/audit/index.d.ts.map +1 -0
- package/dist/types/audit/local-writer.d.ts +255 -0
- package/dist/types/audit/local-writer.d.ts.map +1 -0
- package/dist/types/audit/redact.d.ts +151 -0
- package/dist/types/audit/redact.d.ts.map +1 -0
- package/dist/types/audit/sanitize.d.ts +78 -0
- package/dist/types/audit/sanitize.d.ts.map +1 -0
- package/dist/types/audit/sink.d.ts +278 -0
- package/dist/types/audit/sink.d.ts.map +1 -0
- package/dist/types/audit/types.d.ts +226 -0
- package/dist/types/audit/types.d.ts.map +1 -0
- package/dist/types/audit/verify-cache.d.ts +127 -0
- package/dist/types/audit/verify-cache.d.ts.map +1 -0
- package/dist/types/channels/agent-session.d.ts +228 -0
- package/dist/types/channels/agent-session.d.ts.map +1 -0
- package/dist/types/channels/data-channel.d.ts +181 -0
- package/dist/types/channels/data-channel.d.ts.map +1 -0
- package/dist/types/channels/reconnect.d.ts +142 -0
- package/dist/types/channels/reconnect.d.ts.map +1 -0
- package/dist/types/channels/types.d.ts +112 -0
- package/dist/types/channels/types.d.ts.map +1 -0
- package/dist/types/channels/wake-channel.d.ts +232 -0
- package/dist/types/channels/wake-channel.d.ts.map +1 -0
- package/dist/types/cli/banner.d.ts +2 -0
- package/dist/types/cli/banner.d.ts.map +1 -0
- package/dist/types/cli/commands/agent.d.ts +30 -0
- package/dist/types/cli/commands/agent.d.ts.map +1 -0
- package/dist/types/cli/commands/audit-verify.d.ts +19 -0
- package/dist/types/cli/commands/audit-verify.d.ts.map +1 -0
- package/dist/types/cli/commands/clean.d.ts +23 -0
- package/dist/types/cli/commands/clean.d.ts.map +1 -0
- package/dist/types/cli/commands/config-show.d.ts +2 -0
- package/dist/types/cli/commands/config-show.d.ts.map +1 -0
- package/dist/types/cli/commands/config.d.ts +6 -0
- package/dist/types/cli/commands/config.d.ts.map +1 -0
- package/dist/types/cli/commands/db-add.d.ts +16 -0
- package/dist/types/cli/commands/db-add.d.ts.map +1 -0
- package/dist/types/cli/commands/db-edit.d.ts +2 -0
- package/dist/types/cli/commands/db-edit.d.ts.map +1 -0
- package/dist/types/cli/commands/db-logs.d.ts +3 -0
- package/dist/types/cli/commands/db-logs.d.ts.map +1 -0
- package/dist/types/cli/commands/db-ls.d.ts +2 -0
- package/dist/types/cli/commands/db-ls.d.ts.map +1 -0
- package/dist/types/cli/commands/db-query.d.ts +121 -0
- package/dist/types/cli/commands/db-query.d.ts.map +1 -0
- package/dist/types/cli/commands/db-remove.d.ts +2 -0
- package/dist/types/cli/commands/db-remove.d.ts.map +1 -0
- package/dist/types/cli/commands/db-show.d.ts +2 -0
- package/dist/types/cli/commands/db-show.d.ts.map +1 -0
- package/dist/types/cli/commands/db-test.d.ts +3 -0
- package/dist/types/cli/commands/db-test.d.ts.map +1 -0
- package/dist/types/cli/commands/db.d.ts +11 -0
- package/dist/types/cli/commands/db.d.ts.map +1 -0
- package/dist/types/cli/commands/debug.d.ts +2 -0
- package/dist/types/cli/commands/debug.d.ts.map +1 -0
- package/dist/types/cli/commands/doctor.d.ts +5 -0
- package/dist/types/cli/commands/doctor.d.ts.map +1 -0
- package/dist/types/cli/commands/index.d.ts +10 -0
- package/dist/types/cli/commands/index.d.ts.map +1 -0
- package/dist/types/cli/commands/init.d.ts +2 -0
- package/dist/types/cli/commands/init.d.ts.map +1 -0
- package/dist/types/cli/commands/link.d.ts +5 -0
- package/dist/types/cli/commands/link.d.ts.map +1 -0
- package/dist/types/cli/commands/logs.d.ts +17 -0
- package/dist/types/cli/commands/logs.d.ts.map +1 -0
- package/dist/types/cli/commands/project-show.d.ts +2 -0
- package/dist/types/cli/commands/project-show.d.ts.map +1 -0
- package/dist/types/cli/commands/project.d.ts +3 -0
- package/dist/types/cli/commands/project.d.ts.map +1 -0
- package/dist/types/cli/commands/service.d.ts +123 -0
- package/dist/types/cli/commands/service.d.ts.map +1 -0
- package/dist/types/cli/commands/start.d.ts +6 -0
- package/dist/types/cli/commands/start.d.ts.map +1 -0
- package/dist/types/cli/commands/status.d.ts +2 -0
- package/dist/types/cli/commands/status.d.ts.map +1 -0
- package/dist/types/cli/commands/stop.d.ts +6 -0
- package/dist/types/cli/commands/stop.d.ts.map +1 -0
- package/dist/types/cli/daemon/error-tracker.d.ts +119 -0
- package/dist/types/cli/daemon/error-tracker.d.ts.map +1 -0
- package/dist/types/cli/daemon/fault-shutdown.d.ts +144 -0
- package/dist/types/cli/daemon/fault-shutdown.d.ts.map +1 -0
- package/dist/types/cli/daemon/index.d.ts +12 -0
- package/dist/types/cli/daemon/index.d.ts.map +1 -0
- package/dist/types/cli/daemon/pid-file.d.ts +13 -0
- package/dist/types/cli/daemon/pid-file.d.ts.map +1 -0
- package/dist/types/cli/daemon/readiness.d.ts +30 -0
- package/dist/types/cli/daemon/readiness.d.ts.map +1 -0
- package/dist/types/cli/daemon/runtime.d.ts +366 -0
- package/dist/types/cli/daemon/runtime.d.ts.map +1 -0
- package/dist/types/cli/daemon/shutdown.d.ts +7 -0
- package/dist/types/cli/daemon/shutdown.d.ts.map +1 -0
- package/dist/types/cli/daemon/signal-handlers.d.ts +3 -0
- package/dist/types/cli/daemon/signal-handlers.d.ts.map +1 -0
- package/dist/types/cli/daemon/state.d.ts +157 -0
- package/dist/types/cli/daemon/state.d.ts.map +1 -0
- package/dist/types/cli/daemon/status-file.d.ts +139 -0
- package/dist/types/cli/daemon/status-file.d.ts.map +1 -0
- package/dist/types/cli/doctor/checks.d.ts +133 -0
- package/dist/types/cli/doctor/checks.d.ts.map +1 -0
- package/dist/types/cli/doctor/fixes.d.ts +9 -0
- package/dist/types/cli/doctor/fixes.d.ts.map +1 -0
- package/dist/types/cli/doctor/index.d.ts +7 -0
- package/dist/types/cli/doctor/index.d.ts.map +1 -0
- package/dist/types/cli/index.d.ts +3 -0
- package/dist/types/cli/index.d.ts.map +1 -0
- package/dist/types/cli/interactive.d.ts +8 -0
- package/dist/types/cli/interactive.d.ts.map +1 -0
- package/dist/types/cli/logs/format.d.ts +13 -0
- package/dist/types/cli/logs/format.d.ts.map +1 -0
- package/dist/types/cli/logs/index.d.ts +3 -0
- package/dist/types/cli/logs/index.d.ts.map +1 -0
- package/dist/types/cli/logs/viewer.d.ts +41 -0
- package/dist/types/cli/logs/viewer.d.ts.map +1 -0
- package/dist/types/cli/ops/operation-logger.d.ts +63 -0
- package/dist/types/cli/ops/operation-logger.d.ts.map +1 -0
- package/dist/types/cli/palette.d.ts +11 -0
- package/dist/types/cli/palette.d.ts.map +1 -0
- package/dist/types/cli/prompt.d.ts +186 -0
- package/dist/types/cli/prompt.d.ts.map +1 -0
- package/dist/types/cli/ui/box.d.ts +21 -0
- package/dist/types/cli/ui/box.d.ts.map +1 -0
- package/dist/types/cli/ui/clipboard.d.ts +6 -0
- package/dist/types/cli/ui/clipboard.d.ts.map +1 -0
- package/dist/types/cli/ui/colors.d.ts +57 -0
- package/dist/types/cli/ui/colors.d.ts.map +1 -0
- package/dist/types/cli/ui/index.d.ts +9 -0
- package/dist/types/cli/ui/index.d.ts.map +1 -0
- package/dist/types/cli/ui/spinner.d.ts +12 -0
- package/dist/types/cli/ui/spinner.d.ts.map +1 -0
- package/dist/types/cli/ui/symbols.d.ts +47 -0
- package/dist/types/cli/ui/symbols.d.ts.map +1 -0
- package/dist/types/cli/ui/table.d.ts +23 -0
- package/dist/types/cli/ui/table.d.ts.map +1 -0
- package/dist/types/cli/ui/terminal.d.ts +7 -0
- package/dist/types/cli/ui/terminal.d.ts.map +1 -0
- package/dist/types/config/atomic-write.d.ts +69 -0
- package/dist/types/config/atomic-write.d.ts.map +1 -0
- package/dist/types/config/db-config.d.ts +134 -0
- package/dist/types/config/db-config.d.ts.map +1 -0
- package/dist/types/config/machine-config.d.ts +85 -0
- package/dist/types/config/machine-config.d.ts.map +1 -0
- package/dist/types/config/paths.d.ts +64 -0
- package/dist/types/config/paths.d.ts.map +1 -0
- package/dist/types/config/schema.d.ts +72 -0
- package/dist/types/config/schema.d.ts.map +1 -0
- package/dist/types/config/token.d.ts +63 -0
- package/dist/types/config/token.d.ts.map +1 -0
- package/dist/types/execution/canceller.d.ts +41 -0
- package/dist/types/execution/canceller.d.ts.map +1 -0
- package/dist/types/execution/database-lookup.d.ts +56 -0
- package/dist/types/execution/database-lookup.d.ts.map +1 -0
- package/dist/types/execution/dispatcher.d.ts +181 -0
- package/dist/types/execution/dispatcher.d.ts.map +1 -0
- package/dist/types/execution/function-effects.d.ts +209 -0
- package/dist/types/execution/function-effects.d.ts.map +1 -0
- package/dist/types/execution/introspection.d.ts +76 -0
- package/dist/types/execution/introspection.d.ts.map +1 -0
- package/dist/types/execution/migration-runner.d.ts +128 -0
- package/dist/types/execution/migration-runner.d.ts.map +1 -0
- package/dist/types/execution/non-tx-detector.d.ts +23 -0
- package/dist/types/execution/non-tx-detector.d.ts.map +1 -0
- package/dist/types/execution/pool.d.ts +229 -0
- package/dist/types/execution/pool.d.ts.map +1 -0
- package/dist/types/execution/query-runner.d.ts +88 -0
- package/dist/types/execution/query-runner.d.ts.map +1 -0
- package/dist/types/execution/rate-limiter.d.ts +120 -0
- package/dist/types/execution/rate-limiter.d.ts.map +1 -0
- package/dist/types/execution/search-path.d.ts +161 -0
- package/dist/types/execution/search-path.d.ts.map +1 -0
- package/dist/types/execution/sql-parser.d.ts +195 -0
- package/dist/types/execution/sql-parser.d.ts.map +1 -0
- package/dist/types/execution/statement-classifier.d.ts +103 -0
- package/dist/types/execution/statement-classifier.d.ts.map +1 -0
- package/dist/types/execution/types.d.ts +189 -0
- package/dist/types/execution/types.d.ts.map +1 -0
- package/dist/types/index.d.ts +34 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/permissions/auto-upgrade.d.ts +40 -0
- package/dist/types/permissions/auto-upgrade.d.ts.map +1 -0
- package/dist/types/permissions/checker.d.ts +53 -0
- package/dist/types/permissions/checker.d.ts.map +1 -0
- package/dist/types/permissions/manual-approval.d.ts +213 -0
- package/dist/types/permissions/manual-approval.d.ts.map +1 -0
- package/dist/types/permissions/plan-registry.d.ts +274 -0
- package/dist/types/permissions/plan-registry.d.ts.map +1 -0
- package/dist/types/permissions/role-policy.d.ts +217 -0
- package/dist/types/permissions/role-policy.d.ts.map +1 -0
- package/dist/types/permissions/types.d.ts +126 -0
- package/dist/types/permissions/types.d.ts.map +1 -0
- package/dist/types/protocol/constants.d.ts +72 -0
- package/dist/types/protocol/constants.d.ts.map +1 -0
- package/dist/types/protocol/envelope.d.ts +165 -0
- package/dist/types/protocol/envelope.d.ts.map +1 -0
- package/dist/types/protocol/errors.d.ts +33 -0
- package/dist/types/protocol/errors.d.ts.map +1 -0
- package/dist/types/protocol/messages.d.ts +327 -0
- package/dist/types/protocol/messages.d.ts.map +1 -0
- package/dist/types/protocol/serialize.d.ts +26 -0
- package/dist/types/protocol/serialize.d.ts.map +1 -0
- package/dist/types/protocol/validate.d.ts +135 -0
- package/dist/types/protocol/validate.d.ts.map +1 -0
- package/package.json +116 -4
- package/scripts/generate-systemd-service.mjs +117 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sql-parser.js","sourceRoot":"","sources":["../../../src/execution/sql-parser.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Statement classification, driven by the real PostgreSQL grammar.
|
|
3
|
+
*
|
|
4
|
+
* The previous implementation split the SQL on whitespace and looked at the
|
|
5
|
+
* first token. That is unsound: it classified `SELECT 1; DROP TABLE users` as a
|
|
6
|
+
* read, and it classified `SELECT * INTO t ...` as a read even though it
|
|
7
|
+
* creates a table. Both were reachable from the cloud and both executed.
|
|
8
|
+
*
|
|
9
|
+
* This implementation parses with libpg_query (WASM) and classifies from the
|
|
10
|
+
* AST. The guarantee it provides, and its exact limits:
|
|
11
|
+
*
|
|
12
|
+
* - The number of statements is COUNTED by PostgreSQL's own grammar, so
|
|
13
|
+
* multi-statement smuggling is structural rather than lexical: a `;` inside
|
|
14
|
+
* a string literal, a dollar-quoted body, a quoted identifier or a comment
|
|
15
|
+
* cannot split a statement, and a real second statement always is visible.
|
|
16
|
+
* `statement_count !== 1` is never a read.
|
|
17
|
+
* - Classification is ALLOWLIST-based on the root node: a statement type this
|
|
18
|
+
* module does not recognise is `unknown`, which is not a read.
|
|
19
|
+
* - `SELECT` is treated as a command envelope, not a read-only assertion.
|
|
20
|
+
* `SELECT … INTO`, row-locking clauses, data-modifying CTEs, executable
|
|
21
|
+
* blocks and denylisted volatile/privileged functions are detected anywhere
|
|
22
|
+
* in the statement and demote it out of `read`.
|
|
23
|
+
* - A parse failure and an unavailable parser both FAIL CLOSED: they throw,
|
|
24
|
+
* and no lexical heuristic is ever consulted as a fallback. An
|
|
25
|
+
* authorization decision must never be made from this module's guesswork.
|
|
26
|
+
* - A function reference is a claim that has to be PROVED. Every function the
|
|
27
|
+
* statement calls is resolved against `pg_proc` on the caller's connection
|
|
28
|
+
* (`function-effects.ts`), and only `provolatile = 'i' AND prosecdef =
|
|
29
|
+
* false` counts as a read. A VOLATILE or SECURITY DEFINER function, an
|
|
30
|
+
* unknown one, and — deliberately — one the catalogue could not be asked
|
|
31
|
+
* about all carry `side_effect` and are never a provable read. With no
|
|
32
|
+
* resolver supplied every statement that calls anything is escalated; see
|
|
33
|
+
* {@link ClassifyOptions.resolveFunctionEffects}.
|
|
34
|
+
*
|
|
35
|
+
* It is still not a substitute for PostgreSQL's own enforcement. The database
|
|
36
|
+
* is the authority on what a statement does, and the agent's read-only
|
|
37
|
+
* guarantee is `default_transaction_read_only = on` on the connection — which
|
|
38
|
+
* constrains WRITES only, and therefore does not constrain a function that
|
|
39
|
+
* reads a file, notifies a channel, or allocates a transaction id. Those are
|
|
40
|
+
* why the function-effect analysis above is a control in its own right rather
|
|
41
|
+
* than an optimisation of the deny-list in `sql-parser.ts`.
|
|
42
|
+
*/
|
|
43
|
+
import { SqlParseError, SqlParserUnavailableError, walkAst } from './sql-parser';
|
|
44
|
+
import type { RawStmt } from './sql-parser';
|
|
45
|
+
import type { FunctionEffectResolver } from './function-effects';
|
|
46
|
+
import type { StatementClassification } from './types';
|
|
47
|
+
/** Reasons a syntactically valid SELECT is still not a safe read. */
|
|
48
|
+
export type ReadViolation = 'selects_into' | 'row_locking' | 'writable_cte' | 'denied_function' | 'side_effect' | 'multiple_statements' | 'executable_block' | 'parse_error' | 'parser_unavailable';
|
|
49
|
+
/**
|
|
50
|
+
* Violations that mean "this parsed as a read but it is not one".
|
|
51
|
+
*
|
|
52
|
+
* A statement carrying any of these is never reported as a provable read, and
|
|
53
|
+
* the permission layer treats it as a privileged operation rather than a
|
|
54
|
+
* `query_read`.
|
|
55
|
+
*/
|
|
56
|
+
export declare const READ_ESCAPE_VIOLATIONS: ReadonlySet<ReadViolation>;
|
|
57
|
+
/**
|
|
58
|
+
* Options for a classification that can consult a database.
|
|
59
|
+
*
|
|
60
|
+
* `resolveFunctionEffects` is optional and its absence is meaningful: without
|
|
61
|
+
* it this module cannot prove any function call is effect-free, so it reports
|
|
62
|
+
* `side_effect` for every one of them and the statement is escalated. That is
|
|
63
|
+
* the fail-closed direction, and it is required — the alternative (treating an
|
|
64
|
+
* absent catalogue verdict as "safe") is the vulnerability being fixed.
|
|
65
|
+
*/
|
|
66
|
+
export interface ClassifyOptions {
|
|
67
|
+
resolveFunctionEffects?: FunctionEffectResolver;
|
|
68
|
+
}
|
|
69
|
+
export declare class StatementClassificationError extends Error {
|
|
70
|
+
readonly code: ReadViolation | 'unknown_statement';
|
|
71
|
+
constructor(message: string, code: ReadViolation | 'unknown_statement');
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Classify a SQL string using the PostgreSQL parser.
|
|
75
|
+
*
|
|
76
|
+
* @throws {SqlParserUnavailableError} if the parser has not been initialised
|
|
77
|
+
* @throws {SqlParseError} if PostgreSQL cannot parse the input
|
|
78
|
+
*/
|
|
79
|
+
export declare function classifyStatement(sql: string, options?: ClassifyOptions): Promise<StatementClassification>;
|
|
80
|
+
/**
|
|
81
|
+
* Classify a parsed statement list, resolving every function the statements
|
|
82
|
+
* reference against `pg_proc` in ONE batched read.
|
|
83
|
+
*
|
|
84
|
+
* The names of every statement in the list are collected before the lookup, so
|
|
85
|
+
* a migration plan of twenty statements still costs one catalogue query.
|
|
86
|
+
*/
|
|
87
|
+
export declare function classifyStatements(stmts: RawStmt[], options?: ClassifyOptions): Promise<StatementClassification>;
|
|
88
|
+
/**
|
|
89
|
+
* Classify using an already-parsed statement list (sync; parser must be ready).
|
|
90
|
+
*
|
|
91
|
+
* No catalogue is consulted here, so any statement that calls a function is
|
|
92
|
+
* escalated. Callers that hold a connection should use {@link classifyStatements}
|
|
93
|
+
* (or `classifyStatement`) with a resolver instead.
|
|
94
|
+
*/
|
|
95
|
+
export declare function classifyParsedStatements(stmts: RawStmt[]): StatementClassification;
|
|
96
|
+
/**
|
|
97
|
+
* Classify and throw instead of returning, for call sites that must fail
|
|
98
|
+
* closed on anything they cannot prove is a read.
|
|
99
|
+
*/
|
|
100
|
+
export declare function assertSingleReadStatement(sql: string, options?: ClassifyOptions): Promise<StatementClassification>;
|
|
101
|
+
export { SqlParseError, SqlParserUnavailableError };
|
|
102
|
+
export { walkAst };
|
|
103
|
+
//# sourceMappingURL=statement-classifier.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"statement-classifier.d.ts","sourceRoot":"","sources":["../../../src/execution/statement-classifier.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyCG;AACH,OAAO,EAML,aAAa,EACb,yBAAyB,EASzB,OAAO,EACR,MAAM,cAAc,CAAC;AACtB,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAE5C,OAAO,KAAK,EAAgD,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AAE/G,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,SAAS,CAAC;AAIvD,qEAAqE;AACrE,MAAM,MAAM,aAAa,GACrB,cAAc,GACd,aAAa,GACb,cAAc,GACd,iBAAiB,GACjB,aAAa,GACb,qBAAqB,GACrB,kBAAkB,GAClB,aAAa,GACb,oBAAoB,CAAC;AAEzB;;;;;;GAMG;AACH,eAAO,MAAM,sBAAsB,EAAE,WAAW,CAAC,aAAa,CAO5D,CAAC;AAEH;;;;;;;;GAQG;AACH,MAAM,WAAW,eAAe;IAC9B,sBAAsB,CAAC,EAAE,sBAAsB,CAAC;CACjD;AAKD,qBAAa,4BAA6B,SAAQ,KAAK;aAGnC,IAAI,EAAE,aAAa,GAAG,mBAAmB;gBADzD,OAAO,EAAE,MAAM,EACC,IAAI,EAAE,aAAa,GAAG,mBAAmB;CAK5D;AAgCD;;;;;GAKG;AACH,wBAAsB,iBAAiB,CACrC,GAAG,EAAE,MAAM,EACX,OAAO,GAAE,eAAoB,GAC5B,OAAO,CAAC,uBAAuB,CAAC,CAGlC;AAED;;;;;;GAMG;AACH,wBAAsB,kBAAkB,CACtC,KAAK,EAAE,OAAO,EAAE,EAChB,OAAO,GAAE,eAAoB,GAC5B,OAAO,CAAC,uBAAuB,CAAC,CASlC;AAgBD;;;;;;GAMG;AACH,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,OAAO,EAAE,GAAG,uBAAuB,CAMlF;AA+YD;;;GAGG;AACH,wBAAsB,yBAAyB,CAC7C,GAAG,EAAE,MAAM,EACX,OAAO,GAAE,eAAoB,GAC5B,OAAO,CAAC,uBAAuB,CAAC,CA0BlC;AAED,OAAO,EAAE,aAAa,EAAE,yBAAyB,EAAE,CAAC;AACpD,OAAO,EAAE,OAAO,EAAE,CAAC"}
|
|
@@ -0,0 +1,526 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Statement classification, driven by the real PostgreSQL grammar.
|
|
3
|
+
*
|
|
4
|
+
* The previous implementation split the SQL on whitespace and looked at the
|
|
5
|
+
* first token. That is unsound: it classified `SELECT 1; DROP TABLE users` as a
|
|
6
|
+
* read, and it classified `SELECT * INTO t ...` as a read even though it
|
|
7
|
+
* creates a table. Both were reachable from the cloud and both executed.
|
|
8
|
+
*
|
|
9
|
+
* This implementation parses with libpg_query (WASM) and classifies from the
|
|
10
|
+
* AST. The guarantee it provides, and its exact limits:
|
|
11
|
+
*
|
|
12
|
+
* - The number of statements is COUNTED by PostgreSQL's own grammar, so
|
|
13
|
+
* multi-statement smuggling is structural rather than lexical: a `;` inside
|
|
14
|
+
* a string literal, a dollar-quoted body, a quoted identifier or a comment
|
|
15
|
+
* cannot split a statement, and a real second statement always is visible.
|
|
16
|
+
* `statement_count !== 1` is never a read.
|
|
17
|
+
* - Classification is ALLOWLIST-based on the root node: a statement type this
|
|
18
|
+
* module does not recognise is `unknown`, which is not a read.
|
|
19
|
+
* - `SELECT` is treated as a command envelope, not a read-only assertion.
|
|
20
|
+
* `SELECT … INTO`, row-locking clauses, data-modifying CTEs, executable
|
|
21
|
+
* blocks and denylisted volatile/privileged functions are detected anywhere
|
|
22
|
+
* in the statement and demote it out of `read`.
|
|
23
|
+
* - A parse failure and an unavailable parser both FAIL CLOSED: they throw,
|
|
24
|
+
* and no lexical heuristic is ever consulted as a fallback. An
|
|
25
|
+
* authorization decision must never be made from this module's guesswork.
|
|
26
|
+
* - A function reference is a claim that has to be PROVED. Every function the
|
|
27
|
+
* statement calls is resolved against `pg_proc` on the caller's connection
|
|
28
|
+
* (`function-effects.ts`), and only `provolatile = 'i' AND prosecdef =
|
|
29
|
+
* false` counts as a read. A VOLATILE or SECURITY DEFINER function, an
|
|
30
|
+
* unknown one, and — deliberately — one the catalogue could not be asked
|
|
31
|
+
* about all carry `side_effect` and are never a provable read. With no
|
|
32
|
+
* resolver supplied every statement that calls anything is escalated; see
|
|
33
|
+
* {@link ClassifyOptions.resolveFunctionEffects}.
|
|
34
|
+
*
|
|
35
|
+
* It is still not a substitute for PostgreSQL's own enforcement. The database
|
|
36
|
+
* is the authority on what a statement does, and the agent's read-only
|
|
37
|
+
* guarantee is `default_transaction_read_only = on` on the connection — which
|
|
38
|
+
* constrains WRITES only, and therefore does not constrain a function that
|
|
39
|
+
* reads a file, notifies a channel, or allocates a transaction id. Those are
|
|
40
|
+
* why the function-effect analysis above is a control in its own right rather
|
|
41
|
+
* than an optimisation of the deny-list in `sql-parser.ts`.
|
|
42
|
+
*/
|
|
43
|
+
import { DDL_ROOTS, EXECUTABLE_ROOTS, UTILITY_ROOTS, READ_ROOTS, WRITE_ROOTS, SqlParseError, SqlParserUnavailableError, collectFunctionNames, explainExecutesStatement, findDeniedReadFunction, findReadSideEffects, isNonTransactionalNode, parseSql, rootNode, rootNodeType, walkAst, } from './sql-parser';
|
|
44
|
+
import { unresolvedRecord } from './function-effects';
|
|
45
|
+
/**
|
|
46
|
+
* Violations that mean "this parsed as a read but it is not one".
|
|
47
|
+
*
|
|
48
|
+
* A statement carrying any of these is never reported as a provable read, and
|
|
49
|
+
* the permission layer treats it as a privileged operation rather than a
|
|
50
|
+
* `query_read`.
|
|
51
|
+
*/
|
|
52
|
+
export const READ_ESCAPE_VIOLATIONS = new Set([
|
|
53
|
+
'selects_into',
|
|
54
|
+
'row_locking',
|
|
55
|
+
'writable_cte',
|
|
56
|
+
'denied_function',
|
|
57
|
+
'side_effect',
|
|
58
|
+
'executable_block',
|
|
59
|
+
]);
|
|
60
|
+
/** An analysis that says nothing, used when there is nothing to say. */
|
|
61
|
+
const NO_FUNCTION_EFFECTS = { records: [], analysed: true };
|
|
62
|
+
export class StatementClassificationError extends Error {
|
|
63
|
+
code;
|
|
64
|
+
constructor(message, code) {
|
|
65
|
+
super(message);
|
|
66
|
+
this.code = code;
|
|
67
|
+
this.name = 'StatementClassificationError';
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
function base(type, kind, transactional, verb, extra = {}, effects = NO_FUNCTION_EFFECTS) {
|
|
71
|
+
return {
|
|
72
|
+
type,
|
|
73
|
+
kind,
|
|
74
|
+
transactional,
|
|
75
|
+
verb,
|
|
76
|
+
statement_count: 1,
|
|
77
|
+
parse_ok: true,
|
|
78
|
+
read_violations: [],
|
|
79
|
+
function_effects: effects.records,
|
|
80
|
+
side_effects: uniqueSideEffects(effects.records),
|
|
81
|
+
...extra,
|
|
82
|
+
};
|
|
83
|
+
}
|
|
84
|
+
function uniqueSideEffects(records) {
|
|
85
|
+
const kinds = new Set();
|
|
86
|
+
for (const record of records) {
|
|
87
|
+
for (const kind of record.side_effects)
|
|
88
|
+
kinds.add(kind);
|
|
89
|
+
}
|
|
90
|
+
return [...kinds];
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Classify a SQL string using the PostgreSQL parser.
|
|
94
|
+
*
|
|
95
|
+
* @throws {SqlParserUnavailableError} if the parser has not been initialised
|
|
96
|
+
* @throws {SqlParseError} if PostgreSQL cannot parse the input
|
|
97
|
+
*/
|
|
98
|
+
export async function classifyStatement(sql, options = {}) {
|
|
99
|
+
const { stmts } = parseSql(sql);
|
|
100
|
+
return classifyStatements(stmts, options);
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* Classify a parsed statement list, resolving every function the statements
|
|
104
|
+
* reference against `pg_proc` in ONE batched read.
|
|
105
|
+
*
|
|
106
|
+
* The names of every statement in the list are collected before the lookup, so
|
|
107
|
+
* a migration plan of twenty statements still costs one catalogue query.
|
|
108
|
+
*/
|
|
109
|
+
export async function classifyStatements(stmts, options = {}) {
|
|
110
|
+
const names = stmts.flatMap((stmt) => collectFunctionNames(stmt));
|
|
111
|
+
const effects = names.length === 0
|
|
112
|
+
? NO_FUNCTION_EFFECTS
|
|
113
|
+
: await (options.resolveFunctionEffects
|
|
114
|
+
? options.resolveFunctionEffects(names)
|
|
115
|
+
: Promise.resolve(unanalysedAnalysis(names)));
|
|
116
|
+
return classifyParsedStatementsWith(stmts, effects);
|
|
117
|
+
}
|
|
118
|
+
/**
|
|
119
|
+
* An analysis for names nothing could be asked about.
|
|
120
|
+
*
|
|
121
|
+
* `resolved: false` and `effect: 'unknown'` for each, which is what makes
|
|
122
|
+
* `isProvableRead()` refuse the statement. The records are still emitted so the
|
|
123
|
+
* audit trail names the functions that could not be cleared.
|
|
124
|
+
*/
|
|
125
|
+
function unanalysedAnalysis(names) {
|
|
126
|
+
return {
|
|
127
|
+
records: names.map((name) => unresolvedRecord(name)),
|
|
128
|
+
analysed: false,
|
|
129
|
+
};
|
|
130
|
+
}
|
|
131
|
+
/**
|
|
132
|
+
* Classify using an already-parsed statement list (sync; parser must be ready).
|
|
133
|
+
*
|
|
134
|
+
* No catalogue is consulted here, so any statement that calls a function is
|
|
135
|
+
* escalated. Callers that hold a connection should use {@link classifyStatements}
|
|
136
|
+
* (or `classifyStatement`) with a resolver instead.
|
|
137
|
+
*/
|
|
138
|
+
export function classifyParsedStatements(stmts) {
|
|
139
|
+
const names = stmts.flatMap((stmt) => collectFunctionNames(stmt));
|
|
140
|
+
return classifyParsedStatementsWith(stmts, names.length === 0 ? NO_FUNCTION_EFFECTS : unanalysedAnalysis(names));
|
|
141
|
+
}
|
|
142
|
+
function classifyParsedStatementsWith(stmts, effects) {
|
|
143
|
+
const statementCount = stmts.length;
|
|
144
|
+
if (statementCount === 0) {
|
|
145
|
+
return base('unknown', 'EMPTY', true, '', {
|
|
146
|
+
statement_count: 0,
|
|
147
|
+
read_violations: ['parse_error'],
|
|
148
|
+
});
|
|
149
|
+
}
|
|
150
|
+
if (statementCount > 1) {
|
|
151
|
+
// Classify by the MOST dangerous statement present. Never let a leading
|
|
152
|
+
// SELECT launder a trailing DROP.
|
|
153
|
+
let worst = base('read', 'SELECT', true, 'SELECT', {
|
|
154
|
+
statement_count: statementCount,
|
|
155
|
+
read_violations: ['multiple_statements'],
|
|
156
|
+
});
|
|
157
|
+
const violations = ['multiple_statements'];
|
|
158
|
+
let sawNonRead = false;
|
|
159
|
+
for (const stmt of stmts) {
|
|
160
|
+
const one = classifySingleStatement(stmt, effects);
|
|
161
|
+
for (const v of one.read_violations) {
|
|
162
|
+
if (!violations.includes(v))
|
|
163
|
+
violations.push(v);
|
|
164
|
+
}
|
|
165
|
+
if (one.type !== 'read')
|
|
166
|
+
sawNonRead = true;
|
|
167
|
+
if (severity(one.type) > severity(worst.type))
|
|
168
|
+
worst = one;
|
|
169
|
+
}
|
|
170
|
+
if (sawNonRead) {
|
|
171
|
+
// Keep `worst`'s kind/verb, but report it as a multi-statement payload
|
|
172
|
+
// with every violation the individual statements carried.
|
|
173
|
+
return {
|
|
174
|
+
...worst,
|
|
175
|
+
statement_count: statementCount,
|
|
176
|
+
kind: `${worst.kind} + ${statementCount - 1} more statement(s)`,
|
|
177
|
+
read_violations: violations,
|
|
178
|
+
};
|
|
179
|
+
}
|
|
180
|
+
// Every statement parsed as a read; the payload is still refused because
|
|
181
|
+
// more than one statement would be executed in a single round trip.
|
|
182
|
+
return {
|
|
183
|
+
...worst,
|
|
184
|
+
statement_count: statementCount,
|
|
185
|
+
kind: `${statementCount} statements`,
|
|
186
|
+
read_violations: violations,
|
|
187
|
+
};
|
|
188
|
+
}
|
|
189
|
+
return classifySingleStatement(stmts[0], effects);
|
|
190
|
+
}
|
|
191
|
+
function severity(t) {
|
|
192
|
+
switch (t) {
|
|
193
|
+
case 'read':
|
|
194
|
+
return 0;
|
|
195
|
+
case 'utility':
|
|
196
|
+
return 1;
|
|
197
|
+
case 'write':
|
|
198
|
+
return 2;
|
|
199
|
+
case 'ddl':
|
|
200
|
+
return 3;
|
|
201
|
+
default:
|
|
202
|
+
return 4;
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
function classifySingleStatement(stmt, effects) {
|
|
206
|
+
const rootType = rootNodeType(stmt);
|
|
207
|
+
const node = rootNode(stmt);
|
|
208
|
+
const verb = deriveVerb(rootType, node);
|
|
209
|
+
// ---- allowlisted reads -------------------------------------------------
|
|
210
|
+
if (READ_ROOTS.has(rootType)) {
|
|
211
|
+
if (rootType === 'SelectStmt')
|
|
212
|
+
return classifySelect(stmt, effects);
|
|
213
|
+
// VariableShowStmt (SHOW) has no expression context, so there is nothing
|
|
214
|
+
// for a function call to hide in.
|
|
215
|
+
return base('read', rootType, true, verb, {}, effects);
|
|
216
|
+
}
|
|
217
|
+
if (rootType === 'ExplainStmt') {
|
|
218
|
+
// EXPLAIN is transparent to the statement it wraps, so classify the inner
|
|
219
|
+
// statement with the same rules. EXPLAIN ANALYZE additionally EXECUTES it,
|
|
220
|
+
// which is only sound when the wrapped statement is itself a provable read.
|
|
221
|
+
const analyze = explainExecutesStatement(node);
|
|
222
|
+
const inner = classifySingleStatement({ stmt: node?.query }, effects);
|
|
223
|
+
if (inner.type === 'read' && inner.read_violations.length === 0) {
|
|
224
|
+
return base('read', analyze ? 'EXPLAIN ANALYZE' : 'EXPLAIN', true, 'EXPLAIN');
|
|
225
|
+
}
|
|
226
|
+
if (analyze) {
|
|
227
|
+
return {
|
|
228
|
+
...inner,
|
|
229
|
+
kind: `EXPLAIN ANALYZE ${inner.kind}`,
|
|
230
|
+
read_violations: [
|
|
231
|
+
...inner.read_violations,
|
|
232
|
+
...(inner.read_violations.includes('executable_block')
|
|
233
|
+
? []
|
|
234
|
+
: ['executable_block']),
|
|
235
|
+
],
|
|
236
|
+
};
|
|
237
|
+
}
|
|
238
|
+
return { ...inner, kind: `EXPLAIN ${inner.kind}` };
|
|
239
|
+
}
|
|
240
|
+
// ---- writes ------------------------------------------------------------
|
|
241
|
+
if (WRITE_ROOTS.has(rootType)) {
|
|
242
|
+
return base('write', rootType.replace(/Stmt$/, ''), true, verb, {}, effects);
|
|
243
|
+
}
|
|
244
|
+
// Checked before the DDL and utility tables because two of these roots are
|
|
245
|
+
// listed there as well (`ExecuteStmt`, `CreatePLangFunctionStmt`). Matching
|
|
246
|
+
// them first is what makes `EXECUTE` and a PL/pgSQL `CREATE FUNCTION` carry
|
|
247
|
+
// `executable_block`, which is the signal auto-upgrade refuses on: both run
|
|
248
|
+
// code whose body was never classified.
|
|
249
|
+
if (EXECUTABLE_ROOTS.has(rootType)) {
|
|
250
|
+
return base('ddl', rootType.replace(/Stmt$/, ''), true, verb, {
|
|
251
|
+
read_violations: ['executable_block'],
|
|
252
|
+
});
|
|
253
|
+
}
|
|
254
|
+
if (rootType === 'CopyStmt') {
|
|
255
|
+
// COPY FROM writes rows. COPY TO PROGRAM runs a command on the server;
|
|
256
|
+
// COPY TO 'file' writes the server's filesystem. Only COPY … TO STDOUT is a
|
|
257
|
+
// read, and it is the only form the classifier will ever call one.
|
|
258
|
+
const isFrom = node?.is_from === true;
|
|
259
|
+
const hasProgram = Boolean(node?.is_program);
|
|
260
|
+
if (isFrom)
|
|
261
|
+
return base('write', 'COPY FROM', true, verb);
|
|
262
|
+
if (hasProgram) {
|
|
263
|
+
return base('ddl', 'COPY TO PROGRAM', true, verb, {
|
|
264
|
+
read_violations: ['executable_block'],
|
|
265
|
+
});
|
|
266
|
+
}
|
|
267
|
+
if (copyDestinationFile(node) !== null) {
|
|
268
|
+
return base('ddl', 'COPY TO FILE', true, verb);
|
|
269
|
+
}
|
|
270
|
+
return base('read', 'COPY TO STDOUT', true, verb);
|
|
271
|
+
}
|
|
272
|
+
// ---- schema / role / persistent state ---------------------------------
|
|
273
|
+
if (DDL_ROOTS.has(rootType)) {
|
|
274
|
+
return base('ddl', rootType.replace(/Stmt$/, ''), !isNonTransactionalNode(rootType, node), verb, {}, effects);
|
|
275
|
+
}
|
|
276
|
+
// ---- session / transaction utilities -----------------------------------
|
|
277
|
+
if (UTILITY_ROOTS.has(rootType)) {
|
|
278
|
+
if (rootType === 'VariableSetStmt')
|
|
279
|
+
return classifyVariableSet(node, verb);
|
|
280
|
+
return base('utility', rootType.replace(/Stmt$/, ''), !isNonTransactionalNode(rootType, node), verb, {}, effects);
|
|
281
|
+
}
|
|
282
|
+
// Unknown root node: NOT a read. Fail closed by requiring DDL capability.
|
|
283
|
+
return base('unknown', 'UNKNOWN', true, verb, {
|
|
284
|
+
read_violations: ['executable_block'],
|
|
285
|
+
});
|
|
286
|
+
}
|
|
287
|
+
/**
|
|
288
|
+
* The destination file of a `COPY … TO 'path'`, or `null` for `STDOUT` and
|
|
289
|
+
* `PROGRAM`. `pgsql-parser` normalises the path to a plain string; the wrapped
|
|
290
|
+
* `{ String: { sval } }` form is accepted too so a change in that library's
|
|
291
|
+
* shape cannot silently turn every `COPY TO` into a read.
|
|
292
|
+
*/
|
|
293
|
+
function copyDestinationFile(node) {
|
|
294
|
+
const filename = node?.filename;
|
|
295
|
+
const sval = typeof filename === 'string' ? filename : filename?.String?.sval;
|
|
296
|
+
return typeof sval === 'string' && sval.length > 0 ? sval : null;
|
|
297
|
+
}
|
|
298
|
+
/**
|
|
299
|
+
* Classify a `SELECT` envelope.
|
|
300
|
+
*
|
|
301
|
+
* `SELECT` is not a read-only assertion in PostgreSQL, so everything that can
|
|
302
|
+
* mutate state or reach outside the database is looked for across the whole
|
|
303
|
+
* statement — including sub-selects, CTEs and set-returning functions in FROM.
|
|
304
|
+
*
|
|
305
|
+
* The third source of demotion is the function catalogue: a call is only a read
|
|
306
|
+
* when `pg_proc` says `IMMUTABLE` and not `SECURITY DEFINER`. This is what
|
|
307
|
+
* catches a function no deny-list can name, because it does not depend on the
|
|
308
|
+
* name at all.
|
|
309
|
+
*/
|
|
310
|
+
function classifySelect(stmt, effects) {
|
|
311
|
+
const violations = [];
|
|
312
|
+
const shape = findReadSideEffects(stmt);
|
|
313
|
+
if (shape.selectsInto)
|
|
314
|
+
violations.push('selects_into');
|
|
315
|
+
if (shape.lockingClauses.length > 0)
|
|
316
|
+
violations.push('row_locking');
|
|
317
|
+
if (shape.writableCte)
|
|
318
|
+
violations.push('writable_cte');
|
|
319
|
+
const names = collectFunctionNames(stmt);
|
|
320
|
+
const denied = findDeniedReadFunction(names);
|
|
321
|
+
if (denied.length > 0)
|
|
322
|
+
violations.push('denied_function');
|
|
323
|
+
// Only this statement's own references, so a plan entry does not inherit the
|
|
324
|
+
// verdicts of its neighbours.
|
|
325
|
+
const referenced = new Set(names.map((name) => name.toLowerCase()));
|
|
326
|
+
const records = effects.records.filter((record) => referenced.has(record.name.toLowerCase()));
|
|
327
|
+
const unsafe = records.filter((record) => record.effect !== 'immutable' || !record.resolved);
|
|
328
|
+
if (records.length > 0 && unsafe.length > 0)
|
|
329
|
+
violations.push('side_effect');
|
|
330
|
+
if (violations.length > 0) {
|
|
331
|
+
const named = denied[0] ?? unsafe[0]?.name;
|
|
332
|
+
const kind = named ? `SELECT (${named})` : `SELECT (${violations.join(', ')})`;
|
|
333
|
+
// Not a read. Reported as `write` so it can never satisfy a `query_read`
|
|
334
|
+
// check, and so it is visible as a mutation attempt in the audit trail.
|
|
335
|
+
return base('write', kind, true, 'SELECT', { read_violations: violations }, { records, analysed: effects.analysed });
|
|
336
|
+
}
|
|
337
|
+
return base('read', 'SELECT', true, 'SELECT', {}, { records, analysed: effects.analysed });
|
|
338
|
+
}
|
|
339
|
+
/**
|
|
340
|
+
* `SET` / `RESET` classification.
|
|
341
|
+
*
|
|
342
|
+
* Most GUCs are harmless session tuning, but a handful change who the session
|
|
343
|
+
* is or what it is allowed to do. Those are privilege changes, not utilities,
|
|
344
|
+
* and must require the `ddl` capability.
|
|
345
|
+
*/
|
|
346
|
+
function classifyVariableSet(node, verb) {
|
|
347
|
+
const name = String(node?.name ?? '').toLowerCase();
|
|
348
|
+
const kind = String(node?.kind ?? 'VAR_SET_VALUE').toUpperCase();
|
|
349
|
+
const PRIVILEGE_GUCS = new Set([
|
|
350
|
+
'role',
|
|
351
|
+
'session_authorization',
|
|
352
|
+
'session_replication_role',
|
|
353
|
+
'transaction_read_only',
|
|
354
|
+
'default_transaction_read_only',
|
|
355
|
+
]);
|
|
356
|
+
if (PRIVILEGE_GUCS.has(name) || makesTransactionWritable(node)) {
|
|
357
|
+
return base('ddl', `SET ${name.toUpperCase()}`, true, verb, {
|
|
358
|
+
read_violations: ['executable_block'],
|
|
359
|
+
});
|
|
360
|
+
}
|
|
361
|
+
return base('utility', `SET ${kind}`, true, verb);
|
|
362
|
+
}
|
|
363
|
+
/**
|
|
364
|
+
* True when the statement opens a writable transaction — `SET TRANSACTION READ
|
|
365
|
+
* WRITE` or `SET SESSION CHARACTERISTICS AS TRANSACTION READ WRITE`.
|
|
366
|
+
*
|
|
367
|
+
* `default_transaction_read_only = on` is not by itself sufficient: PostgreSQL
|
|
368
|
+
* lets a transaction override it with an explicit `READ WRITE`, so a statement
|
|
369
|
+
* that does this in the middle of a request is a request to leave read-only
|
|
370
|
+
* mode, not session tuning. The parse tree spells it as a `DefElem` with
|
|
371
|
+
* `defname: 'transaction_read_only'` whose argument is the boolean, where
|
|
372
|
+
* `false` means `READ WRITE`.
|
|
373
|
+
*/
|
|
374
|
+
function makesTransactionWritable(node) {
|
|
375
|
+
const args = Array.isArray(node?.args) ? node.args : [];
|
|
376
|
+
for (const arg of args) {
|
|
377
|
+
const elem = arg?.DefElem ?? arg;
|
|
378
|
+
const defname = String(elem?.defname ?? '').toLowerCase();
|
|
379
|
+
if (defname === 'transaction_read_only' || defname === 'default_transaction_read_only') {
|
|
380
|
+
if (isFalseArgument(elem))
|
|
381
|
+
return true;
|
|
382
|
+
}
|
|
383
|
+
}
|
|
384
|
+
return false;
|
|
385
|
+
}
|
|
386
|
+
/**
|
|
387
|
+
* True when a `DefElem` argument is the boolean `false`.
|
|
388
|
+
*
|
|
389
|
+
* libpg_query's JSON encoding omits zero-valued protobuf fields, so `false`
|
|
390
|
+
* arrives either as an absent `ival`, as an empty `ival` object or as
|
|
391
|
+
* `ival: 0`, while `true` always arrives as `ival: { ival: 1 }`.
|
|
392
|
+
*/
|
|
393
|
+
function isFalseArgument(elem) {
|
|
394
|
+
const constant = elem?.arg?.A_Const;
|
|
395
|
+
if (constant === undefined || constant === null)
|
|
396
|
+
return true;
|
|
397
|
+
if (constant.sval !== undefined)
|
|
398
|
+
return false;
|
|
399
|
+
const ival = constant.ival;
|
|
400
|
+
if (ival === undefined)
|
|
401
|
+
return true;
|
|
402
|
+
return ival.ival === undefined || ival.ival === 0;
|
|
403
|
+
}
|
|
404
|
+
function deriveVerb(rootType, node) {
|
|
405
|
+
switch (rootType) {
|
|
406
|
+
case 'SelectStmt':
|
|
407
|
+
return 'SELECT';
|
|
408
|
+
case 'InsertStmt':
|
|
409
|
+
return 'INSERT';
|
|
410
|
+
case 'UpdateStmt':
|
|
411
|
+
return 'UPDATE';
|
|
412
|
+
case 'DeleteStmt':
|
|
413
|
+
return 'DELETE';
|
|
414
|
+
case 'MergeStmt':
|
|
415
|
+
return 'MERGE';
|
|
416
|
+
case 'CreateStmt':
|
|
417
|
+
return 'CREATE';
|
|
418
|
+
case 'IndexStmt':
|
|
419
|
+
return 'CREATE INDEX';
|
|
420
|
+
case 'CreateTableAsStmt':
|
|
421
|
+
return 'CREATE TABLE AS';
|
|
422
|
+
case 'ViewStmt':
|
|
423
|
+
return 'CREATE VIEW';
|
|
424
|
+
case 'AlterTableStmt':
|
|
425
|
+
return 'ALTER';
|
|
426
|
+
case 'DropStmt':
|
|
427
|
+
return 'DROP';
|
|
428
|
+
case 'TruncateStmt':
|
|
429
|
+
return 'TRUNCATE';
|
|
430
|
+
case 'GrantStmt':
|
|
431
|
+
return String(node?.is_grant === false ? 'REVOKE' : 'GRANT');
|
|
432
|
+
case 'GrantRoleStmt':
|
|
433
|
+
return String(node?.is_grant === false ? 'REVOKE ROLE' : 'GRANT ROLE');
|
|
434
|
+
case 'VariableSetStmt':
|
|
435
|
+
return 'SET';
|
|
436
|
+
case 'VariableShowStmt':
|
|
437
|
+
return 'SHOW';
|
|
438
|
+
case 'TransactionStmt':
|
|
439
|
+
return String(node?.kind ?? 'BEGIN').toUpperCase();
|
|
440
|
+
case 'ExplainStmt':
|
|
441
|
+
return 'EXPLAIN';
|
|
442
|
+
case 'CopyStmt':
|
|
443
|
+
return 'COPY';
|
|
444
|
+
case 'VacuumStmt':
|
|
445
|
+
return 'VACUUM';
|
|
446
|
+
case 'ReindexStmt':
|
|
447
|
+
return 'REINDEX';
|
|
448
|
+
case 'ClusterStmt':
|
|
449
|
+
return 'CLUSTER';
|
|
450
|
+
case 'DoStmt':
|
|
451
|
+
return 'DO';
|
|
452
|
+
case 'CallStmt':
|
|
453
|
+
return 'CALL';
|
|
454
|
+
case 'ExecuteStmt':
|
|
455
|
+
return 'EXECUTE';
|
|
456
|
+
case 'LockStmt':
|
|
457
|
+
return 'LOCK';
|
|
458
|
+
case 'AlterSystemStmt':
|
|
459
|
+
return 'ALTER SYSTEM';
|
|
460
|
+
case 'CreateRoleStmt':
|
|
461
|
+
return 'CREATE ROLE';
|
|
462
|
+
case 'AlterRoleStmt':
|
|
463
|
+
return 'ALTER ROLE';
|
|
464
|
+
case 'RefreshMatViewStmt':
|
|
465
|
+
return 'REFRESH MATERIALIZED VIEW';
|
|
466
|
+
case 'DeclareCursorStmt':
|
|
467
|
+
return 'DECLARE';
|
|
468
|
+
case 'CommentStmt':
|
|
469
|
+
return 'COMMENT';
|
|
470
|
+
default:
|
|
471
|
+
return rootType.replace(/Stmt$/, '').toUpperCase();
|
|
472
|
+
}
|
|
473
|
+
}
|
|
474
|
+
/*
|
|
475
|
+
* There are deliberately no `isReadOnly` / `isTransactional` / `extractVerb`
|
|
476
|
+
* wrappers here any more.
|
|
477
|
+
*
|
|
478
|
+
* They each parsed the SQL and then read a field off the classification the
|
|
479
|
+
* caller could already have, and nothing in production called them — the only
|
|
480
|
+
* references were tests written to exercise them, which made them look covered
|
|
481
|
+
* while shipping nothing. Every rule they named is enforced, in production, by
|
|
482
|
+
* the thing that actually needs it:
|
|
483
|
+
*
|
|
484
|
+
* - "is this a provable read?" is `isProvableRead` in
|
|
485
|
+
* `permissions/role-policy.ts`, the predicate `PermissionChecker.check` uses
|
|
486
|
+
* for the `read_only`, `auto_upgrade` and `manual` levels and for the
|
|
487
|
+
* capability a classification requires. It is the identical rule
|
|
488
|
+
* (`type === 'read' && parse_ok && statement_count === 1 && no read
|
|
489
|
+
* violations && every referenced function proved IMMUTABLE by pg_proc`);
|
|
490
|
+
* keeping a second copy here invited the two to drift.
|
|
491
|
+
* - "can this run inside a transaction?" is `classification.transactional`,
|
|
492
|
+
* which `execution/non-tx-detector.ts` and the migration runner read, and
|
|
493
|
+
* `aggregateClassification` in `permissions/checker.ts` combines.
|
|
494
|
+
* - "what is the verb?" is `classification.verb`, interpolated into the
|
|
495
|
+
* intent-mismatch reason in `permissions/checker.ts` and into the
|
|
496
|
+
* auto-upgrade refusal reasons in `permissions/auto-upgrade.ts`.
|
|
497
|
+
*/
|
|
498
|
+
/**
|
|
499
|
+
* Classify and throw instead of returning, for call sites that must fail
|
|
500
|
+
* closed on anything they cannot prove is a read.
|
|
501
|
+
*/
|
|
502
|
+
export async function assertSingleReadStatement(sql, options = {}) {
|
|
503
|
+
let classification;
|
|
504
|
+
try {
|
|
505
|
+
classification = await classifyStatement(sql, options);
|
|
506
|
+
}
|
|
507
|
+
catch (err) {
|
|
508
|
+
if (err instanceof SqlParserUnavailableError)
|
|
509
|
+
throw err;
|
|
510
|
+
if (err instanceof SqlParseError) {
|
|
511
|
+
throw new StatementClassificationError(`PostgreSQL rejected the statement: ${err.message}`, 'parse_error');
|
|
512
|
+
}
|
|
513
|
+
throw err;
|
|
514
|
+
}
|
|
515
|
+
if (!classification.parse_ok) {
|
|
516
|
+
throw new StatementClassificationError('Statement could not be parsed.', 'parse_error');
|
|
517
|
+
}
|
|
518
|
+
if (classification.statement_count !== 1) {
|
|
519
|
+
throw new StatementClassificationError(`Expected exactly one statement, found ${classification.statement_count}. ` +
|
|
520
|
+
'Multi-statement execution is not permitted.', 'multiple_statements');
|
|
521
|
+
}
|
|
522
|
+
return classification;
|
|
523
|
+
}
|
|
524
|
+
export { SqlParseError, SqlParserUnavailableError };
|
|
525
|
+
export { walkAst };
|
|
526
|
+
//# sourceMappingURL=statement-classifier.js.map
|