agentfootprint 9.25.0 → 9.26.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/AGENTS.md +1 -1
- package/CLAUDE.md +7 -1
- package/ai-instructions/claude-code/SKILL.md +1 -1
- package/dist/adapters/code/local.js +102 -2
- package/dist/adapters/code/local.js.map +1 -1
- package/dist/adapters/hosting/agentcore.js +11 -0
- package/dist/adapters/hosting/agentcore.js.map +1 -1
- package/dist/adapters/identity/jwks.js +277 -0
- package/dist/adapters/identity/jwks.js.map +1 -0
- package/dist/adapters/types.js +18 -1
- package/dist/adapters/types.js.map +1 -1
- package/dist/artifacts/index.js +6 -1
- package/dist/artifacts/index.js.map +1 -1
- package/dist/artifacts/recordingArtifact.js +88 -0
- package/dist/artifacts/recordingArtifact.js.map +1 -0
- package/dist/core/Agent.js +176 -0
- package/dist/core/Agent.js.map +1 -1
- package/dist/core/agent/repeatedCall.js +190 -0
- package/dist/core/agent/repeatedCall.js.map +1 -0
- package/dist/core/agent/stages/toolCalls.js +50 -0
- package/dist/core/agent/stages/toolCalls.js.map +1 -1
- package/dist/core/codeRunnerTool.js +149 -12
- package/dist/core/codeRunnerTool.js.map +1 -1
- package/dist/esm/adapters/code/local.d.ts +16 -0
- package/dist/esm/adapters/code/local.js +102 -2
- package/dist/esm/adapters/code/local.js.map +1 -1
- package/dist/esm/adapters/hosting/agentcore.js +11 -0
- package/dist/esm/adapters/hosting/agentcore.js.map +1 -1
- package/dist/esm/adapters/identity/jwks.d.ts +124 -0
- package/dist/esm/adapters/identity/jwks.js +249 -0
- package/dist/esm/adapters/identity/jwks.js.map +1 -0
- package/dist/esm/adapters/types.d.ts +86 -0
- package/dist/esm/adapters/types.js +16 -0
- package/dist/esm/adapters/types.js.map +1 -1
- package/dist/esm/artifacts/index.d.ts +1 -0
- package/dist/esm/artifacts/index.js +1 -0
- package/dist/esm/artifacts/index.js.map +1 -1
- package/dist/esm/artifacts/recordingArtifact.d.ts +76 -0
- package/dist/esm/artifacts/recordingArtifact.js +83 -0
- package/dist/esm/artifacts/recordingArtifact.js.map +1 -0
- package/dist/esm/core/Agent.d.ts +66 -2
- package/dist/esm/core/Agent.js +176 -0
- package/dist/esm/core/Agent.js.map +1 -1
- package/dist/esm/core/agent/repeatedCall.d.ts +150 -0
- package/dist/esm/core/agent/repeatedCall.js +184 -0
- package/dist/esm/core/agent/repeatedCall.js.map +1 -0
- package/dist/esm/core/agent/stages/toolCalls.d.ts +12 -0
- package/dist/esm/core/agent/stages/toolCalls.js +50 -0
- package/dist/esm/core/agent/stages/toolCalls.js.map +1 -1
- package/dist/esm/core/agent/types.d.ts +82 -0
- package/dist/esm/core/codeRunnerTool.d.ts +31 -0
- package/dist/esm/core/codeRunnerTool.js +149 -12
- package/dist/esm/core/codeRunnerTool.js.map +1 -1
- package/dist/esm/events/payloads.d.ts +22 -0
- package/dist/esm/events/registry.d.ts +3 -1
- package/dist/esm/events/registry.js +2 -0
- package/dist/esm/events/registry.js.map +1 -1
- package/dist/esm/hosting/admission.d.ts +180 -0
- package/dist/esm/hosting/admission.js +188 -0
- package/dist/esm/hosting/admission.js.map +1 -0
- package/dist/esm/hosting/artifactWire.d.ts +8 -5
- package/dist/esm/hosting/artifactWire.js +14 -9
- package/dist/esm/hosting/artifactWire.js.map +1 -1
- package/dist/esm/hosting/envelope.d.ts +34 -0
- package/dist/esm/hosting/envelope.js +81 -0
- package/dist/esm/hosting/envelope.js.map +1 -1
- package/dist/esm/hosting/errors.d.ts +131 -0
- package/dist/esm/hosting/errors.js +195 -0
- package/dist/esm/hosting/errors.js.map +1 -1
- package/dist/esm/hosting/httpHost.d.ts +21 -0
- package/dist/esm/hosting/httpHost.js +44 -2
- package/dist/esm/hosting/httpHost.js.map +1 -1
- package/dist/esm/hosting/identityVerification.d.ts +154 -0
- package/dist/esm/hosting/identityVerification.js +135 -0
- package/dist/esm/hosting/identityVerification.js.map +1 -0
- package/dist/esm/hosting/index.d.ts +12 -3
- package/dist/esm/hosting/index.js +16 -2
- package/dist/esm/hosting/index.js.map +1 -1
- package/dist/esm/hosting/memorySessions.d.ts +9 -0
- package/dist/esm/hosting/memorySessions.js +86 -0
- package/dist/esm/hosting/memorySessions.js.map +1 -1
- package/dist/esm/hosting/nodeHost.js +8 -0
- package/dist/esm/hosting/nodeHost.js.map +1 -1
- package/dist/esm/hosting/sessionWire.d.ts +126 -0
- package/dist/esm/hosting/sessionWire.js +95 -0
- package/dist/esm/hosting/sessionWire.js.map +1 -0
- package/dist/esm/hosting/sqliteSessions.js +122 -5
- package/dist/esm/hosting/sqliteSessions.js.map +1 -1
- package/dist/esm/hosting/standingAgent.js +299 -8
- package/dist/esm/hosting/standingAgent.js.map +1 -1
- package/dist/esm/hosting/types.d.ts +166 -6
- package/dist/esm/hosting/types.js.map +1 -1
- package/dist/esm/hosting/wireOps.d.ts +52 -0
- package/dist/esm/hosting/wireOps.js +60 -0
- package/dist/esm/hosting/wireOps.js.map +1 -0
- package/dist/esm/identity.d.ts +1 -0
- package/dist/esm/identity.js +6 -0
- package/dist/esm/identity.js.map +1 -1
- package/dist/esm/index.d.ts +2 -2
- package/dist/esm/index.js +5 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/events/registry.js +2 -0
- package/dist/events/registry.js.map +1 -1
- package/dist/hosting/admission.js +194 -0
- package/dist/hosting/admission.js.map +1 -0
- package/dist/hosting/artifactWire.js +14 -9
- package/dist/hosting/artifactWire.js.map +1 -1
- package/dist/hosting/envelope.js +84 -1
- package/dist/hosting/envelope.js.map +1 -1
- package/dist/hosting/errors.js +203 -1
- package/dist/hosting/errors.js.map +1 -1
- package/dist/hosting/httpHost.js +43 -1
- package/dist/hosting/httpHost.js.map +1 -1
- package/dist/hosting/identityVerification.js +140 -0
- package/dist/hosting/identityVerification.js.map +1 -0
- package/dist/hosting/index.js +38 -1
- package/dist/hosting/index.js.map +1 -1
- package/dist/hosting/memorySessions.js +86 -0
- package/dist/hosting/memorySessions.js.map +1 -1
- package/dist/hosting/nodeHost.js +8 -0
- package/dist/hosting/nodeHost.js.map +1 -1
- package/dist/hosting/sessionWire.js +100 -0
- package/dist/hosting/sessionWire.js.map +1 -0
- package/dist/hosting/sqliteSessions.js +121 -4
- package/dist/hosting/sqliteSessions.js.map +1 -1
- package/dist/hosting/standingAgent.js +297 -6
- package/dist/hosting/standingAgent.js.map +1 -1
- package/dist/hosting/types.js.map +1 -1
- package/dist/hosting/wireOps.js +65 -0
- package/dist/hosting/wireOps.js.map +1 -0
- package/dist/identity.js +9 -1
- package/dist/identity.js.map +1 -1
- package/dist/index.js +9 -2
- package/dist/index.js.map +1 -1
- package/dist/types/adapters/code/local.d.ts +16 -0
- package/dist/types/adapters/code/local.d.ts.map +1 -1
- package/dist/types/adapters/hosting/agentcore.d.ts.map +1 -1
- package/dist/types/adapters/identity/jwks.d.ts +125 -0
- package/dist/types/adapters/identity/jwks.d.ts.map +1 -0
- package/dist/types/adapters/types.d.ts +86 -0
- package/dist/types/adapters/types.d.ts.map +1 -1
- package/dist/types/artifacts/index.d.ts +1 -0
- package/dist/types/artifacts/index.d.ts.map +1 -1
- package/dist/types/artifacts/recordingArtifact.d.ts +77 -0
- package/dist/types/artifacts/recordingArtifact.d.ts.map +1 -0
- package/dist/types/core/Agent.d.ts +66 -2
- package/dist/types/core/Agent.d.ts.map +1 -1
- package/dist/types/core/agent/repeatedCall.d.ts +151 -0
- package/dist/types/core/agent/repeatedCall.d.ts.map +1 -0
- package/dist/types/core/agent/stages/toolCalls.d.ts +12 -0
- package/dist/types/core/agent/stages/toolCalls.d.ts.map +1 -1
- package/dist/types/core/agent/types.d.ts +82 -0
- package/dist/types/core/agent/types.d.ts.map +1 -1
- package/dist/types/core/codeRunnerTool.d.ts +31 -0
- package/dist/types/core/codeRunnerTool.d.ts.map +1 -1
- package/dist/types/events/payloads.d.ts +22 -0
- package/dist/types/events/payloads.d.ts.map +1 -1
- package/dist/types/events/registry.d.ts +3 -1
- package/dist/types/events/registry.d.ts.map +1 -1
- package/dist/types/hosting/admission.d.ts +181 -0
- package/dist/types/hosting/admission.d.ts.map +1 -0
- package/dist/types/hosting/artifactWire.d.ts +8 -5
- package/dist/types/hosting/artifactWire.d.ts.map +1 -1
- package/dist/types/hosting/envelope.d.ts +34 -0
- package/dist/types/hosting/envelope.d.ts.map +1 -1
- package/dist/types/hosting/errors.d.ts +131 -0
- package/dist/types/hosting/errors.d.ts.map +1 -1
- package/dist/types/hosting/httpHost.d.ts +21 -0
- package/dist/types/hosting/httpHost.d.ts.map +1 -1
- package/dist/types/hosting/identityVerification.d.ts +155 -0
- package/dist/types/hosting/identityVerification.d.ts.map +1 -0
- package/dist/types/hosting/index.d.ts +12 -3
- package/dist/types/hosting/index.d.ts.map +1 -1
- package/dist/types/hosting/memorySessions.d.ts +9 -0
- package/dist/types/hosting/memorySessions.d.ts.map +1 -1
- package/dist/types/hosting/nodeHost.d.ts.map +1 -1
- package/dist/types/hosting/sessionWire.d.ts +127 -0
- package/dist/types/hosting/sessionWire.d.ts.map +1 -0
- package/dist/types/hosting/sqliteSessions.d.ts.map +1 -1
- package/dist/types/hosting/standingAgent.d.ts.map +1 -1
- package/dist/types/hosting/types.d.ts +166 -6
- package/dist/types/hosting/types.d.ts.map +1 -1
- package/dist/types/hosting/wireOps.d.ts +53 -0
- package/dist/types/hosting/wireOps.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/index.d.ts +2 -2
- package/dist/types/index.d.ts.map +1 -1
- package/package.json +6 -1
package/AGENTS.md
CHANGED
|
@@ -475,7 +475,7 @@ Resilience decorators live on the `agentfootprint/resilience` subpath
|
|
|
475
475
|
(not the main barrel). Each preserves the `LLMProvider` interface and
|
|
476
476
|
stacks freely.
|
|
477
477
|
|
|
478
|
-
### Observability —
|
|
478
|
+
### Observability — 91 typed events across 21 domains
|
|
479
479
|
|
|
480
480
|
```typescript
|
|
481
481
|
agent.on('agentfootprint.context.injected', (e) =>
|
package/CLAUDE.md
CHANGED
|
@@ -51,6 +51,12 @@ Traps: `src/observability/` holds the finder IMPLEMENTATIONS (canonical home; `d
|
|
|
51
51
|
- **Output contract** (7.26, reshaped 8.18.0 — enforcement mounts whenever a parser exists; `retries: 0` = judge-don't-re-ask, retry BRANCH still gated on `retries > 0`; unmet → `scope.outputContractUnmet` + `agent.outputContractUnmet()` + `agentfootprint.agent.output_contract_unmet` + one warn; a pre-chain judge attributes `brokenBy` and STOPS the re-asking when an `act({output})` rewrite broke a passing answer): `.outputSchema(parser, opts)` — `retries>0` mounts the THIRD Route branch (`STAGE_IDS.OUTPUT_RETRY`, same `{loopTo}` as tool-calls) + swaps the decider for `buildEnforcingDecider` (stages/route.ts); `strategy:'tool-forced'` builds the synthetic tool (core/agent/outputEnforcement.ts) that callLLM appends at REQUEST assembly and normalizes back into `content` inside `singleProviderCall` — it never touches the tools slot, the registry or the dispatcher. TWO build refusals (agent has tools; no derivable jsonSchema) + ONE run-start refusal (`provider.carriesForcedToolChoice`; ABSENCE = NO, the opposite of carriesInMessages). A new wire capability = adapters/types.ts + 6 adapters + 3 resilience wrappers (withFallback publishes the AND).
|
|
52
52
|
- **Finder** (context-error localization): conform to `Finder` (observability/contextError/finders/types.ts:92); NO registry by design — one file + barrel line. Pluggable `InfluenceScorer` via `localizeContextBug({scorer})` (lib/context-bisect/localize.ts:340).
|
|
53
53
|
- **New composition/pattern**: extend RunnerBase, expose `getSpec(): FlowChart`, compose others' specs — no engine change.
|
|
54
|
+
- **Identity verifier (9.26.0)**: `IdentityVerifier` = `{ verify(token) → VerifiedIdentity }` (hosting/identityVerification.ts) wired at `standingAgent({ identity: { verify, allowAnonymous? } })`. Runs ONCE at the top of the handler, BEFORE `identityForRequest` composes scope, and its answer is shared by all three doors (turn / artifact / session-op) — a later door cannot be the lenient one. Extraction is `bearerToken(headers)` (the ONE reader; every dialect normalizes onto `authorization: Bearer`). Refusals carry `IdentityFailureClass` and NEVER the token (`sdkFailure` law); a key set that could not be FETCHED is `VerifierUnavailableError`/503, not 401. One adapter: `jwksIdentity` (adapters/identity/jwks.ts) over `jose` (optional peer, ESM-only ⇒ dynamic-import-then-lazyRequire, structural `JoseBackend` seam), mapping by `err.code` STRING not `instanceof` (the classes are not on jose's main entry; codes are pinned by test/adapters/identity/jwks.test.ts against the real package).
|
|
55
|
+
- **Admission policy (9.26.0)**: `AdmissionPolicy` = `{ decide(ctx) → 'allow' | {queue:true} | {refuse} }` (hosting/admission.ts) at `standingAgent({ admission })`, consulted once per turn BEFORE lane selection. Fed by `spendLedger()` — an in-process rolling window keyed by `spendKeyFor(identity)`, filled from `stream.llm_end` (tokens) + `cost.tick` (usd, ABSENT when no pricing table). Turns counted at ADMISSION, not completion. `{queue:true}` threads `queueAnyway` into `serialize` (bypasses the `'reject'` collision check only). Built-in: `turnsPerHour`. Absent ⇒ no ledger, no listeners, zero delta.
|
|
56
|
+
- **Session-history ops (9.26.0)**: a SECOND domain on the wire's `op` field. `hosting/wireOps.ts` is the ONE list (`WIRE_OPS`/`isWireOp`/`refuseUnknownWireOp`); each domain reader DECLINES the other's ops and both raise the same unknown-op refusal, so ordering between `readArtifactWireOp` and `readSessionWireOp` is not load-bearing. `SessionLifecycle` gained OPTIONAL `listByUser?`/`ownerOf?` (feature-detected; absent ⇒ `SessionIndexUnavailableError`, never an empty list). Ownership is DERIVED by `envelopeOwner(envelope)` at persist time — `persist` takes no owner — and WRITE-ONCE in both stores (memory: `!owners.has(id)`; sqlite: `owner = COALESCE(<table>.owner, excluded.owner)` — reversing that argument order transfers sessions by writing). Cross-user transcript = `SessionNotFoundError`, identical to missing. Both ops REQUIRE `identity` configured. **The ORDINARY TURN door asks the same question** (`mayOpenSession` in standingAgent, right after `hydrate` and before the strict readers, covering the `decision`/resume path too): with a verifier configured, `envelopeOwner(stored) === verified?.userId` or the same `SessionNotFoundError` — anything less made the transcript 404 decoration in front of a door that hydrated the same conversation into a model AND re-stamped its owner. No verifier ⇒ the check does not run (zero delta). Consequences stated in the option doc: pre-verification sessions name no owner and cannot be continued at a verifying door, and a refused turn does reveal that an id is taken. sqliteSessions added `owner`/`message_count` columns + an index WITHOUT a schema bump (older readers name their four columns explicitly; `SESSIONS_COLUMNS` stays the original four so a 9.25 file still opens, migrated by ALTER TABLE).
|
|
57
|
+
- **Recordings as artifacts (9.26.0)**: `artifacts: { store, recordings: true | { label } }`. `Agent.startRunRecording()` calls the SAME `recordRun` (before `createExecutor` — `attach()` collects for the executor not yet built); `fileRunRecording` mints AFTER `finalizeResult`, awaited, every failure contained to `artifacts.refused`. Pure half in artifacts/recordingArtifact.ts; payload is the recording's JSON TEXT (a live snapshot handed to an in-process store would be a live view into a finished run). No new wire op — `artifact-get` serves it.
|
|
58
|
+
- **Code staging-in (9.26.0)**: `CodeSession.stageInputs?(inputs) → StagedCodeInput[]` — OPTIONAL, feature-detected via `canStageCodeInputs`, and its contract is TWO promises: the payloads are readable at the returned paths, AND every later `execute` exposes the manifest as `STAGED_INPUTS_ENV` (`AF_STAGED_INPUTS`, `name → path`). `CodeInput.name` is the MANIFEST KEY (the wants arg name, so a static description can name it) and `fileName` is the on-disk name — separate fields so the two cannot drift. `codeRunnerTool({ wants })` composes the schema properties + the description clause and refuses BY NAME on a non-staging runner. Implemented by localCodeRunner only.
|
|
59
|
+
- **Repeated-call nudge (9.26.0)**: `core/agent/repeatedCall.ts` (pure `noteRepeatedCall` + `repeatedCallLedgers()`) + the ONE batch-loop hook in toolCalls. Fingerprints (FNV-1a) of stable-stringified args and the tool's OWN delivered result — never values. **The counters are NOT tracked state**: they live in a bounded run-keyed map held by `buildToolCallsHandler` and keyed by `deps.currentRun().runId`, so a turn that repeats nothing is byte-identical in state, commit log, narrative and recordings (a scope key would have changed all four for every agent that merely upgraded); the repeat itself rides `agentfootprint.tools.repeated_call`, the emit channel per-attempt facts belong on. A resume mints a new runId ⇒ counting restarts. Fires at the SECOND identical landing, once. `AgentOptions.repeatedCallNudge: false` disables (threaded value-conditionally; ON is the default). Deliberately NOT applied on the pause-resume dispatch paths.
|
|
54
60
|
- **Closed seams**: Agent chart internals (AgentChartDeps not exported — extend via injections/tools/memory/thinking, never by adding a ReAct stage); ContextSlot (3 slots fixed); ProviderKind factory; dormant ports with no consumer (ContextSourceAdapter, EmbeddingProvider, RiskDetector — adapters/types.ts only); reserved tool names under selfExplain — 8.16.0 made the list DERIVED: `TRACE_TOOL_NAMES` (traceToolpack.ts, 10 names since 8.17.0: run_overview/find_in_trace/trace_node/trace_slice/backtrack/who_wrote/get_value/inspect_tool_call/inspect_tool_run/read_narrative) is what AgentBuilder.ts:~1560 reserves in inline mode (`explain_run` in delegate mode), so a NEW toolpack tool joins ONE list and the reservation follows — but it must ALSO join the lazy template's mounted set (lazyToolpack builds over `{narrative: [], events: []}` so the catalog shape is fixed at build time) and the count assertion in test/lib/trace-toolpack/selfExplainAgent.test.ts. **8.17.0 `inspect_tool_run`** is the descent THROUGH the tool boundary: `flowchartAsTool({ keepRecord: true })` files each invocation's record in a bounded LRU store (lib/trace-toolpack/innerRunRecords.ts) keyed by the executing `ctx.toolCallId`, riding the `Tool` under the `INNER_RUN_RECORDS` registry symbol; `AgentBuilder.build()` → `collectInnerRuns(registry, injections)` → `SelfExplainSource.getInnerRuns` → `TraceToolpackArtifacts.innerRuns`. The inner views are the pack ITSELF re-run over `openRecording(record.recording)` — do not add a second query implementation. Provider-delivered tools are NOT collected (no build-time list); inner runtimeStageIds are a SEPARATE namespace and only `inspect_tool_run` accepts them.
|
|
55
61
|
|
|
56
62
|
## Change-impact map
|
|
@@ -60,7 +66,7 @@ Traps: `src/observability/` holds the finder IMPLEMENTATIONS (canonical home; `d
|
|
|
60
66
|
- **Embedder fingerprint** (8.9.0) → `Embedder.id` (optional; every shipped embedder sets one, and NONE include dims — the store appends `@<dims>` itself, so an id carrying its own size double-stamps) + `indexDocuments` defaulting `embedderId` to it + `SqliteVectorStore.reconcileFingerprint` (the only comparison site). Rule: dimensions ALWAYS decide, model ids decide only when BOTH sides named themselves — refusing on an absent name would block the majority of callers who never pass `embedderId`.
|
|
61
67
|
- **Retrieval record** (8.8.0) → FOUR stages write one object in sequence: `loadRelevant` (candidates+scores+threshold verdicts) → `pickByBudget` (re-marks admitted→over-budget/over-max-entries) → `formatDefault` (`promptFragment` + `promptPosition`) → the read mount's outputMapper lifts it to root as `retrievalEvidence_<id>`. `memoryRecallInjections` then splits ONE recall into one ActiveInjection PER CHUNK — guarded by a byte-equality check (`fragments.join('\n\n') === systemContent`) that falls back to the single injection rather than change the prompt. `rank` (score order) and `promptPosition` (picker order) are DIFFERENT and both load-bearing: joining fragments in rank order reproduces the right bytes in a sequence the model never saw.
|
|
62
68
|
- **AgentState** → all 8 stages/ files, both builders' mappers, memory-wire STRING-TYPED keys ('runIdentity'/'turnNumber'/… buildAgentChart.ts:177-180 — not refactor-safe), finalizeResult's `reliabilityFail*`/`policyHalt*` reads (rename silently kills the typed errors).
|
|
63
|
-
- **events/** →
|
|
69
|
+
- **events/** → 91 typed events across 21 domains (counts anti-drift-tested against this file — update BOTH when adding events): ALL_EVENT_TYPES exhaustiveness tests, DomainWildcard hand-list, ~42 importers (recorders, strategies, stream, commentary).
|
|
64
70
|
- **adapters/types.ts LLMMessage/LLMRequest** → 62 importers: tool_use round-trip (toolCalls.ts:115-135), wire assembly (callLLM.ts:150-160), providers, cache strategies, security/extractSequence, reliability loop.
|
|
65
71
|
- **Cache** → strategy registration is a MODULE SIDE EFFECT (src/index.ts:15-17); an entry point skipping that import silently falls back to NoOp. Resolved once per Agent at construction (Agent.ts:347).
|
|
66
72
|
- **Injection engine eval semantics** → Evaluate stage cursor keystone (buildInjectionEngineSubflow.ts:214-222), Route stage MIRRORS slot filters (keep in sync with buildSystemPromptSlot), read_skill gate (toolCalls.ts:747). The gate's allowed set is TWO kinds of id (8.4.0): a HOP (`deps.allowedSkillIds` = `graph.reachableSkills(cursor)` — activates AND moves the cursor) ∪ an OPEN skill (`deps.openSkillIds` = `Agent.openSkillIds()`, Agent.ts:1052 — a registered skill whose trigger is `llm-activated` AND that the graph declares no incoming edge to; activates, never moves the cursor). Both clauses are load-bearing: the trigger test is "read_skill can really activate this", the edge test keeps a bare model edge `.route(a,m)` from-gated. **8.5.0** extends the SAME trigger test three ways: a decision `tree()` returns `[]` from `reachableSkills` (leaves compile to `rule` triggers, so a pick could only be accepted then dropped — the gate refuses with a tree-specific message, `deps.skillGraphIsTree`, derived in AgentBuilder from `graph.nodes.some(kind==='predicate')`); `surfaceMode:'tool-only'` is refused at agent build for any skill whose trigger is not `llm-activated` (skillBodyDelivery.ts — the read_skill tool result is the only channel that mode has, and the graph never calls read_skill); and `read_skill`'s DESCRIPTION is rebuilt per iteration from `reachableSkills(cursor) ∪ open` (Agent.readSkillOfferFor → buildToolsSlot's `readSkillFor`). **The read_skill ENUM must stay the full catalog** — `toolArgValidation` defaults to `'enforce'` and runs at toolCalls.ts:570, BEFORE the gate at :765, and sets `error = true` which the gate skips; narrowing the enum silently retires the teaching refusal, `skill.rejected`, routeRecorder's rejection hops and the rejected-cap governor.
|
|
@@ -48,6 +48,7 @@
|
|
|
48
48
|
*/
|
|
49
49
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
50
50
|
exports.localCodeRunner = void 0;
|
|
51
|
+
const types_js_1 = require("../types.js");
|
|
51
52
|
const lazyRequire_js_1 = require("../../lib/lazyRequire.js");
|
|
52
53
|
const DEFAULT_TIMEOUT_MS = 30_000;
|
|
53
54
|
const DEFAULT_MAX_OUTPUT_CHARS = 8_000;
|
|
@@ -76,6 +77,13 @@ function localCodeRunner(options = {}) {
|
|
|
76
77
|
// `codeRunnerTool` states this in the tool description it hands the model.
|
|
77
78
|
const sessionId = `local:${req.key}`;
|
|
78
79
|
let stopped = false;
|
|
80
|
+
/** The session's staging directory, created on the FIRST `stageInputs`
|
|
81
|
+
* and released by `stop()`. Absent until then, which is what keeps a
|
|
82
|
+
* session that never stages byte-identical to every earlier release —
|
|
83
|
+
* no directory, no environment variable, no filesystem module loaded. */
|
|
84
|
+
let stagingDir;
|
|
85
|
+
/** name → path, exactly as the manifest carries it. */
|
|
86
|
+
const staged = new Map();
|
|
79
87
|
return Promise.resolve({
|
|
80
88
|
id: sessionId,
|
|
81
89
|
async execute(exec) {
|
|
@@ -94,7 +102,19 @@ function localCodeRunner(options = {}) {
|
|
|
94
102
|
cwd: options.cwd ?? process.cwd(),
|
|
95
103
|
// ALLOWLIST. `process.env` is deliberately NOT spread in — only
|
|
96
104
|
// PATH, so the OS can find the interpreter, and it is overridable.
|
|
97
|
-
|
|
105
|
+
//
|
|
106
|
+
// The staged-input manifest joins it LAST and is not overridable:
|
|
107
|
+
// it is not configuration, it is a fact about this execution, and
|
|
108
|
+
// an operator `env` that happened to define the same name would
|
|
109
|
+
// otherwise hand the model paths to files that are not there.
|
|
110
|
+
// Absent entirely when nothing was staged.
|
|
111
|
+
env: {
|
|
112
|
+
PATH: process.env.PATH ?? '',
|
|
113
|
+
...(options.env ?? {}),
|
|
114
|
+
...(staged.size > 0 && {
|
|
115
|
+
[types_js_1.STAGED_INPUTS_ENV]: JSON.stringify(Object.fromEntries(staged)),
|
|
116
|
+
}),
|
|
117
|
+
},
|
|
98
118
|
timeoutMs: exec.timeoutMs ?? timeoutMs,
|
|
99
119
|
...(exec.signal && { signal: exec.signal }),
|
|
100
120
|
});
|
|
@@ -117,11 +137,48 @@ function localCodeRunner(options = {}) {
|
|
|
117
137
|
...(Object.keys(truncated).length > 0 && { truncated }),
|
|
118
138
|
};
|
|
119
139
|
},
|
|
140
|
+
// eslint-disable-next-line @typescript-eslint/require-await
|
|
141
|
+
async stageInputs(inputs) {
|
|
142
|
+
if (stopped) {
|
|
143
|
+
throw new Error(`localCodeRunner: session ${sessionId} was stopped; open a new one to stage inputs.`);
|
|
144
|
+
}
|
|
145
|
+
const fs = resolveFs(options);
|
|
146
|
+
const landed = [];
|
|
147
|
+
stagingDir ??= makeStagingDir(fs, options._stagingRoot);
|
|
148
|
+
for (const input of inputs) {
|
|
149
|
+
// The name is CALLER data landing in a filesystem, so it is
|
|
150
|
+
// reduced to a single inert segment here rather than trusted: a
|
|
151
|
+
// name of '../../etc/passwd' becomes a literal file name, and the
|
|
152
|
+
// manifest still keys it by what was asked for.
|
|
153
|
+
const fileName = safeFileName(input.fileName ?? input.name);
|
|
154
|
+
const path = `${stagingDir}/${fileName}`;
|
|
155
|
+
const bytes = typeof input.data === 'string'
|
|
156
|
+
? Buffer.byteLength(input.data, 'utf8')
|
|
157
|
+
: input.data.byteLength;
|
|
158
|
+
writeFile(fs, path, input.data);
|
|
159
|
+
staged.set(input.name, path);
|
|
160
|
+
landed.push({ name: input.name, path, bytes });
|
|
161
|
+
}
|
|
162
|
+
return landed;
|
|
163
|
+
},
|
|
120
164
|
stop() {
|
|
121
|
-
// Nothing to release: each execution already ended with its process.
|
|
122
165
|
// Idempotent, and it refuses later executions rather than silently
|
|
123
166
|
// starting a fresh process under a session the caller closed.
|
|
124
167
|
stopped = true;
|
|
168
|
+
// Staged inputs live as long as the session, and this is the end of
|
|
169
|
+
// it. Failure is swallowed: a temp directory that could not be
|
|
170
|
+
// removed is a tidiness problem, and turning it into a thrown
|
|
171
|
+
// teardown would fail a turn that already succeeded.
|
|
172
|
+
if (stagingDir !== undefined) {
|
|
173
|
+
try {
|
|
174
|
+
resolveFs(options).rmSync?.(stagingDir, { recursive: true, force: true });
|
|
175
|
+
}
|
|
176
|
+
catch {
|
|
177
|
+
// See above.
|
|
178
|
+
}
|
|
179
|
+
stagingDir = undefined;
|
|
180
|
+
staged.clear();
|
|
181
|
+
}
|
|
125
182
|
return Promise.resolve();
|
|
126
183
|
},
|
|
127
184
|
});
|
|
@@ -129,6 +186,49 @@ function localCodeRunner(options = {}) {
|
|
|
129
186
|
};
|
|
130
187
|
}
|
|
131
188
|
exports.localCodeRunner = localCodeRunner;
|
|
189
|
+
/** `node:fs`, or a refusal naming what staging needs. Lazy for the same reason
|
|
190
|
+
* `node:child_process` is: a browser bundle that never stages must not pay
|
|
191
|
+
* for a module it cannot have. */
|
|
192
|
+
function resolveFs(options) {
|
|
193
|
+
if (options._fs)
|
|
194
|
+
return options._fs;
|
|
195
|
+
try {
|
|
196
|
+
return (0, lazyRequire_js_1.lazyRequire)('node:fs');
|
|
197
|
+
}
|
|
198
|
+
catch {
|
|
199
|
+
throw new Error('localCodeRunner: staging inputs needs `node:fs`, which this runtime does not provide ' +
|
|
200
|
+
'(a browser bundle, or a restricted worker). Use a runner whose backend can write ' +
|
|
201
|
+
'into its own session, or drop the tool’s `wants` declaration.');
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
/** One private directory per session, under the OS temp root. */
|
|
205
|
+
function makeStagingDir(fs, root) {
|
|
206
|
+
const mkdtempSync = fs.mkdtempSync;
|
|
207
|
+
if (typeof mkdtempSync !== 'function') {
|
|
208
|
+
throw new Error('localCodeRunner: `node:fs` resolved but `mkdtempSync` is missing.');
|
|
209
|
+
}
|
|
210
|
+
const base = root ?? (0, lazyRequire_js_1.lazyRequire)('node:os').tmpdir();
|
|
211
|
+
return mkdtempSync(`${base}/af-code-`);
|
|
212
|
+
}
|
|
213
|
+
function writeFile(fs, path, data) {
|
|
214
|
+
const writeFileSync = fs.writeFileSync;
|
|
215
|
+
if (typeof writeFileSync !== 'function') {
|
|
216
|
+
throw new Error('localCodeRunner: `node:fs` resolved but `writeFileSync` is missing.');
|
|
217
|
+
}
|
|
218
|
+
writeFileSync(path, data);
|
|
219
|
+
}
|
|
220
|
+
/**
|
|
221
|
+
* One caller-supplied name → one inert file-name segment.
|
|
222
|
+
*
|
|
223
|
+
* Separators and dots are replaced rather than stripped, so `..` cannot
|
|
224
|
+
* survive as a parent hop and `a/b` cannot become two segments — the same law
|
|
225
|
+
* `artifacts/scopePath` states for scope tuples, applied to the one other
|
|
226
|
+
* place caller strings become file names in this package.
|
|
227
|
+
*/
|
|
228
|
+
function safeFileName(raw) {
|
|
229
|
+
const cleaned = raw.replace(/[^A-Za-z0-9._-]/g, '_').replace(/\.{2,}/g, '_');
|
|
230
|
+
return cleaned.length > 0 ? cleaned.slice(0, 120) : 'input';
|
|
231
|
+
}
|
|
132
232
|
function resolveChildProcess(options) {
|
|
133
233
|
if (options._childProcess)
|
|
134
234
|
return options._childProcess;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"local.js","sourceRoot":"","sources":["../../../src/adapters/code/local.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8CG;;;AAGH,6DAAuD;
|
|
1
|
+
{"version":3,"file":"local.js","sourceRoot":"","sources":["../../../src/adapters/code/local.ts"],"names":[],"mappings":"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"}
|
|
@@ -97,6 +97,7 @@ var __importStar = (this && this.__importStar) || function (mod) {
|
|
|
97
97
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
98
98
|
exports.agentCoreSessions = exports.DEFAULT_SESSION_STORAGE_PATH = exports.agentCoreRuntimeHost = exports.readAgentCoreConversation = exports.agentCoreRuntimeWire = void 0;
|
|
99
99
|
const artifactWire_js_1 = require("../../hosting/artifactWire.js");
|
|
100
|
+
const sessionWire_js_1 = require("../../hosting/sessionWire.js");
|
|
100
101
|
const envelope_js_1 = require("../../hosting/envelope.js");
|
|
101
102
|
const httpHost_js_1 = require("../../hosting/httpHost.js");
|
|
102
103
|
const lazyRequire_js_1 = require("../../lib/lazyRequire.js");
|
|
@@ -237,12 +238,19 @@ function agentCoreRuntimeWire(busy) {
|
|
|
237
238
|
// `{ op, ref }` grammar reads here exactly as it does on `jsonWire`,
|
|
238
239
|
// and a screen behind this runtime redeems tickets the same way.
|
|
239
240
|
const artifact = (0, artifactWire_js_1.readArtifactWireOp)(facts.body);
|
|
241
|
+
// The session-history operations (9.26.0). Same reasoning as the
|
|
242
|
+
// artifact ops one line up: the runtime passes the payload through
|
|
243
|
+
// verbatim, so the shared grammar reads here exactly as it does on
|
|
244
|
+
// `jsonWire`, and a sidebar behind this runtime lists conversations the
|
|
245
|
+
// same way.
|
|
246
|
+
const session = (0, sessionWire_js_1.readSessionWireOp)(facts.body);
|
|
240
247
|
return {
|
|
241
248
|
input,
|
|
242
249
|
...(sessionId !== undefined && { sessionId }),
|
|
243
250
|
...(userId !== undefined && { userId }),
|
|
244
251
|
...(decision !== undefined && { decision }),
|
|
245
252
|
...(artifact !== undefined && { artifact }),
|
|
253
|
+
...(session !== undefined && { session }),
|
|
246
254
|
};
|
|
247
255
|
},
|
|
248
256
|
// The runtime polls this to decide whether the container is ready and
|
|
@@ -266,6 +274,9 @@ function agentCoreRuntimeWire(busy) {
|
|
|
266
274
|
// A resolved claim ticket: the standard body, plus this dialect's own
|
|
267
275
|
// `status` beside it — the same envelope rule its other replies follow.
|
|
268
276
|
artifact: (result) => ({ ...(0, artifactWire_js_1.artifactWireBody)(result), status: 'success' }),
|
|
277
|
+
// Resolved session history, in this dialect's own envelope — the same
|
|
278
|
+
// spread-and-add rule its other replies follow.
|
|
279
|
+
sessions: (result) => ({ ...(0, sessionWire_js_1.sessionWireBody)(result), status: 'success' }),
|
|
269
280
|
readConversation: readAgentCoreConversation,
|
|
270
281
|
};
|
|
271
282
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agentcore.js","sourceRoot":"","sources":["../../../src/adapters/hosting/agentcore.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuEG;;;;;;;;;;;;;;;;;;;;;;;;;;AAEH,mEAAqF;AACrF,2DAA0D;AAC1D,2DAAkE;AASlE,6DAAuD;AAEvD,wEAAwE;AAExE,MAAM,SAAS,GAAG,sBAAsB,CAAC;AAEzC,wFAAwF;AACxF,MAAM,WAAW,GAAG,cAAc,CAAC;AACnC,MAAM,WAAW,GAAG,OAAO,CAAC;AAC5B,MAAM,iBAAiB,GAAG,KAAK,CAAC;AAChC,MAAM,YAAY,GAAG,IAAI,CAAC;AAC1B;;;;GAIG;AACH,MAAM,cAAc,GAAG,6CAA6C,CAAC;AACrE;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,MAAM,WAAW,GAAG,0CAA0C,CAAC;AAC/D;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,mBAAmB,GAAG,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAW,CAAC;AAChF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0CG;AACH,MAAM,kBAAkB,GAAG,8BAA8B,CAAC;AAqF1D;;;;;;GAMG;AACH,SAAgB,oBAAoB,CAAC,IAAoB;IACvD,OAAO;QACL,WAAW,CAAC,KAAuB;YACjC,qEAAqE;YACrE,0EAA0E;YAC1E,wEAAwE;YACxE,0EAA0E;YAC1E,yDAAyD;YACzD,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,IAAI,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC;YACrD,MAAM,KAAK,GAAG,OAAO,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;YACvD,oEAAoE;YACpE,0EAA0E;YAC1E,aAAa;YACb,MAAM,SAAS,GAAG,IAAA,yBAAW,EAAC,KAAK,EAAE,cAAc,CAAC,CAAC;YACrD,wEAAwE;YACxE,yEAAyE;YACzE,uEAAuE;YACvE,wEAAwE;YACxE,qDAAqD;YACrD,MAAM,MAAM,GAAG,IAAA,yBAAW,EAAC,KAAK,EAAE,WAAW,CAAC,CAAC;YAC/C,qEAAqE;YACrE,yEAAyE;YACzE,sEAAsE;YACtE,yBAAyB;YACzB,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC;YACrC,wEAAwE;YACxE,iEAAiE;YACjE,qEAAqE;YACrE,iEAAiE;YACjE,MAAM,QAAQ,GAAG,IAAA,oCAAkB,EAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAChD,OAAO;gBACL,KAAK;gBACL,GAAG,CAAC,SAAS,KAAK,SAAS,IAAI,EAAE,SAAS,EAAE,CAAC;gBAC7C,GAAG,CAAC,MAAM,KAAK,SAAS,IAAI,EAAE,MAAM,EAAE,CAAC;gBACvC,GAAG,CAAC,QAAQ,KAAK,SAAS,IAAI,EAAE,QAAQ,EAAE,CAAC;gBAC3C,GAAG,CAAC,QAAQ,KAAK,SAAS,IAAI,EAAE,QAAQ,EAAE,CAAC;aAC5C,CAAC;QACJ,CAAC;QACD,sEAAsE;QACtE,uEAAuE;QACvE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC;YACb,MAAM,EAAE,IAAI,EAAE,EAAE,KAAK,IAAI,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,SAAS;YACrD,mBAAmB,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC;SACnD,CAAC;QACF,MAAM,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;QACvD,0EAA0E;QAC1E,gDAAgD;QAChD,OAAO,EAAE,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,CAAC,IAAI,KAAK,SAAS,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;QAC3F,sEAAsE;QACtE,qEAAqE;QACrE,8BAA8B;QAC9B,KAAK,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC;QAC7B,yEAAyE;QACzE,wEAAwE;QACxE,0EAA0E;QAC1E,QAAQ,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC;QAClE,sEAAsE;QACtE,wEAAwE;QACxE,QAAQ,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,IAAA,kCAAgB,EAAC,MAAM,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;QAC1E,gBAAgB,EAAE,yBAAyB;KAC5C,CAAC;AACJ,CAAC;AA7DD,oDA6DC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AACH,SAAgB,yBAAyB,CAAC,KAAqB;IAC7D,MAAM,SAAS,GACb,IAAA,yBAAW,EAAC,KAAK,EAAE,cAAc,CAAC,IAAI,UAAU,CAAC,KAAK,EAAE,cAAc,EAAE,WAAW,CAAC,CAAC;IACvF,MAAM,OAAO,GAAG,sBAAsB,CAAC,KAAK,CAAC,OAAO,CAAC,wBAAwB,CAAC,CAAC,CAAC;IAChF,OAAO;QACL,GAAG,CAAC,SAAS,KAAK,SAAS,IAAI,EAAE,SAAS,EAAE,CAAC;QAC7C,GAAG,CAAC,OAAO,KAAK,SAAS,IAAI;YAC3B,OAAO,EAAE,EAAE,aAAa,EAAE,UAAU,OAAO,CAAC,KAAK,EAAE,EAAE;YACrD,yEAAyE;YACzE,yEAAyE;YACzE,oEAAoE;YACpE,yEAAyE;YACzE,gBAAgB;YAChB,QAAQ,EAAE,OAAO,CAAC,IAAI;SACvB,CAAC;KACH,CAAC;AACJ,CAAC;AAhBD,8DAgBC;AAED,6EAA6E;AAC7E,SAAS,UAAU,CAAC,KAAqB,EAAE,GAAG,KAAe;IAC3D,MAAM,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;IACvD,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,CAAC;QACjD,IAAI,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC;YAAE,OAAO,KAAK,CAAC;IAC3E,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;;;;;;GAOG;AACH,SAAS,sBAAsB,CAC7B,OAA2B;IAE3B,IAAI,CAAC,OAAO;QAAE,OAAO,SAAS,CAAC;IAC/B,MAAM,KAAK,GAAG,OAAO;SAClB,KAAK,CAAC,GAAG,CAAC;SACV,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;SAC1B,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAErC,MAAM,MAAM,GAAG,kBAAkB,CAAC,WAAW,EAAE,CAAC;IAChD,MAAM,MAAM,GAAG,GAAG,MAAM,GAAG,CAAC;IAC5B,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC;IAC3E,IAAI,MAAM,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IAE3C,0EAA0E;IAC1E,6EAA6E;IAC7E,wEAAwE;IACxE,kFAAkF;IAClF,8EAA8E;IAC9E,6EAA6E;IAC7E,0DAA0D;IAC1D,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,MAAM,CAAC,CAAC;IACrE,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;QAC3B,MAAM,IAAI,KAAK,CACb,MAAM,kBAAkB,gDAAgD;YACtE,IAAI,kBAAkB,8DAA8D;YACpF,mFAAmF;YACnF,uCAAuC,kBAAkB,uBAAuB;YAChF,IAAI,kBAAkB,IAAI,CAC7B,CAAC;IACJ,CAAC;IAED,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAC5C,OAAO,EAAE,KAAK,EAAE,oBAAoB,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;AAClE,CAAC;AAED;;;;;;;;GAQG;AACH,SAAS,oBAAoB,CAAC,OAAe;IAC3C,MAAM,MAAM,GAAG,CAAC,GAAW,EAAS,EAAE;QACpC,MAAM,IAAI,KAAK,CACb,QAAQ,kBAAkB,sDAAsD;YAC9E,mCAAmC,GAAG,iDAAiD;YACvF,6EAA6E,CAChF,CAAC;IACJ,CAAC,CAAC;IAEF,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,MAAM,CAAC,aAAa,CAAC,CAAC;IAChD,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,OAAO,CAAC;QAAE,MAAM,CAAC,qCAAqC,CAAC,CAAC;IAErF,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;IAChD,IAAI,KAAK,CAAC,QAAQ,CAAC,WAAW,CAAC,KAAK,OAAO;QAAE,MAAM,CAAC,mCAAmC,CAAC,CAAC;IAEzF,MAAM,KAAK,GAAG,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IACrC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,MAAM,CAAC,uBAAuB,CAAC,CAAC;IACxD,yEAAyE;IACzE,4EAA4E;IAC5E,gCAAgC;IAChC,4CAA4C;IAC5C,IAAI,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC;QAAE,MAAM,CAAC,iDAAiD,CAAC,CAAC;IAE7F,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,SAAgB,oBAAoB,CAAC,UAAuC,EAAE;IAC5E,OAAO,IAAA,sBAAQ,EAAC;QACd,IAAI,EAAE,SAAS;QACf,IAAI,EAAE,oBAAoB,CAAC,OAAO,CAAC,IAAI,CAAC;QACxC,UAAU,EAAE,WAAW;QACvB,UAAU,EAAE,WAAW;QACvB,gBAAgB,EAAE,OAAO,CAAC,gBAAgB,IAAI,iBAAiB;QAC/D,kBAAkB,EAAE,mBAAmB;QACvC,wEAAwE;QACxE,sEAAsE;QACtE,2EAA2E;QAC3E,4EAA4E;QAC5E,uCAAuC;QACvC,GAAG,CAAC,OAAO,CAAC,MAAM,KAAK,SAAS;YAC9B,CAAC,CAAC;gBACE,MAAM,EAAE,OAAO,CAAC,MAAM;gBACtB,GAAG,CAAC,OAAO,CAAC,IAAI,KAAK,SAAS,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC;gBACzD,GAAG,CAAC,OAAO,CAAC,QAAQ,KAAK,SAAS,IAAI,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,CAAC;aACtE;YACH,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,IAAI,YAAY,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,IAAI,SAAS,EAAE,CAAC;QACpF,4EAA4E;QAC5E,2EAA2E;QAC3E,OAAO;QACP,GAAG,CAAC,OAAO,CAAC,WAAW,KAAK,SAAS,IAAI,EAAE,WAAW,EAAE,OAAO,CAAC,WAAW,EAAE,CAAC;KAC/E,CAAC,CAAC;AACL,CAAC;AAzBD,oDAyBC;AAoBD,+DAA+D;AAClD,QAAA,4BAA4B,GAAG,wBAAwB,CAAC;AAuFrE;;;;;;;;;;;;;;;;;GAiBG;AACH,SAAgB,iBAAiB,CAAC,OAAiC;IACjE,OAAO,OAAO,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;AAC3F,CAAC;AAFD,8CAEC;AASD,SAAS,YAAY,CAAC,OAAqC;IACzD,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,IAAI,oCAA4B,CAAC;IAE1D,KAAK,UAAU,QAAQ;QACrB,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,GAAG,wDAAa,kBAAkB,GAAC,CAAC;QAC5D,IAAI,GAAW,CAAC;QAChB,IAAI,CAAC;YACH,GAAG,GAAG,MAAM,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QACjC,CAAC;QAAC,MAAM,CAAC;YACP,iEAAiE;YACjE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC;QACtC,CAAC;QACD,IAAI,MAAe,CAAC;QACpB,IAAI,CAAC;YACH,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC3B,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,IAAI,SAAS,CACjB,kCAAkC,IAAI,kBAAmB,GAAa,CAAC,OAAO,KAAK;gBACjF,mFAAmF;gBACnF,iDAAiD,CACpD,CAAC;QACJ,CAAC;QACD,MAAM,QAAQ,GAAI,MAAsC,EAAE,QAAQ,CAAC;QACnE,OAAO,QAAQ,IAAI,OAAO,QAAQ,KAAK,QAAQ;YAC7C,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,QAAQ,EAAE,QAA8C,EAAE;YAC1E,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC;IACnC,CAAC;IAED,OAAO;QACL,KAAK,CAAC,OAAO,CAAC,SAAiB;YAC7B,MAAM,IAAI,GAAG,MAAM,QAAQ,EAAE,CAAC;YAC9B,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;YACxC,IAAI,MAAM,KAAK,SAAS;gBAAE,OAAO,SAAS,CAAC;YAC3C,uEAAuE;YACvE,uEAAuE;YACvE,qEAAqE;YACrE,mEAAmE;YACnE,iDAAiD;YACjD,OAAO,IAAA,2BAAa,EAAC,MAAM,EAAE,SAAS,CAAC,CAAC;QAC1C,CAAC;QACD,KAAK,CAAC,OAAO,CAAC,SAAiB,EAAE,QAA4B;YAC3D,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,wDAAa,kBAAkB,GAAC,CAAC;YACtE,MAAM,EAAE,OAAO,EAAE,GAAG,wDAAa,WAAW,GAAC,CAAC;YAC9C,MAAM,IAAI,GAAG,MAAM,QAAQ,EAAE,CAAC;YAC9B,MAAM,IAAI,GAAgB;gBACxB,OAAO,EAAE,CAAC;gBACV,QAAQ,EAAE,EAAE,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC,SAAS,CAAC,EAAE,QAAQ,EAAE;aACtD,CAAC;YACF,MAAM,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;YACvE,sEAAsE;YACtE,0EAA0E;YAC1E,MAAM,SAAS,GAAG,GAAG,IAAI,IAAI,OAAO,CAAC,GAAG,MAAM,CAAC;YAC/C,MAAM,SAAS,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,CAAC;YACzD,MAAM,MAAM,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;QAChC,CAAC;KACF,CAAC;AACJ,CAAC;AAED,wEAAwE;AAExE,MAAM,gBAAgB,GAAG,oBAAoB,CAAC;AAE9C,SAAS,mBAAmB,CAAC,OAAuC;IAClE,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;QACtB,MAAM,IAAI,KAAK,CAAC,6DAA6D,CAAC,CAAC;IACjF,CAAC;IACD,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;IAClC,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,gBAAgB,CAAC;IACpD,MAAM,MAAM,GACV,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,MAAM,IAAI,mBAAmB,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;IAEzF,OAAO;QACL,KAAK,CAAC,OAAO,CAAC,SAAiB;YAC7B,wEAAwE;YACxE,wEAAwE;YACxE,yEAAyE;YACzE,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,UAAU,CAAC;gBACnC,QAAQ;gBACR,OAAO;gBACP,SAAS,EAAE,aAAa,CAAC,SAAS,CAAC;gBACnC,UAAU,EAAE,CAAC;aACd,CAAC,CAAC;YACH,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YAC9B,0EAA0E;YAC1E,0EAA0E;YAC1E,yEAAyE;YACzE,uEAAuE;YACvE,2DAA2D;YAC3D,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,QAAQ,KAAK,IAAI,IAAI,MAAM,CAAC,QAAQ,KAAK,SAAS;gBAAE,OAAO,SAAS,CAAC;YAC3F,yEAAyE;YACzE,yEAAyE;YACzE,gEAAgE;YAChE,uEAAuE;YACvE,OAAO,IAAA,2BAAa,EAAC,UAAU,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,SAAS,CAAC,CAAC;QAC/D,CAAC;QACD,KAAK,CAAC,OAAO,CAAC,SAAiB,EAAE,QAA4B;YAC3D,MAAM,MAAM,CAAC,WAAW,CAAC;gBACvB,QAAQ;gBACR,OAAO;gBACP,SAAS,EAAE,aAAa,CAAC,SAAS,CAAC;gBACnC,QAAQ;aACT,CAAC,CAAC;QACL,CAAC;KACF,CAAC;AACJ,CAAC;AAED,MAAM,cAAc,GAAG,EAAE,CAAC;AAE1B,sFAAsF;AACtF,SAAS,aAAa,CAAC,GAAW;IAChC,MAAM,IAAI,GAAG,GAAG,CAAC,OAAO,CAAC,iBAAiB,EAAE,GAAG,CAAC,CAAC;IACjD,IAAI,IAAI,CAAC,MAAM,IAAI,cAAc;QAAE,OAAO,IAAI,CAAC;IAC/C,yEAAyE;IACzE,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,cAAc,GAAG,CAAC,CAAC,IAAI,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;AAC9D,CAAC;AAED,SAAS,KAAK,CAAC,CAAS;IACtB,IAAI,CAAC,GAAG,UAAU,CAAC;IACnB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAClC,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;QACrB,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC;IAC/B,CAAC;IACD,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AAChC,CAAC;AAWD;;;;;;;;;;;;;GAaG;AACH,SAAS,UAAU,CAAC,IAAa;IAC/B,IAAI,OAAO,IAAI,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC;IAC1C,IAAI,CAAC;QACH,MAAM,MAAM,GAAY,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACzC,yEAAyE;QACzE,6DAA6D;QAC7D,OAAO,MAAM,KAAK,IAAI,IAAI,OAAO,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC;IACvE,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,gFAAgF;AAChF,SAAS,mBAAmB,CAAC,OAAgB;IAC3C,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC;QAAE,OAAO,IAAI,CAAC;IACzC,KAAK,MAAM,IAAI,IAAI,OAAO,EAAE,CAAC;QAC3B,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,CAAC,CAAC,MAAM,IAAI,IAAI,CAAC;YAAE,SAAS;QACrE,MAAM,IAAI,GAAI,IAA2B,CAAC,IAAI,CAAC;QAC/C,oEAAoE;QACpE,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,SAAS;YAAE,SAAS;QAClD,OAAO,UAAU,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;GAIG;AACH,SAAS,mBAAmB,CAC1B,MAA0B,EAC1B,QAA2C;IAE3C,IAAI,GAAqC,CAAC;IAC1C,IAAI,QAAQ,EAAE,CAAC;QACb,GAAG,GAAG,QAAQ,CAAC;IACjB,CAAC;SAAM,CAAC;QACN,IAAI,CAAC;YACH,GAAG,GAAG,IAAA,4BAAW,EAAmC,mCAAmC,CAAC,CAAC;QAC3F,CAAC;QAAC,MAAM,CAAC;YACP,MAAM,IAAI,KAAK,CACb,sDAAsD;gBACpD,wDAAwD;gBACxD,6DAA6D;gBAC7D,mEAAmE,CACtE,CAAC;QACJ,CAAC;IACH,CAAC;IACD,IAAI,CAAC,GAAG,CAAC,sBAAsB,EAAE,CAAC;QAChC,MAAM,IAAI,KAAK,CACb,0EAA0E;YACxE,yDAAyD,CAC5D,CAAC;IACJ,CAAC;IACD,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,sBAAsB,CAAC,EAAE,GAAG,CAAC,MAAM,IAAI,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC;IAE1E,MAAM,IAAI,GAAG,KAAK,EAChB,IAAmD,EACnD,IAAY,EACZ,KAAc,EACI,EAAE;QACpB,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,MAAM,IAAI,KAAK,CACb,uEAAuE,IAAI,oBAAoB,CAChG,CAAC;QACJ,CAAC;QACD,OAAO,GAAG,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;IACnC,CAAC,CAAC;IAEF,OAAO;QACL,KAAK,CAAC,WAAW,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE;YAC1D,MAAM,IAAI,CAAC,GAAG,CAAC,kBAAkB,EAAE,oBAAoB,EAAE;gBACvD,QAAQ;gBACR,OAAO;gBACP,SAAS;gBACT,cAAc,EAAE,IAAI,IAAI,EAAE;gBAC1B,qEAAqE;gBACrE,iEAAiE;gBACjE,oEAAoE;gBACpE,sEAAsE;gBACtE,wEAAwE;gBACxE,uEAAuE;gBACvE,yEAAyE;gBACzE,8DAA8D;gBAC9D,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,CAAC;aAC9C,CAAC,CAAC;QACL,CAAC;QACD,KAAK,CAAC,UAAU,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE;YAC3D,MAAM,MAAM,GAAG,CAAC,MAAM,IAAI,CAAC,GAAG,CAAC,iBAAiB,EAAE,mBAAmB,EAAE;gBACrE,QAAQ;gBACR,OAAO;gBACP,SAAS;gBACT,eAAe,EAAE,IAAI;gBACrB,GAAG,CAAC,UAAU,KAAK,SAAS,IAAI,EAAE,UAAU,EAAE,CAAC;aAChD,CAAC,CAA+E,CAAC;YAClF,MAAM,MAAM,GAA4B,CAAC,MAAM,EAAE,MAAM,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;gBAC7E,OAAO,EAAE,KAAK,CAAC,OAAO,IAAI,EAAE;gBAC5B,QAAQ,EAAE,mBAAmB,CAAC,KAAK,CAAC,OAAO,CAAC;aAC7C,CAAC,CAAC,CAAC;YACJ,OAAO,EAAE,MAAM,EAAE,CAAC;QACpB,CAAC;KACF,CAAC;AACJ,CAAC"}
|
|
1
|
+
{"version":3,"file":"agentcore.js","sourceRoot":"","sources":["../../../src/adapters/hosting/agentcore.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,277 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* jwksIdentity — verify the caller's bearer token against a published key set.
|
|
4
|
+
*
|
|
5
|
+
* Pattern: Adapter (GoF) over `jose`, behind the vendor-neutral
|
|
6
|
+
* {@link IdentityVerifier} port.
|
|
7
|
+
* Role: the ONE identity verifier this release ships. It covers cloud IdPs
|
|
8
|
+
* and on-prem ones with the same code, because JWKS is the same
|
|
9
|
+
* protocol in both: a URL that publishes signing keys, and tokens
|
|
10
|
+
* signed by one of them.
|
|
11
|
+
* Emits: nothing. The door that called it reports the refusal — by CLASS.
|
|
12
|
+
*
|
|
13
|
+
* ── What it checks, and what it refuses to pretend to check ─────────────────
|
|
14
|
+
* Signature (against the key the token's `kid` names, fetched and cached from
|
|
15
|
+
* `jwksUrl`), `iss`, `aud`, `exp` and `nbf`. That is the whole list, and it is
|
|
16
|
+
* the whole list on purpose:
|
|
17
|
+
*
|
|
18
|
+
* • **It is not an authorization decision.** A verified token proves WHO, not
|
|
19
|
+
* WHAT-THEY-MAY-DO. Roles and claims come back on the result so your own
|
|
20
|
+
* policy can decide; this adapter never reads them.
|
|
21
|
+
* • **It does not check revocation.** A JWT is valid until it expires, and no
|
|
22
|
+
* amount of key fetching changes that. Short lifetimes are the answer; an
|
|
23
|
+
* adapter that implied otherwise would be selling a guarantee the protocol
|
|
24
|
+
* does not make.
|
|
25
|
+
* • **`alg: none` cannot get through**, because a JWKS resolver has no key for
|
|
26
|
+
* it — verified against the real library rather than assumed (see the pin
|
|
27
|
+
* test). Neither can a token signed with an algorithm outside `algorithms`.
|
|
28
|
+
*
|
|
29
|
+
* ── The token never comes back out ──────────────────────────────────────────
|
|
30
|
+
* Every failure is re-raised as {@link IdentityNotVerifiedError} carrying only
|
|
31
|
+
* the CLASS — `expired`, `wrong-audience`, `wrong-issuer`, `not-yet-valid`,
|
|
32
|
+
* `unverifiable`. The library's own message is dropped, and the original is
|
|
33
|
+
* deliberately NOT attached as `cause`: a cause travels into every serializer
|
|
34
|
+
* that walks own properties, and one `JSON.stringify` would undo all of this.
|
|
35
|
+
* (The `sdkFailure` law, applied to a credential rather than to a cloud SDK.)
|
|
36
|
+
*
|
|
37
|
+
* A key set this adapter could not FETCH is a different fact and gets a
|
|
38
|
+
* different class: {@link VerifierUnavailableError}, which the host answers 503
|
|
39
|
+
* rather than 401. Your IdP being down is not the caller presenting a bad
|
|
40
|
+
* token, and telling every client to re-authenticate against an unreachable
|
|
41
|
+
* provider is the wrong instruction at the worst moment.
|
|
42
|
+
*
|
|
43
|
+
* @example
|
|
44
|
+
* const host = await standingAgent({
|
|
45
|
+
* agent, sessions, host: nodeHost({ port: 8080 }),
|
|
46
|
+
* identity: { verify: jwksIdentity({
|
|
47
|
+
* jwksUrl: 'https://idp.example.com/.well-known/jwks.json',
|
|
48
|
+
* issuer: 'https://idp.example.com/',
|
|
49
|
+
* audience: 'my-api',
|
|
50
|
+
* }).verify },
|
|
51
|
+
* });
|
|
52
|
+
*/
|
|
53
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
54
|
+
if (k2 === undefined) k2 = k;
|
|
55
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
56
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
57
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
58
|
+
}
|
|
59
|
+
Object.defineProperty(o, k2, desc);
|
|
60
|
+
}) : (function(o, m, k, k2) {
|
|
61
|
+
if (k2 === undefined) k2 = k;
|
|
62
|
+
o[k2] = m[k];
|
|
63
|
+
}));
|
|
64
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
65
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
66
|
+
}) : function(o, v) {
|
|
67
|
+
o["default"] = v;
|
|
68
|
+
});
|
|
69
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
70
|
+
if (mod && mod.__esModule) return mod;
|
|
71
|
+
var result = {};
|
|
72
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
73
|
+
__setModuleDefault(result, mod);
|
|
74
|
+
return result;
|
|
75
|
+
};
|
|
76
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
77
|
+
exports.jwksIdentity = exports.MissingJwksSupportError = void 0;
|
|
78
|
+
const errors_js_1 = require("../../hosting/errors.js");
|
|
79
|
+
const lazyRequire_js_1 = require("../../lib/lazyRequire.js");
|
|
80
|
+
/** Raised when a token must be verified and `jose` is not installed. */
|
|
81
|
+
class MissingJwksSupportError extends Error {
|
|
82
|
+
code = 'ERR_MISSING_JWKS_SUPPORT';
|
|
83
|
+
constructor() {
|
|
84
|
+
super('jwksIdentity requires the `jose` peer dependency.\n' +
|
|
85
|
+
' Install: npm install jose\n' +
|
|
86
|
+
' Or pass `backend` to jwksIdentity() if your bundler resolves it statically.');
|
|
87
|
+
this.name = 'MissingJwksSupportError';
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
exports.MissingJwksSupportError = MissingJwksSupportError;
|
|
91
|
+
/** The asymmetric families. See {@link JwksIdentityOptions.algorithms}. */
|
|
92
|
+
const DEFAULT_ALGORITHMS = [
|
|
93
|
+
'RS256',
|
|
94
|
+
'RS384',
|
|
95
|
+
'RS512',
|
|
96
|
+
'PS256',
|
|
97
|
+
'PS384',
|
|
98
|
+
'PS512',
|
|
99
|
+
'ES256',
|
|
100
|
+
'ES384',
|
|
101
|
+
'ES512',
|
|
102
|
+
];
|
|
103
|
+
/**
|
|
104
|
+
* `jose`'s stable error codes → this library's failure vocabulary.
|
|
105
|
+
*
|
|
106
|
+
* Mapped by CODE STRING rather than by `instanceof`, and that is the load-
|
|
107
|
+
* bearing choice: the error classes are not on `jose`'s main entry point (they
|
|
108
|
+
* live under `jose/errors`), the codes are documented as stable, and a string
|
|
109
|
+
* comparison survives a duplicated copy of the library in a `node_modules` tree
|
|
110
|
+
* — which `instanceof` famously does not.
|
|
111
|
+
*
|
|
112
|
+
* Every code is one this adapter has SEEN the installed library produce; the
|
|
113
|
+
* pin test reproduces each one against the real package.
|
|
114
|
+
*/
|
|
115
|
+
function classOf(err) {
|
|
116
|
+
const e = err;
|
|
117
|
+
const code = typeof e?.code === 'string' ? e.code : undefined;
|
|
118
|
+
switch (code) {
|
|
119
|
+
case 'ERR_JWT_EXPIRED':
|
|
120
|
+
return 'expired';
|
|
121
|
+
case 'ERR_JWT_CLAIM_VALIDATION_FAILED': {
|
|
122
|
+
const claim = typeof e?.claim === 'string' ? e.claim : undefined;
|
|
123
|
+
if (claim === 'aud')
|
|
124
|
+
return 'wrong-audience';
|
|
125
|
+
if (claim === 'iss')
|
|
126
|
+
return 'wrong-issuer';
|
|
127
|
+
if (claim === 'nbf')
|
|
128
|
+
return 'not-yet-valid';
|
|
129
|
+
return 'unverifiable';
|
|
130
|
+
}
|
|
131
|
+
case 'ERR_JWS_SIGNATURE_VERIFICATION_FAILED':
|
|
132
|
+
case 'ERR_JWKS_NO_MATCHING_KEY':
|
|
133
|
+
case 'ERR_JWKS_MULTIPLE_MATCHING_KEYS':
|
|
134
|
+
case 'ERR_JWS_INVALID':
|
|
135
|
+
case 'ERR_JWT_INVALID':
|
|
136
|
+
case 'ERR_JWK_INVALID':
|
|
137
|
+
case 'ERR_JWKS_INVALID':
|
|
138
|
+
case 'ERR_JOSE_ALG_NOT_ALLOWED':
|
|
139
|
+
case 'ERR_JOSE_NOT_SUPPORTED':
|
|
140
|
+
return 'unverifiable';
|
|
141
|
+
case 'ERR_JWKS_TIMEOUT':
|
|
142
|
+
return 'keys-unavailable';
|
|
143
|
+
default:
|
|
144
|
+
// No JOSE code at all. A key-set fetch that failed surfaces here as the
|
|
145
|
+
// runtime's own `TypeError: fetch failed` — an outage on THIS side, and
|
|
146
|
+
// answering it 401 would send every client to re-authenticate against a
|
|
147
|
+
// provider that is already down.
|
|
148
|
+
return code === undefined ? 'keys-unavailable' : 'unverifiable';
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
/** Roles out of a claim, read leniently and never invented. */
|
|
152
|
+
function rolesOf(value) {
|
|
153
|
+
if (Array.isArray(value)) {
|
|
154
|
+
const roles = value.filter((v) => typeof v === 'string' && v.length > 0);
|
|
155
|
+
return roles.length > 0 ? roles : undefined;
|
|
156
|
+
}
|
|
157
|
+
if (typeof value === 'string' && value.trim().length > 0) {
|
|
158
|
+
// The `scope` convention: one space-delimited string.
|
|
159
|
+
const roles = value.trim().split(/\s+/);
|
|
160
|
+
return roles.length > 0 ? roles : undefined;
|
|
161
|
+
}
|
|
162
|
+
return undefined;
|
|
163
|
+
}
|
|
164
|
+
function jwksIdentity(options) {
|
|
165
|
+
const { jwksUrl } = options;
|
|
166
|
+
if (typeof jwksUrl !== 'string' || jwksUrl.trim().length === 0) {
|
|
167
|
+
throw new TypeError(`[identity] jwksIdentity({ jwksUrl: ${JSON.stringify(jwksUrl)} }) needs the URL your ` +
|
|
168
|
+
`identity provider publishes its signing keys at — usually ` +
|
|
169
|
+
`'<issuer>/.well-known/jwks.json'.`);
|
|
170
|
+
}
|
|
171
|
+
let url;
|
|
172
|
+
try {
|
|
173
|
+
url = new URL(jwksUrl);
|
|
174
|
+
}
|
|
175
|
+
catch {
|
|
176
|
+
throw new TypeError(`[identity] jwksIdentity({ jwksUrl: '${jwksUrl}' }) is not an absolute URL. Key sets are ` +
|
|
177
|
+
`fetched over the network, so a relative path has nothing to resolve against.`);
|
|
178
|
+
}
|
|
179
|
+
if (emptyName(options.issuer)) {
|
|
180
|
+
throw new TypeError(`[identity] jwksIdentity needs an \`issuer\`. A verifier that accepted any issuer would ` +
|
|
181
|
+
`accept a token minted by anybody who publishes a key set — which is not verification, ` +
|
|
182
|
+
`it is a signature check with no opinion about who signed.`);
|
|
183
|
+
}
|
|
184
|
+
if (emptyName(options.audience)) {
|
|
185
|
+
throw new TypeError(`[identity] jwksIdentity needs an \`audience\` — this API's name at your identity ` +
|
|
186
|
+
`provider. Without it a token minted for a DIFFERENT service verifies here, which is ` +
|
|
187
|
+
`the confused-deputy shape: a valid credential, honoured by the wrong door.`);
|
|
188
|
+
}
|
|
189
|
+
const userIdClaim = options.userIdClaim ?? 'sub';
|
|
190
|
+
const rolesClaim = options.rolesClaim ?? 'roles';
|
|
191
|
+
const algorithms = options.algorithms ?? DEFAULT_ALGORITHMS;
|
|
192
|
+
/** The key-set resolver, built once and reused — `jose` caches inside it. */
|
|
193
|
+
let resolver;
|
|
194
|
+
const getResolver = () => (resolver ??= (async () => {
|
|
195
|
+
const jose = options.backend ?? (await loadJose());
|
|
196
|
+
const keys = jose.createRemoteJWKSet(url, {
|
|
197
|
+
...(options.cacheMaxAgeMs !== undefined && { cacheMaxAge: options.cacheMaxAgeMs }),
|
|
198
|
+
...(options.fetchTimeoutMs !== undefined && { timeoutDuration: options.fetchTimeoutMs }),
|
|
199
|
+
});
|
|
200
|
+
return { jose, keys };
|
|
201
|
+
})().catch((err) => {
|
|
202
|
+
// A failed BUILD is not cached — a bundler hiccup or a transient import
|
|
203
|
+
// failure must not permanently poison the verifier.
|
|
204
|
+
resolver = undefined;
|
|
205
|
+
throw err;
|
|
206
|
+
}));
|
|
207
|
+
return {
|
|
208
|
+
async verify(token) {
|
|
209
|
+
const { jose, keys } = await getResolver();
|
|
210
|
+
let payload;
|
|
211
|
+
try {
|
|
212
|
+
const verified = await jose.jwtVerify(token, keys, {
|
|
213
|
+
issuer: options.issuer,
|
|
214
|
+
audience: options.audience,
|
|
215
|
+
algorithms: algorithms,
|
|
216
|
+
...(options.clockToleranceSeconds !== undefined && {
|
|
217
|
+
clockTolerance: options.clockToleranceSeconds,
|
|
218
|
+
}),
|
|
219
|
+
});
|
|
220
|
+
payload = verified.payload;
|
|
221
|
+
}
|
|
222
|
+
catch (err) {
|
|
223
|
+
const failure = classOf(err);
|
|
224
|
+
// The one place the two shapes diverge: an unreachable key set is this
|
|
225
|
+
// deployment's outage (503), everything else is the caller's token
|
|
226
|
+
// (401). Neither carries the token, the claims, or the library's text.
|
|
227
|
+
if (failure === 'keys-unavailable') {
|
|
228
|
+
throw new errors_js_1.VerifierUnavailableError('jwksIdentity', 'its key set could not be fetched');
|
|
229
|
+
}
|
|
230
|
+
throw new errors_js_1.IdentityNotVerifiedError(failure, false);
|
|
231
|
+
}
|
|
232
|
+
const userId = payload[userIdClaim];
|
|
233
|
+
if (typeof userId !== 'string' || userId.length === 0) {
|
|
234
|
+
// A perfectly valid token that does not say who it is about. Refused
|
|
235
|
+
// rather than served anonymously: "verified, subject unknown" is a
|
|
236
|
+
// state nothing downstream could act on honestly.
|
|
237
|
+
throw new errors_js_1.IdentityNotVerifiedError('unverifiable', false);
|
|
238
|
+
}
|
|
239
|
+
const roles = rolesOf(payload[rolesClaim]);
|
|
240
|
+
return {
|
|
241
|
+
userId,
|
|
242
|
+
...(roles !== undefined && { roles }),
|
|
243
|
+
claims: payload,
|
|
244
|
+
};
|
|
245
|
+
},
|
|
246
|
+
};
|
|
247
|
+
}
|
|
248
|
+
exports.jwksIdentity = jwksIdentity;
|
|
249
|
+
function emptyName(value) {
|
|
250
|
+
if (typeof value === 'string')
|
|
251
|
+
return value.trim().length === 0;
|
|
252
|
+
if (Array.isArray(value))
|
|
253
|
+
return value.length === 0 || value.some((v) => typeof v !== 'string');
|
|
254
|
+
return true;
|
|
255
|
+
}
|
|
256
|
+
/**
|
|
257
|
+
* Load `jose`, or refuse by name.
|
|
258
|
+
*
|
|
259
|
+
* `jose` v6 is ESM-only, so a dynamic import is tried first and the CJS require
|
|
260
|
+
* is the fallback — one of the two works on every runtime this package
|
|
261
|
+
* supports. (The `unpdf` loader's shape, for the same reason.)
|
|
262
|
+
*/
|
|
263
|
+
async function loadJose() {
|
|
264
|
+
try {
|
|
265
|
+
const spec = 'jose';
|
|
266
|
+
return (await Promise.resolve(`${spec}`).then(s => __importStar(require(s))));
|
|
267
|
+
}
|
|
268
|
+
catch {
|
|
269
|
+
try {
|
|
270
|
+
return (0, lazyRequire_js_1.lazyRequire)('jose');
|
|
271
|
+
}
|
|
272
|
+
catch {
|
|
273
|
+
throw new MissingJwksSupportError();
|
|
274
|
+
}
|
|
275
|
+
}
|
|
276
|
+
}
|
|
277
|
+
//# sourceMappingURL=jwks.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"jwks.js","sourceRoot":"","sources":["../../../src/adapters/identity/jwks.ts"],"names":[],"mappings":"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"}
|