@aeolus-fleet/gateway 0.0.0 → 0.28.1
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.
- package/README.md +11 -10
- package/dist/adapters/crypto/page-sessions.d.ts +15 -0
- package/dist/adapters/crypto/page-sessions.js +40 -0
- package/dist/adapters/crypto/page-sessions.js.map +1 -0
- package/dist/adapters/crypto/request-ids.d.ts +1 -1
- package/dist/adapters/crypto/request-ids.js +2 -9
- package/dist/adapters/crypto/request-ids.js.map +1 -1
- package/dist/adapters/crypto/sign-in-seals.d.ts +1 -1
- package/dist/adapters/crypto/sign-in-seals.js +7 -9
- package/dist/adapters/crypto/sign-in-seals.js.map +1 -1
- package/dist/adapters/fleet/actor-door.d.ts +20 -0
- package/dist/adapters/fleet/actor-door.js +75 -0
- package/dist/adapters/fleet/actor-door.js.map +1 -0
- package/dist/adapters/fleet/core-version.d.ts +8 -8
- package/dist/adapters/fleet/core-version.js +6 -47
- package/dist/adapters/fleet/core-version.js.map +1 -1
- package/dist/adapters/fleet/fleet-network.js +7 -17
- package/dist/adapters/fleet/fleet-network.js.map +1 -1
- package/dist/adapters/fleet/logged-verified-facts.d.ts +13 -0
- package/dist/adapters/fleet/logged-verified-facts.js +18 -0
- package/dist/adapters/fleet/logged-verified-facts.js.map +1 -0
- package/dist/adapters/fleet/proxy-ship-reads.d.ts +7 -0
- package/dist/adapters/fleet/proxy-ship-reads.js +24 -0
- package/dist/adapters/fleet/proxy-ship-reads.js.map +1 -0
- package/dist/adapters/fleet/proxy-ships-as-actor.d.ts +3 -0
- package/dist/adapters/fleet/proxy-ships-as-actor.js +25 -0
- package/dist/adapters/fleet/proxy-ships-as-actor.js.map +1 -0
- package/dist/adapters/fleet/rest-fleet-door.d.ts +2 -2
- package/dist/adapters/fleet/rest-fleet-door.js +23 -7
- package/dist/adapters/fleet/rest-fleet-door.js.map +1 -1
- package/dist/adapters/http/add-server-page.d.ts +7 -0
- package/dist/adapters/http/add-server-page.js +175 -0
- package/dist/adapters/http/add-server-page.js.map +1 -0
- package/dist/adapters/http/delivery-page.d.ts +24 -0
- package/dist/adapters/http/delivery-page.js +115 -0
- package/dist/adapters/http/delivery-page.js.map +1 -0
- package/dist/adapters/http/front-door.d.ts +8 -0
- package/dist/adapters/http/front-door.js +19 -0
- package/dist/adapters/http/front-door.js.map +1 -0
- package/dist/adapters/http/oauth-routes.d.ts +15 -3
- package/dist/adapters/http/oauth-routes.js +33 -1
- package/dist/adapters/http/oauth-routes.js.map +1 -1
- package/dist/adapters/http/outside-parties-page.d.ts +29 -2
- package/dist/adapters/http/outside-parties-page.js +15 -11
- package/dist/adapters/http/outside-parties-page.js.map +1 -1
- package/dist/adapters/http/outside-party-page.d.ts +7 -0
- package/dist/adapters/http/outside-party-page.js +212 -0
- package/dist/adapters/http/outside-party-page.js.map +1 -0
- package/dist/adapters/http/overview-page.d.ts +2 -1
- package/dist/adapters/http/overview-page.js +79 -36
- package/dist/adapters/http/overview-page.js.map +1 -1
- package/dist/adapters/http/parties-page.d.ts +2 -1
- package/dist/adapters/http/parties-page.js +8 -10
- package/dist/adapters/http/parties-page.js.map +1 -1
- package/dist/adapters/http/scope-rows.d.ts +10 -0
- package/dist/adapters/http/scope-rows.js +30 -0
- package/dist/adapters/http/scope-rows.js.map +1 -0
- package/dist/adapters/http/signal.d.ts +10 -1
- package/dist/adapters/http/signal.js +50 -7
- package/dist/adapters/http/signal.js.map +1 -1
- package/dist/adapters/pagasae/pagasae-client.js +7 -9
- package/dist/adapters/pagasae/pagasae-client.js.map +1 -1
- package/dist/adapters/prisma/account-grants.js +2 -2
- package/dist/adapters/prisma/account-grants.js.map +1 -1
- package/dist/adapters/prisma/client-calls.js +9 -0
- package/dist/adapters/prisma/client-calls.js.map +1 -1
- package/dist/adapters/prisma/generated/internal/class.js +4 -4
- package/dist/adapters/prisma/generated/internal/class.js.map +1 -1
- package/dist/adapters/prisma/generated/internal/prismaNamespace.d.ts +1 -1
- package/dist/adapters/prisma/generated/internal/prismaNamespace.js +1 -1
- package/dist/adapters/prisma/generated/internal/prismaNamespace.js.map +1 -1
- package/dist/adapters/prisma/generated/internal/prismaNamespaceBrowser.d.ts +1 -1
- package/dist/adapters/prisma/generated/internal/prismaNamespaceBrowser.js +1 -1
- package/dist/adapters/prisma/generated/internal/prismaNamespaceBrowser.js.map +1 -1
- package/dist/adapters/prisma/generated/models/AccountGrant.d.ts +33 -1
- package/dist/adapters/prisma/generated/models/ClientCall.d.ts +14 -14
- package/dist/adapters/prisma/generated/models/Party.d.ts +1 -29
- package/dist/adapters/prisma/oauth-stores.js +3 -0
- package/dist/adapters/prisma/oauth-stores.js.map +1 -1
- package/dist/adapters/prisma/party-store.js +0 -2
- package/dist/adapters/prisma/party-store.js.map +1 -1
- package/dist/adapters/prisma/pending-requests.js +7 -1
- package/dist/adapters/prisma/pending-requests.js.map +1 -1
- package/dist/adapters/trpc/router.d.ts +210 -12
- package/dist/adapters/trpc/router.js +159 -7
- package/dist/adapters/trpc/router.js.map +1 -1
- package/dist/app.js +67 -19
- package/dist/app.js.map +1 -1
- package/dist/core/actors/authenticate-actor.d.ts +21 -5
- package/dist/core/actors/authenticate-actor.js +14 -2
- package/dist/core/actors/authenticate-actor.js.map +1 -1
- package/dist/core/actors/credential-of.d.ts +27 -0
- package/dist/core/actors/credential-of.js +25 -0
- package/dist/core/actors/credential-of.js.map +1 -0
- package/dist/core/connection/connect.js +5 -4
- package/dist/core/connection/connect.js.map +1 -1
- package/dist/core/connection/ports.d.ts +6 -1
- package/dist/core/mcp-in/call-tool.d.ts +6 -6
- package/dist/core/mcp-in/call-tool.js +3 -3
- package/dist/core/mcp-in/call-tool.js.map +1 -1
- package/dist/core/mcp-in/client-call.d.ts +2 -2
- package/dist/core/mcp-in/client-call.js +2 -2
- package/dist/core/mcp-in/client-call.js.map +1 -1
- package/dist/core/mcp-in/collect-replies.d.ts +4 -11
- package/dist/core/mcp-in/collect-replies.js +52 -30
- package/dist/core/mcp-in/collect-replies.js.map +1 -1
- package/dist/core/mcp-in/list-tools.d.ts +4 -0
- package/dist/core/mcp-in/list-tools.js +1 -1
- package/dist/core/mcp-in/list-tools.js.map +1 -1
- package/dist/core/mcp-in/ports.d.ts +24 -1
- package/dist/core/mcp-out/hand-call.d.ts +2 -0
- package/dist/core/mcp-out/hand-call.js +4 -2
- package/dist/core/mcp-out/hand-call.js.map +1 -1
- package/dist/core/mcp-out/state-party.d.ts +2 -1
- package/dist/core/mcp-out/state-party.js +1 -1
- package/dist/core/mcp-out/state-party.js.map +1 -1
- package/dist/core/mcp-out/statement.d.ts +10 -0
- package/dist/core/mcp-out/statement.js +7 -5
- package/dist/core/mcp-out/statement.js.map +1 -1
- package/dist/core/oauth/ports.d.ts +2 -0
- package/dist/core/oauth/read-authorization.js +2 -2
- package/dist/core/oauth/read-authorization.js.map +1 -1
- package/dist/core/oauth/redirect-uri.d.ts +7 -0
- package/dist/core/oauth/redirect-uri.js +23 -0
- package/dist/core/oauth/redirect-uri.js.map +1 -1
- package/dist/core/outside-parties/ports.d.ts +1 -5
- package/dist/core/outside-parties/set-outside-parties.d.ts +5 -3
- package/dist/core/outside-parties/set-outside-parties.js +6 -2
- package/dist/core/outside-parties/set-outside-parties.js.map +1 -1
- package/dist/core/parties/approve-party.js +24 -8
- package/dist/core/parties/approve-party.js.map +1 -1
- package/dist/core/parties/change-party.d.ts +42 -0
- package/dist/core/parties/change-party.js +49 -0
- package/dist/core/parties/change-party.js.map +1 -0
- package/dist/core/parties/check-server.d.ts +24 -0
- package/dist/core/parties/check-server.js +21 -0
- package/dist/core/parties/check-server.js.map +1 -0
- package/dist/core/parties/list-parties.d.ts +28 -7
- package/dist/core/parties/list-parties.js +35 -4
- package/dist/core/parties/list-parties.js.map +1 -1
- package/dist/core/parties/party.d.ts +12 -6
- package/dist/core/parties/party.js +23 -1
- package/dist/core/parties/party.js.map +1 -1
- package/dist/core/parties/ports.d.ts +36 -1
- package/dist/core/parties/read-party-tools.d.ts +22 -0
- package/dist/core/parties/read-party-tools.js +22 -0
- package/dist/core/parties/read-party-tools.js.map +1 -0
- package/dist/core/parties/retire-party.d.ts +29 -0
- package/dist/core/parties/retire-party.js +43 -0
- package/dist/core/parties/retire-party.js.map +1 -0
- package/dist/core/parties/shown-party.d.ts +8 -2
- package/dist/core/parties/shown-party.js +3 -3
- package/dist/core/parties/shown-party.js.map +1 -1
- package/dist/core/requests/decide-request.js +9 -1
- package/dist/core/requests/decide-request.js.map +1 -1
- package/dist/core/requests/list-mine.d.ts +16 -0
- package/dist/core/requests/list-mine.js +20 -0
- package/dist/core/requests/list-mine.js.map +1 -0
- package/dist/core/requests/ports.d.ts +5 -0
- package/dist/core/shared/errors.d.ts +1 -1
- package/dist/core/shared/errors.js.map +1 -1
- package/dist/core/sign-in/account-token.d.ts +8 -4
- package/dist/core/sign-in/account-token.js +4 -4
- package/dist/core/sign-in/account-token.js.map +1 -1
- package/dist/core/sign-in/complete-sign-in.d.ts +15 -4
- package/dist/core/sign-in/complete-sign-in.js +27 -4
- package/dist/core/sign-in/complete-sign-in.js.map +1 -1
- package/dist/core/sign-in/ports.d.ts +37 -7
- package/dist/core/sign-in/sign-out.d.ts +10 -0
- package/dist/core/sign-in/sign-out.js +9 -0
- package/dist/core/sign-in/sign-out.js.map +1 -0
- package/dist/core/sign-in/start-page-sign-in.d.ts +25 -0
- package/dist/core/sign-in/start-page-sign-in.js +30 -0
- package/dist/core/sign-in/start-page-sign-in.js.map +1 -0
- package/package.json +3 -3
- package/src/adapters/prisma/migrations/20261020200000_account_grant_scopes/migration.sql +2 -0
- package/src/adapters/prisma/migrations/20261020210000_party_owner_from_fleet/migration.sql +2 -0
- package/src/adapters/prisma/migrations/20261020220000_client_call_deadline_optional/migration.sql +2 -0
- package/src/adapters/prisma/schema.prisma +3 -2
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { AccountGrants, PageSession } from './ports.js';
|
|
2
|
+
export type SignOut = (session: PageSession) => Promise<void>;
|
|
3
|
+
/**
|
|
4
|
+
* Use case: a person signs out of the gateway's pages. The session's grant
|
|
5
|
+
* ends, so a page session cookie kept after it is signed out; the account's
|
|
6
|
+
* sign-ins from its MCP clients go on.
|
|
7
|
+
*/
|
|
8
|
+
export declare function createSignOut(deps: {
|
|
9
|
+
grants: Pick<AccountGrants, 'end'>;
|
|
10
|
+
}): SignOut;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Use case: a person signs out of the gateway's pages. The session's grant
|
|
3
|
+
* ends, so a page session cookie kept after it is signed out; the account's
|
|
4
|
+
* sign-ins from its MCP clients go on.
|
|
5
|
+
*/
|
|
6
|
+
export function createSignOut(deps) {
|
|
7
|
+
return ({ fleetId, grantId }) => deps.grants.end(fleetId, grantId);
|
|
8
|
+
}
|
|
9
|
+
//# sourceMappingURL=sign-out.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sign-out.js","sourceRoot":"","sources":["../../../src/core/sign-in/sign-out.ts"],"names":[],"mappings":"AAIA;;;;GAIG;AACH,MAAM,UAAU,aAAa,CAAC,IAA4C;IACxE,OAAO,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;AACrE,CAAC"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import type { OAuthSecrets } from '../oauth/ports.js';
|
|
2
|
+
import type { Clock } from '../shared/clock.js';
|
|
3
|
+
import type { Pagasae, SignInSeals } from './ports.js';
|
|
4
|
+
/** Where a person lands once signed in, when they asked for no page of the gateway's own. */
|
|
5
|
+
export declare const FIRST_PAGE = "/overview";
|
|
6
|
+
export type StartPageSignIn = (asked: {
|
|
7
|
+
returnTo?: string | undefined;
|
|
8
|
+
}) => {
|
|
9
|
+
redirectTo: string;
|
|
10
|
+
browserSecret: string;
|
|
11
|
+
};
|
|
12
|
+
/**
|
|
13
|
+
* Use case: a person signs in to the gateway's own pages through pagasae
|
|
14
|
+
* (decision 0054), as from an MCP client: the page to go back to is sealed
|
|
15
|
+
* with the gateway's PKCE verifier into the state, and the person is sent to
|
|
16
|
+
* pagasae naming no fleet. Only a path of the gateway's own is kept, so a
|
|
17
|
+
* sign-in never sends the browser to another site. The browser is given a
|
|
18
|
+
* secret of its own, sealed too, so only it finishes the sign-in.
|
|
19
|
+
*/
|
|
20
|
+
export declare function createStartPageSignIn(deps: {
|
|
21
|
+
seals: SignInSeals;
|
|
22
|
+
pagasae: Pagasae;
|
|
23
|
+
secrets: OAuthSecrets;
|
|
24
|
+
clock: Clock;
|
|
25
|
+
}): StartPageSignIn;
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { SIGN_IN_LIFETIME_MS } from './start-sign-in.js';
|
|
2
|
+
/** Where a person lands once signed in, when they asked for no page of the gateway's own. */
|
|
3
|
+
export const FIRST_PAGE = '/overview';
|
|
4
|
+
/** Whether the path is one of the gateway's own: one slash, then no second slash or backslash a browser reads as another site. */
|
|
5
|
+
function isOwnPath(path) {
|
|
6
|
+
return path.startsWith('/') && !path.startsWith('//') && !path.startsWith('/\\');
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* Use case: a person signs in to the gateway's own pages through pagasae
|
|
10
|
+
* (decision 0054), as from an MCP client: the page to go back to is sealed
|
|
11
|
+
* with the gateway's PKCE verifier into the state, and the person is sent to
|
|
12
|
+
* pagasae naming no fleet. Only a path of the gateway's own is kept, so a
|
|
13
|
+
* sign-in never sends the browser to another site. The browser is given a
|
|
14
|
+
* secret of its own, sealed too, so only it finishes the sign-in.
|
|
15
|
+
*/
|
|
16
|
+
export function createStartPageSignIn(deps) {
|
|
17
|
+
return ({ returnTo }) => {
|
|
18
|
+
const verifier = deps.secrets.newSecret();
|
|
19
|
+
const browserSecret = deps.secrets.newSecret();
|
|
20
|
+
const state = deps.seals.seal({
|
|
21
|
+
holder: 'page',
|
|
22
|
+
returnTo: returnTo !== undefined && isOwnPath(returnTo) ? returnTo : FIRST_PAGE,
|
|
23
|
+
verifier,
|
|
24
|
+
browserSecret,
|
|
25
|
+
expiresAt: new Date(deps.clock.now().getTime() + SIGN_IN_LIFETIME_MS),
|
|
26
|
+
});
|
|
27
|
+
return { redirectTo: deps.pagasae.authorizeUrl({ state, codeChallenge: deps.secrets.challengeOf(verifier) }), browserSecret };
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=start-page-sign-in.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"start-page-sign-in.js","sourceRoot":"","sources":["../../../src/core/sign-in/start-page-sign-in.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAEzD,6FAA6F;AAC7F,MAAM,CAAC,MAAM,UAAU,GAAG,WAAW,CAAC;AAItC,kIAAkI;AAClI,SAAS,SAAS,CAAC,IAAY;IAC7B,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;AACnF,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,qBAAqB,CAAC,IAAmF;IACvH,OAAO,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE;QACtB,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC;QAC1C,MAAM,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC;QAC/C,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;YAC5B,MAAM,EAAE,MAAM;YACd,QAAQ,EAAE,QAAQ,KAAK,SAAS,IAAI,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,UAAU;YAC/E,QAAQ;YACR,aAAa;YACb,SAAS,EAAE,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,OAAO,EAAE,GAAG,mBAAmB,CAAC;SACtE,CAAC,CAAC;QACH,OAAO,EAAE,UAAU,EAAE,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,KAAK,EAAE,aAAa,EAAE,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,aAAa,EAAE,CAAC;IAChI,CAAC,CAAC;AACJ,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@aeolus-fleet/gateway",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.28.1",
|
|
4
4
|
"description": "Aeolus gateway: outside MCP servers and clients join a fleet as ships, through one gateway beside core.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"ai-agents",
|
|
@@ -40,7 +40,7 @@
|
|
|
40
40
|
"db:migrate": "tsx --env-file-if-exists=.env src/bin/aeolus-gateway.ts migrate"
|
|
41
41
|
},
|
|
42
42
|
"dependencies": {
|
|
43
|
-
"@aeolus-fleet/common": "^0.
|
|
43
|
+
"@aeolus-fleet/common": "^0.28.0",
|
|
44
44
|
"@fastify/websocket": "^11.3.4",
|
|
45
45
|
"@modelcontextprotocol/client": "^2.3.1",
|
|
46
46
|
"@modelcontextprotocol/server": "^2.3.1",
|
|
@@ -53,7 +53,7 @@
|
|
|
53
53
|
"zod": "^4.6.5"
|
|
54
54
|
},
|
|
55
55
|
"devDependencies": {
|
|
56
|
-
"@aeolus-fleet/core": "0.
|
|
56
|
+
"@aeolus-fleet/core": "^0.28.0",
|
|
57
57
|
"@eslint/js": "^10.0.1",
|
|
58
58
|
"@modelcontextprotocol/ext-tasks": "0.2.2",
|
|
59
59
|
"@testcontainers/postgresql": "^12.2.0",
|
|
@@ -80,7 +80,6 @@ model Party {
|
|
|
80
80
|
concurrencyLimit Int? @map("concurrency_limit")
|
|
81
81
|
/// An MCP client's: its OAuth client id.
|
|
82
82
|
clientId String? @map("client_id")
|
|
83
|
-
ownerShipId String @map("owner_ship_id")
|
|
84
83
|
state String
|
|
85
84
|
proxyShipId String? @map("proxy_ship_id")
|
|
86
85
|
/// Kept only from the proxy ship's commission until the gateway crews it.
|
|
@@ -182,7 +181,7 @@ model ClientCall {
|
|
|
182
181
|
capability String
|
|
183
182
|
outputContentType String? @map("output_content_type")
|
|
184
183
|
sentAt DateTime @map("sent_at")
|
|
185
|
-
deadlineAt DateTime @map("deadline_at")
|
|
184
|
+
deadlineAt DateTime? @map("deadline_at")
|
|
186
185
|
|
|
187
186
|
@@id([fleetId, messageId])
|
|
188
187
|
@@unique([fleetId, handle])
|
|
@@ -211,6 +210,8 @@ model AccountGrant {
|
|
|
211
210
|
fleetId String @map("fleet_id")
|
|
212
211
|
accountId String @map("account_id")
|
|
213
212
|
personShipId String? @map("person_ship_id")
|
|
213
|
+
/// The scopes its account token carries.
|
|
214
|
+
scopes String[] @default([])
|
|
214
215
|
/// pagasae's refresh token, kept as crew tokens are.
|
|
215
216
|
refreshToken String @map("refresh_token")
|
|
216
217
|
accountToken String @map("account_token")
|