agentfootprint 7.14.0 → 7.15.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/adapters/hosting/agentcore.js +350 -0
- package/dist/adapters/hosting/agentcore.js.map +1 -0
- package/dist/adapters/memory/agentcore.js +125 -1
- package/dist/adapters/memory/agentcore.js.map +1 -1
- package/dist/adapters/security/agentcore.js +0 -0
- package/dist/adapters/security/agentcore.js.map +1 -0
- package/dist/esm/adapters/hosting/agentcore.d.ts +199 -0
- package/dist/esm/adapters/hosting/agentcore.js +321 -0
- package/dist/esm/adapters/hosting/agentcore.js.map +1 -0
- package/dist/esm/adapters/memory/agentcore.d.ts +88 -2
- package/dist/esm/adapters/memory/agentcore.js +125 -1
- package/dist/esm/adapters/memory/agentcore.js.map +1 -1
- package/dist/esm/adapters/security/agentcore.d.ts +157 -0
- package/dist/esm/adapters/security/agentcore.js +0 -0
- package/dist/esm/adapters/security/agentcore.js.map +1 -0
- package/dist/esm/hosting/httpHost.d.ts +121 -0
- package/dist/esm/hosting/httpHost.js +248 -0
- package/dist/esm/hosting/httpHost.js.map +1 -0
- package/dist/esm/hosting/index.d.ts +8 -1
- package/dist/esm/hosting/index.js +7 -1
- package/dist/esm/hosting/index.js.map +1 -1
- package/dist/esm/hosting/nodeHost.d.ts +23 -16
- package/dist/esm/hosting/nodeHost.js +32 -199
- package/dist/esm/hosting/nodeHost.js.map +1 -1
- package/dist/esm/hosting-providers.d.ts +50 -0
- package/dist/esm/hosting-providers.js +50 -0
- package/dist/esm/hosting-providers.js.map +1 -0
- package/dist/esm/lib/mcp/gatewayTransport.d.ts +103 -0
- package/dist/esm/lib/mcp/gatewayTransport.js +123 -0
- package/dist/esm/lib/mcp/gatewayTransport.js.map +1 -0
- package/dist/esm/lib/mcp/index.d.ts +2 -1
- package/dist/esm/lib/mcp/index.js +1 -0
- package/dist/esm/lib/mcp/index.js.map +1 -1
- package/dist/esm/lib/mcp/mcpClient.js +10 -2
- package/dist/esm/lib/mcp/mcpClient.js.map +1 -1
- package/dist/esm/lib/mcp/types.d.ts +45 -1
- package/dist/esm/memory/store/types.d.ts +22 -0
- package/dist/esm/memory-providers.d.ts +1 -1
- package/dist/esm/memory-providers.js.map +1 -1
- package/dist/esm/security/index.d.ts +10 -1
- package/dist/esm/security/index.js +14 -1
- package/dist/esm/security/index.js.map +1 -1
- package/dist/esm/tool-providers/index.d.ts +6 -2
- package/dist/esm/tool-providers/index.js +5 -1
- package/dist/esm/tool-providers/index.js.map +1 -1
- package/dist/hosting/httpHost.js +276 -0
- package/dist/hosting/httpHost.js.map +1 -0
- package/dist/hosting/index.js +10 -1
- package/dist/hosting/index.js.map +1 -1
- package/dist/hosting/nodeHost.js +34 -224
- package/dist/hosting/nodeHost.js.map +1 -1
- package/dist/hosting-providers.js +57 -0
- package/dist/hosting-providers.js.map +1 -0
- package/dist/lib/mcp/gatewayTransport.js +129 -0
- package/dist/lib/mcp/gatewayTransport.js.map +1 -0
- package/dist/lib/mcp/index.js +4 -1
- package/dist/lib/mcp/index.js.map +1 -1
- package/dist/lib/mcp/mcpClient.js +10 -2
- package/dist/lib/mcp/mcpClient.js.map +1 -1
- package/dist/memory-providers.js.map +1 -1
- package/dist/security/index.js +16 -2
- package/dist/security/index.js.map +1 -1
- package/dist/tool-providers/index.js +7 -1
- package/dist/tool-providers/index.js.map +1 -1
- package/dist/types/adapters/hosting/agentcore.d.ts +200 -0
- package/dist/types/adapters/hosting/agentcore.d.ts.map +1 -0
- package/dist/types/adapters/memory/agentcore.d.ts +88 -2
- package/dist/types/adapters/memory/agentcore.d.ts.map +1 -1
- package/dist/types/adapters/security/agentcore.d.ts +158 -0
- package/dist/types/adapters/security/agentcore.d.ts.map +1 -0
- package/dist/types/hosting/httpHost.d.ts +122 -0
- package/dist/types/hosting/httpHost.d.ts.map +1 -0
- package/dist/types/hosting/index.d.ts +8 -1
- package/dist/types/hosting/index.d.ts.map +1 -1
- package/dist/types/hosting/nodeHost.d.ts +23 -16
- package/dist/types/hosting/nodeHost.d.ts.map +1 -1
- package/dist/types/hosting-providers.d.ts +51 -0
- package/dist/types/hosting-providers.d.ts.map +1 -0
- package/dist/types/lib/mcp/gatewayTransport.d.ts +104 -0
- package/dist/types/lib/mcp/gatewayTransport.d.ts.map +1 -0
- package/dist/types/lib/mcp/index.d.ts +2 -1
- package/dist/types/lib/mcp/index.d.ts.map +1 -1
- package/dist/types/lib/mcp/mcpClient.d.ts.map +1 -1
- package/dist/types/lib/mcp/types.d.ts +45 -1
- package/dist/types/lib/mcp/types.d.ts.map +1 -1
- package/dist/types/memory/store/types.d.ts +22 -0
- package/dist/types/memory/store/types.d.ts.map +1 -1
- package/dist/types/memory-providers.d.ts +1 -1
- package/dist/types/memory-providers.d.ts.map +1 -1
- package/dist/types/security/index.d.ts +10 -1
- package/dist/types/security/index.d.ts.map +1 -1
- package/dist/types/tool-providers/index.d.ts +6 -2
- package/dist/types/tool-providers/index.d.ts.map +1 -1
- package/package.json +14 -1
|
@@ -27,9 +27,15 @@
|
|
|
27
27
|
* AgentCore's ids are server-assigned. **O(events in session)** — fine for typical
|
|
28
28
|
* window sizes; if you need O(1) keyed access at scale, use RedisStore.
|
|
29
29
|
* • `forget` → `ListEvents` + `DeleteEvent` per event (no `DeleteSession` on AgentCore).
|
|
30
|
-
* • `search` →
|
|
30
|
+
* • `search` → `RetrieveMemoryRecords`, **text-in**. AgentCore embeds and ranks on its
|
|
31
|
+
* own side, so it takes a natural-language query; the port's `search()` takes a
|
|
32
|
+
* vector. Pass `options.text` and this store serves the query; omit it and it refuses
|
|
33
|
+
* by name rather than ranking an empty set. See `search()` below for the whole story.
|
|
31
34
|
* • `putIfVersion` / `seen` / `feedback` → in-process emulation (AgentCore has no native
|
|
32
35
|
* CAS / dedup / feedback primitive; these don't survive process restart).
|
|
36
|
+
* • no `stream()` — AgentCore Memory has no streaming data-plane operation, and the
|
|
37
|
+
* `MemoryStore` port has no streaming method to implement. Inventing one for a single
|
|
38
|
+
* backend is how a port stops being a port.
|
|
33
39
|
*
|
|
34
40
|
* Role: Outer ring. Lazy-requires the AWS SDK; zero runtime cost when another adapter is
|
|
35
41
|
* in use. Emits: N/A (storage adapters don't emit).
|
|
@@ -55,6 +61,8 @@ export class AgentCoreStore {
|
|
|
55
61
|
client;
|
|
56
62
|
memoryId;
|
|
57
63
|
pageSize;
|
|
64
|
+
searchNamespace;
|
|
65
|
+
searchStrategyId;
|
|
58
66
|
closed = false;
|
|
59
67
|
// In-process shadow state for things AgentCore doesn't surface natively.
|
|
60
68
|
signatures = new Map();
|
|
@@ -64,6 +72,10 @@ export class AgentCoreStore {
|
|
|
64
72
|
throw new Error('AgentCoreStore requires `memoryId`.');
|
|
65
73
|
this.memoryId = options.memoryId;
|
|
66
74
|
this.pageSize = options.pageSize ?? 100;
|
|
75
|
+
this.searchNamespace =
|
|
76
|
+
options.searchNamespace ??
|
|
77
|
+
(({ actorId, sessionId }) => `/actors/${actorId}/sessions/${sessionId}`);
|
|
78
|
+
this.searchStrategyId = options.searchStrategyId;
|
|
67
79
|
if (options._client)
|
|
68
80
|
this.client = options._client;
|
|
69
81
|
else if (options.client)
|
|
@@ -224,6 +236,90 @@ export class AgentCoreStore {
|
|
|
224
236
|
this.feedbackBag.delete(key);
|
|
225
237
|
}
|
|
226
238
|
}
|
|
239
|
+
/**
|
|
240
|
+
* Server-side semantic retrieval over AgentCore's extracted memory records
|
|
241
|
+
* (`RetrieveMemoryRecords`).
|
|
242
|
+
*
|
|
243
|
+
* ── Read this before you call it ─────────────────────────────────────────
|
|
244
|
+
* **It takes TEXT, not the vector.** AgentCore embeds and ranks on its own
|
|
245
|
+
* side, so `query` — the port's vector — is unusable here, and the query it
|
|
246
|
+
* actually needs travels in `options.text`. Omit that and this method throws
|
|
247
|
+
* a corrective error naming what is missing, because the alternative is
|
|
248
|
+
* ranking nothing and handing back `[]`, which reads as "no matches" when it
|
|
249
|
+
* really means "wrong query form". Pass both and every store can serve you:
|
|
250
|
+
* local-ranking backends use the vector and ignore the text.
|
|
251
|
+
*
|
|
252
|
+
* **It searches a DIFFERENT population than `list()`.** `list` returns the
|
|
253
|
+
* events this store wrote. This returns the records AgentCore's extraction
|
|
254
|
+
* strategies derived FROM those events — summaries, semantic facts, user
|
|
255
|
+
* preferences. The ids therefore belong to AgentCore, not to entries you
|
|
256
|
+
* `put()`, and `store.get(entry.id)` will not find them. They arrive as
|
|
257
|
+
* entries so ranking code needs no special case, with `metadata.source`
|
|
258
|
+
* saying plainly where they came from.
|
|
259
|
+
*
|
|
260
|
+
* Filters: `searchStrategyId` and the namespace reach AgentCore's own side;
|
|
261
|
+
* `k`, `minScore` and `tiers` are applied to what comes back.
|
|
262
|
+
*
|
|
263
|
+
* @throws when `options.text` is absent, or when the client cannot retrieve.
|
|
264
|
+
*/
|
|
265
|
+
async search(identity, query, options = {}) {
|
|
266
|
+
this.ensureOpen('search');
|
|
267
|
+
const text = options.text?.trim();
|
|
268
|
+
if (!text) {
|
|
269
|
+
throw new Error('AgentCoreStore.search() needs the query as TEXT, in `options.text`.\n' +
|
|
270
|
+
` AgentCore embeds and ranks server-side (RetrieveMemoryRecords), so the ${query.length}-dimension\n` +
|
|
271
|
+
' vector this method was handed cannot be sent anywhere — and returning [] would look\n' +
|
|
272
|
+
' like "no matches" rather than "wrong query form".\n' +
|
|
273
|
+
' Fix: store.search(identity, vector, { text: theUserQuestion })\n' +
|
|
274
|
+
' Backends that rank locally ignore `text`, so passing both is always safe.');
|
|
275
|
+
}
|
|
276
|
+
if (!this.client.retrieveRecords) {
|
|
277
|
+
throw new Error('AgentCoreStore.search() requires a client that implements `retrieveRecords`.\n' +
|
|
278
|
+
' The built-in client does; a custom or older injected `client` / `_client` may not.');
|
|
279
|
+
}
|
|
280
|
+
const scope = this.scope(identity);
|
|
281
|
+
const k = options.k ?? 10;
|
|
282
|
+
const page = await this.client.retrieveRecords({
|
|
283
|
+
memoryId: this.memoryId,
|
|
284
|
+
namespace: this.searchNamespace({ actorId: scope.actorId, sessionId: scope.sessionId }),
|
|
285
|
+
searchQuery: text,
|
|
286
|
+
maxResults: k,
|
|
287
|
+
...(this.searchStrategyId !== undefined && { memoryStrategyId: this.searchStrategyId }),
|
|
288
|
+
});
|
|
289
|
+
const scored = [];
|
|
290
|
+
for (const record of page.records) {
|
|
291
|
+
const score = record.score ?? 0;
|
|
292
|
+
if (options.minScore !== undefined && score < options.minScore)
|
|
293
|
+
continue;
|
|
294
|
+
// AgentCore records carry no tier. A tier filter therefore excludes them
|
|
295
|
+
// all rather than silently ignoring the filter the caller asked for.
|
|
296
|
+
if (options.tiers && options.tiers.length > 0)
|
|
297
|
+
continue;
|
|
298
|
+
const createdAt = record.createdAt ?? Date.now();
|
|
299
|
+
const entry = {
|
|
300
|
+
id: record.memoryRecordId,
|
|
301
|
+
value: record.content,
|
|
302
|
+
version: 1,
|
|
303
|
+
createdAt,
|
|
304
|
+
updatedAt: createdAt,
|
|
305
|
+
lastAccessedAt: Date.now(),
|
|
306
|
+
accessCount: 0,
|
|
307
|
+
metadata: {
|
|
308
|
+
// Says plainly that this did not come from an event this store wrote.
|
|
309
|
+
source: 'agentcore-memory-record',
|
|
310
|
+
...(record.memoryStrategyId !== undefined && {
|
|
311
|
+
memoryStrategyId: record.memoryStrategyId,
|
|
312
|
+
}),
|
|
313
|
+
...(record.namespace !== undefined && { namespace: record.namespace }),
|
|
314
|
+
},
|
|
315
|
+
};
|
|
316
|
+
scored.push({ entry, score });
|
|
317
|
+
}
|
|
318
|
+
// AgentCore returns its own ranking; re-sort anyway so the port's
|
|
319
|
+
// "descending by score" holds even if a future API version reorders.
|
|
320
|
+
scored.sort((a, b) => b.score !== a.score ? b.score - a.score : a.entry.id < b.entry.id ? -1 : 1);
|
|
321
|
+
return scored.slice(0, k);
|
|
322
|
+
}
|
|
227
323
|
async close() {
|
|
228
324
|
if (this.closed)
|
|
229
325
|
return;
|
|
@@ -318,6 +414,34 @@ function createAgentCoreClient(region, injected) {
|
|
|
318
414
|
eventId,
|
|
319
415
|
});
|
|
320
416
|
},
|
|
417
|
+
async retrieveRecords({ memoryId, namespace, searchQuery, maxResults, memoryStrategyId }) {
|
|
418
|
+
// AgentCore nests the query under `searchCriteria`; the strategy id is the
|
|
419
|
+
// metadata filter that reaches its side rather than being applied after.
|
|
420
|
+
const r = (await send(mod.RetrieveMemoryRecordsCommand, 'RetrieveMemoryRecordsCommand', {
|
|
421
|
+
memoryId,
|
|
422
|
+
namespace,
|
|
423
|
+
searchCriteria: {
|
|
424
|
+
searchQuery,
|
|
425
|
+
...(maxResults !== undefined && { topK: maxResults }),
|
|
426
|
+
...(memoryStrategyId !== undefined && { memoryStrategyId }),
|
|
427
|
+
},
|
|
428
|
+
...(maxResults !== undefined && { maxResults }),
|
|
429
|
+
}));
|
|
430
|
+
const records = (r?.memoryRecordSummaries ?? []).map((s) => {
|
|
431
|
+
const content = typeof s.content === 'string' ? s.content : s.content?.text ?? '';
|
|
432
|
+
const namespaceValue = Array.isArray(s.namespace) ? s.namespace[0] : s.namespace;
|
|
433
|
+
const createdAt = s.createdAt === undefined ? undefined : new Date(s.createdAt).getTime();
|
|
434
|
+
return {
|
|
435
|
+
memoryRecordId: s.memoryRecordId ?? '',
|
|
436
|
+
content,
|
|
437
|
+
...(typeof s.score === 'number' && { score: s.score }),
|
|
438
|
+
...(s.memoryStrategyId !== undefined && { memoryStrategyId: s.memoryStrategyId }),
|
|
439
|
+
...(typeof namespaceValue === 'string' && { namespace: namespaceValue }),
|
|
440
|
+
...(createdAt !== undefined && Number.isFinite(createdAt) && { createdAt }),
|
|
441
|
+
};
|
|
442
|
+
});
|
|
443
|
+
return { records };
|
|
444
|
+
},
|
|
321
445
|
};
|
|
322
446
|
}
|
|
323
447
|
//# sourceMappingURL=agentcore.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agentcore.js","sourceRoot":"","sources":["../../../../src/adapters/memory/agentcore.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"agentcore.js","sourceRoot":"","sources":["../../../../src/adapters/memory/agentcore.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,157 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* agentCorePolicy — AWS Bedrock **AgentCore Policy** adapter for the
|
|
3
|
+
* {@link PermissionChecker} port (peer-dep `@aws-sdk/client-bedrock-agentcore`).
|
|
4
|
+
*
|
|
5
|
+
* import { agentCorePolicy } from 'agentfootprint/security';
|
|
6
|
+
*
|
|
7
|
+
* const agent = Agent.create({
|
|
8
|
+
* provider,
|
|
9
|
+
* model,
|
|
10
|
+
* permissionChecker: agentCorePolicy({ policyStoreId: process.env.POLICY_STORE_ID! }),
|
|
11
|
+
* }).build();
|
|
12
|
+
*
|
|
13
|
+
* Maps one port method onto one data-plane call: every attempted tool call
|
|
14
|
+
* becomes a policy evaluation, and the returned decision becomes a
|
|
15
|
+
* `PermissionDecision`. Nothing else.
|
|
16
|
+
*
|
|
17
|
+
* ── The three rules this adapter is written under ────────────────────────────
|
|
18
|
+
*
|
|
19
|
+
* **1. Fail closed.** A policy engine you cannot reach has not said yes. When
|
|
20
|
+
* evaluation throws — network, credentials, a renamed field, a policy store
|
|
21
|
+
* that does not exist — the decision is `deny`, and it says so in words a
|
|
22
|
+
* human can act on. `onUnavailable: 'allow-with-warning'` is available for
|
|
23
|
+
* teams rolling policy out gradually, and it is deliberately awkward to type,
|
|
24
|
+
* because "we could not check, so we allowed it" is a sentence you should have
|
|
25
|
+
* to write down on purpose.
|
|
26
|
+
*
|
|
27
|
+
* **2. The reason rides to the model AS DATA.** A denied tool call comes back
|
|
28
|
+
* to the LLM as a `tellLLM` string, not as an exception. The model then
|
|
29
|
+
* re-decides with the refusal in front of it, which is the difference between
|
|
30
|
+
* an agent that says "I am not allowed to do that" and a run that dies.
|
|
31
|
+
* Telemetry (`reason`) stays out of `tellLLM` — the model does not get taught
|
|
32
|
+
* the shape of the rule space.
|
|
33
|
+
*
|
|
34
|
+
* **3. One evaluation per (tool, principal) per turn.** The ReAct loop can put
|
|
35
|
+
* the same tool in front of the gate several times in one iteration; paying for
|
|
36
|
+
* a round-trip each time buys nothing, because nothing between them could have
|
|
37
|
+
* changed the answer. The cache key is the tool, the principal AND the
|
|
38
|
+
* iteration, so the NEXT turn re-asks — a policy that changed mid-conversation
|
|
39
|
+
* is honoured on the next turn rather than at the end of the run.
|
|
40
|
+
*
|
|
41
|
+
* ── Verification status, stated plainly ──────────────────────────────────────
|
|
42
|
+
* **Contract-mapped and injection-tested.** Every AWS interaction is exercised
|
|
43
|
+
* through the `_client` seam; no test in this repo reaches AWS, and none
|
|
44
|
+
* pretends to. Confirm the command and field names against your installed
|
|
45
|
+
* `@aws-sdk/client-bedrock-agentcore` — this adapter targets an
|
|
46
|
+
* evaluate-a-request shape and is structured so the request → decision mapping
|
|
47
|
+
* is unit-tested independently of the SDK. Real-cloud verification lands with a
|
|
48
|
+
* field deployment.
|
|
49
|
+
*
|
|
50
|
+
* Pattern: Adapter (GoF) + lazy peer-dep load. Role: Layer-3 cross-cutting
|
|
51
|
+
* guard, exactly where `PermissionPolicy` sits — this one just asks somebody
|
|
52
|
+
* else.
|
|
53
|
+
*/
|
|
54
|
+
import type { PermissionChecker } from '../types.js';
|
|
55
|
+
/** What the policy engine answered. */
|
|
56
|
+
export interface AgentCorePolicyEvaluation {
|
|
57
|
+
/**
|
|
58
|
+
* The engine's verdict. Compared case-insensitively against `'allow'`;
|
|
59
|
+
* ANYTHING else is a denial, including a value this adapter has never seen.
|
|
60
|
+
* An unrecognised verdict is not a permission.
|
|
61
|
+
*/
|
|
62
|
+
readonly decision: string;
|
|
63
|
+
/** Why, when the engine explains itself. Surfaces to the model on a denial. */
|
|
64
|
+
readonly reason?: string;
|
|
65
|
+
/** Which policy decided, for the audit trail. */
|
|
66
|
+
readonly policyId?: string;
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* The minimal surface this adapter calls. The real SDK client is adapted to it
|
|
70
|
+
* in one function below; tests inject a fake via `_client` and never touch AWS.
|
|
71
|
+
*/
|
|
72
|
+
export interface AgentCorePolicyClientLike {
|
|
73
|
+
evaluate(input: {
|
|
74
|
+
readonly policyStoreId: string;
|
|
75
|
+
/** Who is acting — the end user when the run carries one, else the agent. */
|
|
76
|
+
readonly principal: string;
|
|
77
|
+
/** What they are trying to do — the tool name for a tool call. */
|
|
78
|
+
readonly action: string;
|
|
79
|
+
/** What they are trying to do it to — the capability being exercised. */
|
|
80
|
+
readonly resource: string;
|
|
81
|
+
/** Everything else the policy may want to read. */
|
|
82
|
+
readonly context?: Readonly<Record<string, unknown>>;
|
|
83
|
+
}): Promise<AgentCorePolicyEvaluation>;
|
|
84
|
+
}
|
|
85
|
+
/** What to do when the policy engine cannot be reached or answers unintelligibly. */
|
|
86
|
+
export type AgentCorePolicyUnavailable = 'deny' | 'allow-with-warning';
|
|
87
|
+
/** Options for {@link agentCorePolicy}. */
|
|
88
|
+
export interface AgentCorePolicyOptions {
|
|
89
|
+
/** The AgentCore policy store to evaluate against. Required. */
|
|
90
|
+
readonly policyStoreId: string;
|
|
91
|
+
/** AWS region, when the adapter constructs the SDK client itself. */
|
|
92
|
+
readonly region?: string;
|
|
93
|
+
/**
|
|
94
|
+
* What an evaluation FAILURE means. Default `'deny'` — fail closed.
|
|
95
|
+
*
|
|
96
|
+
* `'allow-with-warning'` allows the call and reports the failure through
|
|
97
|
+
* `onWarning`, for a rollout where the policy store is not yet the source of
|
|
98
|
+
* truth. It never applies to a successful evaluation that said no: an
|
|
99
|
+
* explicit denial is always a denial.
|
|
100
|
+
*/
|
|
101
|
+
readonly onUnavailable?: AgentCorePolicyUnavailable;
|
|
102
|
+
/**
|
|
103
|
+
* Called when `onUnavailable: 'allow-with-warning'` lets a call through.
|
|
104
|
+
* Default: `console.warn`. Give it your logger so the allow-on-failure is
|
|
105
|
+
* something an on-call engineer can find later.
|
|
106
|
+
*/
|
|
107
|
+
readonly onWarning?: (message: string, error: Error) => void;
|
|
108
|
+
/**
|
|
109
|
+
* Derive the policy principal from the run's identity. Default:
|
|
110
|
+
* `identity.principal`, else `identity.tenant`, else `'agent'`.
|
|
111
|
+
*
|
|
112
|
+
* The default is also the cache key, so a checker shared across users never
|
|
113
|
+
* hands one user's decision to another.
|
|
114
|
+
*/
|
|
115
|
+
readonly principalFor?: (identity: {
|
|
116
|
+
readonly principal?: string;
|
|
117
|
+
readonly tenant?: string;
|
|
118
|
+
} | undefined) => string;
|
|
119
|
+
/** Stable name, surfaced on permission events. Default `'agentCorePolicy'`. */
|
|
120
|
+
readonly name?: string;
|
|
121
|
+
/** Most decisions to keep cached at once. Default 500. Oldest are evicted first. */
|
|
122
|
+
readonly cacheSize?: number;
|
|
123
|
+
/** @internal Test injection — skips the SDK require entirely. */
|
|
124
|
+
readonly _client?: AgentCorePolicyClientLike;
|
|
125
|
+
/** @internal Test injection — the AWS SDK module, to exercise the real shim with a fake SDK. */
|
|
126
|
+
readonly _sdk?: BedrockAgentCorePolicySdkModule;
|
|
127
|
+
}
|
|
128
|
+
/**
|
|
129
|
+
* A `PermissionChecker` backed by an AgentCore policy store.
|
|
130
|
+
*
|
|
131
|
+
* Composes with everything already in the box and knows about none of it. In
|
|
132
|
+
* particular `gatedTools(...)` is a DIFFERENT layer and stays untouched: the
|
|
133
|
+
* gate decides what the model is shown, this decides what actually runs, and
|
|
134
|
+
* neither needs to be told the other exists. A tool hidden by a gate is never
|
|
135
|
+
* evaluated (the model cannot call what it cannot see); a tool the gate shows
|
|
136
|
+
* still has to get past the policy.
|
|
137
|
+
*
|
|
138
|
+
* @example Fail closed (the default)
|
|
139
|
+
* permissionChecker: agentCorePolicy({ policyStoreId, region: 'us-west-2' })
|
|
140
|
+
*
|
|
141
|
+
* @example Rolling policy out, with the allow-on-failure logged where you can find it
|
|
142
|
+
* agentCorePolicy({
|
|
143
|
+
* policyStoreId,
|
|
144
|
+
* onUnavailable: 'allow-with-warning',
|
|
145
|
+
* onWarning: (message, error) => logger.warn({ err: error }, message),
|
|
146
|
+
* });
|
|
147
|
+
*/
|
|
148
|
+
export declare function agentCorePolicy(options: AgentCorePolicyOptions): PermissionChecker;
|
|
149
|
+
/** The slice of `@aws-sdk/client-bedrock-agentcore` this shim touches. */
|
|
150
|
+
export interface BedrockAgentCorePolicySdkModule {
|
|
151
|
+
readonly BedrockAgentCoreClient?: new (config: {
|
|
152
|
+
region?: string;
|
|
153
|
+
}) => {
|
|
154
|
+
send(cmd: unknown): Promise<unknown>;
|
|
155
|
+
};
|
|
156
|
+
readonly EvaluatePolicyCommand?: new (input: unknown) => unknown;
|
|
157
|
+
}
|
|
Binary file
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agentcore.js","sourceRoot":"","sources":["../../../../src/adapters/security/agentcore.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* hosting/httpHost — one HTTP host, parameterised by the JSON dialect it speaks.
|
|
3
|
+
*
|
|
4
|
+
* Everything hard about serving an agent over HTTP happens once, here: draining
|
|
5
|
+
* on close, aborting when the caller hangs up, failing a handler that throws,
|
|
6
|
+
* failing a handler that answers nothing, mapping refusal codes onto status
|
|
7
|
+
* codes, and choosing between one JSON body and Server-Sent Events based on
|
|
8
|
+
* what the caller asked for.
|
|
9
|
+
*
|
|
10
|
+
* Everything a deployment target gets to re-decide is an {@link HttpWire}: the
|
|
11
|
+
* two paths, and the five JSON shapes — how a request names its input and its
|
|
12
|
+
* session, and what a health probe, a completion, a failure and a streamed
|
|
13
|
+
* piece look like on the wire.
|
|
14
|
+
*
|
|
15
|
+
* ── Why this file exists ─────────────────────────────────────────────────────
|
|
16
|
+
* `nodeHost` shipped first and hard-coded its own dialect: `{ input }` in,
|
|
17
|
+
* `{ output }` out, `{ status: 'ok' }` on the health path. That was fine while
|
|
18
|
+
* it was the only HTTP adapter and wrong the moment there was a second one. A
|
|
19
|
+
* container runtime dictates its own body shape as surely as it dictates its
|
|
20
|
+
* paths, and an adapter for it should be a CONFIGURATION of the HTTP work, not
|
|
21
|
+
* a second copy of it — a copy is where the drain semantics of two adapters
|
|
22
|
+
* silently diverge.
|
|
23
|
+
*
|
|
24
|
+
* Note what did NOT have to change for that: the ports. `AgentHost`,
|
|
25
|
+
* `HostRequest` and `HostReply` say exactly what they said before. The gap was
|
|
26
|
+
* in the first adapter, which had no seam, not in the port, which needed none.
|
|
27
|
+
*
|
|
28
|
+
* Pattern: Template method via configuration (Strategy on the wire format).
|
|
29
|
+
* Everything HTTP lives here and in the wires; `types.ts` knows none of it.
|
|
30
|
+
*/
|
|
31
|
+
import type { AgentHost, HostCapability, HostHandle, HostHandler } from './types.js';
|
|
32
|
+
/** Everything a {@link HttpWire} may read when pulling a request apart. */
|
|
33
|
+
export interface HttpRequestFacts {
|
|
34
|
+
/** The parsed JSON body, or `{}` for an empty one. */
|
|
35
|
+
readonly body: Readonly<Record<string, unknown>>;
|
|
36
|
+
/** Request headers with lower-cased names — so a wire never has to guess casing. */
|
|
37
|
+
readonly headers: Readonly<Record<string, string>>;
|
|
38
|
+
/** The query string, already parsed. */
|
|
39
|
+
readonly query: URLSearchParams;
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* The JSON dialect one deployment target speaks.
|
|
43
|
+
*
|
|
44
|
+
* A wire is pure: it reads facts and returns values. It never touches the
|
|
45
|
+
* socket, never decides a status code, and never knows whether the reply is
|
|
46
|
+
* going out as one body or as a stream of frames — those are {@link httpHost}'s
|
|
47
|
+
* job, identical for every wire, which is the entire point of separating them.
|
|
48
|
+
*/
|
|
49
|
+
export interface HttpWire {
|
|
50
|
+
/**
|
|
51
|
+
* Pull the port's vocabulary out of one request. Anything the wire cannot
|
|
52
|
+
* find is simply absent — a missing input is the empty string, and a missing
|
|
53
|
+
* session id means "no session", never an error, because refusing a request
|
|
54
|
+
* on the shape of its body is a policy decision that belongs above the
|
|
55
|
+
* transport.
|
|
56
|
+
*/
|
|
57
|
+
readRequest(facts: HttpRequestFacts): {
|
|
58
|
+
readonly input: string;
|
|
59
|
+
readonly sessionId?: string;
|
|
60
|
+
};
|
|
61
|
+
/** Body for a health probe. `uptimeMs` is how long this host has been serving. */
|
|
62
|
+
health(uptimeMs: number): unknown;
|
|
63
|
+
/** Body for a reply that completed. */
|
|
64
|
+
output(output: string): unknown;
|
|
65
|
+
/** Body for a reply that failed. `code` is the refusal's stable code, when it has one. */
|
|
66
|
+
failure(message: string, code?: string): unknown;
|
|
67
|
+
/** Body for one streamed piece, when the caller asked for Server-Sent Events. */
|
|
68
|
+
chunk(text: string): unknown;
|
|
69
|
+
}
|
|
70
|
+
/** Options for {@link httpHost}. */
|
|
71
|
+
export interface HttpHostOptions {
|
|
72
|
+
/**
|
|
73
|
+
* Which adapter this is. Every refusal names it, so a caller reading an error
|
|
74
|
+
* learns which adapter said no rather than which file it came from.
|
|
75
|
+
*/
|
|
76
|
+
readonly name: string;
|
|
77
|
+
/** The JSON dialect this host speaks. */
|
|
78
|
+
readonly wire: HttpWire;
|
|
79
|
+
/**
|
|
80
|
+
* Path that takes a request. **Required, deliberately.** A default here would
|
|
81
|
+
* be inherited by every adapter built on this file, and a default that
|
|
82
|
+
* silently matched one runtime's container contract is exactly how a vendor
|
|
83
|
+
* leaks into a library that promises not to know about one.
|
|
84
|
+
*/
|
|
85
|
+
readonly invokePath: string;
|
|
86
|
+
/** Path that answers a health probe. Required, for the same reason. */
|
|
87
|
+
readonly healthPath: string;
|
|
88
|
+
/** Port to bind. Default `8080`. Pass `0` for an ephemeral port. */
|
|
89
|
+
readonly port?: number;
|
|
90
|
+
/** Interface to bind. Default `'0.0.0.0'`. */
|
|
91
|
+
readonly hostname?: string;
|
|
92
|
+
/** What this adapter claims beyond the baseline. Default `['streaming']`. */
|
|
93
|
+
readonly capabilities?: readonly HostCapability[];
|
|
94
|
+
}
|
|
95
|
+
/** A {@link HostHandle} that also says where it landed. */
|
|
96
|
+
export interface HttpHostHandle extends HostHandle {
|
|
97
|
+
/** Where it is actually listening, e.g. `http://127.0.0.1:53211`. */
|
|
98
|
+
readonly url: string;
|
|
99
|
+
/** The port it actually bound — the real one, when you asked for `0`. */
|
|
100
|
+
readonly port: number;
|
|
101
|
+
}
|
|
102
|
+
/** {@link AgentHost} narrowed to an HTTP handle. */
|
|
103
|
+
export interface HttpHost extends AgentHost {
|
|
104
|
+
serve(handler: HostHandler): Promise<HttpHostHandle>;
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* An HTTP host for one handler, speaking the dialect you hand it.
|
|
108
|
+
*
|
|
109
|
+
* @example The same machinery, two dialects
|
|
110
|
+
* httpHost({ name: 'nodeHost', wire: jsonWire, invokePath: '/invoke', healthPath: '/health' });
|
|
111
|
+
* httpHost({ name: 'myRuntime', wire: myWire, invokePath: '/v1/run', healthPath: '/up' });
|
|
112
|
+
*/
|
|
113
|
+
export declare function httpHost(options: HttpHostOptions): HttpHost;
|
|
114
|
+
/**
|
|
115
|
+
* Read a header case-insensitively from already-lower-cased facts.
|
|
116
|
+
*
|
|
117
|
+
* Exported because every wire that maps a header needs it and re-deriving it
|
|
118
|
+
* per adapter is how one of them ends up matching only the exact casing the
|
|
119
|
+
* author happened to test with.
|
|
120
|
+
*/
|
|
121
|
+
export declare function headerValue(facts: HttpRequestFacts, name: string, ...fallbacks: string[]): string | undefined;
|