@aeolus-fleet/gateway 0.0.0-stage → 0.28.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 (528) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +105 -2
  3. package/dist/adapters/crypto/call-keys.d.ts +7 -0
  4. package/dist/adapters/crypto/call-keys.js +18 -0
  5. package/dist/adapters/crypto/call-keys.js.map +1 -0
  6. package/dist/adapters/crypto/oauth-secrets.d.ts +3 -0
  7. package/dist/adapters/crypto/oauth-secrets.js +10 -0
  8. package/dist/adapters/crypto/oauth-secrets.js.map +1 -0
  9. package/dist/adapters/crypto/page-sessions.d.ts +15 -0
  10. package/dist/adapters/crypto/page-sessions.js +40 -0
  11. package/dist/adapters/crypto/page-sessions.js.map +1 -0
  12. package/dist/adapters/crypto/request-hasher.d.ts +3 -0
  13. package/dist/adapters/crypto/request-hasher.js +4 -0
  14. package/dist/adapters/crypto/request-hasher.js.map +1 -0
  15. package/dist/adapters/crypto/request-ids.d.ts +4 -0
  16. package/dist/adapters/crypto/request-ids.js +7 -0
  17. package/dist/adapters/crypto/request-ids.js.map +1 -0
  18. package/dist/adapters/crypto/sealer.d.ts +14 -0
  19. package/dist/adapters/crypto/sealer.js +41 -0
  20. package/dist/adapters/crypto/sealer.js.map +1 -0
  21. package/dist/adapters/crypto/ship-aliases.d.ts +7 -0
  22. package/dist/adapters/crypto/ship-aliases.js +19 -0
  23. package/dist/adapters/crypto/ship-aliases.js.map +1 -0
  24. package/dist/adapters/crypto/sign-in-seals.d.ts +7 -0
  25. package/dist/adapters/crypto/sign-in-seals.js +25 -0
  26. package/dist/adapters/crypto/sign-in-seals.js.map +1 -0
  27. package/dist/adapters/crypto/waiting-seals.d.ts +3 -0
  28. package/dist/adapters/crypto/waiting-seals.js +24 -0
  29. package/dist/adapters/crypto/waiting-seals.js.map +1 -0
  30. package/dist/adapters/fleet/actor-door.d.ts +20 -0
  31. package/dist/adapters/fleet/actor-door.js +75 -0
  32. package/dist/adapters/fleet/actor-door.js.map +1 -0
  33. package/dist/adapters/fleet/console-sessions.d.ts +2 -0
  34. package/dist/adapters/fleet/console-sessions.js +23 -0
  35. package/dist/adapters/fleet/console-sessions.js.map +1 -0
  36. package/dist/adapters/fleet/core-version.d.ts +11 -0
  37. package/dist/adapters/fleet/core-version.js +18 -0
  38. package/dist/adapters/fleet/core-version.js.map +1 -0
  39. package/dist/adapters/fleet/fleet-network.d.ts +2 -0
  40. package/dist/adapters/fleet/fleet-network.js +34 -0
  41. package/dist/adapters/fleet/fleet-network.js.map +1 -0
  42. package/dist/adapters/fleet/logged-verified-facts.d.ts +13 -0
  43. package/dist/adapters/fleet/logged-verified-facts.js +18 -0
  44. package/dist/adapters/fleet/logged-verified-facts.js.map +1 -0
  45. package/dist/adapters/fleet/proxy-ship-reads.d.ts +7 -0
  46. package/dist/adapters/fleet/proxy-ship-reads.js +24 -0
  47. package/dist/adapters/fleet/proxy-ship-reads.js.map +1 -0
  48. package/dist/adapters/fleet/proxy-ships-as-actor.d.ts +3 -0
  49. package/dist/adapters/fleet/proxy-ships-as-actor.js +25 -0
  50. package/dist/adapters/fleet/proxy-ships-as-actor.js.map +1 -0
  51. package/dist/adapters/fleet/rest-fleet-door.d.ts +14 -0
  52. package/dist/adapters/fleet/rest-fleet-door.js +205 -0
  53. package/dist/adapters/fleet/rest-fleet-door.js.map +1 -0
  54. package/dist/adapters/http/add-server-page.d.ts +7 -0
  55. package/dist/adapters/http/add-server-page.js +175 -0
  56. package/dist/adapters/http/add-server-page.js.map +1 -0
  57. package/dist/adapters/http/delivery-page.d.ts +24 -0
  58. package/dist/adapters/http/delivery-page.js +115 -0
  59. package/dist/adapters/http/delivery-page.js.map +1 -0
  60. package/dist/adapters/http/html.d.ts +15 -0
  61. package/dist/adapters/http/html.js +53 -0
  62. package/dist/adapters/http/html.js.map +1 -0
  63. package/dist/adapters/http/live.d.ts +29 -0
  64. package/dist/adapters/http/live.js +100 -0
  65. package/dist/adapters/http/live.js.map +1 -0
  66. package/dist/adapters/http/mcp-endpoint.d.ts +20 -0
  67. package/dist/adapters/http/mcp-endpoint.js +164 -0
  68. package/dist/adapters/http/mcp-endpoint.js.map +1 -0
  69. package/dist/adapters/http/mcp-task.d.ts +45 -0
  70. package/dist/adapters/http/mcp-task.js +35 -0
  71. package/dist/adapters/http/mcp-task.js.map +1 -0
  72. package/dist/adapters/http/oauth-routes.d.ts +47 -0
  73. package/dist/adapters/http/oauth-routes.js +337 -0
  74. package/dist/adapters/http/oauth-routes.js.map +1 -0
  75. package/dist/adapters/http/outside-parties-page.d.ts +33 -0
  76. package/dist/adapters/http/outside-parties-page.js +153 -0
  77. package/dist/adapters/http/outside-parties-page.js.map +1 -0
  78. package/dist/adapters/http/outside-party-page.d.ts +7 -0
  79. package/dist/adapters/http/outside-party-page.js +212 -0
  80. package/dist/adapters/http/outside-party-page.js.map +1 -0
  81. package/dist/adapters/http/overview-page.d.ts +17 -0
  82. package/dist/adapters/http/overview-page.js +298 -0
  83. package/dist/adapters/http/overview-page.js.map +1 -0
  84. package/dist/adapters/http/parties-page.d.ts +7 -0
  85. package/dist/adapters/http/parties-page.js +139 -0
  86. package/dist/adapters/http/parties-page.js.map +1 -0
  87. package/dist/adapters/http/person-tools.d.ts +22 -0
  88. package/dist/adapters/http/person-tools.js +98 -0
  89. package/dist/adapters/http/person-tools.js.map +1 -0
  90. package/dist/adapters/http/scope-rows.d.ts +10 -0
  91. package/dist/adapters/http/scope-rows.js +30 -0
  92. package/dist/adapters/http/scope-rows.js.map +1 -0
  93. package/dist/adapters/http/signal.d.ts +61 -0
  94. package/dist/adapters/http/signal.js +263 -0
  95. package/dist/adapters/http/signal.js.map +1 -0
  96. package/dist/adapters/http/version.d.ts +6 -0
  97. package/dist/adapters/http/version.js +12 -0
  98. package/dist/adapters/http/version.js.map +1 -0
  99. package/dist/adapters/mcp/mcp-servers.d.ts +2 -0
  100. package/dist/adapters/mcp/mcp-servers.js +154 -0
  101. package/dist/adapters/mcp/mcp-servers.js.map +1 -0
  102. package/dist/adapters/oauth/client-metadata-documents.d.ts +9 -0
  103. package/dist/adapters/oauth/client-metadata-documents.js +25 -0
  104. package/dist/adapters/oauth/client-metadata-documents.js.map +1 -0
  105. package/dist/adapters/pagasae/pagasae-client.d.ts +8 -0
  106. package/dist/adapters/pagasae/pagasae-client.js +88 -0
  107. package/dist/adapters/pagasae/pagasae-client.js.map +1 -0
  108. package/dist/adapters/prisma/account-grants.d.ts +4 -0
  109. package/dist/adapters/prisma/account-grants.js +27 -0
  110. package/dist/adapters/prisma/account-grants.js.map +1 -0
  111. package/dist/adapters/prisma/calls.d.ts +4 -0
  112. package/dist/adapters/prisma/calls.js +35 -0
  113. package/dist/adapters/prisma/calls.js.map +1 -0
  114. package/dist/adapters/prisma/changes.d.ts +21 -0
  115. package/dist/adapters/prisma/changes.js +86 -0
  116. package/dist/adapters/prisma/changes.js.map +1 -0
  117. package/dist/adapters/prisma/client-calls.d.ts +4 -0
  118. package/dist/adapters/prisma/client-calls.js +59 -0
  119. package/dist/adapters/prisma/client-calls.js.map +1 -0
  120. package/dist/adapters/prisma/client.d.ts +8 -0
  121. package/dist/adapters/prisma/client.js +11 -0
  122. package/dist/adapters/prisma/client.js.map +1 -0
  123. package/dist/adapters/prisma/connection-store.d.ts +4 -0
  124. package/dist/adapters/prisma/connection-store.js +28 -0
  125. package/dist/adapters/prisma/connection-store.js.map +1 -0
  126. package/dist/adapters/prisma/fleet-forgetter.d.ts +4 -0
  127. package/dist/adapters/prisma/fleet-forgetter.js +10 -0
  128. package/dist/adapters/prisma/fleet-forgetter.js.map +1 -0
  129. package/dist/adapters/prisma/fleet-switches.d.ts +4 -0
  130. package/dist/adapters/prisma/fleet-switches.js +10 -0
  131. package/dist/adapters/prisma/fleet-switches.js.map +1 -0
  132. package/dist/adapters/prisma/generated/browser.d.ts +108 -0
  133. package/dist/adapters/prisma/generated/browser.js +18 -0
  134. package/dist/adapters/prisma/generated/browser.js.map +1 -0
  135. package/dist/adapters/prisma/generated/client.d.ts +127 -0
  136. package/dist/adapters/prisma/generated/client.js +38 -0
  137. package/dist/adapters/prisma/generated/client.js.map +1 -0
  138. package/dist/adapters/prisma/generated/commonInputTypes.d.ts +490 -0
  139. package/dist/adapters/prisma/generated/commonInputTypes.js +11 -0
  140. package/dist/adapters/prisma/generated/commonInputTypes.js.map +1 -0
  141. package/dist/adapters/prisma/generated/enums.d.ts +1 -0
  142. package/dist/adapters/prisma/generated/enums.js +12 -0
  143. package/dist/adapters/prisma/generated/enums.js.map +1 -0
  144. package/dist/adapters/prisma/generated/internal/class.d.ts +319 -0
  145. package/dist/adapters/prisma/generated/internal/class.js +50 -0
  146. package/dist/adapters/prisma/generated/internal/class.js.map +1 -0
  147. package/dist/adapters/prisma/generated/internal/prismaNamespace.d.ts +2102 -0
  148. package/dist/adapters/prisma/generated/internal/prismaNamespace.js +294 -0
  149. package/dist/adapters/prisma/generated/internal/prismaNamespace.js.map +1 -0
  150. package/dist/adapters/prisma/generated/internal/prismaNamespaceBrowser.d.ts +273 -0
  151. package/dist/adapters/prisma/generated/internal/prismaNamespaceBrowser.js +264 -0
  152. package/dist/adapters/prisma/generated/internal/prismaNamespaceBrowser.js.map +1 -0
  153. package/dist/adapters/prisma/generated/models/AccountGrant.d.ts +1088 -0
  154. package/dist/adapters/prisma/generated/models/AccountGrant.js +2 -0
  155. package/dist/adapters/prisma/generated/models/AccountGrant.js.map +1 -0
  156. package/dist/adapters/prisma/generated/models/AuthorizationCode.d.ts +1171 -0
  157. package/dist/adapters/prisma/generated/models/AuthorizationCode.js +2 -0
  158. package/dist/adapters/prisma/generated/models/AuthorizationCode.js.map +1 -0
  159. package/dist/adapters/prisma/generated/models/Call.d.ts +994 -0
  160. package/dist/adapters/prisma/generated/models/Call.js +2 -0
  161. package/dist/adapters/prisma/generated/models/Call.js.map +1 -0
  162. package/dist/adapters/prisma/generated/models/ClientCall.d.ts +1119 -0
  163. package/dist/adapters/prisma/generated/models/ClientCall.js +2 -0
  164. package/dist/adapters/prisma/generated/models/ClientCall.js.map +1 -0
  165. package/dist/adapters/prisma/generated/models/ClientCallReply.d.ts +1129 -0
  166. package/dist/adapters/prisma/generated/models/ClientCallReply.js +2 -0
  167. package/dist/adapters/prisma/generated/models/ClientCallReply.js.map +1 -0
  168. package/dist/adapters/prisma/generated/models/Connection.d.ts +1011 -0
  169. package/dist/adapters/prisma/generated/models/Connection.js +2 -0
  170. package/dist/adapters/prisma/generated/models/Connection.js.map +1 -0
  171. package/dist/adapters/prisma/generated/models/FleetSwitch.d.ts +945 -0
  172. package/dist/adapters/prisma/generated/models/FleetSwitch.js +2 -0
  173. package/dist/adapters/prisma/generated/models/FleetSwitch.js.map +1 -0
  174. package/dist/adapters/prisma/generated/models/InstallationRequest.d.ts +1030 -0
  175. package/dist/adapters/prisma/generated/models/InstallationRequest.js +2 -0
  176. package/dist/adapters/prisma/generated/models/InstallationRequest.js.map +1 -0
  177. package/dist/adapters/prisma/generated/models/IssuedToken.d.ts +1224 -0
  178. package/dist/adapters/prisma/generated/models/IssuedToken.js +2 -0
  179. package/dist/adapters/prisma/generated/models/IssuedToken.js.map +1 -0
  180. package/dist/adapters/prisma/generated/models/OAuthClient.d.ts +1005 -0
  181. package/dist/adapters/prisma/generated/models/OAuthClient.js +2 -0
  182. package/dist/adapters/prisma/generated/models/OAuthClient.js.map +1 -0
  183. package/dist/adapters/prisma/generated/models/OpenedDelivery.d.ts +1087 -0
  184. package/dist/adapters/prisma/generated/models/OpenedDelivery.js +2 -0
  185. package/dist/adapters/prisma/generated/models/OpenedDelivery.js.map +1 -0
  186. package/dist/adapters/prisma/generated/models/OutsidePartySwitch.d.ts +942 -0
  187. package/dist/adapters/prisma/generated/models/OutsidePartySwitch.js +2 -0
  188. package/dist/adapters/prisma/generated/models/OutsidePartySwitch.js.map +1 -0
  189. package/dist/adapters/prisma/generated/models/OwnerQuestion.d.ts +1035 -0
  190. package/dist/adapters/prisma/generated/models/OwnerQuestion.js +2 -0
  191. package/dist/adapters/prisma/generated/models/OwnerQuestion.js.map +1 -0
  192. package/dist/adapters/prisma/generated/models/Party.d.ts +1310 -0
  193. package/dist/adapters/prisma/generated/models/Party.js +2 -0
  194. package/dist/adapters/prisma/generated/models/Party.js.map +1 -0
  195. package/dist/adapters/prisma/generated/models/PendingRequest.d.ts +1252 -0
  196. package/dist/adapters/prisma/generated/models/PendingRequest.js +2 -0
  197. package/dist/adapters/prisma/generated/models/PendingRequest.js.map +1 -0
  198. package/dist/adapters/prisma/generated/models/PersonCrew.d.ts +974 -0
  199. package/dist/adapters/prisma/generated/models/PersonCrew.js +2 -0
  200. package/dist/adapters/prisma/generated/models/PersonCrew.js.map +1 -0
  201. package/dist/adapters/prisma/generated/models/RequestOutcomeNotice.d.ts +1120 -0
  202. package/dist/adapters/prisma/generated/models/RequestOutcomeNotice.js +2 -0
  203. package/dist/adapters/prisma/generated/models/RequestOutcomeNotice.js.map +1 -0
  204. package/dist/adapters/prisma/generated/models/ToolMark.d.ts +947 -0
  205. package/dist/adapters/prisma/generated/models/ToolMark.js +2 -0
  206. package/dist/adapters/prisma/generated/models/ToolMark.js.map +1 -0
  207. package/dist/adapters/prisma/generated/models.d.ts +19 -0
  208. package/dist/adapters/prisma/generated/models.js +2 -0
  209. package/dist/adapters/prisma/generated/models.js.map +1 -0
  210. package/dist/adapters/prisma/installation-requests.d.ts +4 -0
  211. package/dist/adapters/prisma/installation-requests.js +25 -0
  212. package/dist/adapters/prisma/installation-requests.js.map +1 -0
  213. package/dist/adapters/prisma/migrate.d.ts +5 -0
  214. package/dist/adapters/prisma/migrate.js +53 -0
  215. package/dist/adapters/prisma/migrate.js.map +1 -0
  216. package/dist/adapters/prisma/oauth-stores.d.ts +5 -0
  217. package/dist/adapters/prisma/oauth-stores.js +85 -0
  218. package/dist/adapters/prisma/oauth-stores.js.map +1 -0
  219. package/dist/adapters/prisma/opened-deliveries.d.ts +4 -0
  220. package/dist/adapters/prisma/opened-deliveries.js +29 -0
  221. package/dist/adapters/prisma/opened-deliveries.js.map +1 -0
  222. package/dist/adapters/prisma/outcome-notices.d.ts +4 -0
  223. package/dist/adapters/prisma/outcome-notices.js +24 -0
  224. package/dist/adapters/prisma/outcome-notices.js.map +1 -0
  225. package/dist/adapters/prisma/outside-party-switches.d.ts +4 -0
  226. package/dist/adapters/prisma/outside-party-switches.js +10 -0
  227. package/dist/adapters/prisma/outside-party-switches.js.map +1 -0
  228. package/dist/adapters/prisma/owner-questions.d.ts +8 -0
  229. package/dist/adapters/prisma/owner-questions.js +54 -0
  230. package/dist/adapters/prisma/owner-questions.js.map +1 -0
  231. package/dist/adapters/prisma/party-store.d.ts +7 -0
  232. package/dist/adapters/prisma/party-store.js +71 -0
  233. package/dist/adapters/prisma/party-store.js.map +1 -0
  234. package/dist/adapters/prisma/pending-requests.d.ts +11 -0
  235. package/dist/adapters/prisma/pending-requests.js +128 -0
  236. package/dist/adapters/prisma/pending-requests.js.map +1 -0
  237. package/dist/adapters/prisma/person-crews.d.ts +4 -0
  238. package/dist/adapters/prisma/person-crews.js +18 -0
  239. package/dist/adapters/prisma/person-crews.js.map +1 -0
  240. package/dist/adapters/prisma/tool-marks.d.ts +4 -0
  241. package/dist/adapters/prisma/tool-marks.js +15 -0
  242. package/dist/adapters/prisma/tool-marks.js.map +1 -0
  243. package/dist/adapters/timers/sleep.d.ts +3 -0
  244. package/dist/adapters/timers/sleep.js +11 -0
  245. package/dist/adapters/timers/sleep.js.map +1 -0
  246. package/dist/adapters/trpc/router.d.ts +606 -0
  247. package/dist/adapters/trpc/router.js +519 -0
  248. package/dist/adapters/trpc/router.js.map +1 -0
  249. package/dist/app.d.ts +43 -0
  250. package/dist/app.js +446 -0
  251. package/dist/app.js.map +1 -0
  252. package/dist/bin/aeolus-gateway.d.ts +2 -0
  253. package/dist/bin/aeolus-gateway.js +65 -0
  254. package/dist/bin/aeolus-gateway.js.map +1 -0
  255. package/dist/config.d.ts +41 -0
  256. package/dist/config.js +65 -0
  257. package/dist/config.js.map +1 -0
  258. package/dist/core/actors/authenticate-actor.d.ts +54 -0
  259. package/dist/core/actors/authenticate-actor.js +42 -0
  260. package/dist/core/actors/authenticate-actor.js.map +1 -0
  261. package/dist/core/actors/credential-of.d.ts +27 -0
  262. package/dist/core/actors/credential-of.js +25 -0
  263. package/dist/core/actors/credential-of.js.map +1 -0
  264. package/dist/core/connection/connect.d.ts +26 -0
  265. package/dist/core/connection/connect.js +58 -0
  266. package/dist/core/connection/connect.js.map +1 -0
  267. package/dist/core/connection/ports.d.ts +92 -0
  268. package/dist/core/connection/ports.js +2 -0
  269. package/dist/core/connection/ports.js.map +1 -0
  270. package/dist/core/connection/read-connection.d.ts +14 -0
  271. package/dist/core/connection/read-connection.js +24 -0
  272. package/dist/core/connection/read-connection.js.map +1 -0
  273. package/dist/core/installation/delete-fleet.d.ts +21 -0
  274. package/dist/core/installation/delete-fleet.js +21 -0
  275. package/dist/core/installation/delete-fleet.js.map +1 -0
  276. package/dist/core/installation/ports.d.ts +43 -0
  277. package/dist/core/installation/ports.js +2 -0
  278. package/dist/core/installation/ports.js.map +1 -0
  279. package/dist/core/installation/read-fleet.d.ts +18 -0
  280. package/dist/core/installation/read-fleet.js +9 -0
  281. package/dist/core/installation/read-fleet.js.map +1 -0
  282. package/dist/core/installation/request-id.d.ts +8 -0
  283. package/dist/core/installation/request-id.js +10 -0
  284. package/dist/core/installation/request-id.js.map +1 -0
  285. package/dist/core/installation/served.d.ts +12 -0
  286. package/dist/core/installation/served.js +8 -0
  287. package/dist/core/installation/served.js.map +1 -0
  288. package/dist/core/installation/set-fleet-enabled.d.ts +25 -0
  289. package/dist/core/installation/set-fleet-enabled.js +22 -0
  290. package/dist/core/installation/set-fleet-enabled.js.map +1 -0
  291. package/dist/core/mcp-in/call-tool.d.ts +42 -0
  292. package/dist/core/mcp-in/call-tool.js +82 -0
  293. package/dist/core/mcp-in/call-tool.js.map +1 -0
  294. package/dist/core/mcp-in/client-call.d.ts +51 -0
  295. package/dist/core/mcp-in/client-call.js +39 -0
  296. package/dist/core/mcp-in/client-call.js.map +1 -0
  297. package/dist/core/mcp-in/collect-replies.d.ts +22 -0
  298. package/dist/core/mcp-in/collect-replies.js +66 -0
  299. package/dist/core/mcp-in/collect-replies.js.map +1 -0
  300. package/dist/core/mcp-in/list-tools.d.ts +48 -0
  301. package/dist/core/mcp-in/list-tools.js +70 -0
  302. package/dist/core/mcp-in/list-tools.js.map +1 -0
  303. package/dist/core/mcp-in/ports.d.ts +108 -0
  304. package/dist/core/mcp-in/ports.js +2 -0
  305. package/dist/core/mcp-in/ports.js.map +1 -0
  306. package/dist/core/mcp-in/read-client-call.d.ts +23 -0
  307. package/dist/core/mcp-in/read-client-call.js +15 -0
  308. package/dist/core/mcp-in/read-client-call.js.map +1 -0
  309. package/dist/core/mcp-out/content-types.d.ts +12 -0
  310. package/dist/core/mcp-out/content-types.js +28 -0
  311. package/dist/core/mcp-out/content-types.js.map +1 -0
  312. package/dist/core/mcp-out/hand-call.d.ts +105 -0
  313. package/dist/core/mcp-out/hand-call.js +118 -0
  314. package/dist/core/mcp-out/hand-call.js.map +1 -0
  315. package/dist/core/mcp-out/mark-tool.d.ts +20 -0
  316. package/dist/core/mcp-out/mark-tool.js +17 -0
  317. package/dist/core/mcp-out/mark-tool.js.map +1 -0
  318. package/dist/core/mcp-out/ports.d.ts +66 -0
  319. package/dist/core/mcp-out/ports.js +2 -0
  320. package/dist/core/mcp-out/ports.js.map +1 -0
  321. package/dist/core/mcp-out/run-party.d.ts +26 -0
  322. package/dist/core/mcp-out/run-party.js +62 -0
  323. package/dist/core/mcp-out/run-party.js.map +1 -0
  324. package/dist/core/mcp-out/state-party.d.ts +39 -0
  325. package/dist/core/mcp-out/state-party.js +30 -0
  326. package/dist/core/mcp-out/state-party.js.map +1 -0
  327. package/dist/core/mcp-out/statement.d.ts +36 -0
  328. package/dist/core/mcp-out/statement.js +34 -0
  329. package/dist/core/mcp-out/statement.js.map +1 -0
  330. package/dist/core/oauth/authenticate-access-token.d.ts +25 -0
  331. package/dist/core/oauth/authenticate-access-token.js +19 -0
  332. package/dist/core/oauth/authenticate-access-token.js.map +1 -0
  333. package/dist/core/oauth/exchange-token.d.ts +32 -0
  334. package/dist/core/oauth/exchange-token.js +98 -0
  335. package/dist/core/oauth/exchange-token.js.map +1 -0
  336. package/dist/core/oauth/issue-code.d.ts +23 -0
  337. package/dist/core/oauth/issue-code.js +34 -0
  338. package/dist/core/oauth/issue-code.js.map +1 -0
  339. package/dist/core/oauth/ports.d.ts +105 -0
  340. package/dist/core/oauth/ports.js +2 -0
  341. package/dist/core/oauth/ports.js.map +1 -0
  342. package/dist/core/oauth/read-authorization.d.ts +43 -0
  343. package/dist/core/oauth/read-authorization.js +74 -0
  344. package/dist/core/oauth/read-authorization.js.map +1 -0
  345. package/dist/core/oauth/redirect-uri.d.ts +6 -0
  346. package/dist/core/oauth/redirect-uri.js +20 -0
  347. package/dist/core/oauth/redirect-uri.js.map +1 -0
  348. package/dist/core/oauth/register-client.d.ts +22 -0
  349. package/dist/core/oauth/register-client.js +20 -0
  350. package/dist/core/oauth/register-client.js.map +1 -0
  351. package/dist/core/operator/authenticate-operator.d.ts +22 -0
  352. package/dist/core/operator/authenticate-operator.js +26 -0
  353. package/dist/core/operator/authenticate-operator.js.map +1 -0
  354. package/dist/core/operator/ports.d.ts +15 -0
  355. package/dist/core/operator/ports.js +2 -0
  356. package/dist/core/operator/ports.js.map +1 -0
  357. package/dist/core/outside-parties/ports.d.ts +17 -0
  358. package/dist/core/outside-parties/ports.js +2 -0
  359. package/dist/core/outside-parties/ports.js.map +1 -0
  360. package/dist/core/outside-parties/set-outside-parties.d.ts +36 -0
  361. package/dist/core/outside-parties/set-outside-parties.js +38 -0
  362. package/dist/core/outside-parties/set-outside-parties.js.map +1 -0
  363. package/dist/core/parties/approve-party.d.ts +55 -0
  364. package/dist/core/parties/approve-party.js +127 -0
  365. package/dist/core/parties/approve-party.js.map +1 -0
  366. package/dist/core/parties/change-party.d.ts +42 -0
  367. package/dist/core/parties/change-party.js +49 -0
  368. package/dist/core/parties/change-party.js.map +1 -0
  369. package/dist/core/parties/check-server.d.ts +24 -0
  370. package/dist/core/parties/check-server.js +21 -0
  371. package/dist/core/parties/check-server.js.map +1 -0
  372. package/dist/core/parties/crew-party.d.ts +21 -0
  373. package/dist/core/parties/crew-party.js +29 -0
  374. package/dist/core/parties/crew-party.js.map +1 -0
  375. package/dist/core/parties/list-parties.d.ts +29 -0
  376. package/dist/core/parties/list-parties.js +39 -0
  377. package/dist/core/parties/list-parties.js.map +1 -0
  378. package/dist/core/parties/party.d.ts +52 -0
  379. package/dist/core/parties/party.js +24 -0
  380. package/dist/core/parties/party.js.map +1 -0
  381. package/dist/core/parties/ports.d.ts +74 -0
  382. package/dist/core/parties/ports.js +2 -0
  383. package/dist/core/parties/ports.js.map +1 -0
  384. package/dist/core/parties/read-party-tools.d.ts +22 -0
  385. package/dist/core/parties/read-party-tools.js +22 -0
  386. package/dist/core/parties/read-party-tools.js.map +1 -0
  387. package/dist/core/parties/retire-party.d.ts +29 -0
  388. package/dist/core/parties/retire-party.js +43 -0
  389. package/dist/core/parties/retire-party.js.map +1 -0
  390. package/dist/core/parties/shown-party.d.ts +27 -0
  391. package/dist/core/parties/shown-party.js +10 -0
  392. package/dist/core/parties/shown-party.js.map +1 -0
  393. package/dist/core/people/answer-delivery.d.ts +24 -0
  394. package/dist/core/people/answer-delivery.js +28 -0
  395. package/dist/core/people/answer-delivery.js.map +1 -0
  396. package/dist/core/people/crew-person-ship.d.ts +42 -0
  397. package/dist/core/people/crew-person-ship.js +59 -0
  398. package/dist/core/people/crew-person-ship.js.map +1 -0
  399. package/dist/core/people/done-delivery.d.ts +16 -0
  400. package/dist/core/people/done-delivery.js +9 -0
  401. package/dist/core/people/done-delivery.js.map +1 -0
  402. package/dist/core/people/inbox-entry.d.ts +14 -0
  403. package/dist/core/people/inbox-entry.js +11 -0
  404. package/dist/core/people/inbox-entry.js.map +1 -0
  405. package/dist/core/people/open-delivery.d.ts +30 -0
  406. package/dist/core/people/open-delivery.js +40 -0
  407. package/dist/core/people/open-delivery.js.map +1 -0
  408. package/dist/core/people/opened-of.d.ts +29 -0
  409. package/dist/core/people/opened-of.js +30 -0
  410. package/dist/core/people/opened-of.js.map +1 -0
  411. package/dist/core/people/person-crew.d.ts +39 -0
  412. package/dist/core/people/person-crew.js +61 -0
  413. package/dist/core/people/person-crew.js.map +1 -0
  414. package/dist/core/people/ports.d.ts +102 -0
  415. package/dist/core/people/ports.js +2 -0
  416. package/dist/core/people/ports.js.map +1 -0
  417. package/dist/core/people/read-inbox.d.ts +37 -0
  418. package/dist/core/people/read-inbox.js +36 -0
  419. package/dist/core/people/read-inbox.js.map +1 -0
  420. package/dist/core/requests/ask-for-client.d.ts +45 -0
  421. package/dist/core/requests/ask-for-client.js +33 -0
  422. package/dist/core/requests/ask-for-client.js.map +1 -0
  423. package/dist/core/requests/ask-for-server.d.ts +32 -0
  424. package/dist/core/requests/ask-for-server.js +42 -0
  425. package/dist/core/requests/ask-for-server.js.map +1 -0
  426. package/dist/core/requests/ask-owners.d.ts +28 -0
  427. package/dist/core/requests/ask-owners.js +85 -0
  428. package/dist/core/requests/ask-owners.js.map +1 -0
  429. package/dist/core/requests/decide-request.d.ts +53 -0
  430. package/dist/core/requests/decide-request.js +83 -0
  431. package/dist/core/requests/decide-request.js.map +1 -0
  432. package/dist/core/requests/expire-requests.d.ts +14 -0
  433. package/dist/core/requests/expire-requests.js +21 -0
  434. package/dist/core/requests/expire-requests.js.map +1 -0
  435. package/dist/core/requests/list-mine.d.ts +16 -0
  436. package/dist/core/requests/list-mine.js +20 -0
  437. package/dist/core/requests/list-mine.js.map +1 -0
  438. package/dist/core/requests/list-to-decide.d.ts +11 -0
  439. package/dist/core/requests/list-to-decide.js +13 -0
  440. package/dist/core/requests/list-to-decide.js.map +1 -0
  441. package/dist/core/requests/open-request.d.ts +21 -0
  442. package/dist/core/requests/open-request.js +26 -0
  443. package/dist/core/requests/open-request.js.map +1 -0
  444. package/dist/core/requests/outcome-notice.d.ts +13 -0
  445. package/dist/core/requests/outcome-notice.js +26 -0
  446. package/dist/core/requests/outcome-notice.js.map +1 -0
  447. package/dist/core/requests/ports.d.ts +191 -0
  448. package/dist/core/requests/ports.js +2 -0
  449. package/dist/core/requests/ports.js.map +1 -0
  450. package/dist/core/requests/read-waiting.d.ts +46 -0
  451. package/dist/core/requests/read-waiting.js +41 -0
  452. package/dist/core/requests/read-waiting.js.map +1 -0
  453. package/dist/core/requests/request-state.d.ts +5 -0
  454. package/dist/core/requests/request-state.js +10 -0
  455. package/dist/core/requests/request-state.js.map +1 -0
  456. package/dist/core/requests/tell-outcomes.d.ts +24 -0
  457. package/dist/core/requests/tell-outcomes.js +39 -0
  458. package/dist/core/requests/tell-outcomes.js.map +1 -0
  459. package/dist/core/requests/watch-waiting.d.ts +32 -0
  460. package/dist/core/requests/watch-waiting.js +31 -0
  461. package/dist/core/requests/watch-waiting.js.map +1 -0
  462. package/dist/core/shared/clock.d.ts +4 -0
  463. package/dist/core/shared/clock.js +2 -0
  464. package/dist/core/shared/clock.js.map +1 -0
  465. package/dist/core/shared/errors.d.ts +10 -0
  466. package/dist/core/shared/errors.js +6 -0
  467. package/dist/core/shared/errors.js.map +1 -0
  468. package/dist/core/shared/result.d.ts +16 -0
  469. package/dist/core/shared/result.js +7 -0
  470. package/dist/core/shared/result.js.map +1 -0
  471. package/dist/core/sign-in/account-token.d.ts +42 -0
  472. package/dist/core/sign-in/account-token.js +46 -0
  473. package/dist/core/sign-in/account-token.js.map +1 -0
  474. package/dist/core/sign-in/complete-sign-in.d.ts +66 -0
  475. package/dist/core/sign-in/complete-sign-in.js +73 -0
  476. package/dist/core/sign-in/complete-sign-in.js.map +1 -0
  477. package/dist/core/sign-in/end-sign-ins.d.ts +19 -0
  478. package/dist/core/sign-in/end-sign-ins.js +17 -0
  479. package/dist/core/sign-in/end-sign-ins.js.map +1 -0
  480. package/dist/core/sign-in/ports.d.ts +115 -0
  481. package/dist/core/sign-in/ports.js +2 -0
  482. package/dist/core/sign-in/ports.js.map +1 -0
  483. package/dist/core/sign-in/sign-out.d.ts +10 -0
  484. package/dist/core/sign-in/sign-out.js +9 -0
  485. package/dist/core/sign-in/sign-out.js.map +1 -0
  486. package/dist/core/sign-in/start-page-sign-in.d.ts +25 -0
  487. package/dist/core/sign-in/start-page-sign-in.js +30 -0
  488. package/dist/core/sign-in/start-page-sign-in.js.map +1 -0
  489. package/dist/core/sign-in/start-sign-in.d.ts +30 -0
  490. package/dist/core/sign-in/start-sign-in.js +25 -0
  491. package/dist/core/sign-in/start-sign-in.js.map +1 -0
  492. package/dist/core/vault/credential.d.ts +18 -0
  493. package/dist/core/vault/credential.js +2 -0
  494. package/dist/core/vault/credential.js.map +1 -0
  495. package/dist/outcome-worker.d.ts +29 -0
  496. package/dist/outcome-worker.js +60 -0
  497. package/dist/outcome-worker.js.map +1 -0
  498. package/dist/party-workers.d.ts +32 -0
  499. package/dist/party-workers.js +57 -0
  500. package/dist/party-workers.js.map +1 -0
  501. package/package.json +70 -4
  502. package/prisma.config.ts +18 -0
  503. package/src/adapters/prisma/migrations/20261018200000_init/migration.sql +35 -0
  504. package/src/adapters/prisma/migrations/20261018210000_parties/migration.sql +19 -0
  505. package/src/adapters/prisma/migrations/20261018220000_tool_marks/migration.sql +8 -0
  506. package/src/adapters/prisma/migrations/20261018230000_calls/migration.sql +13 -0
  507. package/src/adapters/prisma/migrations/20261019090000_oauth/migration.sql +60 -0
  508. package/src/adapters/prisma/migrations/20261019100000_client_parties/migration.sql +8 -0
  509. package/src/adapters/prisma/migrations/20261019110000_oauth_parties/migration.sql +5 -0
  510. package/src/adapters/prisma/migrations/20261019120000_client_calls/migration.sql +15 -0
  511. package/src/adapters/prisma/migrations/20261019130000_client_call_replies/migration.sql +20 -0
  512. package/src/adapters/prisma/migrations/20261019140000_identity_providers/migration.sql +10 -0
  513. package/src/adapters/prisma/migrations/20261020090000_no_identity_providers/migration.sql +2 -0
  514. package/src/adapters/prisma/migrations/20261020100000_account_grants_in_tokens/migration.sql +5 -0
  515. package/src/adapters/prisma/migrations/20261020110000_account_grants/migration.sql +15 -0
  516. package/src/adapters/prisma/migrations/20261020120000_person_crews/migration.sql +9 -0
  517. package/src/adapters/prisma/migrations/20261020130000_opened_deliveries/migration.sql +13 -0
  518. package/src/adapters/prisma/migrations/20261020140000_pending_requests/migration.sql +26 -0
  519. package/src/adapters/prisma/migrations/20261020150000_outside_party_switches/migration.sql +8 -0
  520. package/src/adapters/prisma/migrations/20261020160000_pending_requests_told/migration.sql +2 -0
  521. package/src/adapters/prisma/migrations/20261020170000_request_outcome_notices/migration.sql +17 -0
  522. package/src/adapters/prisma/migrations/20261020180000_owner_questions/migration.sql +11 -0
  523. package/src/adapters/prisma/migrations/20261020190000_request_changes/migration.sql +12 -0
  524. package/src/adapters/prisma/migrations/20261020200000_account_grant_scopes/migration.sql +2 -0
  525. package/src/adapters/prisma/migrations/20261020210000_party_owner_from_fleet/migration.sql +2 -0
  526. package/src/adapters/prisma/migrations/20261020220000_client_call_deadline_optional/migration.sql +2 -0
  527. package/src/adapters/prisma/migrations/migration_lock.toml +3 -0
  528. package/src/adapters/prisma/schema.prisma +312 -0
@@ -0,0 +1,60 @@
1
+ export function createOutcomeWorker(deps) {
2
+ const stopping = new AbortController();
3
+ let running = Promise.resolve();
4
+ /** Whether a round runs, and how many were asked for since it started. */
5
+ const rounds = { isRunning: false, asked: 0 };
6
+ const round = async () => {
7
+ try {
8
+ const expired = await deps.expireRequests();
9
+ const { told, kept, refused } = await deps.tellOutcomes();
10
+ if (refused > 0) {
11
+ deps.log.warn({ refused }, "the fleet refused some request outcomes: their people see them on the gateway's page");
12
+ }
13
+ if (expired + told + kept > 0) {
14
+ deps.log.info({ expired, told, kept }, 'request outcomes');
15
+ }
16
+ const questions = await deps.askOwners();
17
+ if (questions.refused > 0) {
18
+ deps.log.warn({ refused: questions.refused }, "the fleet refused some questions to the gateway's owner");
19
+ }
20
+ }
21
+ catch (error) {
22
+ deps.log.error({ err: error }, 'request outcomes round failed');
23
+ }
24
+ };
25
+ const runRound = () => {
26
+ rounds.asked += 1;
27
+ if (rounds.isRunning) {
28
+ return;
29
+ }
30
+ rounds.isRunning = true;
31
+ running = (async () => {
32
+ while (rounds.asked > 0 && !stopping.signal.aborted) {
33
+ rounds.asked = 0;
34
+ await round();
35
+ }
36
+ rounds.isRunning = false;
37
+ })();
38
+ };
39
+ return {
40
+ start: () => {
41
+ void (async () => {
42
+ while (!stopping.signal.aborted) {
43
+ runRound();
44
+ await running;
45
+ await deps.sleep(deps.intervalMs, stopping.signal);
46
+ }
47
+ })();
48
+ },
49
+ tellNow: () => {
50
+ if (!stopping.signal.aborted) {
51
+ runRound();
52
+ }
53
+ },
54
+ stop: async () => {
55
+ stopping.abort();
56
+ await running;
57
+ },
58
+ };
59
+ }
60
+ //# sourceMappingURL=outcome-worker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"outcome-worker.js","sourceRoot":"","sources":["../src/outcome-worker.ts"],"names":[],"mappings":"AAwBA,MAAM,UAAU,mBAAmB,CAAC,IAAoJ;IACtL,MAAM,QAAQ,GAAG,IAAI,eAAe,EAAE,CAAC;IACvC,IAAI,OAAO,GAAkB,OAAO,CAAC,OAAO,EAAE,CAAC;IAC/C,0EAA0E;IAC1E,MAAM,MAAM,GAAG,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;IAE9C,MAAM,KAAK,GAAG,KAAK,IAAmB,EAAE;QACtC,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;YAC5C,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;YAC1D,IAAI,OAAO,GAAG,CAAC,EAAE,CAAC;gBAChB,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,EAAE,sFAAsF,CAAC,CAAC;YACrH,CAAC;YACD,IAAI,OAAO,GAAG,IAAI,GAAG,IAAI,GAAG,CAAC,EAAE,CAAC;gBAC9B,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,kBAAkB,CAAC,CAAC;YAC7D,CAAC;YACD,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC;YACzC,IAAI,SAAS,CAAC,OAAO,GAAG,CAAC,EAAE,CAAC;gBAC1B,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,SAAS,CAAC,OAAO,EAAE,EAAE,yDAAyD,CAAC,CAAC;YAC3G,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE,+BAA+B,CAAC,CAAC;QAClE,CAAC;IACH,CAAC,CAAC;IAEF,MAAM,QAAQ,GAAG,GAAS,EAAE;QAC1B,MAAM,CAAC,KAAK,IAAI,CAAC,CAAC;QAClB,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC;YACrB,OAAO;QACT,CAAC;QACD,MAAM,CAAC,SAAS,GAAG,IAAI,CAAC;QACxB,OAAO,GAAG,CAAC,KAAK,IAAI,EAAE;YACpB,OAAO,MAAM,CAAC,KAAK,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;gBACpD,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC;gBACjB,MAAM,KAAK,EAAE,CAAC;YAChB,CAAC;YACD,MAAM,CAAC,SAAS,GAAG,KAAK,CAAC;QAC3B,CAAC,CAAC,EAAE,CAAC;IACP,CAAC,CAAC;IAEF,OAAO;QACL,KAAK,EAAE,GAAG,EAAE;YACV,KAAK,CAAC,KAAK,IAAI,EAAE;gBACf,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;oBAChC,QAAQ,EAAE,CAAC;oBACX,MAAM,OAAO,CAAC;oBACd,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;gBACrD,CAAC;YACH,CAAC,CAAC,EAAE,CAAC;QACP,CAAC;QACD,OAAO,EAAE,GAAG,EAAE;YACZ,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;gBAC7B,QAAQ,EAAE,CAAC;YACb,CAAC;QACH,CAAC;QACD,IAAI,EAAE,KAAK,IAAI,EAAE;YACf,QAAQ,CAAC,KAAK,EAAE,CAAC;YACjB,MAAM,OAAO,CAAC;QAChB,CAAC;KACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,32 @@
1
+ /**
2
+ * The gateway's workers, one per crewed party, each until the gateway stops
3
+ * or the fleet refuses its crew token: an outside server's states its proxy
4
+ * ship, then takes its calls (interop 5.2); an outside client's takes the
5
+ * replies to its calls (Q9 a). A fleet's workers work only while its outside
6
+ * parties are on (interop I-3).
7
+ */
8
+ import type { FleetId } from '@aeolus-fleet/common';
9
+ import type { FastifyBaseLogger } from 'fastify';
10
+ import type { CollectReplies } from './core/mcp-in/collect-replies.js';
11
+ import type { RunParty } from './core/mcp-out/run-party.js';
12
+ import type { StateParty } from './core/mcp-out/state-party.js';
13
+ import type { PartyStore } from './core/parties/ports.js';
14
+ export interface PartyWorkers {
15
+ /** Starts the party's worker, unless it is not crewed or its worker runs already. */
16
+ start(party: {
17
+ fleetId: FleetId;
18
+ name: string;
19
+ }): Promise<void>;
20
+ /** Stops the fleet's workers, once their calls in flight ended, as when its outside parties go off. */
21
+ stopFleet(fleetId: FleetId): Promise<void>;
22
+ /** Stops every worker, once its calls in flight ended. */
23
+ stop(): Promise<void>;
24
+ }
25
+ export declare function createPartyWorkers(deps: {
26
+ parties: PartyStore;
27
+ stateParty: StateParty;
28
+ runParty: RunParty;
29
+ collectReplies: CollectReplies;
30
+ servesOutsideParties: (fleetId: FleetId) => Promise<boolean>;
31
+ log: FastifyBaseLogger;
32
+ }): PartyWorkers;
@@ -0,0 +1,57 @@
1
+ export function createPartyWorkers(deps) {
2
+ const stop = new AbortController();
3
+ /** Each running worker, by fleet and party, with what stops it. */
4
+ const running = new Map();
5
+ const work = async ({ fleetId, name }, signal) => {
6
+ if (!(await deps.servesOutsideParties(fleetId))) {
7
+ return;
8
+ }
9
+ const party = await deps.parties.find(fleetId, name);
10
+ if (party?.state !== 'crewed' || signal.aborted) {
11
+ return;
12
+ }
13
+ if (party.kind === 'mcpClient') {
14
+ const { ended } = await deps.collectReplies({ party, signal });
15
+ if (ended === 'crewRefused') {
16
+ deps.log.warn({ fleetId, party: name }, "the fleet refused the proxy ship's crew token: its calls get no replies");
17
+ }
18
+ return;
19
+ }
20
+ const stated = await deps.stateParty({ fleetId, name });
21
+ if (!stated.isOk) {
22
+ // Its calls are taken all the same; the next statement states it.
23
+ deps.log.warn({ fleetId, party: name, reason: stated.error.message }, 'proxy ship not stated');
24
+ }
25
+ const { ended } = await deps.runParty({ party, signal });
26
+ if (ended === 'crewRefused') {
27
+ deps.log.warn({ fleetId, party: name }, 'the fleet refused the proxy ship\'s crew token: its calls are not taken');
28
+ }
29
+ };
30
+ return {
31
+ start: (party) => {
32
+ const key = JSON.stringify([party.fleetId, party.name]);
33
+ if (!running.has(key) && !stop.signal.aborted) {
34
+ const stopFleet = new AbortController();
35
+ const done = work(party, AbortSignal.any([stop.signal, stopFleet.signal]))
36
+ .catch((error) => {
37
+ deps.log.error({ err: error, fleetId: party.fleetId, party: party.name }, 'party worker failed');
38
+ })
39
+ .finally(() => running.delete(key));
40
+ running.set(key, { fleetId: party.fleetId, done, stopFleet });
41
+ }
42
+ return Promise.resolve();
43
+ },
44
+ stopFleet: async (fleetId) => {
45
+ const fleetWorkers = [...running.values()].filter((worker) => worker.fleetId === fleetId);
46
+ for (const worker of fleetWorkers) {
47
+ worker.stopFleet.abort();
48
+ }
49
+ await Promise.all(fleetWorkers.map((worker) => worker.done));
50
+ },
51
+ stop: async () => {
52
+ stop.abort();
53
+ await Promise.all([...running.values()].map((worker) => worker.done));
54
+ },
55
+ };
56
+ }
57
+ //# sourceMappingURL=party-workers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"party-workers.js","sourceRoot":"","sources":["../src/party-workers.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,72 @@
1
1
  {
2
2
  "name": "@aeolus-fleet/gateway",
3
- "version": "0.0.0-stage",
4
- "stub": true,
5
- "description": "Temporary package placeholder for staged publishing"
6
- }
3
+ "version": "0.28.0",
4
+ "description": "Aeolus gateway: outside MCP servers and clients join a fleet as ships, through one gateway beside core.",
5
+ "keywords": [
6
+ "ai-agents",
7
+ "mcp",
8
+ "model-context-protocol",
9
+ "gateway"
10
+ ],
11
+ "license": "Apache-2.0",
12
+ "type": "module",
13
+ "repository": {
14
+ "type": "git",
15
+ "url": "git+https://github.com/ThomasHendrickx/aeolus-fleet-gateway.git"
16
+ },
17
+ "packageManager": "npm@11.19.1",
18
+ "engines": {
19
+ "node": ">=26"
20
+ },
21
+ "bin": {
22
+ "aeolus-gateway": "dist/bin/aeolus-gateway.js"
23
+ },
24
+ "files": [
25
+ "dist",
26
+ "prisma.config.ts",
27
+ "src/adapters/prisma/schema.prisma",
28
+ "src/adapters/prisma/migrations"
29
+ ],
30
+ "scripts": {
31
+ "postinstall": "prisma generate",
32
+ "generate": "prisma generate",
33
+ "build": "tsc --project tsconfig.build.json",
34
+ "typecheck": "tsc --project tsconfig.json",
35
+ "lint": "eslint --max-warnings 0 .",
36
+ "test": "vitest run",
37
+ "test:unit": "vitest run --project '*:unit'",
38
+ "test:integration": "vitest run --project '*:integration'",
39
+ "start": "node dist/bin/aeolus-gateway.js start",
40
+ "db:migrate": "tsx --env-file-if-exists=.env src/bin/aeolus-gateway.ts migrate"
41
+ },
42
+ "dependencies": {
43
+ "@aeolus-fleet/common": "^0.28.0",
44
+ "@fastify/websocket": "^11.3.4",
45
+ "@modelcontextprotocol/client": "^2.3.1",
46
+ "@modelcontextprotocol/server": "^2.3.1",
47
+ "@prisma/adapter-pg": "^7.10.1",
48
+ "@prisma/client": "^7.10.1",
49
+ "@trpc/server": "^11.19.0",
50
+ "fastify": "^5.12.7",
51
+ "pg": "^8.23.1",
52
+ "prisma": "^7.10.1",
53
+ "zod": "^4.6.5"
54
+ },
55
+ "devDependencies": {
56
+ "@aeolus-fleet/core": "^0.28.0",
57
+ "@eslint/js": "^10.0.1",
58
+ "@modelcontextprotocol/ext-tasks": "0.2.2",
59
+ "@testcontainers/postgresql": "^12.2.0",
60
+ "@types/node": "^26.6.3",
61
+ "@types/pg": "^8.23.1",
62
+ "@types/ws": "^8.18.2",
63
+ "eslint": "^10.11.0",
64
+ "eslint-plugin-check-file": "^3.3.2",
65
+ "testcontainers": "^12.2.0",
66
+ "tsx": "^4.23.15",
67
+ "typescript": "~6.0.3",
68
+ "typescript-eslint": "^8.71.0",
69
+ "vitest": "^5.0.3",
70
+ "ws": "^8.22.0"
71
+ }
72
+ }
@@ -0,0 +1,18 @@
1
+ import { existsSync } from 'node:fs';
2
+
3
+ import { defineConfig } from 'prisma/config';
4
+
5
+ if (existsSync('.env')) {
6
+ process.loadEnvFile('.env');
7
+ }
8
+
9
+ export default defineConfig({
10
+ schema: 'src/adapters/prisma/schema.prisma',
11
+ migrations: {
12
+ path: 'src/adapters/prisma/migrations',
13
+ },
14
+ datasource: {
15
+ // Only migrate commands need the URL; `prisma generate` runs without one.
16
+ url: process.env.DATABASE_URL,
17
+ },
18
+ });
@@ -0,0 +1,35 @@
1
+ -- CreateTable
2
+ CREATE TABLE "connections" (
3
+ "fleet_id" TEXT NOT NULL,
4
+ "ship_id" TEXT NOT NULL,
5
+ "ship_name" TEXT NOT NULL,
6
+ "crew_token" TEXT,
7
+ "crewed_at" TIMESTAMPTZ(3) NOT NULL,
8
+
9
+ CONSTRAINT "connections_pkey" PRIMARY KEY ("fleet_id")
10
+ );
11
+
12
+ -- CreateTable
13
+ CREATE TABLE "fleet_switches" (
14
+ "fleet_id" TEXT NOT NULL,
15
+ "enabled" BOOLEAN NOT NULL,
16
+ "changed_at" TIMESTAMPTZ(3) NOT NULL,
17
+
18
+ CONSTRAINT "fleet_switches_pkey" PRIMARY KEY ("fleet_id")
19
+ );
20
+
21
+ -- CreateTable
22
+ CREATE TABLE "installation_requests" (
23
+ "request_id" TEXT NOT NULL,
24
+ "kind" TEXT NOT NULL,
25
+ "request_hash" TEXT NOT NULL,
26
+ "fleet_id" TEXT,
27
+ "enabled" BOOLEAN,
28
+ "at" TIMESTAMPTZ(3) NOT NULL,
29
+
30
+ CONSTRAINT "installation_requests_pkey" PRIMARY KEY ("request_id")
31
+ );
32
+
33
+ -- CreateIndex
34
+ CREATE INDEX "installation_requests_fleet_id_idx" ON "installation_requests"("fleet_id");
35
+
@@ -0,0 +1,19 @@
1
+ -- CreateTable
2
+ CREATE TABLE "parties" (
3
+ "fleet_id" TEXT NOT NULL,
4
+ "name" TEXT NOT NULL,
5
+ "kind" TEXT NOT NULL,
6
+ "url" TEXT NOT NULL,
7
+ "credential" JSONB NOT NULL,
8
+ "owner_ship_id" TEXT NOT NULL,
9
+ "concurrency_limit" INTEGER NOT NULL,
10
+ "state" TEXT NOT NULL,
11
+ "proxy_ship_id" TEXT,
12
+ "secret" TEXT,
13
+ "crew_token" TEXT,
14
+ "request_id" TEXT NOT NULL,
15
+ "request_hash" TEXT NOT NULL,
16
+ "approved_at" TIMESTAMPTZ(3) NOT NULL,
17
+
18
+ CONSTRAINT "parties_pkey" PRIMARY KEY ("fleet_id","name")
19
+ );
@@ -0,0 +1,8 @@
1
+ -- CreateTable
2
+ CREATE TABLE "tool_marks" (
3
+ "fleet_id" TEXT NOT NULL,
4
+ "party" TEXT NOT NULL,
5
+ "tool" TEXT NOT NULL,
6
+
7
+ CONSTRAINT "tool_marks_pkey" PRIMARY KEY ("fleet_id","party","tool")
8
+ );
@@ -0,0 +1,13 @@
1
+ -- CreateTable
2
+ CREATE TABLE "calls" (
3
+ "delivery_id" TEXT NOT NULL,
4
+ "fleet_id" TEXT NOT NULL,
5
+ "party" TEXT NOT NULL,
6
+ "state" TEXT NOT NULL,
7
+ "reply" JSONB,
8
+
9
+ CONSTRAINT "calls_pkey" PRIMARY KEY ("delivery_id")
10
+ );
11
+
12
+ -- CreateIndex
13
+ CREATE INDEX "calls_fleet_id_idx" ON "calls"("fleet_id");
@@ -0,0 +1,60 @@
1
+ -- CreateTable
2
+ CREATE TABLE "oauth_clients" (
3
+ "client_id" TEXT NOT NULL,
4
+ "fleet_id" TEXT NOT NULL,
5
+ "name" TEXT NOT NULL,
6
+ "redirect_uris" TEXT[],
7
+ "secret_hash" TEXT,
8
+
9
+ CONSTRAINT "oauth_clients_pkey" PRIMARY KEY ("client_id")
10
+ );
11
+
12
+ -- CreateTable
13
+ CREATE TABLE "authorization_codes" (
14
+ "code_hash" TEXT NOT NULL,
15
+ "fleet_id" TEXT NOT NULL,
16
+ "client_id" TEXT NOT NULL,
17
+ "redirect_uri" TEXT NOT NULL,
18
+ "code_challenge" TEXT NOT NULL,
19
+ "resource" TEXT NOT NULL,
20
+ "scope" TEXT,
21
+ "expires_at" TIMESTAMPTZ(3) NOT NULL,
22
+ "used_at" TIMESTAMPTZ(3),
23
+
24
+ CONSTRAINT "authorization_codes_pkey" PRIMARY KEY ("code_hash")
25
+ );
26
+
27
+ -- CreateTable
28
+ CREATE TABLE "issued_tokens" (
29
+ "access_hash" TEXT NOT NULL,
30
+ "refresh_hash" TEXT NOT NULL,
31
+ "family_id" TEXT NOT NULL,
32
+ "code_hash" TEXT NOT NULL,
33
+ "fleet_id" TEXT NOT NULL,
34
+ "client_id" TEXT NOT NULL,
35
+ "resource" TEXT NOT NULL,
36
+ "scope" TEXT,
37
+ "access_expires_at" TIMESTAMPTZ(3) NOT NULL,
38
+ "refresh_expires_at" TIMESTAMPTZ(3) NOT NULL,
39
+ "state" TEXT NOT NULL,
40
+
41
+ CONSTRAINT "issued_tokens_pkey" PRIMARY KEY ("access_hash")
42
+ );
43
+
44
+ -- CreateIndex
45
+ CREATE INDEX "oauth_clients_fleet_id_idx" ON "oauth_clients"("fleet_id");
46
+
47
+ -- CreateIndex
48
+ CREATE INDEX "authorization_codes_fleet_id_idx" ON "authorization_codes"("fleet_id");
49
+
50
+ -- CreateIndex
51
+ CREATE UNIQUE INDEX "issued_tokens_refresh_hash_key" ON "issued_tokens"("refresh_hash");
52
+
53
+ -- CreateIndex
54
+ CREATE INDEX "issued_tokens_fleet_id_idx" ON "issued_tokens"("fleet_id");
55
+
56
+ -- CreateIndex
57
+ CREATE INDEX "issued_tokens_family_id_idx" ON "issued_tokens"("family_id");
58
+
59
+ -- CreateIndex
60
+ CREATE INDEX "issued_tokens_code_hash_idx" ON "issued_tokens"("code_hash");
@@ -0,0 +1,8 @@
1
+ -- AlterTable
2
+ ALTER TABLE "parties" ADD COLUMN "client_id" TEXT,
3
+ ALTER COLUMN "url" DROP NOT NULL,
4
+ ALTER COLUMN "credential" DROP NOT NULL,
5
+ ALTER COLUMN "concurrency_limit" DROP NOT NULL;
6
+
7
+ -- CreateIndex
8
+ CREATE UNIQUE INDEX "parties_fleet_id_client_id_key" ON "parties"("fleet_id", "client_id");
@@ -0,0 +1,5 @@
1
+ -- AlterTable
2
+ ALTER TABLE "authorization_codes" ADD COLUMN "party" TEXT NOT NULL;
3
+
4
+ -- AlterTable
5
+ ALTER TABLE "issued_tokens" ADD COLUMN "party" TEXT NOT NULL;
@@ -0,0 +1,15 @@
1
+ -- CreateTable
2
+ CREATE TABLE "client_calls" (
3
+ "fleet_id" TEXT NOT NULL,
4
+ "message_id" TEXT NOT NULL,
5
+ "party" TEXT NOT NULL,
6
+ "handle" TEXT NOT NULL,
7
+ "ship_id" TEXT NOT NULL,
8
+ "capability" TEXT NOT NULL,
9
+ "sent_at" TIMESTAMP(3) NOT NULL,
10
+
11
+ CONSTRAINT "client_calls_pkey" PRIMARY KEY ("fleet_id","message_id")
12
+ );
13
+
14
+ -- CreateIndex
15
+ CREATE UNIQUE INDEX "client_calls_fleet_id_handle_key" ON "client_calls"("fleet_id", "handle");
@@ -0,0 +1,20 @@
1
+ -- AlterTable
2
+ ALTER TABLE "client_calls" ADD COLUMN "output_content_type" TEXT,
3
+ ADD COLUMN "deadline_at" TIMESTAMP(3) NOT NULL;
4
+
5
+ -- CreateTable
6
+ CREATE TABLE "client_call_replies" (
7
+ "delivery_id" TEXT NOT NULL,
8
+ "fleet_id" TEXT NOT NULL,
9
+ "call_message_id" TEXT NOT NULL,
10
+ "message_id" TEXT NOT NULL,
11
+ "content_type" TEXT NOT NULL,
12
+ "payload" TEXT NOT NULL,
13
+ "received_at" TIMESTAMP(3) NOT NULL,
14
+ "sequence" SERIAL NOT NULL,
15
+
16
+ CONSTRAINT "client_call_replies_pkey" PRIMARY KEY ("delivery_id")
17
+ );
18
+
19
+ -- CreateIndex
20
+ CREATE INDEX "client_call_replies_fleet_id_call_message_id_idx" ON "client_call_replies"("fleet_id", "call_message_id");
@@ -0,0 +1,10 @@
1
+ -- CreateTable
2
+ CREATE TABLE "identity_providers" (
3
+ "fleet_id" TEXT NOT NULL,
4
+ "issuer" TEXT NOT NULL,
5
+ "client_id" TEXT NOT NULL,
6
+ "client_secret" TEXT NOT NULL,
7
+ "set_at" TIMESTAMPTZ(3) NOT NULL,
8
+
9
+ CONSTRAINT "identity_providers_pkey" PRIMARY KEY ("fleet_id")
10
+ );
@@ -0,0 +1,2 @@
1
+ -- pagasae signs people in for every fleet (decision 0054): no identity provider per fleet.
2
+ DROP TABLE "identity_providers";
@@ -0,0 +1,5 @@
1
+ -- A code and its tokens stand for a party or for a signed-in account's grant (decision 0054): exactly one of the two.
2
+ ALTER TABLE "authorization_codes" ALTER COLUMN "party" DROP NOT NULL, ADD COLUMN "grant_id" TEXT;
3
+ ALTER TABLE "authorization_codes" ADD CONSTRAINT "authorization_codes_one_holder" CHECK (("party" IS NULL) <> ("grant_id" IS NULL));
4
+ ALTER TABLE "issued_tokens" ALTER COLUMN "party" DROP NOT NULL, ADD COLUMN "grant_id" TEXT;
5
+ ALTER TABLE "issued_tokens" ADD CONSTRAINT "issued_tokens_one_holder" CHECK (("party" IS NULL) <> ("grant_id" IS NULL));
@@ -0,0 +1,15 @@
1
+ -- CreateTable
2
+ CREATE TABLE "account_grants" (
3
+ "grant_id" TEXT NOT NULL,
4
+ "fleet_id" TEXT NOT NULL,
5
+ "account_id" TEXT NOT NULL,
6
+ "person_ship_id" TEXT,
7
+ "refresh_token" TEXT NOT NULL,
8
+ "account_token" TEXT NOT NULL,
9
+ "account_token_expires_at" TIMESTAMPTZ(3) NOT NULL,
10
+
11
+ CONSTRAINT "account_grants_pkey" PRIMARY KEY ("grant_id")
12
+ );
13
+
14
+ -- CreateIndex
15
+ CREATE INDEX "account_grants_fleet_id_idx" ON "account_grants"("fleet_id");
@@ -0,0 +1,9 @@
1
+ -- CreateTable
2
+ CREATE TABLE "person_crews" (
3
+ "fleet_id" TEXT NOT NULL,
4
+ "ship_id" TEXT NOT NULL,
5
+ "crew_token" TEXT NOT NULL,
6
+ "crewed_at" TIMESTAMPTZ(3) NOT NULL,
7
+
8
+ CONSTRAINT "person_crews_pkey" PRIMARY KEY ("fleet_id","ship_id")
9
+ );
@@ -0,0 +1,13 @@
1
+ -- CreateTable
2
+ CREATE TABLE "opened_deliveries" (
3
+ "fleet_id" TEXT NOT NULL,
4
+ "ship_id" TEXT NOT NULL,
5
+ "delivery_id" TEXT NOT NULL,
6
+ "message_id" TEXT NOT NULL,
7
+ "sender_ship_id" TEXT NOT NULL,
8
+ "from" TEXT NOT NULL,
9
+ "title" TEXT NOT NULL,
10
+ "opened_at" TIMESTAMPTZ(3) NOT NULL,
11
+
12
+ CONSTRAINT "opened_deliveries_pkey" PRIMARY KEY ("fleet_id","ship_id","delivery_id")
13
+ );
@@ -0,0 +1,26 @@
1
+ -- CreateTable
2
+ CREATE TABLE "pending_requests" (
3
+ "fleet_id" TEXT NOT NULL,
4
+ "request_id" TEXT NOT NULL,
5
+ "kind" TEXT NOT NULL,
6
+ "subject_key" TEXT NOT NULL,
7
+ "client_id" TEXT,
8
+ "client_name" TEXT,
9
+ "url" TEXT,
10
+ "requesters" JSONB NOT NULL,
11
+ "asked_at" TIMESTAMPTZ(3) NOT NULL,
12
+ "expires_at" TIMESTAMPTZ(3) NOT NULL,
13
+ "state" TEXT NOT NULL,
14
+ "decided_by" JSONB,
15
+ "decided_at" TIMESTAMPTZ(3),
16
+
17
+ CONSTRAINT "pending_requests_pkey" PRIMARY KEY ("fleet_id","request_id"),
18
+ CONSTRAINT "pending_requests_kind_check" CHECK ("kind" IN ('client', 'server')),
19
+ CONSTRAINT "pending_requests_state_check" CHECK ("state" IN ('pending', 'approving', 'approved', 'denied', 'expired'))
20
+ );
21
+
22
+ -- One open request per client or server in a fleet: a second requester joins it (decision 0056).
23
+ CREATE UNIQUE INDEX "pending_requests_one_open" ON "pending_requests" ("fleet_id", "subject_key") WHERE "state" IN ('pending', 'approving');
24
+
25
+ -- The open requests of a fleet, the oldest first.
26
+ CREATE INDEX "pending_requests_fleet_asked" ON "pending_requests" ("fleet_id", "asked_at");
@@ -0,0 +1,8 @@
1
+ -- CreateTable
2
+ CREATE TABLE "outside_party_switches" (
3
+ "fleet_id" TEXT NOT NULL,
4
+ "is_on" BOOLEAN NOT NULL,
5
+ "changed_at" TIMESTAMPTZ(3) NOT NULL,
6
+
7
+ CONSTRAINT "outside_party_switches_pkey" PRIMARY KEY ("fleet_id")
8
+ );
@@ -0,0 +1,2 @@
1
+ -- AlterTable
2
+ ALTER TABLE "pending_requests" ADD COLUMN "told_account_ids" JSONB NOT NULL DEFAULT '[]';
@@ -0,0 +1,17 @@
1
+ -- CreateTable
2
+ CREATE TABLE "request_outcome_notices" (
3
+ "fleet_id" TEXT NOT NULL,
4
+ "request_id" TEXT NOT NULL,
5
+ "account_id" TEXT NOT NULL,
6
+ "person_ship_id" TEXT NOT NULL,
7
+ "url" TEXT NOT NULL,
8
+ "outcome" TEXT NOT NULL,
9
+ "party_name" TEXT,
10
+ "created_at" TIMESTAMPTZ(3) NOT NULL,
11
+ "ended_at" TIMESTAMPTZ(3),
12
+
13
+ CONSTRAINT "request_outcome_notices_pkey" PRIMARY KEY ("fleet_id","request_id","account_id")
14
+ );
15
+
16
+ -- CreateIndex
17
+ CREATE INDEX "request_outcome_notices_unended" ON "request_outcome_notices"("ended_at", "created_at");
@@ -0,0 +1,11 @@
1
+ -- CreateTable
2
+ CREATE TABLE "owner_questions" (
3
+ "fleet_id" TEXT NOT NULL,
4
+ "request_id" TEXT NOT NULL,
5
+ "question_id" TEXT NOT NULL,
6
+ "asked_ship_id" TEXT,
7
+ "asked_at" TIMESTAMPTZ(3),
8
+ "withdrawn_at" TIMESTAMPTZ(3),
9
+
10
+ CONSTRAINT "owner_questions_pkey" PRIMARY KEY ("fleet_id","request_id")
11
+ );
@@ -0,0 +1,12 @@
1
+ -- The pages' live channel: every change to a fleet's pending requests is
2
+ -- announced on commit, naming only its fleet and topic, never content.
3
+ CREATE FUNCTION "notify_request_change"() RETURNS trigger AS $$
4
+ BEGIN
5
+ PERFORM pg_notify('gateway_changes', json_build_object('fleetId', NEW."fleet_id", 'topic', 'requests')::text);
6
+ RETURN NULL;
7
+ END;
8
+ $$ LANGUAGE plpgsql;
9
+
10
+ CREATE TRIGGER "pending_requests_changed"
11
+ AFTER INSERT OR UPDATE ON "pending_requests"
12
+ FOR EACH ROW EXECUTE FUNCTION "notify_request_change"();
@@ -0,0 +1,2 @@
1
+ -- The scopes a grant's account token carries: what the account may do on the gateway's pages.
2
+ ALTER TABLE "account_grants" ADD COLUMN "scopes" TEXT[] NOT NULL DEFAULT ARRAY[]::TEXT[];
@@ -0,0 +1,2 @@
1
+ -- A party's owner is the fleet's alone (decision 0056): the gateway names it at the commission and reads it after.
2
+ ALTER TABLE "parties" DROP COLUMN "owner_ship_id";
@@ -0,0 +1,2 @@
1
+ -- A call fails at the deadline its capability states, and never by time when it states none (interop 3.4).
2
+ ALTER TABLE "client_calls" ALTER COLUMN "deadline_at" DROP NOT NULL;
@@ -0,0 +1,3 @@
1
+ # Please do not edit this file manually
2
+ # It should be added in your version-control system (e.g., Git)
3
+ provider = "postgresql"