@adonis-agora/agent 0.94.0 → 0.95.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.
- package/CHANGELOG.md +10 -0
- package/dist/assets/spa/assets/{index-DUq09Q_k.js → index-DBu17cDY.js} +1 -1
- package/dist/assets/spa/index.html +1 -1
- package/dist/providers/poppy_connections_provider.d.ts +1 -1
- package/dist/providers/poppy_connections_provider.js +1 -1
- package/dist/providers/poppy_provider.d.ts +1 -1
- package/dist/providers/poppy_provider.d.ts.map +1 -1
- package/dist/providers/poppy_provider.js +6 -6
- package/dist/providers/poppy_provider.js.map +1 -1
- package/dist/src/index.d.ts +1 -1
- package/dist/src/index.js +1 -1
- package/dist/src/mcp/auth.d.ts +3 -3
- package/dist/src/mcp/auth.d.ts.map +1 -1
- package/dist/src/mcp/auth.js +2 -29
- package/dist/src/mcp/auth.js.map +1 -1
- package/dist/src/mcp/discovery.d.ts +3 -3
- package/dist/src/mcp/discovery.d.ts.map +1 -1
- package/dist/src/mcp/discovery.js +2 -2
- package/dist/src/poppy/auth.d.ts +20 -16
- package/dist/src/poppy/auth.d.ts.map +1 -1
- package/dist/src/poppy/auth.js.map +1 -1
- package/dist/src/poppy/conversations.d.ts +25 -25
- package/dist/src/poppy/conversations.d.ts.map +1 -1
- package/dist/src/poppy/conversations.js +37 -37
- package/dist/src/poppy/conversations.js.map +1 -1
- package/dist/src/poppy/define_config.d.ts +7 -7
- package/dist/src/poppy/define_config.d.ts.map +1 -1
- package/dist/src/poppy/define_config.js +1 -1
- package/dist/src/poppy/endpoints.d.ts +2 -2
- package/dist/src/poppy/endpoints.js +1 -1
- package/dist/src/poppy/handler.d.ts +5 -5
- package/dist/src/poppy/handler.d.ts.map +1 -1
- package/dist/src/poppy/handler.js +23 -21
- package/dist/src/poppy/handler.js.map +1 -1
- package/dist/src/poppy/index.d.ts +2 -2
- package/dist/src/poppy/index.d.ts.map +1 -1
- package/dist/src/poppy/index.js +1 -1
- package/dist/src/poppy/index.js.map +1 -1
- package/dist/src/poppy/protocol.d.ts +30 -23
- package/dist/src/poppy/protocol.d.ts.map +1 -1
- package/dist/src/poppy/protocol.js +16 -17
- package/dist/src/poppy/protocol.js.map +1 -1
- package/dist/src/poppy/redis-store.d.ts +1 -1
- package/dist/src/poppy/redis-store.js +1 -1
- package/dist/src/poppy/store.d.ts +7 -7
- package/dist/src/poppy/store.js +1 -1
- package/dist/src/poppy-client/api.d.ts +5 -4
- package/dist/src/poppy-client/api.d.ts.map +1 -1
- package/dist/src/poppy-client/api.js +14 -9
- package/dist/src/poppy-client/api.js.map +1 -1
- package/dist/src/poppy-client/browser.d.ts +12 -18
- package/dist/src/poppy-client/browser.d.ts.map +1 -1
- package/dist/src/poppy-client/browser.js +33 -73
- package/dist/src/poppy-client/browser.js.map +1 -1
- package/dist/src/poppy-client/cli/main.d.ts.map +1 -1
- package/dist/src/poppy-client/cli/main.js +48 -56
- package/dist/src/poppy-client/cli/main.js.map +1 -1
- package/dist/src/poppy-client/company.d.ts +43 -28
- package/dist/src/poppy-client/company.d.ts.map +1 -1
- package/dist/src/poppy-client/company.js +216 -160
- package/dist/src/poppy-client/company.js.map +1 -1
- package/dist/src/poppy-client/conversations.d.ts +12 -13
- package/dist/src/poppy-client/conversations.d.ts.map +1 -1
- package/dist/src/poppy-client/conversations.js +24 -22
- package/dist/src/poppy-client/conversations.js.map +1 -1
- package/dist/src/poppy-client/discovery.d.ts +32 -10
- package/dist/src/poppy-client/discovery.d.ts.map +1 -1
- package/dist/src/poppy-client/discovery.js +134 -68
- package/dist/src/poppy-client/discovery.js.map +1 -1
- package/dist/src/poppy-client/dpop.d.ts +2 -1
- package/dist/src/poppy-client/dpop.d.ts.map +1 -1
- package/dist/src/poppy-client/dpop.js +2 -1
- package/dist/src/poppy-client/dpop.js.map +1 -1
- package/dist/src/poppy-client/errors.d.ts +5 -4
- package/dist/src/poppy-client/errors.d.ts.map +1 -1
- package/dist/src/poppy-client/errors.js +5 -4
- package/dist/src/poppy-client/errors.js.map +1 -1
- package/dist/src/poppy-client/http.d.ts +4 -2
- package/dist/src/poppy-client/http.d.ts.map +1 -1
- package/dist/src/poppy-client/http.js +9 -5
- package/dist/src/poppy-client/http.js.map +1 -1
- package/dist/src/poppy-client/identity.d.ts +15 -15
- package/dist/src/poppy-client/identity.d.ts.map +1 -1
- package/dist/src/poppy-client/identity.js +17 -33
- package/dist/src/poppy-client/identity.js.map +1 -1
- package/dist/src/poppy-client/index.d.ts +6 -3
- package/dist/src/poppy-client/index.d.ts.map +1 -1
- package/dist/src/poppy-client/index.js +6 -3
- package/dist/src/poppy-client/index.js.map +1 -1
- package/dist/src/poppy-client/llm.js +4 -4
- package/dist/src/poppy-client/llm.js.map +1 -1
- package/dist/src/poppy-client/mcp.d.ts +3 -4
- package/dist/src/poppy-client/mcp.d.ts.map +1 -1
- package/dist/src/poppy-client/mcp.js +26 -38
- package/dist/src/poppy-client/mcp.js.map +1 -1
- package/dist/src/poppy-client/safe_fetch.d.ts +30 -0
- package/dist/src/poppy-client/safe_fetch.d.ts.map +1 -0
- package/dist/src/poppy-client/safe_fetch.js +210 -0
- package/dist/src/poppy-client/safe_fetch.js.map +1 -0
- package/dist/src/poppy-client/session_jwt.d.ts +20 -0
- package/dist/src/poppy-client/session_jwt.d.ts.map +1 -0
- package/dist/src/poppy-client/session_jwt.js +37 -0
- package/dist/src/poppy-client/session_jwt.js.map +1 -0
- package/dist/src/poppy-client/signin.d.ts +34 -11
- package/dist/src/poppy-client/signin.d.ts.map +1 -1
- package/dist/src/poppy-client/signin.js +134 -80
- package/dist/src/poppy-client/signin.js.map +1 -1
- package/dist/src/poppy-client/store.d.ts +23 -11
- package/dist/src/poppy-client/store.d.ts.map +1 -1
- package/dist/src/poppy-client/store.js +1 -1
- package/dist/src/poppy-client/store.js.map +1 -1
- package/dist/src/poppy-client/task_coverage.d.ts +13 -0
- package/dist/src/poppy-client/task_coverage.d.ts.map +1 -0
- package/dist/src/poppy-client/task_coverage.js +66 -0
- package/dist/src/poppy-client/task_coverage.js.map +1 -0
- package/dist/src/poppy-client/token_client.d.ts +36 -33
- package/dist/src/poppy-client/token_client.d.ts.map +1 -1
- package/dist/src/poppy-client/token_client.js +47 -47
- package/dist/src/poppy-client/token_client.js.map +1 -1
- package/dist/src/poppy-client/types.d.ts +81 -42
- package/dist/src/poppy-client/types.d.ts.map +1 -1
- package/dist/src/poppy-client/types.js +1 -1
- package/dist/src/poppy-client/util.d.ts +12 -3
- package/dist/src/poppy-client/util.d.ts.map +1 -1
- package/dist/src/poppy-client/util.js +29 -9
- package/dist/src/poppy-client/util.js.map +1 -1
- package/dist/src/poppy-connections/config.d.ts +2 -2
- package/dist/src/poppy-connections/config.js +1 -1
- package/dist/src/poppy-connections/config.js.map +1 -1
- package/dist/src/poppy-connections/crypto.d.ts +2 -2
- package/dist/src/poppy-connections/crypto.js +2 -2
- package/dist/src/poppy-connections/index.d.ts +1 -1
- package/dist/src/poppy-connections/index.js +1 -1
- package/dist/src/poppy-connections/service.d.ts +11 -10
- package/dist/src/poppy-connections/service.d.ts.map +1 -1
- package/dist/src/poppy-connections/service.js +33 -21
- package/dist/src/poppy-connections/service.js.map +1 -1
- package/dist/src/poppy-connections/store.d.ts +2 -2
- package/dist/src/poppy-connections/tools.d.ts.map +1 -1
- package/dist/src/poppy-connections/tools.js +5 -4
- package/dist/src/poppy-connections/tools.js.map +1 -1
- package/package.json +6 -6
- package/skills/agent-governance/SKILL.md +3 -3
- package/skills/agent-tools/SKILL.md +3 -3
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"safe_fetch.js","sourceRoot":"","sources":["../../../src/poppy-client/safe_fetch.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { type StoredKey } from './keys.js';
|
|
2
|
+
export declare const SESSION_JWT_TYP = "poppy-session+jwt";
|
|
3
|
+
/**
|
|
4
|
+
* The `Poppy-Session` JWT for one request (5.2), signed with the delegated key and carrying its
|
|
5
|
+
* delegation in `pap_dlg`. `kid` is the delegated key's thumbprint, which `StoredKey.kid` holds.
|
|
6
|
+
*/
|
|
7
|
+
export declare function signSessionJwt(input: {
|
|
8
|
+
key: StoredKey;
|
|
9
|
+
delegation: string;
|
|
10
|
+
clientId: string;
|
|
11
|
+
/** The Company's identifier (3.2). */
|
|
12
|
+
audience: string;
|
|
13
|
+
sid: string;
|
|
14
|
+
userId: string;
|
|
15
|
+
agentId?: string | undefined;
|
|
16
|
+
method: string;
|
|
17
|
+
url: string | URL;
|
|
18
|
+
accessToken?: string | undefined;
|
|
19
|
+
}): Promise<string>;
|
|
20
|
+
//# sourceMappingURL=session_jwt.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session_jwt.d.ts","sourceRoot":"","sources":["../../../src/poppy-client/session_jwt.ts"],"names":[],"mappings":"AAEA,OAAO,EAAoB,KAAK,SAAS,EAAE,MAAM,WAAW,CAAC;AAG7D,eAAO,MAAM,eAAe,sBAAsB,CAAC;AAEnD;;;GAGG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE;IACpC,GAAG,EAAE,SAAS,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,sCAAsC;IACtC,QAAQ,EAAE,MAAM,CAAC;IACjB,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAClC,GAAG,OAAO,CAAC,MAAM,CAAC,CAElB"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { SignJWT } from 'jose';
|
|
2
|
+
import { htuOf } from './dpop.js';
|
|
3
|
+
import { importSigningKey } from './keys.js';
|
|
4
|
+
import { nowSeconds, randomId, sha256b64url } from './util.js';
|
|
5
|
+
export const SESSION_JWT_TYP = 'poppy-session+jwt';
|
|
6
|
+
/**
|
|
7
|
+
* The `Poppy-Session` JWT for one request (5.2), signed with the delegated key and carrying its
|
|
8
|
+
* delegation in `pap_dlg`. `kid` is the delegated key's thumbprint, which `StoredKey.kid` holds.
|
|
9
|
+
*/
|
|
10
|
+
export function signSessionJwt(input) {
|
|
11
|
+
return signWith(input);
|
|
12
|
+
}
|
|
13
|
+
async function signWith(input) {
|
|
14
|
+
const claims = {
|
|
15
|
+
iss: input.clientId,
|
|
16
|
+
aud: input.audience,
|
|
17
|
+
sid: input.sid,
|
|
18
|
+
sub: input.userId,
|
|
19
|
+
htm: input.method.toUpperCase(),
|
|
20
|
+
htu: htuOf(input.url),
|
|
21
|
+
iat: nowSeconds(),
|
|
22
|
+
jti: randomId(),
|
|
23
|
+
};
|
|
24
|
+
if (input.agentId)
|
|
25
|
+
claims.agent_id = input.agentId;
|
|
26
|
+
if (input.accessToken)
|
|
27
|
+
claims.ath = sha256b64url(input.accessToken);
|
|
28
|
+
return new SignJWT(claims)
|
|
29
|
+
.setProtectedHeader({
|
|
30
|
+
typ: SESSION_JWT_TYP,
|
|
31
|
+
alg: 'ES256',
|
|
32
|
+
kid: input.key.kid,
|
|
33
|
+
pap_dlg: input.delegation,
|
|
34
|
+
})
|
|
35
|
+
.sign(await importSigningKey(input.key));
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=session_jwt.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session_jwt.js","sourceRoot":"","sources":["../../../src/poppy-client/session_jwt.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAC/B,OAAO,EAAE,KAAK,EAAE,MAAM,WAAW,CAAC;AAClC,OAAO,EAAE,gBAAgB,EAAkB,MAAM,WAAW,CAAC;AAC7D,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAE/D,MAAM,CAAC,MAAM,eAAe,GAAG,mBAAmB,CAAC;AAEnD;;;GAGG;AACH,MAAM,UAAU,cAAc,CAAC,KAY9B;IACC,OAAO,QAAQ,CAAC,KAAK,CAAC,CAAC;AACzB,CAAC;AAED,KAAK,UAAU,QAAQ,CAAC,KAA2C;IACjE,MAAM,MAAM,GAA4B;QACtC,GAAG,EAAE,KAAK,CAAC,QAAQ;QACnB,GAAG,EAAE,KAAK,CAAC,QAAQ;QACnB,GAAG,EAAE,KAAK,CAAC,GAAG;QACd,GAAG,EAAE,KAAK,CAAC,MAAM;QACjB,GAAG,EAAE,KAAK,CAAC,MAAM,CAAC,WAAW,EAAE;QAC/B,GAAG,EAAE,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC;QACrB,GAAG,EAAE,UAAU,EAAE;QACjB,GAAG,EAAE,QAAQ,EAAE;KAChB,CAAC;IACF,IAAI,KAAK,CAAC,OAAO;QAAE,MAAM,CAAC,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC;IACnD,IAAI,KAAK,CAAC,WAAW;QAAE,MAAM,CAAC,GAAG,GAAG,YAAY,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;IACpE,OAAO,IAAI,OAAO,CAAC,MAAM,CAAC;SACvB,kBAAkB,CAAC;QAClB,GAAG,EAAE,eAAe;QACpB,GAAG,EAAE,OAAO;QACZ,GAAG,EAAE,KAAK,CAAC,GAAG,CAAC,GAAG;QAClB,OAAO,EAAE,KAAK,CAAC,UAAU;KAC1B,CAAC;SACD,IAAI,CAAC,MAAM,gBAAgB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;AAC7C,CAAC"}
|
|
@@ -1,6 +1,15 @@
|
|
|
1
1
|
import type { CompanyClient, SignInResult } from './company.js';
|
|
2
|
+
import type { MediatedExtension } from './types.js';
|
|
2
3
|
export type SignInType = 'direct' | 'device' | 'mediated';
|
|
3
|
-
|
|
4
|
+
export declare const MEDIATED_EXTENSION = "mediated-sign-in";
|
|
5
|
+
/** The `mediated-sign-in` extension, when both `poppy.json` and the issuer offer it. */
|
|
6
|
+
export declare function mediatedExtension(company: CompanyClient): MediatedExtension | undefined;
|
|
7
|
+
/** The sign-in types the Company offers (4): the issuer's grants, plus the extension. */
|
|
8
|
+
export declare function offeredSignInTypes(company: CompanyClient): SignInType[];
|
|
9
|
+
/**
|
|
10
|
+
* The sign-in types that can be used for `scope`. Direct and Device grant what the issuer's policies
|
|
11
|
+
* allow; only Mediated keeps its own list. They come in the order to prefer them (extension, 6).
|
|
12
|
+
*/
|
|
4
13
|
export declare function eligibleSignInTypes(company: CompanyClient, scope: string): SignInType[];
|
|
5
14
|
export interface PendingDirectSignIn {
|
|
6
15
|
url: string;
|
|
@@ -10,16 +19,21 @@ export interface PendingDirectSignIn {
|
|
|
10
19
|
scope: string;
|
|
11
20
|
issuer: string;
|
|
12
21
|
}
|
|
13
|
-
/**
|
|
22
|
+
/** Direct Sign-In (4.2): PKCE (S256) + random `state`, and the authorization URL to open. */
|
|
14
23
|
export declare function startDirectSignIn(company: CompanyClient, scope: string): Promise<PendingDirectSignIn>;
|
|
15
24
|
/**
|
|
16
|
-
*
|
|
17
|
-
* started with), then exchanges the code with PKCE
|
|
25
|
+
* The redirect back (4.2): checks `state` and the RFC 9207 `iss` (exact match with the issuer we
|
|
26
|
+
* started with), then exchanges the code with PKCE.
|
|
18
27
|
*/
|
|
19
28
|
export declare function completeDirectSignIn(company: CompanyClient, pending: PendingDirectSignIn, callback: URLSearchParams): Promise<SignInResult>;
|
|
20
29
|
export interface DeviceSignInOptions {
|
|
21
30
|
/** Shows the link and code to the User. `device_code` is never passed here. */
|
|
31
|
+
/** MUST show the Company's name and domain with the link (4.3). */
|
|
22
32
|
display: (info: {
|
|
33
|
+
organization: {
|
|
34
|
+
name: string;
|
|
35
|
+
domain: string;
|
|
36
|
+
};
|
|
23
37
|
userCode: string;
|
|
24
38
|
verificationUri: string;
|
|
25
39
|
verificationUriComplete?: string | undefined;
|
|
@@ -30,10 +44,15 @@ export interface DeviceSignInOptions {
|
|
|
30
44
|
sleep?: ((ms: number, signal?: AbortSignal) => Promise<void>) | undefined;
|
|
31
45
|
onPoll?: ((status: 'authorization_pending' | 'slow_down', intervalSeconds: number) => void) | undefined;
|
|
32
46
|
}
|
|
47
|
+
/**
|
|
48
|
+
* Before showing a device link (4.3): its host is the issuer's or one in `protected_resources`, or
|
|
49
|
+
* a subdomain of either. Otherwise a Company could pass off another's sign-in page as its own.
|
|
50
|
+
*/
|
|
51
|
+
export declare function assertDeviceLinkHost(company: CompanyClient, link: string): void;
|
|
33
52
|
/** RFC 8628 device flow: start, show the code, poll every `interval`, +5s on `slow_down`. */
|
|
34
53
|
export declare function deviceSignIn(company: CompanyClient, scope: string, opts: DeviceSignInOptions): Promise<SignInResult>;
|
|
35
54
|
/**
|
|
36
|
-
* One device-code exchange (4.
|
|
55
|
+
* One device-code exchange (4.3), for a server that cannot hold a polling loop open (the user
|
|
37
56
|
* comes back and says "approved"): `'pending'` while the User has not decided, the sign-in when
|
|
38
57
|
* they approved. `access_denied` / `expired_token` throw.
|
|
39
58
|
*/
|
|
@@ -45,15 +64,19 @@ export type MediatedOutcome = {
|
|
|
45
64
|
status: 'code_required';
|
|
46
65
|
signInId: string;
|
|
47
66
|
sentTo?: string | undefined;
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
67
|
+
/** Seconds until the sign-in expires. */
|
|
68
|
+
expiresIn?: number | undefined;
|
|
69
|
+
}
|
|
70
|
+
/** `invalid_grant`, `expired_token`, `access_denied`. */
|
|
71
|
+
| {
|
|
72
|
+
status: 'failed' | 'expired' | 'denied';
|
|
51
73
|
};
|
|
52
74
|
/**
|
|
53
|
-
* Mediated Sign-In (
|
|
54
|
-
*
|
|
75
|
+
* Mediated Sign-In (extension). Credentials go ONLY to the issuer's token endpoint, with this
|
|
76
|
+
* grant. Secret values are never logged or echoed by this module. Transitional: prefer Direct or
|
|
77
|
+
* Device when they cover the task.
|
|
55
78
|
*/
|
|
56
79
|
export declare function mediatedSignIn(company: CompanyClient, scope: string, credentials: Record<string, string>): Promise<MediatedOutcome>;
|
|
57
|
-
/**
|
|
80
|
+
/** Sends the one-time code; the sign-in keeps the scopes of the first request (section 4). */
|
|
58
81
|
export declare function submitMediatedCode(company: CompanyClient, scope: string, signInId: string, code: string): Promise<MediatedOutcome>;
|
|
59
82
|
//# sourceMappingURL=signin.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"signin.d.ts","sourceRoot":"","sources":["../../../src/poppy-client/signin.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"signin.d.ts","sourceRoot":"","sources":["../../../src/poppy-client/signin.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,36 +1,61 @@
|
|
|
1
1
|
import { randomBytes } from 'node:crypto';
|
|
2
2
|
import { OAuthError, PoppyError } from './errors.js';
|
|
3
|
-
import {
|
|
3
|
+
import { GRANT_DEVICE_CODE, GRANT_MEDIATED_SIGN_IN } from './token_client.js';
|
|
4
4
|
import { requireSecureUrl, scopeSet, sha256b64url, sleep } from './util.js';
|
|
5
|
-
|
|
5
|
+
export const MEDIATED_EXTENSION = 'mediated-sign-in';
|
|
6
|
+
/** The `mediated-sign-in` extension, when both `poppy.json` and the issuer offer it. */
|
|
7
|
+
export function mediatedExtension(company) {
|
|
8
|
+
const entry = company.document.extensions?.[MEDIATED_EXTENSION];
|
|
9
|
+
if (entry?.version !== '1' || !company.discovered.metadata)
|
|
10
|
+
return undefined;
|
|
11
|
+
if (!company.metadata.grant_types_supported.includes(GRANT_MEDIATED_SIGN_IN))
|
|
12
|
+
return undefined;
|
|
13
|
+
if (!Array.isArray(entry.fields) || !Array.isArray(entry.scopes))
|
|
14
|
+
return undefined;
|
|
15
|
+
return entry;
|
|
16
|
+
}
|
|
17
|
+
/** The sign-in types the Company offers (4): the issuer's grants, plus the extension. */
|
|
18
|
+
export function offeredSignInTypes(company) {
|
|
19
|
+
const grants = company.discovered.metadata?.grant_types_supported ?? [];
|
|
20
|
+
const out = [];
|
|
21
|
+
if (grants.includes('authorization_code'))
|
|
22
|
+
out.push('direct');
|
|
23
|
+
if (grants.includes(GRANT_DEVICE_CODE))
|
|
24
|
+
out.push('device');
|
|
25
|
+
if (mediatedExtension(company))
|
|
26
|
+
out.push('mediated');
|
|
27
|
+
return out;
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* The sign-in types that can be used for `scope`. Direct and Device grant what the issuer's policies
|
|
31
|
+
* allow; only Mediated keeps its own list. They come in the order to prefer them (extension, 6).
|
|
32
|
+
*/
|
|
6
33
|
export function eligibleSignInTypes(company, scope) {
|
|
7
|
-
const auth = company.document.auth;
|
|
8
34
|
const wanted = [...scopeSet(scope)];
|
|
9
|
-
return
|
|
10
|
-
|
|
11
|
-
return cfg && wanted.every((s) => cfg.scopes.includes(s));
|
|
12
|
-
});
|
|
35
|
+
return offeredSignInTypes(company).filter((t) => t !== 'mediated' ||
|
|
36
|
+
wanted.every((s) => (mediatedExtension(company)?.scopes ?? []).includes(s)));
|
|
13
37
|
}
|
|
14
38
|
function assertScopeAllowed(company, type, scope) {
|
|
15
|
-
|
|
16
|
-
if (!cfg)
|
|
39
|
+
if (!offeredSignInTypes(company).includes(type)) {
|
|
17
40
|
throw new PoppyError('unsupported_sign_in', `${type} sign-in is not offered`);
|
|
41
|
+
}
|
|
18
42
|
if (scopeSet(scope).size === 0) {
|
|
19
|
-
throw new PoppyError('invalid_scope', 'sign-in requests MUST include scope (4.
|
|
43
|
+
throw new PoppyError('invalid_scope', 'sign-in requests MUST include scope (4.7)');
|
|
20
44
|
}
|
|
21
|
-
|
|
45
|
+
if (type !== 'mediated')
|
|
46
|
+
return;
|
|
47
|
+
const offered = mediatedExtension(company)?.scopes ?? [];
|
|
48
|
+
const extra = [...scopeSet(scope)].filter((s) => !offered.includes(s));
|
|
22
49
|
if (extra.length > 0) {
|
|
23
|
-
throw new PoppyError('invalid_scope',
|
|
50
|
+
throw new PoppyError('invalid_scope', `mediated sign-in can't grant ${extra.join(', ')} (offers: ${offered.join(' ')})`);
|
|
24
51
|
}
|
|
25
52
|
}
|
|
26
|
-
/**
|
|
53
|
+
/** Direct Sign-In (4.2): PKCE (S256) + random `state`, and the authorization URL to open. */
|
|
27
54
|
export async function startDirectSignIn(company, scope) {
|
|
28
55
|
assertScopeAllowed(company, 'direct', scope);
|
|
29
56
|
const endpoint = company.metadata.authorization_endpoint;
|
|
30
57
|
if (!endpoint)
|
|
31
58
|
throw new PoppyError('unsupported_sign_in', 'no authorization_endpoint');
|
|
32
|
-
// Make sure there is a Session for the code exchange to sign in.
|
|
33
|
-
await company.token();
|
|
34
59
|
const state = randomBytes(16).toString('base64url');
|
|
35
60
|
const codeVerifier = randomBytes(32).toString('base64url');
|
|
36
61
|
const redirectUri = company.agent.identity.redirectUri;
|
|
@@ -42,11 +67,18 @@ export async function startDirectSignIn(company, scope) {
|
|
|
42
67
|
url.searchParams.set('state', state);
|
|
43
68
|
url.searchParams.set('code_challenge', sha256b64url(codeVerifier));
|
|
44
69
|
url.searchParams.set('code_challenge_method', 'S256');
|
|
45
|
-
return {
|
|
70
|
+
return {
|
|
71
|
+
url: url.toString(),
|
|
72
|
+
state,
|
|
73
|
+
codeVerifier,
|
|
74
|
+
redirectUri,
|
|
75
|
+
scope,
|
|
76
|
+
issuer: company.metadata.issuer,
|
|
77
|
+
};
|
|
46
78
|
}
|
|
47
79
|
/**
|
|
48
|
-
*
|
|
49
|
-
* started with), then exchanges the code with PKCE
|
|
80
|
+
* The redirect back (4.2): checks `state` and the RFC 9207 `iss` (exact match with the issuer we
|
|
81
|
+
* started with), then exchanges the code with PKCE.
|
|
50
82
|
*/
|
|
51
83
|
export async function completeDirectSignIn(company, pending, callback) {
|
|
52
84
|
if (callback.get('state') !== pending.state) {
|
|
@@ -63,37 +95,46 @@ export async function completeDirectSignIn(company, pending, callback) {
|
|
|
63
95
|
const code = callback.get('code');
|
|
64
96
|
if (!code)
|
|
65
97
|
throw new PoppyError('invalid_callback', 'callback has neither code nor error');
|
|
66
|
-
const resp = await
|
|
98
|
+
const resp = await company.tokens.authorizationCode({
|
|
67
99
|
code,
|
|
68
100
|
redirectUri: pending.redirectUri,
|
|
69
101
|
codeVerifier: pending.codeVerifier,
|
|
70
|
-
|
|
71
|
-
dpop: company.
|
|
72
|
-
})
|
|
102
|
+
scope: pending.scope,
|
|
103
|
+
dpop: company.tokenDpop(),
|
|
104
|
+
});
|
|
73
105
|
return company.applySignIn(resp, 'direct', pending.scope);
|
|
74
106
|
}
|
|
75
107
|
/**
|
|
76
|
-
*
|
|
77
|
-
*
|
|
78
|
-
* new Session and the exchange is retried once with it (the code is not consumed by the refusal).
|
|
108
|
+
* Before showing a device link (4.3): its host is the issuer's or one in `protected_resources`, or
|
|
109
|
+
* a subdomain of either. Otherwise a Company could pass off another's sign-in page as its own.
|
|
79
110
|
*/
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
111
|
+
export function assertDeviceLinkHost(company, link) {
|
|
112
|
+
requireSecureUrl(link, 'verification_uri', company.security);
|
|
113
|
+
const host = new URL(link).hostname.toLowerCase();
|
|
114
|
+
const allowed = [company.metadata.issuer, ...company.metadata.protected_resources].flatMap((u) => {
|
|
115
|
+
try {
|
|
116
|
+
return [new URL(u).hostname.toLowerCase()];
|
|
117
|
+
}
|
|
118
|
+
catch {
|
|
119
|
+
return [];
|
|
120
|
+
}
|
|
121
|
+
});
|
|
122
|
+
if (!allowed.some((h) => host === h || host.endsWith(`.${h}`))) {
|
|
123
|
+
throw new PoppyError('foreign_verification_uri', `${host} isn't this Company's sign-in host`);
|
|
90
124
|
}
|
|
91
125
|
}
|
|
92
126
|
/** RFC 8628 device flow: start, show the code, poll every `interval`, +5s on `slow_down`. */
|
|
93
127
|
export async function deviceSignIn(company, scope, opts) {
|
|
94
128
|
assertScopeAllowed(company, 'device', scope);
|
|
95
129
|
const d = await company.tokens.deviceAuthorization(scope);
|
|
130
|
+
assertDeviceLinkHost(company, d.verification_uri);
|
|
131
|
+
if (d.verification_uri_complete)
|
|
132
|
+
assertDeviceLinkHost(company, d.verification_uri_complete);
|
|
96
133
|
opts.display({
|
|
134
|
+
organization: {
|
|
135
|
+
name: company.document.organization.name,
|
|
136
|
+
domain: company.document.organization.domain,
|
|
137
|
+
},
|
|
97
138
|
userCode: d.user_code,
|
|
98
139
|
verificationUri: d.verification_uri,
|
|
99
140
|
verificationUriComplete: d.verification_uri_complete,
|
|
@@ -107,11 +148,11 @@ export async function deviceSignIn(company, scope, opts) {
|
|
|
107
148
|
if (Date.now() > deadline)
|
|
108
149
|
throw new OAuthError('expired_token');
|
|
109
150
|
try {
|
|
110
|
-
const resp = await
|
|
151
|
+
const resp = await company.tokens.deviceToken({
|
|
111
152
|
deviceCode: d.device_code,
|
|
112
|
-
|
|
113
|
-
dpop: company.
|
|
114
|
-
})
|
|
153
|
+
scope,
|
|
154
|
+
dpop: company.tokenDpop(),
|
|
155
|
+
});
|
|
115
156
|
return await company.applySignIn(resp, 'device', scope);
|
|
116
157
|
}
|
|
117
158
|
catch (e) {
|
|
@@ -131,13 +172,17 @@ export async function deviceSignIn(company, scope, opts) {
|
|
|
131
172
|
}
|
|
132
173
|
}
|
|
133
174
|
/**
|
|
134
|
-
* One device-code exchange (4.
|
|
175
|
+
* One device-code exchange (4.3), for a server that cannot hold a polling loop open (the user
|
|
135
176
|
* comes back and says "approved"): `'pending'` while the User has not decided, the sign-in when
|
|
136
177
|
* they approved. `access_denied` / `expired_token` throw.
|
|
137
178
|
*/
|
|
138
179
|
export async function pollDeviceSignInOnce(company, deviceCode, scope) {
|
|
139
180
|
try {
|
|
140
|
-
const resp = await
|
|
181
|
+
const resp = await company.tokens.deviceToken({
|
|
182
|
+
deviceCode,
|
|
183
|
+
scope,
|
|
184
|
+
dpop: company.tokenDpop(),
|
|
185
|
+
});
|
|
141
186
|
return await company.applySignIn(resp, 'device', scope);
|
|
142
187
|
}
|
|
143
188
|
catch (e) {
|
|
@@ -147,52 +192,41 @@ export async function pollDeviceSignInOnce(company, deviceCode, scope) {
|
|
|
147
192
|
throw e;
|
|
148
193
|
}
|
|
149
194
|
}
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
throw new PoppyError(json?.error ?? `http_${res.status}`, undefined, {
|
|
159
|
-
status: res.status,
|
|
160
|
-
description: 'mediated sign-in failed',
|
|
161
|
-
});
|
|
162
|
-
}
|
|
163
|
-
switch (json.status) {
|
|
164
|
-
case 'complete': {
|
|
165
|
-
const resp = json;
|
|
166
|
-
if (String(resp.token_type).toLowerCase() !== 'dpop') {
|
|
167
|
-
throw new OAuthError('invalid_response', { description: 'expected a DPoP Session Token' });
|
|
168
|
-
}
|
|
169
|
-
return { status: 'complete', result: await company.applySignIn(resp, 'mediated', scope) };
|
|
170
|
-
}
|
|
171
|
-
case 'code_required':
|
|
172
|
-
if (!json.sign_in_id || !/^[A-Za-z0-9_-]{1,256}$/.test(json.sign_in_id)) {
|
|
195
|
+
/** Maps the extension's OAuth errors (section 5). Anything else, like `invalid_scope`, throws. */
|
|
196
|
+
function mediatedFailure(e) {
|
|
197
|
+
if (!(e instanceof OAuthError))
|
|
198
|
+
throw e;
|
|
199
|
+
switch (e.code) {
|
|
200
|
+
case 'code_required': {
|
|
201
|
+
const signInId = e.details?.sign_in_id;
|
|
202
|
+
if (typeof signInId !== 'string' || !/^[A-Za-z0-9_-]{1,256}$/.test(signInId)) {
|
|
173
203
|
throw new PoppyError('invalid_response', 'code_required without a valid sign_in_id');
|
|
174
204
|
}
|
|
175
205
|
return {
|
|
176
206
|
status: 'code_required',
|
|
177
|
-
signInId
|
|
178
|
-
sentTo:
|
|
179
|
-
|
|
207
|
+
signInId,
|
|
208
|
+
...(typeof e.details?.sent_to === 'string' ? { sentTo: e.details.sent_to } : {}),
|
|
209
|
+
...(typeof e.details?.expires_in === 'number' ? { expiresIn: e.details.expires_in } : {}),
|
|
180
210
|
};
|
|
181
|
-
|
|
182
|
-
case '
|
|
183
|
-
return { status:
|
|
211
|
+
}
|
|
212
|
+
case 'invalid_grant':
|
|
213
|
+
return { status: 'failed' };
|
|
214
|
+
case 'expired_token':
|
|
215
|
+
return { status: 'expired' };
|
|
216
|
+
case 'access_denied':
|
|
217
|
+
return { status: 'denied' };
|
|
184
218
|
default:
|
|
185
|
-
throw
|
|
219
|
+
throw e;
|
|
186
220
|
}
|
|
187
221
|
}
|
|
188
222
|
/**
|
|
189
|
-
* Mediated Sign-In (
|
|
190
|
-
*
|
|
223
|
+
* Mediated Sign-In (extension). Credentials go ONLY to the issuer's token endpoint, with this
|
|
224
|
+
* grant. Secret values are never logged or echoed by this module. Transitional: prefer Direct or
|
|
225
|
+
* Device when they cover the task.
|
|
191
226
|
*/
|
|
192
227
|
export async function mediatedSignIn(company, scope, credentials) {
|
|
193
228
|
assertScopeAllowed(company, 'mediated', scope);
|
|
194
|
-
const mediated = company
|
|
195
|
-
const endpoint = requireSecureUrl(mediated.endpoint, 'auth.mediated.endpoint', company.security);
|
|
229
|
+
const mediated = mediatedExtension(company);
|
|
196
230
|
const missing = mediated.fields.filter((f) => typeof credentials[f.name] !== 'string');
|
|
197
231
|
if (missing.length > 0) {
|
|
198
232
|
throw new PoppyError('missing_credentials', `missing: ${missing.map((f) => f.name).join(', ')}`);
|
|
@@ -200,11 +234,31 @@ export async function mediatedSignIn(company, scope, credentials) {
|
|
|
200
234
|
const sent = {};
|
|
201
235
|
for (const f of mediated.fields)
|
|
202
236
|
sent[f.name] = credentials[f.name] ?? '';
|
|
203
|
-
|
|
237
|
+
try {
|
|
238
|
+
const resp = await company.tokens.mediated({
|
|
239
|
+
scope,
|
|
240
|
+
credentials: sent,
|
|
241
|
+
dpop: company.tokenDpop(),
|
|
242
|
+
});
|
|
243
|
+
return { status: 'complete', result: await company.applySignIn(resp, 'mediated', scope) };
|
|
244
|
+
}
|
|
245
|
+
catch (e) {
|
|
246
|
+
return mediatedFailure(e);
|
|
247
|
+
}
|
|
204
248
|
}
|
|
205
|
-
/**
|
|
206
|
-
export function submitMediatedCode(company, scope, signInId, code) {
|
|
207
|
-
|
|
208
|
-
|
|
249
|
+
/** Sends the one-time code; the sign-in keeps the scopes of the first request (section 4). */
|
|
250
|
+
export async function submitMediatedCode(company, scope, signInId, code) {
|
|
251
|
+
try {
|
|
252
|
+
const resp = await company.tokens.mediatedCode({
|
|
253
|
+
signInId,
|
|
254
|
+
code,
|
|
255
|
+
scope,
|
|
256
|
+
dpop: company.tokenDpop(),
|
|
257
|
+
});
|
|
258
|
+
return { status: 'complete', result: await company.applySignIn(resp, 'mediated', scope) };
|
|
259
|
+
}
|
|
260
|
+
catch (e) {
|
|
261
|
+
return mediatedFailure(e);
|
|
262
|
+
}
|
|
209
263
|
}
|
|
210
264
|
//# sourceMappingURL=signin.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"signin.js","sourceRoot":"","sources":["../../../src/poppy-client/signin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE1C,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACrD,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"signin.js","sourceRoot":"","sources":["../../../src/poppy-client/signin.ts"],"names":[],"mappings":"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"}
|