@aeolus-fleet/core 0.0.0 → 0.19.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (610) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +98 -1
  3. package/dist/adapters/cli/fleet-init.d.ts +14 -0
  4. package/dist/adapters/cli/fleet-init.js +68 -0
  5. package/dist/adapters/cli/fleet-init.js.map +1 -0
  6. package/dist/adapters/cli/io.d.ts +35 -0
  7. package/dist/adapters/cli/io.js +21 -0
  8. package/dist/adapters/cli/io.js.map +1 -0
  9. package/dist/adapters/cli/migrate.d.ts +11 -0
  10. package/dist/adapters/cli/migrate.js +12 -0
  11. package/dist/adapters/cli/migrate.js.map +1 -0
  12. package/dist/adapters/cli/operator-reset-password.d.ts +12 -0
  13. package/dist/adapters/cli/operator-reset-password.js +49 -0
  14. package/dist/adapters/cli/operator-reset-password.js.map +1 -0
  15. package/dist/adapters/cli/run.d.ts +14 -0
  16. package/dist/adapters/cli/run.js +40 -0
  17. package/dist/adapters/cli/run.js.map +1 -0
  18. package/dist/adapters/cli/terminal.d.ts +20 -0
  19. package/dist/adapters/cli/terminal.js +68 -0
  20. package/dist/adapters/cli/terminal.js.map +1 -0
  21. package/dist/adapters/crypto/passwords.d.ts +2 -0
  22. package/dist/adapters/crypto/passwords.js +59 -0
  23. package/dist/adapters/crypto/passwords.js.map +1 -0
  24. package/dist/adapters/crypto/secrets.d.ts +5 -0
  25. package/dist/adapters/crypto/secrets.js +10 -0
  26. package/dist/adapters/crypto/secrets.js.map +1 -0
  27. package/dist/adapters/http/device-label.d.ts +9 -0
  28. package/dist/adapters/http/device-label.js +39 -0
  29. package/dist/adapters/http/device-label.js.map +1 -0
  30. package/dist/adapters/http/rate-limiter.d.ts +21 -0
  31. package/dist/adapters/http/rate-limiter.js +44 -0
  32. package/dist/adapters/http/rate-limiter.js.map +1 -0
  33. package/dist/adapters/http/request-credentials.d.ts +23 -0
  34. package/dist/adapters/http/request-credentials.js +45 -0
  35. package/dist/adapters/http/request-credentials.js.map +1 -0
  36. package/dist/adapters/http/server.d.ts +47 -0
  37. package/dist/adapters/http/server.js +216 -0
  38. package/dist/adapters/http/server.js.map +1 -0
  39. package/dist/adapters/http/version.d.ts +9 -0
  40. package/dist/adapters/http/version.js +23 -0
  41. package/dist/adapters/http/version.js.map +1 -0
  42. package/dist/adapters/mcp/mcp-endpoint.d.ts +8 -0
  43. package/dist/adapters/mcp/mcp-endpoint.js +127 -0
  44. package/dist/adapters/mcp/mcp-endpoint.js.map +1 -0
  45. package/dist/adapters/prisma/client.d.ts +10 -0
  46. package/dist/adapters/prisma/client.js +20 -0
  47. package/dist/adapters/prisma/client.js.map +1 -0
  48. package/dist/adapters/prisma/delivery-notices.d.ts +34 -0
  49. package/dist/adapters/prisma/delivery-notices.js +113 -0
  50. package/dist/adapters/prisma/delivery-notices.js.map +1 -0
  51. package/dist/adapters/prisma/event-log.d.ts +11 -0
  52. package/dist/adapters/prisma/event-log.js +61 -0
  53. package/dist/adapters/prisma/event-log.js.map +1 -0
  54. package/dist/adapters/prisma/failure-log.d.ts +22 -0
  55. package/dist/adapters/prisma/failure-log.js +70 -0
  56. package/dist/adapters/prisma/failure-log.js.map +1 -0
  57. package/dist/adapters/prisma/fleet-counter.d.ts +3 -0
  58. package/dist/adapters/prisma/fleet-counter.js +6 -0
  59. package/dist/adapters/prisma/fleet-counter.js.map +1 -0
  60. package/dist/adapters/prisma/fleet-event-wakeups.d.ts +33 -0
  61. package/dist/adapters/prisma/fleet-event-wakeups.js +86 -0
  62. package/dist/adapters/prisma/fleet-event-wakeups.js.map +1 -0
  63. package/dist/adapters/prisma/generated/browser.d.ts +127 -0
  64. package/dist/adapters/prisma/generated/browser.js +18 -0
  65. package/dist/adapters/prisma/generated/browser.js.map +1 -0
  66. package/dist/adapters/prisma/generated/client.d.ts +146 -0
  67. package/dist/adapters/prisma/generated/client.js +38 -0
  68. package/dist/adapters/prisma/generated/client.js.map +1 -0
  69. package/dist/adapters/prisma/generated/commonInputTypes.d.ts +879 -0
  70. package/dist/adapters/prisma/generated/commonInputTypes.js +11 -0
  71. package/dist/adapters/prisma/generated/commonInputTypes.js.map +1 -0
  72. package/dist/adapters/prisma/generated/enums.d.ts +75 -0
  73. package/dist/adapters/prisma/generated/enums.js +73 -0
  74. package/dist/adapters/prisma/generated/enums.js.map +1 -0
  75. package/dist/adapters/prisma/generated/internal/class.d.ts +308 -0
  76. package/dist/adapters/prisma/generated/internal/class.js +52 -0
  77. package/dist/adapters/prisma/generated/internal/class.js.map +1 -0
  78. package/dist/adapters/prisma/generated/internal/prismaNamespace.d.ts +2131 -0
  79. package/dist/adapters/prisma/generated/internal/prismaNamespace.js +295 -0
  80. package/dist/adapters/prisma/generated/internal/prismaNamespace.js.map +1 -0
  81. package/dist/adapters/prisma/generated/internal/prismaNamespaceBrowser.d.ts +273 -0
  82. package/dist/adapters/prisma/generated/internal/prismaNamespaceBrowser.js +265 -0
  83. package/dist/adapters/prisma/generated/internal/prismaNamespaceBrowser.js.map +1 -0
  84. package/dist/adapters/prisma/generated/models/ConsoleSession.d.ts +2137 -0
  85. package/dist/adapters/prisma/generated/models/ConsoleSession.js +2 -0
  86. package/dist/adapters/prisma/generated/models/ConsoleSession.js.map +1 -0
  87. package/dist/adapters/prisma/generated/models/Credential.d.ts +1360 -0
  88. package/dist/adapters/prisma/generated/models/Credential.js +2 -0
  89. package/dist/adapters/prisma/generated/models/Credential.js.map +1 -0
  90. package/dist/adapters/prisma/generated/models/CrewRequest.d.ts +1558 -0
  91. package/dist/adapters/prisma/generated/models/CrewRequest.js +2 -0
  92. package/dist/adapters/prisma/generated/models/CrewRequest.js.map +1 -0
  93. package/dist/adapters/prisma/generated/models/Delivery.d.ts +2211 -0
  94. package/dist/adapters/prisma/generated/models/Delivery.js +2 -0
  95. package/dist/adapters/prisma/generated/models/Delivery.js.map +1 -0
  96. package/dist/adapters/prisma/generated/models/Event.d.ts +1991 -0
  97. package/dist/adapters/prisma/generated/models/Event.js +2 -0
  98. package/dist/adapters/prisma/generated/models/Event.js.map +1 -0
  99. package/dist/adapters/prisma/generated/models/Fleet.d.ts +3032 -0
  100. package/dist/adapters/prisma/generated/models/Fleet.js +2 -0
  101. package/dist/adapters/prisma/generated/models/Fleet.js.map +1 -0
  102. package/dist/adapters/prisma/generated/models/Guide.d.ts +943 -0
  103. package/dist/adapters/prisma/generated/models/Guide.js +2 -0
  104. package/dist/adapters/prisma/generated/models/Guide.js.map +1 -0
  105. package/dist/adapters/prisma/generated/models/GuideProgress.d.ts +1323 -0
  106. package/dist/adapters/prisma/generated/models/GuideProgress.js +2 -0
  107. package/dist/adapters/prisma/generated/models/GuideProgress.js.map +1 -0
  108. package/dist/adapters/prisma/generated/models/InstallationRequest.d.ts +1036 -0
  109. package/dist/adapters/prisma/generated/models/InstallationRequest.js +2 -0
  110. package/dist/adapters/prisma/generated/models/InstallationRequest.js.map +1 -0
  111. package/dist/adapters/prisma/generated/models/InstallationSettings.d.ts +1027 -0
  112. package/dist/adapters/prisma/generated/models/InstallationSettings.js +2 -0
  113. package/dist/adapters/prisma/generated/models/InstallationSettings.js.map +1 -0
  114. package/dist/adapters/prisma/generated/models/Lease.d.ts +2076 -0
  115. package/dist/adapters/prisma/generated/models/Lease.js +2 -0
  116. package/dist/adapters/prisma/generated/models/Lease.js.map +1 -0
  117. package/dist/adapters/prisma/generated/models/Message.d.ts +2869 -0
  118. package/dist/adapters/prisma/generated/models/Message.js +2 -0
  119. package/dist/adapters/prisma/generated/models/Message.js.map +1 -0
  120. package/dist/adapters/prisma/generated/models/Notice.d.ts +1068 -0
  121. package/dist/adapters/prisma/generated/models/Notice.js +2 -0
  122. package/dist/adapters/prisma/generated/models/Notice.js.map +1 -0
  123. package/dist/adapters/prisma/generated/models/NoticeDismissal.d.ts +1245 -0
  124. package/dist/adapters/prisma/generated/models/NoticeDismissal.js +2 -0
  125. package/dist/adapters/prisma/generated/models/NoticeDismissal.js.map +1 -0
  126. package/dist/adapters/prisma/generated/models/Operator.d.ts +1173 -0
  127. package/dist/adapters/prisma/generated/models/Operator.js +2 -0
  128. package/dist/adapters/prisma/generated/models/Operator.js.map +1 -0
  129. package/dist/adapters/prisma/generated/models/Ship.d.ts +3320 -0
  130. package/dist/adapters/prisma/generated/models/Ship.js +2 -0
  131. package/dist/adapters/prisma/generated/models/Ship.js.map +1 -0
  132. package/dist/adapters/prisma/generated/models/SignInTicket.d.ts +1222 -0
  133. package/dist/adapters/prisma/generated/models/SignInTicket.js +2 -0
  134. package/dist/adapters/prisma/generated/models/SignInTicket.js.map +1 -0
  135. package/dist/adapters/prisma/generated/models.d.ts +18 -0
  136. package/dist/adapters/prisma/generated/models.js +2 -0
  137. package/dist/adapters/prisma/generated/models.js.map +1 -0
  138. package/dist/adapters/prisma/history.d.ts +3 -0
  139. package/dist/adapters/prisma/history.js +289 -0
  140. package/dist/adapters/prisma/history.js.map +1 -0
  141. package/dist/adapters/prisma/identity.d.ts +10 -0
  142. package/dist/adapters/prisma/identity.js +213 -0
  143. package/dist/adapters/prisma/identity.js.map +1 -0
  144. package/dist/adapters/prisma/installation.d.ts +13 -0
  145. package/dist/adapters/prisma/installation.js +155 -0
  146. package/dist/adapters/prisma/installation.js.map +1 -0
  147. package/dist/adapters/prisma/messaging.d.ts +4 -0
  148. package/dist/adapters/prisma/messaging.js +156 -0
  149. package/dist/adapters/prisma/messaging.js.map +1 -0
  150. package/dist/adapters/prisma/migrate.d.ts +5 -0
  151. package/dist/adapters/prisma/migrate.js +40 -0
  152. package/dist/adapters/prisma/migrate.js.map +1 -0
  153. package/dist/adapters/prisma/receiver-wakeups.d.ts +26 -0
  154. package/dist/adapters/prisma/receiver-wakeups.js +79 -0
  155. package/dist/adapters/prisma/receiver-wakeups.js.map +1 -0
  156. package/dist/adapters/prisma/registry.d.ts +8 -0
  157. package/dist/adapters/prisma/registry.js +427 -0
  158. package/dist/adapters/prisma/registry.js.map +1 -0
  159. package/dist/adapters/prisma/rows.d.ts +58 -0
  160. package/dist/adapters/prisma/rows.js +408 -0
  161. package/dist/adapters/prisma/rows.js.map +1 -0
  162. package/dist/adapters/prisma/unit-of-work.d.ts +36 -0
  163. package/dist/adapters/prisma/unit-of-work.js +66 -0
  164. package/dist/adapters/prisma/unit-of-work.js.map +1 -0
  165. package/dist/adapters/rest/openapi.d.ts +12 -0
  166. package/dist/adapters/rest/openapi.js +62 -0
  167. package/dist/adapters/rest/openapi.js.map +1 -0
  168. package/dist/adapters/rest/rest-api.d.ts +8 -0
  169. package/dist/adapters/rest/rest-api.js +61 -0
  170. package/dist/adapters/rest/rest-api.js.map +1 -0
  171. package/dist/adapters/trpc/console.d.ts +150 -0
  172. package/dist/adapters/trpc/console.js +102 -0
  173. package/dist/adapters/trpc/console.js.map +1 -0
  174. package/dist/adapters/trpc/context.d.ts +201 -0
  175. package/dist/adapters/trpc/context.js +2 -0
  176. package/dist/adapters/trpc/context.js.map +1 -0
  177. package/dist/adapters/trpc/fleet.d.ts +637 -0
  178. package/dist/adapters/trpc/fleet.js +437 -0
  179. package/dist/adapters/trpc/fleet.js.map +1 -0
  180. package/dist/adapters/trpc/installation.d.ts +414 -0
  181. package/dist/adapters/trpc/installation.js +138 -0
  182. package/dist/adapters/trpc/installation.js.map +1 -0
  183. package/dist/adapters/trpc/router.d.ts +1263 -0
  184. package/dist/adapters/trpc/router.js +15 -0
  185. package/dist/adapters/trpc/router.js.map +1 -0
  186. package/dist/adapters/trpc/ship-contract.d.ts +107 -0
  187. package/dist/adapters/trpc/ship-contract.js +165 -0
  188. package/dist/adapters/trpc/ship-contract.js.map +1 -0
  189. package/dist/adapters/trpc/ship-protocol.d.ts +9 -0
  190. package/dist/adapters/trpc/ship-protocol.js +25 -0
  191. package/dist/adapters/trpc/ship-protocol.js.map +1 -0
  192. package/dist/adapters/trpc/ship.d.ts +209 -0
  193. package/dist/adapters/trpc/ship.js +214 -0
  194. package/dist/adapters/trpc/ship.js.map +1 -0
  195. package/dist/adapters/trpc/starting-prompt-text.d.ts +7 -0
  196. package/dist/adapters/trpc/starting-prompt-text.js +60 -0
  197. package/dist/adapters/trpc/starting-prompt-text.js.map +1 -0
  198. package/dist/adapters/trpc/system.d.ts +29 -0
  199. package/dist/adapters/trpc/system.js +15 -0
  200. package/dist/adapters/trpc/system.js.map +1 -0
  201. package/dist/adapters/trpc/trpc.d.ts +131 -0
  202. package/dist/adapters/trpc/trpc.js +350 -0
  203. package/dist/adapters/trpc/trpc.js.map +1 -0
  204. package/dist/app.d.ts +31 -0
  205. package/dist/app.js +80 -0
  206. package/dist/app.js.map +1 -0
  207. package/dist/bin/aeolus-core.d.ts +2 -0
  208. package/dist/bin/aeolus-core.js +45 -0
  209. package/dist/bin/aeolus-core.js.map +1 -0
  210. package/dist/config.d.ts +35 -0
  211. package/dist/config.js +74 -0
  212. package/dist/config.js.map +1 -0
  213. package/dist/domain/identity/authenticate.d.ts +46 -0
  214. package/dist/domain/identity/authenticate.js +18 -0
  215. package/dist/domain/identity/authenticate.js.map +1 -0
  216. package/dist/domain/identity/console-session.d.ts +54 -0
  217. package/dist/domain/identity/console-session.js +29 -0
  218. package/dist/domain/identity/console-session.js.map +1 -0
  219. package/dist/domain/identity/credential.d.ts +76 -0
  220. package/dist/domain/identity/credential.js +63 -0
  221. package/dist/domain/identity/credential.js.map +1 -0
  222. package/dist/domain/identity/dismiss-notice.d.ts +19 -0
  223. package/dist/domain/identity/dismiss-notice.js +23 -0
  224. package/dist/domain/identity/dismiss-notice.js.map +1 -0
  225. package/dist/domain/identity/get-guide.d.ts +7 -0
  226. package/dist/domain/identity/get-guide.js +5 -0
  227. package/dist/domain/identity/get-guide.js.map +1 -0
  228. package/dist/domain/identity/get-notices.d.ts +7 -0
  229. package/dist/domain/identity/get-notices.js +5 -0
  230. package/dist/domain/identity/get-notices.js.map +1 -0
  231. package/dist/domain/identity/guide.d.ts +24 -0
  232. package/dist/domain/identity/guide.js +3 -0
  233. package/dist/domain/identity/guide.js.map +1 -0
  234. package/dist/domain/identity/issue-sign-in-ticket.d.ts +38 -0
  235. package/dist/domain/identity/issue-sign-in-ticket.js +39 -0
  236. package/dist/domain/identity/issue-sign-in-ticket.js.map +1 -0
  237. package/dist/domain/identity/notice.d.ts +16 -0
  238. package/dist/domain/identity/notice.js +12 -0
  239. package/dist/domain/identity/notice.js.map +1 -0
  240. package/dist/domain/identity/operator-account.d.ts +28 -0
  241. package/dist/domain/identity/operator-account.js +21 -0
  242. package/dist/domain/identity/operator-account.js.map +1 -0
  243. package/dist/domain/identity/ports.d.ts +193 -0
  244. package/dist/domain/identity/ports.js +2 -0
  245. package/dist/domain/identity/ports.js.map +1 -0
  246. package/dist/domain/identity/public.d.ts +3 -0
  247. package/dist/domain/identity/public.js +5 -0
  248. package/dist/domain/identity/public.js.map +1 -0
  249. package/dist/domain/identity/read-account.d.ts +35 -0
  250. package/dist/domain/identity/read-account.js +27 -0
  251. package/dist/domain/identity/read-account.js.map +1 -0
  252. package/dist/domain/identity/read-guide.d.ts +18 -0
  253. package/dist/domain/identity/read-guide.js +21 -0
  254. package/dist/domain/identity/read-guide.js.map +1 -0
  255. package/dist/domain/identity/read-notices.d.ts +13 -0
  256. package/dist/domain/identity/read-notices.js +17 -0
  257. package/dist/domain/identity/read-notices.js.map +1 -0
  258. package/dist/domain/identity/record-guide-progress.d.ts +19 -0
  259. package/dist/domain/identity/record-guide-progress.js +24 -0
  260. package/dist/domain/identity/record-guide-progress.js.map +1 -0
  261. package/dist/domain/identity/redeem-sign-in-ticket.d.ts +34 -0
  262. package/dist/domain/identity/redeem-sign-in-ticket.js +25 -0
  263. package/dist/domain/identity/redeem-sign-in-ticket.js.map +1 -0
  264. package/dist/domain/identity/reset-operator-password.d.ts +34 -0
  265. package/dist/domain/identity/reset-operator-password.js +55 -0
  266. package/dist/domain/identity/reset-operator-password.js.map +1 -0
  267. package/dist/domain/identity/set-guide.d.ts +13 -0
  268. package/dist/domain/identity/set-guide.js +12 -0
  269. package/dist/domain/identity/set-guide.js.map +1 -0
  270. package/dist/domain/identity/set-notices.d.ts +13 -0
  271. package/dist/domain/identity/set-notices.js +12 -0
  272. package/dist/domain/identity/set-notices.js.map +1 -0
  273. package/dist/domain/identity/set-theme.d.ts +21 -0
  274. package/dist/domain/identity/set-theme.js +19 -0
  275. package/dist/domain/identity/set-theme.js.map +1 -0
  276. package/dist/domain/identity/sign-in-ticket.d.ts +21 -0
  277. package/dist/domain/identity/sign-in-ticket.js +5 -0
  278. package/dist/domain/identity/sign-in-ticket.js.map +1 -0
  279. package/dist/domain/identity/sign-in.d.ts +51 -0
  280. package/dist/domain/identity/sign-in.js +43 -0
  281. package/dist/domain/identity/sign-in.js.map +1 -0
  282. package/dist/domain/identity/sign-out.d.ts +20 -0
  283. package/dist/domain/identity/sign-out.js +32 -0
  284. package/dist/domain/identity/sign-out.js.map +1 -0
  285. package/dist/domain/identity/start-console-session.d.ts +27 -0
  286. package/dist/domain/identity/start-console-session.js +54 -0
  287. package/dist/domain/identity/start-console-session.js.map +1 -0
  288. package/dist/domain/identity/start-viewer-session.d.ts +29 -0
  289. package/dist/domain/identity/start-viewer-session.js +42 -0
  290. package/dist/domain/identity/start-viewer-session.js.map +1 -0
  291. package/dist/domain/messaging/acknowledge-delivery.d.ts +30 -0
  292. package/dist/domain/messaging/acknowledge-delivery.js +31 -0
  293. package/dist/domain/messaging/acknowledge-delivery.js.map +1 -0
  294. package/dist/domain/messaging/answer-ping.d.ts +33 -0
  295. package/dist/domain/messaging/answer-ping.js +37 -0
  296. package/dist/domain/messaging/answer-ping.js.map +1 -0
  297. package/dist/domain/messaging/check-inbox.d.ts +33 -0
  298. package/dist/domain/messaging/check-inbox.js +61 -0
  299. package/dist/domain/messaging/check-inbox.js.map +1 -0
  300. package/dist/domain/messaging/content-type.d.ts +9 -0
  301. package/dist/domain/messaging/content-type.js +18 -0
  302. package/dist/domain/messaging/content-type.js.map +1 -0
  303. package/dist/domain/messaging/daily-message-limit.d.ts +19 -0
  304. package/dist/domain/messaging/daily-message-limit.js +24 -0
  305. package/dist/domain/messaging/daily-message-limit.js.map +1 -0
  306. package/dist/domain/messaging/delivery.d.ts +116 -0
  307. package/dist/domain/messaging/delivery.js +201 -0
  308. package/dist/domain/messaging/delivery.js.map +1 -0
  309. package/dist/domain/messaging/dismiss-delivery.d.ts +28 -0
  310. package/dist/domain/messaging/dismiss-delivery.js +29 -0
  311. package/dist/domain/messaging/dismiss-delivery.js.map +1 -0
  312. package/dist/domain/messaging/inbox-wait.d.ts +8 -0
  313. package/dist/domain/messaging/inbox-wait.js +19 -0
  314. package/dist/domain/messaging/inbox-wait.js.map +1 -0
  315. package/dist/domain/messaging/mark-done.d.ts +45 -0
  316. package/dist/domain/messaging/mark-done.js +49 -0
  317. package/dist/domain/messaging/mark-done.js.map +1 -0
  318. package/dist/domain/messaging/mark-read.d.ts +27 -0
  319. package/dist/domain/messaging/mark-read.js +34 -0
  320. package/dist/domain/messaging/mark-read.js.map +1 -0
  321. package/dist/domain/messaging/message.d.ts +104 -0
  322. package/dist/domain/messaging/message.js +84 -0
  323. package/dist/domain/messaging/message.js.map +1 -0
  324. package/dist/domain/messaging/payload.d.ts +9 -0
  325. package/dist/domain/messaging/payload.js +16 -0
  326. package/dist/domain/messaging/payload.js.map +1 -0
  327. package/dist/domain/messaging/ping-ship.d.ts +38 -0
  328. package/dist/domain/messaging/ping-ship.js +42 -0
  329. package/dist/domain/messaging/ping-ship.js.map +1 -0
  330. package/dist/domain/messaging/ports.d.ts +116 -0
  331. package/dist/domain/messaging/ports.js +2 -0
  332. package/dist/domain/messaging/ports.js.map +1 -0
  333. package/dist/domain/messaging/receive-deliveries.d.ts +68 -0
  334. package/dist/domain/messaging/receive-deliveries.js +119 -0
  335. package/dist/domain/messaging/receive-deliveries.js.map +1 -0
  336. package/dist/domain/messaging/receive-max.d.ts +8 -0
  337. package/dist/domain/messaging/receive-max.js +17 -0
  338. package/dist/domain/messaging/receive-max.js.map +1 -0
  339. package/dist/domain/messaging/reply-to-message.d.ts +35 -0
  340. package/dist/domain/messaging/reply-to-message.js +49 -0
  341. package/dist/domain/messaging/reply-to-message.js.map +1 -0
  342. package/dist/domain/messaging/resend-delivery.d.ts +48 -0
  343. package/dist/domain/messaging/resend-delivery.js +97 -0
  344. package/dist/domain/messaging/resend-delivery.js.map +1 -0
  345. package/dist/domain/messaging/send-message.d.ts +88 -0
  346. package/dist/domain/messaging/send-message.js +115 -0
  347. package/dist/domain/messaging/send-message.js.map +1 -0
  348. package/dist/domain/messaging/send-request.d.ts +16 -0
  349. package/dist/domain/messaging/send-request.js +18 -0
  350. package/dist/domain/messaging/send-request.js.map +1 -0
  351. package/dist/domain/registry/applied-limits.d.ts +15 -0
  352. package/dist/domain/registry/applied-limits.js +15 -0
  353. package/dist/domain/registry/applied-limits.js.map +1 -0
  354. package/dist/domain/registry/assign-crew.d.ts +31 -0
  355. package/dist/domain/registry/assign-crew.js +35 -0
  356. package/dist/domain/registry/assign-crew.js.map +1 -0
  357. package/dist/domain/registry/claim-ship.d.ts +49 -0
  358. package/dist/domain/registry/claim-ship.js +59 -0
  359. package/dist/domain/registry/claim-ship.js.map +1 -0
  360. package/dist/domain/registry/commission-ship.d.ts +54 -0
  361. package/dist/domain/registry/commission-ship.js +70 -0
  362. package/dist/domain/registry/commission-ship.js.map +1 -0
  363. package/dist/domain/registry/confirm-crew-release.d.ts +28 -0
  364. package/dist/domain/registry/confirm-crew-release.js +28 -0
  365. package/dist/domain/registry/confirm-crew-release.js.map +1 -0
  366. package/dist/domain/registry/create-fleet.d.ts +39 -0
  367. package/dist/domain/registry/create-fleet.js +56 -0
  368. package/dist/domain/registry/create-fleet.js.map +1 -0
  369. package/dist/domain/registry/crew-request.d.ts +148 -0
  370. package/dist/domain/registry/crew-request.js +175 -0
  371. package/dist/domain/registry/crew-request.js.map +1 -0
  372. package/dist/domain/registry/delete-fleet.d.ts +46 -0
  373. package/dist/domain/registry/delete-fleet.js +34 -0
  374. package/dist/domain/registry/delete-fleet.js.map +1 -0
  375. package/dist/domain/registry/deregister.d.ts +32 -0
  376. package/dist/domain/registry/deregister.js +38 -0
  377. package/dist/domain/registry/deregister.js.map +1 -0
  378. package/dist/domain/registry/explain-crew-request.d.ts +30 -0
  379. package/dist/domain/registry/explain-crew-request.js +31 -0
  380. package/dist/domain/registry/explain-crew-request.js.map +1 -0
  381. package/dist/domain/registry/fleet.d.ts +12 -0
  382. package/dist/domain/registry/fleet.js +12 -0
  383. package/dist/domain/registry/fleet.js.map +1 -0
  384. package/dist/domain/registry/found-fleet.d.ts +32 -0
  385. package/dist/domain/registry/found-fleet.js +43 -0
  386. package/dist/domain/registry/found-fleet.js.map +1 -0
  387. package/dist/domain/registry/get-fleet-limits.d.ts +17 -0
  388. package/dist/domain/registry/get-fleet-limits.js +14 -0
  389. package/dist/domain/registry/get-fleet-limits.js.map +1 -0
  390. package/dist/domain/registry/get-installation-fleet.d.ts +15 -0
  391. package/dist/domain/registry/get-installation-fleet.js +12 -0
  392. package/dist/domain/registry/get-installation-fleet.js.map +1 -0
  393. package/dist/domain/registry/get-installation-settings.d.ts +7 -0
  394. package/dist/domain/registry/get-installation-settings.js +5 -0
  395. package/dist/domain/registry/get-installation-settings.js.map +1 -0
  396. package/dist/domain/registry/get-ship.d.ts +34 -0
  397. package/dist/domain/registry/get-ship.js +36 -0
  398. package/dist/domain/registry/get-ship.js.map +1 -0
  399. package/dist/domain/registry/get-starting-prompt.d.ts +24 -0
  400. package/dist/domain/registry/get-starting-prompt.js +46 -0
  401. package/dist/domain/registry/get-starting-prompt.js.map +1 -0
  402. package/dist/domain/registry/initialise-fleet.d.ts +28 -0
  403. package/dist/domain/registry/initialise-fleet.js +39 -0
  404. package/dist/domain/registry/initialise-fleet.js.map +1 -0
  405. package/dist/domain/registry/installation-fleet.d.ts +36 -0
  406. package/dist/domain/registry/installation-fleet.js +22 -0
  407. package/dist/domain/registry/installation-fleet.js.map +1 -0
  408. package/dist/domain/registry/installation-request.d.ts +23 -0
  409. package/dist/domain/registry/installation-request.js +5 -0
  410. package/dist/domain/registry/installation-request.js.map +1 -0
  411. package/dist/domain/registry/lease.d.ts +51 -0
  412. package/dist/domain/registry/lease.js +39 -0
  413. package/dist/domain/registry/lease.js.map +1 -0
  414. package/dist/domain/registry/leases.d.ts +66 -0
  415. package/dist/domain/registry/leases.js +80 -0
  416. package/dist/domain/registry/leases.js.map +1 -0
  417. package/dist/domain/registry/limits.d.ts +50 -0
  418. package/dist/domain/registry/limits.js +24 -0
  419. package/dist/domain/registry/limits.js.map +1 -0
  420. package/dist/domain/registry/list-fleet.d.ts +70 -0
  421. package/dist/domain/registry/list-fleet.js +47 -0
  422. package/dist/domain/registry/list-fleet.js.map +1 -0
  423. package/dist/domain/registry/list-fleets.d.ts +11 -0
  424. package/dist/domain/registry/list-fleets.js +9 -0
  425. package/dist/domain/registry/list-fleets.js.map +1 -0
  426. package/dist/domain/registry/list-installation-fleets.d.ts +15 -0
  427. package/dist/domain/registry/list-installation-fleets.js +15 -0
  428. package/dist/domain/registry/list-installation-fleets.js.map +1 -0
  429. package/dist/domain/registry/ping-status.d.ts +17 -0
  430. package/dist/domain/registry/ping-status.js +28 -0
  431. package/dist/domain/registry/ping-status.js.map +1 -0
  432. package/dist/domain/registry/pingable-ship.d.ts +22 -0
  433. package/dist/domain/registry/pingable-ship.js +21 -0
  434. package/dist/domain/registry/pingable-ship.js.map +1 -0
  435. package/dist/domain/registry/ports.d.ts +318 -0
  436. package/dist/domain/registry/ports.js +2 -0
  437. package/dist/domain/registry/ports.js.map +1 -0
  438. package/dist/domain/registry/public.d.ts +8 -0
  439. package/dist/domain/registry/public.js +10 -0
  440. package/dist/domain/registry/public.js.map +1 -0
  441. package/dist/domain/registry/read-assigned-crew-requests.d.ts +14 -0
  442. package/dist/domain/registry/read-assigned-crew-requests.js +15 -0
  443. package/dist/domain/registry/read-assigned-crew-requests.js.map +1 -0
  444. package/dist/domain/registry/recrew-ship.d.ts +33 -0
  445. package/dist/domain/registry/recrew-ship.js +34 -0
  446. package/dist/domain/registry/recrew-ship.js.map +1 -0
  447. package/dist/domain/registry/release-ship.d.ts +38 -0
  448. package/dist/domain/registry/release-ship.js +47 -0
  449. package/dist/domain/registry/release-ship.js.map +1 -0
  450. package/dist/domain/registry/remove-crew-request.d.ts +28 -0
  451. package/dist/domain/registry/remove-crew-request.js +36 -0
  452. package/dist/domain/registry/remove-crew-request.js.map +1 -0
  453. package/dist/domain/registry/rename-ship.d.ts +30 -0
  454. package/dist/domain/registry/rename-ship.js +39 -0
  455. package/dist/domain/registry/rename-ship.js.map +1 -0
  456. package/dist/domain/registry/report-crew-status.d.ts +29 -0
  457. package/dist/domain/registry/report-crew-status.js +30 -0
  458. package/dist/domain/registry/report-crew-status.js.map +1 -0
  459. package/dist/domain/registry/report-details.d.ts +18 -0
  460. package/dist/domain/registry/report-details.js +41 -0
  461. package/dist/domain/registry/report-details.js.map +1 -0
  462. package/dist/domain/registry/report-log.d.ts +21 -0
  463. package/dist/domain/registry/report-log.js +16 -0
  464. package/dist/domain/registry/report-log.js.map +1 -0
  465. package/dist/domain/registry/report.d.ts +30 -0
  466. package/dist/domain/registry/report.js +30 -0
  467. package/dist/domain/registry/report.js.map +1 -0
  468. package/dist/domain/registry/request-crew.d.ts +32 -0
  469. package/dist/domain/registry/request-crew.js +29 -0
  470. package/dist/domain/registry/request-crew.js.map +1 -0
  471. package/dist/domain/registry/resolve-selector.d.ts +25 -0
  472. package/dist/domain/registry/resolve-selector.js +32 -0
  473. package/dist/domain/registry/resolve-selector.js.map +1 -0
  474. package/dist/domain/registry/retire-ship.d.ts +42 -0
  475. package/dist/domain/registry/retire-ship.js +68 -0
  476. package/dist/domain/registry/retire-ship.js.map +1 -0
  477. package/dist/domain/registry/set-fleet-limits.d.ts +30 -0
  478. package/dist/domain/registry/set-fleet-limits.js +54 -0
  479. package/dist/domain/registry/set-fleet-limits.js.map +1 -0
  480. package/dist/domain/registry/set-installation-settings.d.ts +18 -0
  481. package/dist/domain/registry/set-installation-settings.js +31 -0
  482. package/dist/domain/registry/set-installation-settings.js.map +1 -0
  483. package/dist/domain/registry/ship-handle.d.ts +5 -0
  484. package/dist/domain/registry/ship-handle.js +20 -0
  485. package/dist/domain/registry/ship-handle.js.map +1 -0
  486. package/dist/domain/registry/ship-note.d.ts +7 -0
  487. package/dist/domain/registry/ship-note.js +15 -0
  488. package/dist/domain/registry/ship-note.js.map +1 -0
  489. package/dist/domain/registry/ship-report.d.ts +42 -0
  490. package/dist/domain/registry/ship-report.js +93 -0
  491. package/dist/domain/registry/ship-report.js.map +1 -0
  492. package/dist/domain/registry/ship.d.ts +190 -0
  493. package/dist/domain/registry/ship.js +334 -0
  494. package/dist/domain/registry/ship.js.map +1 -0
  495. package/dist/domain/registry/ships.d.ts +25 -0
  496. package/dist/domain/registry/ships.js +22 -0
  497. package/dist/domain/registry/ships.js.map +1 -0
  498. package/dist/domain/registry/starting-prompt.d.ts +32 -0
  499. package/dist/domain/registry/starting-prompt.js +22 -0
  500. package/dist/domain/registry/starting-prompt.js.map +1 -0
  501. package/dist/domain/registry/whoami.d.ts +20 -0
  502. package/dist/domain/registry/whoami.js +15 -0
  503. package/dist/domain/registry/whoami.js.map +1 -0
  504. package/dist/domain/shared/caller.d.ts +25 -0
  505. package/dist/domain/shared/caller.js +8 -0
  506. package/dist/domain/shared/caller.js.map +1 -0
  507. package/dist/domain/shared/clock.d.ts +4 -0
  508. package/dist/domain/shared/clock.js +2 -0
  509. package/dist/domain/shared/clock.js.map +1 -0
  510. package/dist/domain/shared/errors.d.ts +13 -0
  511. package/dist/domain/shared/errors.js +6 -0
  512. package/dist/domain/shared/errors.js.map +1 -0
  513. package/dist/domain/shared/events.d.ts +75 -0
  514. package/dist/domain/shared/events.js +9 -0
  515. package/dist/domain/shared/events.js.map +1 -0
  516. package/dist/domain/shared/follow-fleet.d.ts +32 -0
  517. package/dist/domain/shared/follow-fleet.js +65 -0
  518. package/dist/domain/shared/follow-fleet.js.map +1 -0
  519. package/dist/domain/shared/history.d.ts +124 -0
  520. package/dist/domain/shared/history.js +16 -0
  521. package/dist/domain/shared/history.js.map +1 -0
  522. package/dist/domain/shared/idempotency-key.d.ts +8 -0
  523. package/dist/domain/shared/idempotency-key.js +14 -0
  524. package/dist/domain/shared/idempotency-key.js.map +1 -0
  525. package/dist/domain/shared/notifier.d.ts +17 -0
  526. package/dist/domain/shared/notifier.js +2 -0
  527. package/dist/domain/shared/notifier.js.map +1 -0
  528. package/dist/domain/shared/ping.d.ts +18 -0
  529. package/dist/domain/shared/ping.js +8 -0
  530. package/dist/domain/shared/ping.js.map +1 -0
  531. package/dist/domain/shared/read-fleet-events.d.ts +29 -0
  532. package/dist/domain/shared/read-fleet-events.js +25 -0
  533. package/dist/domain/shared/read-fleet-events.js.map +1 -0
  534. package/dist/domain/shared/read-fleet-limits.d.ts +39 -0
  535. package/dist/domain/shared/read-fleet-limits.js +24 -0
  536. package/dist/domain/shared/read-fleet-limits.js.map +1 -0
  537. package/dist/domain/shared/read-inbox.d.ts +20 -0
  538. package/dist/domain/shared/read-inbox.js +16 -0
  539. package/dist/domain/shared/read-inbox.js.map +1 -0
  540. package/dist/domain/shared/read-message.d.ts +21 -0
  541. package/dist/domain/shared/read-message.js +18 -0
  542. package/dist/domain/shared/read-message.js.map +1 -0
  543. package/dist/domain/shared/read-needs-attention.d.ts +12 -0
  544. package/dist/domain/shared/read-needs-attention.js +10 -0
  545. package/dist/domain/shared/read-needs-attention.js.map +1 -0
  546. package/dist/domain/shared/read-ship-messages.d.ts +28 -0
  547. package/dist/domain/shared/read-ship-messages.js +30 -0
  548. package/dist/domain/shared/read-ship-messages.js.map +1 -0
  549. package/dist/domain/shared/read-ship-timeline.d.ts +18 -0
  550. package/dist/domain/shared/read-ship-timeline.js +16 -0
  551. package/dist/domain/shared/read-ship-timeline.js.map +1 -0
  552. package/dist/domain/shared/result.d.ts +16 -0
  553. package/dist/domain/shared/result.js +7 -0
  554. package/dist/domain/shared/result.js.map +1 -0
  555. package/dist/domain/shared/secrets.d.ts +26 -0
  556. package/dist/domain/shared/secrets.js +2 -0
  557. package/dist/domain/shared/secrets.js.map +1 -0
  558. package/dist/domain/shared/selector.d.ts +29 -0
  559. package/dist/domain/shared/selector.js +2 -0
  560. package/dist/domain/shared/selector.js.map +1 -0
  561. package/dist/domain/shared/unit-of-work.d.ts +13 -0
  562. package/dist/domain/shared/unit-of-work.js +2 -0
  563. package/dist/domain/shared/unit-of-work.js.map +1 -0
  564. package/dist/domain/shared/utc-day.d.ts +4 -0
  565. package/dist/domain/shared/utc-day.js +9 -0
  566. package/dist/domain/shared/utc-day.js.map +1 -0
  567. package/dist/index.d.ts +1 -0
  568. package/dist/index.js +2 -0
  569. package/dist/index.js.map +1 -0
  570. package/dist/start.d.ts +6 -0
  571. package/dist/start.js +29 -0
  572. package/dist/start.js.map +1 -0
  573. package/dist/wiring.d.ts +158 -0
  574. package/dist/wiring.js +185 -0
  575. package/dist/wiring.js.map +1 -0
  576. package/package.json +58 -3
  577. package/prisma.config.ts +18 -0
  578. package/src/adapters/prisma/migrations/20260929124818_init/migration.sql +201 -0
  579. package/src/adapters/prisma/migrations/20260929160000_fleet_argo_console_session/migration.sql +130 -0
  580. package/src/adapters/prisma/migrations/20260929220017_operator_login/migration.sql +27 -0
  581. package/src/adapters/prisma/migrations/20260930090000_crew_token/migration.sql +5 -0
  582. package/src/adapters/prisma/migrations/20260930120000_send/migration.sql +30 -0
  583. package/src/adapters/prisma/migrations/20260930150000_receive/migration.sql +24 -0
  584. package/src/adapters/prisma/migrations/20261001010000_event_seq/migration.sql +34 -0
  585. package/src/adapters/prisma/migrations/20261001020000_console_session_end_reason/migration.sql +14 -0
  586. package/src/adapters/prisma/migrations/20261001030000_account_theme_session_device/migration.sql +8 -0
  587. package/src/adapters/prisma/migrations/20261001040000_lease_last_seen/migration.sql +2 -0
  588. package/src/adapters/prisma/migrations/20261002190000_lease_report/migration.sql +7 -0
  589. package/src/adapters/prisma/migrations/20261003140000_commission_key/migration.sql +7 -0
  590. package/src/adapters/prisma/migrations/20261003200000_message_model/migration.sql +5 -0
  591. package/src/adapters/prisma/migrations/20261003201000_lease_harness/migration.sql +2 -0
  592. package/src/adapters/prisma/migrations/20261004120000_operator_without_password/migration.sql +2 -0
  593. package/src/adapters/prisma/migrations/20261004121000_installation_requests/migration.sql +21 -0
  594. package/src/adapters/prisma/migrations/20261004122000_events_deleted_with_their_fleet/migration.sql +11 -0
  595. package/src/adapters/prisma/migrations/20261004130000_sign_in_tickets/migration.sql +16 -0
  596. package/src/adapters/prisma/migrations/20261004140000_fleet_limits/migration.sql +6 -0
  597. package/src/adapters/prisma/migrations/20261004141000_installation_settings/migration.sql +12 -0
  598. package/src/adapters/prisma/migrations/20261005090000_viewer_ship/migration.sql +2 -0
  599. package/src/adapters/prisma/migrations/20261005100000_viewer_sessions/migration.sql +20 -0
  600. package/src/adapters/prisma/migrations/20261005110000_notices/migration.sql +37 -0
  601. package/src/adapters/prisma/migrations/20261005120000_guide/migration.sql +34 -0
  602. package/src/adapters/prisma/migrations/20261006100000_fleet_crew_scope/migration.sql +8 -0
  603. package/src/adapters/prisma/migrations/20261006140000_lease_report_details/migration.sql +3 -0
  604. package/src/adapters/prisma/migrations/20261006160000_crew_requests/migration.sql +20 -0
  605. package/src/adapters/prisma/migrations/20261006180000_crew_scopes/migration.sql +9 -0
  606. package/src/adapters/prisma/migrations/20261006190000_crew_assignment/migration.sql +13 -0
  607. package/src/adapters/prisma/migrations/20261006200000_crew_request_reason/migration.sql +3 -0
  608. package/src/adapters/prisma/migrations/20261007020000_broad_crewing_scope_retired/migration.sql +8 -0
  609. package/src/adapters/prisma/migrations/migration_lock.toml +3 -0
  610. package/src/adapters/prisma/schema.prisma +558 -0
@@ -0,0 +1,427 @@
1
+ import { PING_CONTENT_TYPE } from '@aeolus-fleet/common';
2
+ import { Prisma } from './generated/client.js';
3
+ import { toAbandonedDelivery, toCrewRequest, toDeliveryFromSql, toFleet, toLease, toLeaseShipId, toShip, toShipFacts, toShipFromSql, toShipReport, } from './rows.js';
4
+ export function createPrismaFleetRepository(db) {
5
+ return {
6
+ lockInitialisation: async () => {
7
+ // A transaction-level advisory lock on one fixed key: released at commit or rollback.
8
+ await db.$executeRaw `SELECT pg_advisory_xact_lock(hashtext('aeolus:fleet-initialisation'))`;
9
+ },
10
+ count: () => db.fleet.count(),
11
+ list: async () => (await db.fleet.findMany({ orderBy: { id: 'asc' } })).map(toFleet),
12
+ create: async (fleet) => {
13
+ await db.fleet.create({ data: fleet });
14
+ },
15
+ limitSettings: async (fleetId) => {
16
+ const row = await db.fleet.findUnique({ where: { id: fleetId }, select: { shipLimitSet: true, shipLimit: true, dailyMessageLimitSet: true, dailyMessageLimit: true } });
17
+ if (!row) {
18
+ return undefined;
19
+ }
20
+ return {
21
+ ships: row.shipLimitSet ? { kind: 'fleet', limit: row.shipLimit } : { kind: 'default' },
22
+ dailyMessages: row.dailyMessageLimitSet ? { kind: 'fleet', limit: row.dailyMessageLimit } : { kind: 'default' },
23
+ };
24
+ },
25
+ setLimitSettings: async (fleetId, settings) => {
26
+ await db.fleet.update({
27
+ where: { id: fleetId },
28
+ data: {
29
+ shipLimitSet: settings.ships.kind === 'fleet',
30
+ shipLimit: settings.ships.kind === 'fleet' ? settings.ships.limit : null,
31
+ dailyMessageLimitSet: settings.dailyMessages.kind === 'fleet',
32
+ dailyMessageLimit: settings.dailyMessages.kind === 'fleet' ? settings.dailyMessages.limit : null,
33
+ },
34
+ });
35
+ },
36
+ findForUpdate: async (fleetId) => {
37
+ const [row] = await db.$queryRaw `
38
+ SELECT id, name, created_at AS "createdAt" FROM fleets WHERE id = ${fleetId} FOR UPDATE`;
39
+ return row === undefined ? undefined : toFleet(row);
40
+ },
41
+ delete: async (fleetId) => {
42
+ // Events are append-only; naming the fleet for this transaction alone lets
43
+ // its events go with it, and no other fleet's (decision 0020).
44
+ await db.$queryRaw `SELECT set_config('aeolus.deleting_fleet', ${fleetId}, true)`;
45
+ // Children first: every foreign key restricts deletes. A message may answer
46
+ // or resend another of the fleet, so those links go before the messages.
47
+ await db.$executeRaw `DELETE FROM events WHERE fleet_id = ${fleetId}`;
48
+ await db.$executeRaw `DELETE FROM deliveries WHERE fleet_id = ${fleetId}`;
49
+ await db.$executeRaw `UPDATE messages SET in_reply_to_message_id = NULL, resend_of_message_id = NULL WHERE fleet_id = ${fleetId}`;
50
+ await db.$executeRaw `DELETE FROM messages WHERE fleet_id = ${fleetId}`;
51
+ await db.$executeRaw `DELETE FROM notice_dismissals WHERE fleet_id = ${fleetId}`;
52
+ await db.$executeRaw `DELETE FROM guide_progress WHERE fleet_id = ${fleetId}`;
53
+ await db.$executeRaw `DELETE FROM console_sessions WHERE fleet_id = ${fleetId}`;
54
+ await db.$executeRaw `DELETE FROM sign_in_tickets WHERE fleet_id = ${fleetId}`;
55
+ await db.$executeRaw `DELETE FROM credentials WHERE fleet_id = ${fleetId}`;
56
+ await db.$executeRaw `DELETE FROM crew_requests WHERE fleet_id = ${fleetId}`;
57
+ await db.$executeRaw `DELETE FROM leases WHERE fleet_id = ${fleetId}`;
58
+ await db.$executeRaw `DELETE FROM ships WHERE fleet_id = ${fleetId}`;
59
+ await db.$executeRaw `DELETE FROM operators WHERE fleet_id = ${fleetId}`;
60
+ // The request that created the fleet names it, so it goes too; a delete's record names nothing of it.
61
+ await db.$executeRaw `DELETE FROM installation_requests WHERE fleet_id = ${fleetId}`;
62
+ await db.$executeRaw `DELETE FROM fleets WHERE id = ${fleetId}`;
63
+ },
64
+ };
65
+ }
66
+ export function createPrismaCrewRequestRepository(db) {
67
+ return {
68
+ find: async (fleetId, shipId) => {
69
+ const row = await db.crewRequest.findUnique({ where: { fleetId_shipId: { fleetId, shipId } } });
70
+ return row === null ? undefined : toCrewRequest(row);
71
+ },
72
+ save: async ({ fleetId, shipId, settings, settingsVersion, requestedAt, assignedTo, status, reason }) => {
73
+ await db.crewRequest.upsert({
74
+ where: { fleetId_shipId: { fleetId, shipId } },
75
+ create: { fleetId, shipId, settings, settingsVersion, requestedAt, assignedTo, status, reason },
76
+ update: { settings, settingsVersion, requestedAt, assignedTo, status, reason },
77
+ });
78
+ },
79
+ listAssignedTo: async (fleetId, trierarchShipId) => {
80
+ const rows = await db.crewRequest.findMany({ where: { fleetId, assignedTo: trierarchShipId }, orderBy: { shipId: 'asc' } });
81
+ return rows.map(toCrewRequest);
82
+ },
83
+ remove: async (fleetId, shipId) => {
84
+ await db.crewRequest.deleteMany({ where: { fleetId, shipId } });
85
+ },
86
+ };
87
+ }
88
+ export function createPrismaShipRepository(db) {
89
+ return {
90
+ create: async (ship) => {
91
+ const { commission, ...columns } = ship;
92
+ await db.ship.create({
93
+ data: {
94
+ ...columns,
95
+ scopes: [...ship.scopes],
96
+ commissionedBy: commission?.by ?? null,
97
+ commissionKey: commission?.idempotencyKey ?? null,
98
+ commissionRequestHash: commission?.requestHash ?? null,
99
+ },
100
+ });
101
+ },
102
+ findOperatorShip: async (fleetId) => {
103
+ const row = await db.ship.findFirst({ where: { fleetId, kind: 'operator' } });
104
+ return row ? toShip(row) : undefined;
105
+ },
106
+ findViewerShip: async (fleetId) => {
107
+ const row = await db.ship.findFirst({ where: { fleetId, kind: 'viewer' } });
108
+ return row ? toShip(row) : undefined;
109
+ },
110
+ lockName: async (fleetId, name) => {
111
+ // A transaction-level advisory lock on the fleet and the name, released at
112
+ // commit or rollback. Read committed: once the holder commits, the next
113
+ // one's lookup sees the ship it created.
114
+ await db.$executeRaw `SELECT pg_advisory_xact_lock(hashtext(${fleetId}), hashtext(${name}))`;
115
+ },
116
+ lockShipCount: async (fleetId) => {
117
+ // A transaction-level advisory lock on the fleet's ship count, released at commit or rollback.
118
+ await db.$executeRaw `SELECT pg_advisory_xact_lock(hashtext('ship-count'), hashtext(${fleetId}))`;
119
+ },
120
+ countActive: (fleetId) => db.ship.count({ where: { fleetId, retiredAt: null } }),
121
+ lockCommissionKey: async ({ fleetId, by, idempotencyKey }) => {
122
+ // As for a name: a transaction-level advisory lock on the commissioning
123
+ // ship and its key, so the second commission under one key waits and then
124
+ // finds the ship the first one created.
125
+ await db.$executeRaw `SELECT pg_advisory_xact_lock(hashtext(${fleetId}), hashtext(${`${by}:${idempotencyKey}`}))`;
126
+ },
127
+ findByCommissionKey: async ({ fleetId, by, idempotencyKey }) => {
128
+ const row = await db.ship.findFirst({ where: { fleetId, commissionedBy: by, commissionKey: idempotencyKey } });
129
+ return row ? toShip(row) : undefined;
130
+ },
131
+ find: async (fleetId, shipId) => {
132
+ const row = await db.ship.findFirst({ where: { fleetId, id: shipId } });
133
+ return row ? toShip(row) : undefined;
134
+ },
135
+ findActiveByName: async (fleetId, name) => {
136
+ const row = await db.ship.findFirst({ where: { fleetId, name, retiredAt: null } });
137
+ return row ? toShip(row) : undefined;
138
+ },
139
+ findForUpdate: async (fleetId, shipId) => {
140
+ // FOR NO KEY UPDATE, not FOR UPDATE: it still makes a second lock on the
141
+ // ship wait, but not the foreign key checks of rows that point at the
142
+ // ship (a new lease, secret or event), so those never deadlock with it.
143
+ const [row] = await db.$queryRaw `
144
+ SELECT id, fleet_id, name, type, kind::text AS kind, scopes, note, created_at, retired_at, commissioned_by, commission_key, commission_request_hash
145
+ FROM ships
146
+ WHERE fleet_id = ${fleetId} AND id = ${shipId}
147
+ FOR NO KEY UPDATE`;
148
+ return row ? toShipFromSql(row) : undefined;
149
+ },
150
+ findForShare: async (fleetId, shipId) => {
151
+ // FOR SHARE, not FOR KEY SHARE: it makes a use case that locks the ship
152
+ // FOR NO KEY UPDATE to change it, such as a retire, wait for the send,
153
+ // while other sends to the ship share the lock.
154
+ const [row] = await db.$queryRaw `
155
+ SELECT id, fleet_id, name, type, kind::text AS kind, scopes, note, created_at, retired_at, commissioned_by, commission_key, commission_request_hash
156
+ FROM ships
157
+ WHERE fleet_id = ${fleetId} AND id = ${shipId}
158
+ FOR SHARE`;
159
+ return row ? toShipFromSql(row) : undefined;
160
+ },
161
+ findActiveByNameForShare: async (fleetId, name) => {
162
+ // Read committed: a send that waited for a retire checks the ship again
163
+ // once it is free, and no longer finds it by its name.
164
+ const [row] = await db.$queryRaw `
165
+ SELECT id, fleet_id, name, type, kind::text AS kind, scopes, note, created_at, retired_at, commissioned_by, commission_key, commission_request_hash
166
+ FROM ships
167
+ WHERE fleet_id = ${fleetId} AND name = ${name} AND retired_at IS NULL
168
+ FOR SHARE`;
169
+ return row ? toShipFromSql(row) : undefined;
170
+ },
171
+ hasActiveShipOfType: async (fleetId, type) => {
172
+ const row = await db.ship.findFirst({ where: { fleetId, type, retiredAt: null, kind: { not: 'viewer' } }, select: { id: true } });
173
+ return row !== null;
174
+ },
175
+ rename: async ({ fleetId, shipId, name }) => {
176
+ await db.ship.updateMany({ where: { fleetId, id: shipId }, data: { name } });
177
+ },
178
+ retire: async ({ fleetId, shipId, at }) => {
179
+ await db.ship.update({ where: { fleetId_id: { fleetId, id: shipId } }, data: { retiredAt: at } });
180
+ },
181
+ };
182
+ }
183
+ export function createPrismaLeaseRepository(db) {
184
+ return {
185
+ findOpenForUpdate: async (fleetId, shipId) => {
186
+ const [row] = await db.$queryRaw `
187
+ SELECT id, fleet_id, ship_id, location::text AS location, location_description, harness, crew_token_hash,
188
+ started_at, ended_at
189
+ FROM leases
190
+ WHERE fleet_id = ${fleetId} AND ship_id = ${shipId} AND ended_at IS NULL
191
+ FOR UPDATE`;
192
+ return row ? toLease(row) : undefined;
193
+ },
194
+ findOpenForShare: async (fleetId, shipId) => {
195
+ // FOR SHARE, as findOpenByIdForShare: a release waits for the holder.
196
+ const [row] = await db.$queryRaw `
197
+ SELECT id, fleet_id, ship_id, location::text AS location, location_description, harness, crew_token_hash,
198
+ started_at, ended_at
199
+ FROM leases
200
+ WHERE fleet_id = ${fleetId} AND ship_id = ${shipId} AND ended_at IS NULL
201
+ FOR SHARE`;
202
+ return row ? toLease(row) : undefined;
203
+ },
204
+ markSeen: async ({ fleetId, leaseId, at }) => {
205
+ // GREATEST keeps an overlapping call that marked it later from moving it back.
206
+ await db.$executeRaw `
207
+ UPDATE leases SET last_seen_at = GREATEST(COALESCE(last_seen_at, ${at}), ${at})
208
+ WHERE fleet_id = ${fleetId} AND id = ${leaseId}`;
209
+ },
210
+ findReportForUpdate: async (fleetId, leaseId) => {
211
+ const [row] = await db.$queryRaw `
212
+ SELECT report_state::text AS report_state, report_note, reported_at, report_details, report_details_version
213
+ FROM leases
214
+ WHERE fleet_id = ${fleetId} AND id = ${leaseId} AND ended_at IS NULL
215
+ FOR UPDATE`;
216
+ return row === undefined ? undefined : { report: toShipReport(row) };
217
+ },
218
+ findReportLog: async (fleetId, leaseId) => {
219
+ const [own] = await db.$queryRaw `
220
+ SELECT ship_id, report_state::text AS report_state, report_note, reported_at, report_details, report_details_version
221
+ FROM leases
222
+ WHERE fleet_id = ${fleetId} AND id = ${leaseId} AND ended_at IS NULL`;
223
+ if (own === undefined) {
224
+ return undefined;
225
+ }
226
+ const shipId = toLeaseShipId(own);
227
+ // The previous crew: the ship's lease that ended last before this one.
228
+ const [previous] = await db.$queryRaw `
229
+ SELECT report_state::text AS report_state, report_note, reported_at, report_details, report_details_version
230
+ FROM leases
231
+ WHERE fleet_id = ${fleetId} AND ship_id = ${shipId} AND id <> ${leaseId} AND ended_at IS NOT NULL
232
+ ORDER BY ended_at DESC, id DESC
233
+ LIMIT 1`;
234
+ return { report: toShipReport(own), previousCrew: previous === undefined ? null : toShipReport(previous) };
235
+ },
236
+ saveReport: async ({ fleetId, leaseId, report }) => {
237
+ await db.lease.updateMany({
238
+ where: { fleetId, id: leaseId },
239
+ data: {
240
+ reportState: report.state,
241
+ reportNote: report.note,
242
+ reportedAt: report.reportedAt,
243
+ // DbNull: no details is SQL NULL, not the JSON value null.
244
+ reportDetails: report.details ?? Prisma.DbNull,
245
+ reportDetailsVersion: report.detailsVersion,
246
+ },
247
+ });
248
+ },
249
+ findOpenByIdForShare: async (fleetId, leaseId) => {
250
+ // FOR SHARE, not FOR KEY SHARE: ending the lease updates it, so a release
251
+ // or a takeover waits for the holder, while many receives share the lock.
252
+ const [row] = await db.$queryRaw `
253
+ SELECT id, fleet_id, ship_id, location::text AS location, location_description, harness, crew_token_hash,
254
+ started_at, ended_at
255
+ FROM leases
256
+ WHERE fleet_id = ${fleetId} AND id = ${leaseId} AND ended_at IS NULL
257
+ FOR SHARE`;
258
+ return row ? toLease(row) : undefined;
259
+ },
260
+ open: async (lease) => {
261
+ await db.lease.create({
262
+ data: {
263
+ id: lease.id,
264
+ fleetId: lease.fleetId,
265
+ shipId: lease.shipId,
266
+ location: lease.location.kind,
267
+ locationDescription: lease.location.description,
268
+ harness: lease.harness,
269
+ crewTokenHash: lease.crewTokenHash,
270
+ startedAt: lease.startedAt,
271
+ endedAt: lease.endedAt,
272
+ },
273
+ });
274
+ },
275
+ end: async ({ fleetId, leaseId, endedAt }) => {
276
+ const [row] = await db.$queryRaw `
277
+ UPDATE leases SET ended_at = ${endedAt}
278
+ WHERE fleet_id = ${fleetId} AND id = ${leaseId} AND ended_at IS NULL
279
+ RETURNING id, fleet_id, ship_id, location::text AS location, location_description, harness, crew_token_hash,
280
+ started_at, ended_at`;
281
+ return row ? toLease(row) : undefined;
282
+ },
283
+ };
284
+ }
285
+ export function createPrismaInFlightDeliveries(db) {
286
+ return {
287
+ returnToPending: async (fleetId, leaseId) => {
288
+ // One statement, on the index of a lease's claims. The lease has just
289
+ // ended in this transaction, after any receive holding it FOR SHARE
290
+ // committed, so read committed sees every claim made under it. Only the
291
+ // claim is cleared: recipient and attempts stay.
292
+ const rows = await db.$queryRaw `
293
+ WITH returned AS (
294
+ UPDATE deliveries SET state = 'pending', claimed_by_ship_id = NULL, claimed_by_lease_id = NULL
295
+ WHERE fleet_id = ${fleetId} AND claimed_by_lease_id = ${leaseId} AND state = 'delivered'
296
+ RETURNING id, fleet_id, message_id, recipient_ship_id, recipient_type, state::text AS state,
297
+ claimed_by_ship_id, claimed_by_lease_id, attempts, created_at
298
+ )
299
+ SELECT * FROM returned ORDER BY created_at, id`;
300
+ return rows
301
+ .map(toDeliveryFromSql)
302
+ .map(({ id, messageId, recipient, attempts }) => ({ deliveryId: id, messageId, recipient, attempts }));
303
+ },
304
+ abandonPendingTo: async (fleetId, shipId) => {
305
+ const rows = await db.$queryRaw `
306
+ UPDATE deliveries SET state = 'abandoned'
307
+ WHERE fleet_id = ${fleetId} AND recipient_ship_id = ${shipId} AND state = 'pending'
308
+ RETURNING id, message_id, created_at`;
309
+ return rows
310
+ .map(toAbandonedDelivery)
311
+ .sort((first, second) => first.createdAt.getTime() - second.createdAt.getTime() || first.deliveryId.localeCompare(second.deliveryId))
312
+ .map(({ deliveryId, messageId }) => ({ deliveryId, messageId }));
313
+ },
314
+ };
315
+ }
316
+ /**
317
+ * The last model the ship `s` of the outer query stated on a send, and when:
318
+ * its newest message with a model that its sessions sent. A resend is the
319
+ * operator's, under the original sender, so it never counts.
320
+ */
321
+ const lastModelOfShip = Prisma.sql `
322
+ SELECT m.model, m.created_at
323
+ FROM messages m
324
+ WHERE m.fleet_id = s.fleet_id AND m.sender_ship_id = s.id AND m.model IS NOT NULL AND m.resend_of_message_id IS NULL
325
+ ORDER BY m.created_at DESC, m.id DESC
326
+ LIMIT 1`;
327
+ /**
328
+ * The newest ping to the ship `s` of the outer query: when it was sent, its
329
+ * delivery's state, and when a pong acknowledged it, if one did.
330
+ */
331
+ const lastPingOfShip = Prisma.sql `
332
+ SELECT m.created_at AS sent_at, d.state::text AS delivery_state,
333
+ (SELECT e.occurred_at FROM events e
334
+ WHERE e.fleet_id = d.fleet_id AND e.delivery_id = d.id
335
+ AND e.type = 'DeliveryAcknowledged' AND e.details->>'answer' = 'pong'
336
+ ORDER BY e.seq LIMIT 1) AS answered_at
337
+ FROM deliveries d
338
+ JOIN messages m ON m.fleet_id = d.fleet_id AND m.id = d.message_id
339
+ WHERE d.fleet_id = s.fleet_id AND d.recipient_ship_id = s.id AND m.content_type = ${PING_CONTENT_TYPE}
340
+ ORDER BY m.created_at DESC, m.id DESC
341
+ LIMIT 1`;
342
+ /**
343
+ * Who crewed the ship: the ship that got the starting prompt its open lease
344
+ * claimed with, the actor of its last StartingPromptIssued before the lease
345
+ * started. None while no lease is open.
346
+ */
347
+ const crewedByOfShip = Prisma.sql `
348
+ SELECT a.id, a.name
349
+ FROM events e
350
+ JOIN ships a ON a.fleet_id = e.fleet_id AND a.id = e.actor_ship_id
351
+ WHERE l.id IS NOT NULL AND e.fleet_id = s.fleet_id AND e.ship_id = s.id
352
+ AND e.type = 'StartingPromptIssued' AND e.occurred_at <= l.started_at
353
+ ORDER BY e.seq DESC
354
+ LIMIT 1`;
355
+ export function createPrismaFleetListing(db) {
356
+ return {
357
+ ships: async (fleetId) => {
358
+ // One row per ship: at most one lease is open and at most one secret is
359
+ // valid per ship (partial unique indexes), so neither join multiplies rows.
360
+ const rows = await db.$queryRaw `
361
+ SELECT s.id, s.fleet_id, s.name, s.type, s.kind::text AS kind, s.scopes, s.note, s.created_at, s.retired_at,
362
+ s.commissioned_by, s.commission_key, s.commission_request_hash,
363
+ l.location::text AS lease_location, l.location_description AS lease_location_description,
364
+ l.harness AS lease_harness, l.started_at AS lease_started_at, l.last_seen_at AS lease_last_seen_at,
365
+ l.report_state::text AS report_state, l.report_note, l.reported_at, l.report_details, l.report_details_version,
366
+ c.issued_at AS secret_issued_at, c.claimed_at AS secret_claimed_at,
367
+ cr.settings AS crew_request_settings, cr.settings_version AS crew_request_settings_version,
368
+ cr.requested_at AS crew_request_requested_at, cr.assigned_to_ship_id AS crew_request_assigned_to,
369
+ cr.status::text AS crew_request_status, ca.name AS crew_request_assignee_name, cr.reason AS crew_request_reason,
370
+ cb.id AS crewed_by_id, cb.name AS crewed_by_name,
371
+ p.sent_at AS ping_sent_at, p.delivery_state AS ping_delivery_state, p.answered_at AS ping_answered_at,
372
+ lm.model AS last_model, lm.created_at AS last_model_stated_at,
373
+ (SELECT max(cs.last_used_at) FROM console_sessions cs
374
+ WHERE cs.fleet_id = s.fleet_id AND cs.ship_id = s.id AND cs.lease_id IS NULL) AS last_viewed_at,
375
+ (SELECT max(el.ended_at) FROM leases el
376
+ WHERE el.fleet_id = s.fleet_id AND el.ship_id = s.id AND el.ended_at IS NOT NULL) AS last_lease_ended_at
377
+ FROM ships s
378
+ LEFT JOIN leases l ON l.fleet_id = s.fleet_id AND l.ship_id = s.id AND l.ended_at IS NULL
379
+ LEFT JOIN credentials c ON c.fleet_id = s.fleet_id AND c.ship_id = s.id AND c.invalidated_at IS NULL
380
+ LEFT JOIN crew_requests cr ON cr.fleet_id = s.fleet_id AND cr.ship_id = s.id
381
+ LEFT JOIN ships ca ON ca.fleet_id = cr.fleet_id AND ca.id = cr.assigned_to_ship_id
382
+ LEFT JOIN LATERAL (${crewedByOfShip}) cb ON true
383
+ LEFT JOIN LATERAL (${lastPingOfShip}) p ON true
384
+ LEFT JOIN LATERAL (${lastModelOfShip}) lm ON true
385
+ WHERE s.fleet_id = ${fleetId}
386
+ ORDER BY s.id`;
387
+ return rows.map(toShipFacts);
388
+ },
389
+ deliveryCounts: async (fleetId, shipId) => {
390
+ const [inFlight, open] = await Promise.all([
391
+ db.delivery.count({ where: { fleetId, claimedByShipId: shipId, state: 'delivered' } }),
392
+ db.delivery.count({ where: { fleetId, recipientShipId: shipId, state: { in: ['pending', 'delivered'] } } }),
393
+ ]);
394
+ return { inFlight, open };
395
+ },
396
+ ship: async (fleetId, shipId) => {
397
+ const [row] = await db.$queryRaw `
398
+ SELECT s.id, s.fleet_id, s.name, s.type, s.kind::text AS kind, s.scopes, s.note, s.created_at, s.retired_at,
399
+ s.commissioned_by, s.commission_key, s.commission_request_hash,
400
+ l.location::text AS lease_location, l.location_description AS lease_location_description,
401
+ l.harness AS lease_harness, l.started_at AS lease_started_at, l.last_seen_at AS lease_last_seen_at,
402
+ l.report_state::text AS report_state, l.report_note, l.reported_at, l.report_details, l.report_details_version,
403
+ c.issued_at AS secret_issued_at, c.claimed_at AS secret_claimed_at,
404
+ cr.settings AS crew_request_settings, cr.settings_version AS crew_request_settings_version,
405
+ cr.requested_at AS crew_request_requested_at, cr.assigned_to_ship_id AS crew_request_assigned_to,
406
+ cr.status::text AS crew_request_status, ca.name AS crew_request_assignee_name, cr.reason AS crew_request_reason,
407
+ cb.id AS crewed_by_id, cb.name AS crewed_by_name,
408
+ p.sent_at AS ping_sent_at, p.delivery_state AS ping_delivery_state, p.answered_at AS ping_answered_at,
409
+ lm.model AS last_model, lm.created_at AS last_model_stated_at,
410
+ (SELECT max(cs.last_used_at) FROM console_sessions cs
411
+ WHERE cs.fleet_id = s.fleet_id AND cs.ship_id = s.id AND cs.lease_id IS NULL) AS last_viewed_at,
412
+ (SELECT max(el.ended_at) FROM leases el
413
+ WHERE el.fleet_id = s.fleet_id AND el.ship_id = s.id AND el.ended_at IS NOT NULL) AS last_lease_ended_at
414
+ FROM ships s
415
+ LEFT JOIN leases l ON l.fleet_id = s.fleet_id AND l.ship_id = s.id AND l.ended_at IS NULL
416
+ LEFT JOIN credentials c ON c.fleet_id = s.fleet_id AND c.ship_id = s.id AND c.invalidated_at IS NULL
417
+ LEFT JOIN crew_requests cr ON cr.fleet_id = s.fleet_id AND cr.ship_id = s.id
418
+ LEFT JOIN ships ca ON ca.fleet_id = cr.fleet_id AND ca.id = cr.assigned_to_ship_id
419
+ LEFT JOIN LATERAL (${crewedByOfShip}) cb ON true
420
+ LEFT JOIN LATERAL (${lastPingOfShip}) p ON true
421
+ LEFT JOIN LATERAL (${lastModelOfShip}) lm ON true
422
+ WHERE s.fleet_id = ${fleetId} AND s.id = ${shipId}`;
423
+ return row === undefined ? undefined : toShipFacts(row);
424
+ },
425
+ };
426
+ }
427
+ //# sourceMappingURL=registry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../../src/adapters/prisma/registry.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,58 @@
1
+ import { type ShipId } from '@aeolus-fleet/common';
2
+ import type { ConsoleSession } from '../../domain/identity/console-session.js';
3
+ import type { AuthenticatedShip, CrewTokenLease } from '../../domain/identity/ports.js';
4
+ import type { Credential } from '../../domain/identity/credential.js';
5
+ import type { OperatorAccount } from '../../domain/identity/operator-account.js';
6
+ import type { Delivery, Message } from '../../domain/messaging/message.js';
7
+ import type { ShipReport } from '../../domain/registry/ship-report.js';
8
+ import type { CrewRequest } from '../../domain/registry/crew-request.js';
9
+ import type { FleetEventNotice, SequencedEvent } from '../../domain/shared/events.js';
10
+ import type { DeliveryNotice } from '../../domain/shared/notifier.js';
11
+ import type { Fleet } from '../../domain/registry/fleet.js';
12
+ import type { Lease } from '../../domain/registry/lease.js';
13
+ import type { ShipFacts } from '../../domain/registry/ports.js';
14
+ import type { Ship } from '../../domain/registry/ship.js';
15
+ import type { Caller, Crew } from '../../domain/shared/caller.js';
16
+ export declare function toFleet(row: unknown): Fleet;
17
+ export declare function toShip(row: unknown): Ship;
18
+ /** A ship as raw SQL returns it, in snake_case. */
19
+ export declare function toShipFromSql(row: unknown): Ship;
20
+ /** A crew request as Prisma reads its row. */
21
+ export declare function toCrewRequest(row: unknown): CrewRequest;
22
+ /** A lease's report columns as raw SQL reads them; null until its crew reports. */
23
+ export declare function toShipReport(row: unknown): ShipReport | null;
24
+ /** The ship of a lease as raw SQL reads it. */
25
+ export declare function toLeaseShipId(row: unknown): ShipId;
26
+ /** A ship with its open lease's location and its valid secret's dates, as the fleet listing reads it. */
27
+ export declare function toShipFacts(row: unknown): ShipFacts;
28
+ export declare function toLease(row: unknown): Lease;
29
+ export declare function toCredential(row: unknown): Credential;
30
+ export declare function toOperatorAccount(row: unknown): OperatorAccount;
31
+ export declare function toConsoleSession(row: unknown): ConsoleSession;
32
+ export declare function toAuthenticatedShip(row: unknown): AuthenticatedShip;
33
+ /** The lease a crew token belongs to: open, with its crew, or ended. */
34
+ export declare function toCrewTokenLease(row: unknown): CrewTokenLease;
35
+ /**
36
+ * The caller of a console session: its ship, the session it came through,
37
+ * and the lease the session holds (a viewer session holds none), with the
38
+ * expiry its use moved to.
39
+ */
40
+ export declare function toConsoleSessionCaller(row: unknown): {
41
+ caller: Caller | Crew;
42
+ expiresAt: Date;
43
+ };
44
+ export declare function toMessage(row: unknown): Message;
45
+ /** A pending delivery's notice, as the payload of its NOTIFY carries it. */
46
+ export declare function toDeliveryNotice(payload: unknown): DeliveryNotice;
47
+ export declare function toFleetEventNotice(payload: unknown): FleetEventNotice;
48
+ export declare function toLastEventSeq(row: unknown): number;
49
+ /** A delivery as raw SQL returns it, in snake_case. */
50
+ export declare function toDeliveryFromSql(row: unknown): Delivery;
51
+ /** An event row as Prisma reads it; a missing subject stays absent, as the core wrote it. */
52
+ export declare function toSequencedEvent(row: unknown): SequencedEvent;
53
+ /** A delivery a retire abandoned, as its UPDATE returns it. */
54
+ export declare function toAbandonedDelivery(row: unknown): {
55
+ deliveryId: `dlv_${string}`;
56
+ messageId: `msg_${string}`;
57
+ createdAt: Date;
58
+ };