@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,61 @@
1
+ /**
2
+ * `/api/v1`: the ship contract as REST, for ships that are not TypeScript or
3
+ * not MCP-capable (ADR 0004). One route per ship procedure and fleet action, each a call
4
+ * through the router (see trpc/ship-contract.ts), and the OpenAPI spec
5
+ * generated from the same procedures at `/api/v1/openapi.json`, rendered for
6
+ * people at `/api/v1/docs`.
7
+ *
8
+ * A ship says who it is with the crew token as `Authorization: Bearer`
9
+ * (ADR 0015); `register` takes the ship secret in its body instead. The
10
+ * console session cookie is never read here: REST is a door for ships.
11
+ */
12
+ import fastifyApiReference from '@scalar/fastify-api-reference';
13
+ import { readBearer } from '../http/request-credentials.js';
14
+ import { callShip, refusalBody, SHIP_CALLS, unexpectedFailure } from '../trpc/ship-contract.js';
15
+ import { API_TITLE, openApiDocument } from './openapi.js';
16
+ const PREFIX = '/api/v1';
17
+ const OPENAPI_PATH = `${PREFIX}/openapi.json`;
18
+ const OPENAPI_DOCUMENT = openApiDocument(SHIP_CALLS);
19
+ /** Mounts `/api/v1` on the HTTP server: a query without input as GET, the others as POST with a JSON body. */
20
+ export function registerRestApi(server, options) {
21
+ server.get(OPENAPI_PATH, () => OPENAPI_DOCUMENT);
22
+ // The viewer reads the spec above, and the server serves its script itself.
23
+ // The page talks only to the fleet: Scalar's fonts would come from its CDN,
24
+ // and its agent and developer tools call Scalar's services. With no request
25
+ // proxy set, "Try it" calls the fleet directly.
26
+ void server.register(fastifyApiReference, {
27
+ routePrefix: `${PREFIX}/docs`,
28
+ configuration: {
29
+ url: OPENAPI_PATH,
30
+ pageTitle: API_TITLE,
31
+ withDefaultFonts: false,
32
+ agent: { disabled: true },
33
+ showDeveloperTools: 'never',
34
+ telemetry: false,
35
+ },
36
+ });
37
+ for (const call of SHIP_CALLS) {
38
+ server.route({
39
+ method: call.method,
40
+ url: `${PREFIX}${call.route}`,
41
+ handler: async (request, reply) => {
42
+ try {
43
+ const result = await callShip(call, {
44
+ ctx: options.contextFor(request, { bearer: readBearer(request.headers.authorization) }),
45
+ input: request.body,
46
+ log: request.log,
47
+ });
48
+ if (result.isOk) {
49
+ return result.output;
50
+ }
51
+ return await reply.code(result.refusal.httpStatus).send(refusalBody(result.refusal));
52
+ }
53
+ catch (thrown) {
54
+ const refusal = unexpectedFailure(thrown, { log: request.log, requestId: request.id });
55
+ return await reply.code(refusal.httpStatus).send(refusalBody(refusal));
56
+ }
57
+ },
58
+ });
59
+ }
60
+ }
61
+ //# sourceMappingURL=rest-api.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rest-api.js","sourceRoot":"","sources":["../../../src/adapters/rest/rest-api.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,OAAO,mBAAmB,MAAM,+BAA+B,CAAC;AAGhE,OAAO,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AAE5D,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,UAAU,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAChG,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAE1D,MAAM,MAAM,GAAG,SAAS,CAAC;AAEzB,MAAM,YAAY,GAAG,GAAG,MAAM,eAAe,CAAC;AAE9C,MAAM,gBAAgB,GAAG,eAAe,CAAC,UAAU,CAAC,CAAC;AAOrD,8GAA8G;AAC9G,MAAM,UAAU,eAAe,CAAC,MAAuB,EAAE,OAAuB;IAC9E,MAAM,CAAC,GAAG,CAAC,YAAY,EAAE,GAAG,EAAE,CAAC,gBAAgB,CAAC,CAAC;IAEjD,4EAA4E;IAC5E,4EAA4E;IAC5E,4EAA4E;IAC5E,gDAAgD;IAChD,KAAK,MAAM,CAAC,QAAQ,CAAC,mBAAmB,EAAE;QACxC,WAAW,EAAE,GAAG,MAAM,OAAO;QAC7B,aAAa,EAAE;YACb,GAAG,EAAE,YAAY;YACjB,SAAS,EAAE,SAAS;YACpB,gBAAgB,EAAE,KAAK;YACvB,KAAK,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE;YACzB,kBAAkB,EAAE,OAAO;YAC3B,SAAS,EAAE,KAAK;SACjB;KACF,CAAC,CAAC;IAEH,KAAK,MAAM,IAAI,IAAI,UAAU,EAAE,CAAC;QAC9B,MAAM,CAAC,KAAK,CAAC;YACX,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,GAAG,EAAE,GAAG,MAAM,GAAG,IAAI,CAAC,KAAK,EAAE;YAC7B,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE;gBAChC,IAAI,CAAC;oBACH,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE;wBAClC,GAAG,EAAE,OAAO,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,MAAM,EAAE,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC,EAAE,CAAC;wBACvF,KAAK,EAAE,OAAO,CAAC,IAAI;wBACnB,GAAG,EAAE,OAAO,CAAC,GAAG;qBACjB,CAAC,CAAC;oBACH,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;wBAChB,OAAO,MAAM,CAAC,MAAM,CAAC;oBACvB,CAAC;oBACD,OAAO,MAAM,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;gBACvF,CAAC;gBAAC,OAAO,MAAM,EAAE,CAAC;oBAChB,MAAM,OAAO,GAAG,iBAAiB,CAAC,MAAM,EAAE,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,SAAS,EAAE,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC;oBACvF,OAAO,MAAM,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC;gBACzE,CAAC;YACH,CAAC;SACF,CAAC,CAAC;IACL,CAAC;AACH,CAAC"}
@@ -0,0 +1,150 @@
1
+ /**
2
+ * Console procedures: the only ones that exist for the web app alone. They take
3
+ * the operator's email and password once and work with the session cookie,
4
+ * which crews `argo`, from then on. Both change state, so both come only from
5
+ * the console's origin.
6
+ */
7
+ export declare const consoleRouter: import("@trpc/server").TRPCBuiltRouter<{
8
+ ctx: import("./context.js").Context;
9
+ meta: import("./trpc.js").ProcedureMeta;
10
+ errorShape: import("@trpc/server").TRPCDefaultErrorShape | {
11
+ message: string;
12
+ data: {
13
+ requestId: string | undefined;
14
+ code: import("@trpc/server").TRPC_ERROR_CODE_KEY;
15
+ httpStatus: number;
16
+ path?: string;
17
+ stack?: string;
18
+ };
19
+ code: import("@trpc/server").TRPC_ERROR_CODE_NUMBER;
20
+ };
21
+ transformer: false;
22
+ }, import("@trpc/server").TRPCDecorateCreateRouterOptions<{
23
+ /** Exchanges the email and password for a session cookie. A mutation, so the password travels in the body, never the URL. */
24
+ signIn: import("@trpc/server").TRPCMutationProcedure<{
25
+ input: {
26
+ email: string;
27
+ password: string;
28
+ };
29
+ output: void;
30
+ meta: import("./trpc.js").ProcedureMeta;
31
+ }>;
32
+ /**
33
+ * Exchanges a sign-in ticket a hosting installation issued for a session
34
+ * cookie, as a password sign-in does (docs/blueprint.md, "Installation"). The
35
+ * console's own server calls it with the browser's ticket and passes the
36
+ * cookie on, so it takes no console origin: the ticket is the credential,
37
+ * and it signs in once.
38
+ */
39
+ redeemSignInTicket: import("@trpc/server").TRPCMutationProcedure<{
40
+ input: {
41
+ ticket: string;
42
+ };
43
+ output: void;
44
+ meta: import("./trpc.js").ProcedureMeta;
45
+ }>;
46
+ /** The signed-in operator: email, theme, and this console session's device and start; a viewer's session alone. */
47
+ account: import("@trpc/server").TRPCQueryProcedure<{
48
+ input: void;
49
+ output: {
50
+ kind: "operator";
51
+ email: string;
52
+ theme: "system" | "light" | "dark";
53
+ session: {
54
+ device: string;
55
+ since: string;
56
+ };
57
+ } | {
58
+ kind: "viewer";
59
+ session: {
60
+ device: string;
61
+ since: string;
62
+ };
63
+ };
64
+ meta: import("./trpc.js").ProcedureMeta;
65
+ }>;
66
+ /**
67
+ * Whether the request carries a signed-in console session: for another
68
+ * service the operator uses beside the console (decision 0012), which
69
+ * forwards the browser's cookie from its own server and serves its pages
70
+ * without a login of its own. Only the cookie counts, never a crew token:
71
+ * a ship is no operator. Says whose session it is, the operator's or a
72
+ * viewer's, and its ship's scopes, so that service serves a viewer reads
73
+ * only. Counts as console use, so the session's expiry moves as on any
74
+ * console call. A query: it comes from any origin.
75
+ */
76
+ session: import("@trpc/server").TRPCQueryProcedure<{
77
+ input: void;
78
+ output: {
79
+ fleetId: `flt_${string}`;
80
+ expiresAt: string;
81
+ kind: "operator" | "viewer";
82
+ scopes: ("messages:send" | "messages:receive" | "fleet:read" | "fleet:manage" | "crew:assign" | "crew:run")[];
83
+ };
84
+ meta: import("./trpc.js").ProcedureMeta;
85
+ }>;
86
+ /** Stores the operator's theme on their account, so it follows them to any browser. */
87
+ setTheme: import("@trpc/server").TRPCMutationProcedure<{
88
+ input: {
89
+ theme: "system" | "light" | "dark";
90
+ };
91
+ output: Record<string, never>;
92
+ meta: import("./trpc.js").ProcedureMeta;
93
+ }>;
94
+ /** The notices this console session shows above every page (decision 0023): those of its audience it has not dismissed. */
95
+ notices: import("@trpc/server").TRPCQueryProcedure<{
96
+ input: void;
97
+ output: {
98
+ id: string;
99
+ audience: "everyone" | "operators" | "viewers";
100
+ text: string;
101
+ links: {
102
+ label: string;
103
+ url?: string | undefined;
104
+ isSignOut?: boolean | undefined;
105
+ }[];
106
+ isDismissible: boolean;
107
+ }[];
108
+ meta: import("./trpc.js").ProcedureMeta;
109
+ }>;
110
+ /** The guide this console session shows (decision 0024), with where it is in it; null when no guide is for its audience. */
111
+ guide: import("@trpc/server").TRPCQueryProcedure<{
112
+ input: void;
113
+ output: {
114
+ steps: {
115
+ path: string;
116
+ title: string;
117
+ text: string;
118
+ anchor?: string | undefined;
119
+ }[];
120
+ progress: {
121
+ step: number;
122
+ state: "open" | "skipped" | "finished";
123
+ };
124
+ } | null;
125
+ meta: import("./trpc.js").ProcedureMeta;
126
+ }>;
127
+ /** Records where this console session is in the guide, for itself only. */
128
+ recordGuideProgress: import("@trpc/server").TRPCMutationProcedure<{
129
+ input: {
130
+ step: number;
131
+ state: "open" | "skipped" | "finished";
132
+ };
133
+ output: void;
134
+ meta: import("./trpc.js").ProcedureMeta;
135
+ }>;
136
+ /** Dismisses a dismissible notice for this console session only. */
137
+ dismissNotice: import("@trpc/server").TRPCMutationProcedure<{
138
+ input: {
139
+ noticeId: string;
140
+ };
141
+ output: void;
142
+ meta: import("./trpc.js").ProcedureMeta;
143
+ }>;
144
+ /** Ends the console session in the cookie and releases argo's lease. Always clears the cookie. */
145
+ signOut: import("@trpc/server").TRPCMutationProcedure<{
146
+ input: void;
147
+ output: void;
148
+ meta: import("./trpc.js").ProcedureMeta;
149
+ }>;
150
+ }>>;
@@ -0,0 +1,102 @@
1
+ import { accountOutputSchema, consoleGuideOutputSchema, consoleNoticesOutputSchema, consoleSessionOutputSchema, dismissNoticeInputSchema, setGuideProgressInputSchema, setThemeInputSchema, setThemeOutputSchema, redeemSignInTicketInputSchema, signInInputSchema, } from '@aeolus-fleet/common';
2
+ import { TRPCError } from '@trpc/server';
3
+ import { deviceLabelOf } from '../http/device-label.js';
4
+ import { guideStepsOutputOf, noticeOutputOf } from './installation.js';
5
+ import { authenticatedProcedure, ConsoleRefusalDetails, consoleProcedure, okOrThrow, publicProcedure, router } from './trpc.js';
6
+ /**
7
+ * Console procedures: the only ones that exist for the web app alone. They take
8
+ * the operator's email and password once and work with the session cookie,
9
+ * which crews `argo`, from then on. Both change state, so both come only from
10
+ * the console's origin.
11
+ */
12
+ export const consoleRouter = router({
13
+ /** Exchanges the email and password for a session cookie. A mutation, so the password travels in the body, never the URL. */
14
+ signIn: consoleProcedure
15
+ .use(({ ctx, next }) => {
16
+ if (!ctx.takeSignInAttempt(ctx.clientKey)) {
17
+ throw new TRPCError({
18
+ code: 'TOO_MANY_REQUESTS',
19
+ message: 'Too many sign-in attempts. Wait a minute.',
20
+ cause: new ConsoleRefusalDetails({ retryAt: ctx.signInRetryAt(ctx.clientKey).toISOString() }),
21
+ });
22
+ }
23
+ return next();
24
+ })
25
+ .input(signInInputSchema)
26
+ .mutation(async ({ ctx, input }) => {
27
+ const { token, expiresAt } = okOrThrow(await ctx.useCases.signIn({ ...input, device: deviceLabelOf(ctx.userAgent) }));
28
+ ctx.sessionCookie.set(token, expiresAt);
29
+ }),
30
+ /**
31
+ * Exchanges a sign-in ticket a hosting installation issued for a session
32
+ * cookie, as a password sign-in does (docs/blueprint.md, "Installation"). The
33
+ * console's own server calls it with the browser's ticket and passes the
34
+ * cookie on, so it takes no console origin: the ticket is the credential,
35
+ * and it signs in once.
36
+ */
37
+ redeemSignInTicket: publicProcedure.input(redeemSignInTicketInputSchema).mutation(async ({ ctx, input }) => {
38
+ const { token, expiresAt } = okOrThrow(await ctx.useCases.redeemSignInTicket({ ...input, device: deviceLabelOf(ctx.userAgent) }));
39
+ ctx.sessionCookie.set(token, expiresAt);
40
+ }),
41
+ /** The signed-in operator: email, theme, and this console session's device and start; a viewer's session alone. */
42
+ account: authenticatedProcedure.output(accountOutputSchema).query(async ({ ctx }) => {
43
+ const account = okOrThrow(await ctx.useCases.readAccount(ctx.caller));
44
+ return { ...account, session: { ...account.session, since: account.session.since.toISOString() } };
45
+ }),
46
+ /**
47
+ * Whether the request carries a signed-in console session: for another
48
+ * service the operator uses beside the console (decision 0012), which
49
+ * forwards the browser's cookie from its own server and serves its pages
50
+ * without a login of its own. Only the cookie counts, never a crew token:
51
+ * a ship is no operator. Says whose session it is, the operator's or a
52
+ * viewer's, and its ship's scopes, so that service serves a viewer reads
53
+ * only. Counts as console use, so the session's expiry moves as on any
54
+ * console call. A query: it comes from any origin.
55
+ */
56
+ session: publicProcedure.output(consoleSessionOutputSchema).query(async ({ ctx }) => {
57
+ const { sessionToken } = ctx.credentials;
58
+ const use = sessionToken === undefined ? undefined : await ctx.useCases.authenticate.byConsoleSession(sessionToken);
59
+ if (!use) {
60
+ throw new TRPCError({ code: 'UNAUTHORIZED', message: 'No signed-in console session' });
61
+ }
62
+ const { fleetId, kind, scopes } = use.caller;
63
+ if (kind === 'agent') {
64
+ // A console session is the operator's or a viewer's; no agent ever signs in to the console.
65
+ throw new TRPCError({ code: 'UNAUTHORIZED', message: 'No signed-in console session' });
66
+ }
67
+ return { fleetId, expiresAt: use.expiresAt.toISOString(), kind, scopes: [...scopes] };
68
+ }),
69
+ /** Stores the operator's theme on their account, so it follows them to any browser. */
70
+ setTheme: authenticatedProcedure
71
+ .input(setThemeInputSchema)
72
+ .output(setThemeOutputSchema)
73
+ .mutation(async ({ ctx, input }) => {
74
+ okOrThrow(await ctx.useCases.setTheme(ctx.caller, input));
75
+ return {};
76
+ }),
77
+ /** The notices this console session shows above every page (decision 0023): those of its audience it has not dismissed. */
78
+ notices: authenticatedProcedure.output(consoleNoticesOutputSchema).query(async ({ ctx }) => (await ctx.useCases.readNotices(ctx.caller)).map(noticeOutputOf)),
79
+ /** The guide this console session shows (decision 0024), with where it is in it; null when no guide is for its audience. */
80
+ guide: authenticatedProcedure.output(consoleGuideOutputSchema).query(async ({ ctx }) => {
81
+ const guide = await ctx.useCases.readGuide(ctx.caller);
82
+ return guide === null ? null : { steps: guideStepsOutputOf(guide.steps), progress: guide.progress };
83
+ }),
84
+ /** Records where this console session is in the guide, for itself only. */
85
+ recordGuideProgress: authenticatedProcedure.input(setGuideProgressInputSchema).mutation(async ({ ctx, input }) => {
86
+ okOrThrow(await ctx.useCases.recordGuideProgress(ctx.caller, input));
87
+ }),
88
+ /** Dismisses a dismissible notice for this console session only. */
89
+ dismissNotice: authenticatedProcedure.input(dismissNoticeInputSchema).mutation(async ({ ctx, input }) => {
90
+ okOrThrow(await ctx.useCases.dismissNotice(ctx.caller, input));
91
+ }),
92
+ /** Ends the console session in the cookie and releases argo's lease. Always clears the cookie. */
93
+ signOut: consoleProcedure.mutation(async ({ ctx }) => {
94
+ const { sessionToken } = ctx.credentials;
95
+ const use = sessionToken === undefined ? undefined : await ctx.useCases.authenticate.byConsoleSession(sessionToken);
96
+ if (use) {
97
+ await ctx.useCases.signOut(use.caller);
98
+ }
99
+ ctx.sessionCookie.clear();
100
+ }),
101
+ });
102
+ //# sourceMappingURL=console.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"console.js","sourceRoot":"","sources":["../../../src/adapters/trpc/console.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,201 @@
1
+ import type { FleetId } from '@aeolus-fleet/common';
2
+ import type { Authenticate } from '../../domain/identity/authenticate.js';
3
+ import type { ReadAccount } from '../../domain/identity/read-account.js';
4
+ import type { SetTheme } from '../../domain/identity/set-theme.js';
5
+ import type { SignIn } from '../../domain/identity/sign-in.js';
6
+ import type { SignOut } from '../../domain/identity/sign-out.js';
7
+ import type { AcknowledgeDelivery } from '../../domain/messaging/acknowledge-delivery.js';
8
+ import type { AnswerPing } from '../../domain/messaging/answer-ping.js';
9
+ import type { CheckInbox } from '../../domain/messaging/check-inbox.js';
10
+ import type { DismissDelivery } from '../../domain/messaging/dismiss-delivery.js';
11
+ import type { MarkDone } from '../../domain/messaging/mark-done.js';
12
+ import type { MarkRead } from '../../domain/messaging/mark-read.js';
13
+ import type { ReceiveDeliveries } from '../../domain/messaging/receive-deliveries.js';
14
+ import type { ReplyToMessage } from '../../domain/messaging/reply-to-message.js';
15
+ import type { PingShip } from '../../domain/messaging/ping-ship.js';
16
+ import type { ResendDelivery } from '../../domain/messaging/resend-delivery.js';
17
+ import type { SendMessage } from '../../domain/messaging/send-message.js';
18
+ import type { ClaimShip } from '../../domain/registry/claim-ship.js';
19
+ import type { IssueSignInTicket } from '../../domain/identity/issue-sign-in-ticket.js';
20
+ import type { RedeemSignInTicket } from '../../domain/identity/redeem-sign-in-ticket.js';
21
+ import type { GetFleetLimits } from '../../domain/registry/get-fleet-limits.js';
22
+ import type { DismissNotice } from '../../domain/identity/dismiss-notice.js';
23
+ import type { GetGuide } from '../../domain/identity/get-guide.js';
24
+ import type { GetNotices } from '../../domain/identity/get-notices.js';
25
+ import type { ReadGuide } from '../../domain/identity/read-guide.js';
26
+ import type { ReadNotices } from '../../domain/identity/read-notices.js';
27
+ import type { RecordGuideProgress } from '../../domain/identity/record-guide-progress.js';
28
+ import type { SetGuide } from '../../domain/identity/set-guide.js';
29
+ import type { SetNotices } from '../../domain/identity/set-notices.js';
30
+ import type { GetInstallationSettings } from '../../domain/registry/get-installation-settings.js';
31
+ import type { SetFleetLimits } from '../../domain/registry/set-fleet-limits.js';
32
+ import type { SetInstallationSettings } from '../../domain/registry/set-installation-settings.js';
33
+ import type { ReadFleetLimits } from '../../domain/shared/read-fleet-limits.js';
34
+ import type { CommissionShip } from '../../domain/registry/commission-ship.js';
35
+ import type { CreateFleet } from '../../domain/registry/create-fleet.js';
36
+ import type { DeleteFleet } from '../../domain/registry/delete-fleet.js';
37
+ import type { GetInstallationFleet } from '../../domain/registry/get-installation-fleet.js';
38
+ import type { ListInstallationFleets } from '../../domain/registry/list-installation-fleets.js';
39
+ import type { Deregister } from '../../domain/registry/deregister.js';
40
+ import type { GetShip } from '../../domain/registry/get-ship.js';
41
+ import type { GetStartingPrompt } from '../../domain/registry/get-starting-prompt.js';
42
+ import type { ListFleet } from '../../domain/registry/list-fleet.js';
43
+ import type { RecrewShip } from '../../domain/registry/recrew-ship.js';
44
+ import type { ReleaseShip } from '../../domain/registry/release-ship.js';
45
+ import type { RenameShip } from '../../domain/registry/rename-ship.js';
46
+ import type { RetireShip } from '../../domain/registry/retire-ship.js';
47
+ import type { Report } from '../../domain/registry/report.js';
48
+ import type { Whoami } from '../../domain/registry/whoami.js';
49
+ import type { ReadReportLog } from '../../domain/registry/report-log.js';
50
+ import type { RequestCrew } from '../../domain/registry/request-crew.js';
51
+ import type { RemoveCrewRequest } from '../../domain/registry/remove-crew-request.js';
52
+ import type { AssignCrew } from '../../domain/registry/assign-crew.js';
53
+ import type { ReportCrewStatus } from '../../domain/registry/report-crew-status.js';
54
+ import type { ConfirmCrewRelease } from '../../domain/registry/confirm-crew-release.js';
55
+ import type { ReadAssignedCrewRequests } from '../../domain/registry/read-assigned-crew-requests.js';
56
+ import type { ExplainCrewRequest } from '../../domain/registry/explain-crew-request.js';
57
+ import type { Ping } from '../../domain/shared/ping.js';
58
+ import type { ReadFleetEvents } from '../../domain/shared/read-fleet-events.js';
59
+ import type { FollowFleet } from '../../domain/shared/follow-fleet.js';
60
+ import type { ReadInbox } from '../../domain/shared/read-inbox.js';
61
+ import type { ReadMessage } from '../../domain/shared/read-message.js';
62
+ import type { ReadNeedsAttention } from '../../domain/shared/read-needs-attention.js';
63
+ import type { ReadShipMessages } from '../../domain/shared/read-ship-messages.js';
64
+ import type { ReadShipTimeline } from '../../domain/shared/read-ship-timeline.js';
65
+ /** The use cases procedures can call. Wired once at startup. */
66
+ export interface UseCases {
67
+ ping: Ping;
68
+ signIn: SignIn;
69
+ signOut: SignOut;
70
+ readAccount: ReadAccount;
71
+ setTheme: SetTheme;
72
+ setNotices: SetNotices;
73
+ getNotices: GetNotices;
74
+ readNotices: ReadNotices;
75
+ dismissNotice: DismissNotice;
76
+ setGuide: SetGuide;
77
+ getGuide: GetGuide;
78
+ readGuide: ReadGuide;
79
+ recordGuideProgress: RecordGuideProgress;
80
+ authenticate: Authenticate;
81
+ commissionShip: CommissionShip;
82
+ getStartingPrompt: GetStartingPrompt;
83
+ releaseShip: ReleaseShip;
84
+ retireShip: RetireShip;
85
+ renameShip: RenameShip;
86
+ recrewShip: RecrewShip;
87
+ listFleet: ListFleet;
88
+ getShip: GetShip;
89
+ claimShip: ClaimShip;
90
+ whoami: Whoami;
91
+ report: Report;
92
+ reportLog: ReadReportLog;
93
+ requestCrew: RequestCrew;
94
+ removeCrewRequest: RemoveCrewRequest;
95
+ assignCrew: AssignCrew;
96
+ reportCrewStatus: ReportCrewStatus;
97
+ confirmCrewRelease: ConfirmCrewRelease;
98
+ readAssignedCrewRequests: ReadAssignedCrewRequests;
99
+ explainCrewRequest: ExplainCrewRequest;
100
+ deregister: Deregister;
101
+ sendMessage: SendMessage;
102
+ receiveDeliveries: ReceiveDeliveries;
103
+ acknowledgeDelivery: AcknowledgeDelivery;
104
+ answerPing: AnswerPing;
105
+ pingShip: PingShip;
106
+ checkInbox: CheckInbox;
107
+ dismissDelivery: DismissDelivery;
108
+ resendDelivery: ResendDelivery;
109
+ markRead: MarkRead;
110
+ markDone: MarkDone;
111
+ replyToMessage: ReplyToMessage;
112
+ readFleetEvents: ReadFleetEvents;
113
+ followFleet: FollowFleet;
114
+ readShipTimeline: ReadShipTimeline;
115
+ readShipMessages: ReadShipMessages;
116
+ readMessage: ReadMessage;
117
+ readNeedsAttention: ReadNeedsAttention;
118
+ readInbox: ReadInbox;
119
+ createFleet: CreateFleet;
120
+ deleteFleet: DeleteFleet;
121
+ listInstallationFleets: ListInstallationFleets;
122
+ getInstallationFleet: GetInstallationFleet;
123
+ issueSignInTicket: IssueSignInTicket;
124
+ redeemSignInTicket: RedeemSignInTicket;
125
+ getInstallationSettings: GetInstallationSettings;
126
+ setInstallationSettings: SetInstallationSettings;
127
+ getFleetLimits: GetFleetLimits;
128
+ setFleetLimits: SetFleetLimits;
129
+ readFleetLimits: ReadFleetLimits;
130
+ }
131
+ /** What the request carried to say who it is. Neither is trusted until a use case checks it. */
132
+ export interface RequestCredentials {
133
+ /** A crew token from `Authorization: Bearer`. */
134
+ bearer?: string;
135
+ /** A console session token from the session cookie. */
136
+ sessionToken?: string;
137
+ }
138
+ /** Writes the console session cookie on the response. */
139
+ export interface SessionCookie {
140
+ set(token: string, expiresAt: Date): void;
141
+ clear(): void;
142
+ }
143
+ /** Wakes a live subscription when its fleet has committed events. */
144
+ export interface FleetEventWatches {
145
+ watch(fleetId: FleetId): {
146
+ /** True when woken; false when the subscription ended or the server stops. */
147
+ next(signal: AbortSignal): Promise<boolean>;
148
+ stop(): void;
149
+ };
150
+ }
151
+ /**
152
+ * The installation token (docs/architecture.md, "Installation"): the one the
153
+ * server is configured with, none when the installation procedures are off,
154
+ * and the one the request presented in x-aeolus-installation-token.
155
+ */
156
+ export interface InstallationCredential {
157
+ configured: string | undefined;
158
+ presented: string | undefined;
159
+ }
160
+ /** Where a procedure writes what the server must keep a record of, such as a deleted fleet. */
161
+ export interface ProcedureLog {
162
+ info(details: Record<string, unknown>, message: string): void;
163
+ }
164
+ export interface Context {
165
+ useCases: UseCases;
166
+ installation: InstallationCredential;
167
+ log: ProcedureLog;
168
+ /** Where ships reach the fleet, the public URL: what starting prompts and crew lines carry. */
169
+ fleetUrl: string;
170
+ fleetEvents: FleetEventWatches;
171
+ credentials: RequestCredentials;
172
+ /**
173
+ * Whether the door takes the console session: `/trpc` does. The doors for
174
+ * ships (REST, MCP) take the crew token alone, so a refusal there names only
175
+ * the crew token; a ship has no console to sign in to.
176
+ */
177
+ canUseConsoleSession: boolean;
178
+ sessionCookie: SessionCookie;
179
+ /** The User-Agent header the request carried, if any: what a console sign-in names its device by. */
180
+ userAgent: string | undefined;
181
+ /** The Origin header the request carried, if any. A browser sends one with every POST. */
182
+ origin: string | undefined;
183
+ /** The console's origin: the only one state-changing console calls may come from. */
184
+ consoleOrigin: string;
185
+ /** Who is asking, for rate limits: the client address. */
186
+ clientKey: string;
187
+ /** This request's own id: a server failure answers with it, and its log line carries it. */
188
+ requestId: string;
189
+ /** Counts sign-in attempts per client; false when over the limit. */
190
+ takeSignInAttempt: (clientKey: string) => boolean;
191
+ /** When a client over the sign-in limit may try again. */
192
+ signInRetryAt: (clientKey: string) => Date;
193
+ /**
194
+ * Failed register attempts per client, apart from sign-in attempts: only a
195
+ * wrong ship id or secret counts, never a successful claim (ADR 0015).
196
+ */
197
+ registerFailures: {
198
+ hasRoom(clientKey: string): boolean;
199
+ count(clientKey: string): void;
200
+ };
201
+ }
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context.js","sourceRoot":"","sources":["../../../src/adapters/trpc/context.ts"],"names":[],"mappings":""}