@schema-weaver/pg-connector 0.0.0-stage → 2.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1065) hide show
  1. package/CHANGELOG.md +21 -0
  2. package/LICENSE +21 -0
  3. package/README.md +457 -2
  4. package/dist/cjs/audit/chain.d.ts +365 -0
  5. package/dist/cjs/audit/chain.d.ts.map +1 -0
  6. package/dist/cjs/audit/chain.js +959 -0
  7. package/dist/cjs/audit/chain.js.map +1 -0
  8. package/dist/cjs/audit/cloud-client.d.ts +142 -0
  9. package/dist/cjs/audit/cloud-client.d.ts.map +1 -0
  10. package/dist/cjs/audit/cloud-client.js +364 -0
  11. package/dist/cjs/audit/cloud-client.js.map +1 -0
  12. package/dist/cjs/audit/cloud-writer.d.ts +57 -0
  13. package/dist/cjs/audit/cloud-writer.d.ts.map +1 -0
  14. package/dist/cjs/audit/cloud-writer.js +95 -0
  15. package/dist/cjs/audit/cloud-writer.js.map +1 -0
  16. package/dist/cjs/audit/context.d.ts +51 -0
  17. package/dist/cjs/audit/context.d.ts.map +1 -0
  18. package/dist/cjs/audit/context.js +75 -0
  19. package/dist/cjs/audit/context.js.map +1 -0
  20. package/dist/cjs/audit/files.d.ts +111 -0
  21. package/dist/cjs/audit/files.d.ts.map +1 -0
  22. package/dist/cjs/audit/files.js +406 -0
  23. package/dist/cjs/audit/files.js.map +1 -0
  24. package/dist/cjs/audit/index.d.ts +9 -0
  25. package/dist/cjs/audit/index.d.ts.map +1 -0
  26. package/dist/cjs/audit/index.js +68 -0
  27. package/dist/cjs/audit/index.js.map +1 -0
  28. package/dist/cjs/audit/local-writer.d.ts +255 -0
  29. package/dist/cjs/audit/local-writer.d.ts.map +1 -0
  30. package/dist/cjs/audit/local-writer.js +829 -0
  31. package/dist/cjs/audit/local-writer.js.map +1 -0
  32. package/dist/cjs/audit/redact.d.ts +151 -0
  33. package/dist/cjs/audit/redact.d.ts.map +1 -0
  34. package/dist/cjs/audit/redact.js +549 -0
  35. package/dist/cjs/audit/redact.js.map +1 -0
  36. package/dist/cjs/audit/sanitize.d.ts +78 -0
  37. package/dist/cjs/audit/sanitize.d.ts.map +1 -0
  38. package/dist/cjs/audit/sanitize.js +315 -0
  39. package/dist/cjs/audit/sanitize.js.map +1 -0
  40. package/dist/cjs/audit/sink.d.ts +278 -0
  41. package/dist/cjs/audit/sink.d.ts.map +1 -0
  42. package/dist/cjs/audit/sink.js +819 -0
  43. package/dist/cjs/audit/sink.js.map +1 -0
  44. package/dist/cjs/audit/types.d.ts +226 -0
  45. package/dist/cjs/audit/types.d.ts.map +1 -0
  46. package/dist/cjs/audit/types.js +3 -0
  47. package/dist/cjs/audit/types.js.map +1 -0
  48. package/dist/cjs/audit/verify-cache.d.ts +127 -0
  49. package/dist/cjs/audit/verify-cache.d.ts.map +1 -0
  50. package/dist/cjs/audit/verify-cache.js +668 -0
  51. package/dist/cjs/audit/verify-cache.js.map +1 -0
  52. package/dist/cjs/channels/agent-session.d.ts +228 -0
  53. package/dist/cjs/channels/agent-session.d.ts.map +1 -0
  54. package/dist/cjs/channels/agent-session.js +604 -0
  55. package/dist/cjs/channels/agent-session.js.map +1 -0
  56. package/dist/cjs/channels/data-channel.d.ts +181 -0
  57. package/dist/cjs/channels/data-channel.d.ts.map +1 -0
  58. package/dist/cjs/channels/data-channel.js +607 -0
  59. package/dist/cjs/channels/data-channel.js.map +1 -0
  60. package/dist/cjs/channels/reconnect.d.ts +142 -0
  61. package/dist/cjs/channels/reconnect.d.ts.map +1 -0
  62. package/dist/cjs/channels/reconnect.js +247 -0
  63. package/dist/cjs/channels/reconnect.js.map +1 -0
  64. package/dist/cjs/channels/types.d.ts +112 -0
  65. package/dist/cjs/channels/types.d.ts.map +1 -0
  66. package/dist/cjs/channels/types.js +3 -0
  67. package/dist/cjs/channels/types.js.map +1 -0
  68. package/dist/cjs/channels/wake-channel.d.ts +232 -0
  69. package/dist/cjs/channels/wake-channel.d.ts.map +1 -0
  70. package/dist/cjs/channels/wake-channel.js +752 -0
  71. package/dist/cjs/channels/wake-channel.js.map +1 -0
  72. package/dist/cjs/cli/banner.d.ts +2 -0
  73. package/dist/cjs/cli/banner.d.ts.map +1 -0
  74. package/dist/cjs/cli/banner.js +150 -0
  75. package/dist/cjs/cli/banner.js.map +1 -0
  76. package/dist/cjs/cli/commands/agent.d.ts +30 -0
  77. package/dist/cjs/cli/commands/agent.d.ts.map +1 -0
  78. package/dist/cjs/cli/commands/agent.js +214 -0
  79. package/dist/cjs/cli/commands/agent.js.map +1 -0
  80. package/dist/cjs/cli/commands/audit-verify.d.ts +19 -0
  81. package/dist/cjs/cli/commands/audit-verify.d.ts.map +1 -0
  82. package/dist/cjs/cli/commands/audit-verify.js +382 -0
  83. package/dist/cjs/cli/commands/audit-verify.js.map +1 -0
  84. package/dist/cjs/cli/commands/clean.d.ts +23 -0
  85. package/dist/cjs/cli/commands/clean.d.ts.map +1 -0
  86. package/dist/cjs/cli/commands/clean.js +272 -0
  87. package/dist/cjs/cli/commands/clean.js.map +1 -0
  88. package/dist/cjs/cli/commands/config-show.d.ts +2 -0
  89. package/dist/cjs/cli/commands/config-show.d.ts.map +1 -0
  90. package/dist/cjs/cli/commands/config-show.js +10 -0
  91. package/dist/cjs/cli/commands/config-show.js.map +1 -0
  92. package/dist/cjs/cli/commands/config.d.ts +6 -0
  93. package/dist/cjs/cli/commands/config.d.ts.map +1 -0
  94. package/dist/cjs/cli/commands/config.js +266 -0
  95. package/dist/cjs/cli/commands/config.js.map +1 -0
  96. package/dist/cjs/cli/commands/db-add.d.ts +16 -0
  97. package/dist/cjs/cli/commands/db-add.d.ts.map +1 -0
  98. package/dist/cjs/cli/commands/db-add.js +613 -0
  99. package/dist/cjs/cli/commands/db-add.js.map +1 -0
  100. package/dist/cjs/cli/commands/db-edit.d.ts +2 -0
  101. package/dist/cjs/cli/commands/db-edit.d.ts.map +1 -0
  102. package/dist/cjs/cli/commands/db-edit.js +388 -0
  103. package/dist/cjs/cli/commands/db-edit.js.map +1 -0
  104. package/dist/cjs/cli/commands/db-logs.d.ts +3 -0
  105. package/dist/cjs/cli/commands/db-logs.d.ts.map +1 -0
  106. package/dist/cjs/cli/commands/db-logs.js +67 -0
  107. package/dist/cjs/cli/commands/db-logs.js.map +1 -0
  108. package/dist/cjs/cli/commands/db-ls.d.ts +2 -0
  109. package/dist/cjs/cli/commands/db-ls.d.ts.map +1 -0
  110. package/dist/cjs/cli/commands/db-ls.js +118 -0
  111. package/dist/cjs/cli/commands/db-ls.js.map +1 -0
  112. package/dist/cjs/cli/commands/db-query.d.ts +121 -0
  113. package/dist/cjs/cli/commands/db-query.d.ts.map +1 -0
  114. package/dist/cjs/cli/commands/db-query.js +802 -0
  115. package/dist/cjs/cli/commands/db-query.js.map +1 -0
  116. package/dist/cjs/cli/commands/db-remove.d.ts +2 -0
  117. package/dist/cjs/cli/commands/db-remove.d.ts.map +1 -0
  118. package/dist/cjs/cli/commands/db-remove.js +51 -0
  119. package/dist/cjs/cli/commands/db-remove.js.map +1 -0
  120. package/dist/cjs/cli/commands/db-show.d.ts +2 -0
  121. package/dist/cjs/cli/commands/db-show.d.ts.map +1 -0
  122. package/dist/cjs/cli/commands/db-show.js +134 -0
  123. package/dist/cjs/cli/commands/db-show.js.map +1 -0
  124. package/dist/cjs/cli/commands/db-test.d.ts +3 -0
  125. package/dist/cjs/cli/commands/db-test.d.ts.map +1 -0
  126. package/dist/cjs/cli/commands/db-test.js +311 -0
  127. package/dist/cjs/cli/commands/db-test.js.map +1 -0
  128. package/dist/cjs/cli/commands/db.d.ts +11 -0
  129. package/dist/cjs/cli/commands/db.d.ts.map +1 -0
  130. package/dist/cjs/cli/commands/db.js +90 -0
  131. package/dist/cjs/cli/commands/db.js.map +1 -0
  132. package/dist/cjs/cli/commands/debug.d.ts +2 -0
  133. package/dist/cjs/cli/commands/debug.d.ts.map +1 -0
  134. package/dist/cjs/cli/commands/debug.js +241 -0
  135. package/dist/cjs/cli/commands/debug.js.map +1 -0
  136. package/dist/cjs/cli/commands/doctor.d.ts +5 -0
  137. package/dist/cjs/cli/commands/doctor.d.ts.map +1 -0
  138. package/dist/cjs/cli/commands/doctor.js +117 -0
  139. package/dist/cjs/cli/commands/doctor.js.map +1 -0
  140. package/dist/cjs/cli/commands/index.d.ts +10 -0
  141. package/dist/cjs/cli/commands/index.d.ts.map +1 -0
  142. package/dist/cjs/cli/commands/index.js +30 -0
  143. package/dist/cjs/cli/commands/index.js.map +1 -0
  144. package/dist/cjs/cli/commands/init.d.ts +2 -0
  145. package/dist/cjs/cli/commands/init.d.ts.map +1 -0
  146. package/dist/cjs/cli/commands/init.js +199 -0
  147. package/dist/cjs/cli/commands/init.js.map +1 -0
  148. package/dist/cjs/cli/commands/link.d.ts +5 -0
  149. package/dist/cjs/cli/commands/link.d.ts.map +1 -0
  150. package/dist/cjs/cli/commands/link.js +44 -0
  151. package/dist/cjs/cli/commands/link.js.map +1 -0
  152. package/dist/cjs/cli/commands/logs.d.ts +17 -0
  153. package/dist/cjs/cli/commands/logs.d.ts.map +1 -0
  154. package/dist/cjs/cli/commands/logs.js +314 -0
  155. package/dist/cjs/cli/commands/logs.js.map +1 -0
  156. package/dist/cjs/cli/commands/project-show.d.ts +2 -0
  157. package/dist/cjs/cli/commands/project-show.d.ts.map +1 -0
  158. package/dist/cjs/cli/commands/project-show.js +105 -0
  159. package/dist/cjs/cli/commands/project-show.js.map +1 -0
  160. package/dist/cjs/cli/commands/project.d.ts +3 -0
  161. package/dist/cjs/cli/commands/project.d.ts.map +1 -0
  162. package/dist/cjs/cli/commands/project.js +64 -0
  163. package/dist/cjs/cli/commands/project.js.map +1 -0
  164. package/dist/cjs/cli/commands/service.d.ts +123 -0
  165. package/dist/cjs/cli/commands/service.d.ts.map +1 -0
  166. package/dist/cjs/cli/commands/service.js +554 -0
  167. package/dist/cjs/cli/commands/service.js.map +1 -0
  168. package/dist/cjs/cli/commands/start.d.ts +6 -0
  169. package/dist/cjs/cli/commands/start.d.ts.map +1 -0
  170. package/dist/cjs/cli/commands/start.js +308 -0
  171. package/dist/cjs/cli/commands/start.js.map +1 -0
  172. package/dist/cjs/cli/commands/status.d.ts +2 -0
  173. package/dist/cjs/cli/commands/status.d.ts.map +1 -0
  174. package/dist/cjs/cli/commands/status.js +225 -0
  175. package/dist/cjs/cli/commands/status.js.map +1 -0
  176. package/dist/cjs/cli/commands/stop.d.ts +6 -0
  177. package/dist/cjs/cli/commands/stop.d.ts.map +1 -0
  178. package/dist/cjs/cli/commands/stop.js +99 -0
  179. package/dist/cjs/cli/commands/stop.js.map +1 -0
  180. package/dist/cjs/cli/daemon/error-tracker.d.ts +119 -0
  181. package/dist/cjs/cli/daemon/error-tracker.d.ts.map +1 -0
  182. package/dist/cjs/cli/daemon/error-tracker.js +500 -0
  183. package/dist/cjs/cli/daemon/error-tracker.js.map +1 -0
  184. package/dist/cjs/cli/daemon/fault-shutdown.d.ts +144 -0
  185. package/dist/cjs/cli/daemon/fault-shutdown.d.ts.map +1 -0
  186. package/dist/cjs/cli/daemon/fault-shutdown.js +312 -0
  187. package/dist/cjs/cli/daemon/fault-shutdown.js.map +1 -0
  188. package/dist/cjs/cli/daemon/index.d.ts +12 -0
  189. package/dist/cjs/cli/daemon/index.d.ts.map +1 -0
  190. package/dist/cjs/cli/daemon/index.js +23 -0
  191. package/dist/cjs/cli/daemon/index.js.map +1 -0
  192. package/dist/cjs/cli/daemon/pid-file.d.ts +13 -0
  193. package/dist/cjs/cli/daemon/pid-file.d.ts.map +1 -0
  194. package/dist/cjs/cli/daemon/pid-file.js +90 -0
  195. package/dist/cjs/cli/daemon/pid-file.js.map +1 -0
  196. package/dist/cjs/cli/daemon/readiness.d.ts +30 -0
  197. package/dist/cjs/cli/daemon/readiness.d.ts.map +1 -0
  198. package/dist/cjs/cli/daemon/readiness.js +74 -0
  199. package/dist/cjs/cli/daemon/readiness.js.map +1 -0
  200. package/dist/cjs/cli/daemon/runtime.d.ts +366 -0
  201. package/dist/cjs/cli/daemon/runtime.d.ts.map +1 -0
  202. package/dist/cjs/cli/daemon/runtime.js +1343 -0
  203. package/dist/cjs/cli/daemon/runtime.js.map +1 -0
  204. package/dist/cjs/cli/daemon/shutdown.d.ts +7 -0
  205. package/dist/cjs/cli/daemon/shutdown.d.ts.map +1 -0
  206. package/dist/cjs/cli/daemon/shutdown.js +66 -0
  207. package/dist/cjs/cli/daemon/shutdown.js.map +1 -0
  208. package/dist/cjs/cli/daemon/signal-handlers.d.ts +3 -0
  209. package/dist/cjs/cli/daemon/signal-handlers.d.ts.map +1 -0
  210. package/dist/cjs/cli/daemon/signal-handlers.js +27 -0
  211. package/dist/cjs/cli/daemon/signal-handlers.js.map +1 -0
  212. package/dist/cjs/cli/daemon/state.d.ts +157 -0
  213. package/dist/cjs/cli/daemon/state.d.ts.map +1 -0
  214. package/dist/cjs/cli/daemon/state.js +397 -0
  215. package/dist/cjs/cli/daemon/state.js.map +1 -0
  216. package/dist/cjs/cli/daemon/status-file.d.ts +139 -0
  217. package/dist/cjs/cli/daemon/status-file.d.ts.map +1 -0
  218. package/dist/cjs/cli/daemon/status-file.js +88 -0
  219. package/dist/cjs/cli/daemon/status-file.js.map +1 -0
  220. package/dist/cjs/cli/doctor/checks.d.ts +133 -0
  221. package/dist/cjs/cli/doctor/checks.d.ts.map +1 -0
  222. package/dist/cjs/cli/doctor/checks.js +677 -0
  223. package/dist/cjs/cli/doctor/checks.js.map +1 -0
  224. package/dist/cjs/cli/doctor/fixes.d.ts +9 -0
  225. package/dist/cjs/cli/doctor/fixes.d.ts.map +1 -0
  226. package/dist/cjs/cli/doctor/fixes.js +199 -0
  227. package/dist/cjs/cli/doctor/fixes.js.map +1 -0
  228. package/dist/cjs/cli/doctor/index.d.ts +7 -0
  229. package/dist/cjs/cli/doctor/index.d.ts.map +1 -0
  230. package/dist/cjs/cli/doctor/index.js +27 -0
  231. package/dist/cjs/cli/doctor/index.js.map +1 -0
  232. package/dist/cjs/cli/index.d.ts +3 -0
  233. package/dist/cjs/cli/index.d.ts.map +1 -0
  234. package/dist/cjs/cli/index.js +336 -0
  235. package/dist/cjs/cli/index.js.map +1 -0
  236. package/dist/cjs/cli/interactive.d.ts +8 -0
  237. package/dist/cjs/cli/interactive.d.ts.map +1 -0
  238. package/dist/cjs/cli/interactive.js +670 -0
  239. package/dist/cjs/cli/interactive.js.map +1 -0
  240. package/dist/cjs/cli/logs/format.d.ts +13 -0
  241. package/dist/cjs/cli/logs/format.d.ts.map +1 -0
  242. package/dist/cjs/cli/logs/format.js +178 -0
  243. package/dist/cjs/cli/logs/format.js.map +1 -0
  244. package/dist/cjs/cli/logs/index.d.ts +3 -0
  245. package/dist/cjs/cli/logs/index.d.ts.map +1 -0
  246. package/dist/cjs/cli/logs/index.js +13 -0
  247. package/dist/cjs/cli/logs/index.js.map +1 -0
  248. package/dist/cjs/cli/logs/viewer.d.ts +41 -0
  249. package/dist/cjs/cli/logs/viewer.d.ts.map +1 -0
  250. package/dist/cjs/cli/logs/viewer.js +417 -0
  251. package/dist/cjs/cli/logs/viewer.js.map +1 -0
  252. package/dist/cjs/cli/ops/operation-logger.d.ts +63 -0
  253. package/dist/cjs/cli/ops/operation-logger.d.ts.map +1 -0
  254. package/dist/cjs/cli/ops/operation-logger.js +183 -0
  255. package/dist/cjs/cli/ops/operation-logger.js.map +1 -0
  256. package/dist/cjs/cli/palette.d.ts +11 -0
  257. package/dist/cjs/cli/palette.d.ts.map +1 -0
  258. package/dist/cjs/cli/palette.js +243 -0
  259. package/dist/cjs/cli/palette.js.map +1 -0
  260. package/dist/cjs/cli/prompt.d.ts +186 -0
  261. package/dist/cjs/cli/prompt.d.ts.map +1 -0
  262. package/dist/cjs/cli/prompt.js +541 -0
  263. package/dist/cjs/cli/prompt.js.map +1 -0
  264. package/dist/cjs/cli/ui/box.d.ts +21 -0
  265. package/dist/cjs/cli/ui/box.d.ts.map +1 -0
  266. package/dist/cjs/cli/ui/box.js +72 -0
  267. package/dist/cjs/cli/ui/box.js.map +1 -0
  268. package/dist/cjs/cli/ui/clipboard.d.ts +6 -0
  269. package/dist/cjs/cli/ui/clipboard.d.ts.map +1 -0
  270. package/dist/cjs/cli/ui/clipboard.js +78 -0
  271. package/dist/cjs/cli/ui/clipboard.js.map +1 -0
  272. package/dist/cjs/cli/ui/colors.d.ts +57 -0
  273. package/dist/cjs/cli/ui/colors.d.ts.map +1 -0
  274. package/dist/cjs/cli/ui/colors.js +151 -0
  275. package/dist/cjs/cli/ui/colors.js.map +1 -0
  276. package/dist/cjs/cli/ui/index.d.ts +9 -0
  277. package/dist/cjs/cli/ui/index.d.ts.map +1 -0
  278. package/dist/cjs/cli/ui/index.js +55 -0
  279. package/dist/cjs/cli/ui/index.js.map +1 -0
  280. package/dist/cjs/cli/ui/spinner.d.ts +12 -0
  281. package/dist/cjs/cli/ui/spinner.d.ts.map +1 -0
  282. package/dist/cjs/cli/ui/spinner.js +82 -0
  283. package/dist/cjs/cli/ui/spinner.js.map +1 -0
  284. package/dist/cjs/cli/ui/symbols.d.ts +47 -0
  285. package/dist/cjs/cli/ui/symbols.d.ts.map +1 -0
  286. package/dist/cjs/cli/ui/symbols.js +112 -0
  287. package/dist/cjs/cli/ui/symbols.js.map +1 -0
  288. package/dist/cjs/cli/ui/table.d.ts +23 -0
  289. package/dist/cjs/cli/ui/table.d.ts.map +1 -0
  290. package/dist/cjs/cli/ui/table.js +160 -0
  291. package/dist/cjs/cli/ui/table.js.map +1 -0
  292. package/dist/cjs/cli/ui/terminal.d.ts +7 -0
  293. package/dist/cjs/cli/ui/terminal.d.ts.map +1 -0
  294. package/dist/cjs/cli/ui/terminal.js +40 -0
  295. package/dist/cjs/cli/ui/terminal.js.map +1 -0
  296. package/dist/cjs/config/atomic-write.d.ts +69 -0
  297. package/dist/cjs/config/atomic-write.d.ts.map +1 -0
  298. package/dist/cjs/config/atomic-write.js +289 -0
  299. package/dist/cjs/config/atomic-write.js.map +1 -0
  300. package/dist/cjs/config/db-config.d.ts +134 -0
  301. package/dist/cjs/config/db-config.d.ts.map +1 -0
  302. package/dist/cjs/config/db-config.js +594 -0
  303. package/dist/cjs/config/db-config.js.map +1 -0
  304. package/dist/cjs/config/machine-config.d.ts +85 -0
  305. package/dist/cjs/config/machine-config.d.ts.map +1 -0
  306. package/dist/cjs/config/machine-config.js +232 -0
  307. package/dist/cjs/config/machine-config.js.map +1 -0
  308. package/dist/cjs/config/paths.d.ts +64 -0
  309. package/dist/cjs/config/paths.d.ts.map +1 -0
  310. package/dist/cjs/config/paths.js +155 -0
  311. package/dist/cjs/config/paths.js.map +1 -0
  312. package/dist/cjs/config/schema.d.ts +72 -0
  313. package/dist/cjs/config/schema.d.ts.map +1 -0
  314. package/dist/cjs/config/schema.js +197 -0
  315. package/dist/cjs/config/schema.js.map +1 -0
  316. package/dist/cjs/config/token.d.ts +63 -0
  317. package/dist/cjs/config/token.d.ts.map +1 -0
  318. package/dist/cjs/config/token.js +146 -0
  319. package/dist/cjs/config/token.js.map +1 -0
  320. package/dist/cjs/execution/canceller.d.ts +41 -0
  321. package/dist/cjs/execution/canceller.d.ts.map +1 -0
  322. package/dist/cjs/execution/canceller.js +209 -0
  323. package/dist/cjs/execution/canceller.js.map +1 -0
  324. package/dist/cjs/execution/database-lookup.d.ts +56 -0
  325. package/dist/cjs/execution/database-lookup.d.ts.map +1 -0
  326. package/dist/cjs/execution/database-lookup.js +43 -0
  327. package/dist/cjs/execution/database-lookup.js.map +1 -0
  328. package/dist/cjs/execution/dispatcher.d.ts +181 -0
  329. package/dist/cjs/execution/dispatcher.d.ts.map +1 -0
  330. package/dist/cjs/execution/dispatcher.js +1296 -0
  331. package/dist/cjs/execution/dispatcher.js.map +1 -0
  332. package/dist/cjs/execution/function-effects.d.ts +209 -0
  333. package/dist/cjs/execution/function-effects.d.ts.map +1 -0
  334. package/dist/cjs/execution/function-effects.js +596 -0
  335. package/dist/cjs/execution/function-effects.js.map +1 -0
  336. package/dist/cjs/execution/introspection.d.ts +76 -0
  337. package/dist/cjs/execution/introspection.d.ts.map +1 -0
  338. package/dist/cjs/execution/introspection.js +448 -0
  339. package/dist/cjs/execution/introspection.js.map +1 -0
  340. package/dist/cjs/execution/migration-runner.d.ts +128 -0
  341. package/dist/cjs/execution/migration-runner.d.ts.map +1 -0
  342. package/dist/cjs/execution/migration-runner.js +798 -0
  343. package/dist/cjs/execution/migration-runner.js.map +1 -0
  344. package/dist/cjs/execution/non-tx-detector.d.ts +23 -0
  345. package/dist/cjs/execution/non-tx-detector.d.ts.map +1 -0
  346. package/dist/cjs/execution/non-tx-detector.js +218 -0
  347. package/dist/cjs/execution/non-tx-detector.js.map +1 -0
  348. package/dist/cjs/execution/pool.d.ts +229 -0
  349. package/dist/cjs/execution/pool.d.ts.map +1 -0
  350. package/dist/cjs/execution/pool.js +738 -0
  351. package/dist/cjs/execution/pool.js.map +1 -0
  352. package/dist/cjs/execution/query-runner.d.ts +88 -0
  353. package/dist/cjs/execution/query-runner.d.ts.map +1 -0
  354. package/dist/cjs/execution/query-runner.js +751 -0
  355. package/dist/cjs/execution/query-runner.js.map +1 -0
  356. package/dist/cjs/execution/rate-limiter.d.ts +120 -0
  357. package/dist/cjs/execution/rate-limiter.d.ts.map +1 -0
  358. package/dist/cjs/execution/rate-limiter.js +273 -0
  359. package/dist/cjs/execution/rate-limiter.js.map +1 -0
  360. package/dist/cjs/execution/search-path.d.ts +161 -0
  361. package/dist/cjs/execution/search-path.d.ts.map +1 -0
  362. package/dist/cjs/execution/search-path.js +279 -0
  363. package/dist/cjs/execution/search-path.js.map +1 -0
  364. package/dist/cjs/execution/sql-parser.d.ts +195 -0
  365. package/dist/cjs/execution/sql-parser.d.ts.map +1 -0
  366. package/dist/cjs/execution/sql-parser.js +704 -0
  367. package/dist/cjs/execution/sql-parser.js.map +1 -0
  368. package/dist/cjs/execution/statement-classifier.d.ts +103 -0
  369. package/dist/cjs/execution/statement-classifier.d.ts.map +1 -0
  370. package/dist/cjs/execution/statement-classifier.js +535 -0
  371. package/dist/cjs/execution/statement-classifier.js.map +1 -0
  372. package/dist/cjs/execution/types.d.ts +189 -0
  373. package/dist/cjs/execution/types.d.ts.map +1 -0
  374. package/dist/cjs/execution/types.js +28 -0
  375. package/dist/cjs/execution/types.js.map +1 -0
  376. package/dist/cjs/index.d.ts +34 -0
  377. package/dist/cjs/index.d.ts.map +1 -0
  378. package/dist/cjs/index.js +98 -0
  379. package/dist/cjs/index.js.map +1 -0
  380. package/dist/cjs/permissions/auto-upgrade.d.ts +40 -0
  381. package/dist/cjs/permissions/auto-upgrade.d.ts.map +1 -0
  382. package/dist/cjs/permissions/auto-upgrade.js +168 -0
  383. package/dist/cjs/permissions/auto-upgrade.js.map +1 -0
  384. package/dist/cjs/permissions/checker.d.ts +53 -0
  385. package/dist/cjs/permissions/checker.d.ts.map +1 -0
  386. package/dist/cjs/permissions/checker.js +326 -0
  387. package/dist/cjs/permissions/checker.js.map +1 -0
  388. package/dist/cjs/permissions/manual-approval.d.ts +213 -0
  389. package/dist/cjs/permissions/manual-approval.d.ts.map +1 -0
  390. package/dist/cjs/permissions/manual-approval.js +541 -0
  391. package/dist/cjs/permissions/manual-approval.js.map +1 -0
  392. package/dist/cjs/permissions/plan-registry.d.ts +274 -0
  393. package/dist/cjs/permissions/plan-registry.d.ts.map +1 -0
  394. package/dist/cjs/permissions/plan-registry.js +454 -0
  395. package/dist/cjs/permissions/plan-registry.js.map +1 -0
  396. package/dist/cjs/permissions/role-policy.d.ts +217 -0
  397. package/dist/cjs/permissions/role-policy.d.ts.map +1 -0
  398. package/dist/cjs/permissions/role-policy.js +584 -0
  399. package/dist/cjs/permissions/role-policy.js.map +1 -0
  400. package/dist/cjs/permissions/types.d.ts +126 -0
  401. package/dist/cjs/permissions/types.d.ts.map +1 -0
  402. package/dist/cjs/permissions/types.js +3 -0
  403. package/dist/cjs/permissions/types.js.map +1 -0
  404. package/dist/cjs/protocol/constants.d.ts +72 -0
  405. package/dist/cjs/protocol/constants.d.ts.map +1 -0
  406. package/dist/cjs/protocol/constants.js +107 -0
  407. package/dist/cjs/protocol/constants.js.map +1 -0
  408. package/dist/cjs/protocol/envelope.d.ts +165 -0
  409. package/dist/cjs/protocol/envelope.d.ts.map +1 -0
  410. package/dist/cjs/protocol/envelope.js +309 -0
  411. package/dist/cjs/protocol/envelope.js.map +1 -0
  412. package/dist/cjs/protocol/errors.d.ts +33 -0
  413. package/dist/cjs/protocol/errors.d.ts.map +1 -0
  414. package/dist/cjs/protocol/errors.js +391 -0
  415. package/dist/cjs/protocol/errors.js.map +1 -0
  416. package/dist/cjs/protocol/messages.d.ts +327 -0
  417. package/dist/cjs/protocol/messages.d.ts.map +1 -0
  418. package/dist/cjs/protocol/messages.js +3 -0
  419. package/dist/cjs/protocol/messages.js.map +1 -0
  420. package/dist/cjs/protocol/serialize.d.ts +26 -0
  421. package/dist/cjs/protocol/serialize.d.ts.map +1 -0
  422. package/dist/cjs/protocol/serialize.js +71 -0
  423. package/dist/cjs/protocol/serialize.js.map +1 -0
  424. package/dist/cjs/protocol/validate.d.ts +135 -0
  425. package/dist/cjs/protocol/validate.d.ts.map +1 -0
  426. package/dist/cjs/protocol/validate.js +852 -0
  427. package/dist/cjs/protocol/validate.js.map +1 -0
  428. package/dist/esm/audit/chain.d.ts +365 -0
  429. package/dist/esm/audit/chain.d.ts.map +1 -0
  430. package/dist/esm/audit/chain.js +895 -0
  431. package/dist/esm/audit/chain.js.map +1 -0
  432. package/dist/esm/audit/cloud-client.d.ts +142 -0
  433. package/dist/esm/audit/cloud-client.d.ts.map +1 -0
  434. package/dist/esm/audit/cloud-client.js +326 -0
  435. package/dist/esm/audit/cloud-client.js.map +1 -0
  436. package/dist/esm/audit/cloud-writer.d.ts +57 -0
  437. package/dist/esm/audit/cloud-writer.d.ts.map +1 -0
  438. package/dist/esm/audit/cloud-writer.js +91 -0
  439. package/dist/esm/audit/cloud-writer.js.map +1 -0
  440. package/dist/esm/audit/context.d.ts +51 -0
  441. package/dist/esm/audit/context.d.ts.map +1 -0
  442. package/dist/esm/audit/context.js +69 -0
  443. package/dist/esm/audit/context.js.map +1 -0
  444. package/dist/esm/audit/files.d.ts +111 -0
  445. package/dist/esm/audit/files.d.ts.map +1 -0
  446. package/dist/esm/audit/files.js +361 -0
  447. package/dist/esm/audit/files.js.map +1 -0
  448. package/dist/esm/audit/index.d.ts +9 -0
  449. package/dist/esm/audit/index.d.ts.map +1 -0
  450. package/dist/esm/audit/index.js +8 -0
  451. package/dist/esm/audit/index.js.map +1 -0
  452. package/dist/esm/audit/local-writer.d.ts +255 -0
  453. package/dist/esm/audit/local-writer.d.ts.map +1 -0
  454. package/dist/esm/audit/local-writer.js +785 -0
  455. package/dist/esm/audit/local-writer.js.map +1 -0
  456. package/dist/esm/audit/redact.d.ts +151 -0
  457. package/dist/esm/audit/redact.d.ts.map +1 -0
  458. package/dist/esm/audit/redact.js +506 -0
  459. package/dist/esm/audit/redact.js.map +1 -0
  460. package/dist/esm/audit/sanitize.d.ts +78 -0
  461. package/dist/esm/audit/sanitize.d.ts.map +1 -0
  462. package/dist/esm/audit/sanitize.js +307 -0
  463. package/dist/esm/audit/sanitize.js.map +1 -0
  464. package/dist/esm/audit/sink.d.ts +278 -0
  465. package/dist/esm/audit/sink.d.ts.map +1 -0
  466. package/dist/esm/audit/sink.js +782 -0
  467. package/dist/esm/audit/sink.js.map +1 -0
  468. package/dist/esm/audit/types.d.ts +226 -0
  469. package/dist/esm/audit/types.d.ts.map +1 -0
  470. package/dist/esm/audit/types.js +2 -0
  471. package/dist/esm/audit/types.js.map +1 -0
  472. package/dist/esm/audit/verify-cache.d.ts +127 -0
  473. package/dist/esm/audit/verify-cache.d.ts.map +1 -0
  474. package/dist/esm/audit/verify-cache.js +628 -0
  475. package/dist/esm/audit/verify-cache.js.map +1 -0
  476. package/dist/esm/channels/agent-session.d.ts +228 -0
  477. package/dist/esm/channels/agent-session.d.ts.map +1 -0
  478. package/dist/esm/channels/agent-session.js +566 -0
  479. package/dist/esm/channels/agent-session.js.map +1 -0
  480. package/dist/esm/channels/data-channel.d.ts +181 -0
  481. package/dist/esm/channels/data-channel.d.ts.map +1 -0
  482. package/dist/esm/channels/data-channel.js +567 -0
  483. package/dist/esm/channels/data-channel.js.map +1 -0
  484. package/dist/esm/channels/reconnect.d.ts +142 -0
  485. package/dist/esm/channels/reconnect.d.ts.map +1 -0
  486. package/dist/esm/channels/reconnect.js +234 -0
  487. package/dist/esm/channels/reconnect.js.map +1 -0
  488. package/dist/esm/channels/types.d.ts +112 -0
  489. package/dist/esm/channels/types.d.ts.map +1 -0
  490. package/dist/esm/channels/types.js +2 -0
  491. package/dist/esm/channels/types.js.map +1 -0
  492. package/dist/esm/channels/wake-channel.d.ts +232 -0
  493. package/dist/esm/channels/wake-channel.d.ts.map +1 -0
  494. package/dist/esm/channels/wake-channel.js +715 -0
  495. package/dist/esm/channels/wake-channel.js.map +1 -0
  496. package/dist/esm/cli/banner.d.ts +2 -0
  497. package/dist/esm/cli/banner.d.ts.map +1 -0
  498. package/dist/esm/cli/banner.js +114 -0
  499. package/dist/esm/cli/banner.js.map +1 -0
  500. package/dist/esm/cli/commands/agent.d.ts +30 -0
  501. package/dist/esm/cli/commands/agent.d.ts.map +1 -0
  502. package/dist/esm/cli/commands/agent.js +204 -0
  503. package/dist/esm/cli/commands/agent.js.map +1 -0
  504. package/dist/esm/cli/commands/audit-verify.d.ts +19 -0
  505. package/dist/esm/cli/commands/audit-verify.d.ts.map +1 -0
  506. package/dist/esm/cli/commands/audit-verify.js +345 -0
  507. package/dist/esm/cli/commands/audit-verify.js.map +1 -0
  508. package/dist/esm/cli/commands/clean.d.ts +23 -0
  509. package/dist/esm/cli/commands/clean.d.ts.map +1 -0
  510. package/dist/esm/cli/commands/clean.js +235 -0
  511. package/dist/esm/cli/commands/clean.js.map +1 -0
  512. package/dist/esm/cli/commands/config-show.d.ts +2 -0
  513. package/dist/esm/cli/commands/config-show.d.ts.map +1 -0
  514. package/dist/esm/cli/commands/config-show.js +2 -0
  515. package/dist/esm/cli/commands/config-show.js.map +1 -0
  516. package/dist/esm/cli/commands/config.d.ts +6 -0
  517. package/dist/esm/cli/commands/config.d.ts.map +1 -0
  518. package/dist/esm/cli/commands/config.js +259 -0
  519. package/dist/esm/cli/commands/config.js.map +1 -0
  520. package/dist/esm/cli/commands/db-add.d.ts +16 -0
  521. package/dist/esm/cli/commands/db-add.d.ts.map +1 -0
  522. package/dist/esm/cli/commands/db-add.js +576 -0
  523. package/dist/esm/cli/commands/db-add.js.map +1 -0
  524. package/dist/esm/cli/commands/db-edit.d.ts +2 -0
  525. package/dist/esm/cli/commands/db-edit.d.ts.map +1 -0
  526. package/dist/esm/cli/commands/db-edit.js +352 -0
  527. package/dist/esm/cli/commands/db-edit.js.map +1 -0
  528. package/dist/esm/cli/commands/db-logs.d.ts +3 -0
  529. package/dist/esm/cli/commands/db-logs.d.ts.map +1 -0
  530. package/dist/esm/cli/commands/db-logs.js +64 -0
  531. package/dist/esm/cli/commands/db-logs.js.map +1 -0
  532. package/dist/esm/cli/commands/db-ls.d.ts +2 -0
  533. package/dist/esm/cli/commands/db-ls.d.ts.map +1 -0
  534. package/dist/esm/cli/commands/db-ls.js +115 -0
  535. package/dist/esm/cli/commands/db-ls.js.map +1 -0
  536. package/dist/esm/cli/commands/db-query.d.ts +121 -0
  537. package/dist/esm/cli/commands/db-query.d.ts.map +1 -0
  538. package/dist/esm/cli/commands/db-query.js +754 -0
  539. package/dist/esm/cli/commands/db-query.js.map +1 -0
  540. package/dist/esm/cli/commands/db-remove.d.ts +2 -0
  541. package/dist/esm/cli/commands/db-remove.d.ts.map +1 -0
  542. package/dist/esm/cli/commands/db-remove.js +48 -0
  543. package/dist/esm/cli/commands/db-remove.js.map +1 -0
  544. package/dist/esm/cli/commands/db-show.d.ts +2 -0
  545. package/dist/esm/cli/commands/db-show.d.ts.map +1 -0
  546. package/dist/esm/cli/commands/db-show.js +131 -0
  547. package/dist/esm/cli/commands/db-show.js.map +1 -0
  548. package/dist/esm/cli/commands/db-test.d.ts +3 -0
  549. package/dist/esm/cli/commands/db-test.d.ts.map +1 -0
  550. package/dist/esm/cli/commands/db-test.js +307 -0
  551. package/dist/esm/cli/commands/db-test.js.map +1 -0
  552. package/dist/esm/cli/commands/db.d.ts +11 -0
  553. package/dist/esm/cli/commands/db.d.ts.map +1 -0
  554. package/dist/esm/cli/commands/db.js +76 -0
  555. package/dist/esm/cli/commands/db.js.map +1 -0
  556. package/dist/esm/cli/commands/debug.d.ts +2 -0
  557. package/dist/esm/cli/commands/debug.d.ts.map +1 -0
  558. package/dist/esm/cli/commands/debug.js +205 -0
  559. package/dist/esm/cli/commands/debug.js.map +1 -0
  560. package/dist/esm/cli/commands/doctor.d.ts +5 -0
  561. package/dist/esm/cli/commands/doctor.d.ts.map +1 -0
  562. package/dist/esm/cli/commands/doctor.js +114 -0
  563. package/dist/esm/cli/commands/doctor.js.map +1 -0
  564. package/dist/esm/cli/commands/index.d.ts +10 -0
  565. package/dist/esm/cli/commands/index.d.ts.map +1 -0
  566. package/dist/esm/cli/commands/index.js +10 -0
  567. package/dist/esm/cli/commands/index.js.map +1 -0
  568. package/dist/esm/cli/commands/init.d.ts +2 -0
  569. package/dist/esm/cli/commands/init.d.ts.map +1 -0
  570. package/dist/esm/cli/commands/init.js +163 -0
  571. package/dist/esm/cli/commands/init.js.map +1 -0
  572. package/dist/esm/cli/commands/link.d.ts +5 -0
  573. package/dist/esm/cli/commands/link.d.ts.map +1 -0
  574. package/dist/esm/cli/commands/link.js +41 -0
  575. package/dist/esm/cli/commands/link.js.map +1 -0
  576. package/dist/esm/cli/commands/logs.d.ts +17 -0
  577. package/dist/esm/cli/commands/logs.d.ts.map +1 -0
  578. package/dist/esm/cli/commands/logs.js +278 -0
  579. package/dist/esm/cli/commands/logs.js.map +1 -0
  580. package/dist/esm/cli/commands/project-show.d.ts +2 -0
  581. package/dist/esm/cli/commands/project-show.d.ts.map +1 -0
  582. package/dist/esm/cli/commands/project-show.js +69 -0
  583. package/dist/esm/cli/commands/project-show.js.map +1 -0
  584. package/dist/esm/cli/commands/project.d.ts +3 -0
  585. package/dist/esm/cli/commands/project.d.ts.map +1 -0
  586. package/dist/esm/cli/commands/project.js +60 -0
  587. package/dist/esm/cli/commands/project.js.map +1 -0
  588. package/dist/esm/cli/commands/service.d.ts +123 -0
  589. package/dist/esm/cli/commands/service.d.ts.map +1 -0
  590. package/dist/esm/cli/commands/service.js +505 -0
  591. package/dist/esm/cli/commands/service.js.map +1 -0
  592. package/dist/esm/cli/commands/start.d.ts +6 -0
  593. package/dist/esm/cli/commands/start.d.ts.map +1 -0
  594. package/dist/esm/cli/commands/start.js +272 -0
  595. package/dist/esm/cli/commands/start.js.map +1 -0
  596. package/dist/esm/cli/commands/status.d.ts +2 -0
  597. package/dist/esm/cli/commands/status.d.ts.map +1 -0
  598. package/dist/esm/cli/commands/status.js +222 -0
  599. package/dist/esm/cli/commands/status.js.map +1 -0
  600. package/dist/esm/cli/commands/stop.d.ts +6 -0
  601. package/dist/esm/cli/commands/stop.d.ts.map +1 -0
  602. package/dist/esm/cli/commands/stop.js +96 -0
  603. package/dist/esm/cli/commands/stop.js.map +1 -0
  604. package/dist/esm/cli/daemon/error-tracker.d.ts +119 -0
  605. package/dist/esm/cli/daemon/error-tracker.d.ts.map +1 -0
  606. package/dist/esm/cli/daemon/error-tracker.js +451 -0
  607. package/dist/esm/cli/daemon/error-tracker.js.map +1 -0
  608. package/dist/esm/cli/daemon/fault-shutdown.d.ts +144 -0
  609. package/dist/esm/cli/daemon/fault-shutdown.d.ts.map +1 -0
  610. package/dist/esm/cli/daemon/fault-shutdown.js +273 -0
  611. package/dist/esm/cli/daemon/fault-shutdown.js.map +1 -0
  612. package/dist/esm/cli/daemon/index.d.ts +12 -0
  613. package/dist/esm/cli/daemon/index.d.ts.map +1 -0
  614. package/dist/esm/cli/daemon/index.js +7 -0
  615. package/dist/esm/cli/daemon/index.js.map +1 -0
  616. package/dist/esm/cli/daemon/pid-file.d.ts +13 -0
  617. package/dist/esm/cli/daemon/pid-file.d.ts.map +1 -0
  618. package/dist/esm/cli/daemon/pid-file.js +51 -0
  619. package/dist/esm/cli/daemon/pid-file.js.map +1 -0
  620. package/dist/esm/cli/daemon/readiness.d.ts +30 -0
  621. package/dist/esm/cli/daemon/readiness.d.ts.map +1 -0
  622. package/dist/esm/cli/daemon/readiness.js +70 -0
  623. package/dist/esm/cli/daemon/readiness.js.map +1 -0
  624. package/dist/esm/cli/daemon/runtime.d.ts +366 -0
  625. package/dist/esm/cli/daemon/runtime.d.ts.map +1 -0
  626. package/dist/esm/cli/daemon/runtime.js +1284 -0
  627. package/dist/esm/cli/daemon/runtime.js.map +1 -0
  628. package/dist/esm/cli/daemon/shutdown.d.ts +7 -0
  629. package/dist/esm/cli/daemon/shutdown.d.ts.map +1 -0
  630. package/dist/esm/cli/daemon/shutdown.js +63 -0
  631. package/dist/esm/cli/daemon/shutdown.js.map +1 -0
  632. package/dist/esm/cli/daemon/signal-handlers.d.ts +3 -0
  633. package/dist/esm/cli/daemon/signal-handlers.d.ts.map +1 -0
  634. package/dist/esm/cli/daemon/signal-handlers.js +24 -0
  635. package/dist/esm/cli/daemon/signal-handlers.js.map +1 -0
  636. package/dist/esm/cli/daemon/state.d.ts +157 -0
  637. package/dist/esm/cli/daemon/state.d.ts.map +1 -0
  638. package/dist/esm/cli/daemon/state.js +352 -0
  639. package/dist/esm/cli/daemon/state.js.map +1 -0
  640. package/dist/esm/cli/daemon/status-file.d.ts +139 -0
  641. package/dist/esm/cli/daemon/status-file.d.ts.map +1 -0
  642. package/dist/esm/cli/daemon/status-file.js +50 -0
  643. package/dist/esm/cli/daemon/status-file.js.map +1 -0
  644. package/dist/esm/cli/doctor/checks.d.ts +133 -0
  645. package/dist/esm/cli/doctor/checks.d.ts.map +1 -0
  646. package/dist/esm/cli/doctor/checks.js +624 -0
  647. package/dist/esm/cli/doctor/checks.js.map +1 -0
  648. package/dist/esm/cli/doctor/fixes.d.ts +9 -0
  649. package/dist/esm/cli/doctor/fixes.d.ts.map +1 -0
  650. package/dist/esm/cli/doctor/fixes.js +163 -0
  651. package/dist/esm/cli/doctor/fixes.js.map +1 -0
  652. package/dist/esm/cli/doctor/index.d.ts +7 -0
  653. package/dist/esm/cli/doctor/index.d.ts.map +1 -0
  654. package/dist/esm/cli/doctor/index.js +5 -0
  655. package/dist/esm/cli/doctor/index.js.map +1 -0
  656. package/dist/esm/cli/index.d.ts +3 -0
  657. package/dist/esm/cli/index.d.ts.map +1 -0
  658. package/dist/esm/cli/index.js +333 -0
  659. package/dist/esm/cli/index.js.map +1 -0
  660. package/dist/esm/cli/interactive.d.ts +8 -0
  661. package/dist/esm/cli/interactive.d.ts.map +1 -0
  662. package/dist/esm/cli/interactive.js +665 -0
  663. package/dist/esm/cli/interactive.js.map +1 -0
  664. package/dist/esm/cli/logs/format.d.ts +13 -0
  665. package/dist/esm/cli/logs/format.d.ts.map +1 -0
  666. package/dist/esm/cli/logs/format.js +169 -0
  667. package/dist/esm/cli/logs/format.js.map +1 -0
  668. package/dist/esm/cli/logs/index.d.ts +3 -0
  669. package/dist/esm/cli/logs/index.d.ts.map +1 -0
  670. package/dist/esm/cli/logs/index.js +3 -0
  671. package/dist/esm/cli/logs/index.js.map +1 -0
  672. package/dist/esm/cli/logs/viewer.d.ts +41 -0
  673. package/dist/esm/cli/logs/viewer.d.ts.map +1 -0
  674. package/dist/esm/cli/logs/viewer.js +412 -0
  675. package/dist/esm/cli/logs/viewer.js.map +1 -0
  676. package/dist/esm/cli/ops/operation-logger.d.ts +63 -0
  677. package/dist/esm/cli/ops/operation-logger.d.ts.map +1 -0
  678. package/dist/esm/cli/ops/operation-logger.js +142 -0
  679. package/dist/esm/cli/ops/operation-logger.js.map +1 -0
  680. package/dist/esm/cli/palette.d.ts +11 -0
  681. package/dist/esm/cli/palette.d.ts.map +1 -0
  682. package/dist/esm/cli/palette.js +240 -0
  683. package/dist/esm/cli/palette.js.map +1 -0
  684. package/dist/esm/cli/prompt.d.ts +186 -0
  685. package/dist/esm/cli/prompt.d.ts.map +1 -0
  686. package/dist/esm/cli/prompt.js +483 -0
  687. package/dist/esm/cli/prompt.js.map +1 -0
  688. package/dist/esm/cli/ui/box.d.ts +21 -0
  689. package/dist/esm/cli/ui/box.d.ts.map +1 -0
  690. package/dist/esm/cli/ui/box.js +60 -0
  691. package/dist/esm/cli/ui/box.js.map +1 -0
  692. package/dist/esm/cli/ui/clipboard.d.ts +6 -0
  693. package/dist/esm/cli/ui/clipboard.d.ts.map +1 -0
  694. package/dist/esm/cli/ui/clipboard.js +42 -0
  695. package/dist/esm/cli/ui/clipboard.js.map +1 -0
  696. package/dist/esm/cli/ui/colors.d.ts +57 -0
  697. package/dist/esm/cli/ui/colors.d.ts.map +1 -0
  698. package/dist/esm/cli/ui/colors.js +126 -0
  699. package/dist/esm/cli/ui/colors.js.map +1 -0
  700. package/dist/esm/cli/ui/index.d.ts +9 -0
  701. package/dist/esm/cli/ui/index.d.ts.map +1 -0
  702. package/dist/esm/cli/ui/index.js +7 -0
  703. package/dist/esm/cli/ui/index.js.map +1 -0
  704. package/dist/esm/cli/ui/spinner.d.ts +12 -0
  705. package/dist/esm/cli/ui/spinner.d.ts.map +1 -0
  706. package/dist/esm/cli/ui/spinner.js +78 -0
  707. package/dist/esm/cli/ui/spinner.js.map +1 -0
  708. package/dist/esm/cli/ui/symbols.d.ts +47 -0
  709. package/dist/esm/cli/ui/symbols.d.ts.map +1 -0
  710. package/dist/esm/cli/ui/symbols.js +109 -0
  711. package/dist/esm/cli/ui/symbols.js.map +1 -0
  712. package/dist/esm/cli/ui/table.d.ts +23 -0
  713. package/dist/esm/cli/ui/table.d.ts.map +1 -0
  714. package/dist/esm/cli/ui/table.js +156 -0
  715. package/dist/esm/cli/ui/table.js.map +1 -0
  716. package/dist/esm/cli/ui/terminal.d.ts +7 -0
  717. package/dist/esm/cli/ui/terminal.d.ts.map +1 -0
  718. package/dist/esm/cli/ui/terminal.js +32 -0
  719. package/dist/esm/cli/ui/terminal.js.map +1 -0
  720. package/dist/esm/config/atomic-write.d.ts +69 -0
  721. package/dist/esm/config/atomic-write.d.ts.map +1 -0
  722. package/dist/esm/config/atomic-write.js +246 -0
  723. package/dist/esm/config/atomic-write.js.map +1 -0
  724. package/dist/esm/config/db-config.d.ts +134 -0
  725. package/dist/esm/config/db-config.d.ts.map +1 -0
  726. package/dist/esm/config/db-config.js +542 -0
  727. package/dist/esm/config/db-config.js.map +1 -0
  728. package/dist/esm/config/machine-config.d.ts +85 -0
  729. package/dist/esm/config/machine-config.d.ts.map +1 -0
  730. package/dist/esm/config/machine-config.js +190 -0
  731. package/dist/esm/config/machine-config.js.map +1 -0
  732. package/dist/esm/config/paths.d.ts +64 -0
  733. package/dist/esm/config/paths.d.ts.map +1 -0
  734. package/dist/esm/config/paths.js +108 -0
  735. package/dist/esm/config/paths.js.map +1 -0
  736. package/dist/esm/config/schema.d.ts +72 -0
  737. package/dist/esm/config/schema.d.ts.map +1 -0
  738. package/dist/esm/config/schema.js +180 -0
  739. package/dist/esm/config/schema.js.map +1 -0
  740. package/dist/esm/config/token.d.ts +63 -0
  741. package/dist/esm/config/token.d.ts.map +1 -0
  742. package/dist/esm/config/token.js +104 -0
  743. package/dist/esm/config/token.js.map +1 -0
  744. package/dist/esm/execution/canceller.d.ts +41 -0
  745. package/dist/esm/execution/canceller.d.ts.map +1 -0
  746. package/dist/esm/execution/canceller.js +205 -0
  747. package/dist/esm/execution/canceller.js.map +1 -0
  748. package/dist/esm/execution/database-lookup.d.ts +56 -0
  749. package/dist/esm/execution/database-lookup.d.ts.map +1 -0
  750. package/dist/esm/execution/database-lookup.js +38 -0
  751. package/dist/esm/execution/database-lookup.js.map +1 -0
  752. package/dist/esm/execution/dispatcher.d.ts +181 -0
  753. package/dist/esm/execution/dispatcher.d.ts.map +1 -0
  754. package/dist/esm/execution/dispatcher.js +1258 -0
  755. package/dist/esm/execution/dispatcher.js.map +1 -0
  756. package/dist/esm/execution/function-effects.d.ts +209 -0
  757. package/dist/esm/execution/function-effects.d.ts.map +1 -0
  758. package/dist/esm/execution/function-effects.js +586 -0
  759. package/dist/esm/execution/function-effects.js.map +1 -0
  760. package/dist/esm/execution/introspection.d.ts +76 -0
  761. package/dist/esm/execution/introspection.d.ts.map +1 -0
  762. package/dist/esm/execution/introspection.js +442 -0
  763. package/dist/esm/execution/introspection.js.map +1 -0
  764. package/dist/esm/execution/migration-runner.d.ts +128 -0
  765. package/dist/esm/execution/migration-runner.d.ts.map +1 -0
  766. package/dist/esm/execution/migration-runner.js +754 -0
  767. package/dist/esm/execution/migration-runner.js.map +1 -0
  768. package/dist/esm/execution/non-tx-detector.d.ts +23 -0
  769. package/dist/esm/execution/non-tx-detector.d.ts.map +1 -0
  770. package/dist/esm/execution/non-tx-detector.js +215 -0
  771. package/dist/esm/execution/non-tx-detector.js.map +1 -0
  772. package/dist/esm/execution/pool.d.ts +229 -0
  773. package/dist/esm/execution/pool.d.ts.map +1 -0
  774. package/dist/esm/execution/pool.js +685 -0
  775. package/dist/esm/execution/pool.js.map +1 -0
  776. package/dist/esm/execution/query-runner.d.ts +88 -0
  777. package/dist/esm/execution/query-runner.d.ts.map +1 -0
  778. package/dist/esm/execution/query-runner.js +743 -0
  779. package/dist/esm/execution/query-runner.js.map +1 -0
  780. package/dist/esm/execution/rate-limiter.d.ts +120 -0
  781. package/dist/esm/execution/rate-limiter.d.ts.map +1 -0
  782. package/dist/esm/execution/rate-limiter.js +269 -0
  783. package/dist/esm/execution/rate-limiter.js.map +1 -0
  784. package/dist/esm/execution/search-path.d.ts +161 -0
  785. package/dist/esm/execution/search-path.d.ts.map +1 -0
  786. package/dist/esm/execution/search-path.js +270 -0
  787. package/dist/esm/execution/search-path.js.map +1 -0
  788. package/dist/esm/execution/sql-parser.d.ts +195 -0
  789. package/dist/esm/execution/sql-parser.d.ts.map +1 -0
  790. package/dist/esm/execution/sql-parser.js +683 -0
  791. package/dist/esm/execution/sql-parser.js.map +1 -0
  792. package/dist/esm/execution/statement-classifier.d.ts +103 -0
  793. package/dist/esm/execution/statement-classifier.d.ts.map +1 -0
  794. package/dist/esm/execution/statement-classifier.js +526 -0
  795. package/dist/esm/execution/statement-classifier.js.map +1 -0
  796. package/dist/esm/execution/types.d.ts +189 -0
  797. package/dist/esm/execution/types.d.ts.map +1 -0
  798. package/dist/esm/execution/types.js +22 -0
  799. package/dist/esm/execution/types.js.map +1 -0
  800. package/dist/esm/index.d.ts +34 -0
  801. package/dist/esm/index.d.ts.map +1 -0
  802. package/dist/esm/index.js +38 -0
  803. package/dist/esm/index.js.map +1 -0
  804. package/dist/esm/permissions/auto-upgrade.d.ts +40 -0
  805. package/dist/esm/permissions/auto-upgrade.d.ts.map +1 -0
  806. package/dist/esm/permissions/auto-upgrade.js +164 -0
  807. package/dist/esm/permissions/auto-upgrade.js.map +1 -0
  808. package/dist/esm/permissions/checker.d.ts +53 -0
  809. package/dist/esm/permissions/checker.d.ts.map +1 -0
  810. package/dist/esm/permissions/checker.js +322 -0
  811. package/dist/esm/permissions/checker.js.map +1 -0
  812. package/dist/esm/permissions/manual-approval.d.ts +213 -0
  813. package/dist/esm/permissions/manual-approval.d.ts.map +1 -0
  814. package/dist/esm/permissions/manual-approval.js +503 -0
  815. package/dist/esm/permissions/manual-approval.js.map +1 -0
  816. package/dist/esm/permissions/plan-registry.d.ts +274 -0
  817. package/dist/esm/permissions/plan-registry.d.ts.map +1 -0
  818. package/dist/esm/permissions/plan-registry.js +450 -0
  819. package/dist/esm/permissions/plan-registry.js.map +1 -0
  820. package/dist/esm/permissions/role-policy.d.ts +217 -0
  821. package/dist/esm/permissions/role-policy.d.ts.map +1 -0
  822. package/dist/esm/permissions/role-policy.js +570 -0
  823. package/dist/esm/permissions/role-policy.js.map +1 -0
  824. package/dist/esm/permissions/types.d.ts +126 -0
  825. package/dist/esm/permissions/types.d.ts.map +1 -0
  826. package/dist/esm/permissions/types.js +2 -0
  827. package/dist/esm/permissions/types.js.map +1 -0
  828. package/dist/esm/protocol/constants.d.ts +72 -0
  829. package/dist/esm/protocol/constants.d.ts.map +1 -0
  830. package/dist/esm/protocol/constants.js +104 -0
  831. package/dist/esm/protocol/constants.js.map +1 -0
  832. package/dist/esm/protocol/envelope.d.ts +165 -0
  833. package/dist/esm/protocol/envelope.d.ts.map +1 -0
  834. package/dist/esm/protocol/envelope.js +263 -0
  835. package/dist/esm/protocol/envelope.js.map +1 -0
  836. package/dist/esm/protocol/errors.d.ts +33 -0
  837. package/dist/esm/protocol/errors.d.ts.map +1 -0
  838. package/dist/esm/protocol/errors.js +384 -0
  839. package/dist/esm/protocol/errors.js.map +1 -0
  840. package/dist/esm/protocol/messages.d.ts +327 -0
  841. package/dist/esm/protocol/messages.d.ts.map +1 -0
  842. package/dist/esm/protocol/messages.js +2 -0
  843. package/dist/esm/protocol/messages.js.map +1 -0
  844. package/dist/esm/protocol/serialize.d.ts +26 -0
  845. package/dist/esm/protocol/serialize.d.ts.map +1 -0
  846. package/dist/esm/protocol/serialize.js +63 -0
  847. package/dist/esm/protocol/serialize.js.map +1 -0
  848. package/dist/esm/protocol/validate.d.ts +135 -0
  849. package/dist/esm/protocol/validate.d.ts.map +1 -0
  850. package/dist/esm/protocol/validate.js +830 -0
  851. package/dist/esm/protocol/validate.js.map +1 -0
  852. package/dist/types/audit/chain.d.ts +365 -0
  853. package/dist/types/audit/chain.d.ts.map +1 -0
  854. package/dist/types/audit/cloud-client.d.ts +142 -0
  855. package/dist/types/audit/cloud-client.d.ts.map +1 -0
  856. package/dist/types/audit/cloud-writer.d.ts +57 -0
  857. package/dist/types/audit/cloud-writer.d.ts.map +1 -0
  858. package/dist/types/audit/context.d.ts +51 -0
  859. package/dist/types/audit/context.d.ts.map +1 -0
  860. package/dist/types/audit/files.d.ts +111 -0
  861. package/dist/types/audit/files.d.ts.map +1 -0
  862. package/dist/types/audit/index.d.ts +9 -0
  863. package/dist/types/audit/index.d.ts.map +1 -0
  864. package/dist/types/audit/local-writer.d.ts +255 -0
  865. package/dist/types/audit/local-writer.d.ts.map +1 -0
  866. package/dist/types/audit/redact.d.ts +151 -0
  867. package/dist/types/audit/redact.d.ts.map +1 -0
  868. package/dist/types/audit/sanitize.d.ts +78 -0
  869. package/dist/types/audit/sanitize.d.ts.map +1 -0
  870. package/dist/types/audit/sink.d.ts +278 -0
  871. package/dist/types/audit/sink.d.ts.map +1 -0
  872. package/dist/types/audit/types.d.ts +226 -0
  873. package/dist/types/audit/types.d.ts.map +1 -0
  874. package/dist/types/audit/verify-cache.d.ts +127 -0
  875. package/dist/types/audit/verify-cache.d.ts.map +1 -0
  876. package/dist/types/channels/agent-session.d.ts +228 -0
  877. package/dist/types/channels/agent-session.d.ts.map +1 -0
  878. package/dist/types/channels/data-channel.d.ts +181 -0
  879. package/dist/types/channels/data-channel.d.ts.map +1 -0
  880. package/dist/types/channels/reconnect.d.ts +142 -0
  881. package/dist/types/channels/reconnect.d.ts.map +1 -0
  882. package/dist/types/channels/types.d.ts +112 -0
  883. package/dist/types/channels/types.d.ts.map +1 -0
  884. package/dist/types/channels/wake-channel.d.ts +232 -0
  885. package/dist/types/channels/wake-channel.d.ts.map +1 -0
  886. package/dist/types/cli/banner.d.ts +2 -0
  887. package/dist/types/cli/banner.d.ts.map +1 -0
  888. package/dist/types/cli/commands/agent.d.ts +30 -0
  889. package/dist/types/cli/commands/agent.d.ts.map +1 -0
  890. package/dist/types/cli/commands/audit-verify.d.ts +19 -0
  891. package/dist/types/cli/commands/audit-verify.d.ts.map +1 -0
  892. package/dist/types/cli/commands/clean.d.ts +23 -0
  893. package/dist/types/cli/commands/clean.d.ts.map +1 -0
  894. package/dist/types/cli/commands/config-show.d.ts +2 -0
  895. package/dist/types/cli/commands/config-show.d.ts.map +1 -0
  896. package/dist/types/cli/commands/config.d.ts +6 -0
  897. package/dist/types/cli/commands/config.d.ts.map +1 -0
  898. package/dist/types/cli/commands/db-add.d.ts +16 -0
  899. package/dist/types/cli/commands/db-add.d.ts.map +1 -0
  900. package/dist/types/cli/commands/db-edit.d.ts +2 -0
  901. package/dist/types/cli/commands/db-edit.d.ts.map +1 -0
  902. package/dist/types/cli/commands/db-logs.d.ts +3 -0
  903. package/dist/types/cli/commands/db-logs.d.ts.map +1 -0
  904. package/dist/types/cli/commands/db-ls.d.ts +2 -0
  905. package/dist/types/cli/commands/db-ls.d.ts.map +1 -0
  906. package/dist/types/cli/commands/db-query.d.ts +121 -0
  907. package/dist/types/cli/commands/db-query.d.ts.map +1 -0
  908. package/dist/types/cli/commands/db-remove.d.ts +2 -0
  909. package/dist/types/cli/commands/db-remove.d.ts.map +1 -0
  910. package/dist/types/cli/commands/db-show.d.ts +2 -0
  911. package/dist/types/cli/commands/db-show.d.ts.map +1 -0
  912. package/dist/types/cli/commands/db-test.d.ts +3 -0
  913. package/dist/types/cli/commands/db-test.d.ts.map +1 -0
  914. package/dist/types/cli/commands/db.d.ts +11 -0
  915. package/dist/types/cli/commands/db.d.ts.map +1 -0
  916. package/dist/types/cli/commands/debug.d.ts +2 -0
  917. package/dist/types/cli/commands/debug.d.ts.map +1 -0
  918. package/dist/types/cli/commands/doctor.d.ts +5 -0
  919. package/dist/types/cli/commands/doctor.d.ts.map +1 -0
  920. package/dist/types/cli/commands/index.d.ts +10 -0
  921. package/dist/types/cli/commands/index.d.ts.map +1 -0
  922. package/dist/types/cli/commands/init.d.ts +2 -0
  923. package/dist/types/cli/commands/init.d.ts.map +1 -0
  924. package/dist/types/cli/commands/link.d.ts +5 -0
  925. package/dist/types/cli/commands/link.d.ts.map +1 -0
  926. package/dist/types/cli/commands/logs.d.ts +17 -0
  927. package/dist/types/cli/commands/logs.d.ts.map +1 -0
  928. package/dist/types/cli/commands/project-show.d.ts +2 -0
  929. package/dist/types/cli/commands/project-show.d.ts.map +1 -0
  930. package/dist/types/cli/commands/project.d.ts +3 -0
  931. package/dist/types/cli/commands/project.d.ts.map +1 -0
  932. package/dist/types/cli/commands/service.d.ts +123 -0
  933. package/dist/types/cli/commands/service.d.ts.map +1 -0
  934. package/dist/types/cli/commands/start.d.ts +6 -0
  935. package/dist/types/cli/commands/start.d.ts.map +1 -0
  936. package/dist/types/cli/commands/status.d.ts +2 -0
  937. package/dist/types/cli/commands/status.d.ts.map +1 -0
  938. package/dist/types/cli/commands/stop.d.ts +6 -0
  939. package/dist/types/cli/commands/stop.d.ts.map +1 -0
  940. package/dist/types/cli/daemon/error-tracker.d.ts +119 -0
  941. package/dist/types/cli/daemon/error-tracker.d.ts.map +1 -0
  942. package/dist/types/cli/daemon/fault-shutdown.d.ts +144 -0
  943. package/dist/types/cli/daemon/fault-shutdown.d.ts.map +1 -0
  944. package/dist/types/cli/daemon/index.d.ts +12 -0
  945. package/dist/types/cli/daemon/index.d.ts.map +1 -0
  946. package/dist/types/cli/daemon/pid-file.d.ts +13 -0
  947. package/dist/types/cli/daemon/pid-file.d.ts.map +1 -0
  948. package/dist/types/cli/daemon/readiness.d.ts +30 -0
  949. package/dist/types/cli/daemon/readiness.d.ts.map +1 -0
  950. package/dist/types/cli/daemon/runtime.d.ts +366 -0
  951. package/dist/types/cli/daemon/runtime.d.ts.map +1 -0
  952. package/dist/types/cli/daemon/shutdown.d.ts +7 -0
  953. package/dist/types/cli/daemon/shutdown.d.ts.map +1 -0
  954. package/dist/types/cli/daemon/signal-handlers.d.ts +3 -0
  955. package/dist/types/cli/daemon/signal-handlers.d.ts.map +1 -0
  956. package/dist/types/cli/daemon/state.d.ts +157 -0
  957. package/dist/types/cli/daemon/state.d.ts.map +1 -0
  958. package/dist/types/cli/daemon/status-file.d.ts +139 -0
  959. package/dist/types/cli/daemon/status-file.d.ts.map +1 -0
  960. package/dist/types/cli/doctor/checks.d.ts +133 -0
  961. package/dist/types/cli/doctor/checks.d.ts.map +1 -0
  962. package/dist/types/cli/doctor/fixes.d.ts +9 -0
  963. package/dist/types/cli/doctor/fixes.d.ts.map +1 -0
  964. package/dist/types/cli/doctor/index.d.ts +7 -0
  965. package/dist/types/cli/doctor/index.d.ts.map +1 -0
  966. package/dist/types/cli/index.d.ts +3 -0
  967. package/dist/types/cli/index.d.ts.map +1 -0
  968. package/dist/types/cli/interactive.d.ts +8 -0
  969. package/dist/types/cli/interactive.d.ts.map +1 -0
  970. package/dist/types/cli/logs/format.d.ts +13 -0
  971. package/dist/types/cli/logs/format.d.ts.map +1 -0
  972. package/dist/types/cli/logs/index.d.ts +3 -0
  973. package/dist/types/cli/logs/index.d.ts.map +1 -0
  974. package/dist/types/cli/logs/viewer.d.ts +41 -0
  975. package/dist/types/cli/logs/viewer.d.ts.map +1 -0
  976. package/dist/types/cli/ops/operation-logger.d.ts +63 -0
  977. package/dist/types/cli/ops/operation-logger.d.ts.map +1 -0
  978. package/dist/types/cli/palette.d.ts +11 -0
  979. package/dist/types/cli/palette.d.ts.map +1 -0
  980. package/dist/types/cli/prompt.d.ts +186 -0
  981. package/dist/types/cli/prompt.d.ts.map +1 -0
  982. package/dist/types/cli/ui/box.d.ts +21 -0
  983. package/dist/types/cli/ui/box.d.ts.map +1 -0
  984. package/dist/types/cli/ui/clipboard.d.ts +6 -0
  985. package/dist/types/cli/ui/clipboard.d.ts.map +1 -0
  986. package/dist/types/cli/ui/colors.d.ts +57 -0
  987. package/dist/types/cli/ui/colors.d.ts.map +1 -0
  988. package/dist/types/cli/ui/index.d.ts +9 -0
  989. package/dist/types/cli/ui/index.d.ts.map +1 -0
  990. package/dist/types/cli/ui/spinner.d.ts +12 -0
  991. package/dist/types/cli/ui/spinner.d.ts.map +1 -0
  992. package/dist/types/cli/ui/symbols.d.ts +47 -0
  993. package/dist/types/cli/ui/symbols.d.ts.map +1 -0
  994. package/dist/types/cli/ui/table.d.ts +23 -0
  995. package/dist/types/cli/ui/table.d.ts.map +1 -0
  996. package/dist/types/cli/ui/terminal.d.ts +7 -0
  997. package/dist/types/cli/ui/terminal.d.ts.map +1 -0
  998. package/dist/types/config/atomic-write.d.ts +69 -0
  999. package/dist/types/config/atomic-write.d.ts.map +1 -0
  1000. package/dist/types/config/db-config.d.ts +134 -0
  1001. package/dist/types/config/db-config.d.ts.map +1 -0
  1002. package/dist/types/config/machine-config.d.ts +85 -0
  1003. package/dist/types/config/machine-config.d.ts.map +1 -0
  1004. package/dist/types/config/paths.d.ts +64 -0
  1005. package/dist/types/config/paths.d.ts.map +1 -0
  1006. package/dist/types/config/schema.d.ts +72 -0
  1007. package/dist/types/config/schema.d.ts.map +1 -0
  1008. package/dist/types/config/token.d.ts +63 -0
  1009. package/dist/types/config/token.d.ts.map +1 -0
  1010. package/dist/types/execution/canceller.d.ts +41 -0
  1011. package/dist/types/execution/canceller.d.ts.map +1 -0
  1012. package/dist/types/execution/database-lookup.d.ts +56 -0
  1013. package/dist/types/execution/database-lookup.d.ts.map +1 -0
  1014. package/dist/types/execution/dispatcher.d.ts +181 -0
  1015. package/dist/types/execution/dispatcher.d.ts.map +1 -0
  1016. package/dist/types/execution/function-effects.d.ts +209 -0
  1017. package/dist/types/execution/function-effects.d.ts.map +1 -0
  1018. package/dist/types/execution/introspection.d.ts +76 -0
  1019. package/dist/types/execution/introspection.d.ts.map +1 -0
  1020. package/dist/types/execution/migration-runner.d.ts +128 -0
  1021. package/dist/types/execution/migration-runner.d.ts.map +1 -0
  1022. package/dist/types/execution/non-tx-detector.d.ts +23 -0
  1023. package/dist/types/execution/non-tx-detector.d.ts.map +1 -0
  1024. package/dist/types/execution/pool.d.ts +229 -0
  1025. package/dist/types/execution/pool.d.ts.map +1 -0
  1026. package/dist/types/execution/query-runner.d.ts +88 -0
  1027. package/dist/types/execution/query-runner.d.ts.map +1 -0
  1028. package/dist/types/execution/rate-limiter.d.ts +120 -0
  1029. package/dist/types/execution/rate-limiter.d.ts.map +1 -0
  1030. package/dist/types/execution/search-path.d.ts +161 -0
  1031. package/dist/types/execution/search-path.d.ts.map +1 -0
  1032. package/dist/types/execution/sql-parser.d.ts +195 -0
  1033. package/dist/types/execution/sql-parser.d.ts.map +1 -0
  1034. package/dist/types/execution/statement-classifier.d.ts +103 -0
  1035. package/dist/types/execution/statement-classifier.d.ts.map +1 -0
  1036. package/dist/types/execution/types.d.ts +189 -0
  1037. package/dist/types/execution/types.d.ts.map +1 -0
  1038. package/dist/types/index.d.ts +34 -0
  1039. package/dist/types/index.d.ts.map +1 -0
  1040. package/dist/types/permissions/auto-upgrade.d.ts +40 -0
  1041. package/dist/types/permissions/auto-upgrade.d.ts.map +1 -0
  1042. package/dist/types/permissions/checker.d.ts +53 -0
  1043. package/dist/types/permissions/checker.d.ts.map +1 -0
  1044. package/dist/types/permissions/manual-approval.d.ts +213 -0
  1045. package/dist/types/permissions/manual-approval.d.ts.map +1 -0
  1046. package/dist/types/permissions/plan-registry.d.ts +274 -0
  1047. package/dist/types/permissions/plan-registry.d.ts.map +1 -0
  1048. package/dist/types/permissions/role-policy.d.ts +217 -0
  1049. package/dist/types/permissions/role-policy.d.ts.map +1 -0
  1050. package/dist/types/permissions/types.d.ts +126 -0
  1051. package/dist/types/permissions/types.d.ts.map +1 -0
  1052. package/dist/types/protocol/constants.d.ts +72 -0
  1053. package/dist/types/protocol/constants.d.ts.map +1 -0
  1054. package/dist/types/protocol/envelope.d.ts +165 -0
  1055. package/dist/types/protocol/envelope.d.ts.map +1 -0
  1056. package/dist/types/protocol/errors.d.ts +33 -0
  1057. package/dist/types/protocol/errors.d.ts.map +1 -0
  1058. package/dist/types/protocol/messages.d.ts +327 -0
  1059. package/dist/types/protocol/messages.d.ts.map +1 -0
  1060. package/dist/types/protocol/serialize.d.ts +26 -0
  1061. package/dist/types/protocol/serialize.d.ts.map +1 -0
  1062. package/dist/types/protocol/validate.d.ts +135 -0
  1063. package/dist/types/protocol/validate.d.ts.map +1 -0
  1064. package/package.json +116 -4
  1065. package/scripts/generate-systemd-service.mjs +117 -0
@@ -0,0 +1,852 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.InboundEnvelopeGuard = void 0;
4
+ exports.validateEnvelope = validateEnvelope;
5
+ exports.validatePayload = validatePayload;
6
+ exports.validateMessage = validateMessage;
7
+ exports.validatePingPayload = validatePingPayload;
8
+ exports.validateIntrospectPayload = validateIntrospectPayload;
9
+ exports.countSqlStatements = countSqlStatements;
10
+ exports.assertSingleStatement = assertSingleStatement;
11
+ exports.validateQueryPayload = validateQueryPayload;
12
+ exports.validateStreamQueryPayload = validateStreamQueryPayload;
13
+ exports.validateStreamChunkPayload = validateStreamChunkPayload;
14
+ exports.validateStreamEndPayload = validateStreamEndPayload;
15
+ exports.validateMigrationRunPayload = validateMigrationRunPayload;
16
+ exports.validateMigrationResultPayload = validateMigrationResultPayload;
17
+ exports.validateCancelPayload = validateCancelPayload;
18
+ exports.validateCancelResultPayload = validateCancelResultPayload;
19
+ exports.validateResponsePayload = validateResponsePayload;
20
+ exports.validateErrorPayload = validateErrorPayload;
21
+ exports.validateEventPayload = validateEventPayload;
22
+ /* eslint-disable @typescript-eslint/no-explicit-any */
23
+ const envelope_1 = require("./envelope");
24
+ const serialize_1 = require("./serialize");
25
+ const errors_1 = require("./errors");
26
+ const constants_1 = require("./constants");
27
+ /**
28
+ * Validate the envelope structure (not the payload).
29
+ * Checks: required fields present, types correct, v=1, type is valid enum,
30
+ * project/user/db_alias/id non-empty, ts is a number.
31
+ * Throws ProtocolError on any failure.
32
+ *
33
+ * Shape only. This proves the envelope is well-formed, never that its contents
34
+ * are authentic — use `InboundEnvelopeGuard` for that.
35
+ */
36
+ function validateEnvelope(msg) {
37
+ if (typeof msg !== 'object' || msg === null) {
38
+ throw new serialize_1.ProtocolError('invalid_message', 'Message is not a JSON object');
39
+ }
40
+ const m = msg;
41
+ if (m.v === undefined) {
42
+ throw new serialize_1.ProtocolError('invalid_message', 'Version field "v" is missing');
43
+ }
44
+ if (typeof m.v !== 'number') {
45
+ throw new serialize_1.ProtocolError('invalid_message', 'Version field "v" must be a number');
46
+ }
47
+ if (m.v !== constants_1.PROTOCOL_VERSION) {
48
+ throw new serialize_1.ProtocolError('protocol_version_mismatch', `Protocol version mismatch. Expected ${constants_1.PROTOCOL_VERSION}, got ${m.v}`);
49
+ }
50
+ if (typeof m.id !== 'string' || m.id.length === 0 || m.id.length > constants_1.LIMITS.ID_MAX_LENGTH) {
51
+ throw new serialize_1.ProtocolError('invalid_message', `Field "id" must be a non-empty string under ${constants_1.LIMITS.ID_MAX_LENGTH} characters`);
52
+ }
53
+ if (typeof m.type !== 'string' || !envelope_1.MESSAGE_TYPES.includes(m.type)) {
54
+ throw new serialize_1.ProtocolError('unknown_message_type', `Unknown or invalid message type: ${m.type}`);
55
+ }
56
+ if (typeof m.project !== 'string' || m.project.length === 0 || m.project.length > constants_1.LIMITS.PROJECT_MAX_LENGTH) {
57
+ throw new serialize_1.ProtocolError('invalid_message', `Field "project" must be a non-empty string under ${constants_1.LIMITS.PROJECT_MAX_LENGTH} characters`);
58
+ }
59
+ if (typeof m.user !== 'object' || m.user === null) {
60
+ throw new serialize_1.ProtocolError('invalid_message', 'Field "user" must be a valid JSON object');
61
+ }
62
+ const u = m.user;
63
+ if (typeof u.id !== 'string' || u.id.length === 0) {
64
+ throw new serialize_1.ProtocolError('invalid_message', 'Field "user.id" must be a non-empty string');
65
+ }
66
+ if (!(0, envelope_1.isRole)(u.role)) {
67
+ throw new serialize_1.ProtocolError('invalid_message', `Field "user.role" must be one of: ${envelope_1.ROLES.join(', ')}`);
68
+ }
69
+ if (u.actor_id !== undefined && typeof u.actor_id !== 'string') {
70
+ throw new serialize_1.ProtocolError('invalid_message', 'Field "user.actor_id" must be a string when present');
71
+ }
72
+ if (typeof m.db_alias !== 'string' || m.db_alias.length === 0 || m.db_alias.length > constants_1.LIMITS.ALIAS_MAX_LENGTH) {
73
+ throw new serialize_1.ProtocolError('invalid_message', `Field "db_alias" must be a non-empty string under ${constants_1.LIMITS.ALIAS_MAX_LENGTH} characters`);
74
+ }
75
+ if (typeof m.ts !== 'number' || isNaN(m.ts) || m.ts <= 0) {
76
+ throw new serialize_1.ProtocolError('invalid_message', 'Field "ts" must be a positive number timestamp');
77
+ }
78
+ if (m.nonce !== undefined && !(0, envelope_1.isValidEnvelopeNonce)(m.nonce)) {
79
+ throw new serialize_1.ProtocolError('invalid_message', 'Field "nonce" must be a 16-64 character [A-Za-z0-9_-] string when present');
80
+ }
81
+ if (m.mac !== undefined && (typeof m.mac !== 'string' || !/^[0-9a-f]{64}$/.test(m.mac))) {
82
+ throw new serialize_1.ProtocolError('invalid_message', 'Field "mac" must be 64 lowercase hex characters when present');
83
+ }
84
+ }
85
+ /**
86
+ * Fails an envelope closed on: a bad or missing MAC, a stale `ts`, a replayed
87
+ * `nonce`, a `user.role` that was not negotiated for this session, or a
88
+ * `user.role` above this installation's local ceiling.
89
+ *
90
+ * Every rejection throws a fatal ProtocolError; there is no "log and proceed"
91
+ * path. Call `verify` on the *inbound* path only, before the message reaches the
92
+ * dispatcher — after this point `msg.user.role` may be treated as an
93
+ * authenticated fact rather than a claim.
94
+ */
95
+ class InboundEnvelopeGuard {
96
+ opts;
97
+ /** nonce -> `ts` at first sight. Insertion-ordered so eviction is FIFO. */
98
+ seenNonces = new Map();
99
+ constructor(options) {
100
+ this.opts = {
101
+ macKey: options.macKey,
102
+ allowedRoles: Object.freeze([...options.allowedRoles]),
103
+ requireMac: options.requireMac ?? constants_1.ENVELOPE_MAC_REQUIRED_DEFAULT,
104
+ maxClockSkewMs: options.maxClockSkewMs ?? constants_1.DEFAULTS.ENVELOPE_MAX_CLOCK_SKEW_MS,
105
+ // An invalid configured ceiling falls back to the default rather than
106
+ // failing open to `admin`.
107
+ maxNegotiableRole: (0, envelope_1.isRole)(options.maxNegotiableRole)
108
+ ? options.maxNegotiableRole
109
+ : envelope_1.ENVELOPE_MAX_NEGOTIABLE_ROLE_DEFAULT,
110
+ replayCacheEntries: options.replayCacheEntries ?? constants_1.LIMITS.REPLAY_CACHE_MAX_ENTRIES,
111
+ now: options.now ?? Date.now,
112
+ };
113
+ }
114
+ /** Roles this guard will accept. */
115
+ getAllowedRoles() {
116
+ return [...this.opts.allowedRoles];
117
+ }
118
+ /**
119
+ * The local role ceiling this guard enforces, whatever it was handed as
120
+ * `allowedRoles`. Reported so an operator surface (`sw-agent status`,
121
+ * `doctor`) can state the effective bound rather than the negotiated set.
122
+ */
123
+ getMaxNegotiableRole() {
124
+ return this.opts.maxNegotiableRole;
125
+ }
126
+ /** Number of nonces currently held in the replay cache. */
127
+ replayCacheSize() {
128
+ return this.seenNonces.size;
129
+ }
130
+ /** Forget every seen nonce. Call when the session ends or rolls over. */
131
+ reset() {
132
+ this.seenNonces.clear();
133
+ }
134
+ /**
135
+ * Authenticate and admit one inbound envelope, or throw. Checks run cheapest
136
+ * and most decisive first: nonce shape, freshness, MAC, replay, negotiated role.
137
+ */
138
+ verify(msg) {
139
+ if (!(0, envelope_1.isValidEnvelopeNonce)(msg.nonce)) {
140
+ throw new serialize_1.ProtocolError('invalid_message', 'Envelope "nonce" is missing or malformed; a fresh anti-replay nonce is required');
141
+ }
142
+ const now = this.opts.now();
143
+ if (Math.abs(now - msg.ts) > this.opts.maxClockSkewMs) {
144
+ throw new serialize_1.ProtocolError('invalid_message', `Envelope "ts" is outside the ${this.opts.maxClockSkewMs}ms freshness window`);
145
+ }
146
+ if (msg.mac === undefined) {
147
+ if (this.opts.requireMac) {
148
+ throw new serialize_1.ProtocolError('invalid_message', 'Envelope "mac" is required but missing');
149
+ }
150
+ }
151
+ else if (!(0, envelope_1.verifyEnvelopeMac)(this.opts.macKey, msg)) {
152
+ throw new serialize_1.ProtocolError('invalid_message', 'Envelope "mac" does not verify for this session');
153
+ }
154
+ if (this.seenNonces.has(msg.nonce)) {
155
+ throw new serialize_1.ProtocolError('invalid_message', 'Envelope "nonce" has already been used in this session');
156
+ }
157
+ this.seenNonces.set(msg.nonce, now);
158
+ while (this.seenNonces.size > this.opts.replayCacheEntries) {
159
+ const oldest = this.seenNonces.keys().next();
160
+ if (oldest.done) {
161
+ break;
162
+ }
163
+ this.seenNonces.delete(oldest.value);
164
+ }
165
+ if (!this.opts.allowedRoles.includes(msg.user.role)) {
166
+ throw new serialize_1.ProtocolError('permission_denied', `Field "user.role" (${msg.user.role}) was not negotiated for this session`);
167
+ }
168
+ // Hard local ceiling, applied AFTER the negotiated-set check.
169
+ //
170
+ // The negotiated set is the relay's claim about what the session may do;
171
+ // this is the operator's bound on how much of that claim to believe. A
172
+ // valid MAC proves the frame came from the session, not that the session was
173
+ // allowed to assert `admin`. Without this check the declared
174
+ // `security.max_negotiable_role` had no reader at all, and a compromised
175
+ // relay had the full capability set on every configured database.
176
+ //
177
+ // `ROLES` is ordered most- to least-privileged, so a role is within the
178
+ // ceiling when its index is greater than or equal to the ceiling's.
179
+ if (envelope_1.ROLES.indexOf(msg.user.role) < envelope_1.ROLES.indexOf(this.opts.maxNegotiableRole)) {
180
+ throw new serialize_1.ProtocolError('role_above_ceiling', `Field "user.role" (${msg.user.role}) is above this installation's negotiated-role ceiling ` +
181
+ `("${this.opts.maxNegotiableRole}"); raise security.max_negotiable_role in the machine ` +
182
+ 'config if that is intended');
183
+ }
184
+ }
185
+ }
186
+ exports.InboundEnvelopeGuard = InboundEnvelopeGuard;
187
+ /**
188
+ * Validate the payload for a given message type.
189
+ * Each type has its own validator.
190
+ * Throws ProtocolError with code 'payload_invalid' on failure.
191
+ */
192
+ function validatePayload(type, payload) {
193
+ if (typeof payload !== 'object' || payload === null) {
194
+ throw new serialize_1.ProtocolError('payload_invalid', 'Payload must be a JSON object');
195
+ }
196
+ switch (type) {
197
+ case 'ping':
198
+ validatePingPayload(payload);
199
+ break;
200
+ case 'introspect':
201
+ validateIntrospectPayload(payload);
202
+ break;
203
+ case 'query':
204
+ validateQueryPayload(payload);
205
+ break;
206
+ case 'stream_query':
207
+ validateStreamQueryPayload(payload);
208
+ break;
209
+ case 'stream_chunk':
210
+ validateStreamChunkPayload(payload);
211
+ break;
212
+ case 'stream_end':
213
+ validateStreamEndPayload(payload);
214
+ break;
215
+ case 'migration_run':
216
+ validateMigrationRunPayload(payload);
217
+ break;
218
+ case 'cancel':
219
+ validateCancelPayload(payload);
220
+ break;
221
+ case 'response':
222
+ validateResponsePayload(payload);
223
+ break;
224
+ case 'error':
225
+ validateErrorPayload(payload);
226
+ break;
227
+ case 'event':
228
+ validateEventPayload(payload);
229
+ break;
230
+ default:
231
+ throw new serialize_1.ProtocolError('unknown_message_type', `Cannot validate payload for unknown type: ${type}`);
232
+ }
233
+ }
234
+ /**
235
+ * Convenience: validate envelope + payload together.
236
+ */
237
+ function validateMessage(msg) {
238
+ validateEnvelope(msg);
239
+ validatePayload(msg.type, msg.payload);
240
+ }
241
+ function validatePingPayload(p) {
242
+ const data = p;
243
+ if (typeof data.sent_at !== 'number' || data.sent_at <= 0 || isNaN(data.sent_at)) {
244
+ throw new serialize_1.ProtocolError('payload_invalid', 'Field "sent_at" must be a positive number timestamp');
245
+ }
246
+ if (data.sender_id !== undefined && typeof data.sender_id !== 'string') {
247
+ throw new serialize_1.ProtocolError('payload_invalid', 'Field "sender_id" must be a string if provided');
248
+ }
249
+ }
250
+ function validateIntrospectPayload(p) {
251
+ const data = p;
252
+ const boolKeys = ['include_views', 'include_indexes', 'include_triggers', 'include_partitions', 'include_extensions'];
253
+ for (const key of boolKeys) {
254
+ if (typeof data[key] !== 'boolean') {
255
+ throw new serialize_1.ProtocolError('payload_invalid', `Field "${key}" must be a boolean`);
256
+ }
257
+ }
258
+ if (data.pg_version_hint !== null && typeof data.pg_version_hint !== 'string') {
259
+ throw new serialize_1.ProtocolError('payload_invalid', 'Field "pg_version_hint" must be a string or null');
260
+ }
261
+ }
262
+ /* ------------------------------------------------------------------ */
263
+ /* SQL statement counting (cheap protocol-level early rejection) */
264
+ /* ------------------------------------------------------------------ */
265
+ const IDENT_CHAR = /[A-Za-z0-9_$\u0080-\uffff]/;
266
+ const QUOTE_PREFIXES = new Set(['b', 'B', 'e', 'E', 'x', 'X', 'n', 'N']);
267
+ /**
268
+ * Count the top-level statements in a SQL string.
269
+ *
270
+ * This is a lexical scan, not a parser, and it is written to be sound over the
271
+ * constructs an attacker would use to hide a `;` from it:
272
+ *
273
+ * - `'...'` string constants, where `''` is an escaped quote;
274
+ * - `E'...'` / `B'...'` / `X'...'` / `N'...'` prefixed constants;
275
+ * - `U&'...'` unicode constants, whose escapes are backslash sequences, plus
276
+ * the optional trailing `UESCAPE '<char>'` clause;
277
+ * - dollar quoting, both `$$...$$` and `$tag$...$tag$`;
278
+ * - `"..."` quoted identifiers, where `""` is an escaped double quote;
279
+ * - `-- ...` line comments and nestable slash-star block comments;
280
+ *
281
+ * `\` is treated as an escape inside `E'...'` / `U&'...'` only, matching
282
+ * PostgreSQL's default `standard_conforming_strings = on`. If that GUC is ever
283
+ * turned off on a pooled connection the plain-string rule below would differ
284
+ * from the server's; pinning it at acquire time (Group 1 owns `pool.ts`) closes
285
+ * that, and `src/execution/sql-parser.ts` (Group 2) is the authoritative check.
286
+ *
287
+ * Unterminated literals, dollar quotes, identifiers and block comments throw
288
+ * rather than guessing: a construct this scan cannot account for is one it
289
+ * cannot rule a hidden `;` out of.
290
+ */
291
+ function countSqlStatements(sql, field = 'sql') {
292
+ const len = sql.length;
293
+ let i = 0;
294
+ let statements = 0;
295
+ let segmentHasContent = false;
296
+ while (i < len) {
297
+ const c = sql[i];
298
+ if (c === '-' && sql[i + 1] === '-') {
299
+ while (i < len && sql[i] !== '\n') {
300
+ i++;
301
+ }
302
+ continue;
303
+ }
304
+ if (c === '/' && sql[i + 1] === '*') {
305
+ let depth = 1;
306
+ i += 2;
307
+ while (i < len && depth > 0) {
308
+ if (sql[i] === '/' && sql[i + 1] === '*') {
309
+ depth++;
310
+ i += 2;
311
+ }
312
+ else if (sql[i] === '*' && sql[i + 1] === '/') {
313
+ depth--;
314
+ i += 2;
315
+ }
316
+ else {
317
+ i++;
318
+ }
319
+ }
320
+ if (depth > 0) {
321
+ throw new serialize_1.ProtocolError('unparseable_statement', `Field "${field}" contains an unterminated block comment`);
322
+ }
323
+ continue;
324
+ }
325
+ if (c === '$') {
326
+ const tagEnd = readDollarQuoteTag(sql, i);
327
+ if (tagEnd > 0) {
328
+ const opening = sql.slice(i, tagEnd);
329
+ const closing = sql.indexOf(opening, tagEnd);
330
+ if (closing === -1) {
331
+ throw new serialize_1.ProtocolError('unparseable_statement', `Field "${field}" contains an unterminated dollar-quoted string`);
332
+ }
333
+ i = closing + opening.length;
334
+ }
335
+ else {
336
+ i++;
337
+ }
338
+ segmentHasContent = true;
339
+ continue;
340
+ }
341
+ if (c === "'") {
342
+ i = scanQuoted(sql, i + 1, "'", false, field);
343
+ segmentHasContent = true;
344
+ continue;
345
+ }
346
+ if (c === '"') {
347
+ i = scanQuoted(sql, i + 1, '"', false, field);
348
+ segmentHasContent = true;
349
+ continue;
350
+ }
351
+ const prefixEnd = scanStringPrefix(sql, i);
352
+ if (prefixEnd > 0) {
353
+ const prefix = sql.slice(i, prefixEnd).toLowerCase();
354
+ if (prefix === 'u&') {
355
+ const end = scanQuoted(sql, prefixEnd + 1, "'", true, field);
356
+ i = end;
357
+ if (sql.slice(i, i + 8).toUpperCase() === 'UESCAPE') {
358
+ let j = i + 8;
359
+ while (j < len && /\s/.test(sql[j])) {
360
+ j++;
361
+ }
362
+ if (sql[j] === "'") {
363
+ i = scanQuoted(sql, j + 1, "'", true, field);
364
+ }
365
+ }
366
+ }
367
+ else {
368
+ i = scanQuoted(sql, prefixEnd + 1, "'", true, field);
369
+ }
370
+ segmentHasContent = true;
371
+ continue;
372
+ }
373
+ if (c === ';') {
374
+ if (segmentHasContent) {
375
+ statements++;
376
+ }
377
+ segmentHasContent = false;
378
+ i++;
379
+ continue;
380
+ }
381
+ if (!/\s/.test(c)) {
382
+ segmentHasContent = true;
383
+ }
384
+ i++;
385
+ }
386
+ if (segmentHasContent) {
387
+ statements++;
388
+ }
389
+ return statements;
390
+ }
391
+ /**
392
+ * Reject anything that is not exactly one statement. A single trailing `;`
393
+ * terminator is allowed (`SELECT 1;` is one statement); a second statement is
394
+ * not, whatever separates them.
395
+ */
396
+ function assertSingleStatement(sql, field = 'sql') {
397
+ const count = countSqlStatements(sql, field);
398
+ if (count > constants_1.LIMITS.MAX_STATEMENT_COUNT_PER_QUERY) {
399
+ throw new serialize_1.ProtocolError('multiple_statements', `Field "${field}" must contain at most ${constants_1.LIMITS.MAX_STATEMENT_COUNT_PER_QUERY} statement, found ${count}`);
400
+ }
401
+ }
402
+ /** End index (exclusive) of a `$tag$` / `$$` delimiter starting at `start`, or -1. */
403
+ function readDollarQuoteTag(sql, start) {
404
+ let i = start + 1;
405
+ if (i < sql.length && sql[i] === '$') {
406
+ return i + 1;
407
+ }
408
+ if (i >= sql.length || !/[A-Za-z_]/.test(sql[i])) {
409
+ return -1;
410
+ }
411
+ i++;
412
+ while (i < sql.length && /[A-Za-z0-9_]/.test(sql[i])) {
413
+ i++;
414
+ }
415
+ return i < sql.length && sql[i] === '$' ? i + 1 : -1;
416
+ }
417
+ /**
418
+ * End index (exclusive) of the quoted run that starts just after `from`, where
419
+ * the run ends at `close` or `close` doubled up. `backslashEscapes` selects the
420
+ * `E'...'` / `U&'...'` rule, where a backslash escapes the next character.
421
+ */
422
+ function scanQuoted(sql, from, close, backslashEscapes, field) {
423
+ const len = sql.length;
424
+ const label = close === "'" ? 'string literal' : 'quoted identifier';
425
+ let i = from;
426
+ while (i < len) {
427
+ const c = sql[i];
428
+ if (backslashEscapes && c === '\\') {
429
+ i += 2;
430
+ continue;
431
+ }
432
+ if (c === close) {
433
+ if (sql[i + 1] === close) {
434
+ i += 2;
435
+ continue;
436
+ }
437
+ return i + 1;
438
+ }
439
+ i++;
440
+ }
441
+ throw new serialize_1.ProtocolError('unparseable_statement', `Field "${field}" contains an unterminated ${label}`);
442
+ }
443
+ /**
444
+ * End index (exclusive) of a string-constant prefix at `start`
445
+ * (`E`, `X`, `B`, `N`, or the two characters of `U&`), or -1 when `start` does
446
+ * not begin one. A prefix is only a prefix when it is not preceded by an
447
+ * identifier character, so `someE'x'` stays a bare word.
448
+ */
449
+ function scanStringPrefix(sql, start) {
450
+ const c = sql[start];
451
+ if (start > 0 && IDENT_CHAR.test(sql[start - 1])) {
452
+ return -1;
453
+ }
454
+ if (c === 'u' || c === 'U') {
455
+ return sql[start + 1] === '&' ? start + 2 : -1;
456
+ }
457
+ return QUOTE_PREFIXES.has(c) && sql[start + 1] === "'" ? start + 1 : -1;
458
+ }
459
+ function validateQueryPayload(p) {
460
+ const data = p;
461
+ if (typeof data.sql !== 'string' || data.sql.trim().length === 0) {
462
+ throw new serialize_1.ProtocolError('payload_invalid', 'Field "sql" must be a non-empty string');
463
+ }
464
+ if (Buffer.byteLength(data.sql, 'utf8') > constants_1.LIMITS.MAX_STATEMENT_LENGTH) {
465
+ throw new serialize_1.ProtocolError('payload_invalid', `SQL statement length exceeds limit of ${constants_1.LIMITS.MAX_STATEMENT_LENGTH} bytes`);
466
+ }
467
+ assertSingleStatement(data.sql, 'sql');
468
+ if (data.params !== undefined && !Array.isArray(data.params)) {
469
+ throw new serialize_1.ProtocolError('payload_invalid', 'Field "params" must be an array');
470
+ }
471
+ if (data.timeout_ms !== undefined && (typeof data.timeout_ms !== 'number' || data.timeout_ms < 0 || isNaN(data.timeout_ms))) {
472
+ throw new serialize_1.ProtocolError('payload_invalid', 'Field "timeout_ms" must be a non-negative number');
473
+ }
474
+ // `migration` is not a legal intent for a query/stream_query message. It used
475
+ // to be accepted here and, on the permission side, that one value skipped the
476
+ // "claimed intent must match the classified statement" comparison entirely.
477
+ const validIntents = ['read', 'write', 'ddl'];
478
+ if (typeof data.intent !== 'string' || !validIntents.includes(data.intent)) {
479
+ throw new serialize_1.ProtocolError('payload_invalid', 'Field "intent" must be read, write, or ddl');
480
+ }
481
+ if (data.plan_id !== undefined && typeof data.plan_id !== 'string') {
482
+ throw new serialize_1.ProtocolError('payload_invalid', 'Field "plan_id" must be a string');
483
+ }
484
+ }
485
+ function validateStreamQueryPayload(p) {
486
+ // Validate standard Query fields first
487
+ validateQueryPayload(p);
488
+ const data = p;
489
+ if (data.cursor !== undefined) {
490
+ if (typeof data.cursor !== 'object' || data.cursor === null) {
491
+ throw new serialize_1.ProtocolError('payload_invalid', 'Field "cursor" must be an object');
492
+ }
493
+ const c = data.cursor;
494
+ if (typeof c.column !== 'string' || c.column.length === 0) {
495
+ throw new serialize_1.ProtocolError('payload_invalid', 'Field "cursor.column" must be a non-empty string');
496
+ }
497
+ if (c.last_value === undefined) {
498
+ throw new serialize_1.ProtocolError('payload_invalid', 'Field "cursor.last_value" must be defined');
499
+ }
500
+ if (c.direction !== 'forward' && c.direction !== 'backward') {
501
+ throw new serialize_1.ProtocolError('payload_invalid', 'Field "cursor.direction" must be forward or backward');
502
+ }
503
+ }
504
+ if (data.page_size !== undefined) {
505
+ if (typeof data.page_size !== 'number' || !Number.isInteger(data.page_size) || data.page_size < 1 || data.page_size > 1000) {
506
+ throw new serialize_1.ProtocolError('payload_invalid', 'Field "page_size" must be an integer between 1 and 1000');
507
+ }
508
+ }
509
+ }
510
+ function validateStreamChunkPayload(p) {
511
+ const data = p;
512
+ if (typeof data.request_id !== 'string' || data.request_id.length === 0) {
513
+ throw new serialize_1.ProtocolError('payload_invalid', 'Field "request_id" must be a non-empty string');
514
+ }
515
+ if (data.columns !== null && !Array.isArray(data.columns)) {
516
+ throw new serialize_1.ProtocolError('payload_invalid', 'Field "columns" must be an array or null');
517
+ }
518
+ if (data.columns !== null && Array.isArray(data.columns)) {
519
+ data.columns.forEach((col, idx) => {
520
+ if (typeof col !== 'object' || col === null) {
521
+ throw new serialize_1.ProtocolError('payload_invalid', `Field "columns[${idx}]" must be a JSON object`);
522
+ }
523
+ if (typeof col.name !== 'string' || col.name.length === 0) {
524
+ throw new serialize_1.ProtocolError('payload_invalid', `Field "columns[${idx}].name" must be a non-empty string`);
525
+ }
526
+ if (typeof col.type_oid !== 'number') {
527
+ throw new serialize_1.ProtocolError('payload_invalid', `Field "columns[${idx}].type_oid" must be a number`);
528
+ }
529
+ if (typeof col.type_name !== 'string' || col.type_name.length === 0) {
530
+ throw new serialize_1.ProtocolError('payload_invalid', `Field "columns[${idx}].type_name" must be a non-empty string`);
531
+ }
532
+ });
533
+ }
534
+ if (!Array.isArray(data.rows)) {
535
+ throw new serialize_1.ProtocolError('payload_invalid', 'Field "rows" must be an array');
536
+ }
537
+ data.rows.forEach((row, idx) => {
538
+ if (!Array.isArray(row)) {
539
+ throw new serialize_1.ProtocolError('payload_invalid', `Field "rows[${idx}]" must be an array`);
540
+ }
541
+ });
542
+ if (typeof data.chunk_index !== 'number' || data.chunk_index < 0 || !Number.isInteger(data.chunk_index)) {
543
+ throw new serialize_1.ProtocolError('payload_invalid', 'Field "chunk_index" must be a non-negative integer');
544
+ }
545
+ if (typeof data.has_truncated_cells !== 'boolean') {
546
+ throw new serialize_1.ProtocolError('payload_invalid', 'Field "has_truncated_cells" must be a boolean');
547
+ }
548
+ }
549
+ function validateStreamEndPayload(p) {
550
+ const data = p;
551
+ if (typeof data.request_id !== 'string' || data.request_id.length === 0) {
552
+ throw new serialize_1.ProtocolError('payload_invalid', 'Field "request_id" must be a non-empty string');
553
+ }
554
+ const nonNegInts = ['total_rows', 'ms', 'chunk_count'];
555
+ for (const key of nonNegInts) {
556
+ if (typeof data[key] !== 'number' || data[key] < 0 || !Number.isInteger(data[key])) {
557
+ throw new serialize_1.ProtocolError('payload_invalid', `Field "${key}" must be a non-negative integer`);
558
+ }
559
+ }
560
+ if (typeof data.truncated !== 'boolean') {
561
+ throw new serialize_1.ProtocolError('payload_invalid', 'Field "truncated" must be a boolean');
562
+ }
563
+ }
564
+ function validateMigrationRunPayload(p) {
565
+ const data = p;
566
+ if (typeof data.plan_id !== 'string' || data.plan_id.length === 0) {
567
+ throw new serialize_1.ProtocolError('payload_invalid', 'Field "plan_id" must be a non-empty string');
568
+ }
569
+ if (!Array.isArray(data.statements) || data.statements.length === 0 || data.statements.length > constants_1.LIMITS.MAX_STATEMENT_COUNT_PER_MIGRATION) {
570
+ throw new serialize_1.ProtocolError('payload_invalid', `Field "statements" must be a non-empty array under ${constants_1.LIMITS.MAX_STATEMENT_COUNT_PER_MIGRATION} items`);
571
+ }
572
+ data.statements.forEach((stmt, idx) => {
573
+ if (typeof stmt !== 'string' || stmt.trim().length === 0) {
574
+ throw new serialize_1.ProtocolError('payload_invalid', `Field "statements[${idx}]" must be a non-empty string`);
575
+ }
576
+ if (Buffer.byteLength(stmt, 'utf8') > constants_1.LIMITS.MAX_STATEMENT_LENGTH) {
577
+ throw new serialize_1.ProtocolError('payload_invalid', `Field "statements[${idx}]" length exceeds limit of ${constants_1.LIMITS.MAX_STATEMENT_LENGTH} bytes`);
578
+ }
579
+ });
580
+ if (data.strategy !== 'single_tx' && data.strategy !== 'per_statement') {
581
+ throw new serialize_1.ProtocolError('payload_invalid', 'Field "strategy" must be single_tx or per_statement');
582
+ }
583
+ if (data.timeout_ms !== undefined && (typeof data.timeout_ms !== 'number' || data.timeout_ms <= 0 || isNaN(data.timeout_ms))) {
584
+ throw new serialize_1.ProtocolError('payload_invalid', 'Field "timeout_ms" must be a positive number');
585
+ }
586
+ if (typeof data.dry_run !== 'boolean') {
587
+ throw new serialize_1.ProtocolError('payload_invalid', 'Field "dry_run" must be a boolean');
588
+ }
589
+ }
590
+ function validateMigrationResultPayload(p) {
591
+ const data = p;
592
+ if (typeof data.plan_id !== 'string' || data.plan_id.length === 0) {
593
+ throw new serialize_1.ProtocolError('payload_invalid', 'Field "plan_id" must be a non-empty string');
594
+ }
595
+ const validStatuses = ['committed', 'rolled_back', 'partial', 'dry_run_ok', 'dry_run_failed'];
596
+ if (typeof data.status !== 'string' || !validStatuses.includes(data.status)) {
597
+ throw new serialize_1.ProtocolError('payload_invalid', 'Field "status" must be committed, rolled_back, partial, dry_run_ok, or dry_run_failed');
598
+ }
599
+ if (!Array.isArray(data.statements)) {
600
+ throw new serialize_1.ProtocolError('payload_invalid', 'Field "statements" must be an array');
601
+ }
602
+ const validStmtStatuses = ['pending', 'running', 'success', 'failed', 'rolled_back'];
603
+ data.statements.forEach((stmt, idx) => {
604
+ if (typeof stmt !== 'object' || stmt === null) {
605
+ throw new serialize_1.ProtocolError('payload_invalid', `Field "statements[${idx}]" must be an object`);
606
+ }
607
+ if (typeof stmt.index !== 'number' || stmt.index < 0 || !Number.isInteger(stmt.index)) {
608
+ throw new serialize_1.ProtocolError('payload_invalid', `Field "statements[${idx}].index" must be a non-negative integer`);
609
+ }
610
+ if (typeof stmt.status !== 'string' || !validStmtStatuses.includes(stmt.status)) {
611
+ throw new serialize_1.ProtocolError('payload_invalid', `Field "statements[${idx}].status" must be pending, running, success, failed, or rolled_back`);
612
+ }
613
+ if (typeof stmt.ms !== 'number' || stmt.ms < 0 || isNaN(stmt.ms)) {
614
+ throw new serialize_1.ProtocolError('payload_invalid', `Field "statements[${idx}].ms" must be a non-negative number`);
615
+ }
616
+ if (typeof stmt.rows_affected !== 'number' || !Number.isInteger(stmt.rows_affected)) {
617
+ throw new serialize_1.ProtocolError('payload_invalid', `Field "statements[${idx}].rows_affected" must be an integer`);
618
+ }
619
+ if (stmt.error !== undefined && typeof stmt.error !== 'string') {
620
+ throw new serialize_1.ProtocolError('payload_invalid', `Field "statements[${idx}].error" must be a string`);
621
+ }
622
+ if (stmt.pg_error_code !== undefined && typeof stmt.pg_error_code !== 'string') {
623
+ throw new serialize_1.ProtocolError('payload_invalid', `Field "statements[${idx}].pg_error_code" must be a string`);
624
+ }
625
+ });
626
+ if (typeof data.total_ms !== 'number' || data.total_ms < 0 || isNaN(data.total_ms)) {
627
+ throw new serialize_1.ProtocolError('payload_invalid', 'Field "total_ms" must be a non-negative number');
628
+ }
629
+ if (!Array.isArray(data.rolled_back_indices)) {
630
+ throw new serialize_1.ProtocolError('payload_invalid', 'Field "rolled_back_indices" must be an array');
631
+ }
632
+ data.rolled_back_indices.forEach((val, idx) => {
633
+ if (typeof val !== 'number' || !Number.isInteger(val)) {
634
+ throw new serialize_1.ProtocolError('payload_invalid', `Field "rolled_back_indices[${idx}]" must be an integer`);
635
+ }
636
+ });
637
+ if (data.strategy_changed_from !== undefined && data.strategy_changed_from !== 'single_tx' && data.strategy_changed_from !== 'per_statement') {
638
+ throw new serialize_1.ProtocolError('payload_invalid', 'Field "strategy_changed_from" must be single_tx or per_statement');
639
+ }
640
+ }
641
+ function validateCancelPayload(p) {
642
+ const data = p;
643
+ if (typeof data.target_id !== 'string' || data.target_id.length === 0) {
644
+ throw new serialize_1.ProtocolError('payload_invalid', 'Field "target_id" must be a non-empty string');
645
+ }
646
+ const validReasons = ['user_cancelled', 'timeout', 'session_closed', 'orphaned'];
647
+ if (typeof data.reason !== 'string' || !validReasons.includes(data.reason)) {
648
+ throw new serialize_1.ProtocolError('payload_invalid', 'Field "reason" must be user_cancelled, timeout, session_closed, or orphaned');
649
+ }
650
+ }
651
+ function validateCancelResultPayload(p) {
652
+ const data = p;
653
+ if (typeof data.target_id !== 'string' || data.target_id.length === 0) {
654
+ throw new serialize_1.ProtocolError('payload_invalid', 'Field "target_id" must be a non-empty string');
655
+ }
656
+ if (typeof data.cancelled !== 'boolean') {
657
+ throw new serialize_1.ProtocolError('payload_invalid', 'Field "cancelled" must be a boolean');
658
+ }
659
+ if (typeof data.terminated !== 'boolean') {
660
+ throw new serialize_1.ProtocolError('payload_invalid', 'Field "terminated" must be a boolean');
661
+ }
662
+ if (data.reason !== undefined && typeof data.reason !== 'string') {
663
+ throw new serialize_1.ProtocolError('payload_invalid', 'Field "reason" must be a string');
664
+ }
665
+ }
666
+ function validateResponsePayload(p) {
667
+ const data = p;
668
+ if (typeof data.request_id !== 'string' || data.request_id.length === 0) {
669
+ throw new serialize_1.ProtocolError('payload_invalid', 'Field "request_id" must be a non-empty string');
670
+ }
671
+ if (typeof data.ok !== 'boolean') {
672
+ throw new serialize_1.ProtocolError('payload_invalid', 'Field "ok" must be a boolean');
673
+ }
674
+ if (data.data === undefined) {
675
+ throw new serialize_1.ProtocolError('payload_invalid', 'Field "data" must be defined');
676
+ }
677
+ if (data.ms !== undefined && (typeof data.ms !== 'number' || data.ms < 0 || isNaN(data.ms))) {
678
+ throw new serialize_1.ProtocolError('payload_invalid', 'Field "ms" must be a non-negative number');
679
+ }
680
+ }
681
+ function validateErrorPayload(p) {
682
+ const data = p;
683
+ if (typeof data.request_id !== 'string' || data.request_id.length === 0) {
684
+ throw new serialize_1.ProtocolError('payload_invalid', 'Field "request_id" must be a non-empty string');
685
+ }
686
+ if (typeof data.code !== 'string' || !(data.code in errors_1.ERROR_CATALOG)) {
687
+ throw new serialize_1.ProtocolError('payload_invalid', `Field "code" must be a valid ErrorCode: ${data.code}`);
688
+ }
689
+ if (typeof data.message !== 'string' || data.message.length === 0) {
690
+ throw new serialize_1.ProtocolError('payload_invalid', 'Field "message" must be a non-empty string');
691
+ }
692
+ if (data.pg_error !== undefined && data.pg_error !== null) {
693
+ if (typeof data.pg_error !== 'object') {
694
+ throw new serialize_1.ProtocolError('payload_invalid', 'Field "pg_error" must be an object');
695
+ }
696
+ const pg = data.pg_error;
697
+ if (typeof pg.code !== 'string' || pg.code.length === 0) {
698
+ throw new serialize_1.ProtocolError('payload_invalid', 'Field "pg_error.code" must be a non-empty string');
699
+ }
700
+ if (typeof pg.severity !== 'string' || pg.severity.length === 0) {
701
+ throw new serialize_1.ProtocolError('payload_invalid', 'Field "pg_error.severity" must be a non-empty string');
702
+ }
703
+ if (pg.detail !== undefined && typeof pg.detail !== 'string') {
704
+ throw new serialize_1.ProtocolError('payload_invalid', 'Field "pg_error.detail" must be a string');
705
+ }
706
+ if (pg.hint !== undefined && typeof pg.hint !== 'string') {
707
+ throw new serialize_1.ProtocolError('payload_invalid', 'Field "pg_error.hint" must be a string');
708
+ }
709
+ if (pg.position !== undefined && (typeof pg.position !== 'number' || !Number.isInteger(pg.position))) {
710
+ throw new serialize_1.ProtocolError('payload_invalid', 'Field "pg_error.position" must be an integer');
711
+ }
712
+ }
713
+ if (typeof data.fatal !== 'boolean') {
714
+ throw new serialize_1.ProtocolError('payload_invalid', 'Field "fatal" must be a boolean');
715
+ }
716
+ if (typeof data.retryable !== 'boolean') {
717
+ throw new serialize_1.ProtocolError('payload_invalid', 'Field "retryable" must be a boolean');
718
+ }
719
+ }
720
+ /**
721
+ * An approval nonce is `crypto.randomBytes(32)` in lowercase hex: exactly 64 hex
722
+ * characters and nothing else. The agent mints it and compares the returned value
723
+ * against its own copy, so any looser shape (truncated, padded, non-hex, or a
724
+ * different length entirely) must be refused at the protocol boundary.
725
+ */
726
+ function assertApprovalNonce(value, field) {
727
+ if (typeof value !== 'string' || !constants_1.APPROVAL_NONCE_PATTERN.test(value)) {
728
+ throw new serialize_1.ProtocolError('payload_invalid', `Field "${field}" must be ${constants_1.LIMITS.APPROVAL_NONCE_HEX_LENGTH} lowercase hex characters (32 bytes)`);
729
+ }
730
+ }
731
+ function validateEventPayload(p) {
732
+ const data = p;
733
+ if (typeof data.kind !== 'string' || !envelope_1.EVENT_KINDS.includes(data.kind)) {
734
+ throw new serialize_1.ProtocolError('payload_invalid', `Field "kind" must be one of: ${envelope_1.EVENT_KINDS.join(', ')}`);
735
+ }
736
+ if (typeof data.data !== 'object' || data.data === null) {
737
+ throw new serialize_1.ProtocolError('payload_invalid', 'Field "data" must be a JSON object');
738
+ }
739
+ const d = data.data;
740
+ switch (data.kind) {
741
+ case 'status_change': {
742
+ const validStatuses = ['online', 'offline', 'degraded', 'maintenance'];
743
+ if (typeof d.new_status !== 'string' || !validStatuses.includes(d.new_status)) {
744
+ throw new serialize_1.ProtocolError('payload_invalid', 'Field "data.new_status" must be online, offline, degraded, or maintenance');
745
+ }
746
+ if (d.reason !== undefined && typeof d.reason !== 'string') {
747
+ throw new serialize_1.ProtocolError('payload_invalid', 'Field "data.reason" must be a string');
748
+ }
749
+ break;
750
+ }
751
+ case 'migration_progress': {
752
+ if (typeof d.plan_id !== 'string' || d.plan_id.length === 0) {
753
+ throw new serialize_1.ProtocolError('payload_invalid', 'Field "data.plan_id" must be a non-empty string');
754
+ }
755
+ if (typeof d.statement_index !== 'number' || d.statement_index < 0 || !Number.isInteger(d.statement_index)) {
756
+ throw new serialize_1.ProtocolError('payload_invalid', 'Field "data.statement_index" must be a non-negative integer');
757
+ }
758
+ if (typeof d.statement_sql_preview !== 'string') {
759
+ throw new serialize_1.ProtocolError('payload_invalid', 'Field "data.statement_sql_preview" must be a string');
760
+ }
761
+ const validStmtStatuses = ['pending', 'running', 'success', 'failed', 'rolled_back'];
762
+ if (typeof d.status !== 'string' || !validStmtStatuses.includes(d.status)) {
763
+ throw new serialize_1.ProtocolError('payload_invalid', 'Field "data.status" must be pending, running, success, failed, or rolled_back');
764
+ }
765
+ if (d.ms !== undefined && (typeof d.ms !== 'number' || d.ms < 0 || isNaN(d.ms))) {
766
+ throw new serialize_1.ProtocolError('payload_invalid', 'Field "data.ms" must be a non-negative number');
767
+ }
768
+ if (d.error !== undefined && typeof d.error !== 'string') {
769
+ throw new serialize_1.ProtocolError('payload_invalid', 'Field "data.error" must be a string');
770
+ }
771
+ if (d.replayed !== undefined && typeof d.replayed !== 'boolean') {
772
+ throw new serialize_1.ProtocolError('payload_invalid', 'Field "data.replayed" must be a boolean');
773
+ }
774
+ break;
775
+ }
776
+ case 'approval_required': {
777
+ if (typeof d.request_id !== 'string' || d.request_id.length === 0) {
778
+ throw new serialize_1.ProtocolError('payload_invalid', 'Field "data.request_id" must be a non-empty string');
779
+ }
780
+ if (typeof d.sql !== 'string' || d.sql.length === 0) {
781
+ throw new serialize_1.ProtocolError('payload_invalid', 'Field "data.sql" must be a non-empty string');
782
+ }
783
+ if (typeof d.sql_preview !== 'string') {
784
+ throw new serialize_1.ProtocolError('payload_invalid', 'Field "data.sql_preview" must be a string');
785
+ }
786
+ if (d.intent !== 'write' && d.intent !== 'ddl') {
787
+ throw new serialize_1.ProtocolError('payload_invalid', 'Field "data.intent" must be write or ddl');
788
+ }
789
+ if (typeof d.db_alias !== 'string' || d.db_alias.length === 0) {
790
+ throw new serialize_1.ProtocolError('payload_invalid', 'Field "data.db_alias" must be a non-empty string');
791
+ }
792
+ if (typeof d.expires_at !== 'number' || d.expires_at <= 0 || isNaN(d.expires_at)) {
793
+ throw new serialize_1.ProtocolError('payload_invalid', 'Field "data.expires_at" must be a positive number timestamp');
794
+ }
795
+ assertApprovalNonce(d.approval_nonce, 'data.approval_nonce');
796
+ break;
797
+ }
798
+ case 'approval_response': {
799
+ if (typeof d.request_id !== 'string' || d.request_id.length === 0) {
800
+ throw new serialize_1.ProtocolError('payload_invalid', 'Field "data.request_id" must be a non-empty string');
801
+ }
802
+ if (typeof d.approved !== 'boolean') {
803
+ throw new serialize_1.ProtocolError('payload_invalid', 'Field "data.approved" must be a boolean');
804
+ }
805
+ // The nonce is minted by the agent and must come back verbatim. Shape is
806
+ // all that can be checked here; proving the sender is the right person is
807
+ // the dispatcher's job, and it must compare against its own copy.
808
+ assertApprovalNonce(d.approval_nonce, 'data.approval_nonce');
809
+ // `approved_by` is display-only. It carries no authority — the approver is
810
+ // taken from the authenticated envelope — so it is bounded but otherwise
811
+ // untrusted, and its absence is not an error.
812
+ if (d.approved_by !== undefined &&
813
+ (typeof d.approved_by !== 'string' || d.approved_by.length === 0 || d.approved_by.length > constants_1.LIMITS.ID_MAX_LENGTH)) {
814
+ throw new serialize_1.ProtocolError('payload_invalid', `Field "data.approved_by" must be a 1-${constants_1.LIMITS.ID_MAX_LENGTH} character string when present`);
815
+ }
816
+ break;
817
+ }
818
+ case 'warning': {
819
+ if (typeof d.code !== 'string' || d.code.length === 0) {
820
+ throw new serialize_1.ProtocolError('payload_invalid', 'Field "data.code" must be a non-empty string');
821
+ }
822
+ if (typeof d.message !== 'string' || d.message.length === 0) {
823
+ throw new serialize_1.ProtocolError('payload_invalid', 'Field "data.message" must be a non-empty string');
824
+ }
825
+ if (d.context !== undefined && (typeof d.context !== 'object' || d.context === null)) {
826
+ throw new serialize_1.ProtocolError('payload_invalid', 'Field "data.context" must be an object');
827
+ }
828
+ break;
829
+ }
830
+ case 'resume_request': {
831
+ if (typeof d.request_id !== 'string' || d.request_id.length === 0) {
832
+ throw new serialize_1.ProtocolError('payload_invalid', 'Field "data.request_id" must be a non-empty string');
833
+ }
834
+ break;
835
+ }
836
+ case 'plan_register': {
837
+ if (!Array.isArray(d.statements)) {
838
+ throw new serialize_1.ProtocolError('payload_invalid', 'Field "data.statements" must be an array of SQL strings');
839
+ }
840
+ for (let i = 0; i < d.statements.length; i++) {
841
+ if (typeof d.statements[i] !== 'string') {
842
+ throw new serialize_1.ProtocolError('payload_invalid', `Field "data.statements[${i}]" must be a string`);
843
+ }
844
+ }
845
+ if (d.risk_level !== undefined && d.risk_level !== 'low' && d.risk_level !== 'medium' && d.risk_level !== 'high') {
846
+ throw new serialize_1.ProtocolError('payload_invalid', 'Field "data.risk_level" must be low, medium, or high');
847
+ }
848
+ break;
849
+ }
850
+ }
851
+ }
852
+ //# sourceMappingURL=validate.js.map