agentfootprint 6.20.0 → 6.22.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 +54 -8
- package/dist/adapters/identity/agentcore.js.map +1 -1
- package/dist/core/Agent.js +19 -0
- package/dist/core/Agent.js.map +1 -1
- package/dist/core/humanizeLLMError.js +7 -3
- package/dist/core/humanizeLLMError.js.map +1 -1
- package/dist/core/runCheckpoint.js +13 -3
- package/dist/core/runCheckpoint.js.map +1 -1
- package/dist/core-flow/Loop.js +4 -0
- package/dist/core-flow/Loop.js.map +1 -1
- package/dist/esm/adapters/identity/agentcore.js +54 -8
- package/dist/esm/adapters/identity/agentcore.js.map +1 -1
- package/dist/esm/core/Agent.js +19 -0
- package/dist/esm/core/Agent.js.map +1 -1
- package/dist/esm/core/humanizeLLMError.js +7 -3
- package/dist/esm/core/humanizeLLMError.js.map +1 -1
- package/dist/esm/core/runCheckpoint.js +13 -3
- package/dist/esm/core/runCheckpoint.js.map +1 -1
- package/dist/esm/core-flow/Loop.js +4 -0
- package/dist/esm/core-flow/Loop.js.map +1 -1
- package/dist/esm/identity/withCredentialRetry.js +98 -0
- package/dist/esm/identity/withCredentialRetry.js.map +1 -0
- package/dist/esm/identity.js +1 -0
- package/dist/esm/identity.js.map +1 -1
- package/dist/esm/lib/injection-engine/skillGraph.js +64 -0
- package/dist/esm/lib/injection-engine/skillGraph.js.map +1 -1
- package/dist/esm/resilience/withCircuitBreaker.js +16 -0
- package/dist/esm/resilience/withCircuitBreaker.js.map +1 -1
- package/dist/esm/resilience/withRetry.js +6 -1
- package/dist/esm/resilience/withRetry.js.map +1 -1
- package/dist/identity/withCredentialRetry.js +102 -0
- package/dist/identity/withCredentialRetry.js.map +1 -0
- package/dist/identity.js +3 -1
- package/dist/identity.js.map +1 -1
- package/dist/lib/injection-engine/skillGraph.js +64 -0
- package/dist/lib/injection-engine/skillGraph.js.map +1 -1
- package/dist/resilience/withCircuitBreaker.js +16 -0
- package/dist/resilience/withCircuitBreaker.js.map +1 -1
- package/dist/resilience/withRetry.js +7 -1
- package/dist/resilience/withRetry.js.map +1 -1
- package/dist/types/adapters/identity/agentcore.d.ts +46 -2
- package/dist/types/adapters/identity/agentcore.d.ts.map +1 -1
- package/dist/types/core/Agent.d.ts +19 -0
- package/dist/types/core/Agent.d.ts.map +1 -1
- package/dist/types/core/humanizeLLMError.d.ts.map +1 -1
- package/dist/types/core/runCheckpoint.d.ts +21 -8
- package/dist/types/core/runCheckpoint.d.ts.map +1 -1
- package/dist/types/core-flow/Loop.d.ts +24 -1
- package/dist/types/core-flow/Loop.d.ts.map +1 -1
- package/dist/types/identity/withCredentialRetry.d.ts +65 -0
- package/dist/types/identity/withCredentialRetry.d.ts.map +1 -0
- package/dist/types/identity.d.ts +1 -0
- package/dist/types/identity.d.ts.map +1 -1
- package/dist/types/lib/injection-engine/skillGraph.d.ts.map +1 -1
- package/dist/types/resilience/withCircuitBreaker.d.ts +16 -0
- package/dist/types/resilience/withCircuitBreaker.d.ts.map +1 -1
- package/dist/types/resilience/withRetry.d.ts +18 -3
- package/dist/types/resilience/withRetry.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -19,13 +19,17 @@ export function humanizeLLMError(err) {
|
|
|
19
19
|
const status = e.status ?? e.statusCode;
|
|
20
20
|
const lc = raw.toLowerCase();
|
|
21
21
|
// Network / unreachable — the most common "Failed to fetch" case.
|
|
22
|
-
|
|
22
|
+
// "connection error" is the Stainless SDKs' APIConnectionError message
|
|
23
|
+
// (@anthropic-ai/sdk, openai v4/v5) — it carries NO status code.
|
|
24
|
+
if (/failed to fetch|fetch failed|network ?error|connection error|enotfound|eai_again|econnrefused|econnreset|socket hang up|load failed/i.test(raw)) {
|
|
23
25
|
return "Couldn't reach the AI model. Check your internet connection, and that the provider/API key is set up correctly.";
|
|
24
26
|
}
|
|
25
|
-
// Auth — missing/invalid API key
|
|
27
|
+
// Auth — missing/invalid API key (or, for Bedrock, IAM/model access:
|
|
28
|
+
// AccessDeniedException says "You don't have access to the model..."
|
|
29
|
+
// with the status only under $metadata, which we never see).
|
|
26
30
|
if (status === 401 ||
|
|
27
31
|
status === 403 ||
|
|
28
|
-
/unauthorized|forbidden|api[ _-]?key|authentication|invalid x-api-key|permission/i.test(lc)) {
|
|
32
|
+
/unauthorized|forbidden|api[ _-]?key|authentication|invalid x-api-key|permission|access denied|don.?t have access/i.test(lc)) {
|
|
29
33
|
return 'The AI provider rejected the request — the API key looks missing or invalid. Add or fix it in Settings.';
|
|
30
34
|
}
|
|
31
35
|
// Rate limit.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"humanizeLLMError.js","sourceRoot":"","sources":["../../../src/core/humanizeLLMError.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAUH,0EAA0E;AAC1E,MAAM,UAAU,gBAAgB,CAAC,GAAY;IAC3C,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI,EAAE,CAAc,CAAC;IACnC,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,OAAO,IAAI,MAAM,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;IACxD,MAAM,MAAM,GAAG,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,UAAU,CAAC;IACxC,MAAM,EAAE,GAAG,GAAG,CAAC,WAAW,EAAE,CAAC;IAE7B,kEAAkE;IAClE,IACE,
|
|
1
|
+
{"version":3,"file":"humanizeLLMError.js","sourceRoot":"","sources":["../../../src/core/humanizeLLMError.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAUH,0EAA0E;AAC1E,MAAM,UAAU,gBAAgB,CAAC,GAAY;IAC3C,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI,EAAE,CAAc,CAAC;IACnC,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,OAAO,IAAI,MAAM,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;IACxD,MAAM,MAAM,GAAG,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,UAAU,CAAC;IACxC,MAAM,EAAE,GAAG,GAAG,CAAC,WAAW,EAAE,CAAC;IAE7B,kEAAkE;IAClE,uEAAuE;IACvE,iEAAiE;IACjE,IACE,sIAAsI,CAAC,IAAI,CACzI,GAAG,CACJ,EACD,CAAC;QACD,OAAO,iHAAiH,CAAC;IAC3H,CAAC;IAED,qEAAqE;IACrE,qEAAqE;IACrE,6DAA6D;IAC7D,IACE,MAAM,KAAK,GAAG;QACd,MAAM,KAAK,GAAG;QACd,mHAAmH,CAAC,IAAI,CACtH,EAAE,CACH,EACD,CAAC;QACD,OAAO,yGAAyG,CAAC;IACnH,CAAC;IAED,cAAc;IACd,IAAI,MAAM,KAAK,GAAG,IAAI,sCAAsC,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC;QACtE,OAAO,8EAA8E,CAAC;IACxF,CAAC;IAED,WAAW;IACX,IAAI,uCAAuC,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC;QACrD,OAAO,iGAAiG,CAAC;IAC3G,CAAC;IAED,+BAA+B;IAC/B,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,IAAI,GAAG,IAAI,MAAM,GAAG,GAAG,EAAE,CAAC;QAChE,OAAO,8EAA8E,CAAC;IACxF,CAAC;IAED,uDAAuD;IACvD,IAAI,MAAM,KAAK,GAAG,IAAI,mDAAmD,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC;QACnF,OAAO,oGAAoG,CAAC;IAC9G,CAAC;IAED,0EAA0E;IAC1E,OAAO,GAAG,CAAC,CAAC,CAAC,uBAAuB,GAAG,EAAE,CAAC,CAAC,CAAC,2CAA2C,CAAC;AAC1F,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,YAAY,CAAC,GAAY;IACvC,MAAM,QAAQ,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAC;IACvC,sEAAsE;IACtE,OAAO,IAAI,KAAK,CAAC,QAAQ,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;AAChF,CAAC"}
|
|
@@ -34,9 +34,19 @@
|
|
|
34
34
|
* ✅ No footprintjs core changes
|
|
35
35
|
* ⚠️ Loses mid-iteration partial state (acceptable — iterations
|
|
36
36
|
* are atomic; we resume from the last completed boundary)
|
|
37
|
-
* ⚠️
|
|
38
|
-
*
|
|
39
|
-
*
|
|
37
|
+
* ⚠️ TOOL RE-EXECUTION (idempotency requirement): anything the
|
|
38
|
+
* failed iteration did after the last completed boundary —
|
|
39
|
+
* including tool side effects — is NOT in the checkpoint. On
|
|
40
|
+
* resume the model re-decides from the restored history and may
|
|
41
|
+
* re-issue those tool calls; they WILL execute again. There is
|
|
42
|
+
* NO built-in toolCallId-based dedup. Mutating tools (payments,
|
|
43
|
+
* emails, DB writes) must be idempotent — derive an idempotency
|
|
44
|
+
* key from stable call content, not from `ctx.toolCallId` (fresh
|
|
45
|
+
* per issued call, so a re-issued call gets a NEW id). Note the
|
|
46
|
+
* same requirement exists WITHOUT resume: a tool that performs
|
|
47
|
+
* its side effect and then throws reports the error message back
|
|
48
|
+
* to the model as the tool result, and the model typically
|
|
49
|
+
* retries the call on the next iteration.
|
|
40
50
|
*
|
|
41
51
|
* Pattern: Memento (GoF) — snapshot of an object's internal state
|
|
42
52
|
* for later restoration. Same shape as `FlowchartCheckpoint`
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runCheckpoint.js","sourceRoot":"","sources":["../../../src/core/runCheckpoint.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"runCheckpoint.js","sourceRoot":"","sources":["../../../src/core/runCheckpoint.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsDG;AA4CH;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,MAAM,OAAO,kBAAmB,SAAQ,KAAK;IAClC,IAAI,GAAG,oBAA6B,CAAC;IAC9C;;6BAEyB;IACP,KAAK,CAAQ;IAC/B;mEAC+D;IACtD,UAAU,CAAqB;IAExC,YAAY,KAAY,EAAE,UAA8B;QACtD,MAAM,KAAK,GAAG,UAAU,CAAC,YAAY,EAAE,KAAK,IAAI,SAAS,CAAC;QAC1D,KAAK,CACH,mCAAmC,UAAU,CAAC,YAAY,EAAE,SAAS,IAAI,GAAG,KAAK,KAAK,KAAK;YACzF,8CAA8C,UAAU,CAAC,sBAAsB,IAAI;YACnF,uDAAuD;YACvD,qBAAqB,KAAK,CAAC,OAAO,EAAE,CACvC,CAAC;QACF,IAAI,CAAC,IAAI,GAAG,oBAAoB,CAAC;QACjC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;IAC/B,CAAC;CACF;AAuBD;;;;;GAKG;AACH,MAAM,UAAU,eAAe,CAC7B,OAA6B,EAC7B,YAOC;IAED,OAAO;QACL,OAAO,EAAE,CAAC;QACV,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,OAAO,EAAE,OAAO,CAAC,OAAO;QACxB,sBAAsB,EAAE,OAAO,CAAC,sBAAsB;QACtD,aAAa,EAAE,OAAO,CAAC,aAAa;QACpC,cAAc,EAAE,IAAI,CAAC,GAAG,EAAE;QAC1B,GAAG,CAAC,YAAY,IAAI,EAAE,YAAY,EAAE,CAAC;KACtC,CAAC;AACJ,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,kBAAkB,CAAC,KAAc;IAC/C,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QACxC,MAAM,IAAI,SAAS,CAAC,8CAA8C,CAAC,CAAC;IACtE,CAAC;IACD,MAAM,CAAC,GAAG,KAAoC,CAAC;IAC/C,IAAI,CAAC,CAAC,OAAO,KAAK,CAAC,EAAE,CAAC;QACpB,MAAM,IAAI,SAAS,CACjB,mDAAmD,CAAC,CAAC,OAAO,IAAI;YAC9D,uEAAuE;YACvE,2DAA2D,CAC9D,CAAC;IACJ,CAAC;IACD,IAAI,OAAO,CAAC,CAAC,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;QAC7D,MAAM,IAAI,SAAS,CAAC,sEAAsE,CAAC,CAAC;IAC9F,CAAC;IACD,IAAI,OAAO,CAAC,CAAC,sBAAsB,KAAK,QAAQ,EAAE,CAAC;QACjD,MAAM,IAAI,SAAS,CACjB,4EAA4E,CAC7E,CAAC;IACJ,CAAC;IACD,IAAI,CAAC,CAAC,CAAC,aAAa,IAAI,OAAO,CAAC,CAAC,aAAa,CAAC,OAAO,KAAK,QAAQ,EAAE,CAAC;QACpE,MAAM,IAAI,SAAS,CACjB,2EAA2E,CAC5E,CAAC;IACJ,CAAC;IACD,OAAO,CAAuB,CAAC;AACjC,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,oBAAoB,CAAC,GAAU;IAC7C,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;IACtB,MAAM,IAAI,GAAI,GAAyB,CAAC,IAAI,IAAI,EAAE,CAAC;IACnD,MAAM,GAAG,GAAG,GAAG,CAAC,OAAO,IAAI,EAAE,CAAC;IAC9B,sDAAsD;IACtD,IACE,IAAI,KAAK,kBAAkB,IAAI,0BAA0B;QACzD,IAAI,KAAK,gBAAgB;QACzB,IAAI,KAAK,aAAa;QACtB,IAAI,KAAK,cAAc;QACvB,8CAA8C,CAAC,IAAI,CAAC,GAAG,CAAC,EACxD,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IACD,IAAI,uBAAuB,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;QAC/D,OAAO,MAAM,CAAC;IAChB,CAAC;IACD,IAAI,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC;QAAE,OAAO,WAAW,CAAC;IAC/C,OAAO,SAAS,CAAC;AACnB,CAAC"}
|
|
@@ -275,6 +275,10 @@ export class LoopBuilder {
|
|
|
275
275
|
/**
|
|
276
276
|
* Exit predicate evaluated after each iteration. Return `true` to exit.
|
|
277
277
|
* Receives `{ iteration, latestOutput, startMs }`.
|
|
278
|
+
*
|
|
279
|
+
* `latestOutput` is the body's string output. For structured exit
|
|
280
|
+
* conditions, emit JSON from the body and parse it inside the guard —
|
|
281
|
+
* see the `UntilGuard` JSDoc for the pattern and the design rationale.
|
|
278
282
|
*/
|
|
279
283
|
until(guard) {
|
|
280
284
|
this._until = guard;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Loop.js","sourceRoot":"","sources":["../../../src/core-flow/Loop.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,EACL,iBAAiB,EACjB,SAAS,GAMV,MAAM,aAAa,CAAC;AAIrB,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAE9D,OAAO,EAAE,eAAe,EAAE,MAAM,sCAAsC,CAAC;AACvE,OAAO,EAAE,cAAc,EAAE,MAAM,qCAAqC,CAAC;AACrE,OAAO,EAAE,aAAa,EAAE,MAAM,oCAAoC,CAAC;AACnE,OAAO,EAAE,mBAAmB,EAAE,MAAM,0CAA0C,CAAC;AAC/E,OAAO,EAAE,SAAS,EAAE,MAAM,gCAAgC,CAAC;
|
|
1
|
+
{"version":3,"file":"Loop.js","sourceRoot":"","sources":["../../../src/core-flow/Loop.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* withCredentialRetry — CredentialProvider decorator that retries transient
|
|
3
|
+
* `getCredential` failures with exponential backoff.
|
|
4
|
+
*
|
|
5
|
+
* Pattern: Decorator (GoF) — the credential twin of `withRetry` (resilience)
|
|
6
|
+
* for LLM providers. SAME option vocabulary (`maxAttempts` /
|
|
7
|
+
* `initialDelayMs` / `backoffFactor` / `maxDelayMs` / `shouldRetry` /
|
|
8
|
+
* `onRetry`) and the SAME default transience policy (the shared
|
|
9
|
+
* `defaultShouldRetry`: skip AbortError + 4xx except 429; retry 5xx,
|
|
10
|
+
* network errors, unknown shapes). AgentCore's documented transient
|
|
11
|
+
* errors (`InternalServerException` 500, `ThrottlingException` 429)
|
|
12
|
+
* retry out of the box.
|
|
13
|
+
*
|
|
14
|
+
* Why a decorator and not a reliability rule: the rules-based reliability
|
|
15
|
+
* subsystem (`Agent.create(...).reliability({...})`) is LLM-call-scoped —
|
|
16
|
+
* `ReliabilityScope` carries `request: LLMRequest` and the gate chart loops
|
|
17
|
+
* around the CallLLM stage with provider failover. Credential resolution
|
|
18
|
+
* happens at a different boundary (the tool-dispatch loop, declare-and-push);
|
|
19
|
+
* promoting it to a chart-level gate is the deferred `sf-credential` node.
|
|
20
|
+
* Until that exists, retry is a TRANSPORT property of the credential provider
|
|
21
|
+
* — exactly like `withRetry` is for LLM transports.
|
|
22
|
+
*
|
|
23
|
+
* Semantics:
|
|
24
|
+
* • Only THROWN errors retry. Both result branches return immediately:
|
|
25
|
+
* `issued` is success; `authorization-required` is a HUMAN flow (3LO
|
|
26
|
+
* consent), not a transient fault — retrying it would hammer the IdP
|
|
27
|
+
* without the user having authorized anything.
|
|
28
|
+
* • After retries exhaust, the LAST error is rethrown — the call site
|
|
29
|
+
* behaves byte-identically to an unwrapped provider (fail-closed:
|
|
30
|
+
* `agentfootprint.credential.failed` emit + error tool result; the tool
|
|
31
|
+
* does NOT run).
|
|
32
|
+
* • Visibility: the agent trace brackets the whole retried resolution with
|
|
33
|
+
* `credential.requested` → `credential.acquired` / `credential.failed`.
|
|
34
|
+
* Per-attempt visibility is consumer-wired via `onRetry` — the established
|
|
35
|
+
* decorator contract (same as `withRetry`; the `agentfootprint.error.*`
|
|
36
|
+
* event family is reserved for these decorators, see events/payloads.ts).
|
|
37
|
+
* No new event types.
|
|
38
|
+
*
|
|
39
|
+
* @example
|
|
40
|
+
* import { agentCoreIdentity, withCredentialRetry } from 'agentfootprint/identity';
|
|
41
|
+
*
|
|
42
|
+
* const credentials = withCredentialRetry(agentCoreIdentity({ region: 'us-east-1' }), {
|
|
43
|
+
* maxAttempts: 3,
|
|
44
|
+
* onRetry: (err, attempt, ms) => console.warn(`credential retry ${attempt} in ${ms}ms`, err),
|
|
45
|
+
* });
|
|
46
|
+
* const agent = Agent.create({ provider, model, credentials }).tools([...]).build();
|
|
47
|
+
*/
|
|
48
|
+
import { defaultShouldRetry } from '../resilience/withRetry.js';
|
|
49
|
+
/**
|
|
50
|
+
* Wrap a {@link CredentialProvider} so transient `getCredential` failures
|
|
51
|
+
* retry with exponential backoff before failing closed.
|
|
52
|
+
*
|
|
53
|
+
* Defaults mirror `withRetry`: 3 attempts total, 200ms → 400ms → 800ms
|
|
54
|
+
* backoff capped at 10s, retry on 5xx/429/network/unknown, never on
|
|
55
|
+
* AbortError or other 4xx.
|
|
56
|
+
*/
|
|
57
|
+
export function withCredentialRetry(provider, options = {}) {
|
|
58
|
+
const maxAttempts = Math.max(1, options.maxAttempts ?? 3);
|
|
59
|
+
const initialDelayMs = options.initialDelayMs ?? 200;
|
|
60
|
+
const backoffFactor = options.backoffFactor ?? 2;
|
|
61
|
+
const maxDelayMs = options.maxDelayMs ?? 10_000;
|
|
62
|
+
const shouldRetry = options.shouldRetry ?? defaultShouldRetry;
|
|
63
|
+
const onRetry = options.onRetry;
|
|
64
|
+
return {
|
|
65
|
+
id: `${provider.id}+retry`,
|
|
66
|
+
async getCredential(req) {
|
|
67
|
+
let lastError;
|
|
68
|
+
for (let attempt = 1; attempt <= maxAttempts; attempt++) {
|
|
69
|
+
try {
|
|
70
|
+
// Both result branches return as-is (same object — the wrapper never
|
|
71
|
+
// clones or serializes the credential): `issued` is success;
|
|
72
|
+
// `authorization-required` is consent, not a fault — never retried.
|
|
73
|
+
return await provider.getCredential(req);
|
|
74
|
+
}
|
|
75
|
+
catch (err) {
|
|
76
|
+
lastError = err;
|
|
77
|
+
if (attempt >= maxAttempts || !shouldRetry(err, attempt)) {
|
|
78
|
+
throw err;
|
|
79
|
+
}
|
|
80
|
+
const delay = Math.min(maxDelayMs, initialDelayMs * Math.pow(backoffFactor, attempt - 1));
|
|
81
|
+
onRetry?.(err, attempt + 1, delay);
|
|
82
|
+
await sleep(delay);
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
// Unreachable — the last attempt either returned or threw above.
|
|
86
|
+
throw lastError;
|
|
87
|
+
},
|
|
88
|
+
};
|
|
89
|
+
}
|
|
90
|
+
// `CredentialRequest` carries no AbortSignal (port contract), so this sleep is
|
|
91
|
+
// the signal-less twin of withRetry's. If the port ever grows a signal, mirror
|
|
92
|
+
// withRetry's abort-aware sleep here.
|
|
93
|
+
function sleep(ms) {
|
|
94
|
+
if (ms <= 0)
|
|
95
|
+
return Promise.resolve();
|
|
96
|
+
return new Promise((resolve) => setTimeout(resolve, ms));
|
|
97
|
+
}
|
|
98
|
+
//# sourceMappingURL=withCredentialRetry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"withCredentialRetry.js","sourceRoot":"","sources":["../../../src/identity/withCredentialRetry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8CG;AAEH,OAAO,EAAE,kBAAkB,EAAyB,MAAM,4BAA4B,CAAC;AAUvF;;;;;;;GAOG;AACH,MAAM,UAAU,mBAAmB,CACjC,QAA4B,EAC5B,UAAsC,EAAE;IAExC,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,WAAW,IAAI,CAAC,CAAC,CAAC;IAC1D,MAAM,cAAc,GAAG,OAAO,CAAC,cAAc,IAAI,GAAG,CAAC;IACrD,MAAM,aAAa,GAAG,OAAO,CAAC,aAAa,IAAI,CAAC,CAAC;IACjD,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,IAAI,MAAM,CAAC;IAChD,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,IAAI,kBAAkB,CAAC;IAC9D,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;IAEhC,OAAO;QACL,EAAE,EAAE,GAAG,QAAQ,CAAC,EAAE,QAAQ;QAC1B,KAAK,CAAC,aAAa,CAAC,GAAsB;YACxC,IAAI,SAAkB,CAAC;YACvB,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,IAAI,WAAW,EAAE,OAAO,EAAE,EAAE,CAAC;gBACxD,IAAI,CAAC;oBACH,qEAAqE;oBACrE,6DAA6D;oBAC7D,oEAAoE;oBACpE,OAAO,MAAM,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;gBAC3C,CAAC;gBAAC,OAAO,GAAG,EAAE,CAAC;oBACb,SAAS,GAAG,GAAG,CAAC;oBAChB,IAAI,OAAO,IAAI,WAAW,IAAI,CAAC,WAAW,CAAC,GAAG,EAAE,OAAO,CAAC,EAAE,CAAC;wBACzD,MAAM,GAAG,CAAC;oBACZ,CAAC;oBACD,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,cAAc,GAAG,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC;oBAC1F,OAAO,EAAE,CAAC,GAAG,EAAE,OAAO,GAAG,CAAC,EAAE,KAAK,CAAC,CAAC;oBACnC,MAAM,KAAK,CAAC,KAAK,CAAC,CAAC;gBACrB,CAAC;YACH,CAAC;YACD,iEAAiE;YACjE,MAAM,SAAS,CAAC;QAClB,CAAC;KACF,CAAC;AACJ,CAAC;AAED,+EAA+E;AAC/E,+EAA+E;AAC/E,sCAAsC;AACtC,SAAS,KAAK,CAAC,EAAU;IACvB,IAAI,EAAE,IAAI,CAAC;QAAE,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IACtC,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;AAC3D,CAAC"}
|
package/dist/esm/identity.js
CHANGED
|
@@ -26,5 +26,6 @@
|
|
|
26
26
|
export { isCredentialIssued, unconfiguredCredentialProvider } from './identity/types.js';
|
|
27
27
|
export { bearer, apiKey, basic, headers, } from './identity/kinds.js';
|
|
28
28
|
export { staticTokens } from './identity/staticTokens.js';
|
|
29
|
+
export { withCredentialRetry, } from './identity/withCredentialRetry.js';
|
|
29
30
|
export { agentCoreIdentity, } from './adapters/identity/agentcore.js';
|
|
30
31
|
//# sourceMappingURL=identity.js.map
|
package/dist/esm/identity.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"identity.js","sourceRoot":"","sources":["../../src/identity.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAWH,OAAO,EAAE,kBAAkB,EAAE,8BAA8B,EAAE,MAAM,qBAAqB,CAAC;AACzF,OAAO,EACL,MAAM,EACN,MAAM,EACN,KAAK,EACL,OAAO,GAKR,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,YAAY,EAA4B,MAAM,4BAA4B,CAAC;AACpF,OAAO,EACL,iBAAiB,GAIlB,MAAM,kCAAkC,CAAC"}
|
|
1
|
+
{"version":3,"file":"identity.js","sourceRoot":"","sources":["../../src/identity.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAWH,OAAO,EAAE,kBAAkB,EAAE,8BAA8B,EAAE,MAAM,qBAAqB,CAAC;AACzF,OAAO,EACL,MAAM,EACN,MAAM,EACN,KAAK,EACL,OAAO,GAKR,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,YAAY,EAA4B,MAAM,4BAA4B,CAAC;AACpF,OAAO,EACL,mBAAmB,GAEpB,MAAM,mCAAmC,CAAC;AAC3C,OAAO,EACL,iBAAiB,GAIlB,MAAM,kCAAkC,CAAC"}
|
|
@@ -20,6 +20,7 @@
|
|
|
20
20
|
* (it reads `ctx.lastToolResult`), so `from` is informational for the drawing and
|
|
21
21
|
* is NOT enforced — matching the engine's per-iteration evaluation model.
|
|
22
22
|
*/
|
|
23
|
+
import { isDevMode } from 'footprintjs';
|
|
23
24
|
/** Build a decision node. Leaves are skills (an `Injection`); internal nodes are
|
|
24
25
|
* other `decide(...)` results. */
|
|
25
26
|
export function decide(predicate, whenTrue, whenFalse, label) {
|
|
@@ -84,6 +85,7 @@ export function skillGraph() {
|
|
|
84
85
|
if (treeRoot) {
|
|
85
86
|
// Decision-tree mode (v3): compile each leaf to a path-conjunction trigger.
|
|
86
87
|
compileTree(treeRoot, () => true, { skills, nodes, edges }, null, { n: 0 }, [], treeScopeTools);
|
|
88
|
+
attachExactlyOneLeafMonitor(skills);
|
|
87
89
|
}
|
|
88
90
|
else {
|
|
89
91
|
// Flat entry/route mode (v1).
|
|
@@ -222,6 +224,68 @@ function compileTree(node, pathCond, out, parent, counter, path, scopeTools) {
|
|
|
222
224
|
});
|
|
223
225
|
}
|
|
224
226
|
}
|
|
227
|
+
/**
|
|
228
|
+
* Dev-mode "exactly one leaf fires" monitor (backlog B11).
|
|
229
|
+
*
|
|
230
|
+
* A binary decision tree is exhaustive and non-overlapping BY CONSTRUCTION
|
|
231
|
+
* (each leaf's trigger conjoins its root→leaf predicates with earlier-sibling
|
|
232
|
+
* negation), so static analysis has nothing to check. The invariant breaks at
|
|
233
|
+
* RUNTIME only — when a predicate is impure/non-deterministic: the evaluator
|
|
234
|
+
* re-runs each `decide(...)` predicate once per leaf trigger, so a predicate
|
|
235
|
+
* that answers differently across those calls can fire 0 or ≥2 leaves.
|
|
236
|
+
*
|
|
237
|
+
* In dev mode (footprintjs `enableDevMode()`), each compiled leaf trigger is
|
|
238
|
+
* wrapped to tally fires per evaluation pass (keyed on the shared `ctx`
|
|
239
|
+
* identity — `evaluateInjections` passes one ctx object to every trigger in a
|
|
240
|
+
* pass). When all leaves have been evaluated for one ctx and the fired count
|
|
241
|
+
* is not exactly 1, a console.warn names the leaves. Production pays one
|
|
242
|
+
* `isDevMode()` check per evaluation; a throwing predicate is excluded here
|
|
243
|
+
* because the evaluator already reports it (`skipped: 'predicate-threw'`).
|
|
244
|
+
*/
|
|
245
|
+
function attachExactlyOneLeafMonitor(skills) {
|
|
246
|
+
const total = skills.length;
|
|
247
|
+
if (total < 2)
|
|
248
|
+
return; // single leaf — trivially exactly-one
|
|
249
|
+
const passes = new WeakMap();
|
|
250
|
+
for (let i = 0; i < skills.length; i++) {
|
|
251
|
+
const skill = skills[i];
|
|
252
|
+
const inner = skill.trigger.activeWhen;
|
|
253
|
+
skills[i] = {
|
|
254
|
+
...skill,
|
|
255
|
+
trigger: {
|
|
256
|
+
kind: 'rule',
|
|
257
|
+
activeWhen: (ctx) => {
|
|
258
|
+
if (!isDevMode())
|
|
259
|
+
return inner(ctx);
|
|
260
|
+
const fired = inner(ctx); // may throw → evaluator reports 'predicate-threw'
|
|
261
|
+
let pass = passes.get(ctx);
|
|
262
|
+
if (!pass) {
|
|
263
|
+
pass = { evaluated: 0, fired: [] };
|
|
264
|
+
passes.set(ctx, pass);
|
|
265
|
+
}
|
|
266
|
+
pass.evaluated += 1;
|
|
267
|
+
if (fired)
|
|
268
|
+
pass.fired.push(skill.id);
|
|
269
|
+
if (pass.evaluated === total) {
|
|
270
|
+
passes.delete(ctx); // reset so a reused ctx object starts a fresh pass
|
|
271
|
+
if (pass.fired.length !== 1) {
|
|
272
|
+
// eslint-disable-next-line no-console
|
|
273
|
+
console.warn(pass.fired.length === 0
|
|
274
|
+
? `agentfootprint skillGraph.tree: NO leaf fired this iteration (expected exactly one). ` +
|
|
275
|
+
`The tree is exhaustive by construction, so a decide() predicate likely returned ` +
|
|
276
|
+
`different answers across leaf evaluations — predicates must be pure and deterministic. ` +
|
|
277
|
+
`Leaves: ${skills.map((s) => s.id).join(', ')}.`
|
|
278
|
+
: `agentfootprint skillGraph.tree: ${pass.fired.length} leaves fired simultaneously ` +
|
|
279
|
+
`(expected exactly one): ${pass.fired.join(', ')}. Each decide() predicate is ` +
|
|
280
|
+
`re-evaluated per leaf, so impure/non-deterministic predicates break if/else exclusivity.`);
|
|
281
|
+
}
|
|
282
|
+
}
|
|
283
|
+
return fired;
|
|
284
|
+
},
|
|
285
|
+
},
|
|
286
|
+
};
|
|
287
|
+
}
|
|
288
|
+
}
|
|
225
289
|
/** Routing provenance for a flat entry/route skill (the v1 model). */
|
|
226
290
|
function routingFor(id, entries, routes) {
|
|
227
291
|
const entry = entries.find((e) => e.id === id);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"skillGraph.js","sourceRoot":"","sources":["../../../../src/lib/injection-engine/skillGraph.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"skillGraph.js","sourceRoot":"","sources":["../../../../src/lib/injection-engine/skillGraph.ts"],"names":[],"mappings":"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"}
|
|
@@ -61,6 +61,22 @@
|
|
|
61
61
|
* default behavior. For cluster-wide coordination, layer your own
|
|
62
62
|
* Redis-backed counter on top via the `onStateChange` hook +
|
|
63
63
|
* `shouldCount` predicate.
|
|
64
|
+
*
|
|
65
|
+
* **Scope: PROVIDER-level, not per-tool — by design (B16).** The breaker
|
|
66
|
+
* wraps `LLMProvider` because a provider outage has unbounded blast
|
|
67
|
+
* radius: the LLM call is every run's heartbeat, fired once per
|
|
68
|
+
* iteration at your full QPS, and a failure aborts the call path. Tool
|
|
69
|
+
* failures don't share that shape — the agent's tool dispatch catches a
|
|
70
|
+
* tool throw and feeds the error message back to the model as the tool
|
|
71
|
+
* result (see `core/agent/stages/toolCalls.ts`), so the ReAct loop
|
|
72
|
+
* itself absorbs and adapts (retry, alternate tool, give up), serialized
|
|
73
|
+
* and bounded by the iteration budget. A flaky tool can't hammer
|
|
74
|
+
* anything the way provider QPS can. For the rare tool that needs a
|
|
75
|
+
* breaker today: its `execute` is a plain async function — wrap it with
|
|
76
|
+
* any breaker yourself, or hide it dynamically via a `gatedTools`
|
|
77
|
+
* predicate (the visible-tool list is recomputed every iteration).
|
|
78
|
+
* First-class per-tool breakers (state keyed by tool name; run-scoped
|
|
79
|
+
* vs process-scoped TBD) are a possible future enhancement.
|
|
64
80
|
*/
|
|
65
81
|
// ─── Public error type ───────────────────────────────────────────────
|
|
66
82
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"withCircuitBreaker.js","sourceRoot":"","sources":["../../../src/resilience/withCircuitBreaker.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"withCircuitBreaker.js","sourceRoot":"","sources":["../../../src/resilience/withCircuitBreaker.ts"],"names":[],"mappings":"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"}
|
|
@@ -75,8 +75,13 @@ export function withRetry(provider, options = {}) {
|
|
|
75
75
|
* surface HTTP status should set `error.status` for this to work; the
|
|
76
76
|
* predicate falls back to retrying when status is unknown (better to
|
|
77
77
|
* retry once than to surface a flaky failure).
|
|
78
|
+
*
|
|
79
|
+
* Exported (module-level, NOT on the resilience barrel) as the single
|
|
80
|
+
* source of truth for the decorators' transience policy — shared by
|
|
81
|
+
* `withCredentialRetry` (identity) so "what counts as transient" never
|
|
82
|
+
* drifts between the LLM and credential retry wrappers.
|
|
78
83
|
*/
|
|
79
|
-
function defaultShouldRetry(err, _attempt) {
|
|
84
|
+
export function defaultShouldRetry(err, _attempt) {
|
|
80
85
|
if (isAbortError(err))
|
|
81
86
|
return false;
|
|
82
87
|
const status = err?.status ??
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"withRetry.js","sourceRoot":"","sources":["../../../src/resilience/withRetry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;
|
|
1
|
+
{"version":3,"file":"withRetry.js","sourceRoot":"","sources":["../../../src/resilience/withRetry.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* withCredentialRetry — CredentialProvider decorator that retries transient
|
|
4
|
+
* `getCredential` failures with exponential backoff.
|
|
5
|
+
*
|
|
6
|
+
* Pattern: Decorator (GoF) — the credential twin of `withRetry` (resilience)
|
|
7
|
+
* for LLM providers. SAME option vocabulary (`maxAttempts` /
|
|
8
|
+
* `initialDelayMs` / `backoffFactor` / `maxDelayMs` / `shouldRetry` /
|
|
9
|
+
* `onRetry`) and the SAME default transience policy (the shared
|
|
10
|
+
* `defaultShouldRetry`: skip AbortError + 4xx except 429; retry 5xx,
|
|
11
|
+
* network errors, unknown shapes). AgentCore's documented transient
|
|
12
|
+
* errors (`InternalServerException` 500, `ThrottlingException` 429)
|
|
13
|
+
* retry out of the box.
|
|
14
|
+
*
|
|
15
|
+
* Why a decorator and not a reliability rule: the rules-based reliability
|
|
16
|
+
* subsystem (`Agent.create(...).reliability({...})`) is LLM-call-scoped —
|
|
17
|
+
* `ReliabilityScope` carries `request: LLMRequest` and the gate chart loops
|
|
18
|
+
* around the CallLLM stage with provider failover. Credential resolution
|
|
19
|
+
* happens at a different boundary (the tool-dispatch loop, declare-and-push);
|
|
20
|
+
* promoting it to a chart-level gate is the deferred `sf-credential` node.
|
|
21
|
+
* Until that exists, retry is a TRANSPORT property of the credential provider
|
|
22
|
+
* — exactly like `withRetry` is for LLM transports.
|
|
23
|
+
*
|
|
24
|
+
* Semantics:
|
|
25
|
+
* • Only THROWN errors retry. Both result branches return immediately:
|
|
26
|
+
* `issued` is success; `authorization-required` is a HUMAN flow (3LO
|
|
27
|
+
* consent), not a transient fault — retrying it would hammer the IdP
|
|
28
|
+
* without the user having authorized anything.
|
|
29
|
+
* • After retries exhaust, the LAST error is rethrown — the call site
|
|
30
|
+
* behaves byte-identically to an unwrapped provider (fail-closed:
|
|
31
|
+
* `agentfootprint.credential.failed` emit + error tool result; the tool
|
|
32
|
+
* does NOT run).
|
|
33
|
+
* • Visibility: the agent trace brackets the whole retried resolution with
|
|
34
|
+
* `credential.requested` → `credential.acquired` / `credential.failed`.
|
|
35
|
+
* Per-attempt visibility is consumer-wired via `onRetry` — the established
|
|
36
|
+
* decorator contract (same as `withRetry`; the `agentfootprint.error.*`
|
|
37
|
+
* event family is reserved for these decorators, see events/payloads.ts).
|
|
38
|
+
* No new event types.
|
|
39
|
+
*
|
|
40
|
+
* @example
|
|
41
|
+
* import { agentCoreIdentity, withCredentialRetry } from 'agentfootprint/identity';
|
|
42
|
+
*
|
|
43
|
+
* const credentials = withCredentialRetry(agentCoreIdentity({ region: 'us-east-1' }), {
|
|
44
|
+
* maxAttempts: 3,
|
|
45
|
+
* onRetry: (err, attempt, ms) => console.warn(`credential retry ${attempt} in ${ms}ms`, err),
|
|
46
|
+
* });
|
|
47
|
+
* const agent = Agent.create({ provider, model, credentials }).tools([...]).build();
|
|
48
|
+
*/
|
|
49
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
50
|
+
exports.withCredentialRetry = void 0;
|
|
51
|
+
const withRetry_js_1 = require("../resilience/withRetry.js");
|
|
52
|
+
/**
|
|
53
|
+
* Wrap a {@link CredentialProvider} so transient `getCredential` failures
|
|
54
|
+
* retry with exponential backoff before failing closed.
|
|
55
|
+
*
|
|
56
|
+
* Defaults mirror `withRetry`: 3 attempts total, 200ms → 400ms → 800ms
|
|
57
|
+
* backoff capped at 10s, retry on 5xx/429/network/unknown, never on
|
|
58
|
+
* AbortError or other 4xx.
|
|
59
|
+
*/
|
|
60
|
+
function withCredentialRetry(provider, options = {}) {
|
|
61
|
+
const maxAttempts = Math.max(1, options.maxAttempts ?? 3);
|
|
62
|
+
const initialDelayMs = options.initialDelayMs ?? 200;
|
|
63
|
+
const backoffFactor = options.backoffFactor ?? 2;
|
|
64
|
+
const maxDelayMs = options.maxDelayMs ?? 10_000;
|
|
65
|
+
const shouldRetry = options.shouldRetry ?? withRetry_js_1.defaultShouldRetry;
|
|
66
|
+
const onRetry = options.onRetry;
|
|
67
|
+
return {
|
|
68
|
+
id: `${provider.id}+retry`,
|
|
69
|
+
async getCredential(req) {
|
|
70
|
+
let lastError;
|
|
71
|
+
for (let attempt = 1; attempt <= maxAttempts; attempt++) {
|
|
72
|
+
try {
|
|
73
|
+
// Both result branches return as-is (same object — the wrapper never
|
|
74
|
+
// clones or serializes the credential): `issued` is success;
|
|
75
|
+
// `authorization-required` is consent, not a fault — never retried.
|
|
76
|
+
return await provider.getCredential(req);
|
|
77
|
+
}
|
|
78
|
+
catch (err) {
|
|
79
|
+
lastError = err;
|
|
80
|
+
if (attempt >= maxAttempts || !shouldRetry(err, attempt)) {
|
|
81
|
+
throw err;
|
|
82
|
+
}
|
|
83
|
+
const delay = Math.min(maxDelayMs, initialDelayMs * Math.pow(backoffFactor, attempt - 1));
|
|
84
|
+
onRetry?.(err, attempt + 1, delay);
|
|
85
|
+
await sleep(delay);
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
// Unreachable — the last attempt either returned or threw above.
|
|
89
|
+
throw lastError;
|
|
90
|
+
},
|
|
91
|
+
};
|
|
92
|
+
}
|
|
93
|
+
exports.withCredentialRetry = withCredentialRetry;
|
|
94
|
+
// `CredentialRequest` carries no AbortSignal (port contract), so this sleep is
|
|
95
|
+
// the signal-less twin of withRetry's. If the port ever grows a signal, mirror
|
|
96
|
+
// withRetry's abort-aware sleep here.
|
|
97
|
+
function sleep(ms) {
|
|
98
|
+
if (ms <= 0)
|
|
99
|
+
return Promise.resolve();
|
|
100
|
+
return new Promise((resolve) => setTimeout(resolve, ms));
|
|
101
|
+
}
|
|
102
|
+
//# sourceMappingURL=withCredentialRetry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"withCredentialRetry.js","sourceRoot":"","sources":["../../src/identity/withCredentialRetry.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8CG;;;AAEH,6DAAuF;AAUvF;;;;;;;GAOG;AACH,SAAgB,mBAAmB,CACjC,QAA4B,EAC5B,UAAsC,EAAE;IAExC,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,WAAW,IAAI,CAAC,CAAC,CAAC;IAC1D,MAAM,cAAc,GAAG,OAAO,CAAC,cAAc,IAAI,GAAG,CAAC;IACrD,MAAM,aAAa,GAAG,OAAO,CAAC,aAAa,IAAI,CAAC,CAAC;IACjD,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,IAAI,MAAM,CAAC;IAChD,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,IAAI,iCAAkB,CAAC;IAC9D,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;IAEhC,OAAO;QACL,EAAE,EAAE,GAAG,QAAQ,CAAC,EAAE,QAAQ;QAC1B,KAAK,CAAC,aAAa,CAAC,GAAsB;YACxC,IAAI,SAAkB,CAAC;YACvB,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,IAAI,WAAW,EAAE,OAAO,EAAE,EAAE,CAAC;gBACxD,IAAI,CAAC;oBACH,qEAAqE;oBACrE,6DAA6D;oBAC7D,oEAAoE;oBACpE,OAAO,MAAM,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;gBAC3C,CAAC;gBAAC,OAAO,GAAG,EAAE,CAAC;oBACb,SAAS,GAAG,GAAG,CAAC;oBAChB,IAAI,OAAO,IAAI,WAAW,IAAI,CAAC,WAAW,CAAC,GAAG,EAAE,OAAO,CAAC,EAAE,CAAC;wBACzD,MAAM,GAAG,CAAC;oBACZ,CAAC;oBACD,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,cAAc,GAAG,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC;oBAC1F,OAAO,EAAE,CAAC,GAAG,EAAE,OAAO,GAAG,CAAC,EAAE,KAAK,CAAC,CAAC;oBACnC,MAAM,KAAK,CAAC,KAAK,CAAC,CAAC;gBACrB,CAAC;YACH,CAAC;YACD,iEAAiE;YACjE,MAAM,SAAS,CAAC;QAClB,CAAC;KACF,CAAC;AACJ,CAAC;AAnCD,kDAmCC;AAED,+EAA+E;AAC/E,+EAA+E;AAC/E,sCAAsC;AACtC,SAAS,KAAK,CAAC,EAAU;IACvB,IAAI,EAAE,IAAI,CAAC;QAAE,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IACtC,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;AAC3D,CAAC"}
|
package/dist/identity.js
CHANGED
|
@@ -25,7 +25,7 @@
|
|
|
25
25
|
* ```
|
|
26
26
|
*/
|
|
27
27
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
28
|
-
exports.agentCoreIdentity = exports.staticTokens = exports.headers = exports.basic = exports.apiKey = exports.bearer = exports.unconfiguredCredentialProvider = exports.isCredentialIssued = void 0;
|
|
28
|
+
exports.agentCoreIdentity = exports.withCredentialRetry = exports.staticTokens = exports.headers = exports.basic = exports.apiKey = exports.bearer = exports.unconfiguredCredentialProvider = exports.isCredentialIssued = void 0;
|
|
29
29
|
var types_js_1 = require("./identity/types.js");
|
|
30
30
|
Object.defineProperty(exports, "isCredentialIssued", { enumerable: true, get: function () { return types_js_1.isCredentialIssued; } });
|
|
31
31
|
Object.defineProperty(exports, "unconfiguredCredentialProvider", { enumerable: true, get: function () { return types_js_1.unconfiguredCredentialProvider; } });
|
|
@@ -36,6 +36,8 @@ Object.defineProperty(exports, "basic", { enumerable: true, get: function () { r
|
|
|
36
36
|
Object.defineProperty(exports, "headers", { enumerable: true, get: function () { return kinds_js_1.headers; } });
|
|
37
37
|
var staticTokens_js_1 = require("./identity/staticTokens.js");
|
|
38
38
|
Object.defineProperty(exports, "staticTokens", { enumerable: true, get: function () { return staticTokens_js_1.staticTokens; } });
|
|
39
|
+
var withCredentialRetry_js_1 = require("./identity/withCredentialRetry.js");
|
|
40
|
+
Object.defineProperty(exports, "withCredentialRetry", { enumerable: true, get: function () { return withCredentialRetry_js_1.withCredentialRetry; } });
|
|
39
41
|
var agentcore_js_1 = require("./adapters/identity/agentcore.js");
|
|
40
42
|
Object.defineProperty(exports, "agentCoreIdentity", { enumerable: true, get: function () { return agentcore_js_1.agentCoreIdentity; } });
|
|
41
43
|
//# sourceMappingURL=identity.js.map
|
package/dist/identity.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"identity.js","sourceRoot":"","sources":["../src/identity.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;;;AAWH,gDAAyF;AAAhF,8GAAA,kBAAkB,OAAA;AAAE,0HAAA,8BAA8B,OAAA;AAC3D,gDAS6B;AAR3B,kGAAA,MAAM,OAAA;AACN,kGAAA,MAAM,OAAA;AACN,iGAAA,KAAK,OAAA;AACL,mGAAA,OAAO,OAAA;AAMT,8DAAoF;AAA3E,+GAAA,YAAY,OAAA;AACrB,iEAK0C;AAJxC,iHAAA,iBAAiB,OAAA"}
|
|
1
|
+
{"version":3,"file":"identity.js","sourceRoot":"","sources":["../src/identity.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;;;AAWH,gDAAyF;AAAhF,8GAAA,kBAAkB,OAAA;AAAE,0HAAA,8BAA8B,OAAA;AAC3D,gDAS6B;AAR3B,kGAAA,MAAM,OAAA;AACN,kGAAA,MAAM,OAAA;AACN,iGAAA,KAAK,OAAA;AACL,mGAAA,OAAO,OAAA;AAMT,8DAAoF;AAA3E,+GAAA,YAAY,OAAA;AACrB,4EAG2C;AAFzC,6HAAA,mBAAmB,OAAA;AAGrB,iEAK0C;AAJxC,iHAAA,iBAAiB,OAAA"}
|