@adonis-agora/agent 0.94.0 → 0.96.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 (156) hide show
  1. package/CHANGELOG.md +16 -0
  2. package/dist/assets/spa/assets/{index-DUq09Q_k.js → index-DBu17cDY.js} +1 -1
  3. package/dist/assets/spa/index.html +1 -1
  4. package/dist/providers/poppy_connections_provider.d.ts +1 -1
  5. package/dist/providers/poppy_connections_provider.js +1 -1
  6. package/dist/providers/poppy_provider.d.ts +1 -1
  7. package/dist/providers/poppy_provider.d.ts.map +1 -1
  8. package/dist/providers/poppy_provider.js +6 -6
  9. package/dist/providers/poppy_provider.js.map +1 -1
  10. package/dist/src/index.d.ts +1 -1
  11. package/dist/src/index.js +1 -1
  12. package/dist/src/mcp/auth.d.ts +3 -3
  13. package/dist/src/mcp/auth.d.ts.map +1 -1
  14. package/dist/src/mcp/auth.js +2 -29
  15. package/dist/src/mcp/auth.js.map +1 -1
  16. package/dist/src/mcp/discovery.d.ts +3 -3
  17. package/dist/src/mcp/discovery.d.ts.map +1 -1
  18. package/dist/src/mcp/discovery.js +2 -2
  19. package/dist/src/poppy/auth.d.ts +20 -16
  20. package/dist/src/poppy/auth.d.ts.map +1 -1
  21. package/dist/src/poppy/auth.js.map +1 -1
  22. package/dist/src/poppy/conversations.d.ts +25 -25
  23. package/dist/src/poppy/conversations.d.ts.map +1 -1
  24. package/dist/src/poppy/conversations.js +37 -37
  25. package/dist/src/poppy/conversations.js.map +1 -1
  26. package/dist/src/poppy/define_config.d.ts +7 -7
  27. package/dist/src/poppy/define_config.d.ts.map +1 -1
  28. package/dist/src/poppy/define_config.js +1 -1
  29. package/dist/src/poppy/endpoints.d.ts +2 -2
  30. package/dist/src/poppy/endpoints.js +1 -1
  31. package/dist/src/poppy/handler.d.ts +5 -5
  32. package/dist/src/poppy/handler.d.ts.map +1 -1
  33. package/dist/src/poppy/handler.js +23 -21
  34. package/dist/src/poppy/handler.js.map +1 -1
  35. package/dist/src/poppy/index.d.ts +2 -2
  36. package/dist/src/poppy/index.d.ts.map +1 -1
  37. package/dist/src/poppy/index.js +1 -1
  38. package/dist/src/poppy/index.js.map +1 -1
  39. package/dist/src/poppy/protocol.d.ts +30 -23
  40. package/dist/src/poppy/protocol.d.ts.map +1 -1
  41. package/dist/src/poppy/protocol.js +16 -17
  42. package/dist/src/poppy/protocol.js.map +1 -1
  43. package/dist/src/poppy/redis-store.d.ts +1 -1
  44. package/dist/src/poppy/redis-store.js +1 -1
  45. package/dist/src/poppy/store.d.ts +7 -7
  46. package/dist/src/poppy/store.js +1 -1
  47. package/dist/src/poppy-client/api.d.ts +5 -4
  48. package/dist/src/poppy-client/api.d.ts.map +1 -1
  49. package/dist/src/poppy-client/api.js +14 -9
  50. package/dist/src/poppy-client/api.js.map +1 -1
  51. package/dist/src/poppy-client/browser.d.ts +12 -18
  52. package/dist/src/poppy-client/browser.d.ts.map +1 -1
  53. package/dist/src/poppy-client/browser.js +33 -73
  54. package/dist/src/poppy-client/browser.js.map +1 -1
  55. package/dist/src/poppy-client/cli/main.d.ts.map +1 -1
  56. package/dist/src/poppy-client/cli/main.js +48 -56
  57. package/dist/src/poppy-client/cli/main.js.map +1 -1
  58. package/dist/src/poppy-client/company.d.ts +43 -28
  59. package/dist/src/poppy-client/company.d.ts.map +1 -1
  60. package/dist/src/poppy-client/company.js +216 -160
  61. package/dist/src/poppy-client/company.js.map +1 -1
  62. package/dist/src/poppy-client/conversations.d.ts +12 -13
  63. package/dist/src/poppy-client/conversations.d.ts.map +1 -1
  64. package/dist/src/poppy-client/conversations.js +24 -22
  65. package/dist/src/poppy-client/conversations.js.map +1 -1
  66. package/dist/src/poppy-client/discovery.d.ts +32 -10
  67. package/dist/src/poppy-client/discovery.d.ts.map +1 -1
  68. package/dist/src/poppy-client/discovery.js +134 -68
  69. package/dist/src/poppy-client/discovery.js.map +1 -1
  70. package/dist/src/poppy-client/dpop.d.ts +2 -1
  71. package/dist/src/poppy-client/dpop.d.ts.map +1 -1
  72. package/dist/src/poppy-client/dpop.js +2 -1
  73. package/dist/src/poppy-client/dpop.js.map +1 -1
  74. package/dist/src/poppy-client/errors.d.ts +5 -4
  75. package/dist/src/poppy-client/errors.d.ts.map +1 -1
  76. package/dist/src/poppy-client/errors.js +5 -4
  77. package/dist/src/poppy-client/errors.js.map +1 -1
  78. package/dist/src/poppy-client/http.d.ts +4 -2
  79. package/dist/src/poppy-client/http.d.ts.map +1 -1
  80. package/dist/src/poppy-client/http.js +9 -5
  81. package/dist/src/poppy-client/http.js.map +1 -1
  82. package/dist/src/poppy-client/identity.d.ts +15 -15
  83. package/dist/src/poppy-client/identity.d.ts.map +1 -1
  84. package/dist/src/poppy-client/identity.js +17 -33
  85. package/dist/src/poppy-client/identity.js.map +1 -1
  86. package/dist/src/poppy-client/index.d.ts +6 -3
  87. package/dist/src/poppy-client/index.d.ts.map +1 -1
  88. package/dist/src/poppy-client/index.js +6 -3
  89. package/dist/src/poppy-client/index.js.map +1 -1
  90. package/dist/src/poppy-client/llm.js +4 -4
  91. package/dist/src/poppy-client/llm.js.map +1 -1
  92. package/dist/src/poppy-client/mcp.d.ts +3 -4
  93. package/dist/src/poppy-client/mcp.d.ts.map +1 -1
  94. package/dist/src/poppy-client/mcp.js +26 -38
  95. package/dist/src/poppy-client/mcp.js.map +1 -1
  96. package/dist/src/poppy-client/safe_fetch.d.ts +30 -0
  97. package/dist/src/poppy-client/safe_fetch.d.ts.map +1 -0
  98. package/dist/src/poppy-client/safe_fetch.js +210 -0
  99. package/dist/src/poppy-client/safe_fetch.js.map +1 -0
  100. package/dist/src/poppy-client/session_jwt.d.ts +20 -0
  101. package/dist/src/poppy-client/session_jwt.d.ts.map +1 -0
  102. package/dist/src/poppy-client/session_jwt.js +37 -0
  103. package/dist/src/poppy-client/session_jwt.js.map +1 -0
  104. package/dist/src/poppy-client/signin.d.ts +34 -11
  105. package/dist/src/poppy-client/signin.d.ts.map +1 -1
  106. package/dist/src/poppy-client/signin.js +134 -80
  107. package/dist/src/poppy-client/signin.js.map +1 -1
  108. package/dist/src/poppy-client/store.d.ts +23 -11
  109. package/dist/src/poppy-client/store.d.ts.map +1 -1
  110. package/dist/src/poppy-client/store.js +1 -1
  111. package/dist/src/poppy-client/store.js.map +1 -1
  112. package/dist/src/poppy-client/task_coverage.d.ts +13 -0
  113. package/dist/src/poppy-client/task_coverage.d.ts.map +1 -0
  114. package/dist/src/poppy-client/task_coverage.js +66 -0
  115. package/dist/src/poppy-client/task_coverage.js.map +1 -0
  116. package/dist/src/poppy-client/token_client.d.ts +36 -33
  117. package/dist/src/poppy-client/token_client.d.ts.map +1 -1
  118. package/dist/src/poppy-client/token_client.js +47 -47
  119. package/dist/src/poppy-client/token_client.js.map +1 -1
  120. package/dist/src/poppy-client/types.d.ts +81 -42
  121. package/dist/src/poppy-client/types.d.ts.map +1 -1
  122. package/dist/src/poppy-client/types.js +1 -1
  123. package/dist/src/poppy-client/util.d.ts +12 -3
  124. package/dist/src/poppy-client/util.d.ts.map +1 -1
  125. package/dist/src/poppy-client/util.js +29 -9
  126. package/dist/src/poppy-client/util.js.map +1 -1
  127. package/dist/src/poppy-connections/config.d.ts +2 -2
  128. package/dist/src/poppy-connections/config.js +1 -1
  129. package/dist/src/poppy-connections/config.js.map +1 -1
  130. package/dist/src/poppy-connections/crypto.d.ts +2 -2
  131. package/dist/src/poppy-connections/crypto.js +2 -2
  132. package/dist/src/poppy-connections/index.d.ts +1 -1
  133. package/dist/src/poppy-connections/index.js +1 -1
  134. package/dist/src/poppy-connections/service.d.ts +11 -10
  135. package/dist/src/poppy-connections/service.d.ts.map +1 -1
  136. package/dist/src/poppy-connections/service.js +33 -21
  137. package/dist/src/poppy-connections/service.js.map +1 -1
  138. package/dist/src/poppy-connections/store.d.ts +2 -2
  139. package/dist/src/poppy-connections/tools.d.ts.map +1 -1
  140. package/dist/src/poppy-connections/tools.js +5 -4
  141. package/dist/src/poppy-connections/tools.js.map +1 -1
  142. package/dist/src/rag/index.d.ts +1 -0
  143. package/dist/src/rag/index.d.ts.map +1 -1
  144. package/dist/src/rag/index.js +1 -0
  145. package/dist/src/rag/index.js.map +1 -1
  146. package/dist/src/rag/pg-vector-store.d.ts +8 -0
  147. package/dist/src/rag/pg-vector-store.d.ts.map +1 -1
  148. package/dist/src/rag/pg-vector-store.js +14 -5
  149. package/dist/src/rag/pg-vector-store.js.map +1 -1
  150. package/dist/src/rag/with-rag.d.ts +75 -0
  151. package/dist/src/rag/with-rag.d.ts.map +1 -0
  152. package/dist/src/rag/with-rag.js +132 -0
  153. package/dist/src/rag/with-rag.js.map +1 -0
  154. package/package.json +9 -9
  155. package/skills/agent-governance/SKILL.md +3 -3
  156. package/skills/agent-tools/SKILL.md +3 -3
@@ -1,8 +1,12 @@
1
1
  import { DiscoveryError } from './errors.js';
2
+ import { companyFetch } from './safe_fetch.js';
2
3
  import { isLoopbackHost, normalizeDomain, requireSecureUrl, } from './util.js';
3
- /** Major protocol versions this client implements (3.1). */
4
- export const SUPPORTED_MAJOR_VERSIONS = ['0'];
4
+ /** Before 1.0 each `major.minor` can break the last, so these are exact versions (3.1). */
5
+ export const SUPPORTED_PROTOCOL_VERSIONS = ['0.3'];
6
+ export const WELL_KNOWN_POPPY_PATH = '/.well-known/poppy.json';
5
7
  const MAX_REDIRECTS = 5;
8
+ const GRANT_AUTHORIZATION_CODE = 'authorization_code';
9
+ const GRANT_DEVICE_CODE = 'urn:ietf:params:oauth:grant-type:device_code';
6
10
  /** In-memory cache of JSON documents by URL, by `Cache-Control: max-age`. */
7
11
  export class HttpJsonCache {
8
12
  entries = new Map();
@@ -25,11 +29,6 @@ export class HttpJsonCache {
25
29
  this.entries.set(url, { expires: Date.now() + Number(m[1]) * 1000, value });
26
30
  }
27
31
  }
28
- /**
29
- * Turns user input into the well-known URL. `example.com` → `https://example.com/...`.
30
- * With `insecureDev`, an explicit `http://host:port` is kept, and a bare loopback host
31
- * (`localhost:3333`) defaults to `http:`.
32
- */
33
32
  export function wellKnownUrlFor(input, sec = {}) {
34
33
  let base;
35
34
  if (/^[a-z]+:\/\//i.test(input)) {
@@ -40,13 +39,13 @@ export function wellKnownUrlFor(input, sec = {}) {
40
39
  base = sec.insecureDev && isLoopbackHost(guess.hostname) ? new URL(`http://${input}`) : guess;
41
40
  }
42
41
  requireSecureUrl(base.toString(), 'Company domain', sec);
43
- return new URL('/.well-known/poppy.json', base.origin);
42
+ return new URL(WELL_KNOWN_POPPY_PATH, base.origin);
44
43
  }
45
44
  async function fetchJson(url, what, opts) {
46
45
  const cached = opts.cache?.get(url.toString());
47
46
  if (cached !== undefined)
48
- return { json: cached, finalUrl: url };
49
- const doFetch = opts.fetch ?? ((i, init) => globalThis.fetch(i, init));
47
+ return cached;
48
+ const doFetch = opts.fetch ?? companyFetch(opts.insecureDev);
50
49
  let current = url;
51
50
  for (let hop = 0;; hop++) {
52
51
  const res = await doFetch(current.toString(), {
@@ -67,6 +66,8 @@ async function fetchJson(url, what, opts) {
67
66
  current = next;
68
67
  continue;
69
68
  }
69
+ if (res.status === 404 && opts.notFoundIsNull)
70
+ return { json: null, finalUrl: current };
70
71
  if (!res.ok) {
71
72
  throw new DiscoveryError('fetch_failed', `${what}: HTTP ${res.status} from ${current}`);
72
73
  }
@@ -77,8 +78,9 @@ async function fetchJson(url, what, opts) {
77
78
  catch {
78
79
  throw new DiscoveryError('invalid_json', `${what}: response is not JSON`);
79
80
  }
80
- opts.cache?.set(url.toString(), json, res.headers.get('cache-control'));
81
- return { json, finalUrl: current };
81
+ const fetched = { json, finalUrl: current };
82
+ opts.cache?.set(url.toString(), fetched, res.headers.get('cache-control'));
83
+ return fetched;
82
84
  }
83
85
  }
84
86
  function fail(code, message) {
@@ -96,28 +98,27 @@ function checkUrl(value, what, sec) {
96
98
  }
97
99
  }
98
100
  /** Validates `poppy.json` against 3.1. Unknown fields are ignored, never rejected. */
99
- export function validatePoppyDocument(json, requestedHost, sec = {}) {
101
+ export function validatePoppyDocument(json, servedHost, sec = {}) {
100
102
  if (!isObject(json))
101
103
  fail('invalid_document', 'poppy.json is not a JSON object');
102
104
  const version = json.protocol_version;
103
105
  if (typeof version !== 'string' || !/^\d+\.\d+$/.test(version)) {
104
106
  fail('invalid_document', 'protocol_version must be "major.minor"');
105
107
  }
106
- const major = version.split('.')[0] ?? '';
107
- if (!SUPPORTED_MAJOR_VERSIONS.includes(major)) {
108
- fail('unsupported_protocol_version', `poppy.json protocol_version ${version} has major ${major}; this agent supports ${SUPPORTED_MAJOR_VERSIONS.join(', ')}`);
108
+ if (!SUPPORTED_PROTOCOL_VERSIONS.includes(version)) {
109
+ fail('unsupported_protocol_version', `poppy.json protocol_version ${version} is not supported; this agent supports ${SUPPORTED_PROTOCOL_VERSIONS.join(', ')}`);
109
110
  }
110
111
  const org = json.organization;
111
112
  if (!isObject(org) || typeof org.name !== 'string' || typeof org.domain !== 'string') {
112
113
  fail('invalid_document', 'organization.name and organization.domain are required');
113
114
  }
114
- // organization.domain must match the host we requested, ignoring a leading www. The host
115
- // after a redirect doesn't count (3.1). Ports only appear in --insecure-dev setups.
116
- const requested = normalizeDomain(requestedHost);
117
- const requestedNoPort = normalizeDomain(requestedHost.replace(/:\d+$/, ''));
115
+ // `organization.domain` is the host that served the document, compared ignoring case only (3.1).
116
+ // Ports only appear in --insecure-dev setups.
117
+ const served = normalizeDomain(servedHost);
118
+ const servedNoPort = sec.insecureDev ? served.replace(/:\d+$/, '') : served;
118
119
  const claimed = normalizeDomain(org.domain);
119
- if (claimed !== requested && claimed !== requestedNoPort) {
120
- fail('domain_mismatch', `organization.domain "${org.domain}" does not match the requested host "${requestedHost}"`);
120
+ if (claimed !== served && claimed !== servedNoPort) {
121
+ fail('domain_mismatch', `organization.domain "${org.domain}" is not the host that served the document, "${servedHost}"`);
121
122
  }
122
123
  const hasAgent = json.agent !== undefined;
123
124
  const hasApis = json.apis !== undefined;
@@ -132,33 +133,26 @@ export function validatePoppyDocument(json, requestedHost, sec = {}) {
132
133
  checkUrl(json.web.browser_session_endpoint, 'web.browser_session_endpoint', sec);
133
134
  }
134
135
  }
135
- const needsAuth = hasAgent || hasApis || (isObject(json.web) && json.web.browser_session_endpoint);
136
- if (needsAuth && json.auth === undefined) {
137
- fail('invalid_document', 'auth is required when agent, apis or web.browser_session_endpoint is present');
138
- }
139
136
  if (json.auth !== undefined) {
140
137
  const auth = json.auth;
141
138
  if (!isObject(auth))
142
139
  fail('invalid_document', 'auth must be an object');
143
- checkUrl(auth.issuer, 'auth.issuer', sec);
144
- for (const type of ['direct', 'device', 'mediated']) {
145
- const t = auth[type];
146
- if (t === undefined)
147
- continue;
148
- if (!isObject(t) ||
149
- !Array.isArray(t.scopes) ||
150
- !t.scopes.every((s) => typeof s === 'string')) {
151
- fail('invalid_document', `auth.${type}.scopes must be a list of strings`);
152
- }
153
- }
154
- if (isObject(auth.mediated)) {
155
- checkUrl(auth.mediated.endpoint, 'auth.mediated.endpoint', sec);
156
- const fields = auth.mediated.fields;
157
- if (!Array.isArray(fields) ||
158
- !fields.every((f) => isObject(f) && typeof f.name === 'string' && typeof f.label === 'string')) {
159
- fail('invalid_document', 'auth.mediated.fields must list { name, label, secret }');
160
- }
161
- }
140
+ if (auth.issuer !== undefined)
141
+ checkUrl(auth.issuer, 'auth.issuer', sec);
142
+ }
143
+ for (const [field, key] of [
144
+ ['feedback', 'endpoint'],
145
+ ['excluded_tasks', 'url'],
146
+ ]) {
147
+ const value = json[field];
148
+ if (value === undefined)
149
+ continue;
150
+ if (!isObject(value))
151
+ fail('invalid_document', `${field} must be an object`);
152
+ checkUrl(value[key], `${field}.${key}`, sec);
153
+ }
154
+ if (json.extensions !== undefined && !isObject(json.extensions)) {
155
+ fail('invalid_document', 'extensions must be an object');
162
156
  }
163
157
  if (hasAgent) {
164
158
  if (!isObject(json.agent) || !Array.isArray(json.agent.protocols)) {
@@ -169,6 +163,44 @@ export function validatePoppyDocument(json, requestedHost, sec = {}) {
169
163
  fail('invalid_document', 'apis must be a list');
170
164
  return json;
171
165
  }
166
+ /** RFC 9728 section 3.1: the well-known suffix goes between the host and the resource's path. */
167
+ export function protectedResourceMetadataUrl(resource) {
168
+ const u = new URL(resource);
169
+ const path = u.pathname === '/' ? '' : u.pathname.replace(/\/$/, '');
170
+ return new URL(`${u.origin}/.well-known/oauth-protected-resource${path}`);
171
+ }
172
+ /**
173
+ * Validates the domain's protected resource metadata (3.2) and answers the issuer the Personal
174
+ * Agent uses, or `undefined` when valid metadata names none.
175
+ */
176
+ export function validateProtectedResourceMetadata(json, doc, domainUrl, sec = {}) {
177
+ if (!isObject(json))
178
+ fail('invalid_metadata', 'protected resource metadata is not an object');
179
+ if (json.resource !== domainUrl) {
180
+ fail('resource_mismatch', `protected resource metadata resource "${String(json.resource)}" != "${domainUrl}"`);
181
+ }
182
+ const servers = json.authorization_servers;
183
+ if (servers !== undefined && !Array.isArray(servers)) {
184
+ fail('invalid_metadata', 'authorization_servers must be a list');
185
+ }
186
+ const list = (servers ?? []);
187
+ for (const entry of list)
188
+ checkUrl(entry, 'authorization_servers entry', sec);
189
+ const named = doc.auth?.issuer;
190
+ if (list.length === 0) {
191
+ if (named !== undefined) {
192
+ fail('issuer_mismatch', `auth.issuer "${named}" is not in authorization_servers`);
193
+ }
194
+ return undefined;
195
+ }
196
+ if (list.length > 1 && named === undefined) {
197
+ fail('issuer_required', 'several authorization_servers need auth.issuer to name one');
198
+ }
199
+ if (named !== undefined && !list.includes(named)) {
200
+ fail('issuer_mismatch', `auth.issuer "${named}" is not in authorization_servers`);
201
+ }
202
+ return named ?? list[0];
203
+ }
172
204
  /** RFC 8414 section 3: the well-known suffix goes between the host and the issuer's path. */
173
205
  export function authServerMetadataUrl(issuer) {
174
206
  const u = new URL(issuer);
@@ -176,42 +208,76 @@ export function authServerMetadataUrl(issuer) {
176
208
  return new URL(`${u.origin}/.well-known/oauth-authorization-server${path}`);
177
209
  }
178
210
  /** Validates the issuer metadata against 3.2. */
179
- export function validateMetadata(json, doc, sec = {}) {
211
+ export function validateMetadata(json, issuer, domainUrl, sec = {}) {
180
212
  if (!isObject(json))
181
213
  fail('invalid_metadata', 'authorization server metadata is not an object');
182
- const auth = doc.auth;
183
- if (json.issuer !== auth.issuer) {
184
- fail('issuer_mismatch', `metadata issuer "${String(json.issuer)}" != auth.issuer "${auth.issuer}"`);
214
+ if (json.issuer !== issuer) {
215
+ fail('issuer_mismatch', `metadata issuer "${String(json.issuer)}" != issuer "${issuer}"`);
185
216
  }
186
- const domains = json.poppy_domains;
187
- if (!Array.isArray(domains)) {
188
- fail('domain_not_listed', 'metadata has no poppy_domains, so it does not vouch for this domain');
189
- }
190
- const wanted = doc.organization.domain.toLowerCase();
191
- if (!domains.some((d) => typeof d === 'string' && d.toLowerCase() === wanted)) {
192
- fail('domain_not_listed', `poppy_domains of ${auth.issuer} does not include "${doc.organization.domain}"`);
217
+ const resources = json.protected_resources;
218
+ const wanted = domainUrl.toLowerCase();
219
+ if (!Array.isArray(resources) ||
220
+ !resources.some((r) => typeof r === 'string' && r.toLowerCase() === wanted)) {
221
+ fail('domain_not_listed', `protected_resources of ${issuer} does not include "${domainUrl}", so it does not vouch for this domain`);
193
222
  }
194
223
  checkUrl(json.token_endpoint, 'token_endpoint', sec);
195
224
  checkUrl(json.revocation_endpoint, 'revocation_endpoint', sec);
196
- if (auth.direct)
225
+ const grants = json.grant_types_supported;
226
+ if (!Array.isArray(grants) || !grants.includes('refresh_token')) {
227
+ fail('invalid_metadata', 'grant_types_supported is required and must include refresh_token');
228
+ }
229
+ if (grants.includes(GRANT_AUTHORIZATION_CODE)) {
197
230
  checkUrl(json.authorization_endpoint, 'authorization_endpoint', sec);
198
- if (auth.device)
231
+ }
232
+ if (grants.includes(GRANT_DEVICE_CODE)) {
199
233
  checkUrl(json.device_authorization_endpoint, 'device_authorization_endpoint', sec);
234
+ }
200
235
  return json;
201
236
  }
202
237
  /**
203
- * Discovery (section 3): fetches `/.well-known/poppy.json` (HTTPS-only redirects), validates
204
- * it, then fetches and validates the issuer's RFC 8414 metadata (3.2).
238
+ * Discovery (section 3): fetches `/.well-known/poppy.json`, which must end at that exact path after
239
+ * HTTPS-only redirects, then finds the issuer from the domain's protected resource metadata and
240
+ * checks both directions of the link. A timeout, another error status or invalid metadata throws:
241
+ * only a 404 or valid metadata without servers means there is no issuer (3.2).
205
242
  */
206
243
  export async function discover(input, opts = {}) {
207
244
  const wellKnown = wellKnownUrlFor(input, opts);
208
- const { json } = await fetchJson(wellKnown, 'poppy.json', opts);
209
- const document = validatePoppyDocument(json, wellKnown.host, opts);
210
- let metadata;
211
- if (document.auth) {
212
- const { json: meta } = await fetchJson(authServerMetadataUrl(document.auth.issuer), 'authorization server metadata', opts);
213
- metadata = validateMetadata(meta, document, opts);
214
- }
215
- return { domain: wellKnown.host, wellKnownUrl: wellKnown.toString(), document, metadata };
245
+ const { json, finalUrl } = await fetchJson(wellKnown, 'poppy.json', opts);
246
+ if (finalUrl.pathname !== WELL_KNOWN_POPPY_PATH || finalUrl.search !== '') {
247
+ fail('invalid_redirect', `poppy.json redirected to ${finalUrl}, not to the well-known path`);
248
+ }
249
+ const document = validatePoppyDocument(json, finalUrl.host, opts);
250
+ // `https://{organization.domain}`, lowercase, no trailing slash. The origin is that, in dev with
251
+ // its port and scheme too.
252
+ const domainUrl = finalUrl.origin;
253
+ const domain = finalUrl.host;
254
+ const base = {
255
+ domain,
256
+ wellKnownUrl: finalUrl.toString(),
257
+ document,
258
+ };
259
+ const prm = await fetchJson(protectedResourceMetadataUrl(domainUrl), 'protected resource metadata', {
260
+ ...opts,
261
+ notFoundIsNull: true,
262
+ });
263
+ const issuer = prm.json === null
264
+ ? undefined
265
+ : validateProtectedResourceMetadata(prm.json, document, domainUrl, opts);
266
+ if (issuer === undefined) {
267
+ if (document.auth?.issuer !== undefined) {
268
+ fail('issuer_mismatch', 'auth.issuer needs protected resource metadata that lists it');
269
+ }
270
+ return {
271
+ ...base,
272
+ identifier: domainUrl,
273
+ noIssuer: prm.json === null ? 'not_found' : 'metadata',
274
+ };
275
+ }
276
+ const { json: meta } = await fetchJson(authServerMetadataUrl(issuer), 'authorization server metadata', opts);
277
+ return {
278
+ ...base,
279
+ identifier: issuer,
280
+ metadata: validateMetadata(meta, issuer, domainUrl, opts),
281
+ };
216
282
  }
217
283
  //# sourceMappingURL=discovery.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"discovery.js","sourceRoot":"","sources":["../../../src/poppy-client/discovery.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"discovery.js","sourceRoot":"","sources":["../../../src/poppy-client/discovery.ts"],"names":[],"mappings":"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"}
@@ -2,7 +2,8 @@ import { type StoredKey } from './keys.js';
2
2
  /** `htu`: the request URL without query or fragment (RFC 9449 4.2). */
3
3
  export declare function htuOf(url: string | URL): string;
4
4
  /**
5
- * A DPoP key (RFC 9449). The agent keeps one per User per Company (4.3); it is never published.
5
+ * A DPoP key (RFC 9449) for this User at one Company; it is never published. Binding tokens is the
6
+ * Company's choice (4.5).
6
7
  */
7
8
  export declare class DpopKey {
8
9
  readonly stored: StoredKey;
@@ -1 +1 @@
1
- {"version":3,"file":"dpop.d.ts","sourceRoot":"","sources":["../../../src/poppy-client/dpop.ts"],"names":[],"mappings":"AACA,OAAO,EAAuD,KAAK,SAAS,EAAE,MAAM,WAAW,CAAC;AAGhG,uEAAuE;AACvE,wBAAgB,KAAK,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,GAAG,MAAM,CAK/C;AAED;;GAEG;AACH,qBAAa,OAAO;IACN,QAAQ,CAAC,MAAM,EAAE,SAAS;IAAtC,YAAqB,MAAM,EAAE,SAAS,EAAI;IAE1C,OAAa,QAAQ,IAAI,OAAO,CAAC,OAAO,CAAC,CAExC;IAED,gGAAgG;IAC1F,KAAK,CAAC,KAAK,EAAE;QACjB,GAAG,EAAE,MAAM,CAAC;QACZ,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;QAClB,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;QACjC,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;KAC5B,GAAG,OAAO,CAAC,MAAM,CAAC,CAgBlB;CACF"}
1
+ {"version":3,"file":"dpop.d.ts","sourceRoot":"","sources":["../../../src/poppy-client/dpop.ts"],"names":[],"mappings":"AACA,OAAO,EAAuD,KAAK,SAAS,EAAE,MAAM,WAAW,CAAC;AAGhG,uEAAuE;AACvE,wBAAgB,KAAK,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,GAAG,MAAM,CAK/C;AAED;;;GAGG;AACH,qBAAa,OAAO;IACN,QAAQ,CAAC,MAAM,EAAE,SAAS;IAAtC,YAAqB,MAAM,EAAE,SAAS,EAAI;IAE1C,OAAa,QAAQ,IAAI,OAAO,CAAC,OAAO,CAAC,CAExC;IAED,gGAAgG;IAC1F,KAAK,CAAC,KAAK,EAAE;QACjB,GAAG,EAAE,MAAM,CAAC;QACZ,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;QAClB,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;QACjC,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;KAC5B,GAAG,OAAO,CAAC,MAAM,CAAC,CAgBlB;CACF"}
@@ -9,7 +9,8 @@ export function htuOf(url) {
9
9
  return u.toString();
10
10
  }
11
11
  /**
12
- * A DPoP key (RFC 9449). The agent keeps one per User per Company (4.3); it is never published.
12
+ * A DPoP key (RFC 9449) for this User at one Company; it is never published. Binding tokens is the
13
+ * Company's choice (4.5).
13
14
  */
14
15
  export class DpopKey {
15
16
  stored;
@@ -1 +1 @@
1
- {"version":3,"file":"dpop.js","sourceRoot":"","sources":["../../../src/poppy-client/dpop.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAC/B,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,gBAAgB,EAAkB,MAAM,WAAW,CAAC;AAChG,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAE/D,uEAAuE;AACvE,MAAM,UAAU,KAAK,CAAC,GAAiB;IACrC,MAAM,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;IACvB,CAAC,CAAC,MAAM,GAAG,EAAE,CAAC;IACd,CAAC,CAAC,IAAI,GAAG,EAAE,CAAC;IACZ,OAAO,CAAC,CAAC,QAAQ,EAAE,CAAC;AACtB,CAAC;AAED;;GAEG;AACH,MAAM,OAAO,OAAO;IACG,MAAM;IAA3B,YAAqB,MAAiB;sBAAjB,MAAM;IAAc,CAAC;IAE1C,MAAM,CAAC,KAAK,CAAC,QAAQ;QACnB,OAAO,IAAI,OAAO,CAAC,MAAM,gBAAgB,EAAE,CAAC,CAAC;IAC/C,CAAC;IAED,gGAAgG;IAChG,KAAK,CAAC,KAAK,CAAC,KAKX;QACC,MAAM,OAAO,GAA4B;YACvC,GAAG,EAAE,QAAQ,EAAE;YACf,GAAG,EAAE,KAAK,CAAC,GAAG,CAAC,WAAW,EAAE;YAC5B,GAAG,EAAE,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC;YACrB,GAAG,EAAE,UAAU,EAAE;SAClB,CAAC;QACF,IAAI,KAAK,CAAC,WAAW;YAAE,OAAO,CAAC,GAAG,GAAG,YAAY,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;QACrE,IAAI,KAAK,CAAC,KAAK;YAAE,OAAO,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;QAC7C,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC;aACxB,kBAAkB,CAAC;YAClB,GAAG,EAAE,UAAU;YACf,GAAG,EAAE,OAAO;YACZ,GAAG,EAAE,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC;SAC5C,CAAC;aACD,IAAI,CAAC,MAAM,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;IAC/C,CAAC;CACF"}
1
+ {"version":3,"file":"dpop.js","sourceRoot":"","sources":["../../../src/poppy-client/dpop.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAC/B,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,gBAAgB,EAAkB,MAAM,WAAW,CAAC;AAChG,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAE/D,uEAAuE;AACvE,MAAM,UAAU,KAAK,CAAC,GAAiB;IACrC,MAAM,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;IACvB,CAAC,CAAC,MAAM,GAAG,EAAE,CAAC;IACd,CAAC,CAAC,IAAI,GAAG,EAAE,CAAC;IACZ,OAAO,CAAC,CAAC,QAAQ,EAAE,CAAC;AACtB,CAAC;AAED;;;GAGG;AACH,MAAM,OAAO,OAAO;IACG,MAAM;IAA3B,YAAqB,MAAiB;sBAAjB,MAAM;IAAc,CAAC;IAE1C,MAAM,CAAC,KAAK,CAAC,QAAQ;QACnB,OAAO,IAAI,OAAO,CAAC,MAAM,gBAAgB,EAAE,CAAC,CAAC;IAC/C,CAAC;IAED,gGAAgG;IAChG,KAAK,CAAC,KAAK,CAAC,KAKX;QACC,MAAM,OAAO,GAA4B;YACvC,GAAG,EAAE,QAAQ,EAAE;YACf,GAAG,EAAE,KAAK,CAAC,GAAG,CAAC,WAAW,EAAE;YAC5B,GAAG,EAAE,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC;YACrB,GAAG,EAAE,UAAU,EAAE;SAClB,CAAC;QACF,IAAI,KAAK,CAAC,WAAW;YAAE,OAAO,CAAC,GAAG,GAAG,YAAY,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;QACrE,IAAI,KAAK,CAAC,KAAK;YAAE,OAAO,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;QAC7C,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC;aACxB,kBAAkB,CAAC;YAClB,GAAG,EAAE,UAAU;YACf,GAAG,EAAE,OAAO;YACZ,GAAG,EAAE,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC;SAC5C,CAAC;aACD,IAAI,CAAC,MAAM,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;IAC/C,CAAC;CACF"}
@@ -14,7 +14,7 @@ export declare class PoppyError extends Error {
14
14
  export declare class DiscoveryError extends PoppyError {
15
15
  constructor(code: string, message: string);
16
16
  }
17
- /** OAuth error response from the token, device, or revocation endpoint (4.2). */
17
+ /** OAuth error response from the token, device, or revocation endpoint (4.7). */
18
18
  export declare class OAuthError extends PoppyError {
19
19
  readonly retryAfter?: number | undefined;
20
20
  constructor(code: string, opts?: {
@@ -25,8 +25,9 @@ export declare class OAuthError extends PoppyError {
25
25
  });
26
26
  }
27
27
  /**
28
- * A resource (API, conversation, mediated sign-in) rejected the token, via `WWW-Authenticate`
29
- * (section 6): `invalid_token`, `sign_in_required`, `insufficient_scope`, DPoP errors.
28
+ * A resource (API, conversation, MCP server) refused the access token, or wants one, through
29
+ * `WWW-Authenticate` (section 7): `invalid_token`, `insufficient_scope`, DPoP errors. A challenge
30
+ * without an error code is reported as `insufficient_scope`, as the spec says to handle it.
30
31
  */
31
32
  export declare class ResourceAuthError extends PoppyError {
32
33
  /** Scopes the Company says are needed, for `insufficient_scope`. */
@@ -37,7 +38,7 @@ export declare class ResourceAuthError extends PoppyError {
37
38
  scope?: string | undefined;
38
39
  });
39
40
  }
40
- /** A conversation error with a JSON `error` body (7.13). */
41
+ /** A request refused with a JSON `error` body (5.3, 8.13), such as `invalid_session`. */
41
42
  export declare class ConversationError extends PoppyError {
42
43
  /** For `direct_conversation_open`: the open Direct Conversation. */
43
44
  readonly conversationId?: string | undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../../src/poppy-client/errors.ts"],"names":[],"mappings":"AAAA,gFAAgF;AAChF,qBAAa,UAAW,SAAQ,KAAK;IACnC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACrC,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1C,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CAAC;IAEvD,YACE,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,EAC5B,IAAI,GAAE;QACJ,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;QAC5B,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;QACjC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CAAC;KAC1C,EAQP;CACF;AAED,0EAA0E;AAC1E,qBAAa,cAAe,SAAQ,UAAU;IAC5C,YAAY,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAGxC;CACF;AAED,iFAAiF;AACjF,qBAAa,UAAW,SAAQ,UAAU;IACxC,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACzC,YACE,IAAI,EAAE,MAAM,EACZ,IAAI,GAAE;QACJ,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;QAC5B,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;QACjC,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;QAChC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CAAC;KAC1C,EAKP;CACF;AAED;;;GAGG;AACH,qBAAa,iBAAkB,SAAQ,UAAU;IAC/C,oEAAoE;IACpE,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACpC,YACE,IAAI,EAAE,MAAM,EACZ,IAAI,GAAE;QACJ,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;QAC5B,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;QACjC,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;KACvB,EAKP;CACF;AAED,4DAA4D;AAC5D,qBAAa,iBAAkB,SAAQ,UAAU;IAC/C,oEAAoE;IACpE,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7C,YACE,IAAI,EAAE,MAAM,EACZ,IAAI,GAAE;QACJ,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;QAC5B,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;QACjC,cAAc,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;KAChC,EAKP;CACF"}
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../../src/poppy-client/errors.ts"],"names":[],"mappings":"AAAA,gFAAgF;AAChF,qBAAa,UAAW,SAAQ,KAAK;IACnC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACrC,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1C,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CAAC;IAEvD,YACE,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,EAC5B,IAAI,GAAE;QACJ,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;QAC5B,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;QACjC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CAAC;KAC1C,EAQP;CACF;AAED,0EAA0E;AAC1E,qBAAa,cAAe,SAAQ,UAAU;IAC5C,YAAY,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAGxC;CACF;AAED,iFAAiF;AACjF,qBAAa,UAAW,SAAQ,UAAU;IACxC,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACzC,YACE,IAAI,EAAE,MAAM,EACZ,IAAI,GAAE;QACJ,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;QAC5B,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;QACjC,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;QAChC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CAAC;KAC1C,EAKP;CACF;AAED;;;;GAIG;AACH,qBAAa,iBAAkB,SAAQ,UAAU;IAC/C,oEAAoE;IACpE,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACpC,YACE,IAAI,EAAE,MAAM,EACZ,IAAI,GAAE;QACJ,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;QAC5B,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;QACjC,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;KACvB,EAKP;CACF;AAED,yFAAyF;AACzF,qBAAa,iBAAkB,SAAQ,UAAU;IAC/C,oEAAoE;IACpE,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7C,YACE,IAAI,EAAE,MAAM,EACZ,IAAI,GAAE;QACJ,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;QAC5B,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;QACjC,cAAc,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;KAChC,EAKP;CACF"}
@@ -20,7 +20,7 @@ export class DiscoveryError extends PoppyError {
20
20
  this.name = 'DiscoveryError';
21
21
  }
22
22
  }
23
- /** OAuth error response from the token, device, or revocation endpoint (4.2). */
23
+ /** OAuth error response from the token, device, or revocation endpoint (4.7). */
24
24
  export class OAuthError extends PoppyError {
25
25
  retryAfter;
26
26
  constructor(code, opts = {}) {
@@ -30,8 +30,9 @@ export class OAuthError extends PoppyError {
30
30
  }
31
31
  }
32
32
  /**
33
- * A resource (API, conversation, mediated sign-in) rejected the token, via `WWW-Authenticate`
34
- * (section 6): `invalid_token`, `sign_in_required`, `insufficient_scope`, DPoP errors.
33
+ * A resource (API, conversation, MCP server) refused the access token, or wants one, through
34
+ * `WWW-Authenticate` (section 7): `invalid_token`, `insufficient_scope`, DPoP errors. A challenge
35
+ * without an error code is reported as `insufficient_scope`, as the spec says to handle it.
35
36
  */
36
37
  export class ResourceAuthError extends PoppyError {
37
38
  /** Scopes the Company says are needed, for `insufficient_scope`. */
@@ -42,7 +43,7 @@ export class ResourceAuthError extends PoppyError {
42
43
  this.scope = opts.scope;
43
44
  }
44
45
  }
45
- /** A conversation error with a JSON `error` body (7.13). */
46
+ /** A request refused with a JSON `error` body (5.3, 8.13), such as `invalid_session`. */
46
47
  export class ConversationError extends PoppyError {
47
48
  /** For `direct_conversation_open`: the open Direct Conversation. */
48
49
  conversationId;
@@ -1 +1 @@
1
- {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../../src/poppy-client/errors.ts"],"names":[],"mappings":"AAAA,gFAAgF;AAChF,MAAM,OAAO,UAAW,SAAQ,KAAK;IAC1B,IAAI,CAAS;IACb,MAAM,CAAsB;IAC5B,WAAW,CAAsB;IACjC,OAAO,CAAuC;IAEvD,YACE,IAAY,EACZ,OAA4B,EAC5B,IAAI,GAIA,EAAE;QAEN,KAAK,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG,IAAI,KAAK,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;QAC7E,IAAI,CAAC,IAAI,GAAG,YAAY,CAAC;QACzB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAC1B,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;QACpC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;IAC9B,CAAC;CACF;AAED,0EAA0E;AAC1E,MAAM,OAAO,cAAe,SAAQ,UAAU;IAC5C,YAAY,IAAY,EAAE,OAAe;QACvC,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QACrB,IAAI,CAAC,IAAI,GAAG,gBAAgB,CAAC;IAC/B,CAAC;CACF;AAED,iFAAiF;AACjF,MAAM,OAAO,UAAW,SAAQ,UAAU;IAC/B,UAAU,CAAsB;IACzC,YACE,IAAY,EACZ,IAAI,GAKA,EAAE;QAEN,KAAK,CAAC,IAAI,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC;QAC7B,IAAI,CAAC,IAAI,GAAG,YAAY,CAAC;QACzB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;IACpC,CAAC;CACF;AAED;;;GAGG;AACH,MAAM,OAAO,iBAAkB,SAAQ,UAAU;IAC/C,oEAAoE;IAC3D,KAAK,CAAsB;IACpC,YACE,IAAY,EACZ,IAAI,GAIA,EAAE;QAEN,KAAK,CAAC,IAAI,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC;QAC7B,IAAI,CAAC,IAAI,GAAG,mBAAmB,CAAC;QAChC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;IAC1B,CAAC;CACF;AAED,4DAA4D;AAC5D,MAAM,OAAO,iBAAkB,SAAQ,UAAU;IAC/C,oEAAoE;IAC3D,cAAc,CAAsB;IAC7C,YACE,IAAY,EACZ,IAAI,GAIA,EAAE;QAEN,KAAK,CAAC,IAAI,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC;QAC7B,IAAI,CAAC,IAAI,GAAG,mBAAmB,CAAC;QAChC,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC;IAC5C,CAAC;CACF"}
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../../src/poppy-client/errors.ts"],"names":[],"mappings":"AAAA,gFAAgF;AAChF,MAAM,OAAO,UAAW,SAAQ,KAAK;IAC1B,IAAI,CAAS;IACb,MAAM,CAAsB;IAC5B,WAAW,CAAsB;IACjC,OAAO,CAAuC;IAEvD,YACE,IAAY,EACZ,OAA4B,EAC5B,IAAI,GAIA,EAAE;QAEN,KAAK,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG,IAAI,KAAK,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;QAC7E,IAAI,CAAC,IAAI,GAAG,YAAY,CAAC;QACzB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAC1B,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;QACpC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;IAC9B,CAAC;CACF;AAED,0EAA0E;AAC1E,MAAM,OAAO,cAAe,SAAQ,UAAU;IAC5C,YAAY,IAAY,EAAE,OAAe;QACvC,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QACrB,IAAI,CAAC,IAAI,GAAG,gBAAgB,CAAC;IAC/B,CAAC;CACF;AAED,iFAAiF;AACjF,MAAM,OAAO,UAAW,SAAQ,UAAU;IAC/B,UAAU,CAAsB;IACzC,YACE,IAAY,EACZ,IAAI,GAKA,EAAE;QAEN,KAAK,CAAC,IAAI,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC;QAC7B,IAAI,CAAC,IAAI,GAAG,YAAY,CAAC;QACzB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;IACpC,CAAC;CACF;AAED;;;;GAIG;AACH,MAAM,OAAO,iBAAkB,SAAQ,UAAU;IAC/C,oEAAoE;IAC3D,KAAK,CAAsB;IACpC,YACE,IAAY,EACZ,IAAI,GAIA,EAAE;QAEN,KAAK,CAAC,IAAI,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC;QAC7B,IAAI,CAAC,IAAI,GAAG,mBAAmB,CAAC;QAChC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;IAC1B,CAAC;CACF;AAED,yFAAyF;AACzF,MAAM,OAAO,iBAAkB,SAAQ,UAAU;IAC/C,oEAAoE;IAC3D,cAAc,CAAsB;IAC7C,YACE,IAAY,EACZ,IAAI,GAIA,EAAE;QAEN,KAAK,CAAC,IAAI,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC;QAC7B,IAAI,CAAC,IAAI,GAAG,mBAAmB,CAAC;QAChC,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC;IAC5C,CAAC;CACF"}
@@ -16,16 +16,18 @@ export interface PoppyRequestInit {
16
16
  body?: (string | (() => Promise<string>)) | undefined;
17
17
  /** Signs a DPoP proof for every attempt when set. */
18
18
  dpop?: DpopKey | undefined;
19
- /** Sent as `Authorization: {scheme} {token}`. Never put in the URL (4.3). */
19
+ /** Sent as `Authorization: {scheme} {token}`. Never put in the URL (5.6). */
20
20
  accessToken?: string | undefined;
21
21
  scheme?: 'DPoP' | 'Bearer' | undefined;
22
+ /** Signs the `Poppy-Session` JWT for every attempt, since each is good for one request (5.2). */
23
+ session?: (() => Promise<string>) | undefined;
22
24
  signal?: AbortSignal | undefined;
23
25
  redirect?: 'follow' | 'manual' | 'error' | undefined;
24
26
  }
25
27
  /**
26
28
  * The one place requests leave this client. It signs DPoP proofs, remembers `DPoP-Nonce`
27
29
  * values per origin and retries once on `use_dpop_nonce` (RFC 9449 section 8/9), and waits
28
- * out a 429 `Retry-After` once (4.3, "Rate limits").
30
+ * out a 429 `Retry-After` once (5.6). Secrets never follow a redirect (3).
29
31
  */
30
32
  export declare class PoppyHttp {
31
33
  readonly fetch: FetchLike;
@@ -1 +1 @@
1
- {"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../../../src/poppy-client/http.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEzC,OAAO,EAAE,KAAK,SAAS,EAAwC,MAAM,WAAW,CAAC;AAEjF,MAAM,WAAW,WAAW;IAC1B,KAAK,CAAC,EAAE,SAAS,GAAG,SAAS,CAAC;IAC9B,kFAAkF;IAClF,oBAAoB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1C,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC,GAAG,SAAS,CAAC;CAC5C;AAED,MAAM,WAAW,gBAAgB;IAC/B,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,CAAC;IAC7C;;;OAGG;IACH,IAAI,CAAC,EAAE,CAAC,MAAM,GAAG,CAAC,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC;IACtD,qDAAqD;IACrD,IAAI,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAC3B,6EAA6E;IAC7E,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACjC,MAAM,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,SAAS,CAAC;IACvC,MAAM,CAAC,EAAE,WAAW,GAAG,SAAS,CAAC;IACjC,QAAQ,CAAC,EAAE,QAAQ,GAAG,QAAQ,GAAG,OAAO,GAAG,SAAS,CAAC;CACtD;AAED;;;;GAIG;AACH,qBAAa,SAAS;IACpB,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAC;IAC1B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA6B;IACpD,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAS;IACvC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAuC;IAE5D,YAAY,IAAI,GAAE,WAAgB,EAIjC;IAEK,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,GAAE,gBAAqB,GAAG,OAAO,CAAC,QAAQ,CAAC,CAsDzE;CACF;AAaD,kDAAkD;AAClD,wBAAsB,QAAQ,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,GAAG,EAAE,QAAQ,GAAG,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC,CAQjG"}
1
+ {"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../../../src/poppy-client/http.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAGzC,OAAO,EAAE,KAAK,SAAS,EAAwC,MAAM,WAAW,CAAC;AAEjF,MAAM,WAAW,WAAW;IAC1B,KAAK,CAAC,EAAE,SAAS,GAAG,SAAS,CAAC;IAC9B,kFAAkF;IAClF,oBAAoB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1C,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC,GAAG,SAAS,CAAC;CAC5C;AAED,MAAM,WAAW,gBAAgB;IAC/B,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,CAAC;IAC7C;;;OAGG;IACH,IAAI,CAAC,EAAE,CAAC,MAAM,GAAG,CAAC,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC;IACtD,qDAAqD;IACrD,IAAI,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAC3B,6EAA6E;IAC7E,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACjC,MAAM,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,SAAS,CAAC;IACvC,iGAAiG;IACjG,OAAO,CAAC,EAAE,CAAC,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,SAAS,CAAC;IAC9C,MAAM,CAAC,EAAE,WAAW,GAAG,SAAS,CAAC;IACjC,QAAQ,CAAC,EAAE,QAAQ,GAAG,QAAQ,GAAG,OAAO,GAAG,SAAS,CAAC;CACtD;AAED;;;;GAIG;AACH,qBAAa,SAAS;IACpB,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAC;IAC1B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA6B;IACpD,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAS;IACvC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAuC;IAE5D,YAAY,IAAI,GAAE,WAAgB,EAIjC;IAEK,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,GAAE,gBAAqB,GAAG,OAAO,CAAC,QAAQ,CAAC,CAyDzE;CACF;AAaD,kDAAkD;AAClD,wBAAsB,QAAQ,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,GAAG,EAAE,QAAQ,GAAG,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC,CAQjG"}
@@ -1,9 +1,10 @@
1
1
  import { PoppyError } from './errors.js';
2
+ import { safeFetch } from './safe_fetch.js';
2
3
  import { parseRetryAfter, sleep, wwwAuthError } from './util.js';
3
4
  /**
4
5
  * The one place requests leave this client. It signs DPoP proofs, remembers `DPoP-Nonce`
5
6
  * values per origin and retries once on `use_dpop_nonce` (RFC 9449 section 8/9), and waits
6
- * out a 429 `Retry-After` once (4.3, "Rate limits").
7
+ * out a 429 `Retry-After` once (5.6). Secrets never follow a redirect (3).
7
8
  */
8
9
  export class PoppyHttp {
9
10
  fetch;
@@ -11,7 +12,7 @@ export class PoppyHttp {
11
12
  maxRetryAfter;
12
13
  log;
13
14
  constructor(opts = {}) {
14
- this.fetch = opts.fetch ?? ((input, init) => globalThis.fetch(input, init));
15
+ this.fetch = opts.fetch ?? safeFetch;
15
16
  this.maxRetryAfter = opts.maxRetryAfterSeconds ?? 30;
16
17
  this.log = opts.log;
17
18
  }
@@ -25,7 +26,10 @@ export class PoppyHttp {
25
26
  const scheme = init.scheme ?? (init.dpop ? 'DPoP' : 'Bearer');
26
27
  if (init.accessToken)
27
28
  headers.set('authorization', `${scheme} ${init.accessToken}`);
28
- if (init.dpop) {
29
+ if (init.session)
30
+ headers.set('poppy-session', await init.session());
31
+ const proved = init.dpop && (scheme === 'DPoP' || !init.accessToken);
32
+ if (proved) {
29
33
  headers.set('dpop', await init.dpop.proof({
30
34
  htm: method,
31
35
  htu: url,
@@ -39,8 +43,8 @@ export class PoppyHttp {
39
43
  headers,
40
44
  ...(body !== undefined ? { body } : {}),
41
45
  ...(init.signal !== undefined ? { signal: init.signal } : {}),
42
- // A redirect would change `htu`, so DPoP requests never follow one silently.
43
- redirect: init.redirect ?? (init.dpop ? 'manual' : 'follow'),
46
+ // A redirect would change `htu`, and it never carries the protocol's secrets (3).
47
+ redirect: init.redirect ?? (init.dpop || init.session || init.accessToken ? 'manual' : 'follow'),
44
48
  });
45
49
  const nonce = res.headers.get('dpop-nonce');
46
50
  if (nonce)
@@ -1 +1 @@
1
- {"version":3,"file":"http.js","sourceRoot":"","sources":["../../../src/poppy-client/http.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"http.js","sourceRoot":"","sources":["../../../src/poppy-client/http.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,4 @@
1
+ import { type JWK } from 'jose';
1
2
  import { type StoredKey } from './keys.js';
2
3
  import type { ClientMetadata } from './types.js';
3
4
  import { type SecurityOptions } from './util.js';
@@ -14,11 +15,14 @@ export interface IdentityConfig {
14
15
  version: string;
15
16
  }> | undefined;
16
17
  }
17
- /** Lifetime of every assertion this agent signs. The browser assertion caps at 60s (section 5). */
18
+ /** Lifetime of a client assertion (the guides suggest at most five minutes). */
18
19
  export declare const ASSERTION_TTL_SECONDS = 60;
20
+ export declare const DELEGATION_TYP = "pap-delegation+jwt";
21
+ /** How long a delegation lasts, within the 24 hours 5.2 allows. */
22
+ export declare const DELEGATION_TTL_SECONDS: number;
19
23
  /**
20
24
  * The Personal Agent's identity (4.1): its `client_id` URL, its metadata document, and the
21
- * keys from `jwks_uri` that sign client assertions, Session assertions and browser assertions.
25
+ * keys from `jwks_uri` that sign client assertions and the delegations of Session JWT keys.
22
26
  */
23
27
  export declare class AgentIdentity {
24
28
  readonly baseUrl: string;
@@ -41,21 +45,17 @@ export declare class AgentIdentity {
41
45
  };
42
46
  private sign;
43
47
  /**
44
- * `private_key_jwt` client assertion (RFC 7523 section 2.2): `iss` = `sub` = `client_id`,
45
- * `aud` = the authorization server (its token endpoint by default), fresh `jti`.
48
+ * `private_key_jwt` client assertion (4.1, RFC 7523): `iss` = `sub` = `client_id`, `aud` = the
49
+ * Company's issuer as a single string, short-lived, with `iat` and a fresh `jti`.
46
50
  */
47
- clientAssertion(audience: string): Promise<string>;
51
+ clientAssertion(issuer: string): Promise<string>;
48
52
  /**
49
- * The JWT bearer grant assertion that starts or renews a Session (4.2): names the agent in
50
- * `iss` and the User ID in `sub`; `aud` is the token endpoint as a single string.
53
+ * A delegation (5.2): vouches for one delegated public key. It names no User or Company. Its
54
+ * times are rounded to the hour, as the guides suggest, so they say less about when it was made.
51
55
  */
52
- sessionAssertion(userId: string, tokenEndpoint: string): Promise<string>;
53
- /** Browser assertion (section 5), header `typ: poppy-browser+jwt`, `exp` <= `iat` + 60. */
54
- browserAssertion(input: {
55
- userId: string;
56
- endpoint: string;
57
- sessionId: string;
58
- returnTo: string;
59
- }): Promise<string>;
56
+ delegate(publicJwk: JWK): Promise<{
57
+ jwt: string;
58
+ exp: number;
59
+ }>;
60
60
  }
61
61
  //# sourceMappingURL=identity.d.ts.map