@adonis-agora/agent 0.93.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 +20 -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/agent_provider.d.ts.map +1 -1
- package/dist/providers/agent_provider.js +20 -2
- package/dist/providers/agent_provider.js.map +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/agent-service.d.ts +11 -1
- package/dist/src/agent-service.d.ts.map +1 -1
- package/dist/src/agent-service.js +13 -4
- package/dist/src/agent-service.js.map +1 -1
- package/dist/src/diagnostics.d.ts +2 -0
- package/dist/src/diagnostics.d.ts.map +1 -1
- package/dist/src/diagnostics.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/dist/src/spi/agent-store.d.ts +6 -0
- package/dist/src/spi/agent-store.d.ts.map +1 -1
- package/dist/src/spi/agent-store.js.map +1 -1
- package/dist/src/spi/governance-queries.d.ts +23 -1
- package/dist/src/spi/governance-queries.d.ts.map +1 -1
- package/dist/src/spi/governance-queries.js +16 -1
- package/dist/src/spi/governance-queries.js.map +1 -1
- package/dist/src/stores/lucid-governance-queries.d.ts +2 -2
- package/dist/src/stores/lucid-governance-queries.d.ts.map +1 -1
- package/dist/src/stores/lucid-governance-queries.js +11 -7
- package/dist/src/stores/lucid-governance-queries.js.map +1 -1
- package/dist/src/stores/lucid-schema.d.ts +2 -0
- package/dist/src/stores/lucid-schema.d.ts.map +1 -1
- package/dist/src/stores/lucid-schema.js +12 -0
- package/dist/src/stores/lucid-schema.js.map +1 -1
- package/dist/src/stores/lucid.d.ts +7 -0
- package/dist/src/stores/lucid.d.ts.map +1 -1
- package/dist/src/stores/lucid.js +21 -3
- package/dist/src/stores/lucid.js.map +1 -1
- package/dist/src/testing/in-memory-governance-queries.d.ts +2 -2
- package/dist/src/testing/in-memory-governance-queries.d.ts.map +1 -1
- package/dist/src/testing/in-memory-governance-queries.js +11 -2
- package/dist/src/testing/in-memory-governance-queries.js.map +1 -1
- package/dist/src/testing/in-memory-store.d.ts +2 -0
- package/dist/src/testing/in-memory-store.d.ts.map +1 -1
- package/dist/src/testing/in-memory-store.js +7 -2
- package/dist/src/testing/in-memory-store.js.map +1 -1
- package/dist/src/usage-ledger.d.ts.map +1 -1
- package/dist/src/usage-ledger.js +1 -0
- package/dist/src/usage-ledger.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
|
@@ -1,10 +1,14 @@
|
|
|
1
|
-
import { discover, HttpJsonCache } from './discovery.js';
|
|
1
|
+
import { discover, HttpJsonCache, protectedResourceMetadataUrl, } from './discovery.js';
|
|
2
2
|
import { DpopKey } from './dpop.js';
|
|
3
|
-
import { ConversationError, OAuthError, PoppyError, ResourceAuthError } from './errors.js';
|
|
3
|
+
import { ConversationError, DiscoveryError, OAuthError, PoppyError, ResourceAuthError, } from './errors.js';
|
|
4
4
|
import { PoppyHttp, readJson } from './http.js';
|
|
5
5
|
import { generateEs256Key } from './keys.js';
|
|
6
|
+
import { companyFetch } from './safe_fetch.js';
|
|
7
|
+
import { signSessionJwt } from './session_jwt.js';
|
|
6
8
|
import { TokenClient } from './token_client.js';
|
|
7
|
-
import { randomId, scopeSet, wwwAuthError } from './util.js';
|
|
9
|
+
import { nowSeconds, randomId, requireSecureUrl, scopeSet, wwwAuthError, } from './util.js';
|
|
10
|
+
/** The protocol version `CompanyState` is written for. */
|
|
11
|
+
const STATE_PROTOCOL = '0.3';
|
|
8
12
|
/** Entry point: one agent identity, one local state file, one local user. */
|
|
9
13
|
export class PoppyAgent {
|
|
10
14
|
opts;
|
|
@@ -15,7 +19,7 @@ export class PoppyAgent {
|
|
|
15
19
|
this.opts = opts;
|
|
16
20
|
this.profile = opts.profile ?? 'default';
|
|
17
21
|
this.http = new PoppyHttp({
|
|
18
|
-
fetch: opts.fetch,
|
|
22
|
+
fetch: opts.fetch ?? companyFetch(opts.insecureDev),
|
|
19
23
|
log: opts.log,
|
|
20
24
|
maxRetryAfterSeconds: opts.maxRetryAfterSeconds,
|
|
21
25
|
});
|
|
@@ -29,32 +33,43 @@ export class PoppyAgent {
|
|
|
29
33
|
log(line) {
|
|
30
34
|
this.opts.log?.(line);
|
|
31
35
|
}
|
|
32
|
-
/** Discovers a Company and loads (or creates) this user's state there. */
|
|
36
|
+
/** Discovers a Company and loads (or creates) this user's state there, by its identifier. */
|
|
33
37
|
async company(domain) {
|
|
34
38
|
const discovered = await discover(domain, {
|
|
35
39
|
fetch: this.http.fetch,
|
|
36
40
|
insecureDev: this.opts.insecureDev,
|
|
37
41
|
cache: this.cache,
|
|
38
42
|
});
|
|
39
|
-
|
|
40
|
-
throw new PoppyError('no_auth', `${discovered.domain} publishes no auth: it can only be browsed as an ordinary website (section 5)`);
|
|
41
|
-
}
|
|
42
|
-
const issuer = discovered.document.auth.issuer;
|
|
43
|
+
const { identifier } = discovered;
|
|
43
44
|
const companies = this.store.profile(this.profile).companies;
|
|
44
|
-
|
|
45
|
+
const org = discovered.document.organization.domain.toLowerCase();
|
|
46
|
+
if (discovered.noIssuer === 'not_found') {
|
|
47
|
+
// 3.2: a 404 doesn't explicitly say that an issuer we know was removed.
|
|
48
|
+
const known = Object.values(companies).find((c) => c.hasIssuer && c.domains.includes(org));
|
|
49
|
+
if (known) {
|
|
50
|
+
throw new DiscoveryError('issuer_unavailable', `${org} no longer publishes the issuer ${known.issuer}; not falling back to its domain`);
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
let state = companies[identifier];
|
|
45
54
|
if (!state) {
|
|
46
55
|
state = {
|
|
47
|
-
issuer,
|
|
56
|
+
issuer: identifier,
|
|
48
57
|
domains: [],
|
|
49
|
-
//
|
|
58
|
+
// 5.1: opaque, random, per Company. Never derived from personal information.
|
|
50
59
|
userId: randomId('usr_'),
|
|
51
60
|
dpopKey: await generateEs256Key(),
|
|
52
61
|
tokens: {},
|
|
53
62
|
conversations: {},
|
|
54
63
|
};
|
|
55
|
-
companies[
|
|
64
|
+
companies[identifier] = state;
|
|
56
65
|
}
|
|
57
|
-
|
|
66
|
+
// A state from before Draft 0.3: its tokens and Session belong to a protocol that's gone.
|
|
67
|
+
if (state.protocol !== STATE_PROTOCOL) {
|
|
68
|
+
state.protocol = STATE_PROTOCOL;
|
|
69
|
+
state.tokens = {};
|
|
70
|
+
state.sessionId = undefined;
|
|
71
|
+
}
|
|
72
|
+
state.hasIssuer = discovered.metadata !== undefined;
|
|
58
73
|
if (!state.domains.includes(org))
|
|
59
74
|
state.domains.push(org);
|
|
60
75
|
await this.store.save();
|
|
@@ -62,35 +77,47 @@ export class PoppyAgent {
|
|
|
62
77
|
}
|
|
63
78
|
}
|
|
64
79
|
const EXPIRY_SKEW_MS = 30_000;
|
|
80
|
+
/** Get a new delegation when this little of the last one is left. */
|
|
81
|
+
const DELEGATION_RENEW_SECONDS = 3600;
|
|
82
|
+
const DEFAULT_TOKEN_KEY = 'default';
|
|
65
83
|
function tokenKey(opts) {
|
|
66
|
-
if (opts.bearer)
|
|
67
|
-
return
|
|
68
|
-
|
|
69
|
-
return 'dpop';
|
|
70
|
-
return `dpop|${opts.resource ?? ''}|${opts.scope ?? ''}`;
|
|
84
|
+
if (!opts.scope && !opts.resource && !opts.bearer)
|
|
85
|
+
return DEFAULT_TOKEN_KEY;
|
|
86
|
+
return `${opts.resource ?? ''}|${opts.scope ?? ''}|${opts.bearer ? 'bearer' : ''}`;
|
|
71
87
|
}
|
|
72
|
-
/** One User at one Company:
|
|
88
|
+
/** One User at one Company: the Session, the refresh token, and requests to its endpoints. */
|
|
73
89
|
export class CompanyClient {
|
|
74
90
|
agent;
|
|
75
91
|
discovered;
|
|
76
92
|
state;
|
|
77
|
-
tokens;
|
|
78
93
|
dpop;
|
|
94
|
+
#tokens;
|
|
95
|
+
/** Each service's `resource`, or `null` when the default token works there (4.5). */
|
|
96
|
+
#resources = new Map();
|
|
97
|
+
#refreshing = Promise.resolve();
|
|
79
98
|
constructor(agent, discovered, state) {
|
|
80
99
|
this.agent = agent;
|
|
81
100
|
this.discovered = discovered;
|
|
82
101
|
this.state = state;
|
|
83
|
-
this.tokens = new TokenClient(agent.identity, discovered.metadata, agent.http, agent.opts.tokenClient);
|
|
84
102
|
this.dpop = new DpopKey(state.dpopKey);
|
|
85
103
|
}
|
|
104
|
+
/** The Company's OAuth calls. A Company without an issuer offers no sign-in (3.2). */
|
|
105
|
+
get tokens() {
|
|
106
|
+
if (!this.discovered.metadata) {
|
|
107
|
+
throw new PoppyError('no_issuer', `${this.discovered.domain} has no OAuth issuer: it offers only signed-out Sessions`);
|
|
108
|
+
}
|
|
109
|
+
this.#tokens ??= new TokenClient(this.agent.identity, this.discovered.metadata, this.agent.http);
|
|
110
|
+
return this.#tokens;
|
|
111
|
+
}
|
|
86
112
|
get document() {
|
|
87
113
|
return this.discovered.document;
|
|
88
114
|
}
|
|
89
115
|
get metadata() {
|
|
90
|
-
return this.
|
|
116
|
+
return this.tokens.metadata;
|
|
91
117
|
}
|
|
118
|
+
/** The Company's identifier (3.2): its issuer, or its HTTPS domain without one. */
|
|
92
119
|
get issuer() {
|
|
93
|
-
return this.
|
|
120
|
+
return this.discovered.identifier;
|
|
94
121
|
}
|
|
95
122
|
get userId() {
|
|
96
123
|
return this.state.userId;
|
|
@@ -102,212 +129,237 @@ export class CompanyClient {
|
|
|
102
129
|
return { insecureDev: this.agent.opts.insecureDev };
|
|
103
130
|
}
|
|
104
131
|
get accountToken() {
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
132
|
+
return this.state.accountToken;
|
|
133
|
+
}
|
|
134
|
+
/** The current Session's `sid`, chosen here at random (5.2). */
|
|
135
|
+
get sessionId() {
|
|
136
|
+
this.state.sessionId ??= randomId('', 16);
|
|
137
|
+
return this.state.sessionId;
|
|
109
138
|
}
|
|
110
139
|
async save() {
|
|
111
140
|
await this.agent.store.save();
|
|
112
141
|
}
|
|
113
|
-
/**
|
|
142
|
+
/** Stops using the current `sid`; the next request starts a new Session (5.5). */
|
|
114
143
|
async newSession() {
|
|
115
144
|
this.state.sessionId = undefined;
|
|
116
|
-
this.state.tokens = {};
|
|
117
145
|
await this.save();
|
|
118
146
|
}
|
|
147
|
+
/** Sends a proof with token requests when the issuer's metadata lists ES256 (4.5). */
|
|
148
|
+
tokenDpop() {
|
|
149
|
+
const algs = this.metadata.dpop_signing_alg_values_supported;
|
|
150
|
+
return Array.isArray(algs) && algs.includes('ES256') ? this.dpop : undefined;
|
|
151
|
+
}
|
|
152
|
+
/** The delegated key of this User ID, with a live delegation (5.2). */
|
|
153
|
+
async #delegation() {
|
|
154
|
+
const current = this.state.delegation;
|
|
155
|
+
if (current && current.exp - nowSeconds() > DELEGATION_RENEW_SECONDS)
|
|
156
|
+
return current;
|
|
157
|
+
const key = await generateEs256Key();
|
|
158
|
+
const { jwt, exp } = await this.agent.identity.delegate(key.publicJwk);
|
|
159
|
+
this.state.delegation = { key, jwt, exp };
|
|
160
|
+
await this.save();
|
|
161
|
+
return this.state.delegation;
|
|
162
|
+
}
|
|
163
|
+
/** A `Poppy-Session` JWT good for this one request (5.2). */
|
|
164
|
+
async sessionJwt(method, url, accessToken) {
|
|
165
|
+
const { key, jwt } = await this.#delegation();
|
|
166
|
+
return signSessionJwt({
|
|
167
|
+
key,
|
|
168
|
+
delegation: jwt,
|
|
169
|
+
clientId: this.agent.identity.clientId,
|
|
170
|
+
audience: this.issuer,
|
|
171
|
+
sid: this.sessionId,
|
|
172
|
+
userId: this.userId,
|
|
173
|
+
method,
|
|
174
|
+
url,
|
|
175
|
+
accessToken,
|
|
176
|
+
});
|
|
177
|
+
}
|
|
119
178
|
/**
|
|
120
|
-
*
|
|
121
|
-
*
|
|
122
|
-
* `account_mismatch` and a revoked Account Token (`invalid_grant`) as 4.2/4.8/4.9 describe.
|
|
179
|
+
* An access token, refreshed when close to expiry, or `null` when signed out. A refresh answered
|
|
180
|
+
* with `invalid_grant` means the sign-in is gone: the Session continues signed out (5.5).
|
|
123
181
|
*/
|
|
124
182
|
async token(opts = {}) {
|
|
183
|
+
if (!this.accountToken)
|
|
184
|
+
return null;
|
|
125
185
|
const key = tokenKey(opts);
|
|
126
186
|
const rec = this.state.tokens[key];
|
|
127
|
-
if (rec &&
|
|
128
|
-
!opts.forceRenew &&
|
|
129
|
-
rec.sessionId === this.state.sessionId &&
|
|
130
|
-
rec.expiresAt - EXPIRY_SKEW_MS > Date.now()) {
|
|
187
|
+
if (rec && !opts.forceRenew && rec.expiresAt - EXPIRY_SKEW_MS > Date.now())
|
|
131
188
|
return rec;
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
const resp = await this.issue(opts);
|
|
137
|
-
return this.record(key, resp, opts.resource);
|
|
189
|
+
// One at a time: with rotation, a second refresh would present a token the first replaced.
|
|
190
|
+
const run = this.#refreshing.then(() => this.#refresh(key, opts));
|
|
191
|
+
this.#refreshing = run.catch(() => { });
|
|
192
|
+
return run;
|
|
138
193
|
}
|
|
139
|
-
async
|
|
140
|
-
const dpop = opts.bearer ? undefined : this.dpop;
|
|
141
|
-
const narrowing = { scope: opts.scope, resource: opts.resource };
|
|
194
|
+
async #refresh(key, opts) {
|
|
142
195
|
const acct = this.accountToken;
|
|
143
|
-
if (acct)
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
refreshToken: acct.refreshToken,
|
|
147
|
-
sessionId: this.state.sessionId,
|
|
148
|
-
dpop,
|
|
149
|
-
...narrowing,
|
|
150
|
-
});
|
|
151
|
-
}
|
|
152
|
-
catch (e) {
|
|
153
|
-
if (!(e instanceof OAuthError))
|
|
154
|
-
throw e;
|
|
155
|
-
if (e.code === 'invalid_grant') {
|
|
156
|
-
// 4.8/4.9: expired, revoked, or the User disconnected us. Continue signed out.
|
|
157
|
-
this.agent.log('Account Token rejected (invalid_grant); continuing signed out');
|
|
158
|
-
this.state.accountToken = undefined;
|
|
159
|
-
await this.save();
|
|
160
|
-
}
|
|
161
|
-
else if ((e.code === 'invalid_session' || e.code === 'account_mismatch') &&
|
|
162
|
-
this.state.sessionId) {
|
|
163
|
-
this.agent.log(`${e.code}: starting a new Session`);
|
|
164
|
-
await this.newSession();
|
|
165
|
-
return this.tokens.refresh({ refreshToken: acct.refreshToken, dpop, ...narrowing });
|
|
166
|
-
}
|
|
167
|
-
else {
|
|
168
|
-
throw e;
|
|
169
|
-
}
|
|
170
|
-
}
|
|
171
|
-
}
|
|
196
|
+
if (!acct)
|
|
197
|
+
return null;
|
|
198
|
+
let resp;
|
|
172
199
|
try {
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
dpop,
|
|
177
|
-
|
|
200
|
+
resp = await this.tokens.refresh({
|
|
201
|
+
refreshToken: acct.refreshToken,
|
|
202
|
+
grantedScope: acct.scope,
|
|
203
|
+
dpop: opts.bearer ? undefined : this.tokenDpop(),
|
|
204
|
+
scope: opts.scope,
|
|
205
|
+
resource: opts.resource,
|
|
178
206
|
});
|
|
179
207
|
}
|
|
180
208
|
catch (e) {
|
|
181
|
-
if (e instanceof OAuthError
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
}
|
|
186
|
-
throw e;
|
|
187
|
-
}
|
|
188
|
-
}
|
|
189
|
-
async record(key, resp, resource) {
|
|
190
|
-
if (resp.session_id !== this.state.sessionId) {
|
|
191
|
-
// A different Session: tokens of the old one don't apply any more.
|
|
209
|
+
if (!(e instanceof OAuthError) || e.code !== 'invalid_grant')
|
|
210
|
+
throw e;
|
|
211
|
+
this.agent.log('refresh token rejected (invalid_grant); continuing signed out');
|
|
212
|
+
this.state.accountToken = undefined;
|
|
192
213
|
this.state.tokens = {};
|
|
193
|
-
this.
|
|
214
|
+
await this.save();
|
|
215
|
+
return null;
|
|
194
216
|
}
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
refreshToken: resp.refresh_token,
|
|
200
|
-
expiresAt: typeof resp.refresh_token_expires_in === 'number'
|
|
201
|
-
? Date.now() + resp.refresh_token_expires_in * 1000
|
|
202
|
-
: this.state.accountToken.expiresAt,
|
|
203
|
-
};
|
|
204
|
-
}
|
|
205
|
-
const rec = {
|
|
217
|
+
// 4.4: a new refresh token MUST replace the old one; none means keep using it.
|
|
218
|
+
if (resp.refresh_token)
|
|
219
|
+
acct.refreshToken = resp.refresh_token;
|
|
220
|
+
const fresh = {
|
|
206
221
|
accessToken: resp.access_token,
|
|
207
222
|
tokenType: resp.token_type,
|
|
208
|
-
expiresAt: Date.now() + resp.expires_in * 1000,
|
|
223
|
+
expiresAt: Date.now() + (resp.expires_in ?? 0) * 1000,
|
|
209
224
|
scope: resp.scope ?? '',
|
|
210
|
-
|
|
211
|
-
signedIn: resp.signed_in,
|
|
212
|
-
resource,
|
|
225
|
+
resource: opts.resource,
|
|
213
226
|
};
|
|
214
|
-
this.state.tokens[key] =
|
|
227
|
+
this.state.tokens[key] = fresh;
|
|
215
228
|
await this.save();
|
|
216
|
-
return
|
|
229
|
+
return fresh;
|
|
217
230
|
}
|
|
218
|
-
/** Stores the result of any sign-in type (4.
|
|
231
|
+
/** Stores the result of any sign-in type (4.7): the refresh token and the access token. */
|
|
219
232
|
async applySignIn(resp, via, requestedScope) {
|
|
220
233
|
if (!resp.refresh_token) {
|
|
221
234
|
throw new OAuthError('invalid_response', {
|
|
222
|
-
description: 'sign-in returned no
|
|
235
|
+
description: 'sign-in returned no refresh token',
|
|
223
236
|
});
|
|
224
237
|
}
|
|
225
238
|
const old = this.state.accountToken;
|
|
239
|
+
const scope = resp.scope ?? requestedScope;
|
|
226
240
|
this.state.accountToken = {
|
|
227
241
|
refreshToken: resp.refresh_token,
|
|
228
|
-
scope
|
|
242
|
+
scope,
|
|
229
243
|
obtainedAt: Date.now(),
|
|
230
|
-
expiresAt: typeof resp.refresh_token_expires_in === 'number'
|
|
231
|
-
? Date.now() + resp.refresh_token_expires_in * 1000
|
|
232
|
-
: undefined,
|
|
233
244
|
via,
|
|
234
245
|
};
|
|
235
|
-
this.state.tokens = {
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
sessionId: resp.session_id,
|
|
243
|
-
signedIn: resp.signed_in,
|
|
246
|
+
this.state.tokens = {
|
|
247
|
+
[DEFAULT_TOKEN_KEY]: {
|
|
248
|
+
accessToken: resp.access_token,
|
|
249
|
+
tokenType: resp.token_type,
|
|
250
|
+
expiresAt: Date.now() + (resp.expires_in ?? 0) * 1000,
|
|
251
|
+
scope,
|
|
252
|
+
},
|
|
244
253
|
};
|
|
245
254
|
await this.save();
|
|
246
255
|
if (old && old.refreshToken !== resp.refresh_token) {
|
|
247
|
-
// 4.
|
|
256
|
+
// 4.7: the new refresh token replaces the old one, which we SHOULD revoke. Not a sign-out.
|
|
248
257
|
try {
|
|
249
258
|
await this.tokens.revoke(old.refreshToken);
|
|
250
259
|
}
|
|
251
260
|
catch (e) {
|
|
252
|
-
this.agent.log(`could not revoke the replaced
|
|
261
|
+
this.agent.log(`could not revoke the replaced refresh token: ${e.message}`);
|
|
253
262
|
}
|
|
254
263
|
}
|
|
255
|
-
const granted = scopeSet(
|
|
264
|
+
const granted = scopeSet(scope);
|
|
256
265
|
return {
|
|
257
|
-
grantedScope:
|
|
266
|
+
grantedScope: scope,
|
|
258
267
|
missingScopes: [...scopeSet(requestedScope)].filter((s) => !granted.has(s)),
|
|
259
|
-
sessionId: resp.session_id,
|
|
260
268
|
};
|
|
261
269
|
}
|
|
262
|
-
/** Sign out (
|
|
270
|
+
/** Sign out (5.5): revoke the refresh token. Sessions carry on signed out. */
|
|
263
271
|
async signOut() {
|
|
264
272
|
const acct = this.state.accountToken;
|
|
265
273
|
if (!acct)
|
|
266
274
|
return false;
|
|
267
275
|
await this.tokens.revoke(acct.refreshToken, 'refresh_token');
|
|
268
276
|
this.state.accountToken = undefined;
|
|
269
|
-
// Signed-in Session Tokens may still be valid; drop them so the next request renews
|
|
270
|
-
// with the agent's assertion and gets a signed-out token (4.9).
|
|
271
277
|
this.state.tokens = {};
|
|
272
278
|
await this.save();
|
|
273
279
|
return true;
|
|
274
280
|
}
|
|
275
|
-
/**
|
|
276
|
-
|
|
277
|
-
|
|
281
|
+
/**
|
|
282
|
+
* The `resource` a service asks tokens for (4.5): its protected resource metadata, when it names
|
|
283
|
+
* something other than the domain. Otherwise the default token works there.
|
|
284
|
+
*/
|
|
285
|
+
async #resourceOf(service, refresh = false) {
|
|
286
|
+
const known = this.#resources.get(service);
|
|
287
|
+
if (known !== undefined && !refresh)
|
|
288
|
+
return known ?? undefined;
|
|
289
|
+
let resource = null;
|
|
290
|
+
const url = protectedResourceMetadataUrl(service);
|
|
291
|
+
requireSecureUrl(url.toString(), 'protected resource metadata', this.security);
|
|
292
|
+
const res = await this.http.request(url.toString(), {
|
|
293
|
+
headers: { accept: 'application/json' },
|
|
294
|
+
redirect: 'manual',
|
|
295
|
+
});
|
|
296
|
+
if (res.ok) {
|
|
297
|
+
const doc = await readJson(res);
|
|
298
|
+
const domain = new URL(this.discovered.wellKnownUrl).origin;
|
|
299
|
+
if (typeof doc?.resource === 'string' && doc.resource !== domain)
|
|
300
|
+
resource = doc.resource;
|
|
301
|
+
}
|
|
302
|
+
else {
|
|
303
|
+
await res.body?.cancel().catch(() => { });
|
|
304
|
+
}
|
|
305
|
+
this.#resources.set(service, resource);
|
|
306
|
+
return resource ?? undefined;
|
|
278
307
|
}
|
|
279
308
|
/**
|
|
280
|
-
*
|
|
281
|
-
*
|
|
282
|
-
* `
|
|
309
|
+
* A request to one of the Company's APIs or endpoints: the Session header and, when signed in, an
|
|
310
|
+
* access token (5.2, 4.5). `invalid_session` starts a new Session once (section 7), and
|
|
311
|
+
* `invalid_token` refreshes once, falling back to signed out when the sign-in is gone (5.5).
|
|
283
312
|
*/
|
|
284
313
|
async fetch(url, init = {}) {
|
|
285
|
-
const { scope,
|
|
286
|
-
|
|
287
|
-
|
|
314
|
+
const { scope, service, bearer, signedOut, ...rest } = init;
|
|
315
|
+
const method = (rest.method ?? 'GET').toUpperCase();
|
|
316
|
+
const wantsAccount = !signedOut && this.accountToken !== undefined;
|
|
317
|
+
let resource = init.resource;
|
|
318
|
+
if (wantsAccount && resource === undefined && service) {
|
|
319
|
+
resource = await this.#resourceOf(service);
|
|
320
|
+
}
|
|
321
|
+
delete rest.resource;
|
|
322
|
+
let forceRenew = false;
|
|
323
|
+
let sessionRetried = false;
|
|
324
|
+
let tokenRetried = false;
|
|
325
|
+
for (;;) {
|
|
326
|
+
const rec = wantsAccount ? await this.token({ scope, resource, bearer, forceRenew }) : null;
|
|
327
|
+
forceRenew = false;
|
|
328
|
+
const scheme = rec?.tokenType.toLowerCase() === 'dpop' ? 'DPoP' : 'Bearer';
|
|
288
329
|
const res = await this.http.request(url, {
|
|
289
330
|
...rest,
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
scheme:
|
|
331
|
+
method,
|
|
332
|
+
session: () => this.sessionJwt(method, url, rec?.accessToken),
|
|
333
|
+
...(rec ? { accessToken: rec.accessToken, scheme } : {}),
|
|
334
|
+
...(scheme === 'DPoP' && rec ? { dpop: this.dpop } : {}),
|
|
293
335
|
});
|
|
294
|
-
if (
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
336
|
+
if (res.status === 400 && !sessionRetried) {
|
|
337
|
+
const body = await readJson(res.clone());
|
|
338
|
+
if (body?.error === 'invalid_session') {
|
|
339
|
+
sessionRetried = true;
|
|
340
|
+
this.agent.log('invalid_session: starting a new Session');
|
|
341
|
+
await res.body?.cancel().catch(() => { });
|
|
342
|
+
await this.newSession();
|
|
343
|
+
continue;
|
|
344
|
+
}
|
|
300
345
|
}
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
346
|
+
if (res.status === 401 && rec && !tokenRetried) {
|
|
347
|
+
const err = wwwAuthError(res.headers.get('www-authenticate'));
|
|
348
|
+
if (err.error === 'invalid_token') {
|
|
349
|
+
tokenRetried = true;
|
|
350
|
+
await res.body?.cancel().catch(() => { });
|
|
351
|
+
// Stale metadata: the service says which `resource` it wants (4.5).
|
|
352
|
+
if (err.resourceMetadata && service && init.resource === undefined) {
|
|
353
|
+
resource = await this.#resourceOf(service, true);
|
|
354
|
+
}
|
|
355
|
+
forceRenew = true;
|
|
356
|
+
continue;
|
|
357
|
+
}
|
|
306
358
|
}
|
|
307
359
|
return res;
|
|
308
360
|
}
|
|
309
361
|
}
|
|
310
|
-
/** `fetch` + JSON, mapping failures to typed errors (section
|
|
362
|
+
/** `fetch` + JSON, mapping failures to typed errors (section 7, 8.13). */
|
|
311
363
|
async json(url, init = {}) {
|
|
312
364
|
const res = await this.fetch(url, init);
|
|
313
365
|
if (!res.ok)
|
|
@@ -315,11 +367,15 @@ export class CompanyClient {
|
|
|
315
367
|
return { status: res.status, body: (await readJson(res)) };
|
|
316
368
|
}
|
|
317
369
|
}
|
|
318
|
-
/**
|
|
370
|
+
/**
|
|
371
|
+
* Maps a failed resource response to a typed error. A challenge without an error code means the
|
|
372
|
+
* request needs the account: it's handled as `insufficient_scope` (section 7).
|
|
373
|
+
*/
|
|
319
374
|
export async function throwForResponse(res) {
|
|
320
|
-
const
|
|
321
|
-
|
|
322
|
-
|
|
375
|
+
const header = res.headers.get('www-authenticate');
|
|
376
|
+
const auth = wwwAuthError(header);
|
|
377
|
+
if (auth.error || (res.status === 401 && header)) {
|
|
378
|
+
throw new ResourceAuthError(auth.error ?? 'insufficient_scope', {
|
|
323
379
|
status: res.status,
|
|
324
380
|
scope: auth.scope,
|
|
325
381
|
description: auth.description,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"company.js","sourceRoot":"","sources":["../../../src/poppy-client/company.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"company.js","sourceRoot":"","sources":["../../../src/poppy-client/company.ts"],"names":[],"mappings":"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"}
|