agentfootprint 9.65.0 → 9.67.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/identity/agentcore.js +118 -2
- package/dist/adapters/identity/agentcore.js.map +1 -1
- package/dist/adapters/mcp/agentcore.js +156 -0
- package/dist/adapters/mcp/agentcore.js.map +1 -0
- package/dist/adapters/observability/agentcore.js +61 -1
- package/dist/adapters/observability/agentcore.js.map +1 -1
- package/dist/adapters/observability/otel.js +12 -3
- package/dist/adapters/observability/otel.js.map +1 -1
- package/dist/esm/adapters/identity/agentcore.d.ts +115 -1
- package/dist/esm/adapters/identity/agentcore.js +117 -2
- package/dist/esm/adapters/identity/agentcore.js.map +1 -1
- package/dist/esm/adapters/mcp/agentcore.d.ts +143 -0
- package/dist/esm/adapters/mcp/agentcore.js +149 -0
- package/dist/esm/adapters/mcp/agentcore.js.map +1 -0
- package/dist/esm/adapters/observability/agentcore.d.ts +50 -0
- package/dist/esm/adapters/observability/agentcore.js +59 -0
- package/dist/esm/adapters/observability/agentcore.js.map +1 -1
- package/dist/esm/adapters/observability/otel.d.ts +73 -3
- package/dist/esm/adapters/observability/otel.js +12 -3
- package/dist/esm/adapters/observability/otel.js.map +1 -1
- package/dist/esm/identity.d.ts +1 -1
- package/dist/esm/identity.js +5 -1
- package/dist/esm/identity.js.map +1 -1
- package/dist/esm/observability-providers.d.ts +1 -1
- package/dist/esm/observability-providers.js +5 -1
- package/dist/esm/observability-providers.js.map +1 -1
- package/dist/esm/tool-providers/index.d.ts +2 -0
- package/dist/esm/tool-providers/index.js +5 -0
- package/dist/esm/tool-providers/index.js.map +1 -1
- package/dist/identity.js +5 -1
- package/dist/identity.js.map +1 -1
- package/dist/observability-providers.js +6 -1
- package/dist/observability-providers.js.map +1 -1
- package/dist/tool-providers/index.js +13 -1
- package/dist/tool-providers/index.js.map +1 -1
- package/dist/types/adapters/identity/agentcore.d.ts +115 -1
- package/dist/types/adapters/identity/agentcore.d.ts.map +1 -1
- package/dist/types/adapters/mcp/agentcore.d.ts +144 -0
- package/dist/types/adapters/mcp/agentcore.d.ts.map +1 -0
- package/dist/types/adapters/observability/agentcore.d.ts +50 -0
- package/dist/types/adapters/observability/agentcore.d.ts.map +1 -1
- package/dist/types/adapters/observability/otel.d.ts +73 -3
- package/dist/types/adapters/observability/otel.d.ts.map +1 -1
- package/dist/types/identity.d.ts +1 -1
- package/dist/types/identity.d.ts.map +1 -1
- package/dist/types/observability-providers.d.ts +1 -1
- package/dist/types/observability-providers.d.ts.map +1 -1
- package/dist/types/tool-providers/index.d.ts +2 -0
- package/dist/types/tool-providers/index.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -103,7 +103,7 @@ export interface AgentCoreIdentityClientLike {
|
|
|
103
103
|
getResourceOauth2Token(input: {
|
|
104
104
|
readonly resourceCredentialProviderName: string;
|
|
105
105
|
readonly scopes: readonly string[];
|
|
106
|
-
readonly oauth2Flow: 'M2M' | 'USER_FEDERATION';
|
|
106
|
+
readonly oauth2Flow: 'M2M' | 'USER_FEDERATION' | 'ON_BEHALF_OF_TOKEN_EXCHANGE';
|
|
107
107
|
readonly forceAuthentication: boolean;
|
|
108
108
|
readonly workloadIdentityToken?: string;
|
|
109
109
|
}): Promise<AgentCoreOauthResponse>;
|
|
@@ -126,6 +126,25 @@ export interface AgentCoreIdentityClientLike {
|
|
|
126
126
|
}): Promise<{
|
|
127
127
|
readonly workloadAccessToken?: string;
|
|
128
128
|
}>;
|
|
129
|
+
/** Optional — required only for services named in `apiKeyServices`. AgentCore
|
|
130
|
+
* keeps API keys in the same vault as OAuth tokens, behind a different
|
|
131
|
+
* operation, so this is a sibling of `getResourceOauth2Token` rather than a
|
|
132
|
+
* mode of it. */
|
|
133
|
+
getResourceApiKey?(input: {
|
|
134
|
+
readonly resourceCredentialProviderName: string;
|
|
135
|
+
/** REQUIRED on the wire — `GetResourceApiKeyRequest` declares it non-optional. */
|
|
136
|
+
readonly workloadIdentityToken: string;
|
|
137
|
+
}): Promise<{
|
|
138
|
+
readonly apiKey?: string;
|
|
139
|
+
}>;
|
|
140
|
+
/** Optional — required only by {@link completeAgentCoreAuthorization}. Tells
|
|
141
|
+
* AgentCore that the person behind `sessionId` finished consenting, which is
|
|
142
|
+
* what releases the token into the vault for the next vend. */
|
|
143
|
+
completeResourceTokenAuth?(input: {
|
|
144
|
+
readonly sessionId: string;
|
|
145
|
+
readonly userToken?: string;
|
|
146
|
+
readonly userId?: string;
|
|
147
|
+
}): Promise<void>;
|
|
129
148
|
}
|
|
130
149
|
export interface AgentCoreIdentityOptions {
|
|
131
150
|
readonly region?: string;
|
|
@@ -165,6 +184,42 @@ export interface AgentCoreIdentityOptions {
|
|
|
165
184
|
readonly principal?: string;
|
|
166
185
|
readonly tenant?: string;
|
|
167
186
|
}) => string | undefined;
|
|
187
|
+
/**
|
|
188
|
+
* How a `mode: 'user'` request gets its token (9.66.0). Default `'consent'`.
|
|
189
|
+
*
|
|
190
|
+
* `'consent'` — AgentCore's `USER_FEDERATION`. If the vault has no grant
|
|
191
|
+
* for this (workload, user), the result is an
|
|
192
|
+
* `authorization-required` with a URL to send the person to.
|
|
193
|
+
* They approve once; later calls return a token directly.
|
|
194
|
+
* `'exchange'` — AgentCore's `ON_BEHALF_OF_TOKEN_EXCHANGE`. The person's
|
|
195
|
+
* own login is TRADED for a scoped downstream token, with no
|
|
196
|
+
* consent screen at any point.
|
|
197
|
+
*
|
|
198
|
+
* `'exchange'` is not simply the nicer one. It works only where the
|
|
199
|
+
* downstream provider was configured for it (an on-behalf-of exchange grant
|
|
200
|
+
* on the credential provider) and where trading the user's session for
|
|
201
|
+
* downstream access is a decision your organisation has already made — the
|
|
202
|
+
* consent screen is what asks the person, and this flow is the deployment
|
|
203
|
+
* saying it does not need to. Choose it deliberately.
|
|
204
|
+
*
|
|
205
|
+
* `mode: 'machine'` is unaffected: M2M has no user to act for.
|
|
206
|
+
*/
|
|
207
|
+
readonly userFlow?: 'consent' | 'exchange';
|
|
208
|
+
/**
|
|
209
|
+
* Services whose credential is an API KEY, not an OAuth token (9.66.0).
|
|
210
|
+
*
|
|
211
|
+
* AgentCore's vault holds both kinds behind two different operations, and the
|
|
212
|
+
* provider NAME alone does not say which — so a request for a service named
|
|
213
|
+
* here is vended with `GetResourceApiKey` and comes back as an
|
|
214
|
+
* {@link apiKey} credential. Everything else takes the OAuth path.
|
|
215
|
+
*
|
|
216
|
+
* There is no auto-detection on purpose: guessing would mean calling one
|
|
217
|
+
* operation, catching a failure, and retrying with the other, which turns a
|
|
218
|
+
* configuration mistake into two round-trips and an ambiguous error.
|
|
219
|
+
*/
|
|
220
|
+
readonly apiKeyServices?: readonly string[];
|
|
221
|
+
/** Header an API-key credential is sent in. Default `'x-api-key'`. */
|
|
222
|
+
readonly apiKeyHeader?: string;
|
|
168
223
|
/** Stable provider id (default 'agentcore-identity'). */
|
|
169
224
|
readonly id?: string;
|
|
170
225
|
/** Test seam — inject a client implementing {@link AgentCoreIdentityClientLike}.
|
|
@@ -184,7 +239,66 @@ export interface BedrockAgentCoreIdentitySdkModule {
|
|
|
184
239
|
readonly GetResourceOauth2TokenCommand?: new (input: unknown) => unknown;
|
|
185
240
|
readonly GetWorkloadAccessTokenForUserIdCommand?: new (input: unknown) => unknown;
|
|
186
241
|
readonly GetWorkloadAccessTokenForJWTCommand?: new (input: unknown) => unknown;
|
|
242
|
+
readonly GetResourceApiKeyCommand?: new (input: unknown) => unknown;
|
|
243
|
+
readonly CompleteResourceTokenAuthCommand?: new (input: unknown) => unknown;
|
|
187
244
|
}
|
|
188
245
|
/** Build a {@link CredentialProvider} backed by AWS Bedrock AgentCore Identity. */
|
|
189
246
|
export declare function agentCoreIdentity(options?: AgentCoreIdentityOptions): CredentialProvider;
|
|
247
|
+
/** Connection options for {@link completeAgentCoreAuthorization}. */
|
|
248
|
+
export interface CompleteAgentCoreAuthorizationOptions {
|
|
249
|
+
/** The 3LO round-trip this completes — the `sessionId` from the
|
|
250
|
+
* `authorization-required` result the agent returned. */
|
|
251
|
+
readonly sessionId: string;
|
|
252
|
+
/** The person's own IdP-issued JWT, if your callback has it. Preferred: it is
|
|
253
|
+
* the artifact their provider signed. */
|
|
254
|
+
readonly userToken?: string;
|
|
255
|
+
/** The user id you asserted for them, when no JWT is available. Exactly one
|
|
256
|
+
* of `userToken` / `userId` is required. */
|
|
257
|
+
readonly userId?: string;
|
|
258
|
+
readonly region?: string;
|
|
259
|
+
/** Test seam — same client surface the provider uses. */
|
|
260
|
+
readonly _client?: AgentCoreIdentityClientLike;
|
|
261
|
+
/** @internal Test injection — the AWS SDK module. */
|
|
262
|
+
readonly _sdk?: BedrockAgentCoreIdentitySdkModule;
|
|
263
|
+
}
|
|
264
|
+
/**
|
|
265
|
+
* Tell AgentCore the person finished consenting, so the token lands in the vault.
|
|
266
|
+
*
|
|
267
|
+
* ── Where this runs, and why it is not a provider method ─────────────────────
|
|
268
|
+
* A 3LO consent has three actors and two processes. The agent asks for a
|
|
269
|
+
* credential and gets back `authorization-required` with a URL and a session
|
|
270
|
+
* id; the PERSON opens that URL in their browser and approves; AgentCore then
|
|
271
|
+
* redirects their browser to a callback route **your web app** owns. That route
|
|
272
|
+
* is where this belongs — a different process from the agent run, often a
|
|
273
|
+
* different service — so it takes its own connection options rather than
|
|
274
|
+
* pretending to be a method on a provider that route has never seen.
|
|
275
|
+
*
|
|
276
|
+
* Your route's job before calling this is the part nobody else can do: confirm
|
|
277
|
+
* the browser session really belongs to the user you are about to name. This
|
|
278
|
+
* function is the handshake, not the authentication.
|
|
279
|
+
*
|
|
280
|
+
* ── After it returns ─────────────────────────────────────────────────────────
|
|
281
|
+
* Nothing is handed back — success is an empty acknowledgement. The token now
|
|
282
|
+
* exists in the vault for that (workload, user), and the way to obtain it is to
|
|
283
|
+
* run the agent's request again: the next `getCredential` for that service
|
|
284
|
+
* returns `issued` where the last one returned `authorization-required`. In
|
|
285
|
+
* agentfootprint terms the consent is a PAUSE, and this is what makes the
|
|
286
|
+
* resume succeed.
|
|
287
|
+
*
|
|
288
|
+
* The authorization URL and its session are short-lived (AWS documents ten
|
|
289
|
+
* minutes) — a person who wanders off has to start the consent again, and the
|
|
290
|
+
* refusal you get is AgentCore's, not this adapter's.
|
|
291
|
+
*
|
|
292
|
+
* @example An Express-style callback route
|
|
293
|
+
* app.get('/oauth/callback', async (req, res) => {
|
|
294
|
+
* const user = await requireSignedInUser(req); // yours, and load-bearing
|
|
295
|
+
* await completeAgentCoreAuthorization({
|
|
296
|
+
* sessionId: String(req.query.session),
|
|
297
|
+
* userId: user.id,
|
|
298
|
+
* region: 'us-east-1',
|
|
299
|
+
* });
|
|
300
|
+
* res.send('Approved — you can return to the assistant.');
|
|
301
|
+
* });
|
|
302
|
+
*/
|
|
303
|
+
export declare function completeAgentCoreAuthorization(options: CompleteAgentCoreAuthorizationOptions): Promise<void>;
|
|
190
304
|
//# sourceMappingURL=agentcore.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agentcore.d.ts","sourceRoot":"","sources":["../../../../src/adapters/identity/agentcore.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmFG;AAGH,OAAO,KAAK,EACV,kBAAkB,EAGnB,MAAM,yBAAyB,CAAC;AAGjC,sEAAsE;AACtE,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IACnC;sDACkD;IAClD,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B;;4EAEwE;IACxE,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED;;;iEAGiE;AACjE,MAAM,WAAW,2BAA2B;IAC1C,sBAAsB,CAAC,KAAK,EAAE;QAC5B,QAAQ,CAAC,8BAA8B,EAAE,MAAM,CAAC;QAChD,QAAQ,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC;QACnC,QAAQ,CAAC,UAAU,EAAE,KAAK,GAAG,iBAAiB,CAAC;QAC/
|
|
1
|
+
{"version":3,"file":"agentcore.d.ts","sourceRoot":"","sources":["../../../../src/adapters/identity/agentcore.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* adapters/mcp/agentcore — reaching an AWS Bedrock **AgentCore Gateway**.
|
|
3
|
+
*
|
|
4
|
+
* ── What lives here, and why it is one file ──────────────────────────────────
|
|
5
|
+
* A Gateway is an MCP server, and `mcpClient` + `gatewayTransport` already know
|
|
6
|
+
* how to talk to one of those. Neither knows — and neither should learn — the
|
|
7
|
+
* handful of facts that are AgentCore's alone: the hostname its endpoints take,
|
|
8
|
+
* the name of the tool that searches its catalogue, the header that groups a
|
|
9
|
+
* caller's requests into one policy session, and the service name a SigV4
|
|
10
|
+
* signature is computed against. Those four facts are this file, and this file
|
|
11
|
+
* is the only place in the library that holds them.
|
|
12
|
+
*
|
|
13
|
+
* `gatewayTransport` says of itself: *"Nothing here is vendor-specific."* That
|
|
14
|
+
* stays true precisely because this exists next to it.
|
|
15
|
+
*
|
|
16
|
+
* ── What it does NOT do ──────────────────────────────────────────────────────
|
|
17
|
+
* It does not manage a Gateway. Creating one, adding targets, attaching a
|
|
18
|
+
* policy engine, enabling semantic search — all control-plane operations on
|
|
19
|
+
* `bedrock-agentcore-control`, all things an operator does once with the
|
|
20
|
+
* console, the CLI or their IaC. This is the CLIENT side: an agent using a
|
|
21
|
+
* gateway somebody already stood up.
|
|
22
|
+
*
|
|
23
|
+
* @example An agent whose tools come from a Gateway
|
|
24
|
+
* import { mcpClient } from 'agentfootprint/providers';
|
|
25
|
+
* import { agentCoreGatewayTransport } from 'agentfootprint/providers';
|
|
26
|
+
* import { agentCoreIdentity } from 'agentfootprint/security';
|
|
27
|
+
*
|
|
28
|
+
* const gateway = await mcpClient({
|
|
29
|
+
* name: 'gateway',
|
|
30
|
+
* transport: agentCoreGatewayTransport({
|
|
31
|
+
* gatewayId: 'my-gateway-a1b2c3d4e5',
|
|
32
|
+
* region: 'us-east-1',
|
|
33
|
+
* credentials: agentCoreIdentity({ region: 'us-east-1' }),
|
|
34
|
+
* }),
|
|
35
|
+
* });
|
|
36
|
+
* const tools = await gateway.tools();
|
|
37
|
+
*/
|
|
38
|
+
import { type FetchLike } from '../../lib/mcp/gatewayTransport.js';
|
|
39
|
+
import type { McpGatewayTransport } from '../../lib/mcp/types.js';
|
|
40
|
+
import type { CredentialProvider } from '../../identity/types.js';
|
|
41
|
+
import type { Tool } from '../../core/tools.js';
|
|
42
|
+
/**
|
|
43
|
+
* The Gateway's built-in semantic tool search, by its exact wire name.
|
|
44
|
+
*
|
|
45
|
+
* It is an ordinary MCP tool — `tools/call` with `{ query }` — that returns the
|
|
46
|
+
* catalogue entries closest to a natural-language description. It matters at
|
|
47
|
+
* the scale where listing every tool into a prompt stops being sensible.
|
|
48
|
+
*
|
|
49
|
+
* **It can only be enabled when the Gateway is CREATED**, never afterwards, so
|
|
50
|
+
* its absence from a catalogue is a fact about that gateway rather than a
|
|
51
|
+
* transient condition to retry.
|
|
52
|
+
*/
|
|
53
|
+
export declare const AGENTCORE_GATEWAY_SEARCH_TOOL = "x_amz_bedrock_agentcore_search";
|
|
54
|
+
/**
|
|
55
|
+
* The header that groups a caller's requests into ONE policy session.
|
|
56
|
+
*
|
|
57
|
+
* AgentCore's temporal policies decide on SEQUENCES of actions — "not after
|
|
58
|
+
* three refunds", "only once this was approved" — and a sequence needs a
|
|
59
|
+
* boundary. This header is that boundary, and without it every request is its
|
|
60
|
+
* own history of one, which quietly makes every sequence rule unenforceable.
|
|
61
|
+
*/
|
|
62
|
+
export declare const AGENTCORE_POLICY_SESSION_HEADER = "x-amzn-bedrock-agentcore-policy-session-id";
|
|
63
|
+
/** The service name a SigV4 signature for a Gateway is computed against. */
|
|
64
|
+
export declare const AGENTCORE_SIGV4_SERVICE = "bedrock-agentcore";
|
|
65
|
+
export interface AgentCoreGatewayUrlOptions {
|
|
66
|
+
/** The gateway's id, as the console and `CreateGateway`'s response give it. */
|
|
67
|
+
readonly gatewayId: string;
|
|
68
|
+
/** The region it lives in, e.g. `'us-east-1'`. */
|
|
69
|
+
readonly region: string;
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* The MCP endpoint of a Gateway.
|
|
73
|
+
*
|
|
74
|
+
* `https://{gatewayId}.gateway.bedrock-agentcore.{region}.amazonaws.com/mcp` —
|
|
75
|
+
* a shape nobody remembers correctly, which is the entire reason it is a
|
|
76
|
+
* function and not a line in a README.
|
|
77
|
+
*/
|
|
78
|
+
export declare function agentCoreGatewayUrl(options: AgentCoreGatewayUrlOptions): string;
|
|
79
|
+
export interface AgentCoreGatewayTransportOptions extends AgentCoreGatewayUrlOptions {
|
|
80
|
+
/** Who vends the token. `agentCoreIdentity()` is the usual answer. */
|
|
81
|
+
readonly credentials: CredentialProvider;
|
|
82
|
+
/** The downstream service id your provider keys on. Default `'gateway'`. */
|
|
83
|
+
readonly service?: string;
|
|
84
|
+
/** OAuth scopes, when the provider uses them. */
|
|
85
|
+
readonly scopes?: readonly string[];
|
|
86
|
+
/** `machine` (default) or `user`, for a gateway that acts on someone's behalf. */
|
|
87
|
+
readonly mode?: 'machine' | 'user';
|
|
88
|
+
/**
|
|
89
|
+
* The policy session this caller's requests belong to — a string, or a
|
|
90
|
+
* function consulted PER REQUEST.
|
|
91
|
+
*
|
|
92
|
+
* **Prefer the function on any transport more than one person shares.** A
|
|
93
|
+
* fixed string on a shared transport merges every caller's action history
|
|
94
|
+
* into a single policy session, which is not a small mistake: it makes one
|
|
95
|
+
* person's earlier actions count against another person's rule. Passing
|
|
96
|
+
* `() => currentSessionId` keeps the boundary where it belongs, and returning
|
|
97
|
+
* `undefined` sends no header at all.
|
|
98
|
+
*/
|
|
99
|
+
readonly policySessionId?: string | (() => string | undefined);
|
|
100
|
+
/** Extra static headers. **No secrets** — these live as long as the transport. */
|
|
101
|
+
readonly headers?: Readonly<Record<string, string>>;
|
|
102
|
+
/** Your own `fetch`, called underneath the per-request vending. */
|
|
103
|
+
readonly fetch?: FetchLike;
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* An MCP transport pointed at an AgentCore Gateway.
|
|
107
|
+
*
|
|
108
|
+
* A configuration of {@link gatewayTransport}: the endpoint built from your
|
|
109
|
+
* gateway's id and region, and — when you name one — the policy session header
|
|
110
|
+
* stamped on every request. Token vending, the once-and-dropped secrecy rule
|
|
111
|
+
* and the rotation behaviour are all the neutral transport's, unchanged.
|
|
112
|
+
*/
|
|
113
|
+
export declare function agentCoreGatewayTransport(options: AgentCoreGatewayTransportOptions): McpGatewayTransport;
|
|
114
|
+
/**
|
|
115
|
+
* The Gateway's semantic search tool, if this gateway has one.
|
|
116
|
+
*
|
|
117
|
+
* Returns `undefined` rather than throwing, because absence is a legitimate and
|
|
118
|
+
* PERMANENT answer: semantic search is enabled when a Gateway is created and
|
|
119
|
+
* cannot be turned on afterwards, so there is nothing to retry.
|
|
120
|
+
*
|
|
121
|
+
* ── Why this finds the tool instead of calling it ────────────────────────────
|
|
122
|
+
* The obvious convenience would be `search(gateway, 'refund an order')`, and it
|
|
123
|
+
* is deliberately not here. Executing a tool needs a `ToolExecutionContext` —
|
|
124
|
+
* the call id, the iteration, the credential seam, the artifact store — and
|
|
125
|
+
* that object belongs to the agent loop. A helper would have to invent one,
|
|
126
|
+
* and a call made on an invented context is a call that appears in no trace:
|
|
127
|
+
* the model would be handed a shortlist nobody can later explain the origin of,
|
|
128
|
+
* which is the opposite of what this library is for.
|
|
129
|
+
*
|
|
130
|
+
* So the search tool is registered like any other tool, the model calls it when
|
|
131
|
+
* the catalogue is too large to reason about, and that call is an ordinary
|
|
132
|
+
* tool call in the trace — visible, attributable, and replayable.
|
|
133
|
+
*
|
|
134
|
+
* @example Give the model the catalogue's own search
|
|
135
|
+
* const tools = await gateway.tools();
|
|
136
|
+
* const search = gatewaySearchTool(tools);
|
|
137
|
+
* Agent.create({ provider, model })
|
|
138
|
+
* .tools(search ? [search] : tools) // search it, or list it
|
|
139
|
+
* .build();
|
|
140
|
+
*/
|
|
141
|
+
export declare function gatewaySearchTool(tools: readonly Tool[]): Tool | undefined;
|
|
142
|
+
/** Whether this gateway's catalogue can be searched rather than listed. */
|
|
143
|
+
export declare function hasGatewaySearch(tools: readonly Tool[]): boolean;
|
|
144
|
+
//# sourceMappingURL=agentcore.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agentcore.d.ts","sourceRoot":"","sources":["../../../../src/adapters/mcp/agentcore.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AAEH,OAAO,EAAoB,KAAK,SAAS,EAAE,MAAM,mCAAmC,CAAC;AACrF,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAClE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAClE,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAC;AAEhD;;;;;;;;;;GAUG;AACH,eAAO,MAAM,6BAA6B,mCAAmC,CAAC;AAE9E;;;;;;;GAOG;AACH,eAAO,MAAM,+BAA+B,+CAA+C,CAAC;AAE5F,4EAA4E;AAC5E,eAAO,MAAM,uBAAuB,sBAAsB,CAAC;AAE3D,MAAM,WAAW,0BAA0B;IACzC,+EAA+E;IAC/E,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,kDAAkD;IAClD,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAED;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,0BAA0B,GAAG,MAAM,CAS/E;AAED,MAAM,WAAW,gCAAiC,SAAQ,0BAA0B;IAClF,sEAAsE;IACtE,QAAQ,CAAC,WAAW,EAAE,kBAAkB,CAAC;IACzC,4EAA4E;IAC5E,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,iDAAiD;IACjD,QAAQ,CAAC,MAAM,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACpC,kFAAkF;IAClF,QAAQ,CAAC,IAAI,CAAC,EAAE,SAAS,GAAG,MAAM,CAAC;IACnC;;;;;;;;;;OAUG;IACH,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,GAAG,CAAC,MAAM,MAAM,GAAG,SAAS,CAAC,CAAC;IAC/D,kFAAkF;IAClF,QAAQ,CAAC,OAAO,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IACpD,mEAAmE;IACnE,QAAQ,CAAC,KAAK,CAAC,EAAE,SAAS,CAAC;CAC5B;AAED;;;;;;;GAOG;AACH,wBAAgB,yBAAyB,CACvC,OAAO,EAAE,gCAAgC,GACxC,mBAAmB,CAiCrB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,SAAS,IAAI,EAAE,GAAG,IAAI,GAAG,SAAS,CAE1E;AAED,2EAA2E;AAC3E,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,SAAS,IAAI,EAAE,GAAG,OAAO,CAEhE"}
|
|
@@ -50,6 +50,7 @@
|
|
|
50
50
|
*/
|
|
51
51
|
import type { ObservabilityStrategy } from '../../strategies/types.js';
|
|
52
52
|
import { type CloudwatchObservabilityOptions } from './cloudwatch.js';
|
|
53
|
+
import { type OtelObservabilityOptions, type OtelObservabilityStrategy } from './otel.js';
|
|
53
54
|
/**
|
|
54
55
|
* AgentCore-specific options. Currently identical to the generic
|
|
55
56
|
* `CloudwatchObservabilityOptions` — kept as a separate type for
|
|
@@ -65,4 +66,53 @@ export type AgentcoreObservabilityOptions = CloudwatchObservabilityOptions;
|
|
|
65
66
|
* distinguish AgentCore-targeted shipping from generic CloudWatch.
|
|
66
67
|
*/
|
|
67
68
|
export declare function agentcoreObservability(opts: AgentcoreObservabilityOptions): ObservabilityStrategy;
|
|
69
|
+
/**
|
|
70
|
+
* The instrumentation-scope name AgentCore **Evaluations** classifies spans by.
|
|
71
|
+
*
|
|
72
|
+
* Their span classifier reads `scope.name` and considers only names beginning
|
|
73
|
+
* `opentelemetry.instrumentation.` (or `openinference.instrumentation.`);
|
|
74
|
+
* anything else is skipped without a message. This is the one spelling that
|
|
75
|
+
* makes agentfootprint's spans visible to it — and it lives HERE, in the
|
|
76
|
+
* vendor's own file, because the requirement is theirs, not
|
|
77
|
+
* OpenTelemetry's and not ours.
|
|
78
|
+
*/
|
|
79
|
+
export declare const AGENTCORE_EVALUATIONS_SCOPE_NAME = "opentelemetry.instrumentation.agentfootprint";
|
|
80
|
+
/**
|
|
81
|
+
* OTel spans shaped so AgentCore **Evaluations** can read and score them.
|
|
82
|
+
*
|
|
83
|
+
* ── What this is ─────────────────────────────────────────────────────────────
|
|
84
|
+
* A CONFIGURATION of {@link otelObservability}, not a second implementation:
|
|
85
|
+
* the same spans, the same attributes, with the two settings that vendor
|
|
86
|
+
* requires already correct — the scope name it classifies by, and the
|
|
87
|
+
* turn-level content its scorers read. Everything else is passed through
|
|
88
|
+
* untouched, so nothing about your telemetry becomes AgentCore-shaped except
|
|
89
|
+
* the two things that had to be.
|
|
90
|
+
*
|
|
91
|
+
* ── Why you would use it ─────────────────────────────────────────────────────
|
|
92
|
+
* Since July 2026 AgentCore Evaluations scores agents that DO NOT run on AWS —
|
|
93
|
+
* any agent whose spans reach CloudWatch and match its contract. That makes
|
|
94
|
+
* AWS's built-in evaluators available to an agentfootprint agent hosted
|
|
95
|
+
* anywhere. It does not make your agent an AWS agent, and it replaces nothing:
|
|
96
|
+
* their evaluators say what the score is, and agentfootprint's own trace is
|
|
97
|
+
* still what says why.
|
|
98
|
+
*
|
|
99
|
+
* ── Read this before enabling ────────────────────────────────────────────────
|
|
100
|
+
* It turns `captureContent` ON, which puts the turn's prompt and answer text on
|
|
101
|
+
* the span — that is the point (a scorer cannot grade a turn it cannot read),
|
|
102
|
+
* and it is also an export of raw content to your OTel backend. Pass
|
|
103
|
+
* `captureContent: false` to opt back out and keep the scope name alone;
|
|
104
|
+
* scores will then be based on an empty turn, which is worse than not scoring.
|
|
105
|
+
*
|
|
106
|
+
* Getting the spans to CloudWatch is separate and yours: point an OTLP exporter
|
|
107
|
+
* at the AgentCore log group per AWS's documented header contract, or run
|
|
108
|
+
* inside a runtime that does it for you.
|
|
109
|
+
*
|
|
110
|
+
* @example
|
|
111
|
+
* import { agentCoreEvaluationSpans } from 'agentfootprint/observe';
|
|
112
|
+
*
|
|
113
|
+
* agent.enable.observability({
|
|
114
|
+
* strategy: agentCoreEvaluationSpans({ serviceName: 'support-agent' }),
|
|
115
|
+
* });
|
|
116
|
+
*/
|
|
117
|
+
export declare function agentCoreEvaluationSpans(opts: OtelObservabilityOptions): OtelObservabilityStrategy;
|
|
68
118
|
//# sourceMappingURL=agentcore.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agentcore.d.ts","sourceRoot":"","sources":["../../../../src/adapters/observability/agentcore.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiDG;AAEH,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAEvE,OAAO,EAEL,KAAK,8BAA8B,EACpC,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"agentcore.d.ts","sourceRoot":"","sources":["../../../../src/adapters/observability/agentcore.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiDG;AAEH,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAEvE,OAAO,EAEL,KAAK,8BAA8B,EACpC,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAEL,KAAK,wBAAwB,EAC7B,KAAK,yBAAyB,EAC/B,MAAM,WAAW,CAAC;AAEnB;;;;;;GAMG;AACH,MAAM,MAAM,6BAA6B,GAAG,8BAA8B,CAAC;AAE3E;;;;;GAKG;AACH,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,6BAA6B,GAAG,qBAAqB,CAEjG;AAED;;;;;;;;;GASG;AACH,eAAO,MAAM,gCAAgC,iDAAiD,CAAC;AAE/F;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AACH,wBAAgB,wBAAwB,CACtC,IAAI,EAAE,wBAAwB,GAC7B,yBAAyB,CAS3B"}
|
|
@@ -124,10 +124,57 @@ export interface OtelObservabilityOptions {
|
|
|
124
124
|
/** Service name on every emitted span. Surfaces in your OTel
|
|
125
125
|
* backend's service map. Required. */
|
|
126
126
|
readonly serviceName: string;
|
|
127
|
-
/** OTel Tracer to use. Defaults to
|
|
128
|
-
* `trace
|
|
129
|
-
*
|
|
127
|
+
/** OTel Tracer to use. Defaults to `trace.getTracer(scopeName)` — where
|
|
128
|
+
* `trace` is the lazy-imported `@opentelemetry/api` and `scopeName` is the
|
|
129
|
+
* option below. */
|
|
130
130
|
readonly tracer?: OtelTracerLike;
|
|
131
|
+
/**
|
|
132
|
+
* The INSTRUMENTATION SCOPE name every span is recorded under — what a
|
|
133
|
+
* backend shows as `scope.name`. Default `'agentfootprint'`.
|
|
134
|
+
*
|
|
135
|
+
* ── Why this is a knob and not a constant ────────────────────────────────
|
|
136
|
+
* Some telemetry consumers ROUTE on this name rather than read it. AWS
|
|
137
|
+
* Bedrock AgentCore Evaluations is the case that forced the option: it will
|
|
138
|
+
* score any agent's traces, from anywhere, but only classifies spans whose
|
|
139
|
+
* scope name begins `opentelemetry.instrumentation.` or
|
|
140
|
+
* `openinference.instrumentation.` — everything else is skipped in silence,
|
|
141
|
+
* which is indistinguishable from "your agent was fine".
|
|
142
|
+
*
|
|
143
|
+
* The default does NOT change, because a rename moves every existing
|
|
144
|
+
* dashboard's spans out from under it. Consumers who need a routable name
|
|
145
|
+
* pass one; `agentCoreEvaluationSpans()` in the AgentCore adapter is that
|
|
146
|
+
* one consumer's spelling, kept in that vendor's own file.
|
|
147
|
+
*
|
|
148
|
+
* Ignored when `tracer` is supplied — a tracer you built already has a name.
|
|
149
|
+
*/
|
|
150
|
+
readonly scopeName?: string;
|
|
151
|
+
/**
|
|
152
|
+
* Put the turn's PROMPT and ANSWER TEXT on the agent span (default
|
|
153
|
+
* `false`): `gen_ai.task.input` from the user's prompt and
|
|
154
|
+
* `gen_ai.task.output` from the final answer.
|
|
155
|
+
*
|
|
156
|
+
* ── Off by default, deliberately ─────────────────────────────────────────
|
|
157
|
+
* This adapter's standing rule is that content does not ride spans — the
|
|
158
|
+
* snapshot / audit-log channel carries it under the consumer's own
|
|
159
|
+
* redaction policy. Turning this on EXPORTS raw prompt and answer text to
|
|
160
|
+
* whatever backend the tracer points at, where it is typically retained and
|
|
161
|
+
* searchable, and no redaction of ours stands between the two.
|
|
162
|
+
*
|
|
163
|
+
* ── Why it exists ────────────────────────────────────────────────────────
|
|
164
|
+
* Trace-scoring services read the answer they are grading off the span.
|
|
165
|
+
* AgentCore Evaluations reads exactly these two attributes (after an event
|
|
166
|
+
* body it only emits in its own runtime), so a scorer sees an empty turn
|
|
167
|
+
* without them. Enable it when a consumer's whole purpose is to read the
|
|
168
|
+
* content, and not to make dashboards prettier.
|
|
169
|
+
*
|
|
170
|
+
* ── What it is NOT ───────────────────────────────────────────────────────
|
|
171
|
+
* Per-inference message arrays (`gen_ai.input.messages` /
|
|
172
|
+
* `gen_ai.output.messages`) are NOT emitted: this adapter's `llm_start` /
|
|
173
|
+
* `llm_end` events carry model, usage and stop reason, never the messages,
|
|
174
|
+
* so there is nothing truthful to put there. Turn-level input and output is
|
|
175
|
+
* what we have and all this claims.
|
|
176
|
+
*/
|
|
177
|
+
readonly captureContent?: boolean;
|
|
131
178
|
/** 0..1 — sample rate for turn-level spans. Default `1.0`.
|
|
132
179
|
* Sampling decisions are normally an OTel SDK concern (via
|
|
133
180
|
* `Sampler`); this option is a per-strategy override for cases
|
|
@@ -168,6 +215,13 @@ export interface OtelObservabilityOptions {
|
|
|
168
215
|
* construction, but visible at the call site.
|
|
169
216
|
*/
|
|
170
217
|
readonly onError?: (error: Error, event?: AgentfootprintEvent) => void;
|
|
218
|
+
/**
|
|
219
|
+
* @internal Pre-resolved `@opentelemetry/api` module, for tests that need
|
|
220
|
+
* the path where this adapter builds its OWN tracer — the only path on
|
|
221
|
+
* which {@link OtelObservabilityOptions.scopeName} is observable. Skips the
|
|
222
|
+
* lazy require, exactly as `_client` does on the SDK-backed adapters.
|
|
223
|
+
*/
|
|
224
|
+
readonly _otelApi?: OtelApiModule;
|
|
171
225
|
}
|
|
172
226
|
/** Attribute value union we emit. Matches OTel's `AttributeValue`
|
|
173
227
|
* subset: primitives + homogeneous string arrays
|
|
@@ -201,6 +255,21 @@ export interface OtelSpanLike {
|
|
|
201
255
|
* signals degrade to flattened attributes when absent. */
|
|
202
256
|
addEvent?(name: string, attributes?: Record<string, OtelAttributeValue>): unknown;
|
|
203
257
|
}
|
|
258
|
+
interface OtelApiModule {
|
|
259
|
+
readonly trace?: {
|
|
260
|
+
getTracer(name: string, version?: string): OtelTracerLike;
|
|
261
|
+
setSpan(context: unknown, span: OtelSpanLike): unknown;
|
|
262
|
+
};
|
|
263
|
+
readonly context?: {
|
|
264
|
+
active(): unknown;
|
|
265
|
+
with<T>(ctx: unknown, fn: () => T): T;
|
|
266
|
+
};
|
|
267
|
+
readonly SpanStatusCode?: {
|
|
268
|
+
OK: number;
|
|
269
|
+
ERROR: number;
|
|
270
|
+
UNSET: number;
|
|
271
|
+
};
|
|
272
|
+
}
|
|
204
273
|
/**
|
|
205
274
|
* footprintjs CombinedRecorder (FlowRecorder channel) that forwards
|
|
206
275
|
* decide()/select() operator-level evidence into the paired
|
|
@@ -249,4 +318,5 @@ export interface OtelObservabilityStrategy extends ObservabilityStrategy {
|
|
|
249
318
|
decisionEvidenceRecorder(): OtelDecisionEvidenceRecorder;
|
|
250
319
|
}
|
|
251
320
|
export declare function otelObservability(opts: OtelObservabilityOptions): OtelObservabilityStrategy;
|
|
321
|
+
export {};
|
|
252
322
|
//# sourceMappingURL=otel.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"otel.d.ts","sourceRoot":"","sources":["../../../../src/adapters/observability/otel.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsHG;AAEH,OAAO,KAAK,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AACxE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAEpE,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAMvE,MAAM,WAAW,wBAAwB;IACvC;2CACuC;IACvC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B;;
|
|
1
|
+
{"version":3,"file":"otel.d.ts","sourceRoot":"","sources":["../../../../src/adapters/observability/otel.ts"],"names":[],"mappings":"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"}
|
package/dist/types/identity.d.ts
CHANGED
|
@@ -34,7 +34,7 @@ export { staticTokens, type StaticTokensOptions } from './identity/staticTokens.
|
|
|
34
34
|
export type { AuthorizationRequiredMode, ConsentRequest } from './identity/consent.js';
|
|
35
35
|
export { CredentialConsentRequiredError, type CredentialConsentRequiredContext, } from './identity/CredentialConsentRequiredError.js';
|
|
36
36
|
export { withCredentialRetry, type WithCredentialRetryOptions, } from './identity/withCredentialRetry.js';
|
|
37
|
-
export { agentCoreIdentity, type AgentCoreIdentityOptions, type AgentCoreIdentityClientLike, type AgentCoreOauthResponse, } from './adapters/identity/agentcore.js';
|
|
37
|
+
export { agentCoreIdentity, completeAgentCoreAuthorization, type AgentCoreIdentityOptions, type AgentCoreIdentityClientLike, type AgentCoreOauthResponse, type CompleteAgentCoreAuthorizationOptions, } from './adapters/identity/agentcore.js';
|
|
38
38
|
export { vaultCredentials, type VaultCredentialsOptions } from './adapters/identity/vault.js';
|
|
39
39
|
export { googleIdentity, CLOUD_PLATFORM_SCOPE, type GoogleIdentityOptions, type GoogleImpersonation, type GoogleAuthClientLike, } from './adapters/identity/google.js';
|
|
40
40
|
export { jwksIdentity, MissingJwksSupportError, type JoseBackend, type JwksIdentityOptions, } from './adapters/identity/jwks.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"identity.d.ts","sourceRoot":"","sources":["../../src/identity.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAEH,YAAY,EACV,UAAU,EACV,kBAAkB,EAClB,iBAAiB,EACjB,gBAAgB,EAChB,gBAAgB,EAChB,+BAA+B,EAC/B,cAAc,GACf,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,kBAAkB,EAAE,8BAA8B,EAAE,MAAM,qBAAqB,CAAC;AACzF,OAAO,EACL,MAAM,EACN,MAAM,EACN,KAAK,EACL,OAAO,EACP,KAAK,gBAAgB,EACrB,KAAK,gBAAgB,EACrB,KAAK,eAAe,EACpB,KAAK,iBAAiB,GACvB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,YAAY,EAAE,KAAK,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AAIpF,YAAY,EAAE,yBAAyB,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvF,OAAO,EACL,8BAA8B,EAC9B,KAAK,gCAAgC,GACtC,MAAM,8CAA8C,CAAC;AACtD,OAAO,EACL,mBAAmB,EACnB,KAAK,0BAA0B,GAChC,MAAM,mCAAmC,CAAC;AAC3C,OAAO,EACL,iBAAiB,
|
|
1
|
+
{"version":3,"file":"identity.d.ts","sourceRoot":"","sources":["../../src/identity.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAEH,YAAY,EACV,UAAU,EACV,kBAAkB,EAClB,iBAAiB,EACjB,gBAAgB,EAChB,gBAAgB,EAChB,+BAA+B,EAC/B,cAAc,GACf,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,kBAAkB,EAAE,8BAA8B,EAAE,MAAM,qBAAqB,CAAC;AACzF,OAAO,EACL,MAAM,EACN,MAAM,EACN,KAAK,EACL,OAAO,EACP,KAAK,gBAAgB,EACrB,KAAK,gBAAgB,EACrB,KAAK,eAAe,EACpB,KAAK,iBAAiB,GACvB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,YAAY,EAAE,KAAK,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AAIpF,YAAY,EAAE,yBAAyB,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvF,OAAO,EACL,8BAA8B,EAC9B,KAAK,gCAAgC,GACtC,MAAM,8CAA8C,CAAC;AACtD,OAAO,EACL,mBAAmB,EACnB,KAAK,0BAA0B,GAChC,MAAM,mCAAmC,CAAC;AAC3C,OAAO,EACL,iBAAiB,EAIjB,8BAA8B,EAC9B,KAAK,wBAAwB,EAC7B,KAAK,2BAA2B,EAChC,KAAK,sBAAsB,EAC3B,KAAK,qCAAqC,GAC3C,MAAM,kCAAkC,CAAC;AAI1C,OAAO,EAAE,gBAAgB,EAAE,KAAK,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AAM9F,OAAO,EACL,cAAc,EACd,oBAAoB,EACpB,KAAK,qBAAqB,EAC1B,KAAK,mBAAmB,EACxB,KAAK,oBAAoB,GAC1B,MAAM,+BAA+B,CAAC;AAOvC,OAAO,EACL,YAAY,EACZ,uBAAuB,EACvB,KAAK,WAAW,EAChB,KAAK,mBAAmB,GACzB,MAAM,6BAA6B,CAAC"}
|
|
@@ -44,7 +44,7 @@
|
|
|
44
44
|
* behind `agentfootprint/observe`, which re-exports every name here — same
|
|
45
45
|
* symbols, one door. Import from the door.
|
|
46
46
|
*/
|
|
47
|
-
export { agentcoreObservability, type AgentcoreObservabilityOptions, } from './adapters/observability/agentcore.js';
|
|
47
|
+
export { agentcoreObservability, agentCoreEvaluationSpans, AGENTCORE_EVALUATIONS_SCOPE_NAME, type AgentcoreObservabilityOptions, } from './adapters/observability/agentcore.js';
|
|
48
48
|
export { cloudwatchObservability, type CloudwatchObservabilityOptions, } from './adapters/observability/cloudwatch.js';
|
|
49
49
|
export { xrayObservability, type XrayObservabilityOptions, type XRayLikeClient, } from './adapters/observability/xray.js';
|
|
50
50
|
export { otelObservability, type OtelObservabilityOptions, type OtelObservabilityStrategy, type OtelDecisionEvidenceRecorder, type OtelTracerLike, type OtelSpanLike, type OtelSpanOptions, type OtelAttributeValue, } from './adapters/observability/otel.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"observability-providers.d.ts","sourceRoot":"","sources":["../../src/observability-providers.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6CG;AAEH,OAAO,EACL,sBAAsB,
|
|
1
|
+
{"version":3,"file":"observability-providers.d.ts","sourceRoot":"","sources":["../../src/observability-providers.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6CG;AAEH,OAAO,EACL,sBAAsB,EAItB,wBAAwB,EACxB,gCAAgC,EAChC,KAAK,6BAA6B,GACnC,MAAM,uCAAuC,CAAC;AAC/C,OAAO,EACL,uBAAuB,EACvB,KAAK,8BAA8B,GACpC,MAAM,wCAAwC,CAAC;AAChD,OAAO,EACL,iBAAiB,EACjB,KAAK,wBAAwB,EAC7B,KAAK,cAAc,GACpB,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EACL,iBAAiB,EACjB,KAAK,wBAAwB,EAC7B,KAAK,yBAAyB,EAC9B,KAAK,4BAA4B,EACjC,KAAK,cAAc,EACnB,KAAK,YAAY,EACjB,KAAK,eAAe,EACpB,KAAK,kBAAkB,GACxB,MAAM,kCAAkC,CAAC;AAI1C,OAAO,EACL,iBAAiB,EACjB,KAAK,wBAAwB,EAC7B,KAAK,UAAU,GAChB,MAAM,kCAAkC,CAAC;AAI1C,OAAO,EACL,WAAW,EACX,iBAAiB,EACjB,mBAAmB,EACnB,wBAAwB,EACxB,eAAe,EACf,KAAK,WAAW,EAChB,KAAK,iBAAiB,EACtB,KAAK,kBAAkB,EACvB,KAAK,mBAAmB,EACxB,KAAK,WAAW,EAChB,KAAK,iBAAiB,GACvB,MAAM,mCAAmC,CAAC;AAC3C,OAAO,EAAE,aAAa,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AAQ/E,OAAO,EACL,iBAAiB,EACjB,KAAK,WAAW,EAChB,KAAK,cAAc,EACnB,KAAK,wBAAwB,GAC9B,MAAM,+CAA+C,CAAC;AACvD,OAAO,EACL,kBAAkB,EAClB,KAAK,oBAAoB,EACzB,KAAK,kBAAkB,EACvB,KAAK,yBAAyB,GAC/B,MAAM,gDAAgD,CAAC"}
|
|
@@ -52,5 +52,7 @@ export { gatedTools } from './gatedTools.js';
|
|
|
52
52
|
export { skillScopedTools, skillScopedToolsTarget, SKILL_SCOPED_TOOLS_ID_PREFIX, } from './skillScopedTools.js';
|
|
53
53
|
export type { ToolProvider, ToolDispatchContext, ToolGatePredicate } from './types.js';
|
|
54
54
|
export { mcpClient, mcpServe, mockMcpClient, gatewayTransport, GatewayAuthorizationRequiredError, } from '../lib/mcp/index.js';
|
|
55
|
+
export { agentCoreGatewayTransport, agentCoreGatewayUrl, gatewaySearchTool, hasGatewaySearch, AGENTCORE_GATEWAY_SEARCH_TOOL, AGENTCORE_POLICY_SESSION_HEADER, AGENTCORE_SIGV4_SERVICE, } from '../adapters/mcp/agentcore.js';
|
|
56
|
+
export type { AgentCoreGatewayTransportOptions, AgentCoreGatewayUrlOptions, } from '../adapters/mcp/agentcore.js';
|
|
55
57
|
export type { GatewayTransportOptions, McpCallToolResult, McpClient, McpClientOptions, McpSdkClient, McpTransport, McpStdioTransport, McpHttpTransport, McpGatewayTransport, MockMcpClientOptions, MockMcpTool, McpServeOptions, McpServeHandle, McpServeTransport, McpStdioServeTransport, McpHttpServeTransport, McpSdkServer, } from '../lib/mcp/index.js';
|
|
56
58
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/tool-providers/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgDG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EACL,gBAAgB,EAGhB,sBAAsB,EACtB,4BAA4B,GAC7B,MAAM,uBAAuB,CAAC;AAC/B,YAAY,EAAE,YAAY,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAKvF,OAAO,EACL,SAAS,EACT,QAAQ,EACR,aAAa,EACb,gBAAgB,EAChB,iCAAiC,GAClC,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/tool-providers/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgDG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EACL,gBAAgB,EAGhB,sBAAsB,EACtB,4BAA4B,GAC7B,MAAM,uBAAuB,CAAC;AAC/B,YAAY,EAAE,YAAY,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAKvF,OAAO,EACL,SAAS,EACT,QAAQ,EACR,aAAa,EACb,gBAAgB,EAChB,iCAAiC,GAClC,MAAM,qBAAqB,CAAC;AAK7B,OAAO,EACL,yBAAyB,EACzB,mBAAmB,EACnB,iBAAiB,EACjB,gBAAgB,EAChB,6BAA6B,EAC7B,+BAA+B,EAC/B,uBAAuB,GACxB,MAAM,8BAA8B,CAAC;AACtC,YAAY,EACV,gCAAgC,EAChC,0BAA0B,GAC3B,MAAM,8BAA8B,CAAC;AACtC,YAAY,EACV,uBAAuB,EACvB,iBAAiB,EACjB,SAAS,EACT,gBAAgB,EAChB,YAAY,EACZ,YAAY,EACZ,iBAAiB,EACjB,gBAAgB,EAChB,mBAAmB,EACnB,oBAAoB,EACpB,WAAW,EACX,eAAe,EACf,cAAc,EACd,iBAAiB,EACjB,sBAAsB,EACtB,qBAAqB,EACrB,YAAY,GACb,MAAM,qBAAqB,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "agentfootprint",
|
|
3
|
-
"version": "9.
|
|
3
|
+
"version": "9.67.0",
|
|
4
4
|
"description": "The explainable agent framework — backtrack a wrong answer to the exact context that caused it (evidence, not guesses). Built on footprintjs.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "commonjs",
|