@aauth/proxy 0.5.0 → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/access-mode.d.ts +21 -0
- package/dist/access-mode.d.ts.map +1 -0
- package/dist/access-mode.js +64 -0
- package/dist/access-mode.js.map +1 -0
- package/dist/agent.d.ts +85 -6
- package/dist/agent.d.ts.map +1 -1
- package/dist/agent.js +408 -129
- package/dist/agent.js.map +1 -1
- package/dist/identity-local.d.ts.map +1 -1
- package/dist/identity-local.js +12 -2
- package/dist/identity-local.js.map +1 -1
- package/dist/identity.d.ts +1 -0
- package/dist/identity.d.ts.map +1 -1
- package/dist/index.d.ts +7 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -2
- package/dist/index.js.map +1 -1
- package/dist/jwt.d.ts +25 -0
- package/dist/jwt.d.ts.map +1 -0
- package/dist/jwt.js +77 -0
- package/dist/jwt.js.map +1 -0
- package/dist/resource.d.ts +8 -3
- package/dist/resource.d.ts.map +1 -1
- package/dist/resource.js +30 -10
- package/dist/resource.js.map +1 -1
- package/dist/store.d.ts +34 -2
- package/dist/store.d.ts.map +1 -1
- package/dist/store.js +0 -0
- package/dist/store.js.map +1 -1
- package/dist/tools.d.ts.map +1 -1
- package/dist/tools.js +62 -16
- package/dist/tools.js.map +1 -1
- package/dist/vocab/annotations.d.ts +30 -0
- package/dist/vocab/annotations.d.ts.map +1 -0
- package/dist/vocab/annotations.js +70 -0
- package/dist/vocab/annotations.js.map +1 -0
- package/dist/vocab/index.d.ts +1 -1
- package/dist/vocab/index.d.ts.map +1 -1
- package/dist/vocab/index.js +11 -5
- package/dist/vocab/index.js.map +1 -1
- package/dist/vocab/openapi.d.ts +4 -0
- package/dist/vocab/openapi.d.ts.map +1 -1
- package/dist/vocab/openapi.js +13 -0
- package/dist/vocab/openapi.js.map +1 -1
- package/dist/vocab/types.d.ts +18 -2
- package/dist/vocab/types.d.ts.map +1 -1
- package/dist/vocab/types.js +5 -2
- package/dist/vocab/types.js.map +1 -1
- package/package.json +2 -2
- package/dist/vocab/openapi-gateway.d.ts +0 -14
- package/dist/vocab/openapi-gateway.d.ts.map +0 -1
- package/dist/vocab/openapi-gateway.js +0 -70
- package/dist/vocab/openapi-gateway.js.map +0 -1
package/dist/tools.js
CHANGED
|
@@ -9,8 +9,10 @@
|
|
|
9
9
|
// their transport allows.
|
|
10
10
|
import { renderUnicodeCompact } from 'uqr';
|
|
11
11
|
import { z } from 'zod';
|
|
12
|
+
import { planAccessMode } from './access-mode.js';
|
|
12
13
|
import { deleteAtAdmin, invokeAtResource } from './agent.js';
|
|
13
14
|
import { canonicalizeHost } from './host.js';
|
|
15
|
+
import { agentTokenPs } from './jwt.js';
|
|
14
16
|
import { fetchRegistry } from './registry.js';
|
|
15
17
|
import { fetchResource, getOperationsForResource, listOperationsForResource, toL1Entry, } from './resource.js';
|
|
16
18
|
const text = (s) => ({ content: [{ type: 'text', text: s }] });
|
|
@@ -46,6 +48,27 @@ export async function buildProxyTools(server, deps) {
|
|
|
46
48
|
const snapshot = (await l1.list()).map((e) => e.resource);
|
|
47
49
|
const l1Snapshot = snapshot.length === 0 ? 'no resources added yet' : snapshot.join(', ');
|
|
48
50
|
const describeWithL1 = (base) => `${base}\n\nCurrently added resources: ${l1Snapshot}`;
|
|
51
|
+
// What this agent's setup can complete. An agent token with no `ps` claim has
|
|
52
|
+
// no person server, so nothing beyond `agent-token` and `session-token` is
|
|
53
|
+
// reachable — the listing tools say so up front instead of letting the LLM
|
|
54
|
+
// plan against a resource that will 401.
|
|
55
|
+
//
|
|
56
|
+
// Peek only: a listing tool must not provoke an enclave signature to mint an
|
|
57
|
+
// agent token. When nothing is resolved yet the annotation is simply omitted —
|
|
58
|
+
// it is advisory, and `invoke` still refuses an unsatisfiable mode outright.
|
|
59
|
+
function peekSetup() {
|
|
60
|
+
const cfg = identity.peek?.();
|
|
61
|
+
return cfg ? { hasPersonServer: agentTokenPs(cfg.agentToken) !== undefined } : undefined;
|
|
62
|
+
}
|
|
63
|
+
// The `skip_reason` field on a listed resource: present only when this agent
|
|
64
|
+
// cannot complete the mode the resource declares. Advisory — an unrecognized
|
|
65
|
+
// or absent access_mode never produces one.
|
|
66
|
+
function skipReason(accessMode, setup) {
|
|
67
|
+
if (!setup)
|
|
68
|
+
return undefined;
|
|
69
|
+
const plan = planAccessMode(accessMode, setup);
|
|
70
|
+
return plan.kind === 'unsatisfiable' ? plan.reason : undefined;
|
|
71
|
+
}
|
|
49
72
|
async function requireL1(resource) {
|
|
50
73
|
const canonical = canonicalizeHost(resource);
|
|
51
74
|
if (!canonical)
|
|
@@ -60,12 +83,13 @@ export async function buildProxyTools(server, deps) {
|
|
|
60
83
|
}
|
|
61
84
|
// ── Resource lifecycle ──
|
|
62
85
|
server.registerTool('find_resources', {
|
|
63
|
-
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.'),
|
|
86
|
+
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.'),
|
|
64
87
|
inputSchema: { query: z.string().optional() },
|
|
65
88
|
}, async ({ query }) => {
|
|
66
89
|
const c = await getConfig();
|
|
67
90
|
if (!c.ok)
|
|
68
91
|
return text(BOOTSTRAP_GUIDANCE);
|
|
92
|
+
const setup = { hasPersonServer: agentTokenPs(c.cfg.agentToken) !== undefined };
|
|
69
93
|
try {
|
|
70
94
|
const index = await fetchRegistry(c.cfg, registryCache);
|
|
71
95
|
const q = (query ?? '').trim().toLowerCase();
|
|
@@ -80,12 +104,14 @@ export async function buildProxyTools(server, deps) {
|
|
|
80
104
|
})
|
|
81
105
|
.map((r) => {
|
|
82
106
|
const host = canonicalizeHost(r.issuer)?.host ?? r.issuer;
|
|
107
|
+
const reason = skipReason(r.access_mode, setup);
|
|
83
108
|
return {
|
|
84
109
|
resource: host,
|
|
85
110
|
name: r.name,
|
|
86
111
|
description: r.description,
|
|
87
112
|
access_mode: r.access_mode,
|
|
88
113
|
added: added.has(host),
|
|
114
|
+
...(reason ? { skip_reason: reason } : {}),
|
|
89
115
|
...(r.logo_uri ? { logo_uri: r.logo_uri } : {}),
|
|
90
116
|
};
|
|
91
117
|
});
|
|
@@ -114,17 +140,22 @@ export async function buildProxyTools(server, deps) {
|
|
|
114
140
|
}
|
|
115
141
|
});
|
|
116
142
|
server.registerTool('list_resources', {
|
|
117
|
-
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.',
|
|
143
|
+
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.',
|
|
118
144
|
}, async () => {
|
|
119
|
-
const
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
145
|
+
const setup = peekSetup();
|
|
146
|
+
const entries = (await l1.list()).map((e) => {
|
|
147
|
+
const reason = skipReason(e.access_mode, setup);
|
|
148
|
+
return {
|
|
149
|
+
resource: e.resource,
|
|
150
|
+
name: e.name,
|
|
151
|
+
description: e.description,
|
|
152
|
+
access_mode: e.access_mode,
|
|
153
|
+
vocabularies: e.picked_vocabs.map((v) => v.vocabUri),
|
|
154
|
+
added: e.added,
|
|
155
|
+
last_used: e.last_used,
|
|
156
|
+
...(reason ? { skip_reason: reason } : {}),
|
|
157
|
+
};
|
|
158
|
+
});
|
|
128
159
|
return json(entries);
|
|
129
160
|
});
|
|
130
161
|
server.registerTool('remove_resource', {
|
|
@@ -139,7 +170,14 @@ export async function buildProxyTools(server, deps) {
|
|
|
139
170
|
});
|
|
140
171
|
// ── Operations ──
|
|
141
172
|
server.registerTool('list_operations', {
|
|
142
|
-
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
|
|
173
|
+
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_operation_schemas to keep token cost flat.\n\n' +
|
|
174
|
+
'Each op carries `kind` (sync.request/async.send/async.receive) and `access_mode`, the credential that operation needs — read it before you plan:\n' +
|
|
175
|
+
'- `agent-token` — no authorization step; the agent already holds what it needs.\n' +
|
|
176
|
+
'- `person-token` — one call to the person server first; no user prompt in the common case.\n' +
|
|
177
|
+
'- `session-token` — the resource runs its own login/consent flow once.\n' +
|
|
178
|
+
'- `auth-token` — an authorization round trip through the person server; may prompt the user.\n' +
|
|
179
|
+
'- `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' +
|
|
180
|
+
'`budget: true` means invoking the operation draws down a spending budget. All of this is advisory — the resource may still challenge at runtime.'),
|
|
143
181
|
inputSchema: { resource: z.string(), query: z.string().optional() },
|
|
144
182
|
}, async ({ resource, query }) => {
|
|
145
183
|
const found = await requireL1(resource);
|
|
@@ -153,8 +191,8 @@ export async function buildProxyTools(server, deps) {
|
|
|
153
191
|
return text(`list_operations error: ${err.message}`);
|
|
154
192
|
}
|
|
155
193
|
});
|
|
156
|
-
server.registerTool('
|
|
157
|
-
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.'),
|
|
194
|
+
server.registerTool('get_operation_schemas', {
|
|
195
|
+
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.'),
|
|
158
196
|
inputSchema: { resource: z.string(), op_ids: z.array(z.string()) },
|
|
159
197
|
}, async ({ resource, op_ids }) => {
|
|
160
198
|
const found = await requireL1(resource);
|
|
@@ -165,11 +203,11 @@ export async function buildProxyTools(server, deps) {
|
|
|
165
203
|
return json(details);
|
|
166
204
|
}
|
|
167
205
|
catch (err) {
|
|
168
|
-
return text(`
|
|
206
|
+
return text(`get_operation_schemas error: ${err.message}`);
|
|
169
207
|
}
|
|
170
208
|
});
|
|
171
209
|
server.registerTool('invoke', {
|
|
172
|
-
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).'),
|
|
210
|
+
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.'),
|
|
173
211
|
inputSchema: {
|
|
174
212
|
resource: z.string(),
|
|
175
213
|
op_id: z.string(),
|
|
@@ -199,6 +237,14 @@ export async function buildProxyTools(server, deps) {
|
|
|
199
237
|
catch (err) {
|
|
200
238
|
return text(`invoke error: ${err.message}`);
|
|
201
239
|
}
|
|
240
|
+
// Case (c) of the access_mode plan: recognized, and this agent cannot
|
|
241
|
+
// complete it. No request was made and none will be — say why and let the
|
|
242
|
+
// LLM route around the resource rather than retry into a 401.
|
|
243
|
+
if (result.kind === 'skipped') {
|
|
244
|
+
return text(`Skipped ${result.resource} / ${result.opId}: ${result.reason}.\n\n` +
|
|
245
|
+
`This operation's access_mode is "${result.mode}". Retrying will not help. ` +
|
|
246
|
+
`Use a different resource or operation, or bootstrap an agent identity bound to a person server.`);
|
|
247
|
+
}
|
|
202
248
|
if (result.kind === 'interaction') {
|
|
203
249
|
// onComplete resolves the UserStore pending-auth waiter when the poll finishes.
|
|
204
250
|
const onComplete = () => deps.authPending?.resolve(found.l1.resource);
|
package/dist/tools.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tools.js","sourceRoot":"","sources":["../src/tools.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"tools.js","sourceRoot":"","sources":["../src/tools.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
export declare const OPENAPI_ACCESS_MODE_KEY = "x-aauth-access-mode";
|
|
2
|
+
export declare const OPENAPI_BUDGET_KEY = "x-aauth-budget";
|
|
3
|
+
export declare const MCP_ACCESS_MODE_KEY = "aauth.dev/access-mode";
|
|
4
|
+
export declare const MCP_BUDGET_KEY = "aauth.dev/budget";
|
|
5
|
+
export interface OperationAnnotations {
|
|
6
|
+
/** The operation's own access mode, when it carries one. Never `session-token`:
|
|
7
|
+
* R3 forbids that value in an annotation, and a value we see anyway is dropped. */
|
|
8
|
+
access_mode?: string;
|
|
9
|
+
/** true when invoking this operation draws down a budget. */
|
|
10
|
+
budget?: boolean;
|
|
11
|
+
}
|
|
12
|
+
/** Read the two annotations off an OpenAPI (or AsyncAPI) Operation Object. */
|
|
13
|
+
export declare function readOpenApiAnnotations(op: Record<string, unknown> | undefined): OperationAnnotations;
|
|
14
|
+
/** Read the two annotations off an MCP Tool's `_meta`. */
|
|
15
|
+
export declare function readMcpToolAnnotations(tool: {
|
|
16
|
+
_meta?: Record<string, unknown>;
|
|
17
|
+
} | undefined): OperationAnnotations;
|
|
18
|
+
/**
|
|
19
|
+
* The access mode that actually applies to one operation.
|
|
20
|
+
*
|
|
21
|
+
* - An annotation replaces the resource-wide default outright (never intersects).
|
|
22
|
+
* - `budget: true` implies at least `auth-token`, because a budget is carried in
|
|
23
|
+
* the auth token's `budget` claim. Where the access mode annotation is absent,
|
|
24
|
+
* `budget: true` implies `auth-token` rather than the resource default; a
|
|
25
|
+
* resource MUST NOT pair `budget: true` with `agent-token` or `person-token`,
|
|
26
|
+
* and an agent that sees that combination anyway MUST treat it as `auth-token`.
|
|
27
|
+
* - Absent everything, the protocol default is `agent-token`.
|
|
28
|
+
*/
|
|
29
|
+
export declare function effectiveAccessMode(annotations: OperationAnnotations | undefined, resourceWide: string | undefined): string;
|
|
30
|
+
//# sourceMappingURL=annotations.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"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"}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
// Operation access annotations (R3 -02 §Operation Access Annotations).
|
|
2
|
+
//
|
|
3
|
+
// An agent cannot read R3 documents, so R3 alone tells it nothing about what any
|
|
4
|
+
// one operation requires. What it CAN read is the vocabulary — the OpenAPI
|
|
5
|
+
// document, the MCP tool list — because it has to parse that to make the call at
|
|
6
|
+
// all. The annotations state, alongside each operation, which credential it needs
|
|
7
|
+
// and whether it draws down a budget.
|
|
8
|
+
//
|
|
9
|
+
// Encodings (R3 -02 §Vocabulary Encodings):
|
|
10
|
+
//
|
|
11
|
+
// OpenAPI Operation Object x-aauth-access-mode x-aauth-budget
|
|
12
|
+
// MCP Tool `_meta` aauth.dev/access-mode aauth.dev/budget
|
|
13
|
+
// AsyncAPI Operation Object x-aauth-access-mode x-aauth-budget
|
|
14
|
+
//
|
|
15
|
+
// Three rules govern how they combine with the resource-wide `access_mode`
|
|
16
|
+
// (§Applying Annotations):
|
|
17
|
+
//
|
|
18
|
+
// 1. Sparse. An operation with no annotation takes the resource's access_mode.
|
|
19
|
+
// 2. Replacing, not intersecting. A `person-token` annotation on a resource
|
|
20
|
+
// declaring `auth-token` LOWERS the requirement for that operation.
|
|
21
|
+
// 3. Advisory. A resource MAY return any AAuth-Requirement at runtime whatever
|
|
22
|
+
// it published. Annotations let the agent plan; the runtime requirement is
|
|
23
|
+
// authoritative. Nothing here is ever enforced.
|
|
24
|
+
export const OPENAPI_ACCESS_MODE_KEY = 'x-aauth-access-mode';
|
|
25
|
+
export const OPENAPI_BUDGET_KEY = 'x-aauth-budget';
|
|
26
|
+
export const MCP_ACCESS_MODE_KEY = 'aauth.dev/access-mode';
|
|
27
|
+
export const MCP_BUDGET_KEY = 'aauth.dev/budget';
|
|
28
|
+
function readAnnotations(source, accessModeKey, budgetKey) {
|
|
29
|
+
if (!source)
|
|
30
|
+
return {};
|
|
31
|
+
const out = {};
|
|
32
|
+
const mode = source[accessModeKey];
|
|
33
|
+
// `session-token` MUST NOT appear in an annotation: a resource that manages
|
|
34
|
+
// its own authorization does so for the whole resource and says so in
|
|
35
|
+
// access_mode. Drop it rather than honour it.
|
|
36
|
+
if (typeof mode === 'string' && mode && mode !== 'session-token')
|
|
37
|
+
out.access_mode = mode;
|
|
38
|
+
const budget = source[budgetKey];
|
|
39
|
+
if (typeof budget === 'boolean')
|
|
40
|
+
out.budget = budget;
|
|
41
|
+
return out;
|
|
42
|
+
}
|
|
43
|
+
/** Read the two annotations off an OpenAPI (or AsyncAPI) Operation Object. */
|
|
44
|
+
export function readOpenApiAnnotations(op) {
|
|
45
|
+
return readAnnotations(op, OPENAPI_ACCESS_MODE_KEY, OPENAPI_BUDGET_KEY);
|
|
46
|
+
}
|
|
47
|
+
/** Read the two annotations off an MCP Tool's `_meta`. */
|
|
48
|
+
export function readMcpToolAnnotations(tool) {
|
|
49
|
+
return readAnnotations(tool?._meta, MCP_ACCESS_MODE_KEY, MCP_BUDGET_KEY);
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* The access mode that actually applies to one operation.
|
|
53
|
+
*
|
|
54
|
+
* - An annotation replaces the resource-wide default outright (never intersects).
|
|
55
|
+
* - `budget: true` implies at least `auth-token`, because a budget is carried in
|
|
56
|
+
* the auth token's `budget` claim. Where the access mode annotation is absent,
|
|
57
|
+
* `budget: true` implies `auth-token` rather than the resource default; a
|
|
58
|
+
* resource MUST NOT pair `budget: true` with `agent-token` or `person-token`,
|
|
59
|
+
* and an agent that sees that combination anyway MUST treat it as `auth-token`.
|
|
60
|
+
* - Absent everything, the protocol default is `agent-token`.
|
|
61
|
+
*/
|
|
62
|
+
export function effectiveAccessMode(annotations, resourceWide) {
|
|
63
|
+
const annotated = annotations?.access_mode;
|
|
64
|
+
const base = annotated ?? resourceWide ?? 'agent-token';
|
|
65
|
+
if (annotations?.budget === true && (base === 'agent-token' || base === 'person-token')) {
|
|
66
|
+
return 'auth-token';
|
|
67
|
+
}
|
|
68
|
+
return base;
|
|
69
|
+
}
|
|
70
|
+
//# sourceMappingURL=annotations.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"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"}
|
package/dist/vocab/index.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { VocabAdapter } from './types.js';
|
|
2
2
|
export * from './types.js';
|
|
3
|
+
export * from './annotations.js';
|
|
3
4
|
export { OpenAPIAdapter } from './openapi.js';
|
|
4
|
-
export { OpenAPIGatewayAdapter } from './openapi-gateway.js';
|
|
5
5
|
export declare function getAdapter(vocabUri: string): VocabAdapter | undefined;
|
|
6
6
|
export declare function supportedVocabUris(): string[];
|
|
7
7
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/vocab/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"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"}
|
package/dist/vocab/index.js
CHANGED
|
@@ -1,17 +1,23 @@
|
|
|
1
1
|
// Vocabulary adapter registry. The agent proxy picks adapters at resource-load time by
|
|
2
2
|
// walking `r3_vocabularies` from the well-known doc and selecting every URN
|
|
3
3
|
// it has an adapter for.
|
|
4
|
+
//
|
|
5
|
+
// `urn:aauth:vocabulary:openapi-gateway` was removed in R3 -02 (aauth-dev/AAuth
|
|
6
|
+
// issue #72): operation identifiers are scoped to the one discovery endpoint a
|
|
7
|
+
// resource advertises per vocabulary (R3 -02 §Operation Identifier Scope), so a
|
|
8
|
+
// resource fronting several backend services either presents them as a single
|
|
9
|
+
// valid definition or exposes them under separate resource identifiers. There is
|
|
10
|
+
// no composite `service:operationId` identity and no `{service, operationId}`
|
|
11
|
+
// entry shape any more.
|
|
4
12
|
import { OpenAPIAdapter } from './openapi.js';
|
|
5
|
-
import { OpenAPIGatewayAdapter } from './openapi-gateway.js';
|
|
6
13
|
export * from './types.js';
|
|
14
|
+
export * from './annotations.js';
|
|
7
15
|
export { OpenAPIAdapter } from './openapi.js';
|
|
8
|
-
export { OpenAPIGatewayAdapter } from './openapi-gateway.js';
|
|
9
16
|
const ADAPTERS = {
|
|
10
17
|
'urn:aauth:vocabulary:openapi': new OpenAPIAdapter(),
|
|
11
|
-
'urn:aauth:vocabulary:openapi-gateway': new OpenAPIGatewayAdapter(),
|
|
12
18
|
// 'urn:aauth:vocabulary:asyncapi': new AsyncAPIAdapter(), // Phase 3
|
|
13
|
-
// 'urn:aauth:vocabulary:mcp
|
|
14
|
-
// 'urn:aauth:vocabulary:graphql':
|
|
19
|
+
// 'urn:aauth:vocabulary:mcp': new MCPAdapter(), // future
|
|
20
|
+
// 'urn:aauth:vocabulary:graphql': new GraphQLAdapter(), // future
|
|
15
21
|
};
|
|
16
22
|
export function getAdapter(vocabUri) {
|
|
17
23
|
return ADAPTERS[vocabUri];
|
package/dist/vocab/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/vocab/index.ts"],"names":[],"mappings":"AAAA,uFAAuF;AACvF,4EAA4E;AAC5E,yBAAyB;
|
|
1
|
+
{"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"}
|
package/dist/vocab/openapi.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { OperationAnnotations } from './annotations.js';
|
|
1
2
|
import type { InvocationPlan, InvokeArgs, OpDetail, OpSummary, VocabAdapter } from './types.js';
|
|
2
3
|
declare const HTTP_METHODS: readonly ["get", "post", "put", "delete", "patch", "head", "options"];
|
|
3
4
|
type HttpMethod = (typeof HTTP_METHODS)[number];
|
|
@@ -9,6 +10,7 @@ interface OpenAPIOperation {
|
|
|
9
10
|
parameters?: unknown[];
|
|
10
11
|
requestBody?: unknown;
|
|
11
12
|
responses?: Record<string, unknown>;
|
|
13
|
+
[ext: string]: unknown;
|
|
12
14
|
}
|
|
13
15
|
type OpenAPIPathItem = Partial<Record<HttpMethod, OpenAPIOperation>> & {
|
|
14
16
|
parameters?: unknown[];
|
|
@@ -27,6 +29,7 @@ interface ResolvedOp {
|
|
|
27
29
|
parameters?: unknown[];
|
|
28
30
|
requestBody?: unknown;
|
|
29
31
|
responses?: Record<string, unknown>;
|
|
32
|
+
annotations: OperationAnnotations;
|
|
30
33
|
}
|
|
31
34
|
export interface OpenAPIVocabDoc {
|
|
32
35
|
raw: OpenAPIDoc;
|
|
@@ -37,6 +40,7 @@ export declare class OpenAPIAdapter implements VocabAdapter<OpenAPIVocabDoc> {
|
|
|
37
40
|
load(url: string): Promise<OpenAPIVocabDoc>;
|
|
38
41
|
listOperations(doc: OpenAPIVocabDoc, query?: string): OpSummary[];
|
|
39
42
|
getOperations(doc: OpenAPIVocabDoc, opIds: string[]): OpDetail[];
|
|
43
|
+
annotationsFor(doc: OpenAPIVocabDoc, opId: string): OperationAnnotations;
|
|
40
44
|
buildInvocation(doc: OpenAPIVocabDoc, opId: string, args: InvokeArgs): InvocationPlan;
|
|
41
45
|
}
|
|
42
46
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"openapi.d.ts","sourceRoot":"","sources":["../../src/vocab/openapi.ts"],"names":[],"mappings":"
|
|
1
|
+
{"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"}
|
package/dist/vocab/openapi.js
CHANGED
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
// - free-text: matched against opId, summary, tags (case-insensitive substring)
|
|
5
5
|
// - path prefix: query starts with '/'; optional trailing /* — matches path prefix
|
|
6
6
|
// Both are bounded; the caller decides on a result cap.
|
|
7
|
+
import { readOpenApiAnnotations } from './annotations.js';
|
|
7
8
|
const HTTP_METHODS = ['get', 'post', 'put', 'delete', 'patch', 'head', 'options'];
|
|
8
9
|
function indexOperations(doc) {
|
|
9
10
|
const ops = new Map();
|
|
@@ -23,6 +24,7 @@ function indexOperations(doc) {
|
|
|
23
24
|
parameters: [...(item.parameters ?? []), ...(op.parameters ?? [])],
|
|
24
25
|
requestBody: op.requestBody,
|
|
25
26
|
responses: op.responses,
|
|
27
|
+
annotations: readOpenApiAnnotations(op),
|
|
26
28
|
});
|
|
27
29
|
}
|
|
28
30
|
}
|
|
@@ -53,6 +55,12 @@ function getOps(doc) {
|
|
|
53
55
|
doc.ops = ops;
|
|
54
56
|
return ops;
|
|
55
57
|
}
|
|
58
|
+
// Annotations are sparse: emit the field only when the operation carries one, so
|
|
59
|
+
// unannotated documents cost nothing extra in the listing the LLM reads.
|
|
60
|
+
function annotationsField(op) {
|
|
61
|
+
const a = op.annotations ?? {};
|
|
62
|
+
return Object.keys(a).length > 0 ? { annotations: a } : {};
|
|
63
|
+
}
|
|
56
64
|
export class OpenAPIAdapter {
|
|
57
65
|
vocabUri = 'urn:aauth:vocabulary:openapi';
|
|
58
66
|
async load(url) {
|
|
@@ -75,6 +83,7 @@ export class OpenAPIAdapter {
|
|
|
75
83
|
method: op.method,
|
|
76
84
|
path: op.path,
|
|
77
85
|
tags: op.tags,
|
|
86
|
+
...annotationsField(op),
|
|
78
87
|
});
|
|
79
88
|
}
|
|
80
89
|
return out;
|
|
@@ -93,6 +102,7 @@ export class OpenAPIAdapter {
|
|
|
93
102
|
method: op.method,
|
|
94
103
|
path: op.path,
|
|
95
104
|
tags: op.tags,
|
|
105
|
+
...annotationsField(op),
|
|
96
106
|
paramsSchema: op.parameters,
|
|
97
107
|
bodySchema: op.requestBody,
|
|
98
108
|
responseSchema: op.responses,
|
|
@@ -100,6 +110,9 @@ export class OpenAPIAdapter {
|
|
|
100
110
|
}
|
|
101
111
|
return out;
|
|
102
112
|
}
|
|
113
|
+
annotationsFor(doc, opId) {
|
|
114
|
+
return getOps(doc).get(opId)?.annotations ?? {};
|
|
115
|
+
}
|
|
103
116
|
buildInvocation(doc, opId, args) {
|
|
104
117
|
const op = getOps(doc).get(opId);
|
|
105
118
|
if (!op)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"openapi.js","sourceRoot":"","sources":["../../src/vocab/openapi.ts"],"names":[],"mappings":"AAAA,8DAA8D;AAC9D,EAAE;AACF,2CAA2C;AAC3C,kFAAkF;AAClF,qFAAqF;AACrF,wDAAwD;
|
|
1
|
+
{"version":3,"file":"openapi.js","sourceRoot":"","sources":["../../src/vocab/openapi.ts"],"names":[],"mappings":"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"}
|
package/dist/vocab/types.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { OperationAnnotations } from './annotations.js';
|
|
1
2
|
export type OpKind = 'sync.request' | 'async.send' | 'async.receive';
|
|
2
3
|
export interface OpSummary {
|
|
3
4
|
opId: string;
|
|
@@ -7,6 +8,20 @@ export interface OpSummary {
|
|
|
7
8
|
path?: string;
|
|
8
9
|
channel?: string;
|
|
9
10
|
tags?: string[];
|
|
11
|
+
/**
|
|
12
|
+
* The operation's own access annotations, when the vocabulary document carries
|
|
13
|
+
* them. Sparse by design — absent means "takes the resource-wide access_mode".
|
|
14
|
+
* resource.ts resolves these against the L1 entry before the LLM sees them.
|
|
15
|
+
*/
|
|
16
|
+
annotations?: OperationAnnotations;
|
|
17
|
+
/**
|
|
18
|
+
* The access mode that actually applies to this operation: the annotation when
|
|
19
|
+
* present, the resource-wide `access_mode` otherwise. Filled in by resource.ts,
|
|
20
|
+
* not by adapters. Advisory — the runtime AAuth-Requirement is authoritative.
|
|
21
|
+
*/
|
|
22
|
+
access_mode?: string;
|
|
23
|
+
/** true when invoking this operation draws down a budget. Omitted when false. */
|
|
24
|
+
budget?: boolean;
|
|
10
25
|
}
|
|
11
26
|
export interface OpDetail extends OpSummary {
|
|
12
27
|
paramsSchema?: unknown;
|
|
@@ -39,10 +54,11 @@ export interface InvokeArgs {
|
|
|
39
54
|
}
|
|
40
55
|
export interface VocabAdapter<Doc = unknown> {
|
|
41
56
|
readonly vocabUri: string;
|
|
42
|
-
load(source: string
|
|
57
|
+
load(source: string): Promise<Doc>;
|
|
43
58
|
listOperations(doc: Doc, query?: string): OpSummary[];
|
|
44
59
|
getOperations(doc: Doc, opIds: string[]): OpDetail[];
|
|
45
60
|
buildInvocation(doc: Doc, opId: string, args: InvokeArgs): InvocationPlan;
|
|
46
|
-
|
|
61
|
+
/** This operation's access annotations, or {} when it carries none. */
|
|
62
|
+
annotationsFor(doc: Doc, opId: string): OperationAnnotations;
|
|
47
63
|
}
|
|
48
64
|
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/vocab/types.ts"],"names":[],"mappings":"
|
|
1
|
+
{"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"}
|
package/dist/vocab/types.js
CHANGED
|
@@ -2,10 +2,13 @@
|
|
|
2
2
|
// in `r3_vocabularies` ({ urn → vocab_doc_url }). Each adapter knows how to:
|
|
3
3
|
// - fetch + parse the doc
|
|
4
4
|
// - enumerate operations as bounded summaries (for list_operations)
|
|
5
|
-
// - return full schemas for chosen op_ids (for
|
|
5
|
+
// - return full schemas for chosen op_ids (for get_operation_schemas)
|
|
6
6
|
// - turn (opId, args) into an InvocationPlan the agent proxy's `invoke` can execute
|
|
7
|
+
// - read each operation's access annotations (R3 -02 §Operation Access
|
|
8
|
+
// Annotations) off the vocabulary document
|
|
7
9
|
//
|
|
8
10
|
// See design.md §"Vocabularies". The LLM never sees `vocab` — it sees
|
|
9
|
-
// `kind` (sync.request | async.send | async.receive) on each OpSummary
|
|
11
|
+
// `kind` (sync.request | async.send | async.receive) on each OpSummary, plus
|
|
12
|
+
// the operation's effective `access_mode` / `budget`.
|
|
10
13
|
export {};
|
|
11
14
|
//# sourceMappingURL=types.js.map
|
package/dist/vocab/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/vocab/types.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,6EAA6E;AAC7E,4BAA4B;AAC5B,sEAAsE;AACtE,
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/vocab/types.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,6EAA6E;AAC7E,4BAA4B;AAC5B,sEAAsE;AACtE,wEAAwE;AACxE,sFAAsF;AACtF,yEAAyE;AACzE,+CAA+C;AAC/C,EAAE;AACF,sEAAsE;AACtE,6EAA6E;AAC7E,sDAAsD"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@aauth/proxy",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "2.0.0",
|
|
4
4
|
"description": "The user's AAuth agent in MCP form — discovery, identity, interaction relay",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"exports": {
|
|
@@ -45,7 +45,7 @@
|
|
|
45
45
|
"url": "https://github.com/aauth-dev/proxy"
|
|
46
46
|
},
|
|
47
47
|
"dependencies": {
|
|
48
|
-
"@aauth/local-keys": "^
|
|
48
|
+
"@aauth/local-keys": "^2.0.0",
|
|
49
49
|
"@hellocoop/httpsig": "^2.0.0",
|
|
50
50
|
"@modelcontextprotocol/sdk": "^1.29.0",
|
|
51
51
|
"uqr": "^0.1.3",
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import { type OpenAPIVocabDoc } from './openapi.js';
|
|
2
|
-
import type { InvocationPlan, InvokeArgs, OpDetail, OpSummary, VocabAdapter } from './types.js';
|
|
3
|
-
export interface GatewayVocabDoc {
|
|
4
|
-
services: Record<string, OpenAPIVocabDoc>;
|
|
5
|
-
}
|
|
6
|
-
export declare class OpenAPIGatewayAdapter implements VocabAdapter<GatewayVocabDoc> {
|
|
7
|
-
readonly vocabUri = "urn:aauth:vocabulary:openapi-gateway";
|
|
8
|
-
load(source: string | Record<string, string>): Promise<GatewayVocabDoc>;
|
|
9
|
-
listOperations(doc: GatewayVocabDoc, query?: string): OpSummary[];
|
|
10
|
-
getOperations(doc: GatewayVocabDoc, opIds: string[]): OpDetail[];
|
|
11
|
-
buildInvocation(doc: GatewayVocabDoc, compositeId: string, args: InvokeArgs): InvocationPlan;
|
|
12
|
-
formatOperationEntry(compositeId: string): Record<string, unknown>;
|
|
13
|
-
}
|
|
14
|
-
//# sourceMappingURL=openapi-gateway.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"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"}
|