@aeolus-fleet/core 0.0.0 → 0.18.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 (608) hide show
  1. package/README.md +98 -1
  2. package/dist/adapters/cli/fleet-init.d.ts +14 -0
  3. package/dist/adapters/cli/fleet-init.js +68 -0
  4. package/dist/adapters/cli/fleet-init.js.map +1 -0
  5. package/dist/adapters/cli/io.d.ts +35 -0
  6. package/dist/adapters/cli/io.js +21 -0
  7. package/dist/adapters/cli/io.js.map +1 -0
  8. package/dist/adapters/cli/migrate.d.ts +11 -0
  9. package/dist/adapters/cli/migrate.js +12 -0
  10. package/dist/adapters/cli/migrate.js.map +1 -0
  11. package/dist/adapters/cli/operator-reset-password.d.ts +12 -0
  12. package/dist/adapters/cli/operator-reset-password.js +49 -0
  13. package/dist/adapters/cli/operator-reset-password.js.map +1 -0
  14. package/dist/adapters/cli/run.d.ts +14 -0
  15. package/dist/adapters/cli/run.js +40 -0
  16. package/dist/adapters/cli/run.js.map +1 -0
  17. package/dist/adapters/cli/terminal.d.ts +20 -0
  18. package/dist/adapters/cli/terminal.js +68 -0
  19. package/dist/adapters/cli/terminal.js.map +1 -0
  20. package/dist/adapters/crypto/passwords.d.ts +2 -0
  21. package/dist/adapters/crypto/passwords.js +59 -0
  22. package/dist/adapters/crypto/passwords.js.map +1 -0
  23. package/dist/adapters/crypto/secrets.d.ts +5 -0
  24. package/dist/adapters/crypto/secrets.js +10 -0
  25. package/dist/adapters/crypto/secrets.js.map +1 -0
  26. package/dist/adapters/http/device-label.d.ts +9 -0
  27. package/dist/adapters/http/device-label.js +39 -0
  28. package/dist/adapters/http/device-label.js.map +1 -0
  29. package/dist/adapters/http/rate-limiter.d.ts +21 -0
  30. package/dist/adapters/http/rate-limiter.js +44 -0
  31. package/dist/adapters/http/rate-limiter.js.map +1 -0
  32. package/dist/adapters/http/request-credentials.d.ts +23 -0
  33. package/dist/adapters/http/request-credentials.js +45 -0
  34. package/dist/adapters/http/request-credentials.js.map +1 -0
  35. package/dist/adapters/http/server.d.ts +47 -0
  36. package/dist/adapters/http/server.js +216 -0
  37. package/dist/adapters/http/server.js.map +1 -0
  38. package/dist/adapters/http/version.d.ts +9 -0
  39. package/dist/adapters/http/version.js +23 -0
  40. package/dist/adapters/http/version.js.map +1 -0
  41. package/dist/adapters/mcp/mcp-endpoint.d.ts +8 -0
  42. package/dist/adapters/mcp/mcp-endpoint.js +127 -0
  43. package/dist/adapters/mcp/mcp-endpoint.js.map +1 -0
  44. package/dist/adapters/prisma/client.d.ts +10 -0
  45. package/dist/adapters/prisma/client.js +20 -0
  46. package/dist/adapters/prisma/client.js.map +1 -0
  47. package/dist/adapters/prisma/delivery-notices.d.ts +34 -0
  48. package/dist/adapters/prisma/delivery-notices.js +113 -0
  49. package/dist/adapters/prisma/delivery-notices.js.map +1 -0
  50. package/dist/adapters/prisma/event-log.d.ts +11 -0
  51. package/dist/adapters/prisma/event-log.js +61 -0
  52. package/dist/adapters/prisma/event-log.js.map +1 -0
  53. package/dist/adapters/prisma/failure-log.d.ts +22 -0
  54. package/dist/adapters/prisma/failure-log.js +70 -0
  55. package/dist/adapters/prisma/failure-log.js.map +1 -0
  56. package/dist/adapters/prisma/fleet-counter.d.ts +3 -0
  57. package/dist/adapters/prisma/fleet-counter.js +6 -0
  58. package/dist/adapters/prisma/fleet-counter.js.map +1 -0
  59. package/dist/adapters/prisma/fleet-event-wakeups.d.ts +33 -0
  60. package/dist/adapters/prisma/fleet-event-wakeups.js +86 -0
  61. package/dist/adapters/prisma/fleet-event-wakeups.js.map +1 -0
  62. package/dist/adapters/prisma/generated/browser.d.ts +127 -0
  63. package/dist/adapters/prisma/generated/browser.js +18 -0
  64. package/dist/adapters/prisma/generated/browser.js.map +1 -0
  65. package/dist/adapters/prisma/generated/client.d.ts +146 -0
  66. package/dist/adapters/prisma/generated/client.js +38 -0
  67. package/dist/adapters/prisma/generated/client.js.map +1 -0
  68. package/dist/adapters/prisma/generated/commonInputTypes.d.ts +879 -0
  69. package/dist/adapters/prisma/generated/commonInputTypes.js +11 -0
  70. package/dist/adapters/prisma/generated/commonInputTypes.js.map +1 -0
  71. package/dist/adapters/prisma/generated/enums.d.ts +75 -0
  72. package/dist/adapters/prisma/generated/enums.js +73 -0
  73. package/dist/adapters/prisma/generated/enums.js.map +1 -0
  74. package/dist/adapters/prisma/generated/internal/class.d.ts +308 -0
  75. package/dist/adapters/prisma/generated/internal/class.js +52 -0
  76. package/dist/adapters/prisma/generated/internal/class.js.map +1 -0
  77. package/dist/adapters/prisma/generated/internal/prismaNamespace.d.ts +2131 -0
  78. package/dist/adapters/prisma/generated/internal/prismaNamespace.js +295 -0
  79. package/dist/adapters/prisma/generated/internal/prismaNamespace.js.map +1 -0
  80. package/dist/adapters/prisma/generated/internal/prismaNamespaceBrowser.d.ts +273 -0
  81. package/dist/adapters/prisma/generated/internal/prismaNamespaceBrowser.js +265 -0
  82. package/dist/adapters/prisma/generated/internal/prismaNamespaceBrowser.js.map +1 -0
  83. package/dist/adapters/prisma/generated/models/ConsoleSession.d.ts +2137 -0
  84. package/dist/adapters/prisma/generated/models/ConsoleSession.js +2 -0
  85. package/dist/adapters/prisma/generated/models/ConsoleSession.js.map +1 -0
  86. package/dist/adapters/prisma/generated/models/Credential.d.ts +1360 -0
  87. package/dist/adapters/prisma/generated/models/Credential.js +2 -0
  88. package/dist/adapters/prisma/generated/models/Credential.js.map +1 -0
  89. package/dist/adapters/prisma/generated/models/CrewRequest.d.ts +1558 -0
  90. package/dist/adapters/prisma/generated/models/CrewRequest.js +2 -0
  91. package/dist/adapters/prisma/generated/models/CrewRequest.js.map +1 -0
  92. package/dist/adapters/prisma/generated/models/Delivery.d.ts +2211 -0
  93. package/dist/adapters/prisma/generated/models/Delivery.js +2 -0
  94. package/dist/adapters/prisma/generated/models/Delivery.js.map +1 -0
  95. package/dist/adapters/prisma/generated/models/Event.d.ts +1991 -0
  96. package/dist/adapters/prisma/generated/models/Event.js +2 -0
  97. package/dist/adapters/prisma/generated/models/Event.js.map +1 -0
  98. package/dist/adapters/prisma/generated/models/Fleet.d.ts +3032 -0
  99. package/dist/adapters/prisma/generated/models/Fleet.js +2 -0
  100. package/dist/adapters/prisma/generated/models/Fleet.js.map +1 -0
  101. package/dist/adapters/prisma/generated/models/Guide.d.ts +943 -0
  102. package/dist/adapters/prisma/generated/models/Guide.js +2 -0
  103. package/dist/adapters/prisma/generated/models/Guide.js.map +1 -0
  104. package/dist/adapters/prisma/generated/models/GuideProgress.d.ts +1323 -0
  105. package/dist/adapters/prisma/generated/models/GuideProgress.js +2 -0
  106. package/dist/adapters/prisma/generated/models/GuideProgress.js.map +1 -0
  107. package/dist/adapters/prisma/generated/models/InstallationRequest.d.ts +1036 -0
  108. package/dist/adapters/prisma/generated/models/InstallationRequest.js +2 -0
  109. package/dist/adapters/prisma/generated/models/InstallationRequest.js.map +1 -0
  110. package/dist/adapters/prisma/generated/models/InstallationSettings.d.ts +1027 -0
  111. package/dist/adapters/prisma/generated/models/InstallationSettings.js +2 -0
  112. package/dist/adapters/prisma/generated/models/InstallationSettings.js.map +1 -0
  113. package/dist/adapters/prisma/generated/models/Lease.d.ts +2076 -0
  114. package/dist/adapters/prisma/generated/models/Lease.js +2 -0
  115. package/dist/adapters/prisma/generated/models/Lease.js.map +1 -0
  116. package/dist/adapters/prisma/generated/models/Message.d.ts +2869 -0
  117. package/dist/adapters/prisma/generated/models/Message.js +2 -0
  118. package/dist/adapters/prisma/generated/models/Message.js.map +1 -0
  119. package/dist/adapters/prisma/generated/models/Notice.d.ts +1068 -0
  120. package/dist/adapters/prisma/generated/models/Notice.js +2 -0
  121. package/dist/adapters/prisma/generated/models/Notice.js.map +1 -0
  122. package/dist/adapters/prisma/generated/models/NoticeDismissal.d.ts +1245 -0
  123. package/dist/adapters/prisma/generated/models/NoticeDismissal.js +2 -0
  124. package/dist/adapters/prisma/generated/models/NoticeDismissal.js.map +1 -0
  125. package/dist/adapters/prisma/generated/models/Operator.d.ts +1173 -0
  126. package/dist/adapters/prisma/generated/models/Operator.js +2 -0
  127. package/dist/adapters/prisma/generated/models/Operator.js.map +1 -0
  128. package/dist/adapters/prisma/generated/models/Ship.d.ts +3320 -0
  129. package/dist/adapters/prisma/generated/models/Ship.js +2 -0
  130. package/dist/adapters/prisma/generated/models/Ship.js.map +1 -0
  131. package/dist/adapters/prisma/generated/models/SignInTicket.d.ts +1222 -0
  132. package/dist/adapters/prisma/generated/models/SignInTicket.js +2 -0
  133. package/dist/adapters/prisma/generated/models/SignInTicket.js.map +1 -0
  134. package/dist/adapters/prisma/generated/models.d.ts +18 -0
  135. package/dist/adapters/prisma/generated/models.js +2 -0
  136. package/dist/adapters/prisma/generated/models.js.map +1 -0
  137. package/dist/adapters/prisma/history.d.ts +3 -0
  138. package/dist/adapters/prisma/history.js +289 -0
  139. package/dist/adapters/prisma/history.js.map +1 -0
  140. package/dist/adapters/prisma/identity.d.ts +10 -0
  141. package/dist/adapters/prisma/identity.js +213 -0
  142. package/dist/adapters/prisma/identity.js.map +1 -0
  143. package/dist/adapters/prisma/installation.d.ts +13 -0
  144. package/dist/adapters/prisma/installation.js +155 -0
  145. package/dist/adapters/prisma/installation.js.map +1 -0
  146. package/dist/adapters/prisma/messaging.d.ts +4 -0
  147. package/dist/adapters/prisma/messaging.js +156 -0
  148. package/dist/adapters/prisma/messaging.js.map +1 -0
  149. package/dist/adapters/prisma/migrate.d.ts +5 -0
  150. package/dist/adapters/prisma/migrate.js +40 -0
  151. package/dist/adapters/prisma/migrate.js.map +1 -0
  152. package/dist/adapters/prisma/receiver-wakeups.d.ts +26 -0
  153. package/dist/adapters/prisma/receiver-wakeups.js +79 -0
  154. package/dist/adapters/prisma/receiver-wakeups.js.map +1 -0
  155. package/dist/adapters/prisma/registry.d.ts +8 -0
  156. package/dist/adapters/prisma/registry.js +427 -0
  157. package/dist/adapters/prisma/registry.js.map +1 -0
  158. package/dist/adapters/prisma/rows.d.ts +58 -0
  159. package/dist/adapters/prisma/rows.js +408 -0
  160. package/dist/adapters/prisma/rows.js.map +1 -0
  161. package/dist/adapters/prisma/unit-of-work.d.ts +36 -0
  162. package/dist/adapters/prisma/unit-of-work.js +66 -0
  163. package/dist/adapters/prisma/unit-of-work.js.map +1 -0
  164. package/dist/adapters/rest/openapi.d.ts +12 -0
  165. package/dist/adapters/rest/openapi.js +62 -0
  166. package/dist/adapters/rest/openapi.js.map +1 -0
  167. package/dist/adapters/rest/rest-api.d.ts +8 -0
  168. package/dist/adapters/rest/rest-api.js +61 -0
  169. package/dist/adapters/rest/rest-api.js.map +1 -0
  170. package/dist/adapters/trpc/console.d.ts +150 -0
  171. package/dist/adapters/trpc/console.js +102 -0
  172. package/dist/adapters/trpc/console.js.map +1 -0
  173. package/dist/adapters/trpc/context.d.ts +201 -0
  174. package/dist/adapters/trpc/context.js +2 -0
  175. package/dist/adapters/trpc/context.js.map +1 -0
  176. package/dist/adapters/trpc/fleet.d.ts +637 -0
  177. package/dist/adapters/trpc/fleet.js +437 -0
  178. package/dist/adapters/trpc/fleet.js.map +1 -0
  179. package/dist/adapters/trpc/installation.d.ts +414 -0
  180. package/dist/adapters/trpc/installation.js +138 -0
  181. package/dist/adapters/trpc/installation.js.map +1 -0
  182. package/dist/adapters/trpc/router.d.ts +1263 -0
  183. package/dist/adapters/trpc/router.js +15 -0
  184. package/dist/adapters/trpc/router.js.map +1 -0
  185. package/dist/adapters/trpc/ship-contract.d.ts +107 -0
  186. package/dist/adapters/trpc/ship-contract.js +165 -0
  187. package/dist/adapters/trpc/ship-contract.js.map +1 -0
  188. package/dist/adapters/trpc/ship-protocol.d.ts +9 -0
  189. package/dist/adapters/trpc/ship-protocol.js +25 -0
  190. package/dist/adapters/trpc/ship-protocol.js.map +1 -0
  191. package/dist/adapters/trpc/ship.d.ts +209 -0
  192. package/dist/adapters/trpc/ship.js +214 -0
  193. package/dist/adapters/trpc/ship.js.map +1 -0
  194. package/dist/adapters/trpc/starting-prompt-text.d.ts +7 -0
  195. package/dist/adapters/trpc/starting-prompt-text.js +60 -0
  196. package/dist/adapters/trpc/starting-prompt-text.js.map +1 -0
  197. package/dist/adapters/trpc/system.d.ts +29 -0
  198. package/dist/adapters/trpc/system.js +15 -0
  199. package/dist/adapters/trpc/system.js.map +1 -0
  200. package/dist/adapters/trpc/trpc.d.ts +131 -0
  201. package/dist/adapters/trpc/trpc.js +350 -0
  202. package/dist/adapters/trpc/trpc.js.map +1 -0
  203. package/dist/app.d.ts +31 -0
  204. package/dist/app.js +80 -0
  205. package/dist/app.js.map +1 -0
  206. package/dist/bin/aeolus-core.d.ts +2 -0
  207. package/dist/bin/aeolus-core.js +45 -0
  208. package/dist/bin/aeolus-core.js.map +1 -0
  209. package/dist/config.d.ts +35 -0
  210. package/dist/config.js +74 -0
  211. package/dist/config.js.map +1 -0
  212. package/dist/domain/identity/authenticate.d.ts +46 -0
  213. package/dist/domain/identity/authenticate.js +18 -0
  214. package/dist/domain/identity/authenticate.js.map +1 -0
  215. package/dist/domain/identity/console-session.d.ts +54 -0
  216. package/dist/domain/identity/console-session.js +29 -0
  217. package/dist/domain/identity/console-session.js.map +1 -0
  218. package/dist/domain/identity/credential.d.ts +76 -0
  219. package/dist/domain/identity/credential.js +63 -0
  220. package/dist/domain/identity/credential.js.map +1 -0
  221. package/dist/domain/identity/dismiss-notice.d.ts +19 -0
  222. package/dist/domain/identity/dismiss-notice.js +23 -0
  223. package/dist/domain/identity/dismiss-notice.js.map +1 -0
  224. package/dist/domain/identity/get-guide.d.ts +7 -0
  225. package/dist/domain/identity/get-guide.js +5 -0
  226. package/dist/domain/identity/get-guide.js.map +1 -0
  227. package/dist/domain/identity/get-notices.d.ts +7 -0
  228. package/dist/domain/identity/get-notices.js +5 -0
  229. package/dist/domain/identity/get-notices.js.map +1 -0
  230. package/dist/domain/identity/guide.d.ts +24 -0
  231. package/dist/domain/identity/guide.js +3 -0
  232. package/dist/domain/identity/guide.js.map +1 -0
  233. package/dist/domain/identity/issue-sign-in-ticket.d.ts +38 -0
  234. package/dist/domain/identity/issue-sign-in-ticket.js +39 -0
  235. package/dist/domain/identity/issue-sign-in-ticket.js.map +1 -0
  236. package/dist/domain/identity/notice.d.ts +16 -0
  237. package/dist/domain/identity/notice.js +12 -0
  238. package/dist/domain/identity/notice.js.map +1 -0
  239. package/dist/domain/identity/operator-account.d.ts +28 -0
  240. package/dist/domain/identity/operator-account.js +21 -0
  241. package/dist/domain/identity/operator-account.js.map +1 -0
  242. package/dist/domain/identity/ports.d.ts +193 -0
  243. package/dist/domain/identity/ports.js +2 -0
  244. package/dist/domain/identity/ports.js.map +1 -0
  245. package/dist/domain/identity/public.d.ts +3 -0
  246. package/dist/domain/identity/public.js +5 -0
  247. package/dist/domain/identity/public.js.map +1 -0
  248. package/dist/domain/identity/read-account.d.ts +35 -0
  249. package/dist/domain/identity/read-account.js +27 -0
  250. package/dist/domain/identity/read-account.js.map +1 -0
  251. package/dist/domain/identity/read-guide.d.ts +18 -0
  252. package/dist/domain/identity/read-guide.js +21 -0
  253. package/dist/domain/identity/read-guide.js.map +1 -0
  254. package/dist/domain/identity/read-notices.d.ts +13 -0
  255. package/dist/domain/identity/read-notices.js +17 -0
  256. package/dist/domain/identity/read-notices.js.map +1 -0
  257. package/dist/domain/identity/record-guide-progress.d.ts +19 -0
  258. package/dist/domain/identity/record-guide-progress.js +24 -0
  259. package/dist/domain/identity/record-guide-progress.js.map +1 -0
  260. package/dist/domain/identity/redeem-sign-in-ticket.d.ts +34 -0
  261. package/dist/domain/identity/redeem-sign-in-ticket.js +25 -0
  262. package/dist/domain/identity/redeem-sign-in-ticket.js.map +1 -0
  263. package/dist/domain/identity/reset-operator-password.d.ts +34 -0
  264. package/dist/domain/identity/reset-operator-password.js +55 -0
  265. package/dist/domain/identity/reset-operator-password.js.map +1 -0
  266. package/dist/domain/identity/set-guide.d.ts +13 -0
  267. package/dist/domain/identity/set-guide.js +12 -0
  268. package/dist/domain/identity/set-guide.js.map +1 -0
  269. package/dist/domain/identity/set-notices.d.ts +13 -0
  270. package/dist/domain/identity/set-notices.js +12 -0
  271. package/dist/domain/identity/set-notices.js.map +1 -0
  272. package/dist/domain/identity/set-theme.d.ts +21 -0
  273. package/dist/domain/identity/set-theme.js +19 -0
  274. package/dist/domain/identity/set-theme.js.map +1 -0
  275. package/dist/domain/identity/sign-in-ticket.d.ts +21 -0
  276. package/dist/domain/identity/sign-in-ticket.js +5 -0
  277. package/dist/domain/identity/sign-in-ticket.js.map +1 -0
  278. package/dist/domain/identity/sign-in.d.ts +51 -0
  279. package/dist/domain/identity/sign-in.js +43 -0
  280. package/dist/domain/identity/sign-in.js.map +1 -0
  281. package/dist/domain/identity/sign-out.d.ts +20 -0
  282. package/dist/domain/identity/sign-out.js +32 -0
  283. package/dist/domain/identity/sign-out.js.map +1 -0
  284. package/dist/domain/identity/start-console-session.d.ts +27 -0
  285. package/dist/domain/identity/start-console-session.js +54 -0
  286. package/dist/domain/identity/start-console-session.js.map +1 -0
  287. package/dist/domain/identity/start-viewer-session.d.ts +29 -0
  288. package/dist/domain/identity/start-viewer-session.js +42 -0
  289. package/dist/domain/identity/start-viewer-session.js.map +1 -0
  290. package/dist/domain/messaging/acknowledge-delivery.d.ts +30 -0
  291. package/dist/domain/messaging/acknowledge-delivery.js +31 -0
  292. package/dist/domain/messaging/acknowledge-delivery.js.map +1 -0
  293. package/dist/domain/messaging/answer-ping.d.ts +33 -0
  294. package/dist/domain/messaging/answer-ping.js +37 -0
  295. package/dist/domain/messaging/answer-ping.js.map +1 -0
  296. package/dist/domain/messaging/check-inbox.d.ts +33 -0
  297. package/dist/domain/messaging/check-inbox.js +61 -0
  298. package/dist/domain/messaging/check-inbox.js.map +1 -0
  299. package/dist/domain/messaging/content-type.d.ts +9 -0
  300. package/dist/domain/messaging/content-type.js +18 -0
  301. package/dist/domain/messaging/content-type.js.map +1 -0
  302. package/dist/domain/messaging/daily-message-limit.d.ts +19 -0
  303. package/dist/domain/messaging/daily-message-limit.js +24 -0
  304. package/dist/domain/messaging/daily-message-limit.js.map +1 -0
  305. package/dist/domain/messaging/delivery.d.ts +116 -0
  306. package/dist/domain/messaging/delivery.js +201 -0
  307. package/dist/domain/messaging/delivery.js.map +1 -0
  308. package/dist/domain/messaging/dismiss-delivery.d.ts +28 -0
  309. package/dist/domain/messaging/dismiss-delivery.js +29 -0
  310. package/dist/domain/messaging/dismiss-delivery.js.map +1 -0
  311. package/dist/domain/messaging/inbox-wait.d.ts +8 -0
  312. package/dist/domain/messaging/inbox-wait.js +19 -0
  313. package/dist/domain/messaging/inbox-wait.js.map +1 -0
  314. package/dist/domain/messaging/mark-done.d.ts +45 -0
  315. package/dist/domain/messaging/mark-done.js +49 -0
  316. package/dist/domain/messaging/mark-done.js.map +1 -0
  317. package/dist/domain/messaging/mark-read.d.ts +27 -0
  318. package/dist/domain/messaging/mark-read.js +34 -0
  319. package/dist/domain/messaging/mark-read.js.map +1 -0
  320. package/dist/domain/messaging/message.d.ts +104 -0
  321. package/dist/domain/messaging/message.js +84 -0
  322. package/dist/domain/messaging/message.js.map +1 -0
  323. package/dist/domain/messaging/payload.d.ts +9 -0
  324. package/dist/domain/messaging/payload.js +16 -0
  325. package/dist/domain/messaging/payload.js.map +1 -0
  326. package/dist/domain/messaging/ping-ship.d.ts +38 -0
  327. package/dist/domain/messaging/ping-ship.js +42 -0
  328. package/dist/domain/messaging/ping-ship.js.map +1 -0
  329. package/dist/domain/messaging/ports.d.ts +116 -0
  330. package/dist/domain/messaging/ports.js +2 -0
  331. package/dist/domain/messaging/ports.js.map +1 -0
  332. package/dist/domain/messaging/receive-deliveries.d.ts +68 -0
  333. package/dist/domain/messaging/receive-deliveries.js +119 -0
  334. package/dist/domain/messaging/receive-deliveries.js.map +1 -0
  335. package/dist/domain/messaging/receive-max.d.ts +8 -0
  336. package/dist/domain/messaging/receive-max.js +17 -0
  337. package/dist/domain/messaging/receive-max.js.map +1 -0
  338. package/dist/domain/messaging/reply-to-message.d.ts +35 -0
  339. package/dist/domain/messaging/reply-to-message.js +49 -0
  340. package/dist/domain/messaging/reply-to-message.js.map +1 -0
  341. package/dist/domain/messaging/resend-delivery.d.ts +48 -0
  342. package/dist/domain/messaging/resend-delivery.js +97 -0
  343. package/dist/domain/messaging/resend-delivery.js.map +1 -0
  344. package/dist/domain/messaging/send-message.d.ts +88 -0
  345. package/dist/domain/messaging/send-message.js +115 -0
  346. package/dist/domain/messaging/send-message.js.map +1 -0
  347. package/dist/domain/messaging/send-request.d.ts +16 -0
  348. package/dist/domain/messaging/send-request.js +18 -0
  349. package/dist/domain/messaging/send-request.js.map +1 -0
  350. package/dist/domain/registry/applied-limits.d.ts +15 -0
  351. package/dist/domain/registry/applied-limits.js +15 -0
  352. package/dist/domain/registry/applied-limits.js.map +1 -0
  353. package/dist/domain/registry/assign-crew.d.ts +31 -0
  354. package/dist/domain/registry/assign-crew.js +35 -0
  355. package/dist/domain/registry/assign-crew.js.map +1 -0
  356. package/dist/domain/registry/claim-ship.d.ts +49 -0
  357. package/dist/domain/registry/claim-ship.js +59 -0
  358. package/dist/domain/registry/claim-ship.js.map +1 -0
  359. package/dist/domain/registry/commission-ship.d.ts +54 -0
  360. package/dist/domain/registry/commission-ship.js +70 -0
  361. package/dist/domain/registry/commission-ship.js.map +1 -0
  362. package/dist/domain/registry/confirm-crew-release.d.ts +28 -0
  363. package/dist/domain/registry/confirm-crew-release.js +28 -0
  364. package/dist/domain/registry/confirm-crew-release.js.map +1 -0
  365. package/dist/domain/registry/create-fleet.d.ts +39 -0
  366. package/dist/domain/registry/create-fleet.js +56 -0
  367. package/dist/domain/registry/create-fleet.js.map +1 -0
  368. package/dist/domain/registry/crew-request.d.ts +148 -0
  369. package/dist/domain/registry/crew-request.js +175 -0
  370. package/dist/domain/registry/crew-request.js.map +1 -0
  371. package/dist/domain/registry/delete-fleet.d.ts +46 -0
  372. package/dist/domain/registry/delete-fleet.js +34 -0
  373. package/dist/domain/registry/delete-fleet.js.map +1 -0
  374. package/dist/domain/registry/deregister.d.ts +32 -0
  375. package/dist/domain/registry/deregister.js +38 -0
  376. package/dist/domain/registry/deregister.js.map +1 -0
  377. package/dist/domain/registry/explain-crew-request.d.ts +30 -0
  378. package/dist/domain/registry/explain-crew-request.js +31 -0
  379. package/dist/domain/registry/explain-crew-request.js.map +1 -0
  380. package/dist/domain/registry/fleet.d.ts +12 -0
  381. package/dist/domain/registry/fleet.js +12 -0
  382. package/dist/domain/registry/fleet.js.map +1 -0
  383. package/dist/domain/registry/found-fleet.d.ts +32 -0
  384. package/dist/domain/registry/found-fleet.js +43 -0
  385. package/dist/domain/registry/found-fleet.js.map +1 -0
  386. package/dist/domain/registry/get-fleet-limits.d.ts +17 -0
  387. package/dist/domain/registry/get-fleet-limits.js +14 -0
  388. package/dist/domain/registry/get-fleet-limits.js.map +1 -0
  389. package/dist/domain/registry/get-installation-fleet.d.ts +15 -0
  390. package/dist/domain/registry/get-installation-fleet.js +12 -0
  391. package/dist/domain/registry/get-installation-fleet.js.map +1 -0
  392. package/dist/domain/registry/get-installation-settings.d.ts +7 -0
  393. package/dist/domain/registry/get-installation-settings.js +5 -0
  394. package/dist/domain/registry/get-installation-settings.js.map +1 -0
  395. package/dist/domain/registry/get-ship.d.ts +34 -0
  396. package/dist/domain/registry/get-ship.js +36 -0
  397. package/dist/domain/registry/get-ship.js.map +1 -0
  398. package/dist/domain/registry/get-starting-prompt.d.ts +24 -0
  399. package/dist/domain/registry/get-starting-prompt.js +46 -0
  400. package/dist/domain/registry/get-starting-prompt.js.map +1 -0
  401. package/dist/domain/registry/initialise-fleet.d.ts +28 -0
  402. package/dist/domain/registry/initialise-fleet.js +39 -0
  403. package/dist/domain/registry/initialise-fleet.js.map +1 -0
  404. package/dist/domain/registry/installation-fleet.d.ts +36 -0
  405. package/dist/domain/registry/installation-fleet.js +22 -0
  406. package/dist/domain/registry/installation-fleet.js.map +1 -0
  407. package/dist/domain/registry/installation-request.d.ts +23 -0
  408. package/dist/domain/registry/installation-request.js +5 -0
  409. package/dist/domain/registry/installation-request.js.map +1 -0
  410. package/dist/domain/registry/lease.d.ts +51 -0
  411. package/dist/domain/registry/lease.js +39 -0
  412. package/dist/domain/registry/lease.js.map +1 -0
  413. package/dist/domain/registry/leases.d.ts +66 -0
  414. package/dist/domain/registry/leases.js +80 -0
  415. package/dist/domain/registry/leases.js.map +1 -0
  416. package/dist/domain/registry/limits.d.ts +50 -0
  417. package/dist/domain/registry/limits.js +24 -0
  418. package/dist/domain/registry/limits.js.map +1 -0
  419. package/dist/domain/registry/list-fleet.d.ts +70 -0
  420. package/dist/domain/registry/list-fleet.js +47 -0
  421. package/dist/domain/registry/list-fleet.js.map +1 -0
  422. package/dist/domain/registry/list-fleets.d.ts +11 -0
  423. package/dist/domain/registry/list-fleets.js +9 -0
  424. package/dist/domain/registry/list-fleets.js.map +1 -0
  425. package/dist/domain/registry/list-installation-fleets.d.ts +15 -0
  426. package/dist/domain/registry/list-installation-fleets.js +15 -0
  427. package/dist/domain/registry/list-installation-fleets.js.map +1 -0
  428. package/dist/domain/registry/ping-status.d.ts +17 -0
  429. package/dist/domain/registry/ping-status.js +28 -0
  430. package/dist/domain/registry/ping-status.js.map +1 -0
  431. package/dist/domain/registry/pingable-ship.d.ts +22 -0
  432. package/dist/domain/registry/pingable-ship.js +21 -0
  433. package/dist/domain/registry/pingable-ship.js.map +1 -0
  434. package/dist/domain/registry/ports.d.ts +318 -0
  435. package/dist/domain/registry/ports.js +2 -0
  436. package/dist/domain/registry/ports.js.map +1 -0
  437. package/dist/domain/registry/public.d.ts +8 -0
  438. package/dist/domain/registry/public.js +10 -0
  439. package/dist/domain/registry/public.js.map +1 -0
  440. package/dist/domain/registry/read-assigned-crew-requests.d.ts +14 -0
  441. package/dist/domain/registry/read-assigned-crew-requests.js +15 -0
  442. package/dist/domain/registry/read-assigned-crew-requests.js.map +1 -0
  443. package/dist/domain/registry/recrew-ship.d.ts +33 -0
  444. package/dist/domain/registry/recrew-ship.js +34 -0
  445. package/dist/domain/registry/recrew-ship.js.map +1 -0
  446. package/dist/domain/registry/release-ship.d.ts +38 -0
  447. package/dist/domain/registry/release-ship.js +47 -0
  448. package/dist/domain/registry/release-ship.js.map +1 -0
  449. package/dist/domain/registry/remove-crew-request.d.ts +28 -0
  450. package/dist/domain/registry/remove-crew-request.js +36 -0
  451. package/dist/domain/registry/remove-crew-request.js.map +1 -0
  452. package/dist/domain/registry/rename-ship.d.ts +30 -0
  453. package/dist/domain/registry/rename-ship.js +39 -0
  454. package/dist/domain/registry/rename-ship.js.map +1 -0
  455. package/dist/domain/registry/report-crew-status.d.ts +29 -0
  456. package/dist/domain/registry/report-crew-status.js +30 -0
  457. package/dist/domain/registry/report-crew-status.js.map +1 -0
  458. package/dist/domain/registry/report-details.d.ts +18 -0
  459. package/dist/domain/registry/report-details.js +41 -0
  460. package/dist/domain/registry/report-details.js.map +1 -0
  461. package/dist/domain/registry/report-log.d.ts +21 -0
  462. package/dist/domain/registry/report-log.js +16 -0
  463. package/dist/domain/registry/report-log.js.map +1 -0
  464. package/dist/domain/registry/report.d.ts +30 -0
  465. package/dist/domain/registry/report.js +30 -0
  466. package/dist/domain/registry/report.js.map +1 -0
  467. package/dist/domain/registry/request-crew.d.ts +32 -0
  468. package/dist/domain/registry/request-crew.js +29 -0
  469. package/dist/domain/registry/request-crew.js.map +1 -0
  470. package/dist/domain/registry/resolve-selector.d.ts +25 -0
  471. package/dist/domain/registry/resolve-selector.js +32 -0
  472. package/dist/domain/registry/resolve-selector.js.map +1 -0
  473. package/dist/domain/registry/retire-ship.d.ts +42 -0
  474. package/dist/domain/registry/retire-ship.js +68 -0
  475. package/dist/domain/registry/retire-ship.js.map +1 -0
  476. package/dist/domain/registry/set-fleet-limits.d.ts +30 -0
  477. package/dist/domain/registry/set-fleet-limits.js +54 -0
  478. package/dist/domain/registry/set-fleet-limits.js.map +1 -0
  479. package/dist/domain/registry/set-installation-settings.d.ts +18 -0
  480. package/dist/domain/registry/set-installation-settings.js +31 -0
  481. package/dist/domain/registry/set-installation-settings.js.map +1 -0
  482. package/dist/domain/registry/ship-handle.d.ts +5 -0
  483. package/dist/domain/registry/ship-handle.js +20 -0
  484. package/dist/domain/registry/ship-handle.js.map +1 -0
  485. package/dist/domain/registry/ship-note.d.ts +7 -0
  486. package/dist/domain/registry/ship-note.js +15 -0
  487. package/dist/domain/registry/ship-note.js.map +1 -0
  488. package/dist/domain/registry/ship-report.d.ts +42 -0
  489. package/dist/domain/registry/ship-report.js +93 -0
  490. package/dist/domain/registry/ship-report.js.map +1 -0
  491. package/dist/domain/registry/ship.d.ts +190 -0
  492. package/dist/domain/registry/ship.js +334 -0
  493. package/dist/domain/registry/ship.js.map +1 -0
  494. package/dist/domain/registry/ships.d.ts +25 -0
  495. package/dist/domain/registry/ships.js +22 -0
  496. package/dist/domain/registry/ships.js.map +1 -0
  497. package/dist/domain/registry/starting-prompt.d.ts +32 -0
  498. package/dist/domain/registry/starting-prompt.js +22 -0
  499. package/dist/domain/registry/starting-prompt.js.map +1 -0
  500. package/dist/domain/registry/whoami.d.ts +20 -0
  501. package/dist/domain/registry/whoami.js +15 -0
  502. package/dist/domain/registry/whoami.js.map +1 -0
  503. package/dist/domain/shared/caller.d.ts +25 -0
  504. package/dist/domain/shared/caller.js +8 -0
  505. package/dist/domain/shared/caller.js.map +1 -0
  506. package/dist/domain/shared/clock.d.ts +4 -0
  507. package/dist/domain/shared/clock.js +2 -0
  508. package/dist/domain/shared/clock.js.map +1 -0
  509. package/dist/domain/shared/errors.d.ts +13 -0
  510. package/dist/domain/shared/errors.js +6 -0
  511. package/dist/domain/shared/errors.js.map +1 -0
  512. package/dist/domain/shared/events.d.ts +75 -0
  513. package/dist/domain/shared/events.js +9 -0
  514. package/dist/domain/shared/events.js.map +1 -0
  515. package/dist/domain/shared/follow-fleet.d.ts +32 -0
  516. package/dist/domain/shared/follow-fleet.js +65 -0
  517. package/dist/domain/shared/follow-fleet.js.map +1 -0
  518. package/dist/domain/shared/history.d.ts +124 -0
  519. package/dist/domain/shared/history.js +16 -0
  520. package/dist/domain/shared/history.js.map +1 -0
  521. package/dist/domain/shared/idempotency-key.d.ts +8 -0
  522. package/dist/domain/shared/idempotency-key.js +14 -0
  523. package/dist/domain/shared/idempotency-key.js.map +1 -0
  524. package/dist/domain/shared/notifier.d.ts +17 -0
  525. package/dist/domain/shared/notifier.js +2 -0
  526. package/dist/domain/shared/notifier.js.map +1 -0
  527. package/dist/domain/shared/ping.d.ts +18 -0
  528. package/dist/domain/shared/ping.js +8 -0
  529. package/dist/domain/shared/ping.js.map +1 -0
  530. package/dist/domain/shared/read-fleet-events.d.ts +29 -0
  531. package/dist/domain/shared/read-fleet-events.js +25 -0
  532. package/dist/domain/shared/read-fleet-events.js.map +1 -0
  533. package/dist/domain/shared/read-fleet-limits.d.ts +39 -0
  534. package/dist/domain/shared/read-fleet-limits.js +24 -0
  535. package/dist/domain/shared/read-fleet-limits.js.map +1 -0
  536. package/dist/domain/shared/read-inbox.d.ts +20 -0
  537. package/dist/domain/shared/read-inbox.js +16 -0
  538. package/dist/domain/shared/read-inbox.js.map +1 -0
  539. package/dist/domain/shared/read-message.d.ts +21 -0
  540. package/dist/domain/shared/read-message.js +18 -0
  541. package/dist/domain/shared/read-message.js.map +1 -0
  542. package/dist/domain/shared/read-needs-attention.d.ts +12 -0
  543. package/dist/domain/shared/read-needs-attention.js +10 -0
  544. package/dist/domain/shared/read-needs-attention.js.map +1 -0
  545. package/dist/domain/shared/read-ship-messages.d.ts +28 -0
  546. package/dist/domain/shared/read-ship-messages.js +30 -0
  547. package/dist/domain/shared/read-ship-messages.js.map +1 -0
  548. package/dist/domain/shared/read-ship-timeline.d.ts +18 -0
  549. package/dist/domain/shared/read-ship-timeline.js +16 -0
  550. package/dist/domain/shared/read-ship-timeline.js.map +1 -0
  551. package/dist/domain/shared/result.d.ts +16 -0
  552. package/dist/domain/shared/result.js +7 -0
  553. package/dist/domain/shared/result.js.map +1 -0
  554. package/dist/domain/shared/secrets.d.ts +26 -0
  555. package/dist/domain/shared/secrets.js +2 -0
  556. package/dist/domain/shared/secrets.js.map +1 -0
  557. package/dist/domain/shared/selector.d.ts +29 -0
  558. package/dist/domain/shared/selector.js +2 -0
  559. package/dist/domain/shared/selector.js.map +1 -0
  560. package/dist/domain/shared/unit-of-work.d.ts +13 -0
  561. package/dist/domain/shared/unit-of-work.js +2 -0
  562. package/dist/domain/shared/unit-of-work.js.map +1 -0
  563. package/dist/domain/shared/utc-day.d.ts +4 -0
  564. package/dist/domain/shared/utc-day.js +9 -0
  565. package/dist/domain/shared/utc-day.js.map +1 -0
  566. package/dist/index.d.ts +1 -0
  567. package/dist/index.js +2 -0
  568. package/dist/index.js.map +1 -0
  569. package/dist/start.d.ts +6 -0
  570. package/dist/start.js +29 -0
  571. package/dist/start.js.map +1 -0
  572. package/dist/wiring.d.ts +158 -0
  573. package/dist/wiring.js +185 -0
  574. package/dist/wiring.js.map +1 -0
  575. package/package.json +56 -3
  576. package/prisma.config.ts +18 -0
  577. package/src/adapters/prisma/migrations/20260929124818_init/migration.sql +201 -0
  578. package/src/adapters/prisma/migrations/20260929160000_fleet_argo_console_session/migration.sql +130 -0
  579. package/src/adapters/prisma/migrations/20260929220017_operator_login/migration.sql +27 -0
  580. package/src/adapters/prisma/migrations/20260930090000_crew_token/migration.sql +5 -0
  581. package/src/adapters/prisma/migrations/20260930120000_send/migration.sql +30 -0
  582. package/src/adapters/prisma/migrations/20260930150000_receive/migration.sql +24 -0
  583. package/src/adapters/prisma/migrations/20261001010000_event_seq/migration.sql +34 -0
  584. package/src/adapters/prisma/migrations/20261001020000_console_session_end_reason/migration.sql +14 -0
  585. package/src/adapters/prisma/migrations/20261001030000_account_theme_session_device/migration.sql +8 -0
  586. package/src/adapters/prisma/migrations/20261001040000_lease_last_seen/migration.sql +2 -0
  587. package/src/adapters/prisma/migrations/20261002190000_lease_report/migration.sql +7 -0
  588. package/src/adapters/prisma/migrations/20261003140000_commission_key/migration.sql +7 -0
  589. package/src/adapters/prisma/migrations/20261003200000_message_model/migration.sql +5 -0
  590. package/src/adapters/prisma/migrations/20261003201000_lease_harness/migration.sql +2 -0
  591. package/src/adapters/prisma/migrations/20261004120000_operator_without_password/migration.sql +2 -0
  592. package/src/adapters/prisma/migrations/20261004121000_installation_requests/migration.sql +21 -0
  593. package/src/adapters/prisma/migrations/20261004122000_events_deleted_with_their_fleet/migration.sql +11 -0
  594. package/src/adapters/prisma/migrations/20261004130000_sign_in_tickets/migration.sql +16 -0
  595. package/src/adapters/prisma/migrations/20261004140000_fleet_limits/migration.sql +6 -0
  596. package/src/adapters/prisma/migrations/20261004141000_installation_settings/migration.sql +12 -0
  597. package/src/adapters/prisma/migrations/20261005090000_viewer_ship/migration.sql +2 -0
  598. package/src/adapters/prisma/migrations/20261005100000_viewer_sessions/migration.sql +20 -0
  599. package/src/adapters/prisma/migrations/20261005110000_notices/migration.sql +37 -0
  600. package/src/adapters/prisma/migrations/20261005120000_guide/migration.sql +34 -0
  601. package/src/adapters/prisma/migrations/20261006100000_fleet_crew_scope/migration.sql +8 -0
  602. package/src/adapters/prisma/migrations/20261006140000_lease_report_details/migration.sql +3 -0
  603. package/src/adapters/prisma/migrations/20261006160000_crew_requests/migration.sql +20 -0
  604. package/src/adapters/prisma/migrations/20261006180000_crew_scopes/migration.sql +9 -0
  605. package/src/adapters/prisma/migrations/20261006190000_crew_assignment/migration.sql +13 -0
  606. package/src/adapters/prisma/migrations/20261006200000_crew_request_reason/migration.sql +3 -0
  607. package/src/adapters/prisma/migrations/migration_lock.toml +3 -0
  608. package/src/adapters/prisma/schema.prisma +558 -0
@@ -0,0 +1,214 @@
1
+ import { ackInputSchema, ackOutputSchema, deregisterOutputSchema, inboxInputSchema, inboxOutputSchema, PING_CONTENT_TYPE, pongInputSchema, pongOutputSchema, reportInputSchema, reportLogOutputSchema, reportOutputSchema, receiveInputSchema, receiveOutputSchema, registerInputSchema, registerOutputSchema, sendInputSchema, sendOutputSchema, whoamiOutputSchema, } from '@aeolus-fleet/common';
2
+ import { TRPCError } from '@trpc/server';
3
+ import { authenticatedProcedure, crewProcedure, okOrThrow, publicProcedure, router, scopedCrewProcedure, scopedProcedure, } from './trpc.js';
4
+ /**
5
+ * Ship procedures: the ship contract. `register` takes the ship's id and
6
+ * secret and returns a crew token; every later call carries that token as
7
+ * `Authorization: Bearer` (ADR 0015), or as the `crewToken` argument of an MCP
8
+ * tool. REST and MCP map onto these (ship-contract.ts).
9
+ *
10
+ * Each description speaks to the agent crewing a ship, who reads it on every
11
+ * call as an MCP tool or a REST operation: what the call does and its own
12
+ * rules. When to make each call is the ship protocol's (ship-protocol.ts),
13
+ * which no description repeats. It names the calls, never the door, since
14
+ * both doors show it.
15
+ */
16
+ export const shipRouter = router({
17
+ /**
18
+ * Claims the ship for the calling session, which reports where it runs. The
19
+ * secret travels in the body, never as a bearer; the crew token comes back
20
+ * once. Only a wrong ship id or secret counts against the client's limit, so
21
+ * one address can start many sessions (ADR 0015); a client over it is
22
+ * refused before its secret is even checked.
23
+ */
24
+ register: publicProcedure
25
+ .meta({
26
+ description: [
27
+ 'Claims your ship for this conversation, with the ship id and secret from your starting prompt',
28
+ 'and where you run: location { "kind": "DEVICE" }, "CLOUD" or "SERVER", or { "kind": "OTHER", "description": "..." },',
29
+ 'and the harness you run in: harness "claude-code", "claude-chat", "codex", or another name.',
30
+ 'It answers with your crew token, and only this once.',
31
+ 'The secret works only here. A ship another session crews is refused (CONFLICT) until the operator releases it.',
32
+ ].join(' '),
33
+ })
34
+ .use(({ ctx, next }) => {
35
+ if (!ctx.registerFailures.hasRoom(ctx.clientKey)) {
36
+ throw new TRPCError({ code: 'TOO_MANY_REQUESTS', message: 'Too many failed register attempts. Wait a minute.' });
37
+ }
38
+ return next();
39
+ })
40
+ .input(registerInputSchema)
41
+ .output(registerOutputSchema)
42
+ .mutation(async ({ ctx, input }) => {
43
+ const claimed = await ctx.useCases.claimShip(input);
44
+ if (!claimed.isOk && claimed.error.kind === 'WRONG_SHIP_ID_OR_SECRET') {
45
+ ctx.registerFailures.count(ctx.clientKey);
46
+ }
47
+ return okOrThrow(claimed);
48
+ }),
49
+ /** The caller's ship: id, fleet, name and type. Any caller may ask about itself. */
50
+ whoami: authenticatedProcedure
51
+ .meta({
52
+ description: 'Tells you which ship you crew: its id, fleet, name and type. Other ships reach you by that name, or by your type.',
53
+ })
54
+ .output(whoamiOutputSchema)
55
+ .query(async ({ ctx }) => okOrThrow(await ctx.useCases.whoami(ctx.caller))),
56
+ /**
57
+ * Sends a message from the calling ship, `argo` included, to a selector.
58
+ * Answers with the message's id only once the message and its delivery are
59
+ * stored (ADR 0003); a repeat of the idempotency key answers with the
60
+ * original id.
61
+ */
62
+ send: scopedProcedure('messages:send')
63
+ .meta({
64
+ description: [
65
+ 'Sends a message from your ship. It answers with the messageId only once the message is stored:',
66
+ 'from then on it reaches its recipient, even one that is not running now.',
67
+ 'selector picks the recipient: one ship by name { "kind": "ship", "name": "..." } or by id { "kind": "ship", "shipId": "shp_..." },',
68
+ 'or any one ship of a type { "kind": "type", "type": "..." }.',
69
+ 'inReplyTo, for an answer, is the messageId of the message you answer: the message id, not the delivery id.',
70
+ 'payload is text of at most 64 KB: a reference to the content and an instruction, not the content itself.',
71
+ 'contentType is text/plain unless you say otherwise.',
72
+ 'model is the exact model id you run now, such as claude-opus-5-5: state it on every send, as it is now, even after a switch. A send without it is refused (BAD_REQUEST); only argo, the operator, states none.',
73
+ 'idempotencyKey is a new unique string for every message. Reuse one only to retry the same send after an error or a lost answer:',
74
+ 'the retry answers with the original messageId instead of sending twice, and a different send with a used key is refused (CONFLICT).',
75
+ ].join(' '),
76
+ })
77
+ .input(sendInputSchema)
78
+ .output(sendOutputSchema)
79
+ .mutation(async ({ ctx, input }) => okOrThrow(await ctx.useCases.sendMessage(ctx.caller, input))),
80
+ /**
81
+ * Hands the crew up to `max` deliveries, 1 to 10, one by default: its own
82
+ * in flight first, then the oldest pending for its ship or its type. Waits
83
+ * about 25 seconds when none is there, then answers with none. A mutation:
84
+ * every delivery it returns is claimed.
85
+ */
86
+ receive: scopedCrewProcedure('messages:receive')
87
+ .meta({
88
+ description: [
89
+ 'Hands you your next deliveries, up to max (1 to 10, one when left out), each with its message and its sender:',
90
+ 'senderShipId, senderName (the name to answer to) and senderType.',
91
+ 'With none there it waits about 25 seconds, then answers with none.',
92
+ 'Until you ack it a delivery stays yours: your next receive hands it to you again,',
93
+ 'and after four receives without an ack it goes to the operator as undeliverable.',
94
+ 'So you may see a deliveryId twice: treat it as the key of the work.',
95
+ ].join(' '),
96
+ })
97
+ .input(receiveInputSchema)
98
+ .output(receiveOutputSchema)
99
+ .mutation(async ({ ctx, input }) => {
100
+ const { deliveries } = okOrThrow(await ctx.useCases.receiveDeliveries(ctx.crew, { max: input?.max }));
101
+ return { deliveries: deliveries.map((delivery) => ({ ...delivery, sentAt: delivery.sentAt.toISOString() })) };
102
+ }),
103
+ /** Acknowledges a delivery the ship received: it is done. Acknowledging it again is OK. */
104
+ ack: scopedCrewProcedure('messages:receive')
105
+ .meta({
106
+ description: [
107
+ 'Acknowledges a delivery: you take responsibility for it, and it is done; what you do next is your own business.',
108
+ 'Pass its deliveryId (dlv_...), not its messageId. Acknowledging it again is fine.',
109
+ 'Only the ship holding the delivery can ack it.',
110
+ ].join(' '),
111
+ })
112
+ .input(ackInputSchema)
113
+ .output(ackOutputSchema)
114
+ .mutation(async ({ ctx, input }) => {
115
+ okOrThrow(await ctx.useCases.acknowledgeDelivery(ctx.crew, input));
116
+ return {};
117
+ }),
118
+ /**
119
+ * Answers a ping the ship received: acknowledges it and marks the session
120
+ * seen at that moment, so the operator sees the ship's model is working.
121
+ */
122
+ pong: scopedCrewProcedure('messages:receive')
123
+ .meta({
124
+ description: [
125
+ `Answers a ping: a delivery whose contentType is ${PING_CONTENT_TYPE}.`,
126
+ 'Pass its deliveryId (dlv_...). Call pong instead of ack: it acknowledges the ping and tells the operator your session is working.',
127
+ 'Do not act on it and do not reply with a message. Answering again is fine; pong answers only a ping.',
128
+ ].join(' '),
129
+ })
130
+ .input(pongInputSchema)
131
+ .output(pongOutputSchema)
132
+ .mutation(async ({ ctx, input }) => {
133
+ okOrThrow(await ctx.useCases.answerPing(ctx.crew, input));
134
+ return {};
135
+ }),
136
+ /**
137
+ * The crew says what it is doing: working, blocked or idle, with a short
138
+ * note and optionally its details, set whole or merge-patched. A check-in:
139
+ * an event only when the state, note or details change.
140
+ */
141
+ report: crewProcedure
142
+ .meta({
143
+ description: [
144
+ 'Says what you are doing, for the operator and anyone who reads the fleet: state working, blocked or idle, and an optional note',
145
+ '(one line, at most 200 characters) on what you work on or what blocks you.',
146
+ 'For structured status, details: one JSON object of at most 16 KB. details sets it whole and null clears it;',
147
+ 'detailsPatch applies a JSON Merge Patch to it (objects merge per key, null deletes a key, arrays are replaced whole).',
148
+ 'Give one of them, not both; leave both out to keep your details as they are.',
149
+ 'Call it whenever your state changes; calling it again with the same state, note and details is a check-in.',
150
+ ].join(' '),
151
+ example: { state: 'working', note: 'reviewing PR 89' },
152
+ })
153
+ .input(reportInputSchema)
154
+ .output(reportOutputSchema)
155
+ .mutation(async ({ ctx, input }) => {
156
+ okOrThrow(await ctx.useCases.report(ctx.crew, input));
157
+ return {};
158
+ }),
159
+ /**
160
+ * The crew's own report whole, details included, and the last report of
161
+ * the ship's previous crew, read-only. No scope beyond being the crew.
162
+ */
163
+ reportLog: crewProcedure
164
+ .meta({
165
+ description: [
166
+ 'Hands you your own report as you last made it, details included, and the last report of the crew that held your ship before you,',
167
+ 'read-only, so you can pick up where it left off. Each is null when there is none.',
168
+ ].join(' '),
169
+ })
170
+ .output(reportLogOutputSchema)
171
+ .query(async ({ ctx }) => {
172
+ const { report, previousCrew } = okOrThrow(await ctx.useCases.reportLog(ctx.crew));
173
+ return { report: reportOutputOf(report), previousCrew: reportOutputOf(previousCrew) };
174
+ }),
175
+ /**
176
+ * How many deliveries wait for the crew: what its next receive would hand
177
+ * it. Claims nothing. With waitSeconds (0 to 25) it waits while none does.
178
+ * A mutation only so that REST takes its body; it changes nothing.
179
+ */
180
+ inbox: scopedCrewProcedure('messages:receive')
181
+ .meta({
182
+ description: [
183
+ 'Tells you how many deliveries wait for you: what your next receive would hand you, your own unacknowledged ones included.',
184
+ 'It claims nothing, so call receive to get them.',
185
+ 'With waitSeconds (0 to 25) it waits while none does, and answers as soon as one arrives.',
186
+ ].join(' '),
187
+ })
188
+ .input(inboxInputSchema)
189
+ .output(inboxOutputSchema)
190
+ .mutation(async ({ ctx, input }) => okOrThrow(await ctx.useCases.checkInbox(ctx.crew, { waitSeconds: input?.waitSeconds }))),
191
+ /**
192
+ * Ends the calling crew's own lease, and with it its crew token: the ship
193
+ * awaits a new crew, its secret stops working, and what it held in flight
194
+ * returns to pending for the next crew. Needs only the crew token.
195
+ */
196
+ deregister: crewProcedure
197
+ .meta({
198
+ description: [
199
+ 'Ends your session cleanly: your crew token and your ship\'s secret stop working,',
200
+ 'and any delivery you received but did not ack goes back to pending for the next crew.',
201
+ 'The ship and its inbox stay; a new crew needs a new starting prompt from the operator.',
202
+ ].join(' '),
203
+ })
204
+ .output(deregisterOutputSchema)
205
+ .mutation(async ({ ctx }) => {
206
+ okOrThrow(await ctx.useCases.deregister(ctx.crew));
207
+ return {};
208
+ }),
209
+ });
210
+ /** A report as a ship reads it: its time in ISO 8601, in UTC. */
211
+ function reportOutputOf(report) {
212
+ return report && { ...report, reportedAt: report.reportedAt.toISOString() };
213
+ }
214
+ //# sourceMappingURL=ship.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ship.js","sourceRoot":"","sources":["../../../src/adapters/trpc/ship.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import { type ShipId, type StartingPromptOutput } from '@aeolus-fleet/common';
2
+ /** A starting prompt as the API hands it out: the prompt, its crew lines and the secret itself. */
3
+ export declare function presentStartingPrompt(input: {
4
+ fleetUrl: string;
5
+ shipId: ShipId;
6
+ secret: string;
7
+ }): StartingPromptOutput;
@@ -0,0 +1,60 @@
1
+ import { mcpUrlOf } from '@aeolus-fleet/common';
2
+ /**
3
+ * How a starting prompt reads (docs/blueprint.md, "Launch a ship"): the text
4
+ * the operator pastes into a new session, and one crew line per harness with
5
+ * the aeolus plugin. Core issues only the secret; this is presentation, so it
6
+ * lives here, and tRPC, REST and MCP share it because they map onto the same
7
+ * procedures. It holds the secret, so it is shown once and never stored.
8
+ */
9
+ /**
10
+ * The starting prompt's text: identity only. Where the fleet's MCP server is
11
+ * and how to add it, the ship's id and secret, how to pick the location, and
12
+ * to call register. The protocol comes from the fleet when the session
13
+ * connects, and each call's rules from its description; what the ship works
14
+ * on, the operator adds.
15
+ */
16
+ function startingPromptText(input) {
17
+ const { mcpUrl, shipId, secret } = input;
18
+ return [
19
+ 'You crew a ship in an Aeolus fleet.',
20
+ '',
21
+ `Fleet MCP URL: ${mcpUrl}`,
22
+ `Ship id: ${shipId}`,
23
+ `Ship secret: ${secret}`,
24
+ '',
25
+ "Its tools come from the fleet's MCP server at that URL. If this session has none of them, add the server with this command, then start the session again with this prompt:",
26
+ `claude mcp add --transport http --scope user aeolus ${mcpUrl}`,
27
+ '',
28
+ 'Your location is where this session runs:',
29
+ "- DEVICE: a personal computer, such as the operator's laptop",
30
+ '- CLOUD: a hosted agent service, such as Claude Code on the web',
31
+ '- SERVER: a server the operator runs, such as a VPS',
32
+ '- OTHER: none of these, with a few words on where you run',
33
+ '',
34
+ 'Call register.',
35
+ ].join('\n');
36
+ }
37
+ /**
38
+ * The crew lines: the same identity in one line for each harness with the
39
+ * aeolus plugin, which registers and keeps the crew token itself. The fleet
40
+ * URL is where the plugin reaches the fleet; it finds the MCP server and REST
41
+ * under it.
42
+ */
43
+ function crewLines(input) {
44
+ const identity = `${input.fleetUrl} ${input.shipId} ${input.secret}`;
45
+ return [
46
+ { harness: 'claude-code', line: `/aeolus:crew ${identity}` },
47
+ { harness: 'codex', line: `$aeolus-crew ${identity}` },
48
+ ];
49
+ }
50
+ /** A starting prompt as the API hands it out: the prompt, its crew lines and the secret itself. */
51
+ export function presentStartingPrompt(input) {
52
+ const { fleetUrl, shipId, secret } = input;
53
+ return {
54
+ shipId,
55
+ prompt: startingPromptText({ mcpUrl: mcpUrlOf(fleetUrl), shipId, secret }),
56
+ crewLines: crewLines({ fleetUrl, shipId, secret }),
57
+ secret,
58
+ };
59
+ }
60
+ //# sourceMappingURL=starting-prompt-text.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"starting-prompt-text.js","sourceRoot":"","sources":["../../../src/adapters/trpc/starting-prompt-text.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAyD,MAAM,sBAAsB,CAAC;AAEvG;;;;;;GAMG;AAEH;;;;;;GAMG;AACH,SAAS,kBAAkB,CAAC,KAAyD;IACnF,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,KAAK,CAAC;IACzC,OAAO;QACL,qCAAqC;QACrC,EAAE;QACF,kBAAkB,MAAM,EAAE;QAC1B,YAAY,MAAM,EAAE;QACpB,gBAAgB,MAAM,EAAE;QACxB,EAAE;QACF,4KAA4K;QAC5K,uDAAuD,MAAM,EAAE;QAC/D,EAAE;QACF,2CAA2C;QAC3C,8DAA8D;QAC9D,iEAAiE;QACjE,qDAAqD;QACrD,2DAA2D;QAC3D,EAAE;QACF,gBAAgB;KACjB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC;AAED;;;;;GAKG;AACH,SAAS,SAAS,CAAC,KAA2D;IAC5E,MAAM,QAAQ,GAAG,GAAG,KAAK,CAAC,QAAQ,IAAI,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;IACrE,OAAO;QACL,EAAE,OAAO,EAAE,aAAa,EAAE,IAAI,EAAE,gBAAgB,QAAQ,EAAE,EAAE;QAC5D,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,gBAAgB,QAAQ,EAAE,EAAE;KACvD,CAAC;AACJ,CAAC;AAED,mGAAmG;AACnG,MAAM,UAAU,qBAAqB,CAAC,KAA2D;IAC/F,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,KAAK,CAAC;IAC3C,OAAO;QACL,MAAM;QACN,MAAM,EAAE,kBAAkB,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;QAC1E,SAAS,EAAE,SAAS,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;QAClD,MAAM;KACP,CAAC;AACJ,CAAC"}
@@ -0,0 +1,29 @@
1
+ export declare const systemRouter: import("@trpc/server").TRPCBuiltRouter<{
2
+ ctx: import("./context.js").Context;
3
+ meta: import("./trpc.js").ProcedureMeta;
4
+ errorShape: import("@trpc/server").TRPCDefaultErrorShape | {
5
+ message: string;
6
+ data: {
7
+ requestId: string | undefined;
8
+ code: import("@trpc/server").TRPC_ERROR_CODE_KEY;
9
+ httpStatus: number;
10
+ path?: string;
11
+ stack?: string;
12
+ };
13
+ code: import("@trpc/server").TRPC_ERROR_CODE_NUMBER;
14
+ };
15
+ transformer: false;
16
+ }, import("@trpc/server").TRPCDecorateCreateRouterOptions<{
17
+ /**
18
+ * Server time and fleet count: proves an authorised call reaches the database
19
+ * and back. Needs fleet:read, like every read about the fleet.
20
+ */
21
+ ping: import("@trpc/server").TRPCQueryProcedure<{
22
+ input: void;
23
+ output: {
24
+ serverTime: string;
25
+ fleetCount: number;
26
+ };
27
+ meta: import("./trpc.js").ProcedureMeta;
28
+ }>;
29
+ }>>;
@@ -0,0 +1,15 @@
1
+ import { pingOutputSchema } from '@aeolus-fleet/common';
2
+ import { router, scopedProcedure } from './trpc.js';
3
+ export const systemRouter = router({
4
+ /**
5
+ * Server time and fleet count: proves an authorised call reaches the database
6
+ * and back. Needs fleet:read, like every read about the fleet.
7
+ */
8
+ ping: scopedProcedure('fleet:read')
9
+ .output(pingOutputSchema)
10
+ .query(async ({ ctx }) => {
11
+ const { serverTime, fleetCount } = await ctx.useCases.ping();
12
+ return { serverTime: serverTime.toISOString(), fleetCount };
13
+ }),
14
+ });
15
+ //# sourceMappingURL=system.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"system.js","sourceRoot":"","sources":["../../../src/adapters/trpc/system.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAExD,OAAO,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAEpD,MAAM,CAAC,MAAM,YAAY,GAAG,MAAM,CAAC;IACjC;;;OAGG;IACH,IAAI,EAAE,eAAe,CAAC,YAAY,CAAC;SAChC,MAAM,CAAC,gBAAgB,CAAC;SACxB,KAAK,CAAC,KAAK,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE;QACvB,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,GAAG,MAAM,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;QAC7D,OAAO,EAAE,UAAU,EAAE,UAAU,CAAC,WAAW,EAAE,EAAE,UAAU,EAAE,CAAC;IAC9D,CAAC,CAAC;CACL,CAAC,CAAC"}
@@ -0,0 +1,131 @@
1
+ import type { Scope } from '@aeolus-fleet/common';
2
+ import { type Caller, type Crew } from '../../domain/shared/caller.js';
3
+ import type { DomainError } from '../../domain/shared/errors.js';
4
+ import type { Result } from '../../domain/shared/result.js';
5
+ import type { Context } from './context.js';
6
+ /** All a caller learns of a server failure, with the request's id; the log keeps the rest under that id. */
7
+ export declare const INTERNAL_ERROR_MESSAGE = "Internal error";
8
+ /**
9
+ * What a procedure says about itself. A ship procedure's description is what
10
+ * an agent reads on every call, as an MCP tool or a REST operation: what it
11
+ * does and the rules for using it.
12
+ */
13
+ export interface ProcedureMeta {
14
+ description: string;
15
+ /** Arguments the call takes as they stand, shown with the description and with a refusal of arguments that do not parse. */
16
+ example?: Readonly<Record<string, string>>;
17
+ }
18
+ /**
19
+ * What the console reads beside a refusal's code, to say more than "refused":
20
+ * that the operator signed in somewhere else, or when a rate-limited sign-in
21
+ * may try again (ISO 8601). Carried as the tRPC error's cause; the error data
22
+ * holds its fields.
23
+ */
24
+ export declare class ConsoleRefusalDetails extends Error {
25
+ name: string;
26
+ readonly details: {
27
+ refusal?: 'SIGNED_IN_ELSEWHERE';
28
+ retryAt?: string;
29
+ };
30
+ constructor(details: {
31
+ refusal?: 'SIGNED_IN_ELSEWHERE';
32
+ retryAt?: string;
33
+ });
34
+ }
35
+ export declare const router: import("@trpc/server").TRPCRouterBuilder<{
36
+ ctx: Context;
37
+ meta: ProcedureMeta;
38
+ errorShape: import("@trpc/server").TRPCDefaultErrorShape | {
39
+ message: string;
40
+ data: {
41
+ requestId: string | undefined;
42
+ code: import("@trpc/server").TRPC_ERROR_CODE_KEY;
43
+ httpStatus: number;
44
+ path?: string;
45
+ stack?: string;
46
+ };
47
+ code: import("@trpc/server").TRPC_ERROR_CODE_NUMBER;
48
+ };
49
+ transformer: false;
50
+ }>;
51
+ /**
52
+ * The code a ship reads for a refusal whose tRPC code would hide it: a crew
53
+ * whose lease has ended reads LEASE_ENDED, not UNAUTHORIZED, so it can tell a
54
+ * released ship from a wrong crew token. The HTTP status stays the tRPC
55
+ * code's. The ship doors read it from the tRPC error's cause.
56
+ */
57
+ export declare class ShipRefusalCode extends Error {
58
+ name: string;
59
+ readonly code: 'LEASE_ENDED';
60
+ constructor(code: 'LEASE_ENDED');
61
+ }
62
+ /** The value of a use case's result. A refusal becomes the matching tRPC error. */
63
+ export declare function okOrThrow<T>(result: Result<T, DomainError>): T;
64
+ /**
65
+ * A procedure that needs no caller: the base of every procedure, of the
66
+ * console procedures, and of `register`, which takes the ship secret.
67
+ *
68
+ * Postgres text can never store the character U+0000, so this one check at
69
+ * the door refuses it in any text input, as a bad request naming the field,
70
+ * before anything else reads the input.
71
+ */
72
+ export declare const publicProcedure: import("@trpc/server").TRPCProcedureBuilder<Context, ProcedureMeta, {}, import("@trpc/server").TRPCUnsetMarker, import("@trpc/server").TRPCUnsetMarker, import("@trpc/server").TRPCUnsetMarker, import("@trpc/server").TRPCUnsetMarker, false>;
73
+ /** A console procedure, signing in or out: it changes state, so it comes only from the console's origin. */
74
+ export declare const consoleProcedure: import("@trpc/server").TRPCProcedureBuilder<Context, ProcedureMeta, {}, import("@trpc/server").TRPCUnsetMarker, import("@trpc/server").TRPCUnsetMarker, import("@trpc/server").TRPCUnsetMarker, import("@trpc/server").TRPCUnsetMarker, false>;
75
+ /**
76
+ * Refuses a live subscription whose caller no longer holds: its console
77
+ * session ended, or its crew's lease did. A subscription outlives the call
78
+ * that opened it, so it asks again each time it has news.
79
+ */
80
+ export declare function checkCallerStillHolds(ctx: Context): Promise<void>;
81
+ /**
82
+ * A procedure for any caller, whatever its scopes: the base of every scoped
83
+ * procedure, and `whoami`, which tells a caller about itself. The caller comes
84
+ * from the server, never from the request.
85
+ */
86
+ export declare const authenticatedProcedure: import("@trpc/server").TRPCProcedureBuilder<Context, ProcedureMeta, {
87
+ caller: Caller;
88
+ }, import("@trpc/server").TRPCUnsetMarker, import("@trpc/server").TRPCUnsetMarker, import("@trpc/server").TRPCUnsetMarker, import("@trpc/server").TRPCUnsetMarker, false>;
89
+ /**
90
+ * A procedure only a crew calls, with the crew token `register` gave it: one
91
+ * session crewing one ship under one lease. `deregister` needs nothing more,
92
+ * since a crew ends only its own lease. The console session is no crew token,
93
+ * so it is refused here.
94
+ */
95
+ export declare const crewProcedure: import("@trpc/server").TRPCProcedureBuilder<Context, ProcedureMeta, {
96
+ crew: Crew;
97
+ caller: Crew;
98
+ }, import("@trpc/server").TRPCUnsetMarker, import("@trpc/server").TRPCUnsetMarker, import("@trpc/server").TRPCUnsetMarker, import("@trpc/server").TRPCUnsetMarker, false>;
99
+ /**
100
+ * A crew procedure that also needs the given scope: receiving and
101
+ * acknowledging deliveries, which a crew claims under its lease. argo's inbox
102
+ * comes with its own procedures.
103
+ */
104
+ export declare function scopedCrewProcedure(scope: Scope): import("@trpc/server").TRPCProcedureBuilder<Context, ProcedureMeta, {
105
+ crew: Crew;
106
+ caller: Crew;
107
+ }, import("@trpc/server").TRPCUnsetMarker, import("@trpc/server").TRPCUnsetMarker, import("@trpc/server").TRPCUnsetMarker, import("@trpc/server").TRPCUnsetMarker, false>;
108
+ /**
109
+ * A procedure that needs the given scope. The caller and its scopes come from
110
+ * the server, never from the request, and are checked before any use case runs.
111
+ */
112
+ export declare function scopedProcedure(scope: Scope): import("@trpc/server").TRPCProcedureBuilder<Context, ProcedureMeta, {
113
+ caller: Caller;
114
+ }, import("@trpc/server").TRPCUnsetMarker, import("@trpc/server").TRPCUnsetMarker, import("@trpc/server").TRPCUnsetMarker, import("@trpc/server").TRPCUnsetMarker, false>;
115
+ /**
116
+ * A procedure that needs any one of the given scopes: the few fleet calls a
117
+ * trierarch makes with `fleet:crew` beside the scope the console uses
118
+ * (decision 0002). Checked before any use case runs, as for one scope.
119
+ */
120
+ export declare function anyScopeProcedure(...scopes: [Scope, Scope, ...Scope[]]): import("@trpc/server").TRPCProcedureBuilder<Context, ProcedureMeta, {
121
+ caller: Caller;
122
+ }, import("@trpc/server").TRPCUnsetMarker, import("@trpc/server").TRPCUnsetMarker, import("@trpc/server").TRPCUnsetMarker, import("@trpc/server").TRPCUnsetMarker, false>;
123
+ /**
124
+ * A procedure for a caller that crews its ship under a lease, with every given
125
+ * scope: argo's inbox, which its console session calls. A console session
126
+ * crews argo under the lease it holds; the use case refuses any ship but argo.
127
+ */
128
+ export declare function scopedCrewCallerProcedure(...scopes: Scope[]): import("@trpc/server").TRPCProcedureBuilder<Context, ProcedureMeta, {
129
+ crew: Crew;
130
+ caller: Caller;
131
+ }, import("@trpc/server").TRPCUnsetMarker, import("@trpc/server").TRPCUnsetMarker, import("@trpc/server").TRPCUnsetMarker, import("@trpc/server").TRPCUnsetMarker, false>;