@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,229 @@
|
|
|
1
|
+
import { PoolClient } from 'pg';
|
|
2
|
+
import { DbEntry } from '../config/db-config';
|
|
3
|
+
import { PoolManagerEvents } from './types';
|
|
4
|
+
import { resolveSearchPathComponents } from './search-path';
|
|
5
|
+
/**
|
|
6
|
+
* The search_path helpers live in `./search-path` so the pure composition and
|
|
7
|
+
* verification logic can be tested without a pool or a database. They are
|
|
8
|
+
* re-exported here because `./execution/pool` is the module the rest of the
|
|
9
|
+
* codebase (and the tests) have always imported them from, and moving that
|
|
10
|
+
* would be a change with no security value.
|
|
11
|
+
*/
|
|
12
|
+
export { DEFAULT_SEARCH_PATH, PG_CATALOG_SCHEMA, PG_TEMP_SCHEMA, isBareSchemaIdentifier, parseSearchPathSetting, renderSearchPathSet, searchPathMatches, } from './search-path';
|
|
13
|
+
/** Stable machine-readable classification of a pool failure. */
|
|
14
|
+
export type PoolErrorCode = 'env_var_missing' | 'connection_failed' | 'auth_failed' | 'db_not_found' | 'ssl_error' | 'pool_exhausted' | 'unsafe_session_setting';
|
|
15
|
+
/**
|
|
16
|
+
* Absolute hard ceiling on `statement_timeout`, in milliseconds.
|
|
17
|
+
*
|
|
18
|
+
* Nothing can raise this: not a `timeout_ms` in a cloud request, not the
|
|
19
|
+
* `SW_MAX_STATEMENT_TIMEOUT_MS` environment variable, and not the
|
|
20
|
+
* `PoolManager` option. It exists so that "hard-capped" is a property of the
|
|
21
|
+
* build rather than of whatever number is configured next.
|
|
22
|
+
*/
|
|
23
|
+
export declare const MAX_STATEMENT_TIMEOUT_MS = 900000;
|
|
24
|
+
/**
|
|
25
|
+
* How long a statement may wait for a lock before it is cancelled. Without
|
|
26
|
+
* this, `SELECT ... FOR UPDATE` or a migration waiting on a DDL lock pins a
|
|
27
|
+
* pooled backend (and its transaction snapshot) until the client's own
|
|
28
|
+
* statement_timeout, which is per-statement and can be very large.
|
|
29
|
+
*/
|
|
30
|
+
export declare const LOCK_TIMEOUT_MS = 10000;
|
|
31
|
+
/**
|
|
32
|
+
* How long a connection may sit idle inside an open transaction. An idle
|
|
33
|
+
* transaction holds a snapshot, blocks vacuum cleanup and pins a pool slot;
|
|
34
|
+
* this terminates the backend instead of letting it linger.
|
|
35
|
+
*/
|
|
36
|
+
export declare const IDLE_IN_TRANSACTION_TIMEOUT_MS: 1800000;
|
|
37
|
+
/** Bounds for the per-pool connection count. */
|
|
38
|
+
export declare const MIN_POOL_SIZE = 1;
|
|
39
|
+
export declare const MAX_POOL_SIZE = 100;
|
|
40
|
+
export declare const DEFAULT_POOL_SIZE = 15;
|
|
41
|
+
export declare class PoolError extends Error {
|
|
42
|
+
code: PoolErrorCode;
|
|
43
|
+
cause?: Error | undefined;
|
|
44
|
+
constructor(code: PoolErrorCode, message: string, cause?: Error | undefined);
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Declare that a pooled connection has been used for a stateful sequence — an
|
|
48
|
+
* open transaction, a cursor, or any statement that may have changed session
|
|
49
|
+
* GUCs — and can no longer be proven to hold nothing but the posture
|
|
50
|
+
* {@link PoolManager.acquire} established.
|
|
51
|
+
*
|
|
52
|
+
* Call this as soon as such a sequence starts. The connection is destroyed on
|
|
53
|
+
* release, which costs one reconnect; forgetting to call it costs a session
|
|
54
|
+
* GUC leak into the next request.
|
|
55
|
+
*/
|
|
56
|
+
export declare function markSessionDirty(client: PoolClient): void;
|
|
57
|
+
export interface PoolManagerOptions {
|
|
58
|
+
/** Called when a pool opens/closes. */
|
|
59
|
+
events?: PoolManagerEvents;
|
|
60
|
+
/** Idle timeout before closing a pool. Default 60_000. */
|
|
61
|
+
idleTimeoutMs?: number;
|
|
62
|
+
/** Max connections per pool. Default 15. */
|
|
63
|
+
maxPoolSize?: number;
|
|
64
|
+
/**
|
|
65
|
+
* Absolute ceiling on statement_timeout in ms, regardless of what a request
|
|
66
|
+
* asks for. A remote caller must never be able to raise this.
|
|
67
|
+
*/
|
|
68
|
+
maxStatementTimeoutMs?: number;
|
|
69
|
+
}
|
|
70
|
+
export type PoolSslConfig = boolean | {
|
|
71
|
+
ca?: Buffer;
|
|
72
|
+
rejectUnauthorized: boolean;
|
|
73
|
+
checkServerIdentity?: () => undefined;
|
|
74
|
+
};
|
|
75
|
+
/** True when `host` is an IPv4/IPv6 literal rather than a DNS name. */
|
|
76
|
+
export declare function isIpLiteral(host: string | null | undefined): boolean;
|
|
77
|
+
/**
|
|
78
|
+
* Warning text for a `verify-full` entry whose host is an IP literal, or `null`
|
|
79
|
+
* when no warning applies.
|
|
80
|
+
*
|
|
81
|
+
* node-postgres only sets the TLS `servername` for DNS names
|
|
82
|
+
* (`pg/lib/connection.js`: `if (net.isIP(host) === 0) options.servername = host`),
|
|
83
|
+
* so an IP-literal host such as `10.0.1.20` gets no `servername` and Node
|
|
84
|
+
* performs no hostname check at all — `verify-full` silently becomes
|
|
85
|
+
* `verify-ca`. An on-path attacker with any certificate from the same CA can
|
|
86
|
+
* therefore impersonate the server unless the certificate also carries an IP
|
|
87
|
+
* SAN that Node checks, which is rare.
|
|
88
|
+
*/
|
|
89
|
+
export declare function hostnameVerificationWarning(mode: string, host: string | null | undefined): string | null;
|
|
90
|
+
/**
|
|
91
|
+
* The two non-verifying ssl modes are silent today, which is how a
|
|
92
|
+
* cleartext-password or MITM-able posture goes unnoticed. `require` is the
|
|
93
|
+
* default in `db add`, so this is the warning most users actually need.
|
|
94
|
+
*/
|
|
95
|
+
export declare function unauthenticatedTlsWarning(mode: string): string | null;
|
|
96
|
+
/**
|
|
97
|
+
* Build node-postgres SSL options from a DbEntry's ssl settings.
|
|
98
|
+
*
|
|
99
|
+
* `verify-ca` and `verify-full` are genuinely different here: `verify-ca`
|
|
100
|
+
* pins the CA and deliberately skips the hostname comparison, `verify-full`
|
|
101
|
+
* lets Node perform it. An unknown mode throws rather than falling back to
|
|
102
|
+
* plaintext.
|
|
103
|
+
*
|
|
104
|
+
* `host` is optional and only used to warn about the IP-literal case; it never
|
|
105
|
+
* changes the returned object.
|
|
106
|
+
*/
|
|
107
|
+
export declare function buildSslConfig(mode: string, rootCert?: string | null, host?: string | null): PoolSslConfig;
|
|
108
|
+
/**
|
|
109
|
+
* Stable fingerprint of every parameter that affects the connection or the
|
|
110
|
+
* session posture. The password is hashed, never included verbatim.
|
|
111
|
+
*
|
|
112
|
+
* `password_env` is part of the fingerprint in addition to the resolved
|
|
113
|
+
* secret: switching the entry from `password_stored` to an env var that happens
|
|
114
|
+
* to hold the same string still changes where the credential comes from, and a
|
|
115
|
+
* pool opened for one must not serve the other.
|
|
116
|
+
*
|
|
117
|
+
* The `search_path` contribution is the resolved component list joined with `,`.
|
|
118
|
+
* Components are validated bare identifiers, so they cannot contain `,` or a
|
|
119
|
+
* quote and the join is unambiguous — unlike a joined-then-resplit round-trip,
|
|
120
|
+
* which is exactly the defect was.
|
|
121
|
+
*/
|
|
122
|
+
export declare function connectionFingerprint(entry: DbEntry, password: string): string;
|
|
123
|
+
/**
|
|
124
|
+
* Clamp a caller-supplied timeout to a server-controlled ceiling.
|
|
125
|
+
*
|
|
126
|
+
* `requested <= 0` means "no timeout" in the PostgreSQL world and is never
|
|
127
|
+
* honoured: a remote caller must not be able to remove the ceiling by asking
|
|
128
|
+
* for zero, so it falls back to the default instead.
|
|
129
|
+
*/
|
|
130
|
+
export declare function clampStatementTimeout(requested: number | undefined, ceilingMs: number): number;
|
|
131
|
+
export declare class PoolManager {
|
|
132
|
+
private pools;
|
|
133
|
+
private activeClientsCount;
|
|
134
|
+
private readonly opts;
|
|
135
|
+
constructor(opts?: PoolManagerOptions);
|
|
136
|
+
/**
|
|
137
|
+
* Ceiling for `statement_timeout`, in milliseconds. Configurable by the
|
|
138
|
+
* operator, never by a request, and never above {@link MAX_STATEMENT_TIMEOUT_MS}.
|
|
139
|
+
*/
|
|
140
|
+
get maxStatementTimeoutMs(): number;
|
|
141
|
+
/**
|
|
142
|
+
* Connections per pool. `SW_PG_POOL_MAX` is operator-controlled but must not
|
|
143
|
+
* be able to set an arbitrary number: an unbounded value exhausts the
|
|
144
|
+
* database's `max_connections`, and a NaN/negative value makes node-postgres
|
|
145
|
+
* behave unpredictably. Garbage falls back to the default of 15.
|
|
146
|
+
*/
|
|
147
|
+
get maxPoolSize(): number;
|
|
148
|
+
/**
|
|
149
|
+
* Get a pool client for the given DB entry.
|
|
150
|
+
* Opens the pool if it does not exist, or if the entry's connection
|
|
151
|
+
* parameters changed since the pool was created (so a rotated password or a
|
|
152
|
+
* changed TLS mode takes effect immediately instead of after the idle timer).
|
|
153
|
+
*/
|
|
154
|
+
acquire(dbEntry: DbEntry): Promise<{
|
|
155
|
+
client: PoolClient;
|
|
156
|
+
release: () => void;
|
|
157
|
+
pid: number;
|
|
158
|
+
}>;
|
|
159
|
+
/**
|
|
160
|
+
* Put a freshly-checked-out connection into the posture this database entry
|
|
161
|
+
* is configured for, and clear anything a previous request left behind.
|
|
162
|
+
*
|
|
163
|
+
* This is the enforcement point that makes `read_only` physical rather than
|
|
164
|
+
* advisory: a `read_only` entry gets `default_transaction_read_only = on`, so
|
|
165
|
+
* PostgreSQL itself raises `25006` for a write — including a write smuggled
|
|
166
|
+
* in after a `SELECT` that every lexical layer agreed was a read. The value
|
|
167
|
+
* is read back and verified, and any failure here aborts the request.
|
|
168
|
+
*/
|
|
169
|
+
private hardenSession;
|
|
170
|
+
/**
|
|
171
|
+
* Translate a driver/pg connection failure into a PoolError with a stable
|
|
172
|
+
* machine code and a message that names the database only by its alias.
|
|
173
|
+
*
|
|
174
|
+
* These messages are forwarded to the cloud and the browser, so host, port,
|
|
175
|
+
* username and database name must never appear in them: an authentication
|
|
176
|
+
* failure used to disclose the username and the `pg_hba.conf` verdict, and a
|
|
177
|
+
* refused connection disclosed the host and port of a production database.
|
|
178
|
+
* `cause` is retained for the local error log only and is never sent.
|
|
179
|
+
*/
|
|
180
|
+
private mapConnectError;
|
|
181
|
+
/**
|
|
182
|
+
* Release a client back to the pool. Resets idle timer.
|
|
183
|
+
*
|
|
184
|
+
* A connection marked dirty could not be proven to be back in the posture
|
|
185
|
+
* this entry requires, so it is destroyed instead of recycled: the next
|
|
186
|
+
* request must not inherit an open transaction or a session GUC that the
|
|
187
|
+
* previous request left behind.
|
|
188
|
+
*/
|
|
189
|
+
release(dbAlias: string, client: PoolClient): void;
|
|
190
|
+
/** Close a specific pool. */
|
|
191
|
+
closePool(dbAlias: string, reason?: 'idle' | 'explicit' | 'error'): Promise<void>;
|
|
192
|
+
/**
|
|
193
|
+
* Close any pool whose connection parameters no longer match the config.
|
|
194
|
+
* Called after the databases config file is reloaded so that a rotated
|
|
195
|
+
* password or a changed TLS mode takes effect immediately.
|
|
196
|
+
*/
|
|
197
|
+
reconcile(databases: DbEntry[]): Promise<string[]>;
|
|
198
|
+
/** Close all pools. Used during shutdown. */
|
|
199
|
+
closeAll(): Promise<void>;
|
|
200
|
+
/** Check if a pool is currently open for this DB. */
|
|
201
|
+
hasPool(dbAlias: string): boolean;
|
|
202
|
+
/** Get stats for monitoring. */
|
|
203
|
+
getStats(): Array<{
|
|
204
|
+
db_alias: string;
|
|
205
|
+
total_count: number;
|
|
206
|
+
idle_count: number;
|
|
207
|
+
waiting_count: number;
|
|
208
|
+
}>;
|
|
209
|
+
/** Max bytes an inbound protocol message may occupy. Re-exported for the channel layer. */
|
|
210
|
+
static get maxMessageBytes(): number;
|
|
211
|
+
}
|
|
212
|
+
/**
|
|
213
|
+
* The permission level that actually applies to a database entry. Mirrors the
|
|
214
|
+
* dispatcher's resolution so the session posture can never disagree with the
|
|
215
|
+
* permission decision.
|
|
216
|
+
*/
|
|
217
|
+
export declare function effectivePermission(dbEntry: DbEntry, machineDefault?: string): string;
|
|
218
|
+
/**
|
|
219
|
+
* The `search_path` to pin for this entry, as an ordered list of schema names.
|
|
220
|
+
*
|
|
221
|
+
* renamed this function's contract from `string` to `string[]` and moved
|
|
222
|
+
* it to `./search-path`, together with {@link renderSearchPathSet} (which turns
|
|
223
|
+
* the list into the full `SET search_path = ...` statement) and
|
|
224
|
+
* {@link searchPathMatches} (which verifies the server reported exactly that
|
|
225
|
+
* list back). The list is the only representation now: joining it into a string
|
|
226
|
+
* and re-splitting it on `,` is what turned `public` into `" public"`.
|
|
227
|
+
*/
|
|
228
|
+
export declare const resolveSearchPath: typeof resolveSearchPathComponents;
|
|
229
|
+
//# sourceMappingURL=pool.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pool.d.ts","sourceRoot":"","sources":["../../../src/execution/pool.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
import { PoolManager } from './pool';
|
|
2
|
+
import { DbEntry } from '../config/db-config';
|
|
3
|
+
import { QueryPayload, QueryResultPayload, StreamQueryPayload, StreamChunkPayload, StreamEndPayload } from '../protocol/messages';
|
|
4
|
+
import type { InFlightRequest, StatementClassification } from './types';
|
|
5
|
+
export declare class QueryTooLargeError extends Error {
|
|
6
|
+
constructor(message: string);
|
|
7
|
+
}
|
|
8
|
+
export declare class StreamTooLargeError extends Error {
|
|
9
|
+
constructor(message: string);
|
|
10
|
+
}
|
|
11
|
+
export declare class CellSizeLimitError extends Error {
|
|
12
|
+
constructor(message: string);
|
|
13
|
+
}
|
|
14
|
+
export declare class QueryCancelledError extends Error {
|
|
15
|
+
constructor(message?: string);
|
|
16
|
+
}
|
|
17
|
+
export interface QueryRunnerOptions {
|
|
18
|
+
poolManager: PoolManager;
|
|
19
|
+
}
|
|
20
|
+
export interface QueryRunContext {
|
|
21
|
+
dbEntry: DbEntry;
|
|
22
|
+
request_id: string;
|
|
23
|
+
/**
|
|
24
|
+
* Called for each stream chunk. The runner AWAITS the returned promise, which
|
|
25
|
+
* is what makes backpressure real: `DataChannel.send` settles on the
|
|
26
|
+
* WebSocket send callback, so the fetch loop stops while the socket drains.
|
|
27
|
+
*
|
|
28
|
+
* The contract returns a Promise because it used to return void while the
|
|
29
|
+
* only implementation returned one: the discarded promise turned a rejected
|
|
30
|
+
* send into an unhandled rejection, which either killed the daemon (Node's
|
|
31
|
+
* `--unhandled-rejections=throw` default) or was swallowed by the global
|
|
32
|
+
* handler, truncating the stream with no `stream_end`.
|
|
33
|
+
*/
|
|
34
|
+
onChunk?: (chunk: StreamChunkPayload) => Promise<void>;
|
|
35
|
+
/** Called when stream ends. Awaited, and only ever called once, on success. */
|
|
36
|
+
onEnd?: (end: StreamEndPayload) => void | Promise<void>;
|
|
37
|
+
/**
|
|
38
|
+
* Optional transport drain signal. When supplied, it is awaited before every
|
|
39
|
+
* fetch: the producer pauses while the socket is above the transport's
|
|
40
|
+
* buffered-amount watermark and resumes once it drains. Without it the
|
|
41
|
+
* runner still stops on every awaited send, which throttles the producer to
|
|
42
|
+
* the socket but cannot observe the buffer directly.
|
|
43
|
+
*/
|
|
44
|
+
waitForDrain?: () => Promise<void>;
|
|
45
|
+
/** Abort signal for cancellation. */
|
|
46
|
+
abortSignal?: AbortSignal;
|
|
47
|
+
/**
|
|
48
|
+
* Parsed classification of `payload.sql`. Decides whether the one-shot read
|
|
49
|
+
* may be fetched through a cursor. Omitting it is treated as "not provably a
|
|
50
|
+
* read", which is the fail-closed default.
|
|
51
|
+
*/
|
|
52
|
+
classification?: StatementClassification;
|
|
53
|
+
registerInFlight?: (req: InFlightRequest) => void;
|
|
54
|
+
unregisterInFlight?: (request_id: string) => void;
|
|
55
|
+
}
|
|
56
|
+
export declare class QueryRunner {
|
|
57
|
+
private readonly poolManager;
|
|
58
|
+
constructor(opts: QueryRunnerOptions);
|
|
59
|
+
/**
|
|
60
|
+
* Run a one-shot query and return the whole result.
|
|
61
|
+
*
|
|
62
|
+
* Reads are fetched through the shared cursor so the row ceiling is enforced
|
|
63
|
+
* WHILE rows are produced. The previous implementation called `client.query`
|
|
64
|
+
* and only then compared `res.rows.length` against MAX_QUERY_ROWS, which meant
|
|
65
|
+
* a single `SELECT repeat('x', 1048576) FROM generate_series(1,5000000)` could
|
|
66
|
+
* exhaust memory before the check ever ran.
|
|
67
|
+
*
|
|
68
|
+
* Statements that are not provably reads are executed directly, because a
|
|
69
|
+
* cursor would force them into a transaction and change their semantics. They
|
|
70
|
+
* still travel over the extended query protocol, and they are still subject to
|
|
71
|
+
* the `read_only` connection posture.
|
|
72
|
+
*/
|
|
73
|
+
runOneShot(payload: QueryPayload, ctx: QueryRunContext): Promise<QueryResultPayload>;
|
|
74
|
+
/**
|
|
75
|
+
* Run a streaming query, emitting chunks as rows are fetched.
|
|
76
|
+
*
|
|
77
|
+
* Chunks flush on 100 rows, 64 KB, or 100 ms, whichever comes first. The
|
|
78
|
+
* cursor is the same shared mechanism `runOneShot` uses, and `ctx.onChunk` is
|
|
79
|
+
* awaited, so a slow relay stops the fetch loop instead of buffering the
|
|
80
|
+
* entire result in the WebSocket send buffer.
|
|
81
|
+
*
|
|
82
|
+
* Exactly one terminal outcome is emitted: either `onEnd` on success, or a
|
|
83
|
+
* thrown error that the caller turns into a single `error` frame. A chunk
|
|
84
|
+
* send that rejects therefore ends the stream instead of leaving it open.
|
|
85
|
+
*/
|
|
86
|
+
runStreaming(payload: StreamQueryPayload, ctx: QueryRunContext): Promise<void>;
|
|
87
|
+
}
|
|
88
|
+
//# sourceMappingURL=query-runner.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"query-runner.d.ts","sourceRoot":"","sources":["../../../src/execution/query-runner.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAA2C,MAAM,QAAQ,CAAC;AAC9E,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAC9C,OAAO,EACL,YAAY,EACZ,kBAAkB,EAClB,kBAAkB,EAClB,kBAAkB,EAClB,gBAAgB,EACjB,MAAM,sBAAsB,CAAC;AAI9B,OAAO,KAAK,EAAE,eAAe,EAAE,uBAAuB,EAAE,MAAM,SAAS,CAAC;AAExE,qBAAa,kBAAmB,SAAQ,KAAK;gBAC/B,OAAO,EAAE,MAAM;CAI5B;AAED,qBAAa,mBAAoB,SAAQ,KAAK;gBAChC,OAAO,EAAE,MAAM;CAI5B;AAED,qBAAa,kBAAmB,SAAQ,KAAK;gBAC/B,OAAO,EAAE,MAAM;CAI5B;AAED,qBAAa,mBAAoB,SAAQ,KAAK;gBAChC,OAAO,GAAE,MAA8B;CAIpD;AAED,MAAM,WAAW,kBAAkB;IACjC,WAAW,EAAE,WAAW,CAAC;CAC1B;AAED,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB;;;;;;;;;;OAUG;IACH,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,kBAAkB,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACvD,+EAA+E;IAC/E,KAAK,CAAC,EAAE,CAAC,GAAG,EAAE,gBAAgB,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACxD;;;;;;OAMG;IACH,YAAY,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IACnC,qCAAqC;IACrC,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B;;;;OAIG;IACH,cAAc,CAAC,EAAE,uBAAuB,CAAC;IACzC,gBAAgB,CAAC,EAAE,CAAC,GAAG,EAAE,eAAe,KAAK,IAAI,CAAC;IAClD,kBAAkB,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,IAAI,CAAC;CACnD;AAyfD,qBAAa,WAAW;IACtB,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAc;gBAE9B,IAAI,EAAE,kBAAkB;IAIpC;;;;;;;;;;;;;OAaG;IACG,UAAU,CAAC,OAAO,EAAE,YAAY,EAAE,GAAG,EAAE,eAAe,GAAG,OAAO,CAAC,kBAAkB,CAAC;IA4I1F;;;;;;;;;;;OAWG;IACG,YAAY,CAAC,OAAO,EAAE,kBAAkB,EAAE,GAAG,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC;CAoKrF"}
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Operations that consume budget. Every inbound message type maps onto exactly
|
|
3
|
+
* one of these; `other` is the fail-safe bucket for a type this module does
|
|
4
|
+
* not recognise, so a new message type is rate limited by default rather than
|
|
5
|
+
* exempt by omission.
|
|
6
|
+
*/
|
|
7
|
+
export type RateLimitedAction = 'ping' | 'introspect' | 'query' | 'stream_query' | 'migration_run' | 'cancel' | 'event' | 'other';
|
|
8
|
+
/** Token-bucket shape: a burst allowance plus a sustained refill rate. */
|
|
9
|
+
export interface RateLimitPolicy {
|
|
10
|
+
/** Bucket capacity. One request per token. */
|
|
11
|
+
burst: number;
|
|
12
|
+
/** Tokens added per second while the bucket is below capacity. */
|
|
13
|
+
per_second: number;
|
|
14
|
+
}
|
|
15
|
+
/** Who is spending budget. All three components are attacker-controlled. */
|
|
16
|
+
export interface RateLimitIdentity {
|
|
17
|
+
agent_id: string;
|
|
18
|
+
user_id: string;
|
|
19
|
+
db_alias: string;
|
|
20
|
+
}
|
|
21
|
+
/** Which limit refused the request. */
|
|
22
|
+
export type RateLimitScope = 'global' | 'identity' | 'concurrency_global' | 'concurrency_db';
|
|
23
|
+
/** Result of an admission check. */
|
|
24
|
+
export interface RateLimitVerdict {
|
|
25
|
+
allowed: boolean;
|
|
26
|
+
scope?: RateLimitScope;
|
|
27
|
+
/** Curated, data-free text safe to forward to the browser. */
|
|
28
|
+
reason?: string;
|
|
29
|
+
retry_after_ms: number;
|
|
30
|
+
}
|
|
31
|
+
/** An admitted request. `release` must be called exactly once when it finishes. */
|
|
32
|
+
export interface RateLimitPermit extends RateLimitVerdict {
|
|
33
|
+
release: () => void;
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Default budget per action.
|
|
37
|
+
*
|
|
38
|
+
* `introspect` is deliberately the tightest: one call runs eleven catalogue
|
|
39
|
+
* queries and returns the entire schema, so it is the cheapest request to make
|
|
40
|
+
* and the most valuable one to an attacker exfiltrating a schema.
|
|
41
|
+
*/
|
|
42
|
+
export declare const DEFAULT_RATE_LIMIT_POLICIES: Record<RateLimitedAction, RateLimitPolicy>;
|
|
43
|
+
/** Ceiling for everything the connector does, whatever the caller's identity. */
|
|
44
|
+
export declare const DEFAULT_GLOBAL_POLICY: RateLimitPolicy;
|
|
45
|
+
export declare const DEFAULT_MAX_INFLIGHT = 32;
|
|
46
|
+
export declare const DEFAULT_MAX_INFLIGHT_PER_DB = 8;
|
|
47
|
+
export interface RateLimiterOptions {
|
|
48
|
+
/** Per-action budget overrides, merged over {@link DEFAULT_RATE_LIMIT_POLICIES}. */
|
|
49
|
+
policies?: Partial<Record<RateLimitedAction, RateLimitPolicy>>;
|
|
50
|
+
/** Global budget override. */
|
|
51
|
+
global?: Partial<RateLimitPolicy>;
|
|
52
|
+
/** Concurrent admitted requests across every identity. */
|
|
53
|
+
max_inflight?: number;
|
|
54
|
+
/** Concurrent admitted requests for a single `db_alias`. */
|
|
55
|
+
max_inflight_per_db?: number;
|
|
56
|
+
/** Hard cap on tracked buckets, so the key space cannot grow without bound. */
|
|
57
|
+
max_tracked_keys?: number;
|
|
58
|
+
/** A bucket untouched for this long is evicted. */
|
|
59
|
+
idle_ttl_ms?: number;
|
|
60
|
+
/** Serialized introspection snapshot ceiling, in bytes. */
|
|
61
|
+
max_introspect_bytes?: number;
|
|
62
|
+
/** Clock injection point; tests supply a deterministic clock. */
|
|
63
|
+
now?: () => number;
|
|
64
|
+
}
|
|
65
|
+
export declare class RateLimiter {
|
|
66
|
+
private readonly policies;
|
|
67
|
+
private readonly globalPolicy;
|
|
68
|
+
private readonly maxInflight;
|
|
69
|
+
private readonly maxInflightPerDb;
|
|
70
|
+
private readonly maxTrackedKeys;
|
|
71
|
+
private readonly idleTtlMs;
|
|
72
|
+
private readonly sweepIntervalMs;
|
|
73
|
+
private readonly maxIntrospectBytes;
|
|
74
|
+
private readonly now;
|
|
75
|
+
/**
|
|
76
|
+
* Buckets keyed by `identity\u0000action`, plus the global bucket. Insertion
|
|
77
|
+
* order is maintained on touch, which makes the oldest entry the least
|
|
78
|
+
* recently used one and the entry evicted when the cap is reached.
|
|
79
|
+
*/
|
|
80
|
+
private readonly buckets;
|
|
81
|
+
private readonly globalBucket;
|
|
82
|
+
private readonly inflightByDb;
|
|
83
|
+
private inflight;
|
|
84
|
+
private lastSweepAt;
|
|
85
|
+
constructor(opts?: RateLimiterOptions);
|
|
86
|
+
/** Number of tracked buckets. Exposed so boundedness is assertable. */
|
|
87
|
+
trackedKeys(): number;
|
|
88
|
+
/** Requests admitted and not yet released. */
|
|
89
|
+
inflightCount(): number;
|
|
90
|
+
limits(): {
|
|
91
|
+
global: RateLimitPolicy;
|
|
92
|
+
max_inflight: number;
|
|
93
|
+
max_inflight_per_db: number;
|
|
94
|
+
max_tracked_keys: number;
|
|
95
|
+
};
|
|
96
|
+
/**
|
|
97
|
+
* Admit one request, spending budget from the global bucket, the caller's
|
|
98
|
+
* per-identity bucket and the concurrency counters.
|
|
99
|
+
*
|
|
100
|
+
* The returned permit must be released exactly when the request finishes,
|
|
101
|
+
* including on every error path: an unreleased permit permanently consumes
|
|
102
|
+
* concurrency capacity.
|
|
103
|
+
*/
|
|
104
|
+
tryAcquire(action: RateLimitedAction, identity: RateLimitIdentity): RateLimitPermit;
|
|
105
|
+
/**
|
|
106
|
+
* Size budget for one introspection response. A snapshot above the ceiling
|
|
107
|
+
* still cost eleven catalogue queries on the server, but it is not shipped,
|
|
108
|
+
* which is what bounds schema exfiltration.
|
|
109
|
+
*/
|
|
110
|
+
checkIntrospectSize(bytes: number): RateLimitVerdict;
|
|
111
|
+
private deny;
|
|
112
|
+
/** Take one token, refilling for elapsed time first. */
|
|
113
|
+
private spend;
|
|
114
|
+
private bucketFor;
|
|
115
|
+
private releaseSlot;
|
|
116
|
+
/** Drop buckets that have been idle past the TTL, then enforce the cap. */
|
|
117
|
+
private sweep;
|
|
118
|
+
private evictOne;
|
|
119
|
+
}
|
|
120
|
+
//# sourceMappingURL=rate-limiter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rate-limiter.d.ts","sourceRoot":"","sources":["../../../src/execution/rate-limiter.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,161 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `search_path` composition and verification.
|
|
3
|
+
*
|
|
4
|
+
* WHY THIS IS A SEPARATE MODULE
|
|
5
|
+
* -----------------------------
|
|
6
|
+
* This was a *seam* defect. `resolveSearchPath()` produced a correct
|
|
7
|
+
* intermediate string (`'analytics, public'`), `quoteSearchPath()` re-split that
|
|
8
|
+
* string on `,` **without trimming**, and the two halves disagreed about what a
|
|
9
|
+
* component was:
|
|
10
|
+
*
|
|
11
|
+
* config "analytics, public"
|
|
12
|
+
* -> resolveSearchPath -> "analytics, public" (looks right)
|
|
13
|
+
* -> quoteSearchPath -> SET search_path = "analytics", " public"
|
|
14
|
+
*
|
|
15
|
+
* The second component is a schema literally named `" public"` — a name that
|
|
16
|
+
* does not exist — so the real `public` schema silently left the resolution
|
|
17
|
+
* path and every unqualified name resolved to whichever schema came first. The
|
|
18
|
+
* post-condition guard at `pool.ts` then passed, because it asked
|
|
19
|
+
* `actualPath.toLowerCase().includes('public')` and `" public"` contains
|
|
20
|
+
* `public`. The control written to catch this was defeated by the same defect
|
|
21
|
+
* it was checking for.
|
|
22
|
+
*
|
|
23
|
+
* The fix is structural rather than a patch: there is now **no string
|
|
24
|
+
* round-trip at all**. A list of schema names is resolved once, rendered once,
|
|
25
|
+
* and the post-condition compares that same list against what PostgreSQL reports
|
|
26
|
+
* — component by component, in order. A component can never acquire or lose a
|
|
27
|
+
* space, a quote or a comma between "what we intended" and "what the server
|
|
28
|
+
* was told", because it is a string element the whole way through and the only
|
|
29
|
+
* place a separator appears is where the renderer and the verifier each derive
|
|
30
|
+
* it independently from the same array.
|
|
31
|
+
*
|
|
32
|
+
* Everything here is pure: no database, no pool, no I/O. That is deliberate —
|
|
33
|
+
* the unit suite asserts the *composed statement* here rather than the
|
|
34
|
+
* intermediate value, which is precisely the seam the previous test missed.
|
|
35
|
+
*/
|
|
36
|
+
import type { DbEntry } from '../config/db-config';
|
|
37
|
+
/**
|
|
38
|
+
* `search_path` a pooled session is pinned to when a database entry does not
|
|
39
|
+
* name one, and the component that is always kept last so unqualified names keep
|
|
40
|
+
* resolving. `pg_temp` is deliberately excluded: a temporary object of the same
|
|
41
|
+
* name would otherwise shadow a permanent table for the whole session.
|
|
42
|
+
*/
|
|
43
|
+
export declare const DEFAULT_SEARCH_PATH = "public";
|
|
44
|
+
/**
|
|
45
|
+
* The schema PostgreSQL implicitly searches first whenever it is not named
|
|
46
|
+
* explicitly in `search_path`. See {@link resolveSearchPath} for why it is
|
|
47
|
+
* hoisted rather than appended unconditionally.
|
|
48
|
+
*/
|
|
49
|
+
export declare const PG_CATALOG_SCHEMA = "pg_catalog";
|
|
50
|
+
/**
|
|
51
|
+
* The implicit schema for session-local temporary objects. Never pinned: a temp
|
|
52
|
+
* object of the same name would shadow a permanent table for the whole session,
|
|
53
|
+
* which is a session-poisoning primitive any principal with `CREATE TEMP
|
|
54
|
+
* TABLE` can reach.
|
|
55
|
+
*/
|
|
56
|
+
export declare const PG_TEMP_SCHEMA = "pg_temp";
|
|
57
|
+
/**
|
|
58
|
+
* Whether a string may be used as one `search_path` component at all.
|
|
59
|
+
*
|
|
60
|
+
* Used both as the gate in {@link resolveSearchPathComponents} (discard a
|
|
61
|
+
* component the operator got wrong) and as the gate in
|
|
62
|
+
* {@link quoteSchemaIdentifier} (refuse to emit one we did not validate). The
|
|
63
|
+
* same predicate in both places is the point: there is no second, laxer path
|
|
64
|
+
* into the emitted statement.
|
|
65
|
+
*/
|
|
66
|
+
export declare function isBareSchemaIdentifier(name: string): boolean;
|
|
67
|
+
/**
|
|
68
|
+
* The ordered, de-duplicated list of schemas a session for this entry searches.
|
|
69
|
+
*
|
|
70
|
+
* Rules, in order:
|
|
71
|
+
*
|
|
72
|
+
* 1. No configured value, or no component that survives validation, yields the
|
|
73
|
+
* single component `['public']`.
|
|
74
|
+
* 2. A component is trimmed and then kept only if {@link isBareSchemaIdentifier}
|
|
75
|
+
* accepts it, so `'a," public"'` contributes `['a']` and never a schema named
|
|
76
|
+
* `" public"`. Nothing is escaped into existence, and whitespace *inside* a
|
|
77
|
+
* component is a rejection rather than a rename — the two rules together are
|
|
78
|
+
* what make it impossible to emit a component with a leading space.
|
|
79
|
+
* 3. `pg_temp` is dropped (temp objects must not shadow permanent ones), matched
|
|
80
|
+
* case-insensitively.
|
|
81
|
+
* 4. `pg_catalog` is hoisted to the front if it appears anywhere.
|
|
82
|
+
* PostgreSQL already searches `pg_catalog` first *unless* it is named
|
|
83
|
+
* explicitly, in which case it is searched at the named position — so a
|
|
84
|
+
* configured `'app, pg_catalog, public'` would let a customer schema shadow
|
|
85
|
+
* built-ins such as `pg_class`. Hoisting restores the implicit-first behaviour
|
|
86
|
+
* the operator was already relying on, without adding a component they did
|
|
87
|
+
* not ask for.
|
|
88
|
+
* 5. `public` is always last, unconditionally — it is appended even when the
|
|
89
|
+
* config never named it — so unqualified names keep resolving against the
|
|
90
|
+
* schema the entry promises. That unconditional append is the property
|
|
91
|
+
* destroyed and the reason a post-condition guard existed at all.
|
|
92
|
+
* First-occurrence order is otherwise kept, and ordinary duplicates are
|
|
93
|
+
* removed.
|
|
94
|
+
*
|
|
95
|
+
* The returned array is the single source of truth for both the emitted
|
|
96
|
+
* `SET search_path` and the post-condition comparison; it is never joined into
|
|
97
|
+
* a string and re-split.
|
|
98
|
+
*/
|
|
99
|
+
export declare function resolveSearchPathComponents(entry: DbEntry): string[];
|
|
100
|
+
/**
|
|
101
|
+
* Render the `SET search_path` statement for a resolved component list.
|
|
102
|
+
*
|
|
103
|
+
* The output is the *statement*, not a fragment: the defect this function
|
|
104
|
+
* exists to make impossible was a caller composing a value from one string and
|
|
105
|
+
* a separator from another. Producing the whole statement means the tests can
|
|
106
|
+
* assert exactly what goes over the wire.
|
|
107
|
+
*
|
|
108
|
+
* @throws when a component is not a validated bare identifier, or the list is
|
|
109
|
+
* empty — both are unrecoverable and must fail closed.
|
|
110
|
+
*/
|
|
111
|
+
export declare function renderSearchPathSet(components: readonly string[]): string;
|
|
112
|
+
/**
|
|
113
|
+
* Split the value PostgreSQL reports for `SHOW search_path` into components.
|
|
114
|
+
*
|
|
115
|
+
* Two things make a naive `value.split(',')` wrong here, and both were observed
|
|
116
|
+
* against a live PostgreSQL 16.2:
|
|
117
|
+
*
|
|
118
|
+
* - **Quoting.** `SET search_path = "Weird Schema", "public"` comes back as
|
|
119
|
+
* `"Weird Schema", public`. Comparing that text to the expected list fails
|
|
120
|
+
* even though the path is correct, so quoted components are unquoted
|
|
121
|
+
* (including `""` -> `"`).
|
|
122
|
+
* - **Commas inside a quoted identifier.** `"a,b"` is one component, not two,
|
|
123
|
+
* so the split is quote-aware.
|
|
124
|
+
*
|
|
125
|
+
* The load-bearing detail is that **whitespace inside a quoted identifier is
|
|
126
|
+
* significant and whitespace outside it is not**. `analytics, " public"`
|
|
127
|
+
* unquotes to a component named `" public"` — with the leading space — which is
|
|
128
|
+
* NOT `public`. Trimming after unquoting would turn the payload back into
|
|
129
|
+
* a passing match, which is precisely the mistake the old substring guard made:
|
|
130
|
+
* the corruption was invisible because the comparison ignored the space. So
|
|
131
|
+
* each character is trimmed only while it is outside quotes.
|
|
132
|
+
*
|
|
133
|
+
* Components are lower-cased because unquoted identifiers are folded by
|
|
134
|
+
* PostgreSQL, so `PUBLIC` and `public` are the same schema and the comparison
|
|
135
|
+
* must not fail on case alone. Empty components are **kept** as `''` rather than
|
|
136
|
+
* filtered: a path with a hole in it is not the list we set.
|
|
137
|
+
*/
|
|
138
|
+
export declare function parseSearchPathSetting(value: string): string[];
|
|
139
|
+
/**
|
|
140
|
+
* The post-condition: does `SHOW search_path` report exactly the list we
|
|
141
|
+
* pinned, component for component and in order?
|
|
142
|
+
*
|
|
143
|
+
* The previous check was `actual.toLowerCase().includes('public')`, which
|
|
144
|
+
* passes for `analytics, " public"` — the very corruption it was supposed to
|
|
145
|
+
* catch. Order matters too: `evil, public, analytics` is not the path we set,
|
|
146
|
+
* and a path that merely *contains* the expected components in a different
|
|
147
|
+
* order resolves unqualified names differently, so it is a failure.
|
|
148
|
+
*
|
|
149
|
+
* Length equality is part of the comparison, so a missing or an extra component
|
|
150
|
+
* fails. That also covers a server which chose to fold duplicates: the list we
|
|
151
|
+
* render is already de-duplicated, so any difference from it is a difference we
|
|
152
|
+
* did not ask for.
|
|
153
|
+
*/
|
|
154
|
+
export declare function searchPathMatches(actual: string, expected: readonly string[]): boolean;
|
|
155
|
+
/**
|
|
156
|
+
* A human-readable, secret-free description of a `SHOW search_path` result for
|
|
157
|
+
* an error message. Schema names are operator-controlled, not credentials, but
|
|
158
|
+
* the value is still bounded because it reaches the browser.
|
|
159
|
+
*/
|
|
160
|
+
export declare function describeSearchPathSetting(value: string): string;
|
|
161
|
+
//# sourceMappingURL=search-path.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"search-path.d.ts","sourceRoot":"","sources":["../../../src/execution/search-path.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AACH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAEnD;;;;;GAKG;AACH,eAAO,MAAM,mBAAmB,WAAW,CAAC;AAE5C;;;;GAIG;AACH,eAAO,MAAM,iBAAiB,eAAe,CAAC;AAE9C;;;;;GAKG;AACH,eAAO,MAAM,cAAc,YAAY,CAAC;AAaxC;;;;;;;;GAQG;AACH,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAE5D;AAiDD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,wBAAgB,2BAA2B,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,EAAE,CA8BpE;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,mBAAmB,CAAC,UAAU,EAAE,SAAS,MAAM,EAAE,GAAG,MAAM,CAMzE;AAED;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,CAiD9D;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,MAAM,EAAE,GAAG,OAAO,CAKtF;AAED;;;;GAIG;AACH,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAE/D"}
|