@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,558 @@
1
+ // Aeolus core tables (docs/architecture.md, "Core tables").
2
+ //
3
+ // Prefixed ids, fleet_id on every table except fleets, and the columns and key
4
+ // constraints named in the architecture. Columns a later slice owns (a message's
5
+ // sender and selector, for one) arrive with that slice.
6
+ //
7
+ // References to rows of the same fleet carry fleet_id in the foreign key, so a
8
+ // row can never point at another fleet's ship, lease, message or delivery.
9
+ //
10
+ // Timestamps have no database default: the application's Clock port sets every
11
+ // one of them, so tests control time.
12
+ //
13
+ // Check constraints and the append-only rule for events live in the migration
14
+ // SQL, because Prisma does not model them.
15
+
16
+ generator client {
17
+ provider = "prisma-client"
18
+ output = "./generated"
19
+ moduleFormat = "esm"
20
+ importFileExtension = "js"
21
+ runtime = "nodejs"
22
+ previewFeatures = ["partialIndexes"]
23
+ }
24
+
25
+ datasource db {
26
+ provider = "postgresql"
27
+ }
28
+
29
+ /// The tenant: one operator's ships, messages and history. Ids start with flt_.
30
+ model Fleet {
31
+ id String @id
32
+ name String
33
+ createdAt DateTime @map("created_at") @db.Timestamptz(3)
34
+ /// The sequence number of the fleet's last committed event. A unit of work
35
+ /// takes its numbers from it as its last statements, so the row lock orders
36
+ /// the numbers as the transactions commit.
37
+ lastEventSeq BigInt @default(0) @map("last_event_seq")
38
+ /// Whether the fleet sets its own ship limit (else it follows the installation
39
+ /// default), and that limit: null for no limit.
40
+ shipLimitSet Boolean @default(false) @map("ship_limit_set")
41
+ shipLimit Int? @map("ship_limit")
42
+ /// The same for its daily message limit.
43
+ dailyMessageLimitSet Boolean @default(false) @map("daily_message_limit_set")
44
+ dailyMessageLimit Int? @map("daily_message_limit")
45
+
46
+ ships Ship[]
47
+ leases Lease[]
48
+ crewRequests CrewRequest[]
49
+ credentials Credential[]
50
+ messages Message[]
51
+ deliveries Delivery[]
52
+ events Event[]
53
+ consoleSessions ConsoleSession[]
54
+ signInTickets SignInTicket[]
55
+ noticeDismissals NoticeDismissal[]
56
+ guideProgress GuideProgress[]
57
+ operator Operator?
58
+
59
+ @@map("fleets")
60
+ }
61
+
62
+ /// `argo` is the one operator ship of a fleet; every other ship is an agent.
63
+ enum ShipKind {
64
+ operator
65
+ agent
66
+ viewer
67
+
68
+ @@map("ship_kind")
69
+ }
70
+
71
+ /// A durable, addressable identity with an inbox. Ids start with shp_.
72
+ /// Scopes are set when the ship is created and checked before every call.
73
+ model Ship {
74
+ id String @id
75
+ fleetId String @map("fleet_id")
76
+ name String
77
+ type String
78
+ kind ShipKind
79
+ scopes String[]
80
+ note String?
81
+ createdAt DateTime @map("created_at") @db.Timestamptz(3)
82
+ retiredAt DateTime? @map("retired_at") @db.Timestamptz(3)
83
+ /// The ship that commissioned it, its idempotency key and the request's hash; null for argo.
84
+ commissionedBy String? @map("commissioned_by")
85
+ commissionKey String? @map("commission_key")
86
+ commissionRequestHash String? @map("commission_request_hash")
87
+
88
+ fleet Fleet @relation(fields: [fleetId], references: [id])
89
+ leases Lease[]
90
+ credentials Credential[]
91
+ sentMessages Message[] @relation("MessageSender")
92
+ addressedMessages Message[] @relation("MessageSelectorShip")
93
+ deliveries Delivery[] @relation("DeliveryRecipientShip")
94
+ claimedDeliveries Delivery[] @relation("DeliveryClaimedByShip")
95
+ consoleSessions ConsoleSession[]
96
+ actorOfEvents Event[] @relation("EventActorShip")
97
+ events Event[] @relation("EventShip")
98
+ crewRequest CrewRequest? @relation("CrewRequestShip")
99
+ assignedCrews CrewRequest[] @relation("CrewRequestAssignee")
100
+
101
+ @@unique([fleetId, id])
102
+ /// An idempotency key is used once per commissioning ship.
103
+ @@unique([fleetId, commissionedBy, commissionKey])
104
+ /// A name is unique among ships that are not retired, and reusable after retirement.
105
+ @@unique([fleetId, name], map: "ships_fleet_id_name_active_key", where: { retiredAt: null })
106
+ /// Exactly one operator ship per fleet.
107
+ @@unique([fleetId], map: "ships_fleet_id_operator_key", where: raw("kind = 'operator'::ship_kind"))
108
+ /// At most one viewer ship per fleet (decision 0022).
109
+ @@unique([fleetId], map: "ships_fleet_id_viewer_key", where: raw("kind = 'viewer'::ship_kind"))
110
+ @@map("ships")
111
+ }
112
+
113
+ /// Where the session crewing a ship runs. OTHER carries a description; the other kinds none.
114
+ enum ReportState {
115
+ working
116
+ blocked
117
+ idle
118
+
119
+ @@map("report_state")
120
+ }
121
+
122
+ enum LocationKind {
123
+ DEVICE
124
+ CLOUD
125
+ SERVER
126
+ OTHER
127
+
128
+ @@map("location_kind")
129
+ }
130
+
131
+ /// The exclusive right of one session to crew a ship, and where that session runs.
132
+ /// Ids start with lse_.
133
+ /// The hash of the crew token register gave the session, unique across all fleets:
134
+ /// finding a ship by its crew token is a lookup not scoped by fleet (ADR 0007). A
135
+ /// console session's lease on argo has none; the console session holds its token.
136
+ model Lease {
137
+ id String @id
138
+ fleetId String @map("fleet_id")
139
+ shipId String @map("ship_id")
140
+ location LocationKind
141
+ locationDescription String? @map("location_description")
142
+ /// The harness the session stated when it claimed the ship; none for argo's console lease and for leases from before harnesses were stated.
143
+ harness String?
144
+ crewTokenHash String? @unique @map("crew_token_hash")
145
+ startedAt DateTime @map("started_at") @db.Timestamptz(3)
146
+ /// The last call by its crew: observation only, nothing acts on it (ADR 0016).
147
+ lastSeenAt DateTime? @map("last_seen_at") @db.Timestamptz(3)
148
+ /// The crew's last report: plain data, nothing acts on it. Null until it reports.
149
+ reportState ReportState? @map("report_state")
150
+ reportNote String? @map("report_note")
151
+ reportedAt DateTime? @map("reported_at") @db.Timestamptz(3)
152
+ /// The report's details: one JSON object stored without meaning, at most 16 KB (decision 0028). Null when there are none.
153
+ reportDetails Json? @map("report_details")
154
+ /// Moves by one each time the details change; 0 before any.
155
+ reportDetailsVersion Int @default(0) @map("report_details_version")
156
+ endedAt DateTime? @map("ended_at") @db.Timestamptz(3)
157
+
158
+ fleet Fleet @relation(fields: [fleetId], references: [id])
159
+ ship Ship @relation(fields: [fleetId, shipId], references: [fleetId, id])
160
+ consoleSessions ConsoleSession[]
161
+ claimedDeliveries Delivery[]
162
+
163
+ @@unique([fleetId, id])
164
+ /// At most one open lease per ship.
165
+ @@unique([shipId], map: "leases_ship_id_open_key", where: { endedAt: null })
166
+ @@map("leases")
167
+ }
168
+
169
+ /// How the assigned trierarch says its crew of a ship stands (decision 0029).
170
+ enum CrewStatus {
171
+ crewing
172
+ running
173
+ restarting
174
+ crashed
175
+ releasing
176
+
177
+ @@map("crew_status")
178
+ }
179
+
180
+ /// A standing request that a ship be kept crewed (decision 0029): at most one per
181
+ /// ship, so the ship's id is its key. Its settings are stored without meaning, at
182
+ /// most 16 KB; each request replaces them and moves their version by one.
183
+ model CrewRequest {
184
+ shipId String @id @map("ship_id")
185
+ fleetId String @map("fleet_id")
186
+ settings Json
187
+ settingsVersion Int @map("settings_version")
188
+ requestedAt DateTime @map("requested_at") @db.Timestamptz(3)
189
+ /// The trierarch ship it is assigned to; null while unassigned.
190
+ assignedTo String? @map("assigned_to_ship_id")
191
+ /// How its trierarch says the crew stands; null until it says.
192
+ status CrewStatus?
193
+ /// Why no trierarch can take it, written by the assigner while unassigned; null when none.
194
+ reason String?
195
+
196
+ fleet Fleet @relation(fields: [fleetId], references: [id])
197
+ ship Ship @relation("CrewRequestShip", fields: [fleetId, shipId], references: [fleetId, id])
198
+ assignee Ship? @relation("CrewRequestAssignee", fields: [fleetId, assignedTo], references: [fleetId, id])
199
+
200
+ @@unique([fleetId, shipId])
201
+ /// A trierarch reads the requests assigned to it.
202
+ @@index([fleetId, assignedTo])
203
+ @@map("crew_requests")
204
+ }
205
+
206
+ /// A ship secret, stored only as its hash. Ids start with crd_.
207
+ /// The hash is unique across all fleets: finding a ship by its secret is one of the
208
+ /// lookups not scoped by fleet (ADR 0007).
209
+ model Credential {
210
+ id String @id
211
+ fleetId String @map("fleet_id")
212
+ shipId String @map("ship_id")
213
+ secretHash String @unique @map("secret_hash")
214
+ issuedAt DateTime @map("issued_at") @db.Timestamptz(3)
215
+ claimedAt DateTime? @map("claimed_at") @db.Timestamptz(3)
216
+ invalidatedAt DateTime? @map("invalidated_at") @db.Timestamptz(3)
217
+
218
+ fleet Fleet @relation(fields: [fleetId], references: [id])
219
+ ship Ship @relation(fields: [fleetId, shipId], references: [fleetId, id])
220
+
221
+ /// At most one valid secret per ship.
222
+ @@unique([shipId], map: "credentials_ship_id_valid_key", where: { invalidatedAt: null })
223
+ @@map("credentials")
224
+ }
225
+
226
+ /// Who a message is for: one ship or any ship of a type. Group and fleet come later.
227
+ enum SelectorKind {
228
+ ship
229
+ type
230
+
231
+ @@map("selector_kind")
232
+ }
233
+
234
+ /// An immutable envelope plus an opaque payload of at most 64 KB, sent by one ship.
235
+ /// Ids start with msg_. The selector is stored as resolved at send time: a ship's
236
+ /// id, never its name, or a type. It can name the message it replies to, and a
237
+ /// resend names the message it resends (nothing sets that yet).
238
+ model Message {
239
+ id String @id
240
+ fleetId String @map("fleet_id")
241
+ senderShipId String @map("sender_ship_id")
242
+ selectorKind SelectorKind @map("selector_kind")
243
+ selectorShipId String? @map("selector_ship_id")
244
+ selectorType String? @map("selector_type")
245
+ payload String
246
+ contentType String @map("content_type")
247
+ /// The model the sender's session stated; none from argo and on messages from before models were stated.
248
+ model String?
249
+ idempotencyKey String @map("idempotency_key")
250
+ requestHash String @map("request_hash")
251
+ inReplyToMessageId String? @map("in_reply_to_message_id")
252
+ resendOfMessageId String? @map("resend_of_message_id")
253
+ createdAt DateTime @map("created_at") @db.Timestamptz(3)
254
+
255
+ fleet Fleet @relation(fields: [fleetId], references: [id])
256
+ senderShip Ship @relation("MessageSender", fields: [fleetId, senderShipId], references: [fleetId, id], onDelete: Restrict)
257
+ selectorShip Ship? @relation("MessageSelectorShip", fields: [fleetId, selectorShipId], references: [fleetId, id], onDelete: Restrict)
258
+ inReplyTo Message? @relation("MessageInReplyTo", fields: [fleetId, inReplyToMessageId], references: [fleetId, id], onDelete: Restrict)
259
+ replies Message[] @relation("MessageInReplyTo")
260
+ resendOf Message? @relation("MessageResendOf", fields: [fleetId, resendOfMessageId], references: [fleetId, id], onDelete: Restrict)
261
+ resends Message[] @relation("MessageResendOf")
262
+ deliveries Delivery[]
263
+ events Event[]
264
+
265
+ @@unique([fleetId, id])
266
+ /// A sender uses an idempotency key once: a repeat of the same request, told by its
267
+ /// request hash, returns the original message; another request with the key is refused.
268
+ @@unique([fleetId, senderShipId, idempotencyKey])
269
+ /// A ship's current model is its newest message with a model.
270
+ @@index([fleetId, senderShipId, createdAt])
271
+ @@map("messages")
272
+ }
273
+
274
+ enum DeliveryState {
275
+ pending
276
+ delivered
277
+ acknowledged
278
+ undeliverable
279
+ dismissed
280
+ abandoned
281
+
282
+ @@map("delivery_state")
283
+ }
284
+
285
+ /// One message to one resolved recipient: a ship or a type. Ids start with dlv_.
286
+ /// A receive claims it for the ship and the lease of the crew receiving: set while it
287
+ /// is in flight, kept once acknowledged, none while it is pending. Attempts count the
288
+ /// claims; the fifth makes it undeliverable.
289
+ /// The read date is set when the operator opens a message to argo.
290
+ model Delivery {
291
+ id String @id
292
+ fleetId String @map("fleet_id")
293
+ messageId String @map("message_id")
294
+ recipientShipId String? @map("recipient_ship_id")
295
+ recipientType String? @map("recipient_type")
296
+ state DeliveryState @default(pending)
297
+ claimedByShipId String? @map("claimed_by_ship_id")
298
+ claimedByLeaseId String? @map("claimed_by_lease_id")
299
+ attempts Int @default(0)
300
+ readAt DateTime? @map("read_at") @db.Timestamptz(3)
301
+ createdAt DateTime @map("created_at") @db.Timestamptz(3)
302
+
303
+ fleet Fleet @relation(fields: [fleetId], references: [id])
304
+ message Message @relation(fields: [fleetId, messageId], references: [fleetId, id])
305
+ recipientShip Ship? @relation("DeliveryRecipientShip", fields: [fleetId, recipientShipId], references: [fleetId, id], onDelete: Restrict)
306
+ claimedByShip Ship? @relation("DeliveryClaimedByShip", fields: [fleetId, claimedByShipId], references: [fleetId, id], onDelete: Restrict)
307
+ claimedByLease Lease? @relation(fields: [fleetId, claimedByLeaseId], references: [fleetId, id], onDelete: Restrict)
308
+ events Event[]
309
+
310
+ @@unique([fleetId, id])
311
+ /// One row per recipient.
312
+ @@unique([messageId, recipientShipId])
313
+ @@unique([messageId, recipientType])
314
+ @@index([fleetId, recipientShipId, state])
315
+ @@index([fleetId, recipientType, state])
316
+ /// A crew's own deliveries in flight, which its next receive returns first.
317
+ @@index([fleetId, claimedByLeaseId, state])
318
+ @@map("deliveries")
319
+ }
320
+
321
+ /// Append-only log of every state change: never updated or deleted. Ids start with evt_.
322
+ /// Records its type and time, who caused it (a ship, or the system when
323
+ /// actor_ship_id is null), the ship, message and delivery it concerns, and a few
324
+ /// details as a flat JSON object.
325
+ model Event {
326
+ id String @id
327
+ fleetId String @map("fleet_id")
328
+ type String
329
+ occurredAt DateTime @map("occurred_at") @db.Timestamptz(3)
330
+ actorShipId String? @map("actor_ship_id")
331
+ shipId String? @map("ship_id")
332
+ messageId String? @map("message_id")
333
+ deliveryId String? @map("delivery_id")
334
+ details Json
335
+ /// The event's place in its fleet's stream, in commit order and without
336
+ /// gaps: where a live subscription resumes. The id is not, since ids are
337
+ /// taken before their transaction commits.
338
+ seq BigInt
339
+
340
+ fleet Fleet @relation(fields: [fleetId], references: [id])
341
+ actorShip Ship? @relation("EventActorShip", fields: [fleetId, actorShipId], references: [fleetId, id], onDelete: Restrict)
342
+ ship Ship? @relation("EventShip", fields: [fleetId, shipId], references: [fleetId, id], onDelete: Restrict)
343
+ message Message? @relation(fields: [fleetId, messageId], references: [fleetId, id], onDelete: Restrict)
344
+ delivery Delivery? @relation(fields: [fleetId, deliveryId], references: [fleetId, id], onDelete: Restrict)
345
+
346
+ @@unique([fleetId, seq])
347
+ @@map("events")
348
+ }
349
+
350
+ /// Why a console session ended: a sign-in elsewhere took argo over, the
351
+ /// operator signed out, or the password was reset.
352
+ enum ConsoleSessionEndReason {
353
+ takenOver
354
+ signedOut
355
+ passwordReset
356
+
357
+ @@map("console_session_end_reason")
358
+ }
359
+
360
+ /// The operator's login: email and Argon2id password hash, none for an operator a
361
+ /// hosting installation created. Ids start with opr_.
362
+ /// The email is unique across all fleets: finding the account by email is the one
363
+ /// lookup not scoped by fleet (ADR 0007). One account per fleet in v1.
364
+ model Operator {
365
+ id String @id
366
+ fleetId String @unique @map("fleet_id")
367
+ email String @unique
368
+ passwordHash String? @map("password_hash")
369
+ /// How the console looks for this operator; system until they choose.
370
+ theme Theme @default(system)
371
+ createdAt DateTime @map("created_at") @db.Timestamptz(3)
372
+
373
+ fleet Fleet @relation(fields: [fleetId], references: [id])
374
+
375
+ @@map("operators")
376
+ }
377
+
378
+ enum Theme {
379
+ light
380
+ dark
381
+ system
382
+
383
+ @@map("theme")
384
+ }
385
+
386
+ /// The operator crewing argo through the web console. Ids start with ses_.
387
+ /// Only the hash of the session token is stored, unique across all fleets: finding
388
+ /// a session by its token is the one lookup not scoped by fleet (ADR 0007).
389
+ /// Valid until expires_at, which moves to idle_limit_seconds after each use
390
+ /// (30 days for the operator, 2 hours for a viewer), never past ends_by.
391
+ model ConsoleSession {
392
+ id String @id
393
+ fleetId String @map("fleet_id")
394
+ shipId String @map("ship_id")
395
+ /// The lease on argo it holds; null for a viewer session (decision 0022).
396
+ leaseId String? @map("lease_id")
397
+ idleLimitSeconds Int @map("idle_limit_seconds")
398
+ /// No use renews it past this; null when only idleness ends it.
399
+ endsBy DateTime? @map("ends_by") @db.Timestamptz(3)
400
+ /// The device it signed in from, as the browser told: "Mac · Chrome".
401
+ device String @default("Unknown device")
402
+ tokenHash String @unique @map("token_hash")
403
+ createdAt DateTime @map("created_at") @db.Timestamptz(3)
404
+ lastUsedAt DateTime @map("last_used_at") @db.Timestamptz(3)
405
+ expiresAt DateTime @map("expires_at") @db.Timestamptz(3)
406
+ endedAt DateTime? @map("ended_at") @db.Timestamptz(3)
407
+ /// Why the session ended; null while it has not.
408
+ endReason ConsoleSessionEndReason? @map("end_reason")
409
+
410
+ fleet Fleet @relation(fields: [fleetId], references: [id])
411
+ ship Ship @relation(fields: [fleetId, shipId], references: [fleetId, id])
412
+ lease Lease? @relation(fields: [fleetId, leaseId], references: [fleetId, id])
413
+
414
+ noticeDismissals NoticeDismissal[]
415
+ guideProgress GuideProgress[]
416
+
417
+ /// At most one live session holding argo's lease per fleet: signing in ends the previous one. Viewer sessions run beside it.
418
+ @@unique([fleetId], map: "console_sessions_fleet_id_open_key", where: raw("ended_at IS NULL AND lease_id IS NOT NULL"))
419
+ @@map("console_sessions")
420
+ }
421
+
422
+ /// A one-time sign-in ticket for the fleet's operator, issued by a hosting
423
+ /// installation and redeemed in the console (decision 0020). Only its hash is
424
+ /// stored, unique across all fleets: redeeming finds it before the fleet is known.
425
+ model SignInTicket {
426
+ tokenHash String @id @map("token_hash")
427
+ fleetId String @map("fleet_id")
428
+ /// Whom it signs in as: the operator or a viewer (decision 0022).
429
+ signInAs SignInAs @map("sign_in_as")
430
+ issuedAt DateTime @map("issued_at") @db.Timestamptz(3)
431
+ expiresAt DateTime @map("expires_at") @db.Timestamptz(3)
432
+ /// When it signed in; null while unused.
433
+ usedAt DateTime? @map("used_at") @db.Timestamptz(3)
434
+
435
+ fleet Fleet @relation(fields: [fleetId], references: [id])
436
+
437
+ @@index([fleetId])
438
+ @@map("sign_in_tickets")
439
+ }
440
+
441
+ enum SignInAs {
442
+ operator
443
+ viewer
444
+
445
+ @@map("sign_in_as")
446
+ }
447
+
448
+ /// The installation's settings (decision 0020): the default ship and daily message
449
+ /// limits for fleets and the cap on fleets, each null for no limit. One row at most,
450
+ /// and none until the installation sets them. Belongs to no fleet.
451
+ model InstallationSettings {
452
+ id Int @id @default(1)
453
+ defaultShipLimit Int? @map("default_ship_limit")
454
+ defaultDailyMessageLimit Int? @map("default_daily_message_limit")
455
+ fleetCap Int? @map("fleet_cap")
456
+
457
+ @@map("installation_settings")
458
+ }
459
+
460
+ enum InstallationRequestKind {
461
+ createFleet @map("create_fleet")
462
+ deleteFleet @map("delete_fleet")
463
+
464
+ @@map("installation_request_kind")
465
+ }
466
+
467
+ /// A create or delete of a fleet the installation carried out, under its caller's
468
+ /// request id, so a replay answers the same (decision 0020). It belongs to the
469
+ /// installation, not to a fleet, and keeps the request as a hash only. A create's
470
+ /// row names the fleet and argo it answers with and is deleted with that fleet; a
471
+ /// delete's row names nothing of the fleet.
472
+ model InstallationRequest {
473
+ requestId String @id @map("request_id")
474
+ kind InstallationRequestKind
475
+ requestHash String @map("request_hash")
476
+ /// The created fleet and its argo; null for a delete.
477
+ fleetId String? @map("fleet_id")
478
+ operatorShipId String? @map("operator_ship_id")
479
+ at DateTime @db.Timestamptz(3)
480
+
481
+ @@index([fleetId])
482
+ @@map("installation_requests")
483
+ }
484
+
485
+ /// A console notice the installation sets (decision 0023), shown above every
486
+ /// page to the sessions of its audience. It belongs to no fleet.
487
+ model Notice {
488
+ id String @id
489
+ /// Its place in the installation's order.
490
+ position Int
491
+ audience NoticeAudience
492
+ text String
493
+ /// Its links: label, and url, isSignOut or both.
494
+ links Json @default("[]")
495
+ isDismissible Boolean @default(false) @map("is_dismissible")
496
+
497
+ @@map("notices")
498
+ }
499
+
500
+ enum NoticeAudience {
501
+ everyone
502
+ operators
503
+ viewers
504
+
505
+ @@map("notice_audience")
506
+ }
507
+
508
+ /// A notice a console session dismissed, for itself (decision 0023). It goes
509
+ /// with its session and its fleet.
510
+ model NoticeDismissal {
511
+ fleetId String @map("fleet_id")
512
+ consoleSessionId String @map("console_session_id")
513
+ noticeId String @map("notice_id")
514
+ dismissedAt DateTime @map("dismissed_at") @db.Timestamptz(3)
515
+
516
+ fleet Fleet @relation(fields: [fleetId], references: [id])
517
+ consoleSession ConsoleSession @relation(fields: [consoleSessionId], references: [id])
518
+
519
+ @@id([consoleSessionId, noticeId])
520
+ @@index([fleetId])
521
+ @@map("notice_dismissals")
522
+ }
523
+
524
+ /// The installation's guide (decision 0024): steps for the console sessions of
525
+ /// one audience. At most one row; it belongs to no fleet.
526
+ model Guide {
527
+ /// Always "guide": the installation has one guide or none.
528
+ id String @id
529
+ audience NoticeAudience
530
+ /// Its steps, in order: path, anchor (optional), title and text.
531
+ steps Json
532
+
533
+ @@map("guides")
534
+ }
535
+
536
+ enum GuideProgressState {
537
+ open
538
+ skipped
539
+ finished
540
+
541
+ @@map("guide_progress_state")
542
+ }
543
+
544
+ /// Where a console session is in the guide, for itself (decision 0024). It
545
+ /// goes with its session and its fleet.
546
+ model GuideProgress {
547
+ fleetId String @map("fleet_id")
548
+ consoleSessionId String @id @map("console_session_id")
549
+ step Int
550
+ state GuideProgressState
551
+ recordedAt DateTime @map("recorded_at") @db.Timestamptz(3)
552
+
553
+ fleet Fleet @relation(fields: [fleetId], references: [id])
554
+ consoleSession ConsoleSession @relation(fields: [consoleSessionId], references: [id])
555
+
556
+ @@index([fleetId])
557
+ @@map("guide_progress")
558
+ }