agentfootprint 9.114.2 → 9.115.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/CAPABILITIES.md +3 -0
- package/ai-instructions/claude-code/SKILL.md +1 -1
- package/dist/adapters/hosting/agentCoreA2A.js +5 -0
- package/dist/adapters/hosting/agentCoreA2A.js.map +1 -1
- package/dist/adapters/hosting/agentcore.js +5 -0
- package/dist/adapters/hosting/agentcore.js.map +1 -1
- package/dist/adapters/hosting/foundryResponses.js +5 -0
- package/dist/adapters/hosting/foundryResponses.js.map +1 -1
- package/dist/adapters/observability/agentcore.js +18 -5
- package/dist/adapters/observability/agentcore.js.map +1 -1
- package/dist/adapters/observability/audit.js +17 -4
- package/dist/adapters/observability/audit.js.map +1 -1
- package/dist/adapters/observability/otel.js +890 -33
- package/dist/adapters/observability/otel.js.map +1 -1
- package/dist/artifacts/capability.js +9 -3
- package/dist/artifacts/capability.js.map +1 -1
- package/dist/bridge/eventMeta.js +40 -1
- package/dist/bridge/eventMeta.js.map +1 -1
- package/dist/core/Agent.js +40 -6
- package/dist/core/Agent.js.map +1 -1
- package/dist/core/RunnerBase.js +32 -1
- package/dist/core/RunnerBase.js.map +1 -1
- package/dist/core/agent/AgentBuilder.js +13 -1
- package/dist/core/agent/AgentBuilder.js.map +1 -1
- package/dist/core/agent/stages/toolCalls.js +64 -7
- package/dist/core/agent/stages/toolCalls.js.map +1 -1
- package/dist/core/flowchartAsTool.js +8 -2
- package/dist/core/flowchartAsTool.js.map +1 -1
- package/dist/core/runbook/runbookAsTool.js +7 -2
- package/dist/core/runbook/runbookAsTool.js.map +1 -1
- package/dist/core/toolShownArgs.js +55 -0
- package/dist/core/toolShownArgs.js.map +1 -0
- package/dist/esm/adapters/hosting/agentCoreA2A.d.ts +14 -1
- package/dist/esm/adapters/hosting/agentCoreA2A.js +5 -0
- package/dist/esm/adapters/hosting/agentCoreA2A.js.map +1 -1
- package/dist/esm/adapters/hosting/agentcore.d.ts +18 -2
- package/dist/esm/adapters/hosting/agentcore.js +5 -0
- package/dist/esm/adapters/hosting/agentcore.js.map +1 -1
- package/dist/esm/adapters/hosting/foundryResponses.d.ts +15 -1
- package/dist/esm/adapters/hosting/foundryResponses.js +5 -0
- package/dist/esm/adapters/hosting/foundryResponses.js.map +1 -1
- package/dist/esm/adapters/observability/agentcore.d.ts +17 -5
- package/dist/esm/adapters/observability/agentcore.js +18 -5
- package/dist/esm/adapters/observability/agentcore.js.map +1 -1
- package/dist/esm/adapters/observability/audit.d.ts +6 -2
- package/dist/esm/adapters/observability/audit.js +17 -4
- package/dist/esm/adapters/observability/audit.js.map +1 -1
- package/dist/esm/adapters/observability/otel.d.ts +240 -11
- package/dist/esm/adapters/observability/otel.js +890 -33
- package/dist/esm/adapters/observability/otel.js.map +1 -1
- package/dist/esm/artifacts/capability.d.ts +3 -1
- package/dist/esm/artifacts/capability.js +9 -3
- package/dist/esm/artifacts/capability.js.map +1 -1
- package/dist/esm/bridge/eventMeta.d.ts +32 -0
- package/dist/esm/bridge/eventMeta.js +38 -0
- package/dist/esm/bridge/eventMeta.js.map +1 -1
- package/dist/esm/core/Agent.d.ts +18 -5
- package/dist/esm/core/Agent.js +42 -8
- package/dist/esm/core/Agent.js.map +1 -1
- package/dist/esm/core/RunnerBase.d.ts +20 -0
- package/dist/esm/core/RunnerBase.js +32 -1
- package/dist/esm/core/RunnerBase.js.map +1 -1
- package/dist/esm/core/agent/AgentBuilder.js +13 -1
- package/dist/esm/core/agent/AgentBuilder.js.map +1 -1
- package/dist/esm/core/agent/stages/toolCalls.d.ts +11 -0
- package/dist/esm/core/agent/stages/toolCalls.js +64 -7
- package/dist/esm/core/agent/stages/toolCalls.js.map +1 -1
- package/dist/esm/core/flowchartAsTool.js +8 -2
- package/dist/esm/core/flowchartAsTool.js.map +1 -1
- package/dist/esm/core/runbook/runbookAsTool.js +7 -2
- package/dist/esm/core/runbook/runbookAsTool.js.map +1 -1
- package/dist/esm/core/toolShownArgs.d.ts +62 -0
- package/dist/esm/core/toolShownArgs.js +49 -0
- package/dist/esm/core/toolShownArgs.js.map +1 -0
- package/dist/esm/events/payloads.d.ts +122 -6
- 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/events/types.d.ts +7 -0
- package/dist/esm/hosting/artifactWire.d.ts +10 -2
- package/dist/esm/hosting/artifactWire.js +20 -2
- package/dist/esm/hosting/artifactWire.js.map +1 -1
- package/dist/esm/hosting/doorGuard.d.ts +280 -0
- package/dist/esm/hosting/doorGuard.js +499 -0
- package/dist/esm/hosting/doorGuard.js.map +1 -0
- package/dist/esm/hosting/errors.d.ts +113 -0
- package/dist/esm/hosting/errors.js +177 -0
- package/dist/esm/hosting/errors.js.map +1 -1
- package/dist/esm/hosting/httpHost.d.ts +32 -3
- package/dist/esm/hosting/httpHost.js +218 -4
- package/dist/esm/hosting/httpHost.js.map +1 -1
- package/dist/esm/hosting/index.d.ts +7 -5
- package/dist/esm/hosting/index.js +10 -3
- package/dist/esm/hosting/index.js.map +1 -1
- package/dist/esm/hosting/ingressRecord.d.ts +64 -10
- package/dist/esm/hosting/ingressRecord.js +65 -6
- package/dist/esm/hosting/ingressRecord.js.map +1 -1
- package/dist/esm/hosting/nodeHost.d.ts +32 -2
- package/dist/esm/hosting/nodeHost.js +10 -0
- package/dist/esm/hosting/nodeHost.js.map +1 -1
- package/dist/esm/hosting/standingAgent.js +362 -51
- package/dist/esm/hosting/standingAgent.js.map +1 -1
- package/dist/esm/hosting/turnArtifacts.d.ts +93 -0
- package/dist/esm/hosting/turnArtifacts.js +126 -0
- package/dist/esm/hosting/turnArtifacts.js.map +1 -0
- package/dist/esm/hosting/types.d.ts +196 -3
- package/dist/esm/hosting/types.js +10 -0
- package/dist/esm/hosting/types.js.map +1 -1
- package/dist/esm/hosting/webSocketConversation.d.ts +15 -1
- package/dist/esm/hosting/webSocketConversation.js +54 -2
- package/dist/esm/hosting/webSocketConversation.js.map +1 -1
- package/dist/esm/integrity/disposition/ledger.d.ts +8 -0
- package/dist/esm/integrity/disposition/ledger.js +0 -0
- package/dist/esm/integrity/disposition/ledger.js.map +1 -1
- package/dist/esm/lib/mcp/mcpServe.js +39 -2
- package/dist/esm/lib/mcp/mcpServe.js.map +1 -1
- package/dist/esm/lib/mcp/types.d.ts +30 -0
- package/dist/esm/recorders/observability/commentary/artifactPhrases.d.ts +4 -0
- package/dist/esm/recorders/observability/commentary/artifactPhrases.js +9 -0
- package/dist/esm/recorders/observability/commentary/artifactPhrases.js.map +1 -1
- package/dist/esm/recorders/observability/commentary/commentaryTemplates.js +30 -3
- package/dist/esm/recorders/observability/commentary/commentaryTemplates.js.map +1 -1
- package/dist/esm/recorders/observability/recordRun.d.ts +12 -0
- package/dist/esm/recorders/observability/recordRun.js +17 -1
- package/dist/esm/recorders/observability/recordRun.js.map +1 -1
- package/dist/esm/strategies/attach.js +87 -1
- package/dist/esm/strategies/attach.js.map +1 -1
- package/dist/events/registry.js +2 -0
- package/dist/events/registry.js.map +1 -1
- package/dist/hosting/artifactWire.js +21 -3
- package/dist/hosting/artifactWire.js.map +1 -1
- package/dist/hosting/doorGuard.js +509 -0
- package/dist/hosting/doorGuard.js.map +1 -0
- package/dist/hosting/errors.js +183 -1
- package/dist/hosting/errors.js.map +1 -1
- package/dist/hosting/httpHost.js +218 -4
- package/dist/hosting/httpHost.js.map +1 -1
- package/dist/hosting/index.js +19 -2
- package/dist/hosting/index.js.map +1 -1
- package/dist/hosting/ingressRecord.js +66 -6
- package/dist/hosting/ingressRecord.js.map +1 -1
- package/dist/hosting/nodeHost.js +11 -1
- package/dist/hosting/nodeHost.js.map +1 -1
- package/dist/hosting/standingAgent.js +359 -48
- package/dist/hosting/standingAgent.js.map +1 -1
- package/dist/hosting/turnArtifacts.js +130 -0
- package/dist/hosting/turnArtifacts.js.map +1 -0
- package/dist/hosting/types.js +11 -1
- package/dist/hosting/types.js.map +1 -1
- package/dist/hosting/webSocketConversation.js +54 -2
- package/dist/hosting/webSocketConversation.js.map +1 -1
- package/dist/integrity/disposition/ledger.js +0 -0
- package/dist/integrity/disposition/ledger.js.map +1 -1
- package/dist/lib/mcp/mcpServe.js +39 -2
- package/dist/lib/mcp/mcpServe.js.map +1 -1
- package/dist/recorders/observability/commentary/artifactPhrases.js +10 -1
- package/dist/recorders/observability/commentary/artifactPhrases.js.map +1 -1
- package/dist/recorders/observability/commentary/commentaryTemplates.js +29 -2
- package/dist/recorders/observability/commentary/commentaryTemplates.js.map +1 -1
- package/dist/recorders/observability/recordRun.js +20 -3
- package/dist/recorders/observability/recordRun.js.map +1 -1
- package/dist/strategies/attach.js +87 -1
- package/dist/strategies/attach.js.map +1 -1
- package/dist/types/adapters/hosting/agentCoreA2A.d.ts +14 -1
- package/dist/types/adapters/hosting/agentCoreA2A.d.ts.map +1 -1
- package/dist/types/adapters/hosting/agentcore.d.ts +18 -2
- package/dist/types/adapters/hosting/agentcore.d.ts.map +1 -1
- package/dist/types/adapters/hosting/foundryResponses.d.ts +15 -1
- package/dist/types/adapters/hosting/foundryResponses.d.ts.map +1 -1
- package/dist/types/adapters/observability/agentcore.d.ts +17 -5
- package/dist/types/adapters/observability/agentcore.d.ts.map +1 -1
- package/dist/types/adapters/observability/audit.d.ts +6 -2
- package/dist/types/adapters/observability/audit.d.ts.map +1 -1
- package/dist/types/adapters/observability/otel.d.ts +240 -11
- package/dist/types/adapters/observability/otel.d.ts.map +1 -1
- package/dist/types/artifacts/capability.d.ts +3 -1
- package/dist/types/artifacts/capability.d.ts.map +1 -1
- package/dist/types/bridge/eventMeta.d.ts +32 -0
- package/dist/types/bridge/eventMeta.d.ts.map +1 -1
- package/dist/types/core/Agent.d.ts +18 -5
- package/dist/types/core/Agent.d.ts.map +1 -1
- package/dist/types/core/RunnerBase.d.ts +20 -0
- package/dist/types/core/RunnerBase.d.ts.map +1 -1
- package/dist/types/core/agent/AgentBuilder.d.ts.map +1 -1
- package/dist/types/core/agent/stages/toolCalls.d.ts +11 -0
- package/dist/types/core/agent/stages/toolCalls.d.ts.map +1 -1
- package/dist/types/core/flowchartAsTool.d.ts.map +1 -1
- package/dist/types/core/runbook/runbookAsTool.d.ts.map +1 -1
- package/dist/types/core/toolShownArgs.d.ts +63 -0
- package/dist/types/core/toolShownArgs.d.ts.map +1 -0
- package/dist/types/events/payloads.d.ts +122 -6
- 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/events/types.d.ts +7 -0
- package/dist/types/events/types.d.ts.map +1 -1
- package/dist/types/hosting/artifactWire.d.ts +10 -2
- package/dist/types/hosting/artifactWire.d.ts.map +1 -1
- package/dist/types/hosting/doorGuard.d.ts +281 -0
- package/dist/types/hosting/doorGuard.d.ts.map +1 -0
- package/dist/types/hosting/errors.d.ts +113 -0
- package/dist/types/hosting/errors.d.ts.map +1 -1
- package/dist/types/hosting/httpHost.d.ts +32 -3
- package/dist/types/hosting/httpHost.d.ts.map +1 -1
- package/dist/types/hosting/index.d.ts +7 -5
- package/dist/types/hosting/index.d.ts.map +1 -1
- package/dist/types/hosting/ingressRecord.d.ts +64 -10
- package/dist/types/hosting/ingressRecord.d.ts.map +1 -1
- package/dist/types/hosting/nodeHost.d.ts +32 -2
- package/dist/types/hosting/nodeHost.d.ts.map +1 -1
- package/dist/types/hosting/standingAgent.d.ts.map +1 -1
- package/dist/types/hosting/turnArtifacts.d.ts +94 -0
- package/dist/types/hosting/turnArtifacts.d.ts.map +1 -0
- package/dist/types/hosting/types.d.ts +196 -3
- package/dist/types/hosting/types.d.ts.map +1 -1
- package/dist/types/hosting/webSocketConversation.d.ts +15 -1
- package/dist/types/hosting/webSocketConversation.d.ts.map +1 -1
- package/dist/types/integrity/disposition/ledger.d.ts +8 -0
- package/dist/types/integrity/disposition/ledger.d.ts.map +1 -1
- package/dist/types/lib/mcp/mcpServe.d.ts.map +1 -1
- package/dist/types/lib/mcp/types.d.ts +30 -0
- package/dist/types/lib/mcp/types.d.ts.map +1 -1
- package/dist/types/recorders/observability/commentary/artifactPhrases.d.ts +4 -0
- package/dist/types/recorders/observability/commentary/artifactPhrases.d.ts.map +1 -1
- package/dist/types/recorders/observability/commentary/commentaryTemplates.d.ts.map +1 -1
- package/dist/types/recorders/observability/recordRun.d.ts +12 -0
- package/dist/types/recorders/observability/recordRun.d.ts.map +1 -1
- package/dist/types/strategies/attach.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,281 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* hosting/doorGuard — what a request has to be before any handler sees it.
|
|
3
|
+
*
|
|
4
|
+
* const guard = doorGuard({ name: 'auth', allowedHosts: ['neo.corp.example'] });
|
|
5
|
+
* const refusal = guard.check(req); // an IncomingMessage works as-is
|
|
6
|
+
* if (refusal) return answer(refusal.status, refusal.message, refusal.code);
|
|
7
|
+
*
|
|
8
|
+
* ── The threat, in one paragraph ────────────────────────────────────────────
|
|
9
|
+
* A door with no verifier, reachable only inside a company network, looks safe
|
|
10
|
+
* because the network is the fence. It is not: every person inside the fence
|
|
11
|
+
* runs a browser, and every web page they open can make that browser send
|
|
12
|
+
* requests to the door FROM INSIDE. Three ways, all live before this file:
|
|
13
|
+
*
|
|
14
|
+
* 1. **A forged request (CSRF).** A page on any site can make the browser
|
|
15
|
+
* POST a JSON-shaped body as `text/plain` (or as a form, or with no
|
|
16
|
+
* content type at all) without asking the server first — a CORS "simple"
|
|
17
|
+
* request. The door parsed it as JSON and ran a turn: model budget spent,
|
|
18
|
+
* tools called, a conversation stored. The attacker cannot read the reply;
|
|
19
|
+
* they do not need to.
|
|
20
|
+
* 2. **DNS rebinding.** A page on an attacker's domain re-points its OWN name
|
|
21
|
+
* at the door's address. The browser now treats the attacker's page as
|
|
22
|
+
* same-origin with the door, so it may send anything and READ the answer.
|
|
23
|
+
* 3. **A cross-site WebSocket.** A WebSocket is not bound by the same-origin
|
|
24
|
+
* policy at all; any page can open one, and only the server can say no.
|
|
25
|
+
*
|
|
26
|
+
* ── The rules, one owner ────────────────────────────────────────────────────
|
|
27
|
+
* `check()` judges a request that CHANGES something — every method but GET,
|
|
28
|
+
* HEAD and OPTIONS, plus every WebSocket upgrade (a GET that opens a channel):
|
|
29
|
+
*
|
|
30
|
+
* - **Host** (with `allowedHosts` set, or defaulted to the loopback names on
|
|
31
|
+
* a loopback bind; judged on EVERY method): a name this door was not
|
|
32
|
+
* configured for is refused, 421. First, because under rebinding the other
|
|
33
|
+
* two checks pass — the Host header, which no page can set, is the one
|
|
34
|
+
* fact that still names the attacker. `X-Forwarded-Host` is never read for
|
|
35
|
+
* it: a rebinding page is same-origin and may set that header itself.
|
|
36
|
+
* - **Origin**: a browser request from a page this door does not allow is
|
|
37
|
+
* refused, 403 — including `Origin: null`. A request WITHOUT an Origin is a
|
|
38
|
+
* script or a server (browsers always send one on these requests) and is
|
|
39
|
+
* not judged by it; that is what keeps every non-browser client working.
|
|
40
|
+
* - **Fetch metadata**, as defence in depth: a request the browser itself
|
|
41
|
+
* marked `Sec-Fetch-Site: cross-site` is refused (403) unless its Origin is
|
|
42
|
+
* one `allowedOrigins` LISTS — so a proxy that strips `Origin` but forwards
|
|
43
|
+
* `Sec-Fetch-*` still cannot let a forged request through. For a WebSocket
|
|
44
|
+
* handshake these two are the whole defence: the browser API cannot set a
|
|
45
|
+
* header, so there is no preflight to force.
|
|
46
|
+
* - **Content type** (not for an upgrade — it has no body): anything but
|
|
47
|
+
* `application/json` is refused, 415. A browser must ask first (a
|
|
48
|
+
* preflight, which this host never approves) before it sends that type
|
|
49
|
+
* across origins, so requiring it makes a forged request one the browser
|
|
50
|
+
* refuses to send. It is the same property a required custom header buys
|
|
51
|
+
* (RFC 10017 §6.1.3.3.2), without breaking every JSON client that already
|
|
52
|
+
* sends the header and no other.
|
|
53
|
+
*
|
|
54
|
+
* `checkSessionId()` is the fourth bound, and it is not about browsers: a
|
|
55
|
+
* session id is caller data that rides every stored row, log line and trace
|
|
56
|
+
* span of a conversation, so a door refuses one over
|
|
57
|
+
* {@link MAX_SESSION_ID_LENGTH} or carrying a control character.
|
|
58
|
+
*
|
|
59
|
+
* Where it runs: `httpHost` calls `check()` on every request to its request
|
|
60
|
+
* door and on every conversation upgrade, and `checkSessionId()` on the id each
|
|
61
|
+
* dialect reads. An application's OWN routes beside the door (a sign-in route
|
|
62
|
+
* on `onUnhandled`, say) are the application's, and arrive untouched — so this
|
|
63
|
+
* is exported for them to call, and the rule keeps one spelling.
|
|
64
|
+
*
|
|
65
|
+
* Pure: no socket, no clock, no I/O. The design note is
|
|
66
|
+
* `docs/design/2026-09-door-hardening.md`.
|
|
67
|
+
*/
|
|
68
|
+
import { HostNotAllowedError, InvalidSessionIdError, OriginNotAllowedError, UnsupportedMediaTypeError } from './errors.js';
|
|
69
|
+
/**
|
|
70
|
+
* The longest session id any door carries, in UTF-16 code units — JavaScript's
|
|
71
|
+
* own `string.length`.
|
|
72
|
+
*
|
|
73
|
+
* 400 is the width the reference SQL session store gives its `session_id`
|
|
74
|
+
* column (`NVARCHAR(400)`, which counts the same units), so no id this door
|
|
75
|
+
* admits is one a store refuses AFTER the model was paid for. The id formats in
|
|
76
|
+
* use fit with room to spare — a UUID is 36 — and there is deliberately no
|
|
77
|
+
* knob: a correlation handle wider than this is not one anybody needs.
|
|
78
|
+
*/
|
|
79
|
+
export declare const MAX_SESSION_ID_LENGTH = 400;
|
|
80
|
+
/**
|
|
81
|
+
* The cross-site rules a host enforces at its doors. Every field is optional,
|
|
82
|
+
* and the defaults are the safe ones — see each field for what it costs.
|
|
83
|
+
*/
|
|
84
|
+
export interface CrossSiteOptions {
|
|
85
|
+
/**
|
|
86
|
+
* The page origins allowed to drive this door from a browser —
|
|
87
|
+
* `['https://app.corp.example']`: scheme, host and port, nothing after.
|
|
88
|
+
*
|
|
89
|
+
* **Unset (the default):** a browser request is served only from a page on
|
|
90
|
+
* this door's own name — its Origin must match the request's `Host`, or an
|
|
91
|
+
* `X-Forwarded-Host` a proxy added. That is every app served from the same
|
|
92
|
+
* host as its door, unchanged; an app on ANOTHER origin must be listed.
|
|
93
|
+
*
|
|
94
|
+
* **Know what the default does not do:** it does not stop DNS rebinding.
|
|
95
|
+
* There, the attacker's page and the request's Host both carry the
|
|
96
|
+
* attacker's name, so they match. {@link CrossSiteOptions.allowedHosts} is
|
|
97
|
+
* the defence for that.
|
|
98
|
+
*
|
|
99
|
+
* A listed origin may be on another SITE by design, so a request from one
|
|
100
|
+
* passes even when the browser marks it `Sec-Fetch-Site: cross-site`. Any
|
|
101
|
+
* other request marked that way is refused — the catch for a proxy that
|
|
102
|
+
* strips `Origin`. A reverse proxy must forward `Origin` and `Sec-Fetch-*`
|
|
103
|
+
* unchanged.
|
|
104
|
+
*
|
|
105
|
+
* `'any'` turns both browser checks off — for a door no browser page can
|
|
106
|
+
* reach with a user's ambient authority. `'null'` and `'*'` are refused at
|
|
107
|
+
* construction: the first is every sandboxed frame on every site, the second
|
|
108
|
+
* would read as a pattern it is not.
|
|
109
|
+
*/
|
|
110
|
+
readonly allowedOrigins?: readonly string[] | 'any';
|
|
111
|
+
/**
|
|
112
|
+
* The names this door answers for — `['neo.corp.example']`. A request whose
|
|
113
|
+
* `Host` names anything else is refused with 421, which is what stops DNS
|
|
114
|
+
* rebinding. Matched case-insensitively; an entry without a port matches any
|
|
115
|
+
* port, an entry with one matches only it; IPv6 in brackets (`'[::1]'`).
|
|
116
|
+
*
|
|
117
|
+
* **Unset on a LOOPBACK bind** (`127.0.0.1`, `::1`, `localhost` — a host
|
|
118
|
+
* binding its own socket there): `localhost`, `127.0.0.1` and `[::1]`, any
|
|
119
|
+
* port, silently. Such a socket has no other name, so this refuses nobody
|
|
120
|
+
* and closes rebinding on a developer's own machine.
|
|
121
|
+
*
|
|
122
|
+
* **Unset on any other bind:** every Host is served, and the host prints
|
|
123
|
+
* ONE warning at boot naming this option. A deliberate staged default:
|
|
124
|
+
* refusing at boot would stop existing deployments starting.
|
|
125
|
+
*
|
|
126
|
+
* `'any'` serves every Host on purpose and prints nothing — for a door whose
|
|
127
|
+
* port no browser can reach (a platform's front door in front of it). An
|
|
128
|
+
* empty list is refused at construction: it could never serve anything.
|
|
129
|
+
*
|
|
130
|
+
* Health probes are not judged: a load balancer or kubelet sends the
|
|
131
|
+
* target's ADDRESS as Host, and a probe that failed on it would restart a
|
|
132
|
+
* healthy server.
|
|
133
|
+
*/
|
|
134
|
+
readonly allowedHosts?: readonly string[] | 'any';
|
|
135
|
+
/**
|
|
136
|
+
* Refuse a request that changes something unless it says
|
|
137
|
+
* `content-type: application/json` (415). Default `true`.
|
|
138
|
+
*
|
|
139
|
+
* `false` is the named escape hatch for a NON-BROWSER integration that
|
|
140
|
+
* cannot send the header. It removes the half of the defence that does not
|
|
141
|
+
* depend on Origin — so set it only on a door no browser can reach, and
|
|
142
|
+
* keep `allowedOrigins` and `allowedHosts` doing their part.
|
|
143
|
+
*/
|
|
144
|
+
readonly requireJsonContentType?: boolean;
|
|
145
|
+
}
|
|
146
|
+
/** {@link doorGuard}'s options: the rules, plus who is refusing. */
|
|
147
|
+
export interface DoorGuardOptions extends CrossSiteOptions {
|
|
148
|
+
/** Who refuses — every refusal names it, as every host refusal does. */
|
|
149
|
+
readonly name: string;
|
|
150
|
+
/**
|
|
151
|
+
* The address this door's socket is bound to, when the door bound it
|
|
152
|
+
* itself. A loopback address with `allowedHosts` unset makes the loopback
|
|
153
|
+
* names the list (see {@link loopbackAllowedHosts}), and a refusal then
|
|
154
|
+
* says the list was defaulted and how to set one. Absent: nothing is
|
|
155
|
+
* inferred.
|
|
156
|
+
*/
|
|
157
|
+
readonly bindHost?: string;
|
|
158
|
+
}
|
|
159
|
+
/**
|
|
160
|
+
* The parts of a request the guard reads. A `node:http` `IncomingMessage` is
|
|
161
|
+
* one as it stands; so is a plain `{ method, headers }`. Header names are
|
|
162
|
+
* matched case-insensitively.
|
|
163
|
+
*/
|
|
164
|
+
export interface DoorRequest {
|
|
165
|
+
/** The HTTP method. Absent is judged as a request that changes something. */
|
|
166
|
+
readonly method?: string;
|
|
167
|
+
readonly headers: Readonly<Record<string, string | readonly string[] | undefined>>;
|
|
168
|
+
}
|
|
169
|
+
/** Why a request may not enter — one of three, each carrying its own `status`. */
|
|
170
|
+
export type CrossSiteRefusal = UnsupportedMediaTypeError | OriginNotAllowedError | HostNotAllowedError;
|
|
171
|
+
/** A guard, built once, asked per request. */
|
|
172
|
+
export interface DoorGuard {
|
|
173
|
+
/** The refusal this request earns at the door, or `undefined` to let it in. */
|
|
174
|
+
check(request: DoorRequest): CrossSiteRefusal | undefined;
|
|
175
|
+
/**
|
|
176
|
+
* `true` when `allowedHosts` was left unset — the door answers any Host and
|
|
177
|
+
* the host says so once at boot. `false` for a list or for `'any'`.
|
|
178
|
+
*/
|
|
179
|
+
readonly allowedHostsUnset: boolean;
|
|
180
|
+
/**
|
|
181
|
+
* `true` when both browser rules are off (`allowedOrigins: 'any'` and
|
|
182
|
+
* `requireJsonContentType: false`) — the host says so once at boot.
|
|
183
|
+
*/
|
|
184
|
+
readonly browserRulesOff: boolean;
|
|
185
|
+
}
|
|
186
|
+
/**
|
|
187
|
+
* Build a guard. Configuration a door could only ever misread is refused HERE,
|
|
188
|
+
* at construction, by name — never discovered as a mystery 403 in production.
|
|
189
|
+
*/
|
|
190
|
+
export declare function doorGuard(options: DoorGuardOptions): DoorGuard;
|
|
191
|
+
/**
|
|
192
|
+
* The session-id bound — `undefined` for an id a door may carry (or none).
|
|
193
|
+
*
|
|
194
|
+
* A session id is one to {@link MAX_SESSION_ID_LENGTH} characters of VISIBLE
|
|
195
|
+
* ASCII (0x21–0x7E) — the rule MCP gives its own session ids. Why ASCII and
|
|
196
|
+
* not "Unicode minus the dangerous parts":
|
|
197
|
+
*
|
|
198
|
+
* - **One id, one byte string, from every field.** Node reads a header value
|
|
199
|
+
* as latin1 and a JSON body as UTF-8, so `café` in `x-session-id` and `café`
|
|
200
|
+
* in the body were two different stored conversations. With ASCII only,
|
|
201
|
+
* the two readings cannot differ.
|
|
202
|
+
* - **Nothing a log, a span or a store can reinterpret.** Controls, line and
|
|
203
|
+
* paragraph separators (U+2028/9), bidi overrides (U+202E), zero-width
|
|
204
|
+
* characters and lone surrogates (which any UTF-8 store rewrites to U+FFFD,
|
|
205
|
+
* merging two ids) are all outside it — no list of exceptions to keep up.
|
|
206
|
+
* - Every id format in use already fits: UUIDs, platform runtime ids, `conv_…`.
|
|
207
|
+
*
|
|
208
|
+
* The empty string is refused too: every caller that sent `""` shared ONE
|
|
209
|
+
* conversation. The length is judged first, so an over-long id costs one
|
|
210
|
+
* comparison — after a body read that `maxBodyBytes` bounds.
|
|
211
|
+
*/
|
|
212
|
+
export declare function checkSessionId(sessionId: string | undefined, hostName: string): InvalidSessionIdError | undefined;
|
|
213
|
+
/**
|
|
214
|
+
* The names a LOOPBACK-bound door answers to when `allowedHosts` was not set —
|
|
215
|
+
* `localhost`, `127.0.0.1`, `[::1]` (and the bound address itself when it is
|
|
216
|
+
* another `127.x`), any port: the socket already fixes the port, so a name is
|
|
217
|
+
* all a rebinding page can vary. `undefined` for any other bind.
|
|
218
|
+
*
|
|
219
|
+
* It closes DNS rebinding on the classic victim, a developer's own machine,
|
|
220
|
+
* and the MCP SDK's `createMcpExpressApp` does the same for a localhost bind.
|
|
221
|
+
* What it refuses that is legitimate, stated rather than discovered:
|
|
222
|
+
*
|
|
223
|
+
* - **A reverse proxy on the same machine that forwards the PUBLIC name** in
|
|
224
|
+
* `Host` (nginx `proxy_set_header Host $host`) — the common case, and the
|
|
225
|
+
* recommended "bind 127.0.0.1 behind nginx" setup. The proxy's requests
|
|
226
|
+
* arrive on loopback carrying `neo.corp.example`, which the socket cannot
|
|
227
|
+
* tell from a rebinding page. List that name in `allowedHosts`; the 421
|
|
228
|
+
* says so, naming this default (`HostNotAllowedError` · `rule`).
|
|
229
|
+
* - A hosts-file alias for a loopback address — the same fix.
|
|
230
|
+
*
|
|
231
|
+
* Both fail loudly and in the safe direction, and the fix is the option such
|
|
232
|
+
* a deployment should set anyway.
|
|
233
|
+
*
|
|
234
|
+
* @internal — `doorGuard` asks it with the address a door bound
|
|
235
|
+
* (`DoorGuardOptions.bindHost`).
|
|
236
|
+
*/
|
|
237
|
+
export declare function loopbackAllowedHosts(bindHost: string | undefined): readonly string[] | undefined;
|
|
238
|
+
/**
|
|
239
|
+
* `localhost`, any `127.x` literal, and `::1` or `::ffff:127.x` in ANY IPv6
|
|
240
|
+
* spelling (bracketed or not, `0:0:0:0:0:0:0:1`, leading zeros) — IPv6 is
|
|
241
|
+
* canonicalised by the WHATWG URL parser before it is compared.
|
|
242
|
+
*/
|
|
243
|
+
export declare function isLoopbackBind(bindHost: string | undefined): boolean;
|
|
244
|
+
/**
|
|
245
|
+
* The cross-site rules for a door a PLATFORM fronts — the hosted-runtime
|
|
246
|
+
* adapters' defaults, with whatever the deployment set kept as given.
|
|
247
|
+
*
|
|
248
|
+
* Exempt by default, and why, once for every such adapter: the platform's own
|
|
249
|
+
* front door is the only way to the container's port, and the credential it
|
|
250
|
+
* demands is one no web page holds (a signed request, a bearer the caller
|
|
251
|
+
* attaches) — so a forged browser request cannot authenticate and no browser
|
|
252
|
+
* can reach the port to rebind it. The browser rules would protect nothing
|
|
253
|
+
* there, and which headers the platform forwards (its content type, Origin,
|
|
254
|
+
* Host) is not a fact this library has verified; enforcing them could refuse
|
|
255
|
+
* the platform's own forwarding. Any rule the deployment sets is enforced
|
|
256
|
+
* exactly as on every other door. The session-id bound is NOT exempt: it is
|
|
257
|
+
* not about browsers.
|
|
258
|
+
*
|
|
259
|
+
* @internal — the adapters' shared default, not a public setting.
|
|
260
|
+
*/
|
|
261
|
+
export declare function platformFrontedDoor(options: CrossSiteOptions, bindHost: string | undefined): CrossSiteOptions;
|
|
262
|
+
/**
|
|
263
|
+
* Said once per host name per process, at boot, when a door serves with the
|
|
264
|
+
* browser rules OFF (`allowedOrigins: 'any'` and `requireJsonContentType:
|
|
265
|
+
* false` — the hosted-runtime adapters' default on a non-loopback bind). Those
|
|
266
|
+
* rules are off because a platform's front door is supposed to be the only way
|
|
267
|
+
* in; a self-hoster on `0.0.0.0` needs to hear that it is not.
|
|
268
|
+
*
|
|
269
|
+
* @internal — the words have one owner; `httpHost` decides when.
|
|
270
|
+
*/
|
|
271
|
+
export declare function warnBrowserRulesOff(hostName: string): void;
|
|
272
|
+
/**
|
|
273
|
+
* The staged default, said out loud: a host serving with `allowedHosts` unset
|
|
274
|
+
* prints this ONCE per host name per process, at boot. A name is how every
|
|
275
|
+
* refusal identifies a host, so two hosts sharing one are one door to anyone
|
|
276
|
+
* reading the log — and once is what keeps a warning from becoming noise.
|
|
277
|
+
*
|
|
278
|
+
* @internal — the words have one owner; `httpHost` decides when.
|
|
279
|
+
*/
|
|
280
|
+
export declare function warnAllowedHostsUnset(hostName: string): void;
|
|
281
|
+
//# sourceMappingURL=doorGuard.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"doorGuard.d.ts","sourceRoot":"","sources":["../../../src/hosting/doorGuard.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkEG;AAEH,OAAO,EACL,mBAAmB,EACnB,qBAAqB,EACrB,qBAAqB,EACrB,yBAAyB,EAE1B,MAAM,aAAa,CAAC;AAErB;;;;;;;;;GASG;AACH,eAAO,MAAM,qBAAqB,MAAM,CAAC;AAEzC;;;GAGG;AACH,MAAM,WAAW,gBAAgB;IAC/B;;;;;;;;;;;;;;;;;;;;;;;;OAwBG;IACH,QAAQ,CAAC,cAAc,CAAC,EAAE,SAAS,MAAM,EAAE,GAAG,KAAK,CAAC;IACpD;;;;;;;;;;;;;;;;;;;;;;OAsBG;IACH,QAAQ,CAAC,YAAY,CAAC,EAAE,SAAS,MAAM,EAAE,GAAG,KAAK,CAAC;IAClD;;;;;;;;OAQG;IACH,QAAQ,CAAC,sBAAsB,CAAC,EAAE,OAAO,CAAC;CAC3C;AAED,oEAAoE;AACpE,MAAM,WAAW,gBAAiB,SAAQ,gBAAgB;IACxD,wEAAwE;IACxE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB;;;;;;OAMG;IACH,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED;;;;GAIG;AACH,MAAM,WAAW,WAAW;IAC1B,6EAA6E;IAC7E,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,MAAM,EAAE,GAAG,SAAS,CAAC,CAAC,CAAC;CACpF;AAED,kFAAkF;AAClF,MAAM,MAAM,gBAAgB,GACxB,yBAAyB,GACzB,qBAAqB,GACrB,mBAAmB,CAAC;AAExB,8CAA8C;AAC9C,MAAM,WAAW,SAAS;IACxB,+EAA+E;IAC/E,KAAK,CAAC,OAAO,EAAE,WAAW,GAAG,gBAAgB,GAAG,SAAS,CAAC;IAC1D;;;OAGG;IACH,QAAQ,CAAC,iBAAiB,EAAE,OAAO,CAAC;IACpC;;;OAGG;IACH,QAAQ,CAAC,eAAe,EAAE,OAAO,CAAC;CACnC;AAKD;;;GAGG;AACH,wBAAgB,SAAS,CAAC,OAAO,EAAE,gBAAgB,GAAG,SAAS,CA6B9D;AA2CD;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,cAAc,CAC5B,SAAS,EAAE,MAAM,GAAG,SAAS,EAC7B,QAAQ,EAAE,MAAM,GACf,qBAAqB,GAAG,SAAS,CAiBnC;AAED;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS,MAAM,EAAE,GAAG,SAAS,CAQhG;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAWpE;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,gBAAgB,EACzB,QAAQ,EAAE,MAAM,GAAG,SAAS,GAC3B,gBAAgB,CAkBlB;AAKD;;;;;;;;GAQG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAY1D;AAED;;;;;;;GAOG;AACH,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAc5D"}
|
|
@@ -226,6 +226,28 @@ export declare class ArtifactNotCarriedError extends Error {
|
|
|
226
226
|
readonly ref: string;
|
|
227
227
|
constructor(ref: string, hostName?: string);
|
|
228
228
|
}
|
|
229
|
+
/**
|
|
230
|
+
* Refused when host code uses a turn's artifact hand-over
|
|
231
|
+
* (`HostReply.turnArtifacts`) after that turn ended.
|
|
232
|
+
*
|
|
233
|
+
* The hand-over is live only while the hook runs: the composer awaits the
|
|
234
|
+
* hook while the session's lane is held, waits for every operation the hook
|
|
235
|
+
* started, then revokes the binding before the reply ends. A verb called
|
|
236
|
+
* after that is refused by name rather than performed. The footprintjs
|
|
237
|
+
* `ScopeFacade · assertLive` law, one layer up: a handle held past its stage
|
|
238
|
+
* is refused, because a write made outside its turn lands on whatever run the
|
|
239
|
+
* instance is serving by then — in the shared shape, another person's — and
|
|
240
|
+
* makes the record lie.
|
|
241
|
+
*
|
|
242
|
+
* The fix is always the same: file INSIDE the hook (`await
|
|
243
|
+
* turn.artifacts.put(...)`), and carry the ticket onward from there.
|
|
244
|
+
*/
|
|
245
|
+
export declare class TurnArtifactsExpiredError extends Error {
|
|
246
|
+
readonly code: "ERR_TURN_ARTIFACTS_EXPIRED";
|
|
247
|
+
/** Which verb was called after the turn ended. */
|
|
248
|
+
readonly op: 'put' | 'head' | 'get' | 'delete' | 'list';
|
|
249
|
+
constructor(op: 'put' | 'head' | 'get' | 'delete' | 'list');
|
|
250
|
+
}
|
|
229
251
|
/**
|
|
230
252
|
* Thrown when a store hands back something that is **present but unreadable**
|
|
231
253
|
* where a `CheckpointEnvelope` should be.
|
|
@@ -523,5 +545,96 @@ export declare class WireRequestRefusal extends Error {
|
|
|
523
545
|
/** HTTP status for this refusal. Default 400 — the request is what is wrong. */
|
|
524
546
|
status?: number);
|
|
525
547
|
}
|
|
548
|
+
/**
|
|
549
|
+
* A request that changes something did not say `content-type: application/json`.
|
|
550
|
+
*
|
|
551
|
+
* The door is a JSON API, and that is only half the reason. The other half is
|
|
552
|
+
* the web: a page on ANY site can make a browser send `text/plain`,
|
|
553
|
+
* `application/x-www-form-urlencoded` or `multipart/form-data` — or no content
|
|
554
|
+
* type at all — without asking the server first (a CORS "simple" request). A
|
|
555
|
+
* browser must ask first (a preflight, which this host never approves) before
|
|
556
|
+
* it sends `application/json` across origins. Requiring it is what turns a
|
|
557
|
+
* forged request into one the browser refuses to send.
|
|
558
|
+
*/
|
|
559
|
+
export declare class UnsupportedMediaTypeError extends Error {
|
|
560
|
+
readonly code: "ERR_UNSUPPORTED_MEDIA_TYPE";
|
|
561
|
+
/** 415 Unsupported Media Type. */
|
|
562
|
+
readonly status: 415;
|
|
563
|
+
constructor(hostName: string);
|
|
564
|
+
}
|
|
565
|
+
/**
|
|
566
|
+
* Which browser fact refused an {@link OriginNotAllowedError}.
|
|
567
|
+
*
|
|
568
|
+
* - `'same-host'` — `allowedOrigins` is unset and the page's Origin is not
|
|
569
|
+
* this door's own name.
|
|
570
|
+
* - `'listed'` — the page's Origin is not in `allowedOrigins`.
|
|
571
|
+
* - `'fetch-metadata'` — the browser marked the request `Sec-Fetch-Site:
|
|
572
|
+
* cross-site` and its Origin is not one `allowedOrigins` lists. This is the
|
|
573
|
+
* one that still fires when a proxy strips `Origin` but forwards the Fetch
|
|
574
|
+
* metadata beside it.
|
|
575
|
+
*/
|
|
576
|
+
export type OriginRefusalRule = 'same-host' | 'listed' | 'fetch-metadata';
|
|
577
|
+
/**
|
|
578
|
+
* A browser request came from a page whose origin this door does not allow —
|
|
579
|
+
* or from an opaque origin (`Origin: null`), which any sandboxed frame on any
|
|
580
|
+
* site can produce and which is therefore never allowed — or the browser said
|
|
581
|
+
* outright that it was sent cross-site.
|
|
582
|
+
*
|
|
583
|
+
* Only BROWSERS send `Origin` (on every request that changes something, and on
|
|
584
|
+
* every WebSocket handshake), so a request without one is a script or a
|
|
585
|
+
* server — unless the same request carries the browser's own `Sec-Fetch-Site:
|
|
586
|
+
* cross-site`, which is how a stripped `Origin` still gets caught.
|
|
587
|
+
*/
|
|
588
|
+
export declare class OriginNotAllowedError extends Error {
|
|
589
|
+
readonly code: "ERR_ORIGIN_NOT_ALLOWED";
|
|
590
|
+
/** 403 Forbidden. */
|
|
591
|
+
readonly status: 403;
|
|
592
|
+
/** Which browser fact refused it. */
|
|
593
|
+
readonly rule: OriginRefusalRule;
|
|
594
|
+
constructor(hostName: string, rule: OriginRefusalRule);
|
|
595
|
+
}
|
|
596
|
+
/**
|
|
597
|
+
* A request named a Host this door was not configured to answer for.
|
|
598
|
+
*
|
|
599
|
+
* The DNS-rebinding defence: a page on an attacker's domain re-points its OWN
|
|
600
|
+
* name at this server's address, and from then on the browser treats it as
|
|
601
|
+
* same-origin with the door — so every other check passes, and the Host header
|
|
602
|
+
* (which no page can set) is the one fact that still names the attacker.
|
|
603
|
+
* 421 is the status HTTP defines for exactly this (RFC 9110 §15.5.20: a target
|
|
604
|
+
* "that does not match an origin for which the server has been configured").
|
|
605
|
+
*/
|
|
606
|
+
export declare class HostNotAllowedError extends Error {
|
|
607
|
+
readonly code: "ERR_HOST_NOT_ALLOWED";
|
|
608
|
+
/** 421 Misdirected Request. */
|
|
609
|
+
readonly status: 421;
|
|
610
|
+
/**
|
|
611
|
+
* Where the list came from: `'listed'` — the deployment's own
|
|
612
|
+
* `allowedHosts`; `'loopback-default'` — nobody set one, and the door is
|
|
613
|
+
* bound to a loopback address, so it answers the loopback names only.
|
|
614
|
+
*/
|
|
615
|
+
readonly rule: 'listed' | 'loopback-default';
|
|
616
|
+
constructor(hostName: string, rule?: 'listed' | 'loopback-default');
|
|
617
|
+
}
|
|
618
|
+
/**
|
|
619
|
+
* A session id the door will not carry: empty, longer than the ceiling, or
|
|
620
|
+
* holding anything but visible ASCII (0x21–0x7E).
|
|
621
|
+
*
|
|
622
|
+
* A session id is caller data that travels everywhere the conversation does —
|
|
623
|
+
* the store's key, every log line, every exported trace span of every turn.
|
|
624
|
+
* Unbounded, one caller with no credentials could make every span of a turn
|
|
625
|
+
* carry megabytes; with a control, a line separator or a bidi override, it
|
|
626
|
+
* could forge or disguise a line in any log that prints it; with non-ASCII,
|
|
627
|
+
* the same id read from a header (latin1) and from a body (UTF-8) would be two
|
|
628
|
+
* different conversations. So it is bounded at the door, before any of that
|
|
629
|
+
* happens. The refusal says how long the id was, never what it said.
|
|
630
|
+
*/
|
|
631
|
+
export declare class InvalidSessionIdError extends Error {
|
|
632
|
+
readonly code: "ERR_INVALID_SESSION_ID";
|
|
633
|
+
/** 400 Bad Request — the caller can send a valid id and continue. */
|
|
634
|
+
readonly status: 400;
|
|
635
|
+
/** Which rule the id broke. Never the id. */
|
|
636
|
+
readonly reason: 'empty' | 'too-long' | 'invalid-character';
|
|
637
|
+
constructor(reason: 'empty' | 'too-long' | 'invalid-character', hostName: string, length: number, limit: number);
|
|
638
|
+
}
|
|
526
639
|
export declare function requireCapability(host: AgentHost | ConversationHost, capability: HostCapability): void;
|
|
527
640
|
//# sourceMappingURL=errors.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../../src/hosting/errors.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../../src/hosting/errors.ts"],"names":[],"mappings":"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"}
|
|
@@ -63,12 +63,28 @@
|
|
|
63
63
|
* whichever closes last; on a caller-owned one each door attaches and detaches
|
|
64
64
|
* its own listener and neither touches the socket.
|
|
65
65
|
*
|
|
66
|
+
* ── The door guard, on both doors ────────────────────────────────────────────
|
|
67
|
+
* Being able to reach the port is not permission: every browser inside the
|
|
68
|
+
* network can be steered by any page it opens. So before any handler sees a
|
|
69
|
+
* request, the request door and the conversation door ask one guard
|
|
70
|
+
* (`doorGuard.ts`): a Host this door was not configured for (421), a browser
|
|
71
|
+
* origin it does not allow (403), a state-changing request that does not say
|
|
72
|
+
* it is JSON (415) — and, once a dialect has read it, a session id over the
|
|
73
|
+
* bound (400). Judged on the headers alone — a refused body is never parsed,
|
|
74
|
+
* only drained when small so its sender reads the answer — and never invited
|
|
75
|
+
* with a `100 Continue` on a socket this host owns. Answered with the
|
|
76
|
+
* refusal's own sentence, reported to `onRefusal` listeners. Probes (the
|
|
77
|
+
* health GET, the HEAD probe) are never asked; routes handed to `onUnhandled`
|
|
78
|
+
* are the caller's. A loopback bind with `allowedHosts` unset answers the
|
|
79
|
+
* loopback names only.
|
|
80
|
+
*
|
|
66
81
|
* Pattern: Template method via configuration (Strategy on the wire format).
|
|
67
82
|
* Everything HTTP lives here and in the wires; `types.ts` knows none of it.
|
|
68
83
|
*/
|
|
69
84
|
/// <reference types="node" />
|
|
70
85
|
import type { IncomingMessage, Server, ServerResponse } from 'node:http';
|
|
71
86
|
import type { ArtifactWireRequest, ArtifactWireResult } from './artifactWire.js';
|
|
87
|
+
import { type CrossSiteOptions } from './doorGuard.js';
|
|
72
88
|
import type { SessionWireRequest, SessionWireResult } from './sessionWire.js';
|
|
73
89
|
import type { AgentHost, ConversationHandler, ConversationHost, ConversationLimits, HostCapability, HostHandle, HostHandler, PendingAsk } from './types.js';
|
|
74
90
|
import { type ConversationHandshake, type HandshakeFacts } from './webSocketConversation.js';
|
|
@@ -305,8 +321,16 @@ export interface HttpWire {
|
|
|
305
321
|
*/
|
|
306
322
|
readConversation?(facts: HandshakeFacts): ConversationHandshake;
|
|
307
323
|
}
|
|
308
|
-
/**
|
|
309
|
-
|
|
324
|
+
/**
|
|
325
|
+
* Options for {@link httpHost}.
|
|
326
|
+
*
|
|
327
|
+
* The three cross-site fields — `allowedOrigins`, `allowedHosts`,
|
|
328
|
+
* `requireJsonContentType` — come from {@link CrossSiteOptions} and are
|
|
329
|
+
* enforced by this host's door guard on its request door and its conversation
|
|
330
|
+
* door alike, before any handler sees a request. Their defaults are the safe
|
|
331
|
+
* ones; see `doorGuard.ts` for what each costs.
|
|
332
|
+
*/
|
|
333
|
+
export interface HttpHostOptions extends CrossSiteOptions {
|
|
310
334
|
/**
|
|
311
335
|
* Which adapter this is. Every refusal names it, so a caller reading an error
|
|
312
336
|
* learns which adapter said no rather than which file it came from.
|
|
@@ -331,7 +355,12 @@ export interface HttpHostOptions {
|
|
|
331
355
|
* not bind.
|
|
332
356
|
*/
|
|
333
357
|
readonly port?: number;
|
|
334
|
-
/**
|
|
358
|
+
/**
|
|
359
|
+
* Interface to bind. Default `'0.0.0.0'`. Refused together with `server`, for the same reason.
|
|
360
|
+
*
|
|
361
|
+
* Every interface means every name that resolves to one of them — which is
|
|
362
|
+
* why a host serving with `allowedHosts` unset says so once at boot.
|
|
363
|
+
*/
|
|
335
364
|
readonly hostname?: string;
|
|
336
365
|
/** What this adapter claims beyond the baseline. Default `['streaming']`. */
|
|
337
366
|
readonly capabilities?: readonly HostCapability[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"httpHost.d.ts","sourceRoot":"","sources":["../../../src/hosting/httpHost.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"httpHost.d.ts","sourceRoot":"","sources":["../../../src/hosting/httpHost.ts"],"names":[],"mappings":"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"}
|
|
@@ -92,7 +92,7 @@
|
|
|
92
92
|
* });
|
|
93
93
|
* process.on('SIGTERM', () => void handle.close());
|
|
94
94
|
*/
|
|
95
|
-
export { nodeHost, jsonWire, jsonWireWith, DEFAULT_SESSION_HEADER } from './nodeHost.js';
|
|
95
|
+
export { nodeHost, jsonWire, jsonWireWith, DEFAULT_SESSION_HEADER, DEFAULT_NODE_MAX_BODY_BYTES, } from './nodeHost.js';
|
|
96
96
|
export type { NodeHost, NodeHostHandle, NodeHostOptions, JsonWireOptions } from './nodeHost.js';
|
|
97
97
|
export { httpHost, headerValue } from './httpHost.js';
|
|
98
98
|
export type { ConversationHandshake, HandshakeFacts, HttpHost, HttpHostHandle, HttpHostOptions, FailureOrigin, HttpRequestFacts, HttpWire, StreamFrame, StreamFraming, } from './httpHost.js';
|
|
@@ -101,9 +101,11 @@ export { sqliteSessions, SqliteUnavailableError, UnreadableSessionFileError, } f
|
|
|
101
101
|
export type { SqliteSessions, SqliteSessionsOptions } from './sqliteSessions.js';
|
|
102
102
|
export { toEnvelope, envelopeOwner, envelopeTranscript, toPausedEnvelope, readEnvelope, readPausedRun, checkEnvelope, } from './envelope.js';
|
|
103
103
|
export { standingAgent } from './standingAgent.js';
|
|
104
|
-
export { DEFAULT_MAX_ACTIVE_SESSIONS, DEFAULT_SWEEP_LIMIT } from './types.js';
|
|
105
|
-
export { requireCapability, HostClosedError, ConcurrentRunError, PauseNotCarriedError, AwaitingDecisionError, NoPendingAskError, UnreadableEnvelopeError, ConversationClosedError, FrameTooLargeError, InvalidWireOpError, ArtifactSessionRequiredError, NoArtifactStoreError, ArtifactNotFoundError, ArtifactNotCarriedError, IdentityNotVerifiedError, VerifierUnavailableError, AdmissionRefusedError, SessionOpNeedsIdentityError, SessionIndexUnavailableError, SessionRetentionUnavailableError, SessionNotFoundError, SessionOwnershipConflictError, SessionsNotCarriedError, RequestTooLargeError, WireRequestRefusal, } from './errors.js';
|
|
106
|
-
export type { IdentityFailureClass } from './errors.js';
|
|
104
|
+
export { DEFAULT_MAX_ACTIVE_SESSIONS, DEFAULT_SWEEP_LIMIT, TURN_ARTIFACTS_TIMEOUT_MS, } from './types.js';
|
|
105
|
+
export { requireCapability, HostClosedError, ConcurrentRunError, PauseNotCarriedError, AwaitingDecisionError, NoPendingAskError, UnreadableEnvelopeError, ConversationClosedError, FrameTooLargeError, InvalidWireOpError, ArtifactSessionRequiredError, NoArtifactStoreError, ArtifactNotFoundError, ArtifactNotCarriedError, TurnArtifactsExpiredError, IdentityNotVerifiedError, VerifierUnavailableError, AdmissionRefusedError, SessionOpNeedsIdentityError, SessionIndexUnavailableError, SessionRetentionUnavailableError, SessionNotFoundError, SessionOwnershipConflictError, SessionsNotCarriedError, RequestTooLargeError, WireRequestRefusal, UnsupportedMediaTypeError, OriginNotAllowedError, HostNotAllowedError, InvalidSessionIdError, } from './errors.js';
|
|
106
|
+
export type { IdentityFailureClass, OriginRefusalRule } from './errors.js';
|
|
107
|
+
export { checkSessionId, doorGuard, MAX_SESSION_ID_LENGTH } from './doorGuard.js';
|
|
108
|
+
export type { CrossSiteOptions, CrossSiteRefusal, DoorGuard, DoorGuardOptions, DoorRequest, } from './doorGuard.js';
|
|
107
109
|
export { sessionRetention } from './sessionRetention.js';
|
|
108
110
|
export { resolveSessionOwner } from './sessionOwnership.js';
|
|
109
111
|
export { formatConformanceReport, runSessionLifecycleCase, runSessionLifecycleConformance, sessionLifecycleConformance, } from './conformance/index.js';
|
|
@@ -119,5 +121,5 @@ export { ALL_WIRE_OPS, isWireOp, refuseUnknownWireOp, WIRE_OPS } from './wireOps
|
|
|
119
121
|
export type { WireOpName } from './wireOps.js';
|
|
120
122
|
export { readArtifactWireOp, artifactWireBody, ARTIFACT_HEAD_OP, ARTIFACT_GET_OP, } from './artifactWire.js';
|
|
121
123
|
export type { ArtifactWireRequest, ArtifactWireResult } from './artifactWire.js';
|
|
122
|
-
export type { AgentHost, CheckpointEnvelope, ConcurrentInvokePolicy, ConversationClose, ConversationEnvelope, ConversationHandler, ConversationHost, ConversationLimits, DurabilityMode, HostCapability, HostConversation, HostHandle, HostHandler, HostReply, HostRequest, PausedRun, PausedRunEnvelope, PendingAsk, SessionExpiryPolicy, SessionLifecycle, SessionListOptions, SessionListPage, SessionRetention, SessionSweep, SessionSweepOptions, SessionSweepResult, StandingAgentBaseOptions, StandingAgentOptions, StandingAgentPoolOptions, StandingAgentSharedOptions, Unsubscribe, WakeReason, } from './types.js';
|
|
124
|
+
export type { AgentHost, CheckpointEnvelope, ConcurrentInvokePolicy, ConversationClose, ConversationEnvelope, ConversationHandler, ConversationHost, ConversationLimits, DurabilityMode, HostCapability, HostConversation, HostHandle, HostHandler, HostRefusal, HostReply, HostRequest, PausedRun, PausedRunEnvelope, PendingAsk, SessionExpiryPolicy, SessionLifecycle, SessionListOptions, SessionListPage, SessionRetention, SessionSweep, SessionSweepOptions, SessionSweepResult, StandingAgentBaseOptions, StandingAgentOptions, StandingAgentPoolOptions, StandingAgentSharedOptions, TurnArtifacts, Unsubscribe, WakeReason, } from './types.js';
|
|
123
125
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/hosting/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6FG;AAEH,OAAO,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/hosting/index.ts"],"names":[],"mappings":"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"}
|