@aauth/proxy
Advanced tools
| export type KnownAccessMode = 'agent-token' | 'person-token' | 'session-token' | 'auth-token' | 'per-call'; | ||
| export declare const KNOWN_ACCESS_MODES: readonly KnownAccessMode[]; | ||
| export declare function isKnownAccessMode(v: string | undefined): v is KnownAccessMode; | ||
| export interface AgentSetup { | ||
| /** false when the agent token carries no `ps` claim. */ | ||
| hasPersonServer: boolean; | ||
| } | ||
| export type AccessModePlan = { | ||
| kind: 'undeclared'; | ||
| } | { | ||
| kind: 'satisfiable'; | ||
| mode: KnownAccessMode; | ||
| } | { | ||
| kind: 'unsatisfiable'; | ||
| mode: KnownAccessMode; | ||
| reason: string; | ||
| }; | ||
| export declare function planAccessMode(declared: string | undefined, setup: AgentSetup): AccessModePlan; | ||
| /** One-line reason string for a plan, for surfacing to the LLM. */ | ||
| export declare function planReason(plan: AccessModePlan): string | undefined; | ||
| //# sourceMappingURL=access-mode.d.ts.map |
| {"version":3,"file":"access-mode.d.ts","sourceRoot":"","sources":["../src/access-mode.ts"],"names":[],"mappings":"AAuBA,MAAM,MAAM,eAAe,GACvB,aAAa,GACb,cAAc,GACd,eAAe,GACf,YAAY,GACZ,UAAU,CAAA;AAEd,eAAO,MAAM,kBAAkB,EAAE,SAAS,eAAe,EAMxD,CAAA;AAED,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,MAAM,GAAG,SAAS,GAAG,CAAC,IAAI,eAAe,CAE7E;AAED,MAAM,WAAW,UAAU;IACzB,wDAAwD;IACxD,eAAe,EAAE,OAAO,CAAA;CACzB;AAED,MAAM,MAAM,cAAc,GACtB;IAAE,IAAI,EAAE,YAAY,CAAA;CAAE,GACtB;IAAE,IAAI,EAAE,aAAa,CAAC;IAAC,IAAI,EAAE,eAAe,CAAA;CAAE,GAC9C;IAAE,IAAI,EAAE,eAAe,CAAC;IAAC,IAAI,EAAE,eAAe,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAA;AAKpE,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,EAAE,KAAK,EAAE,UAAU,GAAG,cAAc,CA2B9F;AAED,mEAAmE;AACnE,wBAAgB,UAAU,CAAC,IAAI,EAAE,cAAc,GAAG,MAAM,GAAG,SAAS,CAEnE"} |
| // access_mode planning. | ||
| // | ||
| // `access_mode` is an IANA registry (protocol §Resource Metadata, §AAuth Access | ||
| // Mode Value Registry), not a closed list: -11 defines four values, R3 -02 adds | ||
| // `per-call`, and extensions may add more. Three outcomes, and only three: | ||
| // | ||
| // undeclared — absent, or a value this agent does not recognize. Call the | ||
| // resource and read the AAuth-Requirement it returns. NEVER an | ||
| // error: the declaration is advisory, the runtime requirement | ||
| // is authoritative. | ||
| // satisfiable — recognized, and this agent's setup can complete it. Plan | ||
| // against it and skip the speculative call. | ||
| // unsatisfiable — recognized, and this agent cannot complete it. Skip the | ||
| // resource (or operation) and say why. An agent whose agent | ||
| // token carries no `ps` claim cannot obtain a person token, | ||
| // and so cannot complete person-token, auth-token or per-call | ||
| // access — it should learn that here, not at a 401. | ||
| // | ||
| // Mirrors the `@aauth/protocol` surface named in the AAuth -11 package contract | ||
| // (planAccessMode / AgentSetup / AccessModePlan / KnownAccessMode). Kept local | ||
| // while @aauth/protocol is unpublished; swap the implementation for an import | ||
| // when it ships — the types are identical by construction. | ||
| export const KNOWN_ACCESS_MODES = [ | ||
| 'agent-token', | ||
| 'person-token', | ||
| 'session-token', | ||
| 'auth-token', | ||
| 'per-call', | ||
| ]; | ||
| export function isKnownAccessMode(v) { | ||
| return v !== undefined && KNOWN_ACCESS_MODES.includes(v); | ||
| } | ||
| const NO_PS = 'this agent token carries no `ps` claim, so the agent has no person server to obtain a person token from'; | ||
| export function planAccessMode(declared, setup) { | ||
| if (!isKnownAccessMode(declared)) | ||
| return { kind: 'undeclared' }; | ||
| switch (declared) { | ||
| // Identity only: every request already carries an agent token. | ||
| case 'agent-token': | ||
| return { kind: 'satisfiable', mode: declared }; | ||
| // Resource-managed: the resource runs its own consent flow and hands back a | ||
| // session token via AAuth-Access. No PS involved. | ||
| case 'session-token': | ||
| return { kind: 'satisfiable', mode: declared }; | ||
| // All three need a person token, which only a person server issues. A | ||
| // resource MUST have verified a person token before it issues a resource | ||
| // token, so auth-token and per-call are unreachable without one too. | ||
| case 'person-token': | ||
| case 'auth-token': | ||
| case 'per-call': | ||
| return setup.hasPersonServer | ||
| ? { kind: 'satisfiable', mode: declared } | ||
| : { | ||
| kind: 'unsatisfiable', | ||
| mode: declared, | ||
| reason: `access_mode "${declared}" requires a person token, and ${NO_PS}`, | ||
| }; | ||
| } | ||
| } | ||
| /** One-line reason string for a plan, for surfacing to the LLM. */ | ||
| export function planReason(plan) { | ||
| return plan.kind === 'unsatisfiable' ? plan.reason : undefined; | ||
| } | ||
| //# sourceMappingURL=access-mode.js.map |
| {"version":3,"file":"access-mode.js","sourceRoot":"","sources":["../src/access-mode.ts"],"names":[],"mappings":"AAAA,wBAAwB;AACxB,EAAE;AACF,gFAAgF;AAChF,gFAAgF;AAChF,2EAA2E;AAC3E,EAAE;AACF,+EAA+E;AAC/E,iFAAiF;AACjF,gFAAgF;AAChF,sCAAsC;AACtC,6EAA6E;AAC7E,8DAA8D;AAC9D,4EAA4E;AAC5E,8EAA8E;AAC9E,8EAA8E;AAC9E,gFAAgF;AAChF,sEAAsE;AACtE,EAAE;AACF,gFAAgF;AAChF,+EAA+E;AAC/E,8EAA8E;AAC9E,2DAA2D;AAS3D,MAAM,CAAC,MAAM,kBAAkB,GAA+B;IAC5D,aAAa;IACb,cAAc;IACd,eAAe;IACf,YAAY;IACZ,UAAU;CACX,CAAA;AAED,MAAM,UAAU,iBAAiB,CAAC,CAAqB;IACrD,OAAO,CAAC,KAAK,SAAS,IAAK,kBAAwC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAA;AACjF,CAAC;AAYD,MAAM,KAAK,GACT,yGAAyG,CAAA;AAE3G,MAAM,UAAU,cAAc,CAAC,QAA4B,EAAE,KAAiB;IAC5E,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC;QAAE,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,CAAA;IAE/D,QAAQ,QAAQ,EAAE,CAAC;QACjB,+DAA+D;QAC/D,KAAK,aAAa;YAChB,OAAO,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAA;QAEhD,4EAA4E;QAC5E,kDAAkD;QAClD,KAAK,eAAe;YAClB,OAAO,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAA;QAEhD,sEAAsE;QACtE,yEAAyE;QACzE,qEAAqE;QACrE,KAAK,cAAc,CAAC;QACpB,KAAK,YAAY,CAAC;QAClB,KAAK,UAAU;YACb,OAAO,KAAK,CAAC,eAAe;gBAC1B,CAAC,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,QAAQ,EAAE;gBACzC,CAAC,CAAC;oBACE,IAAI,EAAE,eAAe;oBACrB,IAAI,EAAE,QAAQ;oBACd,MAAM,EAAE,gBAAgB,QAAQ,kCAAkC,KAAK,EAAE;iBAC1E,CAAA;IACT,CAAC;AACH,CAAC;AAED,mEAAmE;AACnE,MAAM,UAAU,UAAU,CAAC,IAAoB;IAC7C,OAAO,IAAI,CAAC,IAAI,KAAK,eAAe,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAA;AAChE,CAAC"} |
| export declare function decodeJwtHeader(jwt: string): Record<string, unknown>; | ||
| export declare function decodeJwtPayload(jwt: string): Record<string, unknown>; | ||
| /** The `ps` claim on an agent token. Absent → the agent has no person server and | ||
| * cannot obtain a person token, and so cannot complete `person-token`, | ||
| * `auth-token` or `per-call` access. Malformed tokens read as no PS. */ | ||
| export declare function agentTokenPs(agentToken: string): string | undefined; | ||
| /** Seconds-since-epoch `exp`, or undefined when absent/unparseable. */ | ||
| export declare function jwtExp(jwt: string): number | undefined; | ||
| interface ThumbprintableJwk { | ||
| kty?: string; | ||
| crv?: string; | ||
| x?: string; | ||
| y?: string; | ||
| n?: string; | ||
| e?: string; | ||
| } | ||
| /** | ||
| * RFC 7638 JWK thumbprint (SHA-256, base64url). Used as the cache key discriminator | ||
| * for person tokens: every person token binds the agent's key through `cnf`, so a | ||
| * change in this value invalidates all of them at once (protocol §Person Token | ||
| * Endpoint). | ||
| */ | ||
| export declare function jwkThumbprint(jwk: ThumbprintableJwk): Promise<string>; | ||
| export {}; | ||
| //# sourceMappingURL=jwt.d.ts.map |
| {"version":3,"file":"jwt.d.ts","sourceRoot":"","sources":["../src/jwt.ts"],"names":[],"mappings":"AAUA,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAEpE;AAED,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAErE;AAWD;;yEAEyE;AACzE,wBAAgB,YAAY,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAOnE;AAED,uEAAuE;AACvE,wBAAgB,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAOtD;AAED,UAAU,iBAAiB;IACzB,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,CAAC,CAAC,EAAE,MAAM,CAAA;IACV,CAAC,CAAC,EAAE,MAAM,CAAA;IACV,CAAC,CAAC,EAAE,MAAM,CAAA;IACV,CAAC,CAAC,EAAE,MAAM,CAAA;CACX;AAQD;;;;;GAKG;AACH,wBAAsB,aAAa,CAAC,GAAG,EAAE,iBAAiB,GAAG,OAAO,CAAC,MAAM,CAAC,CAiB3E"} |
+77
| // Unverified JWT decoding + RFC 7638 JWK thumbprints. | ||
| // | ||
| // Decoding only — nothing here verifies a signature. The agent proxy reads its | ||
| // own agent token to learn whether it has a `ps` claim (which decides whether | ||
| // the person-token / auth-token flows are reachable at all) and reads `exp` off | ||
| // tokens it holds. Verification is the recipient's job. | ||
| // | ||
| // Platform-neutral: base64url by hand and WebCrypto for SHA-256, so the core | ||
| // stays workerd-safe (no node:crypto, no Buffer). | ||
| export function decodeJwtHeader(jwt) { | ||
| return decodeSegment(jwt, 0); | ||
| } | ||
| export function decodeJwtPayload(jwt) { | ||
| return decodeSegment(jwt, 1); | ||
| } | ||
| function decodeSegment(jwt, index) { | ||
| const seg = jwt.split('.')[index]; | ||
| if (!seg) | ||
| throw new Error('malformed JWT'); | ||
| const b64 = seg.replace(/-/g, '+').replace(/_/g, '/'); | ||
| const padded = b64 + '='.repeat((4 - (b64.length % 4)) % 4); | ||
| const bytes = Uint8Array.from(atob(padded), (c) => c.charCodeAt(0)); | ||
| return JSON.parse(new TextDecoder().decode(bytes)); | ||
| } | ||
| /** The `ps` claim on an agent token. Absent → the agent has no person server and | ||
| * cannot obtain a person token, and so cannot complete `person-token`, | ||
| * `auth-token` or `per-call` access. Malformed tokens read as no PS. */ | ||
| export function agentTokenPs(agentToken) { | ||
| try { | ||
| const ps = decodeJwtPayload(agentToken).ps; | ||
| return typeof ps === 'string' && ps ? ps : undefined; | ||
| } | ||
| catch { | ||
| return undefined; | ||
| } | ||
| } | ||
| /** Seconds-since-epoch `exp`, or undefined when absent/unparseable. */ | ||
| export function jwtExp(jwt) { | ||
| try { | ||
| const exp = decodeJwtPayload(jwt).exp; | ||
| return typeof exp === 'number' ? exp : undefined; | ||
| } | ||
| catch { | ||
| return undefined; | ||
| } | ||
| } | ||
| function base64url(bytes) { | ||
| let s = ''; | ||
| for (const b of new Uint8Array(bytes)) | ||
| s += String.fromCharCode(b); | ||
| return btoa(s).replace(/\+/g, '-').replace(/\//g, '_').replace(/=+$/, ''); | ||
| } | ||
| /** | ||
| * RFC 7638 JWK thumbprint (SHA-256, base64url). Used as the cache key discriminator | ||
| * for person tokens: every person token binds the agent's key through `cnf`, so a | ||
| * change in this value invalidates all of them at once (protocol §Person Token | ||
| * Endpoint). | ||
| */ | ||
| export async function jwkThumbprint(jwk) { | ||
| let canonical; | ||
| switch (jwk.kty) { | ||
| case 'OKP': | ||
| canonical = JSON.stringify({ crv: jwk.crv, kty: jwk.kty, x: jwk.x }); | ||
| break; | ||
| case 'EC': | ||
| canonical = JSON.stringify({ crv: jwk.crv, kty: jwk.kty, x: jwk.x, y: jwk.y }); | ||
| break; | ||
| case 'RSA': | ||
| canonical = JSON.stringify({ e: jwk.e, kty: jwk.kty, n: jwk.n }); | ||
| break; | ||
| default: | ||
| throw new Error(`jwkThumbprint: unsupported kty ${jwk.kty}`); | ||
| } | ||
| const digest = await crypto.subtle.digest('SHA-256', new TextEncoder().encode(canonical)); | ||
| return base64url(digest); | ||
| } | ||
| //# sourceMappingURL=jwt.js.map |
| {"version":3,"file":"jwt.js","sourceRoot":"","sources":["../src/jwt.ts"],"names":[],"mappings":"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"} |
| export declare const OPENAPI_ACCESS_MODE_KEY = "x-aauth-access-mode"; | ||
| export declare const OPENAPI_BUDGET_KEY = "x-aauth-budget"; | ||
| export declare const MCP_ACCESS_MODE_KEY = "aauth.dev/access-mode"; | ||
| export declare const MCP_BUDGET_KEY = "aauth.dev/budget"; | ||
| export interface OperationAnnotations { | ||
| /** The operation's own access mode, when it carries one. Never `session-token`: | ||
| * R3 forbids that value in an annotation, and a value we see anyway is dropped. */ | ||
| access_mode?: string; | ||
| /** true when invoking this operation draws down a budget. */ | ||
| budget?: boolean; | ||
| } | ||
| /** Read the two annotations off an OpenAPI (or AsyncAPI) Operation Object. */ | ||
| export declare function readOpenApiAnnotations(op: Record<string, unknown> | undefined): OperationAnnotations; | ||
| /** Read the two annotations off an MCP Tool's `_meta`. */ | ||
| export declare function readMcpToolAnnotations(tool: { | ||
| _meta?: Record<string, unknown>; | ||
| } | undefined): OperationAnnotations; | ||
| /** | ||
| * The access mode that actually applies to one operation. | ||
| * | ||
| * - An annotation replaces the resource-wide default outright (never intersects). | ||
| * - `budget: true` implies at least `auth-token`, because a budget is carried in | ||
| * the auth token's `budget` claim. Where the access mode annotation is absent, | ||
| * `budget: true` implies `auth-token` rather than the resource default; a | ||
| * resource MUST NOT pair `budget: true` with `agent-token` or `person-token`, | ||
| * and an agent that sees that combination anyway MUST treat it as `auth-token`. | ||
| * - Absent everything, the protocol default is `agent-token`. | ||
| */ | ||
| export declare function effectiveAccessMode(annotations: OperationAnnotations | undefined, resourceWide: string | undefined): string; | ||
| //# sourceMappingURL=annotations.d.ts.map |
| {"version":3,"file":"annotations.d.ts","sourceRoot":"","sources":["../../src/vocab/annotations.ts"],"names":[],"mappings":"AAwBA,eAAO,MAAM,uBAAuB,wBAAwB,CAAA;AAC5D,eAAO,MAAM,kBAAkB,mBAAmB,CAAA;AAClD,eAAO,MAAM,mBAAmB,0BAA0B,CAAA;AAC1D,eAAO,MAAM,cAAc,qBAAqB,CAAA;AAEhD,MAAM,WAAW,oBAAoB;IACnC;wFACoF;IACpF,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,6DAA6D;IAC7D,MAAM,CAAC,EAAE,OAAO,CAAA;CACjB;AAmBD,8EAA8E;AAC9E,wBAAgB,sBAAsB,CAAC,EAAE,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,GAAG,oBAAoB,CAEpG;AAED,0DAA0D;AAC1D,wBAAgB,sBAAsB,CACpC,IAAI,EAAE;IAAE,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAAE,GAAG,SAAS,GACpD,oBAAoB,CAEtB;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,mBAAmB,CACjC,WAAW,EAAE,oBAAoB,GAAG,SAAS,EAC7C,YAAY,EAAE,MAAM,GAAG,SAAS,GAC/B,MAAM,CAOR"} |
| // Operation access annotations (R3 -02 §Operation Access Annotations). | ||
| // | ||
| // An agent cannot read R3 documents, so R3 alone tells it nothing about what any | ||
| // one operation requires. What it CAN read is the vocabulary — the OpenAPI | ||
| // document, the MCP tool list — because it has to parse that to make the call at | ||
| // all. The annotations state, alongside each operation, which credential it needs | ||
| // and whether it draws down a budget. | ||
| // | ||
| // Encodings (R3 -02 §Vocabulary Encodings): | ||
| // | ||
| // OpenAPI Operation Object x-aauth-access-mode x-aauth-budget | ||
| // MCP Tool `_meta` aauth.dev/access-mode aauth.dev/budget | ||
| // AsyncAPI Operation Object x-aauth-access-mode x-aauth-budget | ||
| // | ||
| // Three rules govern how they combine with the resource-wide `access_mode` | ||
| // (§Applying Annotations): | ||
| // | ||
| // 1. Sparse. An operation with no annotation takes the resource's access_mode. | ||
| // 2. Replacing, not intersecting. A `person-token` annotation on a resource | ||
| // declaring `auth-token` LOWERS the requirement for that operation. | ||
| // 3. Advisory. A resource MAY return any AAuth-Requirement at runtime whatever | ||
| // it published. Annotations let the agent plan; the runtime requirement is | ||
| // authoritative. Nothing here is ever enforced. | ||
| export const OPENAPI_ACCESS_MODE_KEY = 'x-aauth-access-mode'; | ||
| export const OPENAPI_BUDGET_KEY = 'x-aauth-budget'; | ||
| export const MCP_ACCESS_MODE_KEY = 'aauth.dev/access-mode'; | ||
| export const MCP_BUDGET_KEY = 'aauth.dev/budget'; | ||
| function readAnnotations(source, accessModeKey, budgetKey) { | ||
| if (!source) | ||
| return {}; | ||
| const out = {}; | ||
| const mode = source[accessModeKey]; | ||
| // `session-token` MUST NOT appear in an annotation: a resource that manages | ||
| // its own authorization does so for the whole resource and says so in | ||
| // access_mode. Drop it rather than honour it. | ||
| if (typeof mode === 'string' && mode && mode !== 'session-token') | ||
| out.access_mode = mode; | ||
| const budget = source[budgetKey]; | ||
| if (typeof budget === 'boolean') | ||
| out.budget = budget; | ||
| return out; | ||
| } | ||
| /** Read the two annotations off an OpenAPI (or AsyncAPI) Operation Object. */ | ||
| export function readOpenApiAnnotations(op) { | ||
| return readAnnotations(op, OPENAPI_ACCESS_MODE_KEY, OPENAPI_BUDGET_KEY); | ||
| } | ||
| /** Read the two annotations off an MCP Tool's `_meta`. */ | ||
| export function readMcpToolAnnotations(tool) { | ||
| return readAnnotations(tool?._meta, MCP_ACCESS_MODE_KEY, MCP_BUDGET_KEY); | ||
| } | ||
| /** | ||
| * The access mode that actually applies to one operation. | ||
| * | ||
| * - An annotation replaces the resource-wide default outright (never intersects). | ||
| * - `budget: true` implies at least `auth-token`, because a budget is carried in | ||
| * the auth token's `budget` claim. Where the access mode annotation is absent, | ||
| * `budget: true` implies `auth-token` rather than the resource default; a | ||
| * resource MUST NOT pair `budget: true` with `agent-token` or `person-token`, | ||
| * and an agent that sees that combination anyway MUST treat it as `auth-token`. | ||
| * - Absent everything, the protocol default is `agent-token`. | ||
| */ | ||
| export function effectiveAccessMode(annotations, resourceWide) { | ||
| const annotated = annotations?.access_mode; | ||
| const base = annotated ?? resourceWide ?? 'agent-token'; | ||
| if (annotations?.budget === true && (base === 'agent-token' || base === 'person-token')) { | ||
| return 'auth-token'; | ||
| } | ||
| return base; | ||
| } | ||
| //# sourceMappingURL=annotations.js.map |
| {"version":3,"file":"annotations.js","sourceRoot":"","sources":["../../src/vocab/annotations.ts"],"names":[],"mappings":"AAAA,uEAAuE;AACvE,EAAE;AACF,iFAAiF;AACjF,2EAA2E;AAC3E,iFAAiF;AACjF,kFAAkF;AAClF,sCAAsC;AACtC,EAAE;AACF,4CAA4C;AAC5C,EAAE;AACF,yEAAyE;AACzE,2EAA2E;AAC3E,yEAAyE;AACzE,EAAE;AACF,2EAA2E;AAC3E,2BAA2B;AAC3B,EAAE;AACF,iFAAiF;AACjF,8EAA8E;AAC9E,yEAAyE;AACzE,iFAAiF;AACjF,gFAAgF;AAChF,qDAAqD;AAErD,MAAM,CAAC,MAAM,uBAAuB,GAAG,qBAAqB,CAAA;AAC5D,MAAM,CAAC,MAAM,kBAAkB,GAAG,gBAAgB,CAAA;AAClD,MAAM,CAAC,MAAM,mBAAmB,GAAG,uBAAuB,CAAA;AAC1D,MAAM,CAAC,MAAM,cAAc,GAAG,kBAAkB,CAAA;AAUhD,SAAS,eAAe,CACtB,MAA2C,EAC3C,aAAqB,EACrB,SAAiB;IAEjB,IAAI,CAAC,MAAM;QAAE,OAAO,EAAE,CAAA;IACtB,MAAM,GAAG,GAAyB,EAAE,CAAA;IACpC,MAAM,IAAI,GAAG,MAAM,CAAC,aAAa,CAAC,CAAA;IAClC,4EAA4E;IAC5E,sEAAsE;IACtE,8CAA8C;IAC9C,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,IAAI,IAAI,KAAK,eAAe;QAAE,GAAG,CAAC,WAAW,GAAG,IAAI,CAAA;IACxF,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC,CAAA;IAChC,IAAI,OAAO,MAAM,KAAK,SAAS;QAAE,GAAG,CAAC,MAAM,GAAG,MAAM,CAAA;IACpD,OAAO,GAAG,CAAA;AACZ,CAAC;AAED,8EAA8E;AAC9E,MAAM,UAAU,sBAAsB,CAAC,EAAuC;IAC5E,OAAO,eAAe,CAAC,EAAE,EAAE,uBAAuB,EAAE,kBAAkB,CAAC,CAAA;AACzE,CAAC;AAED,0DAA0D;AAC1D,MAAM,UAAU,sBAAsB,CACpC,IAAqD;IAErD,OAAO,eAAe,CAAC,IAAI,EAAE,KAAK,EAAE,mBAAmB,EAAE,cAAc,CAAC,CAAA;AAC1E,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,mBAAmB,CACjC,WAA6C,EAC7C,YAAgC;IAEhC,MAAM,SAAS,GAAG,WAAW,EAAE,WAAW,CAAA;IAC1C,MAAM,IAAI,GAAG,SAAS,IAAI,YAAY,IAAI,aAAa,CAAA;IACvD,IAAI,WAAW,EAAE,MAAM,KAAK,IAAI,IAAI,CAAC,IAAI,KAAK,aAAa,IAAI,IAAI,KAAK,cAAc,CAAC,EAAE,CAAC;QACxF,OAAO,YAAY,CAAA;IACrB,CAAC;IACD,OAAO,IAAI,CAAA;AACb,CAAC"} |
+85
-6
| import { fetch as signedFetch } from '@hellocoop/httpsig'; | ||
| import type { L1Entry } from './store.js'; | ||
| import type { KnownAccessMode } from './access-mode.js'; | ||
| import type { L1Entry, PersonTokenStore } from './store.js'; | ||
| export type AgentSigningKey = Parameters<typeof signedFetch>[1]['signingKey']; | ||
| /** | ||
| * Optional hints forwarded verbatim as extra body parameters in every POST to | ||
| * the PS token endpoint (AAuth spec §8.1). All fields are optional; include only | ||
| * those the host has learned about the user. | ||
| * the PS auth token endpoint (protocol §Agent Token Request). All fields are | ||
| * optional; include only those the host has learned about the user. | ||
| */ | ||
@@ -21,2 +22,7 @@ export interface PSTokenHints { | ||
| } | ||
| /** Opaque per-resource session token from the AAuth-Access header. */ | ||
| export interface SessionTokenStore { | ||
| get(resource: string): Promise<string | undefined>; | ||
| set(resource: string, token: string): Promise<void>; | ||
| } | ||
| export interface ProxyConfig { | ||
@@ -26,5 +32,20 @@ psUrl: string; | ||
| agentToken: string; | ||
| /** Extra parameters forwarded to every PS token endpoint request. */ | ||
| /** | ||
| * The mission this agent is operating under, as the base64url SHA-256 of the | ||
| * approved mission JSON. Forwarded to the PS's person token endpoint, which | ||
| * stamps it into the person token; from there the resource copies it into the | ||
| * resource token and the PS into the auth token. No PS implements | ||
| * `mission_endpoint` yet — the claim path is built regardless. | ||
| */ | ||
| missionS256?: string; | ||
| /** Extra parameters forwarded to every PS auth token endpoint request. */ | ||
| psHints?: PSTokenHints; | ||
| /** | ||
| * Person-token cache. Keyed (resource, mission_s256); flushed whole when the | ||
| * agent's signing key changes. Defaults to a per-config in-memory store. | ||
| */ | ||
| personTokens?: PersonTokenStore; | ||
| /** Session-token store for `session-token` resources. Defaults to per-config memory. */ | ||
| sessionTokens?: SessionTokenStore; | ||
| /** | ||
| * Called with each auth_token received from the PS before it is used. | ||
@@ -41,2 +62,6 @@ * Hosts can use this to record or validate the PS sub across exchanges. | ||
| } | ||
| export interface InvokeOptions { | ||
| /** Overrides ProxyConfig.missionS256 for this call. */ | ||
| missionS256?: string; | ||
| } | ||
| export interface Interaction { | ||
@@ -54,9 +79,63 @@ url: string; | ||
| interaction: Interaction; | ||
| } | ||
| /** | ||
| * The resource (or this operation) declares an access mode this agent's setup | ||
| * cannot complete — typically `auth-token` or `person-token` at an agent whose | ||
| * agent token carries no `ps` claim. No request was made. Case (c) of the | ||
| * three-way access_mode plan: the agent learns this before planning rather | ||
| * than at a 401. | ||
| */ | ||
| | { | ||
| kind: 'skipped'; | ||
| resource: string; | ||
| opId: string; | ||
| mode: KnownAccessMode; | ||
| reason: string; | ||
| }; | ||
| export type InteractionHandler = (url: string, code: string) => Promise<void> | void; | ||
| export declare function makeAgentPoll(cfg: ProxyConfig): (url: string) => Promise<Response>; | ||
| interface PSMetadata { | ||
| /** Renamed from `token_endpoint` in -11. */ | ||
| auth_token_endpoint: string; | ||
| /** New in -11, REQUIRED. */ | ||
| person_token_endpoint?: string; | ||
| interaction_endpoint?: string; | ||
| mission_endpoint?: string; | ||
| } | ||
| type PersonTokenOutcome = { | ||
| kind: 'token'; | ||
| personToken: string; | ||
| } | { | ||
| kind: 'interaction'; | ||
| interaction: Interaction; | ||
| } | { | ||
| kind: 'result'; | ||
| status: number; | ||
| body: unknown; | ||
| }; | ||
| /** | ||
| * Obtain a person token for one resource, from cache or from the PS. | ||
| * | ||
| * A resource MUST have verified a person token before it issues a resource token, | ||
| * and the agent MUST present one on every authorization endpoint request | ||
| * (protocol §Person Token, §Authorization Endpoint Request) — so this sits in | ||
| * front of the whole authorize-first path, not only of `person-token` resources. | ||
| * | ||
| * The PS MAY require the user to approve the agent acting at this resource before | ||
| * issuing, and answers `202` with `requirement=interaction`. That is surfaced | ||
| * like any other interaction; the caller drives it and retries, and the second | ||
| * request gets a `200`. | ||
| */ | ||
| export declare function obtainPersonToken(cfg: ProxyConfig, ps: PSMetadata, resource: string, missionS256?: string): Promise<PersonTokenOutcome>; | ||
| /** | ||
| * Drop every cached person token. Call when the agent's signing key rotates — | ||
| * every person token binds the same key through `cnf`, so none of them survive. | ||
| * `obtainPersonToken` also detects rotation on its own via the key thumbprint; | ||
| * this is the explicit hook for a host that knows a rotation happened. | ||
| */ | ||
| export declare function flushPersonTokens(cfg: ProxyConfig): Promise<void>; | ||
| type Poller = (url: string) => Promise<Response>; | ||
| export declare function pollUntilDone(poll: Poller, locationUrl: string, timeoutMs?: number, onPoll?: (elapsedMs: number) => void | Promise<void>): Promise<Response>; | ||
| export declare function invokeAtResource(cfg: ProxyConfig, l1: L1Entry, operationId: string, args?: InvokeArgs): Promise<InvokeResult>; | ||
| export declare function invokeAtResourceComplete(cfg: ProxyConfig, l1: L1Entry, operationId: string, onInteraction: InteractionHandler, args?: InvokeArgs, maxRounds?: number, pollTimeoutMs?: number, onPoll?: (elapsedMs: number) => void | Promise<void>): Promise<{ | ||
| export declare function invokeAtResource(cfg: ProxyConfig, l1: L1Entry, operationId: string, args?: InvokeArgs, opts?: InvokeOptions): Promise<InvokeResult>; | ||
| export declare function invokeAtResourceComplete(cfg: ProxyConfig, l1: L1Entry, operationId: string, onInteraction: InteractionHandler, args?: InvokeArgs, maxRounds?: number, pollTimeoutMs?: number, onPoll?: (elapsedMs: number) => void | Promise<void>, opts?: InvokeOptions): Promise<{ | ||
| status: number; | ||
@@ -63,0 +142,0 @@ body: unknown; |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../src/agent.ts"],"names":[],"mappings":"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"} | ||
| {"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../src/agent.ts"],"names":[],"mappings":"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"} |
+393
-129
@@ -1,41 +0,87 @@ | ||
| // agent proxy — the user's AAuth agent. v0 core: the authorize-first R3 invoke flow | ||
| // against the resource proxy, exchanging at the PS. | ||
| // agent proxy — the user's AAuth agent. The invoke flow against an AAuth | ||
| // resource, obtaining person tokens and auth tokens at the PS. | ||
| // | ||
| // invoke() is non-blocking: when an interaction is required (PS consent or the | ||
| // resource's OAuth bootstrap) it RETURNS the interaction (url + code + poll URL) | ||
| // rather than completing it, so a caller — the MCP server — can surface the URL | ||
| // to the user. invokeComplete() drives it to completion for programmatic use, | ||
| // performing the interaction via a callback and polling. | ||
| // The shape of the flow is the one the protocol describes: pick an opening | ||
| // credential from what the resource declared, make the request, read any | ||
| // AAuth-Requirement, satisfy it, retry. The declaration only saves round trips — | ||
| // the runtime requirement is authoritative and can escalate at any point. | ||
| // | ||
| // Built directly on @hellocoop/httpsig (the @aauth/mcp-agent package is | ||
| // 401-challenge-driven and has no R3/authorize-first path, mirroring the | ||
| // invoke() is non-blocking: when an interaction is required (PS consent, a person | ||
| // token the PS wants the user to approve, or the resource's own OAuth bootstrap) | ||
| // it RETURNS the interaction (url + code + poll URL) rather than completing it, | ||
| // so a caller — the MCP server — can surface the URL to the user. | ||
| // invokeComplete() drives it to completion for programmatic use, performing the | ||
| // interaction via a callback and polling. | ||
| // | ||
| // Built directly on @hellocoop/httpsig (the @aauth/agent package is | ||
| // 401-challenge-driven and has no authorize-first path, mirroring the | ||
| // resource-side finding). | ||
| import { fetch as signedFetch } from '@hellocoop/httpsig'; | ||
| import { planAccessMode } from './access-mode.js'; | ||
| import { agentTokenPs, jwkThumbprint } from './jwt.js'; | ||
| import { routeOperation } from './resource.js'; | ||
| function signWith(cfg, token) { | ||
| return (url, init = {}) => signedFetch(url, { ...init, signingKey: cfg.agentPrivateJwk, signatureKey: { type: 'jwt', jwt: token } }); | ||
| import { createMemoryPersonTokenStore } from './store.js'; | ||
| // The AAuth HTTP Message Signatures profile's base covered components. httpsig | ||
| // applies these itself when no list is passed; we pass an explicit list whenever | ||
| // something must be added to it. | ||
| const BASE_GET = ['@method', '@authority', '@path', 'signature-key']; | ||
| const BASE_BODY = ['@method', '@authority', '@path', 'content-type', 'signature-key']; | ||
| function components(opts) { | ||
| const base = opts.hasBody ? [...BASE_BODY] : [...BASE_GET]; | ||
| let extended = false; | ||
| if (opts.hasBody && opts.psOrAs) { | ||
| base.splice(base.indexOf('content-type') + 1, 0, 'content-digest'); | ||
| extended = true; | ||
| } | ||
| if (opts.authorization) { | ||
| base.splice(base.length - 1, 0, 'authorization'); | ||
| extended = true; | ||
| } | ||
| return extended ? base : undefined; | ||
| } | ||
| function signWith(cfg, cred, opts = {}) { | ||
| return (url, init = {}) => { | ||
| const headers = { ...(init.headers ?? {}) }; | ||
| if (cred.kind === 'session') | ||
| headers.authorization = `AAuth ${cred.token}`; | ||
| const jwt = cred.kind === 'person' || cred.kind === 'auth' ? cred.jwt : cfg.agentToken; | ||
| const list = components({ | ||
| hasBody: init.body !== undefined, | ||
| authorization: cred.kind === 'session', | ||
| psOrAs: opts.psOrAs, | ||
| }); | ||
| return signedFetch(url, { | ||
| ...init, | ||
| headers, | ||
| signingKey: cfg.agentPrivateJwk, | ||
| signatureKey: { type: 'jwt', jwt }, | ||
| ...(list ? { components: list } : {}), | ||
| }); | ||
| }; | ||
| } | ||
| export function makeAgentPoll(cfg) { | ||
| return (url) => signWith(cfg, cfg.agentToken)(url, { method: 'GET', headers: { Prefer: 'wait=20' } }); | ||
| return (url) => signWith(cfg, { kind: 'agent' })(url, { method: 'GET', headers: { Prefer: 'wait=20' } }); | ||
| } | ||
| function parseInteraction(requirement) { | ||
| if (!requirement || !requirement.includes('requirement=interaction')) | ||
| // Parses the AAuth-Requirement header. Unrecognized `requirement=` values are | ||
| // returned as-is: the caller decides, and treats anything it cannot satisfy as a | ||
| // terminal response rather than guessing. | ||
| function parseRequirement(headerValue) { | ||
| if (!headerValue) | ||
| return undefined; | ||
| const url = /url="([^"]+)"/.exec(requirement)?.[1]; | ||
| const code = /code="([^"]+)"/.exec(requirement)?.[1]; | ||
| return url && code ? { url, code } : undefined; | ||
| } | ||
| // A per-call escalation challenge (W2): the resource returns 401 with | ||
| // `requirement=auth-token; resource-token="…"` for a conditional/irreversible op. | ||
| // The agent takes that resource token (which carries the call as r3_context) to | ||
| // the PS for a per-call auth token, then retries. | ||
| function parseAuthTokenChallenge(requirement) { | ||
| if (!requirement || !requirement.includes('requirement=auth-token')) | ||
| const requirement = /requirement=([A-Za-z0-9_-]+)/.exec(headerValue)?.[1]; | ||
| if (!requirement) | ||
| return undefined; | ||
| return /resource-token="([^"]+)"/.exec(requirement)?.[1]; | ||
| return { | ||
| requirement, | ||
| resourceToken: /resource-token="([^"]+)"/.exec(headerValue)?.[1], | ||
| url: /url="([^"]+)"/.exec(headerValue)?.[1], | ||
| code: /code="([^"]+)"/.exec(headerValue)?.[1], | ||
| }; | ||
| } | ||
| function interactionFrom(res) { | ||
| const parsed = parseInteraction(res.headers.get('aauth-requirement')); | ||
| const parsed = parseRequirement(res.headers.get('aauth-requirement')); | ||
| const pollUrl = res.headers.get('location') ?? ''; | ||
| return parsed && pollUrl ? { ...parsed, pollUrl } : undefined; | ||
| return parsed?.requirement === 'interaction' && parsed.url && parsed.code && pollUrl | ||
| ? { url: parsed.url, code: parsed.code, pollUrl } | ||
| : undefined; | ||
| } | ||
@@ -54,7 +100,104 @@ async function safeBody(res) { | ||
| } | ||
| // ── Per-config default stores ── | ||
| // | ||
| // Keyed on the ProxyConfig object, which the identity provider resolves | ||
| // per-principal. A process-global cache would leak person and session tokens | ||
| // across tenants in a multi-user host. | ||
| const defaultPersonTokens = new WeakMap(); | ||
| const defaultSessionTokens = new WeakMap(); | ||
| function personTokenStore(cfg) { | ||
| if (cfg.personTokens) | ||
| return cfg.personTokens; | ||
| let store = defaultPersonTokens.get(cfg); | ||
| if (!store) { | ||
| store = createMemoryPersonTokenStore(); | ||
| defaultPersonTokens.set(cfg, store); | ||
| } | ||
| return store; | ||
| } | ||
| function sessionTokenStore(cfg) { | ||
| if (cfg.sessionTokens) | ||
| return cfg.sessionTokens; | ||
| let store = defaultSessionTokens.get(cfg); | ||
| if (!store) { | ||
| const m = new Map(); | ||
| store = { | ||
| async get(resource) { | ||
| return m.get(resource); | ||
| }, | ||
| async set(resource, token) { | ||
| m.set(resource, token); | ||
| }, | ||
| }; | ||
| defaultSessionTokens.set(cfg, store); | ||
| } | ||
| return store; | ||
| } | ||
| /** | ||
| * Obtain a person token for one resource, from cache or from the PS. | ||
| * | ||
| * A resource MUST have verified a person token before it issues a resource token, | ||
| * and the agent MUST present one on every authorization endpoint request | ||
| * (protocol §Person Token, §Authorization Endpoint Request) — so this sits in | ||
| * front of the whole authorize-first path, not only of `person-token` resources. | ||
| * | ||
| * The PS MAY require the user to approve the agent acting at this resource before | ||
| * issuing, and answers `202` with `requirement=interaction`. That is surfaced | ||
| * like any other interaction; the caller drives it and retries, and the second | ||
| * request gets a `200`. | ||
| */ | ||
| export async function obtainPersonToken(cfg, ps, resource, missionS256) { | ||
| if (!ps.person_token_endpoint) { | ||
| return { | ||
| kind: 'result', | ||
| status: 0, | ||
| body: { | ||
| error: 'ps_missing_person_token_endpoint', | ||
| error_description: `${cfg.psUrl} publishes no person_token_endpoint; AAuth -11 requires one`, | ||
| }, | ||
| }; | ||
| } | ||
| const store = personTokenStore(cfg); | ||
| const jkt = await jwkThumbprint(cfg.agentPrivateJwk); | ||
| const key = { resource, ...(missionS256 ? { mission_s256: missionS256 } : {}) }; | ||
| const cached = await store.get(key, jkt); | ||
| if (cached) | ||
| return { kind: 'token', personToken: cached }; | ||
| const res = await signWith(cfg, { kind: 'agent' }, { psOrAs: true })(ps.person_token_endpoint, { | ||
| method: 'POST', | ||
| headers: { 'content-type': 'application/json' }, | ||
| body: JSON.stringify({ | ||
| resource, | ||
| ...(missionS256 ? { mission_s256: missionS256 } : {}), | ||
| }), | ||
| }); | ||
| if (res.status === 202) { | ||
| const interaction = interactionFrom(res); | ||
| if (interaction) | ||
| return { kind: 'interaction', interaction }; | ||
| } | ||
| if (!res.ok) | ||
| return { kind: 'result', status: res.status, body: await safeBody(res) }; | ||
| const { person_token, expires_in } = (await res.json()); | ||
| if (!person_token) { | ||
| return { kind: 'result', status: res.status, body: { error: 'ps_returned_no_person_token' } }; | ||
| } | ||
| const expiresAt = Math.floor(Date.now() / 1000) + (expires_in ?? 3600); | ||
| await store.set(key, jkt, person_token, expiresAt); | ||
| return { kind: 'token', personToken: person_token }; | ||
| } | ||
| /** | ||
| * Drop every cached person token. Call when the agent's signing key rotates — | ||
| * every person token binds the same key through `cnf`, so none of them survive. | ||
| * `obtainPersonToken` also detects rotation on its own via the key thumbprint; | ||
| * this is the explicit hook for a host that knows a rotation happened. | ||
| */ | ||
| export async function flushPersonTokens(cfg) { | ||
| await personTokenStore(cfg).flush(); | ||
| } | ||
| // POST the interaction to the PS so it can try to reach the user (live web | ||
| // session, registered mobile push). On 2xx the PS owns user-reach; the agent | ||
| // blocks on the resource pollUrl until the user completes there. On any | ||
| // non-2xx (including the spec-pending interaction_unavailable error — see | ||
| // AAuth#34) the agent falls back to driving the URL itself. | ||
| // blocks on the pollUrl until the user completes there. On any non-2xx | ||
| // (including the spec-pending interaction_unavailable error — see AAuth#34) the | ||
| // agent falls back to driving the URL itself. | ||
| async function relayInteractionToPS(signAgent, endpoint, interaction) { | ||
@@ -95,13 +238,18 @@ try { | ||
| } | ||
| // Exchange a resource token at the PS for an auth token. capabilities tells the | ||
| // Exchange a resource token at the PS for an auth token. `capabilities` tells the | ||
| // PS the agent can relay interactions to the user, so it returns a 202 consent | ||
| // interaction (surfaced for the caller to drive + retry) rather than requiring a | ||
| // registered mobile device. On PS endpoints this is a token-request parameter, | ||
| // registered mobile device. On PS endpoints this is a request-body parameter, | ||
| // not a header (the AAuth-Capabilities header is for resource requests). | ||
| // | ||
| // cfg.psHints (if set) are spread into the body — all §8.1 optional params. | ||
| // cfg.onAuthToken (if set) is called with the auth_token before it is returned. | ||
| async function exchangeAtPS(signAgent, tokenEndpoint, resourceToken, cfg) { | ||
| // The mission does not appear here: it travels in the person token's | ||
| // `mission_s256`, which the resource copies into the resource token and the PS | ||
| // into the auth token. | ||
| // | ||
| // cfg.psHints (if set) are spread into the body — all §Agent Token Request | ||
| // optional params. cfg.onAuthToken (if set) is called with the auth_token before | ||
| // it is returned. | ||
| async function exchangeAtPS(cfg, authTokenEndpoint, resourceToken) { | ||
| const { capabilities, ...otherHints } = cfg.psHints ?? {}; | ||
| const res = await signAgent(tokenEndpoint, { | ||
| const res = await signWith(cfg, { kind: 'agent' }, { psOrAs: true })(authTokenEndpoint, { | ||
| method: 'POST', | ||
@@ -127,6 +275,34 @@ headers: { 'content-type': 'application/json' }, | ||
| } | ||
| // Resource-parameterized invoke. The new tool surface in server.ts calls into | ||
| // this directly with an L1 entry from store.ts; the legacy invoke() below | ||
| // wraps it for cfg.resourceProxyBase-based callers (tests, demo scripts). | ||
| export async function invokeAtResource(cfg, l1, operationId, args = {}) { | ||
| // ── Authorize-first ── | ||
| /** | ||
| * POST the resource's authorization endpoint, declaring the operation, and take | ||
| * back a resource token. The request MUST present a person token via | ||
| * Signature-Key (protocol §Authorization Endpoint Request) — an agent token gets | ||
| * `requirement=person-token`. | ||
| */ | ||
| async function authorizeAtResource(cfg, endpoint, personToken, vocabulary, operationId) { | ||
| const res = await signWith(cfg, { kind: 'person', jwt: personToken })(endpoint, { | ||
| method: 'POST', | ||
| headers: { 'content-type': 'application/json' }, | ||
| body: JSON.stringify({ | ||
| r3_operations: { | ||
| vocabulary, | ||
| // Bare identifiers, scoped to the one discovery endpoint the resource | ||
| // advertises for this vocabulary (R3 -02 §Operation Identifier Scope). | ||
| operations: [{ operationId }], | ||
| }, | ||
| }), | ||
| }); | ||
| if (!res.ok) | ||
| return { kind: 'result', status: res.status, body: await safeBody(res) }; | ||
| const { resource_token } = (await res.json()); | ||
| if (!resource_token) { | ||
| // The resource handled authorization itself and issued no resource token. | ||
| return { kind: 'result', status: res.status, body: await safeBody(res) }; | ||
| } | ||
| return { kind: 'resourceToken', resourceToken: resource_token }; | ||
| } | ||
| // ── invoke ── | ||
| const MAX_ROUNDS = 6; | ||
| export async function invokeAtResource(cfg, l1, operationId, args = {}, opts = {}) { | ||
| const route = await routeOperation(l1, operationId, args); | ||
@@ -142,3 +318,6 @@ if (route.plan.kind !== 'sync.request') { | ||
| const apiUrl = `${l1.origin}${plan.path}${plan.query ? `?${plan.query}` : ''}`; | ||
| const requestInit = { | ||
| // Fixed for the whole flow. A per-call retry MUST present exactly the | ||
| // parameters the proposal was approved for (R3 -02 §Per-Call Proposals step 3): | ||
| // the resource recovers the proposal by its hash and rejects any difference. | ||
| const init = { | ||
| method: plan.method, | ||
@@ -148,91 +327,174 @@ ...(plan.headers ? { headers: plan.headers } : {}), | ||
| }; | ||
| // agent-token access mode: sign with the agent token + go. No PS exchange. | ||
| // If the resource returns a 401 auth-token challenge, escalate to the PS. | ||
| if (l1.access_mode === 'agent-token') { | ||
| const signAgent = signWith(cfg, cfg.agentToken); | ||
| let res = await signAgent(apiUrl, requestInit); | ||
| const challenge = res.status === 401 ? parseAuthTokenChallenge(res.headers.get('aauth-requirement')) : undefined; | ||
| if (challenge) { | ||
| const ps = await psMetadata(cfg.psUrl); | ||
| const ex = await exchangeAtPS(signAgent, ps.token_endpoint, challenge, cfg); | ||
| if (ex.kind !== 'token') | ||
| return ex; | ||
| res = await signWith(cfg, ex.authToken)(apiUrl, requestInit); | ||
| if (res.status === 202) { | ||
| const interaction = interactionFrom(res); | ||
| if (interaction) | ||
| return { kind: 'interaction', interaction }; | ||
| const missionS256 = opts.missionS256 ?? cfg.missionS256; | ||
| // Three-way access_mode plan against the mode that applies to THIS operation: | ||
| // its own annotation when it carries one, the resource-wide access_mode | ||
| // otherwise (R3 -02 §Applying Annotations). | ||
| const accessPlan = planAccessMode(route.accessMode, { | ||
| hasPersonServer: agentTokenPs(cfg.agentToken) !== undefined, | ||
| }); | ||
| if (accessPlan.kind === 'unsatisfiable') { | ||
| return { | ||
| kind: 'skipped', | ||
| resource: l1.resource, | ||
| opId: operationId, | ||
| mode: accessPlan.mode, | ||
| reason: accessPlan.reason, | ||
| }; | ||
| } | ||
| let ps; | ||
| const needPS = async () => { | ||
| ps ??= await psMetadata(cfg.psUrl); | ||
| return ps; | ||
| }; | ||
| const sessions = sessionTokenStore(cfg); | ||
| // ── Opening credential ── | ||
| // | ||
| // The plan only decides where to start. Everything after this point is the | ||
| // requirement loop, which is identical in every mode. | ||
| let cred = { kind: 'agent' }; | ||
| if (accessPlan.kind === 'satisfiable') { | ||
| switch (accessPlan.mode) { | ||
| case 'agent-token': | ||
| break; | ||
| case 'session-token': { | ||
| // Resource-managed. Present the session token if we already hold one; | ||
| // otherwise call with the agent token and let the resource start its own | ||
| // consent flow with a 202 interaction. | ||
| const held = await sessions.get(l1.resource); | ||
| if (held) | ||
| cred = { kind: 'session', token: held }; | ||
| break; | ||
| } | ||
| case 'person-token': { | ||
| const pt = await obtainPersonToken(cfg, await needPS(), l1.issuer, missionS256); | ||
| if (pt.kind !== 'token') | ||
| return pt; | ||
| cred = { kind: 'person', jwt: pt.personToken }; | ||
| break; | ||
| } | ||
| case 'auth-token': | ||
| case 'per-call': { | ||
| // Authorize-first when the resource publishes an authorization_endpoint: | ||
| // declare the operation, take back a resource token, exchange it at the | ||
| // PS. Without one, the resource issues resource tokens via 401 instead | ||
| // (protocol §Resource Access and Resource Tokens) — start with the | ||
| // person token and let the requirement loop pick up the challenge. | ||
| const pt = await obtainPersonToken(cfg, await needPS(), l1.issuer, missionS256); | ||
| if (pt.kind !== 'token') | ||
| return pt; | ||
| cred = { kind: 'person', jwt: pt.personToken }; | ||
| if (l1.authorization_endpoint) { | ||
| const authz = await authorizeAtResource(cfg, l1.authorization_endpoint, pt.personToken, route.adapter.vocabUri, operationId); | ||
| if (authz.kind !== 'resourceToken') | ||
| return authz; | ||
| const ex = await exchangeAtPS(cfg, (await needPS()).auth_token_endpoint, authz.resourceToken); | ||
| if (ex.kind !== 'token') | ||
| return ex; | ||
| cred = { kind: 'auth', jwt: ex.authToken }; | ||
| } | ||
| break; | ||
| } | ||
| } | ||
| return { kind: 'result', status: res.status, body: await safeBody(res) }; | ||
| } | ||
| // aauth-access-token / auth-token: R3 flow. | ||
| if (!l1.authorization_endpoint) { | ||
| throw new Error(`resource ${l1.resource}: no authorization_endpoint (access_mode ${l1.access_mode} requires R3)`); | ||
| } | ||
| const signAgent = signWith(cfg, cfg.agentToken); | ||
| const ps = await psMetadata(cfg.psUrl); | ||
| // 1. authorize-first: declare the operation, get a resource token. | ||
| const authzRes = await signAgent(l1.authorization_endpoint, { | ||
| method: 'POST', | ||
| headers: { 'content-type': 'application/json' }, | ||
| body: JSON.stringify({ | ||
| r3_operations: { | ||
| vocabulary: route.adapter.vocabUri, | ||
| // Entry shape is vocabulary-specific: {operationId} for plain openapi, | ||
| // {service, operationId} for openapi-gateway. | ||
| operations: [route.adapter.formatOperationEntry?.(operationId) ?? { operationId }], | ||
| }, | ||
| }), | ||
| }); | ||
| if (!authzRes.ok) | ||
| return { kind: 'result', status: authzRes.status, body: await safeBody(authzRes) }; | ||
| const { resource_token } = (await authzRes.json()); | ||
| // 2. exchange at the PS for an auth token (surface a consent interaction if any). | ||
| const ex = await exchangeAtPS(signAgent, ps.token_endpoint, resource_token, cfg); | ||
| if (ex.kind !== 'token') | ||
| return ex; | ||
| // 3. call the resource. Writes carry the body; the agent signs over it so the | ||
| // proxy's content-digest check (and the r3_context it packs on escalation) | ||
| // match the actual call. | ||
| const callWith = (token) => signWith(cfg, token)(apiUrl, requestInit); | ||
| let apiRes = await callWith(ex.authToken); | ||
| // First contact: a resource-issued interaction (e.g. OAuth bootstrap). Try | ||
| // the PS's interaction_endpoint first so it can use its own user-reach | ||
| // channels (live web session, mobile push). On any non-2xx — including the | ||
| // spec-pending interaction_unavailable error (AAuth#34) and any PS that | ||
| // hasn't implemented the endpoint yet — surface the interaction so the | ||
| // caller can drive it (layer 2: local OS open / layer 3: text+QR). | ||
| if (apiRes.status === 202) { | ||
| const interaction = interactionFrom(apiRes); | ||
| if (interaction) { | ||
| const engaged = ps.interaction_endpoint | ||
| ? await relayInteractionToPS(signAgent, ps.interaction_endpoint, interaction) | ||
| : false; | ||
| if (!engaged) | ||
| return { kind: 'interaction', interaction }; | ||
| const poll = (url) => signWith(cfg, cfg.agentToken)(url, { method: 'GET', headers: { Prefer: 'wait=20' } }); | ||
| const completed = await pollUntilDone(poll, interaction.pollUrl, 180_000); | ||
| if (completed.status === 202) | ||
| return { kind: 'interaction', interaction }; | ||
| apiRes = await callWith(ex.authToken); | ||
| // ── Requirement loop ── | ||
| // | ||
| // Make the request, read any AAuth-Requirement, satisfy it, retry. `satisfied` | ||
| // stops the loop from chasing the same requirement twice with the same | ||
| // credential, which is what a resource that will never be satisfiable looks | ||
| // like from here. | ||
| const satisfied = new Set(); | ||
| for (let round = 0; round < MAX_ROUNDS; round++) { | ||
| const res = await signWith(cfg, cred)(apiUrl, init); | ||
| // A resource MAY replace the agent's session token on any response. | ||
| const access = res.headers.get('aauth-access'); | ||
| if (access) { | ||
| await sessions.set(l1.resource, access); | ||
| if (cred.kind !== 'auth' && cred.kind !== 'person') | ||
| cred = { kind: 'session', token: access }; | ||
| } | ||
| } | ||
| // Per-call escalation (W2): a conditional/irreversible op returns a 401 | ||
| // auth-token challenge. Take its resource token (which carries the call as | ||
| // r3_context) to the PS for a per-call auth token, then retry the same call. | ||
| // If the PS needs consent first, it returns a 202 interaction we surface. | ||
| const challenge = apiRes.status === 401 ? parseAuthTokenChallenge(apiRes.headers.get('aauth-requirement')) : undefined; | ||
| if (challenge) { | ||
| const stepEx = await exchangeAtPS(signAgent, ps.token_endpoint, challenge, cfg); | ||
| if (stepEx.kind !== 'token') | ||
| return stepEx; | ||
| apiRes = await callWith(stepEx.authToken); | ||
| if (apiRes.status === 202) { | ||
| const interaction = interactionFrom(apiRes); | ||
| if (interaction) | ||
| return { kind: 'interaction', interaction }; | ||
| const req = parseRequirement(res.headers.get('aauth-requirement')); | ||
| if (!req) | ||
| return { kind: 'result', status: res.status, body: await safeBody(res) }; | ||
| const marker = `${req.requirement}:${cred.kind}`; | ||
| if (satisfied.has(marker)) { | ||
| return { kind: 'result', status: res.status, body: await safeBody(res) }; | ||
| } | ||
| satisfied.add(marker); | ||
| switch (req.requirement) { | ||
| case 'agent-token': { | ||
| // The resource wants the agent's own identity token specifically. | ||
| if (cred.kind === 'agent') { | ||
| return { kind: 'result', status: res.status, body: await safeBody(res) }; | ||
| } | ||
| cred = { kind: 'agent' }; | ||
| continue; | ||
| } | ||
| case 'person-token': { | ||
| const pt = await obtainPersonToken(cfg, await needPS(), l1.issuer, missionS256); | ||
| if (pt.kind !== 'token') | ||
| return pt; | ||
| cred = { kind: 'person', jwt: pt.personToken }; | ||
| continue; | ||
| } | ||
| case 'auth-token': { | ||
| // Also the per-call path: for an `r3_per_call` operation the resource | ||
| // builds a proposal from this call's concrete parameters, persists it | ||
| // under its hash, and returns a resource token carrying only the | ||
| // `r3_uri`/`r3_s256` reference. The agent exchanges it and retries the | ||
| // identical call (R3 -02 §Per-Call Proposals). | ||
| if (!req.resourceToken) { | ||
| return { kind: 'result', status: res.status, body: await safeBody(res) }; | ||
| } | ||
| const ex = await exchangeAtPS(cfg, (await needPS()).auth_token_endpoint, req.resourceToken); | ||
| if (ex.kind !== 'token') | ||
| return ex; | ||
| cred = { kind: 'auth', jwt: ex.authToken }; | ||
| continue; | ||
| } | ||
| case 'interaction': { | ||
| const interaction = interactionFrom(res); | ||
| if (!interaction) { | ||
| return { kind: 'result', status: res.status, body: await safeBody(res) }; | ||
| } | ||
| // Try the PS's interaction endpoint first so it can use its own | ||
| // user-reach channels (live web session, mobile push). On any non-2xx — | ||
| // including the spec-pending interaction_unavailable error (AAuth#34) | ||
| // and any PS that hasn't implemented the endpoint yet — surface the | ||
| // interaction so the caller can drive it (layer 2: local OS open; | ||
| // layer 3: text + QR). | ||
| const meta = await needPS().catch(() => undefined); | ||
| const engaged = meta?.interaction_endpoint | ||
| ? await relayInteractionToPS(signWith(cfg, { kind: 'agent' }), meta.interaction_endpoint, interaction) | ||
| : false; | ||
| if (!engaged) | ||
| return { kind: 'interaction', interaction }; | ||
| const completed = await pollUntilDone(makeAgentPoll(cfg), interaction.pollUrl, 180_000); | ||
| if (completed.status === 202) | ||
| return { kind: 'interaction', interaction }; | ||
| const settled = completed.headers.get('aauth-access'); | ||
| if (settled) { | ||
| await sessions.set(l1.resource, settled); | ||
| cred = { kind: 'session', token: settled }; | ||
| } | ||
| continue; | ||
| } | ||
| default: | ||
| // A requirement value this build does not know. The agent MUST NOT | ||
| // treat the response as satisfiable; surface it verbatim. | ||
| return { | ||
| kind: 'result', | ||
| status: res.status, | ||
| body: { | ||
| error: 'unsupported_requirement', | ||
| requirement: req.requirement, | ||
| detail: await safeBody(res), | ||
| }, | ||
| }; | ||
| } | ||
| } | ||
| return { kind: 'result', status: apiRes.status, body: await safeBody(apiRes) }; | ||
| return { | ||
| kind: 'result', | ||
| status: 429, | ||
| body: { error: 'requirement_loop', detail: `${l1.resource} kept challenging after ${MAX_ROUNDS} rounds` }, | ||
| }; | ||
| } | ||
@@ -243,9 +505,11 @@ // Drive invokeAtResource to completion: perform each interaction via | ||
| // URLs to the LLM caller instead. | ||
| export async function invokeAtResourceComplete(cfg, l1, operationId, onInteraction, args = {}, maxRounds = 5, pollTimeoutMs = 180_000, onPoll) { | ||
| // Poll deferred URLs signed with the agent token (long-poll via Prefer: wait). | ||
| const poll = (url) => signWith(cfg, cfg.agentToken)(url, { method: 'GET', headers: { Prefer: 'wait=20' } }); | ||
| export async function invokeAtResourceComplete(cfg, l1, operationId, onInteraction, args = {}, maxRounds = 5, pollTimeoutMs = 180_000, onPoll, opts = {}) { | ||
| const poll = makeAgentPoll(cfg); | ||
| for (let round = 0; round < maxRounds; round++) { | ||
| const result = await invokeAtResource(cfg, l1, operationId, args); | ||
| const result = await invokeAtResource(cfg, l1, operationId, args, opts); | ||
| if (result.kind === 'result') | ||
| return { status: result.status, body: result.body }; | ||
| if (result.kind === 'skipped') { | ||
| return { status: 0, body: { error: 'access_mode_unsatisfiable', ...result } }; | ||
| } | ||
| await onInteraction(result.interaction.url, result.interaction.code); | ||
@@ -259,4 +523,4 @@ await pollUntilDone(poll, result.interaction.pollUrl, pollTimeoutMs, onPoll); | ||
| export async function deleteAtAdmin(cfg, l1, path) { | ||
| return signWith(cfg, cfg.agentToken)(`${l1.origin}${path}`, { method: 'DELETE' }); | ||
| return signWith(cfg, { kind: 'agent' })(`${l1.origin}${path}`, { method: 'DELETE' }); | ||
| } | ||
| //# sourceMappingURL=agent.js.map |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"agent.js","sourceRoot":"","sources":["../src/agent.ts"],"names":[],"mappings":"AAAA,oFAAoF;AACpF,oDAAoD;AACpD,EAAE;AACF,+EAA+E;AAC/E,iFAAiF;AACjF,gFAAgF;AAChF,8EAA8E;AAC9E,yDAAyD;AACzD,EAAE;AACF,wEAAwE;AACxE,yEAAyE;AACzE,0BAA0B;AAE1B,OAAO,EAAE,KAAK,IAAI,WAAW,EAAE,MAAM,oBAAoB,CAAA;AACzD,OAAO,EAAiB,cAAc,EAAa,MAAM,eAAe,CAAA;AAuDxE,SAAS,QAAQ,CAAC,GAAgB,EAAE,KAAa;IAC/C,OAAO,CAAC,GAAW,EAAE,OAA6E,EAAE,EAAE,EAAE,CACtG,WAAW,CAAC,GAAG,EAAE,EAAE,GAAG,IAAI,EAAE,UAAU,EAAE,GAAG,CAAC,eAAe,EAAE,YAAY,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE,CAAC,CAAA;AAC7G,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,GAAgB;IAC5C,OAAO,CAAC,GAAW,EAAE,EAAE,CACrB,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC,UAAU,CAAC,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,EAAE,CAAC,CAAA;AACzF,CAAC;AAED,SAAS,gBAAgB,CAAC,WAA0B;IAClD,IAAI,CAAC,WAAW,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,yBAAyB,CAAC;QAAE,OAAO,SAAS,CAAA;IACtF,MAAM,GAAG,GAAG,eAAe,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;IAClD,MAAM,IAAI,GAAG,gBAAgB,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;IACpD,OAAO,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,SAAS,CAAA;AAChD,CAAC;AAED,sEAAsE;AACtE,kFAAkF;AAClF,gFAAgF;AAChF,kDAAkD;AAClD,SAAS,uBAAuB,CAAC,WAA0B;IACzD,IAAI,CAAC,WAAW,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,wBAAwB,CAAC;QAAE,OAAO,SAAS,CAAA;IACrF,OAAO,0BAA0B,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;AAC1D,CAAC;AAED,SAAS,eAAe,CAAC,GAAa;IACpC,MAAM,MAAM,GAAG,gBAAgB,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC,CAAA;IACrE,MAAM,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,EAAE,CAAA;IACjD,OAAO,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,GAAG,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,SAAS,CAAA;AAC/D,CAAC;AAED,KAAK,UAAU,QAAQ,CAAC,GAAa;IACnC,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAA;IAC7B,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;IACzB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAA;IACb,CAAC;AACH,CAAC;AAOD,KAAK,UAAU,UAAU,CAAC,KAAa;IACrC,OAAO,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,gCAAgC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAe,CAAA;AAChH,CAAC;AAED,2EAA2E;AAC3E,6EAA6E;AAC7E,wEAAwE;AACxE,0EAA0E;AAC1E,4DAA4D;AAC5D,KAAK,UAAU,oBAAoB,CACjC,SAAsB,EACtB,QAAgB,EAChB,WAAwB;IAExB,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,SAAS,CAAC,QAAQ,EAAE;YACpC,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;YAC/C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;gBACnB,IAAI,EAAE,aAAa;gBACnB,GAAG,EAAE,WAAW,CAAC,GAAG;gBACpB,IAAI,EAAE,WAAW,CAAC,IAAI;aACvB,CAAC;SACH,CAAC,CAAA;QACF,OAAO,GAAG,CAAC,EAAE,CAAA;IACf,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAA;IACd,CAAC;AACH,CAAC;AAID,+EAA+E;AAC/E,+EAA+E;AAC/E,uDAAuD;AACvD,EAAE;AACF,6EAA6E;AAC7E,wEAAwE;AACxE,gDAAgD;AAChD,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,IAAY,EACZ,WAAmB,EACnB,SAAS,GAAG,OAAO,EACnB,MAAoD;IAEpD,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;IACxB,MAAM,QAAQ,GAAG,KAAK,GAAG,SAAS,CAAA;IAClC,IAAI,GAAG,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,CAAA;IACjC,OAAO,GAAG,CAAC,MAAM,KAAK,GAAG,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,QAAQ,EAAE,CAAC;QACnD,MAAM,MAAM,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC,CAAA;QAClC,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAA;QAC7C,GAAG,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,CAAA;IAC/B,CAAC;IACD,OAAO,GAAG,CAAA;AACZ,CAAC;AASD,gFAAgF;AAChF,+EAA+E;AAC/E,iFAAiF;AACjF,+EAA+E;AAC/E,yEAAyE;AACzE,EAAE;AACF,4EAA4E;AAC5E,gFAAgF;AAChF,KAAK,UAAU,YAAY,CACzB,SAAsB,EACtB,aAAqB,EACrB,aAAqB,EACrB,GAAgB;IAEhB,MAAM,EAAE,YAAY,EAAE,GAAG,UAAU,EAAE,GAAG,GAAG,CAAC,OAAO,IAAI,EAAE,CAAA;IACzD,MAAM,GAAG,GAAG,MAAM,SAAS,CAAC,aAAa,EAAE;QACzC,MAAM,EAAE,MAAM;QACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;QAC/C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;YACnB,cAAc,EAAE,aAAa;YAC7B,YAAY,EAAE,YAAY,IAAI,CAAC,aAAa,CAAC;YAC7C,GAAG,UAAU;SACd,CAAC;KACH,CAAC,CAAA;IACF,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;QACvB,MAAM,WAAW,GAAG,eAAe,CAAC,GAAG,CAAC,CAAA;QACxC,IAAI,WAAW;YAAE,OAAO,EAAE,IAAI,EAAE,aAAa,EAAE,WAAW,EAAE,CAAA;IAC9D,CAAC;IACD,IAAI,CAAC,GAAG,CAAC,EAAE;QAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAA;IACrF,MAAM,EAAE,UAAU,EAAE,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAA2B,CAAA;IACnE,IAAI,GAAG,CAAC,WAAW;QAAE,MAAM,GAAG,CAAC,WAAW,CAAC,UAAU,CAAC,CAAA;IACtD,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,CAAA;AACjD,CAAC;AAED,8EAA8E;AAC9E,0EAA0E;AAC1E,0EAA0E;AAC1E,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,GAAgB,EAChB,EAAW,EACX,WAAmB,EACnB,OAAmB,EAAE;IAErB,MAAM,KAAK,GAAG,MAAM,cAAc,CAAC,EAAE,EAAE,WAAW,EAAE,IAAI,CAAC,CAAA;IACzD,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,KAAK,cAAc,EAAE,CAAC;QACvC,OAAO;YACL,IAAI,EAAE,QAAQ;YACd,MAAM,EAAE,GAAG;YACX,IAAI,EAAE,EAAE,KAAK,EAAE,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,oBAAoB,EAAE,IAAI,EAAE,WAAW,EAAE;SAC3E,CAAA;IACH,CAAC;IACD,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAA;IACvB,MAAM,MAAM,GAAG,GAAG,EAAE,CAAC,MAAM,GAAG,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAA;IAC9E,MAAM,WAAW,GAAG;QAClB,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAClD,GAAG,CAAC,IAAI,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACxD,CAAA;IAED,2EAA2E;IAC3E,0EAA0E;IAC1E,IAAI,EAAE,CAAC,WAAW,KAAK,aAAa,EAAE,CAAC;QACrC,MAAM,SAAS,GAAG,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC,UAAU,CAAC,CAAA;QAC/C,IAAI,GAAG,GAAG,MAAM,SAAS,CAAC,MAAM,EAAE,WAAW,CAAC,CAAA;QAC9C,MAAM,SAAS,GACb,GAAG,CAAC,MAAM,KAAK,GAAG,CAAC,CAAC,CAAC,uBAAuB,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;QAChG,IAAI,SAAS,EAAE,CAAC;YACd,MAAM,EAAE,GAAG,MAAM,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;YACtC,MAAM,EAAE,GAAG,MAAM,YAAY,CAAC,SAAS,EAAE,EAAE,CAAC,cAAc,EAAE,SAAS,EAAE,GAAG,CAAC,CAAA;YAC3E,IAAI,EAAE,CAAC,IAAI,KAAK,OAAO;gBAAE,OAAO,EAAE,CAAA;YAClC,GAAG,GAAG,MAAM,QAAQ,CAAC,GAAG,EAAE,EAAE,CAAC,SAAS,CAAC,CAAC,MAAM,EAAE,WAAW,CAAC,CAAA;YAC5D,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;gBACvB,MAAM,WAAW,GAAG,eAAe,CAAC,GAAG,CAAC,CAAA;gBACxC,IAAI,WAAW;oBAAE,OAAO,EAAE,IAAI,EAAE,aAAa,EAAE,WAAW,EAAE,CAAA;YAC9D,CAAC;QACH,CAAC;QACD,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAA;IAC1E,CAAC;IAED,4CAA4C;IAC5C,IAAI,CAAC,EAAE,CAAC,sBAAsB,EAAE,CAAC;QAC/B,MAAM,IAAI,KAAK,CACb,YAAY,EAAE,CAAC,QAAQ,4CAA4C,EAAE,CAAC,WAAW,eAAe,CACjG,CAAA;IACH,CAAC;IACD,MAAM,SAAS,GAAG,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC,UAAU,CAAC,CAAA;IAC/C,MAAM,EAAE,GAAG,MAAM,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;IAEtC,mEAAmE;IACnE,MAAM,QAAQ,GAAG,MAAM,SAAS,CAAC,EAAE,CAAC,sBAAsB,EAAE;QAC1D,MAAM,EAAE,MAAM;QACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;QAC/C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;YACnB,aAAa,EAAE;gBACb,UAAU,EAAE,KAAK,CAAC,OAAO,CAAC,QAAQ;gBAClC,uEAAuE;gBACvE,8CAA8C;gBAC9C,UAAU,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,oBAAoB,EAAE,CAAC,WAAW,CAAC,IAAI,EAAE,WAAW,EAAE,CAAC;aACnF;SACF,CAAC;KACH,CAAC,CAAA;IACF,IAAI,CAAC,QAAQ,CAAC,EAAE;QACd,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAA;IACpF,MAAM,EAAE,cAAc,EAAE,GAAG,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAA+B,CAAA;IAEhF,kFAAkF;IAClF,MAAM,EAAE,GAAG,MAAM,YAAY,CAAC,SAAS,EAAE,EAAE,CAAC,cAAc,EAAE,cAAc,EAAE,GAAG,CAAC,CAAA;IAChF,IAAI,EAAE,CAAC,IAAI,KAAK,OAAO;QAAE,OAAO,EAAE,CAAA;IAElC,8EAA8E;IAC9E,2EAA2E;IAC3E,yBAAyB;IACzB,MAAM,QAAQ,GAAG,CAAC,KAAa,EAAE,EAAE,CAAC,QAAQ,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,MAAM,EAAE,WAAW,CAAC,CAAA;IAE7E,IAAI,MAAM,GAAG,MAAM,QAAQ,CAAC,EAAE,CAAC,SAAS,CAAC,CAAA;IAEzC,2EAA2E;IAC3E,uEAAuE;IACvE,2EAA2E;IAC3E,wEAAwE;IACxE,uEAAuE;IACvE,mEAAmE;IACnE,IAAI,MAAM,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;QAC1B,MAAM,WAAW,GAAG,eAAe,CAAC,MAAM,CAAC,CAAA;QAC3C,IAAI,WAAW,EAAE,CAAC;YAChB,MAAM,OAAO,GAAG,EAAE,CAAC,oBAAoB;gBACrC,CAAC,CAAC,MAAM,oBAAoB,CAAC,SAAS,EAAE,EAAE,CAAC,oBAAoB,EAAE,WAAW,CAAC;gBAC7E,CAAC,CAAC,KAAK,CAAA;YACT,IAAI,CAAC,OAAO;gBAAE,OAAO,EAAE,IAAI,EAAE,aAAa,EAAE,WAAW,EAAE,CAAA;YACzD,MAAM,IAAI,GAAW,CAAC,GAAG,EAAE,EAAE,CAC3B,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC,UAAU,CAAC,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,EAAE,CAAC,CAAA;YACvF,MAAM,SAAS,GAAG,MAAM,aAAa,CAAC,IAAI,EAAE,WAAW,CAAC,OAAO,EAAE,OAAO,CAAC,CAAA;YACzE,IAAI,SAAS,CAAC,MAAM,KAAK,GAAG;gBAAE,OAAO,EAAE,IAAI,EAAE,aAAa,EAAE,WAAW,EAAE,CAAA;YACzE,MAAM,GAAG,MAAM,QAAQ,CAAC,EAAE,CAAC,SAAS,CAAC,CAAA;QACvC,CAAC;IACH,CAAC;IAED,wEAAwE;IACxE,2EAA2E;IAC3E,6EAA6E;IAC7E,0EAA0E;IAC1E,MAAM,SAAS,GACb,MAAM,CAAC,MAAM,KAAK,GAAG,CAAC,CAAC,CAAC,uBAAuB,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;IACtG,IAAI,SAAS,EAAE,CAAC;QACd,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,SAAS,EAAE,EAAE,CAAC,cAAc,EAAE,SAAS,EAAE,GAAG,CAAC,CAAA;QAC/E,IAAI,MAAM,CAAC,IAAI,KAAK,OAAO;YAAE,OAAO,MAAM,CAAA;QAC1C,MAAM,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,CAAA;QACzC,IAAI,MAAM,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;YAC1B,MAAM,WAAW,GAAG,eAAe,CAAC,MAAM,CAAC,CAAA;YAC3C,IAAI,WAAW;gBAAE,OAAO,EAAE,IAAI,EAAE,aAAa,EAAE,WAAW,EAAE,CAAA;QAC9D,CAAC;IACH,CAAC;IAED,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAA;AAChF,CAAC;AAED,qEAAqE;AACrE,8EAA8E;AAC9E,+EAA+E;AAC/E,kCAAkC;AAClC,MAAM,CAAC,KAAK,UAAU,wBAAwB,CAC5C,GAAgB,EAChB,EAAW,EACX,WAAmB,EACnB,aAAiC,EACjC,OAAmB,EAAE,EACrB,SAAS,GAAG,CAAC,EACb,aAAa,GAAG,OAAO,EACvB,MAAoD;IAEpD,+EAA+E;IAC/E,MAAM,IAAI,GAAW,CAAC,GAAG,EAAE,EAAE,CAC3B,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC,UAAU,CAAC,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,EAAE,CAAC,CAAA;IACvF,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,SAAS,EAAE,KAAK,EAAE,EAAE,CAAC;QAC/C,MAAM,MAAM,GAAG,MAAM,gBAAgB,CAAC,GAAG,EAAE,EAAE,EAAE,WAAW,EAAE,IAAI,CAAC,CAAA;QACjE,IAAI,MAAM,CAAC,IAAI,KAAK,QAAQ;YAAE,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,CAAA;QACjF,MAAM,aAAa,CAAC,MAAM,CAAC,WAAW,CAAC,GAAG,EAAE,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,CAAA;QACpE,MAAM,aAAa,CAAC,IAAI,EAAE,MAAM,CAAC,WAAW,CAAC,OAAO,EAAE,aAAa,EAAE,MAAM,CAAC,CAAA;IAC9E,CAAC;IACD,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAA;AAC/D,CAAC;AAED,2EAA2E;AAC3E,2EAA2E;AAC3E,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,GAAgB,EAAE,EAAW,EAAE,IAAY;IAC7E,OAAO,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC,UAAU,CAAC,CAAC,GAAG,EAAE,CAAC,MAAM,GAAG,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAA;AACnF,CAAC"} | ||
| {"version":3,"file":"agent.js","sourceRoot":"","sources":["../src/agent.ts"],"names":[],"mappings":"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"} |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"identity-local.d.ts","sourceRoot":"","sources":["../src/identity-local.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAmB,WAAW,EAAE,MAAM,YAAY,CAAA;AAC9D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAA;AA+BrD,wBAAgB,YAAY,IAAI,WAAW,CAS1C;AAED,wBAAsB,wBAAwB,CAC5C,IAAI,GAAE;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAO,GAC/D,OAAO,CAAC,WAAW,CAAC,CAkBtB;AAqBD,wBAAgB,+BAA+B,IAAI,gBAAgB,CAqBlE"} | ||
| {"version":3,"file":"identity-local.d.ts","sourceRoot":"","sources":["../src/identity-local.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAmB,WAAW,EAAE,MAAM,YAAY,CAAA;AAC9D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAA;AA+BrD,wBAAgB,YAAY,IAAI,WAAW,CAS1C;AAED,wBAAsB,wBAAwB,CAC5C,IAAI,GAAE;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAO,GAC/D,OAAO,CAAC,WAAW,CAAC,CAkBtB;AAqBD,wBAAgB,+BAA+B,IAAI,gBAAgB,CAwBlE"} |
@@ -85,2 +85,5 @@ // @aauth/proxy/local — the Node-only identity adapter for the stdio server. | ||
| return { | ||
| peek() { | ||
| return cached ?? undefined; | ||
| }, | ||
| async resolve({ local }) { | ||
@@ -87,0 +90,0 @@ if (cached) { |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"identity-local.js","sourceRoot":"","sources":["../src/identity-local.ts"],"names":[],"mappings":"AAAA,4EAA4E;AAC5E,EAAE;AACF,8EAA8E;AAC9E,4EAA4E;AAC5E,gFAAgF;AAChF,yCAAyC;AACzC,gFAAgF;AAChF,+EAA+E;AAC/E,2EAA2E;AAC3E,sFAAsF;AAEtF,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AACtC,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAA;AAIxF,6EAA6E;AAC7E,2EAA2E;AAC3E,iEAAiE;AACjE,8EAA8E;AAC9E,2EAA2E;AAC3E,SAAS,qBAAqB,CAAyD,GAAM;IAC3F,IAAI,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,KAAK,OAAO;QAAE,OAAO,GAAG,CAAA;IAC9C,MAAM,OAAO,GACX,GAAG,CAAC,GAAG,KAAK,KAAK,IAAI,GAAG,CAAC,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS;QACtD,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,KAAK,IAAI,GAAG,CAAC,GAAG,KAAK,OAAO,CAAC,CAAC,CAAC,OAAO;YACpD,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,IAAI,IAAI,GAAG,CAAC,GAAG,KAAK,OAAO,CAAC,CAAC,CAAC,OAAO;gBACnD,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,IAAI,IAAI,GAAG,CAAC,GAAG,KAAK,OAAO,CAAC,CAAC,CAAC,OAAO;oBACnD,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,IAAI,IAAI,GAAG,CAAC,GAAG,KAAK,OAAO,CAAC,CAAC,CAAC,OAAO;wBACnD,CAAC,CAAC,SAAS,CAAA;IACb,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,wEAAwE;QACxE,MAAM,IAAI,KAAK,CACb,+FAA+F,GAAG,CAAC,GAAG,QAAQ,GAAG,CAAC,GAAG,EAAE,CACxH,CAAA;IACH,CAAC;IACD,OAAO,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,OAAO,EAAE,CAAA;AACjC,CAAC;AAED,SAAS,QAAQ,CAAC,IAAY;IAC5B,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;IAC/B,IAAI,CAAC,KAAK;QAAE,MAAM,IAAI,KAAK,CAAC,yCAAyC,IAAI,EAAE,CAAC,CAAA;IAC5E,OAAO,KAAK,CAAA;AACd,CAAC;AAED,MAAM,UAAU,YAAY;IAC1B,MAAM,KAAK,GAAG,QAAQ,CAAC,cAAc,CAAC,CAAA;IACtC,MAAM,UAAU,GAAG,QAAQ,CAAC,mBAAmB,CAAC,CAAA;IAEhD,MAAM,OAAO,GACX,OAAO,CAAC,GAAG,CAAC,uBAAuB;QACnC,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC,oBAAoB,IAAI,+BAA+B,EAAE,MAAM,CAAC,CAAA;IAE3F,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,eAAe,EAAE,qBAAqB,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,EAAE,CAAA;AAC3F,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,wBAAwB,CAC5C,OAA8D,EAAE;IAEhE,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,IAAI,OAAO,CAAC,GAAG,CAAC,eAAe,IAAI,kBAAkB,EAAE,CAAC,CAAC,CAAC,CAAA;IACxF,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,MAAM,IAAI,KAAK,CAAC,oFAAoF,CAAC,CAAA;IACvG,CAAC;IAED,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,OAAO,CAAC,GAAG,CAAC,YAAY,IAAI,cAAc,CAAC,QAAQ,CAAC,EAAE,eAAe,CAAA;IACjG,IAAI,CAAC,KAAK;QAAE,MAAM,IAAI,KAAK,CAAC,gDAAgD,QAAQ,oBAAoB,CAAC,CAAA;IAEzG,+EAA+E;IAC/E,wCAAwC;IACxC,MAAM,EAAE,UAAU,EAAE,YAAY,EAAE,GAAG,MAAM,gBAAgB,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAA;IAE5F,OAAO;QACL,KAAK;QACL,eAAe,EAAE,qBAAqB,CAAC,UAAU,CAA+B;QAChF,UAAU,EAAE,YAAY,CAAC,GAAG;KAC7B,CAAA;AACH,CAAC;AAED,gFAAgF;AAChF,SAAS,YAAY,CAAC,GAAW,EAAE,UAAU,GAAG,EAAE;IAChD,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAA;QACxF,OAAO,OAAO,OAAO,CAAC,GAAG,KAAK,QAAQ,IAAI,OAAO,CAAC,GAAG,GAAG,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAA;IACxF,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAA;IACd,CAAC;AACH,CAAC;AAED,6EAA6E;AAC7E,8EAA8E;AAC9E,8EAA8E;AAC9E,+EAA+E;AAC/E,mCAAmC;AACnC,EAAE;AACF,+EAA+E;AAC/E,gFAAgF;AAChF,6CAA6C;AAC7C,MAAM,UAAU,+BAA+B;IAC7C,IAAI,MAAM,GAAuB,IAAI,CAAA;IACrC,OAAO;QACL,KAAK,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE;YACrB,IAAI,MAAM,EAAE,CAAC;gBACX,0DAA0D;gBAC1D,IAAI,OAAO,CAAC,GAAG,CAAC,uBAAuB;oBAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,CAAA;gBAC9E,wDAAwD;gBACxD,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,UAAU,CAAC;oBAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,CAAA;gBAC3E,MAAM,GAAG,IAAI,CAAA;YACf,CAAC;YACD,IAAI,OAAO,CAAC,GAAG,CAAC,uBAAuB,EAAE,CAAC;gBACxC,MAAM,GAAG,YAAY,EAAE,CAAA;gBACvB,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,CAAA;YACvC,CAAC;YACD,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,eAAe,IAAI,kBAAkB,EAAE,CAAC,CAAC,CAAC,CAAA;YACvE,IAAI,CAAC,QAAQ;gBAAE,OAAO,EAAE,IAAI,EAAE,gBAAgB,EAAE,CAAA;YAChD,MAAM,GAAG,MAAM,wBAAwB,CAAC,EAAE,KAAK,EAAE,CAAC,CAAA;YAClD,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,CAAA;QACvC,CAAC;KACF,CAAA;AACH,CAAC"} | ||
| {"version":3,"file":"identity-local.js","sourceRoot":"","sources":["../src/identity-local.ts"],"names":[],"mappings":"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"} |
@@ -12,3 +12,4 @@ import type { ProxyConfig } from './agent.js'; | ||
| }): Promise<BootstrapStatus>; | ||
| peek?(): ProxyConfig | undefined; | ||
| } | ||
| //# sourceMappingURL=identity.d.ts.map |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"identity.d.ts","sourceRoot":"","sources":["../src/identity.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AAE7C,MAAM,MAAM,eAAe,GACvB;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,GAAG,EAAE,WAAW,CAAA;CAAE,GACnC;IAAE,IAAI,EAAE,gBAAgB,CAAA;CAAE,CAAA;AAE9B,MAAM,WAAW,gBAAgB;IAI/B,OAAO,CAAC,GAAG,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,eAAe,CAAC,CAAA;CAC3D"} | ||
| {"version":3,"file":"identity.d.ts","sourceRoot":"","sources":["../src/identity.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AAE7C,MAAM,MAAM,eAAe,GACvB;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,GAAG,EAAE,WAAW,CAAA;CAAE,GACnC;IAAE,IAAI,EAAE,gBAAgB,CAAA;CAAE,CAAA;AAE9B,MAAM,WAAW,gBAAgB;IAI/B,OAAO,CAAC,GAAG,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,eAAe,CAAC,CAAA;IAK1D,IAAI,CAAC,IAAI,WAAW,GAAG,SAAS,CAAA;CACjC"} |
+7
-4
@@ -1,3 +0,6 @@ | ||
| export { invokeAtResource, invokeAtResourceComplete, makeAgentPoll, pollUntilDone } from './agent.js'; | ||
| export type { AgentSigningKey, Interaction, InteractionHandler, InvokeArgs, InvokeResult, ProxyConfig, PSTokenHints, } from './agent.js'; | ||
| export { flushPersonTokens, invokeAtResource, invokeAtResourceComplete, makeAgentPoll, obtainPersonToken, pollUntilDone, } from './agent.js'; | ||
| export type { AgentSigningKey, Interaction, InteractionHandler, InvokeArgs, InvokeOptions, InvokeResult, ProxyConfig, PSTokenHints, SessionTokenStore, } from './agent.js'; | ||
| export { isKnownAccessMode, KNOWN_ACCESS_MODES, planAccessMode, planReason } from './access-mode.js'; | ||
| export type { AccessModePlan, AgentSetup, KnownAccessMode } from './access-mode.js'; | ||
| export { agentTokenPs, decodeJwtHeader, decodeJwtPayload, jwkThumbprint, jwtExp } from './jwt.js'; | ||
| export { buildProxyTools } from './tools.js'; | ||
@@ -12,5 +15,5 @@ export type { ProxyDeps } from './tools.js'; | ||
| export type { CachedIndex, RegistryCache, RegistryEntry, RegistryIndex } from './registry.js'; | ||
| export { createFsL1Store } from './store.js'; | ||
| export type { AccessMode, L1Entry, L1Store } from './store.js'; | ||
| export { createFsL1Store, createFsPersonTokenStore, createMemoryPersonTokenStore, } from './store.js'; | ||
| export type { AccessMode, L1Entry, L1Store, PersonTokenKey, PersonTokenStore, } from './store.js'; | ||
| export * from './vocab/index.js'; | ||
| //# sourceMappingURL=index.d.ts.map |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,gBAAgB,EAAE,wBAAwB,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;AACrG,YAAY,EACV,eAAe,EACf,WAAW,EACX,kBAAkB,EAClB,UAAU,EACV,YAAY,EACZ,WAAW,EACX,YAAY,GACb,MAAM,YAAY,CAAA;AAEnB,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAC5C,YAAY,EAAE,SAAS,EAAE,MAAM,YAAY,CAAA;AAE3C,YAAY,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAA;AAEtE,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAA;AAC5C,YAAY,EAAE,aAAa,EAAE,MAAM,WAAW,CAAA;AAE9C,OAAO,EACL,oBAAoB,EACpB,aAAa,EACb,wBAAwB,EACxB,yBAAyB,EACzB,cAAc,EACd,SAAS,GACV,MAAM,eAAe,CAAA;AACtB,YAAY,EACV,iBAAiB,EACjB,QAAQ,EACR,eAAe,EACf,WAAW,EACX,eAAe,GAChB,MAAM,eAAe,CAAA;AAEtB,OAAO,EAAE,qBAAqB,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AACjF,YAAY,EAAE,WAAW,EAAE,aAAa,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,eAAe,CAAA;AAE7F,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAC5C,YAAY,EAAE,UAAU,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAA;AAE9D,cAAc,kBAAkB,CAAA"} | ||
| {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAMA,OAAO,EACL,iBAAiB,EACjB,gBAAgB,EAChB,wBAAwB,EACxB,aAAa,EACb,iBAAiB,EACjB,aAAa,GACd,MAAM,YAAY,CAAA;AACnB,YAAY,EACV,eAAe,EACf,WAAW,EACX,kBAAkB,EAClB,UAAU,EACV,aAAa,EACb,YAAY,EACZ,WAAW,EACX,YAAY,EACZ,iBAAiB,GAClB,MAAM,YAAY,CAAA;AAEnB,OAAO,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AACpG,YAAY,EAAE,cAAc,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AAEnF,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,UAAU,CAAA;AAEjG,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAC5C,YAAY,EAAE,SAAS,EAAE,MAAM,YAAY,CAAA;AAE3C,YAAY,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAA;AAEtE,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAA;AAC5C,YAAY,EAAE,aAAa,EAAE,MAAM,WAAW,CAAA;AAE9C,OAAO,EACL,oBAAoB,EACpB,aAAa,EACb,wBAAwB,EACxB,yBAAyB,EACzB,cAAc,EACd,SAAS,GACV,MAAM,eAAe,CAAA;AACtB,YAAY,EACV,iBAAiB,EACjB,QAAQ,EACR,eAAe,EACf,WAAW,EACX,eAAe,GAChB,MAAM,eAAe,CAAA;AAEtB,OAAO,EAAE,qBAAqB,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AACjF,YAAY,EAAE,WAAW,EAAE,aAAa,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,eAAe,CAAA;AAE7F,OAAO,EACL,eAAe,EACf,wBAAwB,EACxB,4BAA4B,GAC7B,MAAM,YAAY,CAAA;AACnB,YAAY,EACV,UAAU,EACV,OAAO,EACP,OAAO,EACP,cAAc,EACd,gBAAgB,GACjB,MAAM,YAAY,CAAA;AAEnB,cAAc,kBAAkB,CAAA"} |
+4
-2
@@ -6,3 +6,5 @@ // Public API for @aauth/proxy (core, workerd-safe — no fs/stdio/local-keys at | ||
| // separately from "@aauth/proxy/local". | ||
| export { invokeAtResource, invokeAtResourceComplete, makeAgentPoll, pollUntilDone } from './agent.js'; | ||
| export { flushPersonTokens, invokeAtResource, invokeAtResourceComplete, makeAgentPoll, obtainPersonToken, pollUntilDone, } from './agent.js'; | ||
| export { isKnownAccessMode, KNOWN_ACCESS_MODES, planAccessMode, planReason } from './access-mode.js'; | ||
| export { agentTokenPs, decodeJwtHeader, decodeJwtPayload, jwkThumbprint, jwtExp } from './jwt.js'; | ||
| export { buildProxyTools } from './tools.js'; | ||
@@ -12,4 +14,4 @@ export { canonicalizeHost } from './host.js'; | ||
| export { createFsRegistryCache, fetchRegistry, registryUrl } from './registry.js'; | ||
| export { createFsL1Store } from './store.js'; | ||
| export { createFsL1Store, createFsPersonTokenStore, createMemoryPersonTokenStore, } from './store.js'; | ||
| export * from './vocab/index.js'; | ||
| //# sourceMappingURL=index.js.map |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,0EAA0E;AAC1E,6EAA6E;AAC7E,yEAAyE;AACzE,wCAAwC;AAExC,OAAO,EAAE,gBAAgB,EAAE,wBAAwB,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;AAWrG,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAK5C,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAA;AAG5C,OAAO,EACL,oBAAoB,EACpB,aAAa,EACb,wBAAwB,EACxB,yBAAyB,EACzB,cAAc,EACd,SAAS,GACV,MAAM,eAAe,CAAA;AAStB,OAAO,EAAE,qBAAqB,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAGjF,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAG5C,cAAc,kBAAkB,CAAA"} | ||
| {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,0EAA0E;AAC1E,6EAA6E;AAC7E,yEAAyE;AACzE,wCAAwC;AAExC,OAAO,EACL,iBAAiB,EACjB,gBAAgB,EAChB,wBAAwB,EACxB,aAAa,EACb,iBAAiB,EACjB,aAAa,GACd,MAAM,YAAY,CAAA;AAanB,OAAO,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAGpG,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,UAAU,CAAA;AAEjG,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAK5C,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAA;AAG5C,OAAO,EACL,oBAAoB,EACpB,aAAa,EACb,wBAAwB,EACxB,yBAAyB,EACzB,cAAc,EACd,SAAS,GACV,MAAM,eAAe,CAAA;AAStB,OAAO,EAAE,qBAAqB,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAGjF,OAAO,EACL,eAAe,EACf,wBAAwB,EACxB,4BAA4B,GAC7B,MAAM,YAAY,CAAA;AASnB,cAAc,kBAAkB,CAAA"} |
| import type { AccessMode, L1Entry } from './store.js'; | ||
| import type { InvocationPlan, InvokeArgs, OpDetail, OpSummary, VocabAdapter } from './vocab/index.js'; | ||
| import type { InvocationPlan, InvokeArgs, OpDetail, OperationAnnotations, OpSummary, VocabAdapter } from './vocab/index.js'; | ||
| export interface AAuthResourceMeta { | ||
| issuer: string; | ||
| client_name?: string; | ||
| name?: string; | ||
| description?: string; | ||
@@ -10,3 +11,3 @@ access_mode?: AccessMode; | ||
| authorization_endpoint?: string; | ||
| r3_vocabularies?: Record<string, string | Record<string, string>>; | ||
| r3_vocabularies?: Record<string, string>; | ||
| jwks_uri?: string; | ||
@@ -16,3 +17,3 @@ } | ||
| vocabUri: string; | ||
| docUrl: string | Record<string, string>; | ||
| docUrl: string; | ||
| adapter: VocabAdapter; | ||
@@ -37,2 +38,6 @@ } | ||
| plan: InvocationPlan; | ||
| /** This operation's own access annotations, {} when it carries none. */ | ||
| annotations: OperationAnnotations; | ||
| /** The mode that applies to this call: annotation if present, else the resource's. */ | ||
| accessMode: string; | ||
| } | ||
@@ -39,0 +44,0 @@ export declare function routeOperation(l1: L1Entry, opId: string, args: InvokeArgs, docCache?: DocCache): Promise<RoutedOperation>; |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"resource.d.ts","sourceRoot":"","sources":["../src/resource.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,YAAY,CAAA;AACrD,OAAO,KAAK,EACV,cAAc,EACd,UAAU,EACV,QAAQ,EACR,SAAS,EACT,YAAY,EACb,MAAM,kBAAkB,CAAA;AAEzB,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,MAAM,CAAA;IACd,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,WAAW,CAAC,EAAE,UAAU,CAAA;IACxB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,sBAAsB,CAAC,EAAE,MAAM,CAAA;IAI/B,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAA;IACjE,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB;AAED,MAAM,WAAW,WAAW;IAC1B,QAAQ,EAAE,MAAM,CAAA;IAChB,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IACvC,OAAO,EAAE,YAAY,CAAA;CACtB;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,MAAM,CAAA;IACd,IAAI,EAAE,iBAAiB,CAAA;IACvB,YAAY,EAAE,WAAW,EAAE,CAAA;CAC5B;AAED,wBAAsB,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC,CAwB/E;AAuCD,MAAM,WAAW,QAAQ;IACvB,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,GAAG,SAAS,CAAC,CAAA;IAC9C,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;CAC9C;AAED,wBAAgB,oBAAoB,IAAI,QAAQ,CAU/C;AA+BD,wBAAsB,yBAAyB,CAC7C,EAAE,EAAE,OAAO,EACX,KAAK,CAAC,EAAE,MAAM,EACd,QAAQ,GAAE,QAA0B,GACnC,OAAO,CAAC,SAAS,EAAE,CAAC,CAStB;AAED,wBAAsB,wBAAwB,CAC5C,EAAE,EAAE,OAAO,EACX,KAAK,EAAE,MAAM,EAAE,EACf,QAAQ,GAAE,QAA0B,GACnC,OAAO,CAAC,QAAQ,EAAE,CAAC,CASrB;AAED,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,YAAY,CAAA;IACrB,IAAI,EAAE,cAAc,CAAA;CACrB;AAMD,wBAAsB,cAAc,CAClC,EAAE,EAAE,OAAO,EACX,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,UAAU,EAChB,QAAQ,GAAE,QAA0B,GACnC,OAAO,CAAC,eAAe,CAAC,CAW1B;AAQD,wBAAgB,SAAS,CAAC,CAAC,EAAE,eAAe,GAAG,OAAO,CAiBrD"} | ||
| {"version":3,"file":"resource.d.ts","sourceRoot":"","sources":["../src/resource.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,YAAY,CAAA;AACrD,OAAO,KAAK,EACV,cAAc,EACd,UAAU,EACV,QAAQ,EACR,oBAAoB,EACpB,SAAS,EACT,YAAY,EACb,MAAM,kBAAkB,CAAA;AAEzB,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,MAAM,CAAA;IACd,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,WAAW,CAAC,EAAE,UAAU,CAAA;IACxB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,sBAAsB,CAAC,EAAE,MAAM,CAAA;IAG/B,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IACxC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB;AAED,MAAM,WAAW,WAAW;IAC1B,QAAQ,EAAE,MAAM,CAAA;IAChB,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,EAAE,YAAY,CAAA;CACtB;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,MAAM,CAAA;IACd,IAAI,EAAE,iBAAiB,CAAA;IACvB,YAAY,EAAE,WAAW,EAAE,CAAA;CAC5B;AAED,wBAAsB,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC,CAwB/E;AAuCD,MAAM,WAAW,QAAQ;IACvB,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,GAAG,SAAS,CAAC,CAAA;IAC9C,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;CAC9C;AAED,wBAAgB,oBAAoB,IAAI,QAAQ,CAU/C;AA2CD,wBAAsB,yBAAyB,CAC7C,EAAE,EAAE,OAAO,EACX,KAAK,CAAC,EAAE,MAAM,EACd,QAAQ,GAAE,QAA0B,GACnC,OAAO,CAAC,SAAS,EAAE,CAAC,CAStB;AAED,wBAAsB,wBAAwB,CAC5C,EAAE,EAAE,OAAO,EACX,KAAK,EAAE,MAAM,EAAE,EACf,QAAQ,GAAE,QAA0B,GACnC,OAAO,CAAC,QAAQ,EAAE,CAAC,CASrB;AAED,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,YAAY,CAAA;IACrB,IAAI,EAAE,cAAc,CAAA;IACpB,wEAAwE;IACxE,WAAW,EAAE,oBAAoB,CAAA;IACjC,sFAAsF;IACtF,UAAU,EAAE,MAAM,CAAA;CACnB;AAMD,wBAAsB,cAAc,CAClC,EAAE,EAAE,OAAO,EACX,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,UAAU,EAChB,QAAQ,GAAE,QAA0B,GACnC,OAAO,CAAC,eAAe,CAAC,CAiB1B;AAQD,wBAAgB,SAAS,CAAC,CAAC,EAAE,eAAe,GAAG,OAAO,CAiBrD"} |
+30
-10
@@ -11,3 +11,3 @@ // Fetch + validate a resource's well-known doc; pick vocabulary adapters | ||
| import { canonicalizeHost } from './host.js'; | ||
| import { getAdapter, supportedVocabUris } from './vocab/index.js'; | ||
| import { effectiveAccessMode, getAdapter, supportedVocabUris } from './vocab/index.js'; | ||
| export async function fetchResource(hostOrUrl) { | ||
@@ -43,6 +43,8 @@ const canonical = canonicalizeHost(hostOrUrl); | ||
| } | ||
| if (meta.access_mode !== undefined && | ||
| !['agent-token', 'aauth-access-token', 'auth-token'].includes(meta.access_mode)) { | ||
| throw new Error(`resource ${host}: invalid access_mode ${meta.access_mode}`); | ||
| } | ||
| // access_mode is NOT validated against a closed list. The value set is an IANA | ||
| // registry (protocol §AAuth Access Mode Value Registry) and the declaration is | ||
| // advisory, so an unrecognized value is not an error — the agent adds the | ||
| // resource, treats the mode as undeclared, and reads the runtime | ||
| // AAuth-Requirement instead (see access-mode.ts). | ||
| // | ||
| // description is enforced at the registry on submit; agent-proxy-side is lenient | ||
@@ -55,3 +57,3 @@ // so direct-URL adds of resources without a description still work. | ||
| const docUrl = advertised[uri]; | ||
| if (!docUrl) | ||
| if (typeof docUrl !== 'string' || !docUrl) | ||
| continue; | ||
@@ -102,2 +104,14 @@ const adapter = getAdapter(uri); | ||
| } | ||
| // Resolve an operation's access annotations against the resource-wide | ||
| // access_mode and flatten the result onto the summary the LLM reads: `access_mode` | ||
| // is always the mode that actually applies to THIS operation, and `budget` appears | ||
| // only when the operation draws one down. Advisory throughout — the agent never | ||
| // enforces either, and a resource may return any AAuth-Requirement at runtime. | ||
| function withEffectiveAccess(op, resourceWide) { | ||
| const resolved = { ...op, access_mode: effectiveAccessMode(op.annotations, resourceWide) }; | ||
| if (op.annotations?.budget === true) | ||
| resolved.budget = true; | ||
| delete resolved.annotations; | ||
| return resolved; | ||
| } | ||
| export async function listOperationsForResource(l1, query, docCache = defaultDocCache) { | ||
@@ -108,3 +122,3 @@ const out = []; | ||
| for (const summary of v.adapter.listOperations(doc, query)) { | ||
| out.push(summary); | ||
| out.push(withEffectiveAccess(summary, l1.access_mode)); | ||
| } | ||
@@ -119,3 +133,3 @@ } | ||
| for (const detail of v.adapter.getOperations(doc, opIds)) { | ||
| out.push(detail); | ||
| out.push(withEffectiveAccess(detail, l1.access_mode)); | ||
| } | ||
@@ -134,3 +148,9 @@ } | ||
| const plan = v.adapter.buildInvocation(doc, opId, args); | ||
| return { adapter: v.adapter, plan }; | ||
| const annotations = v.adapter.annotationsFor(doc, opId); | ||
| return { | ||
| adapter: v.adapter, | ||
| plan, | ||
| annotations, | ||
| accessMode: effectiveAccessMode(annotations, l1.access_mode), | ||
| }; | ||
| } | ||
@@ -155,3 +175,3 @@ catch { | ||
| issuer: r.meta.issuer.replace(/\/+$/, ''), | ||
| name: r.meta.client_name?.trim() || r.host, | ||
| name: r.meta.name?.trim() || r.meta.client_name?.trim() || r.host, | ||
| description: r.meta.description ?? '', | ||
@@ -158,0 +178,0 @@ access_mode: inferredMode, |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"resource.js","sourceRoot":"","sources":["../src/resource.ts"],"names":[],"mappings":"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"} | ||
| {"version":3,"file":"resource.js","sourceRoot":"","sources":["../src/resource.ts"],"names":[],"mappings":"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"} |
+34
-2
@@ -1,2 +0,12 @@ | ||
| export type AccessMode = 'agent-token' | 'aauth-access-token' | 'auth-token'; | ||
| import type { KnownAccessMode } from './access-mode.js'; | ||
| export type { KnownAccessMode } from './access-mode.js'; | ||
| /** | ||
| * `access_mode` as it arrives from a resource's well-known document. | ||
| * | ||
| * Not a closed union: the value set is an IANA registry (protocol §AAuth Access | ||
| * Mode Value Registry), so an agent must carry unrecognized values intact rather | ||
| * than reject them. `KnownAccessMode` names the ones this build can plan against; | ||
| * anything else is treated as undeclared (see access-mode.ts). | ||
| */ | ||
| export type AccessMode = KnownAccessMode | (string & {}); | ||
| export interface L1Entry { | ||
@@ -13,3 +23,3 @@ resource: string; | ||
| vocabUri: string; | ||
| docUrl: string | Record<string, string>; | ||
| docUrl: string; | ||
| }>; | ||
@@ -29,2 +39,24 @@ added: string; | ||
| }): L1Store; | ||
| export interface PersonTokenKey { | ||
| /** The resource's HTTPS URL — the `aud` of the issued token. */ | ||
| resource: string; | ||
| /** The mission the agent is operating under, when it named one. */ | ||
| mission_s256?: string; | ||
| } | ||
| export interface PersonTokenStore { | ||
| /** | ||
| * A cached, unexpired person token for this key, or undefined. Presenting an | ||
| * `agentJkt` other than the one the cache holds flushes the entire cache first. | ||
| */ | ||
| get(key: PersonTokenKey, agentJkt: string): Promise<string | undefined>; | ||
| set(key: PersonTokenKey, agentJkt: string, token: string, expiresAt: number): Promise<void>; | ||
| /** Drop every cached person token. */ | ||
| flush(): Promise<void>; | ||
| } | ||
| /** Process-lifetime person-token cache. The default for hosts that inject none. */ | ||
| export declare function createMemoryPersonTokenStore(): PersonTokenStore; | ||
| /** Filesystem-backed person-token cache at ~/.aauth/proxy/person-tokens.json. */ | ||
| export declare function createFsPersonTokenStore(opts?: { | ||
| dir?: string; | ||
| }): PersonTokenStore; | ||
| //# sourceMappingURL=store.d.ts.map |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../src/store.ts"],"names":[],"mappings":"AAYA,MAAM,MAAM,UAAU,GAAG,aAAa,GAAG,oBAAoB,GAAG,YAAY,CAAA;AAE5E,MAAM,WAAW,OAAO;IACtB,QAAQ,EAAE,MAAM,CAAA;IAChB,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,MAAM,CAAA;IACd,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,EAAE,MAAM,CAAA;IACnB,WAAW,EAAE,UAAU,CAAA;IACvB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,sBAAsB,CAAC,EAAE,MAAM,CAAA;IAG/B,aAAa,EAAE,KAAK,CAAC;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;KAAE,CAAC,CAAA;IACnF,KAAK,EAAE,MAAM,CAAA;IACb,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAKD,MAAM,WAAW,OAAO;IACtB,IAAI,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC,CAAA;IAC1B,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,GAAG,SAAS,CAAC,CAAA;IAC/C,MAAM,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IACrC,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAA;IACtC,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;CACnC;AAQD,wBAAgB,eAAe,CAAC,IAAI,GAAE;IAAE,GAAG,CAAC,EAAE,MAAM,CAAA;CAAO,GAAG,OAAO,CA+CpE"} | ||
| {"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../src/store.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AAEvD,YAAY,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AAEvD;;;;;;;GAOG;AACH,MAAM,MAAM,UAAU,GAAG,eAAe,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC,CAAA;AAExD,MAAM,WAAW,OAAO;IACtB,QAAQ,EAAE,MAAM,CAAA;IAChB,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,MAAM,CAAA;IACd,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,EAAE,MAAM,CAAA;IACnB,WAAW,EAAE,UAAU,CAAA;IACvB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,sBAAsB,CAAC,EAAE,MAAM,CAAA;IAE/B,aAAa,EAAE,KAAK,CAAC;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;IAC1D,KAAK,EAAE,MAAM,CAAA;IACb,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAKD,MAAM,WAAW,OAAO;IACtB,IAAI,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC,CAAA;IAC1B,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,GAAG,SAAS,CAAC,CAAA;IAC/C,MAAM,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IACrC,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAA;IACtC,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;CACnC;AAQD,wBAAgB,eAAe,CAAC,IAAI,GAAE;IAAE,GAAG,CAAC,EAAE,MAAM,CAAA;CAAO,GAAG,OAAO,CA+CpE;AAeD,MAAM,WAAW,cAAc;IAC7B,gEAAgE;IAChE,QAAQ,EAAE,MAAM,CAAA;IAChB,mEAAmE;IACnE,YAAY,CAAC,EAAE,MAAM,CAAA;CACtB;AAED,MAAM,WAAW,gBAAgB;IAC/B;;;OAGG;IACH,GAAG,CAAC,GAAG,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAAA;IACvE,GAAG,CAAC,GAAG,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAC3F,sCAAsC;IACtC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;CACvB;AA4BD,mFAAmF;AACnF,wBAAgB,4BAA4B,IAAI,gBAAgB,CA6B/D;AAED,iFAAiF;AACjF,wBAAgB,wBAAwB,CAAC,IAAI,GAAE;IAAE,GAAG,CAAC,EAAE,MAAM,CAAA;CAAO,GAAG,gBAAgB,CA+CtF"} |
+93
-3
@@ -1,5 +0,7 @@ | ||
| // L1 — added resources. The L1Store interface lets a host inject its own | ||
| // backend; the stdio server uses the filesystem default (createFsL1Store), | ||
| // backed by ~/.aauth/proxy/resources.json. | ||
| // L1 — added resources, plus the person-token cache. | ||
| // | ||
| // The L1Store interface lets a host inject its own backend; the stdio server | ||
| // uses the filesystem default (createFsL1Store), backed by | ||
| // ~/.aauth/proxy/resources.json. | ||
| // | ||
| // The agent proxy writes here on add_resource (always), on first successful auth at a | ||
@@ -64,2 +66,90 @@ // resource (touches last_used), and on remove_resource. No PS-side state is | ||
| } | ||
| function cacheKey(key) { | ||
| return `${key.resource} ${key.mission_s256 ?? ''}`; | ||
| } | ||
| // 30s of slack so a token isn't handed out moments before it expires mid-flight. | ||
| const EXPIRY_SKEW_SECS = 30; | ||
| function usable(rec) { | ||
| if (!rec) | ||
| return undefined; | ||
| return rec.expires_at - EXPIRY_SKEW_SECS > Date.now() / 1000 ? rec.person_token : undefined; | ||
| } | ||
| /** Process-lifetime person-token cache. The default for hosts that inject none. */ | ||
| export function createMemoryPersonTokenStore() { | ||
| let jkt; | ||
| const tokens = new Map(); | ||
| return { | ||
| async get(key, agentJkt) { | ||
| if (jkt !== agentJkt) { | ||
| tokens.clear(); | ||
| jkt = agentJkt; | ||
| return undefined; | ||
| } | ||
| return usable(tokens.get(cacheKey(key))); | ||
| }, | ||
| async set(key, agentJkt, token, expiresAt) { | ||
| if (jkt !== agentJkt) { | ||
| tokens.clear(); | ||
| jkt = agentJkt; | ||
| } | ||
| tokens.set(cacheKey(key), { | ||
| resource: key.resource, | ||
| ...(key.mission_s256 ? { mission_s256: key.mission_s256 } : {}), | ||
| person_token: token, | ||
| expires_at: expiresAt, | ||
| }); | ||
| }, | ||
| async flush() { | ||
| tokens.clear(); | ||
| jkt = undefined; | ||
| }, | ||
| }; | ||
| } | ||
| /** Filesystem-backed person-token cache at ~/.aauth/proxy/person-tokens.json. */ | ||
| export function createFsPersonTokenStore(opts = {}) { | ||
| const stateDir = opts.dir ?? join(homedir(), '.aauth', 'proxy'); | ||
| const path = join(stateDir, 'person-tokens.json'); | ||
| function load() { | ||
| if (!existsSync(path)) | ||
| return { tokens: [] }; | ||
| try { | ||
| return JSON.parse(readFileSync(path, 'utf8')); | ||
| } | ||
| catch { | ||
| return { tokens: [] }; | ||
| } | ||
| } | ||
| function save(file) { | ||
| mkdirSync(dirname(path), { recursive: true }); | ||
| writeFileSync(path, JSON.stringify(file, null, 2), { mode: 0o600 }); | ||
| } | ||
| return { | ||
| async get(key, agentJkt) { | ||
| const file = load(); | ||
| if (file.agent_jkt !== agentJkt) { | ||
| save({ agent_jkt: agentJkt, tokens: [] }); | ||
| return undefined; | ||
| } | ||
| const k = cacheKey(key); | ||
| return usable(file.tokens.find((t) => cacheKey(t) === k)); | ||
| }, | ||
| async set(key, agentJkt, token, expiresAt) { | ||
| const file = load(); | ||
| const next = file.agent_jkt === agentJkt ? file : { agent_jkt: agentJkt, tokens: [] }; | ||
| next.agent_jkt = agentJkt; | ||
| const k = cacheKey(key); | ||
| next.tokens = next.tokens.filter((t) => cacheKey(t) !== k); | ||
| next.tokens.push({ | ||
| resource: key.resource, | ||
| ...(key.mission_s256 ? { mission_s256: key.mission_s256 } : {}), | ||
| person_token: token, | ||
| expires_at: expiresAt, | ||
| }); | ||
| save(next); | ||
| }, | ||
| async flush() { | ||
| save({ tokens: [] }); | ||
| }, | ||
| }; | ||
| } | ||
| //# sourceMappingURL=store.js.map |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"store.js","sourceRoot":"","sources":["../src/store.ts"],"names":[],"mappings":"AAAA,yEAAyE;AACzE,2EAA2E;AAC3E,2CAA2C;AAC3C,EAAE;AACF,sFAAsF;AACtF,4EAA4E;AAC5E,4DAA4D;AAE5D,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,SAAS,CAAA;AAC5E,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AACjC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAmCzC,gFAAgF;AAChF,gDAAgD;AAChD,MAAM,UAAU,eAAe,CAAC,OAAyB,EAAE;IACzD,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAA;IAC/D,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,EAAE,gBAAgB,CAAC,CAAA;IAE/C,SAAS,IAAI;QACX,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC;YAAE,OAAO,EAAE,SAAS,EAAE,EAAE,EAAE,CAAA;QACjD,IAAI,CAAC;YACH,OAAO,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,MAAM,EAAE,MAAM,CAAC,CAAW,CAAA;QAC3D,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,EAAE,SAAS,EAAE,EAAE,EAAE,CAAA;QAC1B,CAAC;IACH,CAAC;IAED,SAAS,IAAI,CAAC,IAAY;QACxB,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;QAC/C,aAAa,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAA;IACtD,CAAC;IAED,OAAO;QACL,KAAK,CAAC,IAAI;YACR,OAAO,IAAI,EAAE,CAAC,SAAS,CAAA;QACzB,CAAC;QACD,KAAK,CAAC,GAAG,CAAC,IAAI;YACZ,OAAO,IAAI,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,IAAI,CAAC,CAAA;QAC1D,CAAC;QACD,KAAK,CAAC,MAAM,CAAC,KAAK;YAChB,MAAM,IAAI,GAAG,IAAI,EAAE,CAAA;YACnB,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAA;YAC1E,IAAI,GAAG,IAAI,CAAC;gBAAE,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,KAAK,CAAA;;gBACpC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;YAC/B,IAAI,CAAC,IAAI,CAAC,CAAA;QACZ,CAAC;QACD,KAAK,CAAC,MAAM,CAAC,IAAI;YACf,MAAM,IAAI,GAAG,IAAI,EAAE,CAAA;YACnB,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,IAAI,CAAC,CAAA;YAC9D,IAAI,IAAI,CAAC,MAAM,KAAK,IAAI,CAAC,SAAS,CAAC,MAAM;gBAAE,OAAO,KAAK,CAAA;YACvD,IAAI,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;YACzB,OAAO,IAAI,CAAA;QACb,CAAC;QACD,KAAK,CAAC,KAAK,CAAC,IAAI;YACd,MAAM,IAAI,GAAG,IAAI,EAAE,CAAA;YACnB,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,IAAI,CAAC,CAAA;YAC7D,IAAI,CAAC,KAAK;gBAAE,OAAM;YAClB,KAAK,CAAC,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAA;YAC1C,IAAI,CAAC,IAAI,CAAC,CAAA;QACZ,CAAC;KACF,CAAA;AACH,CAAC"} | ||
| {"version":3,"file":"store.js","sourceRoot":"","sources":["../src/store.ts"],"names":[],"mappings":"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"} |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../src/tools.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAA;AAMxE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAA;AAErD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,eAAe,CAAA;AAOlD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AAC7C,OAAO,KAAK,EAAW,OAAO,EAAE,MAAM,YAAY,CAAA;AAElD,MAAM,WAAW,SAAS;IACxB,EAAE,EAAE,OAAO,CAAA;IACX,aAAa,EAAE,aAAa,CAAA;IAC5B,QAAQ,EAAE,gBAAgB,CAAA;IAG1B,QAAQ,CAAC,EAAE,QAAQ,CAAA;IAMnB,aAAa,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAI7H,WAAW,CAAC,EAAE;QACZ,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,GAAG,SAAS,CAAC,CAAA;QAC/E,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;QACzC,OAAO,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;KACzC,CAAA;IAGD,UAAU,CAAC,EAAE,MAAM,MAAM,GAAG,SAAS,CAAA;CACtC;AAqBD,wBAAsB,eAAe,CAAC,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,CA+QvF"} | ||
| {"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../src/tools.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAA;AASxE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAA;AAErD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,eAAe,CAAA;AAOlD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AAC7C,OAAO,KAAK,EAAW,OAAO,EAAE,MAAM,YAAY,CAAA;AAElD,MAAM,WAAW,SAAS;IACxB,EAAE,EAAE,OAAO,CAAA;IACX,aAAa,EAAE,aAAa,CAAA;IAC5B,QAAQ,EAAE,gBAAgB,CAAA;IAG1B,QAAQ,CAAC,EAAE,QAAQ,CAAA;IAMnB,aAAa,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAI7H,WAAW,CAAC,EAAE;QACZ,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,GAAG,SAAS,CAAC,CAAA;QAC/E,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;QACzC,OAAO,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;KACzC,CAAA;IAGD,UAAU,CAAC,EAAE,MAAM,MAAM,GAAG,SAAS,CAAA;CACtC;AAqBD,wBAAsB,eAAe,CAAC,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,CA+TvF"} |
+60
-14
@@ -12,4 +12,6 @@ // The eight-tool v1 discovery surface (design.md §"Tool surface"), built against | ||
| import { z } from 'zod'; | ||
| import { planAccessMode } from './access-mode.js'; | ||
| import { deleteAtAdmin, invokeAtResource } from './agent.js'; | ||
| import { canonicalizeHost } from './host.js'; | ||
| import { agentTokenPs } from './jwt.js'; | ||
| import { fetchRegistry } from './registry.js'; | ||
@@ -50,2 +52,23 @@ import { fetchResource, getOperationsForResource, listOperationsForResource, toL1Entry, } from './resource.js'; | ||
| const describeWithL1 = (base) => `${base}\n\nCurrently added resources: ${l1Snapshot}`; | ||
| // What this agent's setup can complete. An agent token with no `ps` claim has | ||
| // no person server, so nothing beyond `agent-token` and `session-token` is | ||
| // reachable — the listing tools say so up front instead of letting the LLM | ||
| // plan against a resource that will 401. | ||
| // | ||
| // Peek only: a listing tool must not provoke an enclave signature to mint an | ||
| // agent token. When nothing is resolved yet the annotation is simply omitted — | ||
| // it is advisory, and `invoke` still refuses an unsatisfiable mode outright. | ||
| function peekSetup() { | ||
| const cfg = identity.peek?.(); | ||
| return cfg ? { hasPersonServer: agentTokenPs(cfg.agentToken) !== undefined } : undefined; | ||
| } | ||
| // The `skip_reason` field on a listed resource: present only when this agent | ||
| // cannot complete the mode the resource declares. Advisory — an unrecognized | ||
| // or absent access_mode never produces one. | ||
| function skipReason(accessMode, setup) { | ||
| if (!setup) | ||
| return undefined; | ||
| const plan = planAccessMode(accessMode, setup); | ||
| return plan.kind === 'unsatisfiable' ? plan.reason : undefined; | ||
| } | ||
| async function requireL1(resource) { | ||
@@ -65,3 +88,3 @@ const canonical = canonicalizeHost(resource); | ||
| server.registerTool('find_resources', { | ||
| description: describeWithL1('Search the AAuth registry for discoverable resources by free-text query against name/description. Returns each result tagged `added: true` if already in your local resource set.'), | ||
| description: describeWithL1('Search the AAuth registry for discoverable resources by free-text query against name/description. Returns each result tagged `added: true` if already in your local resource set. A result carrying `skip_reason` declares an access_mode this agent cannot complete — do not add or plan against it.'), | ||
| inputSchema: { query: z.string().optional() }, | ||
@@ -72,2 +95,3 @@ }, async ({ query }) => { | ||
| return text(BOOTSTRAP_GUIDANCE); | ||
| const setup = { hasPersonServer: agentTokenPs(c.cfg.agentToken) !== undefined }; | ||
| try { | ||
@@ -87,2 +111,3 @@ const index = await fetchRegistry(c.cfg, registryCache); | ||
| const host = canonicalizeHost(r.issuer)?.host ?? r.issuer; | ||
| const reason = skipReason(r.access_mode, setup); | ||
| return { | ||
@@ -94,2 +119,3 @@ resource: host, | ||
| added: added.has(host), | ||
| ...(reason ? { skip_reason: reason } : {}), | ||
| ...(r.logo_uri ? { logo_uri: r.logo_uri } : {}), | ||
@@ -123,13 +149,18 @@ }; | ||
| server.registerTool('list_resources', { | ||
| description: 'Return your locally added resources with name, description, access_mode, last_used, and how many vocabularies the agent proxy picked. Cheap; safe to call anytime.', | ||
| description: 'Return your locally added resources with name, description, access_mode, last_used, and how many vocabularies the agent proxy picked. A resource carrying `skip_reason` declares an access_mode this agent cannot complete — invoke will refuse it without calling out. Cheap; safe to call anytime.', | ||
| }, async () => { | ||
| const entries = (await l1.list()).map((e) => ({ | ||
| resource: e.resource, | ||
| name: e.name, | ||
| description: e.description, | ||
| access_mode: e.access_mode, | ||
| vocabularies: e.picked_vocabs.map((v) => v.vocabUri), | ||
| added: e.added, | ||
| last_used: e.last_used, | ||
| })); | ||
| const setup = peekSetup(); | ||
| const entries = (await l1.list()).map((e) => { | ||
| const reason = skipReason(e.access_mode, setup); | ||
| return { | ||
| resource: e.resource, | ||
| name: e.name, | ||
| description: e.description, | ||
| access_mode: e.access_mode, | ||
| vocabularies: e.picked_vocabs.map((v) => v.vocabUri), | ||
| added: e.added, | ||
| last_used: e.last_used, | ||
| ...(reason ? { skip_reason: reason } : {}), | ||
| }; | ||
| }); | ||
| return json(entries); | ||
@@ -149,3 +180,10 @@ }); | ||
| server.registerTool('list_operations', { | ||
| description: describeWithL1('List operations a resource exposes. Optional `query` is either free-text (matched against opId/summary/tags) or an OpenAPI path prefix (e.g. "/crm/v3/objects/contacts/*"). Returns summaries only — schemas are fetched via get_operations to keep token cost flat. Each op carries `kind` (sync.request/async.send/async.receive).'), | ||
| description: describeWithL1('List operations a resource exposes. Optional `query` is either free-text (matched against opId/summary/tags) or an OpenAPI path prefix (e.g. "/crm/v3/objects/contacts/*"). Returns summaries only — schemas are fetched via get_operations to keep token cost flat.\n\n' + | ||
| 'Each op carries `kind` (sync.request/async.send/async.receive) and `access_mode`, the credential that operation needs — read it before you plan:\n' + | ||
| '- `agent-token` — no authorization step; the agent already holds what it needs.\n' + | ||
| '- `person-token` — one call to the person server first; no user prompt in the common case.\n' + | ||
| '- `session-token` — the resource runs its own login/consent flow once.\n' + | ||
| '- `auth-token` — an authorization round trip through the person server; may prompt the user.\n' + | ||
| '- `per-call` — the resource authorizes each invocation against that call\'s parameters. It WILL block on a person every time. Do not plan unattended work around these.\n\n' + | ||
| '`budget: true` means invoking the operation draws down a spending budget. All of this is advisory — the resource may still challenge at runtime.'), | ||
| inputSchema: { resource: z.string(), query: z.string().optional() }, | ||
@@ -165,3 +203,3 @@ }, async ({ resource, query }) => { | ||
| server.registerTool('get_operations', { | ||
| description: describeWithL1('Batch fetch full schemas (params, request body, response) for one or more operations on a resource. Separate from list_operations because schemas dominate token cost.'), | ||
| description: describeWithL1('Batch fetch full schemas (params, request body, response) for one or more operations on a resource. Separate from list_operations because schemas dominate token cost. Each detail also carries the operation\'s `access_mode` and `budget`, as list_operations returns them.'), | ||
| inputSchema: { resource: z.string(), op_ids: z.array(z.string()) }, | ||
@@ -181,3 +219,3 @@ }, async ({ resource, op_ids }) => { | ||
| server.registerTool('invoke', { | ||
| description: describeWithL1('Invoke an operation on a resource. Pass `path_params`, `query`, `body` (object) as needed. If authorization is required, the client opens the auth URL automatically — call invoke again after authorization completes. async.receive operations return `subscribe_requires_subagent` (v.next).'), | ||
| description: describeWithL1('Invoke an operation on a resource. Pass `path_params`, `query`, `body` (object) as needed. If authorization is required, the client opens the auth URL automatically — call invoke again after authorization completes. async.receive operations return `subscribe_requires_subagent` (v.next). An operation whose access_mode this agent cannot complete is refused without any request being made, with the reason stated.'), | ||
| inputSchema: { | ||
@@ -212,2 +250,10 @@ resource: z.string(), | ||
| } | ||
| // Case (c) of the access_mode plan: recognized, and this agent cannot | ||
| // complete it. No request was made and none will be — say why and let the | ||
| // LLM route around the resource rather than retry into a 401. | ||
| if (result.kind === 'skipped') { | ||
| return text(`Skipped ${result.resource} / ${result.opId}: ${result.reason}.\n\n` + | ||
| `This operation's access_mode is "${result.mode}". Retrying will not help. ` + | ||
| `Use a different resource or operation, or bootstrap an agent identity bound to a person server.`); | ||
| } | ||
| if (result.kind === 'interaction') { | ||
@@ -214,0 +260,0 @@ // onComplete resolves the UserStore pending-auth waiter when the poll finishes. |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"tools.js","sourceRoot":"","sources":["../src/tools.ts"],"names":[],"mappings":"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"} | ||
| {"version":3,"file":"tools.js","sourceRoot":"","sources":["../src/tools.ts"],"names":[],"mappings":"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"} |
| import type { VocabAdapter } from './types.js'; | ||
| export * from './types.js'; | ||
| export * from './annotations.js'; | ||
| export { OpenAPIAdapter } from './openapi.js'; | ||
| export { OpenAPIGatewayAdapter } from './openapi-gateway.js'; | ||
| export declare function getAdapter(vocabUri: string): VocabAdapter | undefined; | ||
| export declare function supportedVocabUris(): string[]; | ||
| //# sourceMappingURL=index.d.ts.map |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/vocab/index.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAE9C,cAAc,YAAY,CAAA;AAC1B,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA;AAC7C,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAA;AAU5D,wBAAgB,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS,CAErE;AAED,wBAAgB,kBAAkB,IAAI,MAAM,EAAE,CAE7C"} | ||
| {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/vocab/index.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAE9C,cAAc,YAAY,CAAA;AAC1B,cAAc,kBAAkB,CAAA;AAChC,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA;AAS7C,wBAAgB,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS,CAErE;AAED,wBAAgB,kBAAkB,IAAI,MAAM,EAAE,CAE7C"} |
+11
-5
| // Vocabulary adapter registry. The agent proxy picks adapters at resource-load time by | ||
| // walking `r3_vocabularies` from the well-known doc and selecting every URN | ||
| // it has an adapter for. | ||
| // | ||
| // `urn:aauth:vocabulary:openapi-gateway` was removed in R3 -02 (aauth-dev/AAuth | ||
| // issue #72): operation identifiers are scoped to the one discovery endpoint a | ||
| // resource advertises per vocabulary (R3 -02 §Operation Identifier Scope), so a | ||
| // resource fronting several backend services either presents them as a single | ||
| // valid definition or exposes them under separate resource identifiers. There is | ||
| // no composite `service:operationId` identity and no `{service, operationId}` | ||
| // entry shape any more. | ||
| import { OpenAPIAdapter } from './openapi.js'; | ||
| import { OpenAPIGatewayAdapter } from './openapi-gateway.js'; | ||
| export * from './types.js'; | ||
| export * from './annotations.js'; | ||
| export { OpenAPIAdapter } from './openapi.js'; | ||
| export { OpenAPIGatewayAdapter } from './openapi-gateway.js'; | ||
| const ADAPTERS = { | ||
| 'urn:aauth:vocabulary:openapi': new OpenAPIAdapter(), | ||
| 'urn:aauth:vocabulary:openapi-gateway': new OpenAPIGatewayAdapter(), | ||
| // 'urn:aauth:vocabulary:asyncapi': new AsyncAPIAdapter(), // Phase 3 | ||
| // 'urn:aauth:vocabulary:mcp-tools': new MCPToolsAdapter(), // future | ||
| // 'urn:aauth:vocabulary:graphql': new GraphQLAdapter(), // future | ||
| // 'urn:aauth:vocabulary:mcp': new MCPAdapter(), // future | ||
| // 'urn:aauth:vocabulary:graphql': new GraphQLAdapter(), // future | ||
| }; | ||
@@ -16,0 +22,0 @@ export function getAdapter(vocabUri) { |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/vocab/index.ts"],"names":[],"mappings":"AAAA,uFAAuF;AACvF,4EAA4E;AAC5E,yBAAyB;AAEzB,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA;AAC7C,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAA;AAG5D,cAAc,YAAY,CAAA;AAC1B,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA;AAC7C,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAA;AAE5D,MAAM,QAAQ,GAAiC;IAC7C,8BAA8B,EAAE,IAAI,cAAc,EAAE;IACpD,sCAAsC,EAAE,IAAI,qBAAqB,EAAkB;IACnF,uEAAuE;IACvE,sEAAsE;IACtE,sEAAsE;CACvE,CAAA;AAED,MAAM,UAAU,UAAU,CAAC,QAAgB;IACzC,OAAO,QAAQ,CAAC,QAAQ,CAAC,CAAA;AAC3B,CAAC;AAED,MAAM,UAAU,kBAAkB;IAChC,OAAO,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;AAC9B,CAAC"} | ||
| {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/vocab/index.ts"],"names":[],"mappings":"AAAA,uFAAuF;AACvF,4EAA4E;AAC5E,yBAAyB;AACzB,EAAE;AACF,gFAAgF;AAChF,+EAA+E;AAC/E,gFAAgF;AAChF,8EAA8E;AAC9E,iFAAiF;AACjF,8EAA8E;AAC9E,wBAAwB;AAExB,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA;AAG7C,cAAc,YAAY,CAAA;AAC1B,cAAc,kBAAkB,CAAA;AAChC,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA;AAE7C,MAAM,QAAQ,GAAiC;IAC7C,8BAA8B,EAAE,IAAI,cAAc,EAAE;IACpD,uEAAuE;IACvE,sEAAsE;IACtE,sEAAsE;CACvE,CAAA;AAED,MAAM,UAAU,UAAU,CAAC,QAAgB;IACzC,OAAO,QAAQ,CAAC,QAAQ,CAAC,CAAA;AAC3B,CAAC;AAED,MAAM,UAAU,kBAAkB;IAChC,OAAO,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;AAC9B,CAAC"} |
@@ -0,1 +1,2 @@ | ||
| import type { OperationAnnotations } from './annotations.js'; | ||
| import type { InvocationPlan, InvokeArgs, OpDetail, OpSummary, VocabAdapter } from './types.js'; | ||
@@ -12,2 +13,3 @@ declare const HTTP_METHODS: readonly ["get", "post", "put", "delete", "patch", "head", "options"]; | ||
| responses?: Record<string, unknown>; | ||
| [ext: string]: unknown; | ||
| } | ||
@@ -31,2 +33,3 @@ type OpenAPIPathItem = Partial<Record<HttpMethod, OpenAPIOperation>> & { | ||
| responses?: Record<string, unknown>; | ||
| annotations: OperationAnnotations; | ||
| } | ||
@@ -42,2 +45,3 @@ export interface OpenAPIVocabDoc { | ||
| getOperations(doc: OpenAPIVocabDoc, opIds: string[]): OpDetail[]; | ||
| annotationsFor(doc: OpenAPIVocabDoc, opId: string): OperationAnnotations; | ||
| buildInvocation(doc: OpenAPIVocabDoc, opId: string, args: InvokeArgs): InvocationPlan; | ||
@@ -44,0 +48,0 @@ } |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"openapi.d.ts","sourceRoot":"","sources":["../../src/vocab/openapi.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EACV,cAAc,EACd,UAAU,EACV,QAAQ,EACR,SAAS,EACT,YAAY,EACb,MAAM,YAAY,CAAA;AAEnB,QAAA,MAAM,YAAY,uEAAwE,CAAA;AAC1F,KAAK,UAAU,GAAG,CAAC,OAAO,YAAY,CAAC,CAAC,MAAM,CAAC,CAAA;AAE/C,UAAU,gBAAgB;IACxB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAA;IACf,UAAU,CAAC,EAAE,OAAO,EAAE,CAAA;IACtB,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CACpC;AAED,KAAK,eAAe,GAAG,OAAO,CAAC,MAAM,CAAC,UAAU,EAAE,gBAAgB,CAAC,CAAC,GAAG;IACrE,UAAU,CAAC,EAAE,OAAO,EAAE,CAAA;CACvB,CAAA;AAED,UAAU,UAAU;IAClB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAA;IACtC,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CACrC;AAED,UAAU,UAAU;IAClB,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,MAAM,CAAA;IACd,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAA;IACf,UAAU,CAAC,EAAE,OAAO,EAAE,CAAA;IACtB,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CACpC;AAED,MAAM,WAAW,eAAe;IAC9B,GAAG,EAAE,UAAU,CAAA;IACf,GAAG,EAAE,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,CAAA;CAC7B;AAsDD,qBAAa,cAAe,YAAW,YAAY,CAAC,eAAe,CAAC;IAClE,QAAQ,CAAC,QAAQ,kCAAiC;IAE5C,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC;IAOjD,cAAc,CAAC,GAAG,EAAE,eAAe,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,EAAE;IAiBjE,aAAa,CAAC,GAAG,EAAE,eAAe,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,QAAQ,EAAE;IAqBhE,eAAe,CAAC,GAAG,EAAE,eAAe,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,GAAG,cAAc;CAkBtF"} | ||
| {"version":3,"file":"openapi.d.ts","sourceRoot":"","sources":["../../src/vocab/openapi.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAA;AAC5D,OAAO,KAAK,EACV,cAAc,EACd,UAAU,EACV,QAAQ,EACR,SAAS,EACT,YAAY,EACb,MAAM,YAAY,CAAA;AAEnB,QAAA,MAAM,YAAY,uEAAwE,CAAA;AAC1F,KAAK,UAAU,GAAG,CAAC,OAAO,YAAY,CAAC,CAAC,MAAM,CAAC,CAAA;AAK/C,UAAU,gBAAgB;IACxB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAA;IACf,UAAU,CAAC,EAAE,OAAO,EAAE,CAAA;IACtB,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IACnC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;CACvB;AAED,KAAK,eAAe,GAAG,OAAO,CAAC,MAAM,CAAC,UAAU,EAAE,gBAAgB,CAAC,CAAC,GAAG;IACrE,UAAU,CAAC,EAAE,OAAO,EAAE,CAAA;CACvB,CAAA;AAED,UAAU,UAAU;IAClB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAA;IACtC,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CACrC;AAED,UAAU,UAAU;IAClB,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,MAAM,CAAA;IACd,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAA;IACf,UAAU,CAAC,EAAE,OAAO,EAAE,CAAA;IACtB,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IACnC,WAAW,EAAE,oBAAoB,CAAA;CAClC;AAED,MAAM,WAAW,eAAe;IAC9B,GAAG,EAAE,UAAU,CAAA;IACf,GAAG,EAAE,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,CAAA;CAC7B;AA8DD,qBAAa,cAAe,YAAW,YAAY,CAAC,eAAe,CAAC;IAClE,QAAQ,CAAC,QAAQ,kCAAiC;IAE5C,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC;IAOjD,cAAc,CAAC,GAAG,EAAE,eAAe,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,EAAE;IAkBjE,aAAa,CAAC,GAAG,EAAE,eAAe,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,QAAQ,EAAE;IAsBhE,cAAc,CAAC,GAAG,EAAE,eAAe,EAAE,IAAI,EAAE,MAAM,GAAG,oBAAoB;IAIxE,eAAe,CAAC,GAAG,EAAE,eAAe,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,GAAG,cAAc;CAkBtF"} |
@@ -7,2 +7,3 @@ // OpenAPI 3.x vocabulary adapter. All ops are `sync.request`. | ||
| // Both are bounded; the caller decides on a result cap. | ||
| import { readOpenApiAnnotations } from './annotations.js'; | ||
| const HTTP_METHODS = ['get', 'post', 'put', 'delete', 'patch', 'head', 'options']; | ||
@@ -27,2 +28,3 @@ function indexOperations(doc) { | ||
| responses: op.responses, | ||
| annotations: readOpenApiAnnotations(op), | ||
| }); | ||
@@ -58,2 +60,8 @@ } | ||
| } | ||
| // Annotations are sparse: emit the field only when the operation carries one, so | ||
| // unannotated documents cost nothing extra in the listing the LLM reads. | ||
| function annotationsField(op) { | ||
| const a = op.annotations ?? {}; | ||
| return Object.keys(a).length > 0 ? { annotations: a } : {}; | ||
| } | ||
| export class OpenAPIAdapter { | ||
@@ -81,2 +89,3 @@ vocabUri = 'urn:aauth:vocabulary:openapi'; | ||
| tags: op.tags, | ||
| ...annotationsField(op), | ||
| }); | ||
@@ -100,2 +109,3 @@ } | ||
| tags: op.tags, | ||
| ...annotationsField(op), | ||
| paramsSchema: op.parameters, | ||
@@ -108,2 +118,5 @@ bodySchema: op.requestBody, | ||
| } | ||
| annotationsFor(doc, opId) { | ||
| return getOps(doc).get(opId)?.annotations ?? {}; | ||
| } | ||
| buildInvocation(doc, opId, args) { | ||
@@ -110,0 +123,0 @@ const op = getOps(doc).get(opId); |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"openapi.js","sourceRoot":"","sources":["../../src/vocab/openapi.ts"],"names":[],"mappings":"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"} | ||
| {"version":3,"file":"openapi.js","sourceRoot":"","sources":["../../src/vocab/openapi.ts"],"names":[],"mappings":"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"} |
@@ -0,1 +1,2 @@ | ||
| import type { OperationAnnotations } from './annotations.js'; | ||
| export type OpKind = 'sync.request' | 'async.send' | 'async.receive'; | ||
@@ -10,2 +11,16 @@ export interface OpSummary { | ||
| tags?: string[]; | ||
| /** | ||
| * The operation's own access annotations, when the vocabulary document carries | ||
| * them. Sparse by design — absent means "takes the resource-wide access_mode". | ||
| * resource.ts resolves these against the L1 entry before the LLM sees them. | ||
| */ | ||
| annotations?: OperationAnnotations; | ||
| /** | ||
| * The access mode that actually applies to this operation: the annotation when | ||
| * present, the resource-wide `access_mode` otherwise. Filled in by resource.ts, | ||
| * not by adapters. Advisory — the runtime AAuth-Requirement is authoritative. | ||
| */ | ||
| access_mode?: string; | ||
| /** true when invoking this operation draws down a budget. Omitted when false. */ | ||
| budget?: boolean; | ||
| } | ||
@@ -43,8 +58,9 @@ export interface OpDetail extends OpSummary { | ||
| readonly vocabUri: string; | ||
| load(source: string | Record<string, string>): Promise<Doc>; | ||
| load(source: string): Promise<Doc>; | ||
| listOperations(doc: Doc, query?: string): OpSummary[]; | ||
| getOperations(doc: Doc, opIds: string[]): OpDetail[]; | ||
| buildInvocation(doc: Doc, opId: string, args: InvokeArgs): InvocationPlan; | ||
| formatOperationEntry?(opId: string): Record<string, unknown>; | ||
| /** This operation's access annotations, or {} when it carries none. */ | ||
| annotationsFor(doc: Doc, opId: string): OperationAnnotations; | ||
| } | ||
| //# sourceMappingURL=types.d.ts.map |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/vocab/types.ts"],"names":[],"mappings":"AAUA,MAAM,MAAM,MAAM,GAAG,cAAc,GAAG,YAAY,GAAG,eAAe,CAAA;AAEpE,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAA;CAChB;AAED,MAAM,WAAW,QAAS,SAAQ,SAAS;IAKzC,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,cAAc,CAAC,EAAE,OAAO,CAAA;CACzB;AAED,MAAM,MAAM,cAAc,GACtB;IACE,IAAI,EAAE,cAAc,CAAA;IACpB,MAAM,EAAE,MAAM,CAAA;IACd,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAChC,IAAI,CAAC,EAAE,MAAM,CAAA;CACd,GACD;IACE,IAAI,EAAE,YAAY,CAAA;IAClB,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,EAAE,OAAO,CAAA;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CACjC,GACD;IACE,IAAI,EAAE,eAAe,CAAA;IACrB,OAAO,EAAE,MAAM,CAAA;IACf,MAAM,CAAC,EAAE,OAAO,CAAA;CACjB,CAAA;AAKL,MAAM,WAAW,UAAU;IACzB,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IACnC,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,OAAO,CAAC,EAAE,OAAO,CAAA;CAClB;AAED,MAAM,WAAW,YAAY,CAAC,GAAG,GAAG,OAAO;IACzC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;IAGzB,IAAI,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,CAAA;IAC3D,cAAc,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,EAAE,CAAA;IACrD,aAAa,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,QAAQ,EAAE,CAAA;IACpD,eAAe,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,GAAG,cAAc,CAAA;IAIzE,oBAAoB,CAAC,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAC7D"} | ||
| {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/vocab/types.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAA;AAE5D,MAAM,MAAM,MAAM,GAAG,cAAc,GAAG,YAAY,GAAG,eAAe,CAAA;AAEpE,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAA;IACf;;;;OAIG;IACH,WAAW,CAAC,EAAE,oBAAoB,CAAA;IAClC;;;;OAIG;IACH,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,iFAAiF;IACjF,MAAM,CAAC,EAAE,OAAO,CAAA;CACjB;AAED,MAAM,WAAW,QAAS,SAAQ,SAAS;IAKzC,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,cAAc,CAAC,EAAE,OAAO,CAAA;CACzB;AAED,MAAM,MAAM,cAAc,GACtB;IACE,IAAI,EAAE,cAAc,CAAA;IACpB,MAAM,EAAE,MAAM,CAAA;IACd,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAChC,IAAI,CAAC,EAAE,MAAM,CAAA;CACd,GACD;IACE,IAAI,EAAE,YAAY,CAAA;IAClB,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,EAAE,OAAO,CAAA;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CACjC,GACD;IACE,IAAI,EAAE,eAAe,CAAA;IACrB,OAAO,EAAE,MAAM,CAAA;IACf,MAAM,CAAC,EAAE,OAAO,CAAA;CACjB,CAAA;AAKL,MAAM,WAAW,UAAU;IACzB,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IACnC,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,OAAO,CAAC,EAAE,OAAO,CAAA;CAClB;AAED,MAAM,WAAW,YAAY,CAAC,GAAG,GAAG,OAAO;IACzC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;IAKzB,IAAI,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,CAAA;IAClC,cAAc,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,EAAE,CAAA;IACrD,aAAa,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,QAAQ,EAAE,CAAA;IACpD,eAAe,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,GAAG,cAAc,CAAA;IACzE,uEAAuE;IACvE,cAAc,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,GAAG,oBAAoB,CAAA;CAC7D"} |
@@ -7,6 +7,9 @@ // Vocabulary adapter contract. A resource advertises one or more vocabularies | ||
| // - turn (opId, args) into an InvocationPlan the agent proxy's `invoke` can execute | ||
| // - read each operation's access annotations (R3 -02 §Operation Access | ||
| // Annotations) off the vocabulary document | ||
| // | ||
| // See design.md §"Vocabularies". The LLM never sees `vocab` — it sees | ||
| // `kind` (sync.request | async.send | async.receive) on each OpSummary. | ||
| // `kind` (sync.request | async.send | async.receive) on each OpSummary, plus | ||
| // the operation's effective `access_mode` / `budget`. | ||
| export {}; | ||
| //# sourceMappingURL=types.js.map |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/vocab/types.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,6EAA6E;AAC7E,4BAA4B;AAC5B,sEAAsE;AACtE,iEAAiE;AACjE,sFAAsF;AACtF,EAAE;AACF,sEAAsE;AACtE,wEAAwE"} | ||
| {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/vocab/types.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,6EAA6E;AAC7E,4BAA4B;AAC5B,sEAAsE;AACtE,iEAAiE;AACjE,sFAAsF;AACtF,yEAAyE;AACzE,+CAA+C;AAC/C,EAAE;AACF,sEAAsE;AACtE,6EAA6E;AAC7E,sDAAsD"} |
+2
-2
| { | ||
| "name": "@aauth/proxy", | ||
| "version": "0.5.0", | ||
| "version": "1.0.1", | ||
| "description": "The user's AAuth agent in MCP form — discovery, identity, interaction relay", | ||
@@ -48,3 +48,3 @@ "type": "module", | ||
| "dependencies": { | ||
| "@aauth/local-keys": "^1.1.0", | ||
| "@aauth/local-keys": "^2.0.0", | ||
| "@hellocoop/httpsig": "^2.0.0", | ||
@@ -51,0 +51,0 @@ "@modelcontextprotocol/sdk": "^1.29.0", |
| import { type OpenAPIVocabDoc } from './openapi.js'; | ||
| import type { InvocationPlan, InvokeArgs, OpDetail, OpSummary, VocabAdapter } from './types.js'; | ||
| export interface GatewayVocabDoc { | ||
| services: Record<string, OpenAPIVocabDoc>; | ||
| } | ||
| export declare class OpenAPIGatewayAdapter implements VocabAdapter<GatewayVocabDoc> { | ||
| readonly vocabUri = "urn:aauth:vocabulary:openapi-gateway"; | ||
| load(source: string | Record<string, string>): Promise<GatewayVocabDoc>; | ||
| listOperations(doc: GatewayVocabDoc, query?: string): OpSummary[]; | ||
| getOperations(doc: GatewayVocabDoc, opIds: string[]): OpDetail[]; | ||
| buildInvocation(doc: GatewayVocabDoc, compositeId: string, args: InvokeArgs): InvocationPlan; | ||
| formatOperationEntry(compositeId: string): Record<string, unknown>; | ||
| } | ||
| //# sourceMappingURL=openapi-gateway.d.ts.map |
| {"version":3,"file":"openapi-gateway.d.ts","sourceRoot":"","sources":["../../src/vocab/openapi-gateway.ts"],"names":[],"mappings":"AAWA,OAAO,EAAkB,KAAK,eAAe,EAAE,MAAM,cAAc,CAAA;AACnE,OAAO,KAAK,EACV,cAAc,EACd,UAAU,EACV,QAAQ,EACR,SAAS,EACT,YAAY,EACb,MAAM,YAAY,CAAA;AAEnB,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAA;CAC1C;AAYD,qBAAa,qBAAsB,YAAW,YAAY,CAAC,eAAe,CAAC;IACzE,QAAQ,CAAC,QAAQ,0CAAyC;IAEpD,IAAI,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,eAAe,CAAC;IAa7E,cAAc,CAAC,GAAG,EAAE,eAAe,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,EAAE;IAUjE,aAAa,CAAC,GAAG,EAAE,eAAe,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,QAAQ,EAAE;IAahE,eAAe,CAAC,GAAG,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,GAAG,cAAc;IAW5F,oBAAoB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;CAGnE"} |
| // OpenAPI Gateway vocabulary adapter (urn:aauth:vocabulary:openapi-gateway, | ||
| // AAuth R3 §OpenAPI Gateway Vocabulary). For resources that front MULTIPLE | ||
| // OpenAPI-described services behind a single resource identifier — e.g. a | ||
| // Google APIs proxy exposing gmail/calendar/people/… as separate specs. | ||
| // | ||
| // Discovery: the r3_vocabularies value is not a single URL but an object | ||
| // mapping stable service labels → per-service OpenAPI spec URLs. Operation | ||
| // identity is the pair (service, operationId); the agent-facing composite id | ||
| // is `service:operationId` (unambiguous — ':' appears in no operationId). | ||
| // R3 operation entries are { service, operationId } objects. | ||
| import { OpenAPIAdapter } from './openapi.js'; | ||
| // Reuses the plain adapter's per-doc indexing/search/planning; this class only | ||
| // adds the service dimension. | ||
| const openapi = new OpenAPIAdapter(); | ||
| function splitId(compositeId) { | ||
| const i = compositeId.indexOf(':'); | ||
| if (i === -1) | ||
| throw new Error(`openapi-gateway: operation id must be service:operationId, got ${compositeId}`); | ||
| return { service: compositeId.slice(0, i), operationId: compositeId.slice(i + 1) }; | ||
| } | ||
| export class OpenAPIGatewayAdapter { | ||
| vocabUri = 'urn:aauth:vocabulary:openapi-gateway'; | ||
| async load(source) { | ||
| if (typeof source === 'string' || source === null) { | ||
| throw new Error('openapi-gateway: discovery value must be an object mapping service labels to OpenAPI URLs'); | ||
| } | ||
| const services = {}; | ||
| await Promise.all(Object.entries(source).map(async ([label, url]) => { | ||
| services[label] = await openapi.load(url); | ||
| })); | ||
| return { services }; | ||
| } | ||
| listOperations(doc, query) { | ||
| const out = []; | ||
| for (const [label, serviceDoc] of Object.entries(doc.services)) { | ||
| for (const op of openapi.listOperations(serviceDoc, query)) { | ||
| out.push({ ...op, opId: `${label}:${op.opId}`, tags: [label, ...(op.tags ?? [])] }); | ||
| } | ||
| } | ||
| return out; | ||
| } | ||
| getOperations(doc, opIds) { | ||
| const out = []; | ||
| for (const compositeId of opIds) { | ||
| const { service, operationId } = splitId(compositeId); | ||
| const serviceDoc = doc.services[service]; | ||
| if (!serviceDoc) | ||
| continue; | ||
| for (const detail of openapi.getOperations(serviceDoc, [operationId])) { | ||
| out.push({ ...detail, opId: compositeId, tags: [service, ...(detail.tags ?? [])] }); | ||
| } | ||
| } | ||
| return out; | ||
| } | ||
| buildInvocation(doc, compositeId, args) { | ||
| const { service, operationId } = splitId(compositeId); | ||
| const serviceDoc = doc.services[service]; | ||
| if (!serviceDoc) | ||
| throw new Error(`openapi-gateway: unknown service ${service}`); | ||
| // Per-service docs publish agent-facing paths relative to the resource | ||
| // origin (the gateway's generated specs label-prefix their paths), so the | ||
| // plain adapter's plan is already correct. | ||
| return openapi.buildInvocation(serviceDoc, operationId, args); | ||
| } | ||
| // R3 operation entries carry the pair, not the composite string. | ||
| formatOperationEntry(compositeId) { | ||
| return splitId(compositeId); | ||
| } | ||
| } | ||
| //# sourceMappingURL=openapi-gateway.js.map |
| {"version":3,"file":"openapi-gateway.js","sourceRoot":"","sources":["../../src/vocab/openapi-gateway.ts"],"names":[],"mappings":"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"} |
AI-detected potential code anomaly
Supply chain riskAI has identified unusual behaviors that may pose a security risk.
URL strings
Supply chain riskPackage contains fragments of external URLs or IP addresses, which the package may be accessing at runtime.
AI-detected potential code anomaly
Supply chain riskAI has identified unusual behaviors that may pose a security risk.
No v1
QualityPackage is not semver >=1. This means it is not stable and does not support ^ ranges.
URL strings
Supply chain riskPackage contains fragments of external URLs or IP addresses, which the package may be accessing at runtime.
193995
41.6%66
13.79%2397
49.16%1
-50%+ Added
- Removed
- Removed
Updated