@pentoshi/clai 0.10.5 → 0.11.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/README.md +32 -0
- package/dist/agent/runner.js +41 -3
- package/dist/agent/runner.js.map +1 -1
- package/dist/commands/providers.js +28 -0
- package/dist/commands/providers.js.map +1 -1
- package/dist/commands/search-providers.d.ts +50 -0
- package/dist/commands/search-providers.js +134 -0
- package/dist/commands/search-providers.js.map +1 -0
- package/dist/commands/update.js +1 -1
- package/dist/index.js +8 -0
- package/dist/index.js.map +1 -1
- package/dist/llm/provider.js +9 -6
- package/dist/llm/provider.js.map +1 -1
- package/dist/prompts/index.d.ts +1 -1
- package/dist/prompts/index.js +6 -0
- package/dist/prompts/index.js.map +1 -1
- package/dist/safety/classifier.js +40 -0
- package/dist/safety/classifier.js.map +1 -1
- package/dist/store/config.d.ts +5 -0
- package/dist/store/config.js +7 -0
- package/dist/store/config.js.map +1 -1
- package/dist/store/keys.d.ts +65 -0
- package/dist/store/keys.js +164 -28
- package/dist/store/keys.js.map +1 -1
- package/dist/tools/http.d.ts +12 -1
- package/dist/tools/http.js +8 -43
- package/dist/tools/http.js.map +1 -1
- package/dist/tools/registry.js +52 -0
- package/dist/tools/registry.js.map +1 -1
- package/dist/tools/shell.d.ts +25 -0
- package/dist/tools/shell.js +155 -6
- package/dist/tools/shell.js.map +1 -1
- package/dist/tools/web/audit.d.ts +154 -0
- package/dist/tools/web/audit.js +147 -0
- package/dist/tools/web/audit.js.map +1 -0
- package/dist/tools/web/budget.d.ts +76 -0
- package/dist/tools/web/budget.js +187 -0
- package/dist/tools/web/budget.js.map +1 -0
- package/dist/tools/web/capture.d.ts +201 -0
- package/dist/tools/web/capture.js +380 -0
- package/dist/tools/web/capture.js.map +1 -0
- package/dist/tools/web/fetch-core.d.ts +66 -0
- package/dist/tools/web/fetch-core.js +1123 -0
- package/dist/tools/web/fetch-core.js.map +1 -0
- package/dist/tools/web/fetch.d.ts +42 -0
- package/dist/tools/web/fetch.js +115 -0
- package/dist/tools/web/fetch.js.map +1 -0
- package/dist/tools/web/providers/brave.d.ts +46 -0
- package/dist/tools/web/providers/brave.js +263 -0
- package/dist/tools/web/providers/brave.js.map +1 -0
- package/dist/tools/web/providers/duckduckgo.d.ts +47 -0
- package/dist/tools/web/providers/duckduckgo.js +248 -0
- package/dist/tools/web/providers/duckduckgo.js.map +1 -0
- package/dist/tools/web/providers/provider.d.ts +99 -0
- package/dist/tools/web/providers/provider.js +38 -0
- package/dist/tools/web/providers/provider.js.map +1 -0
- package/dist/tools/web/providers/tavily.d.ts +52 -0
- package/dist/tools/web/providers/tavily.js +285 -0
- package/dist/tools/web/providers/tavily.js.map +1 -0
- package/dist/tools/web/readable.d.ts +67 -0
- package/dist/tools/web/readable.js +248 -0
- package/dist/tools/web/readable.js.map +1 -0
- package/dist/tools/web/redact.d.ts +120 -0
- package/dist/tools/web/redact.js +155 -0
- package/dist/tools/web/redact.js.map +1 -0
- package/dist/tools/web/search.d.ts +51 -0
- package/dist/tools/web/search.js +389 -0
- package/dist/tools/web/search.js.map +1 -0
- package/dist/tools/web/ssrf-guard.d.ts +85 -0
- package/dist/tools/web/ssrf-guard.js +265 -0
- package/dist/tools/web/ssrf-guard.js.map +1 -0
- package/dist/tools/web/types.d.ts +331 -0
- package/dist/tools/web/types.js +71 -0
- package/dist/tools/web/types.js.map +1 -0
- package/dist/ui/spinner.js +87 -14
- package/dist/ui/spinner.js.map +1 -1
- package/package.json +3 -1
package/dist/tools/shell.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shell.js","sourceRoot":"","sources":["../../src/tools/shell.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"shell.js","sourceRoot":"","sources":["../../src/tools/shell.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Audit-log payload builders for the `web.search` and `web.fetch` tools.
|
|
3
|
+
*
|
|
4
|
+
* Both tools must emit exactly one structured `auditLog` entry per
|
|
5
|
+
* invocation (Requirements 5.5 / 5.6). This module is the single source
|
|
6
|
+
* of truth for the *shape* of those entries; `search.ts` and `fetch.ts`
|
|
7
|
+
* call these builders and pass the result straight to `auditLog`.
|
|
8
|
+
*
|
|
9
|
+
* The payloads enforce two non-negotiable invariants on top of the
|
|
10
|
+
* field lists in the requirements:
|
|
11
|
+
*
|
|
12
|
+
* 1. **No secret leaks**. Header values and cookie values are routed
|
|
13
|
+
* through {@link stripForAudit} before they hit the payload, so
|
|
14
|
+
* sensitive headers (`Cookie`, `Set-Cookie`, `Authorization`,
|
|
15
|
+
* `Proxy-Authorization`) are removed entirely and cookies are
|
|
16
|
+
* reduced to `{name, domain, path, httpOnly, secure, sameSite}` —
|
|
17
|
+
* never the cookie value, regardless of `redactSensitive`
|
|
18
|
+
* (Requirements 5.11–5.13).
|
|
19
|
+
* 2. **Stable shape**. Every field listed in the requirements is
|
|
20
|
+
* either always present (requested/final URL, status, byte count,
|
|
21
|
+
* resolved IP, final hostname, response mode, hop count) or guarded
|
|
22
|
+
* by the corresponding `metadata.<field>` having been produced
|
|
23
|
+
* (TLS, timing, redirect chain, cookies). Optional fields are
|
|
24
|
+
* emitted iff their underlying metadata exists, so property tests
|
|
25
|
+
* can assert presence/absence deterministically.
|
|
26
|
+
*
|
|
27
|
+
* The query *text* is intentionally never put on the payload — the
|
|
28
|
+
* search audit log carries `queryLength` only, per Requirement 5.5.
|
|
29
|
+
* The fetch response body, request body, and any `Authorization`
|
|
30
|
+
* / `Cookie` request header values are likewise excluded by
|
|
31
|
+
* construction (Requirements 5.12, 5.13).
|
|
32
|
+
*/
|
|
33
|
+
import { type AuditSafeCookie } from "./redact.js";
|
|
34
|
+
import type { HeaderMap, ResponseMode, SearchProviderId, WebFetchOutcome, WebSearchOutcome } from "./types.js";
|
|
35
|
+
/**
|
|
36
|
+
* Categorical error description embedded in either audit payload when
|
|
37
|
+
* `outcome.ok === false`. The `kind` discriminator mirrors the matching
|
|
38
|
+
* `Web*ErrorKind` union from `types.ts` so consumers (and the property
|
|
39
|
+
* tests in 7.6) can switch on it without re-parsing the message.
|
|
40
|
+
*/
|
|
41
|
+
export interface AuditError {
|
|
42
|
+
kind: string;
|
|
43
|
+
message: string;
|
|
44
|
+
status?: number;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Subset of {@link TlsInfo} surfaced to the audit log. The full
|
|
48
|
+
* `subjectAltNames` list and `notBefore` are intentionally omitted —
|
|
49
|
+
* the requirements (5.8) call for the seven fields below and nothing
|
|
50
|
+
* else; including more would only widen the audit log surface.
|
|
51
|
+
*/
|
|
52
|
+
export interface AuditTlsInfo {
|
|
53
|
+
protocol: string;
|
|
54
|
+
cipher: string;
|
|
55
|
+
subjectCN: string;
|
|
56
|
+
issuerCN: string;
|
|
57
|
+
notAfter: string;
|
|
58
|
+
fingerprintSha256: string;
|
|
59
|
+
}
|
|
60
|
+
/** Per-phase millisecond timings copied straight from {@link TimingInfo}. */
|
|
61
|
+
export interface AuditTimingInfo {
|
|
62
|
+
dnsMs: number;
|
|
63
|
+
tcpMs: number;
|
|
64
|
+
/** Present iff the URL was `https://` (Requirement 5.9). */
|
|
65
|
+
tlsMs?: number;
|
|
66
|
+
ttfbMs: number;
|
|
67
|
+
totalMs: number;
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Single redirect hop entry in the audit log. Per Requirement 5.10 the
|
|
71
|
+
* audit payload only carries `url` and `status` — the `Location` header
|
|
72
|
+
* value is dropped because it can echo a session-bearing query string
|
|
73
|
+
* that the redact pass would not otherwise classify as sensitive.
|
|
74
|
+
*/
|
|
75
|
+
export interface AuditRedirectHop {
|
|
76
|
+
url: string;
|
|
77
|
+
status: number;
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Audit payload shape emitted for `tool.web_search`. Mirrors the field
|
|
81
|
+
* list in Requirement 5.5: provider id, integer query length, integer
|
|
82
|
+
* result count, outcome status (`ok`), and a categorical error block
|
|
83
|
+
* when the invocation failed.
|
|
84
|
+
*
|
|
85
|
+
* The query text itself never appears here.
|
|
86
|
+
*/
|
|
87
|
+
export interface SearchAuditPayload {
|
|
88
|
+
ok: boolean;
|
|
89
|
+
provider: SearchProviderId;
|
|
90
|
+
queryLength: number;
|
|
91
|
+
resultCount: number;
|
|
92
|
+
error?: AuditError;
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* Build the audit payload for a single `web.search` invocation.
|
|
96
|
+
*
|
|
97
|
+
* The caller passes the trimmed query length explicitly because the
|
|
98
|
+
* outcome object does not carry it (the query text is dropped before
|
|
99
|
+
* the outcome leaves the handler, by design — see Requirement 5.5).
|
|
100
|
+
* `queryLength` is clamped to `>= 0` and coerced to a non-negative
|
|
101
|
+
* integer so a malformed caller cannot inject a string or negative
|
|
102
|
+
* value into the audit log.
|
|
103
|
+
*/
|
|
104
|
+
export declare function buildSearchAuditPayload(outcome: WebSearchOutcome, queryLength: number): SearchAuditPayload;
|
|
105
|
+
/**
|
|
106
|
+
* Audit payload shape emitted for `tool.web_fetch`. Required fields are
|
|
107
|
+
* always present (Requirements 5.6–5.7); the optional sub-objects are
|
|
108
|
+
* present iff the corresponding metadata stage produced output:
|
|
109
|
+
*
|
|
110
|
+
* - `tls` when {@link WebFetchMetadata.tls} is defined
|
|
111
|
+
* (Requirement 5.8).
|
|
112
|
+
* - `timing` when {@link WebFetchMetadata.timing} is defined
|
|
113
|
+
* (Requirement 5.9).
|
|
114
|
+
* - `redirectChain` when {@link WebFetchMetadata.redirectChain} is
|
|
115
|
+
* defined and non-empty (Requirement 5.10).
|
|
116
|
+
* - `headers` when {@link WebFetchMetadata.headers} is defined,
|
|
117
|
+
* with sensitive header keys stripped entirely
|
|
118
|
+
* (Requirement 5.12).
|
|
119
|
+
* - `cookies` when {@link WebFetchMetadata.cookies} is defined
|
|
120
|
+
* and non-empty, reduced to the
|
|
121
|
+
* {@link AuditSafeCookie} shape (Requirement 5.11).
|
|
122
|
+
*/
|
|
123
|
+
export interface FetchAuditPayload {
|
|
124
|
+
ok: boolean;
|
|
125
|
+
requestedUrl: string;
|
|
126
|
+
finalUrl: string;
|
|
127
|
+
status: number;
|
|
128
|
+
bytesReceived: number;
|
|
129
|
+
resolvedIp: string;
|
|
130
|
+
finalHostname: string;
|
|
131
|
+
responseMode: ResponseMode;
|
|
132
|
+
hopCount: number;
|
|
133
|
+
headers?: HeaderMap;
|
|
134
|
+
cookies?: AuditSafeCookie[];
|
|
135
|
+
tls?: AuditTlsInfo;
|
|
136
|
+
timing?: AuditTimingInfo;
|
|
137
|
+
redirectChain?: AuditRedirectHop[];
|
|
138
|
+
error?: AuditError;
|
|
139
|
+
}
|
|
140
|
+
/**
|
|
141
|
+
* Build the audit payload for a single `web.fetch` invocation.
|
|
142
|
+
*
|
|
143
|
+
* Routes `outcome.metadata.headers` and `outcome.metadata.cookies`
|
|
144
|
+
* through {@link stripForAudit} unconditionally so the audit log
|
|
145
|
+
* never carries a `Cookie` / `Set-Cookie` / `Authorization` /
|
|
146
|
+
* `Proxy-Authorization` value, nor any cookie's `value`,
|
|
147
|
+
* `expires`, or `maxAge` (Requirements 5.11, 5.12).
|
|
148
|
+
*
|
|
149
|
+
* The `body` field of the outcome is intentionally never read here —
|
|
150
|
+
* the response body is excluded from the audit log per Requirement 5.6
|
|
151
|
+
* and the request body never enters the outcome shape per
|
|
152
|
+
* Requirement 5.13.
|
|
153
|
+
*/
|
|
154
|
+
export declare function buildFetchAuditPayload(outcome: WebFetchOutcome): FetchAuditPayload;
|
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Audit-log payload builders for the `web.search` and `web.fetch` tools.
|
|
3
|
+
*
|
|
4
|
+
* Both tools must emit exactly one structured `auditLog` entry per
|
|
5
|
+
* invocation (Requirements 5.5 / 5.6). This module is the single source
|
|
6
|
+
* of truth for the *shape* of those entries; `search.ts` and `fetch.ts`
|
|
7
|
+
* call these builders and pass the result straight to `auditLog`.
|
|
8
|
+
*
|
|
9
|
+
* The payloads enforce two non-negotiable invariants on top of the
|
|
10
|
+
* field lists in the requirements:
|
|
11
|
+
*
|
|
12
|
+
* 1. **No secret leaks**. Header values and cookie values are routed
|
|
13
|
+
* through {@link stripForAudit} before they hit the payload, so
|
|
14
|
+
* sensitive headers (`Cookie`, `Set-Cookie`, `Authorization`,
|
|
15
|
+
* `Proxy-Authorization`) are removed entirely and cookies are
|
|
16
|
+
* reduced to `{name, domain, path, httpOnly, secure, sameSite}` —
|
|
17
|
+
* never the cookie value, regardless of `redactSensitive`
|
|
18
|
+
* (Requirements 5.11–5.13).
|
|
19
|
+
* 2. **Stable shape**. Every field listed in the requirements is
|
|
20
|
+
* either always present (requested/final URL, status, byte count,
|
|
21
|
+
* resolved IP, final hostname, response mode, hop count) or guarded
|
|
22
|
+
* by the corresponding `metadata.<field>` having been produced
|
|
23
|
+
* (TLS, timing, redirect chain, cookies). Optional fields are
|
|
24
|
+
* emitted iff their underlying metadata exists, so property tests
|
|
25
|
+
* can assert presence/absence deterministically.
|
|
26
|
+
*
|
|
27
|
+
* The query *text* is intentionally never put on the payload — the
|
|
28
|
+
* search audit log carries `queryLength` only, per Requirement 5.5.
|
|
29
|
+
* The fetch response body, request body, and any `Authorization`
|
|
30
|
+
* / `Cookie` request header values are likewise excluded by
|
|
31
|
+
* construction (Requirements 5.12, 5.13).
|
|
32
|
+
*/
|
|
33
|
+
import { stripForAudit } from "./redact.js";
|
|
34
|
+
/**
|
|
35
|
+
* Build the audit payload for a single `web.search` invocation.
|
|
36
|
+
*
|
|
37
|
+
* The caller passes the trimmed query length explicitly because the
|
|
38
|
+
* outcome object does not carry it (the query text is dropped before
|
|
39
|
+
* the outcome leaves the handler, by design — see Requirement 5.5).
|
|
40
|
+
* `queryLength` is clamped to `>= 0` and coerced to a non-negative
|
|
41
|
+
* integer so a malformed caller cannot inject a string or negative
|
|
42
|
+
* value into the audit log.
|
|
43
|
+
*/
|
|
44
|
+
export function buildSearchAuditPayload(outcome, queryLength) {
|
|
45
|
+
const safeLength = Number.isFinite(queryLength)
|
|
46
|
+
? Math.max(0, Math.trunc(queryLength))
|
|
47
|
+
: 0;
|
|
48
|
+
const payload = {
|
|
49
|
+
ok: outcome.ok,
|
|
50
|
+
provider: outcome.provider,
|
|
51
|
+
queryLength: safeLength,
|
|
52
|
+
resultCount: Array.isArray(outcome.results) ? outcome.results.length : 0,
|
|
53
|
+
};
|
|
54
|
+
if (outcome.error) {
|
|
55
|
+
const err = {
|
|
56
|
+
kind: outcome.error.kind,
|
|
57
|
+
message: outcome.error.message,
|
|
58
|
+
};
|
|
59
|
+
if (typeof outcome.error.status === "number") {
|
|
60
|
+
err.status = outcome.error.status;
|
|
61
|
+
}
|
|
62
|
+
payload.error = err;
|
|
63
|
+
}
|
|
64
|
+
return payload;
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Build the audit payload for a single `web.fetch` invocation.
|
|
68
|
+
*
|
|
69
|
+
* Routes `outcome.metadata.headers` and `outcome.metadata.cookies`
|
|
70
|
+
* through {@link stripForAudit} unconditionally so the audit log
|
|
71
|
+
* never carries a `Cookie` / `Set-Cookie` / `Authorization` /
|
|
72
|
+
* `Proxy-Authorization` value, nor any cookie's `value`,
|
|
73
|
+
* `expires`, or `maxAge` (Requirements 5.11, 5.12).
|
|
74
|
+
*
|
|
75
|
+
* The `body` field of the outcome is intentionally never read here —
|
|
76
|
+
* the response body is excluded from the audit log per Requirement 5.6
|
|
77
|
+
* and the request body never enters the outcome shape per
|
|
78
|
+
* Requirement 5.13.
|
|
79
|
+
*/
|
|
80
|
+
export function buildFetchAuditPayload(outcome) {
|
|
81
|
+
const meta = outcome.metadata;
|
|
82
|
+
// Always-on redaction of headers and cookies for audit. See the
|
|
83
|
+
// module-level invariant (1): the audit log never sees sensitive
|
|
84
|
+
// header *values* nor any cookie *value*, regardless of the user's
|
|
85
|
+
// `redactSensitive` choice.
|
|
86
|
+
const safe = stripForAudit(meta.headers, meta.cookies);
|
|
87
|
+
const payload = {
|
|
88
|
+
ok: outcome.ok,
|
|
89
|
+
requestedUrl: meta.requestedUrl,
|
|
90
|
+
finalUrl: meta.finalUrl,
|
|
91
|
+
status: Math.trunc(meta.status) || 0,
|
|
92
|
+
bytesReceived: Math.max(0, Math.trunc(meta.bytesReceived) || 0),
|
|
93
|
+
resolvedIp: meta.resolvedIp,
|
|
94
|
+
finalHostname: meta.finalHostname,
|
|
95
|
+
responseMode: meta.mode,
|
|
96
|
+
hopCount: meta.redirectChain ? meta.redirectChain.length : 0,
|
|
97
|
+
};
|
|
98
|
+
if (meta.headers !== undefined) {
|
|
99
|
+
payload.headers = safe.headers;
|
|
100
|
+
}
|
|
101
|
+
if (meta.cookies !== undefined && safe.cookies.length > 0) {
|
|
102
|
+
payload.cookies = safe.cookies;
|
|
103
|
+
}
|
|
104
|
+
if (meta.tls) {
|
|
105
|
+
payload.tls = {
|
|
106
|
+
protocol: meta.tls.protocol,
|
|
107
|
+
cipher: meta.tls.cipher,
|
|
108
|
+
subjectCN: meta.tls.subjectCN,
|
|
109
|
+
issuerCN: meta.tls.issuerCN,
|
|
110
|
+
notAfter: meta.tls.notAfter,
|
|
111
|
+
fingerprintSha256: meta.tls.fingerprintSha256,
|
|
112
|
+
};
|
|
113
|
+
}
|
|
114
|
+
if (meta.timing) {
|
|
115
|
+
const t = {
|
|
116
|
+
dnsMs: meta.timing.dnsMs,
|
|
117
|
+
tcpMs: meta.timing.tcpMs,
|
|
118
|
+
ttfbMs: meta.timing.ttfbMs,
|
|
119
|
+
totalMs: meta.timing.totalMs,
|
|
120
|
+
};
|
|
121
|
+
if (typeof meta.timing.tlsMs === "number") {
|
|
122
|
+
t.tlsMs = meta.timing.tlsMs;
|
|
123
|
+
}
|
|
124
|
+
payload.timing = t;
|
|
125
|
+
}
|
|
126
|
+
if (meta.redirectChain && meta.redirectChain.length > 0) {
|
|
127
|
+
// Requirement 5.10: chronological, capped at 5. The pipeline already
|
|
128
|
+
// caps at MAX_REDIRECT_HOPS, but slice defensively to make this
|
|
129
|
+
// helper safe to call from tests with synthetic outcomes.
|
|
130
|
+
payload.redirectChain = meta.redirectChain.slice(0, 5).map((hop) => ({
|
|
131
|
+
url: hop.url,
|
|
132
|
+
status: Math.trunc(hop.status) || 0,
|
|
133
|
+
}));
|
|
134
|
+
}
|
|
135
|
+
if (outcome.error) {
|
|
136
|
+
const err = {
|
|
137
|
+
kind: outcome.error.kind,
|
|
138
|
+
message: outcome.error.message,
|
|
139
|
+
};
|
|
140
|
+
if (typeof outcome.error.status === "number") {
|
|
141
|
+
err.status = outcome.error.status;
|
|
142
|
+
}
|
|
143
|
+
payload.error = err;
|
|
144
|
+
}
|
|
145
|
+
return payload;
|
|
146
|
+
}
|
|
147
|
+
//# sourceMappingURL=audit.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"audit.js","sourceRoot":"","sources":["../../../src/tools/web/audit.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 64 KiB metadata budget enforcement for `web.fetch`.
|
|
3
|
+
*
|
|
4
|
+
* Requirement 2.35 caps the combined serialized size of the
|
|
5
|
+
* {@link HeaderMap}, {@link TlsInfo}, {@link TimingInfo},
|
|
6
|
+
* {@link RedirectChain}, and `cookies` array at
|
|
7
|
+
* {@link METADATA_BUDGET_BYTES} (64 KiB). When the assembled metadata
|
|
8
|
+
* exceeds the cap, this module reduces it deterministically using the
|
|
9
|
+
* order documented in `.kiro/specs/web-search-and-fetch/design.md`,
|
|
10
|
+
* "Truncation order at the 64 KiB cap":
|
|
11
|
+
*
|
|
12
|
+
* 1. Drop trailing cookies (last entry first) — Requirement 2.35.
|
|
13
|
+
* 2. Halve the longest header value (with the literal
|
|
14
|
+
* {@link TRUNCATION_MARKER} appended) until every header value's
|
|
15
|
+
* "content" portion is ≤ 1024 characters. Header keys are never
|
|
16
|
+
* removed so the agent always sees which headers were present.
|
|
17
|
+
* 3. Drop trailing redirect hops one at a time.
|
|
18
|
+
*
|
|
19
|
+
* `tls` and `timing` are well under 1 KiB combined and are never touched
|
|
20
|
+
* by this loop. The function is pure: caller inputs are not mutated; the
|
|
21
|
+
* returned object holds fresh copies of any arrays/maps that were
|
|
22
|
+
* shortened.
|
|
23
|
+
*
|
|
24
|
+
* The implementation is bounded to a fixed iteration count so a
|
|
25
|
+
* pathological input (for example, hundreds of header values that are
|
|
26
|
+
* all ≤ 1024 chars yet collectively still exceed the cap) cannot wedge
|
|
27
|
+
* the agent. In that edge case the returned `metadataBytes` may exceed
|
|
28
|
+
* {@link METADATA_BUDGET_BYTES} — the caller can decide whether to
|
|
29
|
+
* surface the overflow or treat it as a soft warning.
|
|
30
|
+
*/
|
|
31
|
+
import { type CookieInfo, type HeaderMap, type RedirectChain, type TimingInfo, type TlsInfo, METADATA_BUDGET_BYTES } from "./types.js";
|
|
32
|
+
/**
|
|
33
|
+
* Inputs accepted by {@link enforce}.
|
|
34
|
+
*
|
|
35
|
+
* Each field corresponds to one slice of {@link WebFetchMetadata}.
|
|
36
|
+
* Fields that the caller chose not to include (for example because the
|
|
37
|
+
* user passed `includeHeaders=false`) may be omitted or set to
|
|
38
|
+
* `undefined`; they are passed through to the result unchanged.
|
|
39
|
+
*/
|
|
40
|
+
export interface BudgetInput {
|
|
41
|
+
headers?: HeaderMap | undefined;
|
|
42
|
+
tls?: TlsInfo | undefined;
|
|
43
|
+
timing?: TimingInfo | undefined;
|
|
44
|
+
redirectChain?: RedirectChain | undefined;
|
|
45
|
+
cookies?: CookieInfo[] | undefined;
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Result returned by {@link enforce}. Optional fields are present iff
|
|
49
|
+
* the corresponding input field was present (an empty array is still
|
|
50
|
+
* "present"). `metadataBytes` is the UTF-8 byte length of
|
|
51
|
+
* `JSON.stringify({headers, tls, timing, redirectChain, cookies})` after
|
|
52
|
+
* the truncation loop has finished. `cap` mirrors the constant from
|
|
53
|
+
* `types.ts` so consumers can render `metadataBytes / cap` without
|
|
54
|
+
* importing it themselves.
|
|
55
|
+
*/
|
|
56
|
+
export interface BudgetResult {
|
|
57
|
+
headers?: HeaderMap;
|
|
58
|
+
tls?: TlsInfo;
|
|
59
|
+
timing?: TimingInfo;
|
|
60
|
+
redirectChain?: RedirectChain;
|
|
61
|
+
cookies?: CookieInfo[];
|
|
62
|
+
metadataBytes: number;
|
|
63
|
+
cap: typeof METADATA_BUDGET_BYTES;
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Enforce the 64 KiB metadata budget on the supplied fields.
|
|
67
|
+
*
|
|
68
|
+
* Returns a fresh {@link BudgetResult} containing (possibly shortened)
|
|
69
|
+
* copies of `headers`, `redirectChain`, and `cookies`, alongside `tls`
|
|
70
|
+
* and `timing` passed through unchanged, plus the final
|
|
71
|
+
* `metadataBytes` count.
|
|
72
|
+
*
|
|
73
|
+
* The returned arrays/maps are independent of the caller's inputs — the
|
|
74
|
+
* function does not mutate `input`.
|
|
75
|
+
*/
|
|
76
|
+
export declare function enforce(input: BudgetInput): BudgetResult;
|
|
@@ -0,0 +1,187 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 64 KiB metadata budget enforcement for `web.fetch`.
|
|
3
|
+
*
|
|
4
|
+
* Requirement 2.35 caps the combined serialized size of the
|
|
5
|
+
* {@link HeaderMap}, {@link TlsInfo}, {@link TimingInfo},
|
|
6
|
+
* {@link RedirectChain}, and `cookies` array at
|
|
7
|
+
* {@link METADATA_BUDGET_BYTES} (64 KiB). When the assembled metadata
|
|
8
|
+
* exceeds the cap, this module reduces it deterministically using the
|
|
9
|
+
* order documented in `.kiro/specs/web-search-and-fetch/design.md`,
|
|
10
|
+
* "Truncation order at the 64 KiB cap":
|
|
11
|
+
*
|
|
12
|
+
* 1. Drop trailing cookies (last entry first) — Requirement 2.35.
|
|
13
|
+
* 2. Halve the longest header value (with the literal
|
|
14
|
+
* {@link TRUNCATION_MARKER} appended) until every header value's
|
|
15
|
+
* "content" portion is ≤ 1024 characters. Header keys are never
|
|
16
|
+
* removed so the agent always sees which headers were present.
|
|
17
|
+
* 3. Drop trailing redirect hops one at a time.
|
|
18
|
+
*
|
|
19
|
+
* `tls` and `timing` are well under 1 KiB combined and are never touched
|
|
20
|
+
* by this loop. The function is pure: caller inputs are not mutated; the
|
|
21
|
+
* returned object holds fresh copies of any arrays/maps that were
|
|
22
|
+
* shortened.
|
|
23
|
+
*
|
|
24
|
+
* The implementation is bounded to a fixed iteration count so a
|
|
25
|
+
* pathological input (for example, hundreds of header values that are
|
|
26
|
+
* all ≤ 1024 chars yet collectively still exceed the cap) cannot wedge
|
|
27
|
+
* the agent. In that edge case the returned `metadataBytes` may exceed
|
|
28
|
+
* {@link METADATA_BUDGET_BYTES} — the caller can decide whether to
|
|
29
|
+
* surface the overflow or treat it as a soft warning.
|
|
30
|
+
*/
|
|
31
|
+
import { METADATA_BUDGET_BYTES, TRUNCATION_MARKER, } from "./types.js";
|
|
32
|
+
/**
|
|
33
|
+
* Per-header-value floor below which the budget loop will not halve any
|
|
34
|
+
* further. Once every header value's "content" portion (length excluding
|
|
35
|
+
* the trailing {@link TRUNCATION_MARKER}, when present) is at or below
|
|
36
|
+
* this number of characters, the loop moves on to dropping redirect
|
|
37
|
+
* hops.
|
|
38
|
+
*
|
|
39
|
+
* Matches the design pseudocode "any header value not yet truncated to
|
|
40
|
+
* 1024".
|
|
41
|
+
*/
|
|
42
|
+
const HEADER_VALUE_FLOOR = 1024;
|
|
43
|
+
/**
|
|
44
|
+
* Hard upper bound on the number of reduction steps the budget loop will
|
|
45
|
+
* perform per invocation. Each step either drops one cookie, halves one
|
|
46
|
+
* header value, or drops one redirect hop. With realistic inputs the
|
|
47
|
+
* loop terminates within a few dozen iterations; the cap exists purely
|
|
48
|
+
* to defend against pathological inputs that would otherwise loop
|
|
49
|
+
* forever.
|
|
50
|
+
*/
|
|
51
|
+
const MAX_ITERATIONS = 10_000;
|
|
52
|
+
/**
|
|
53
|
+
* Enforce the 64 KiB metadata budget on the supplied fields.
|
|
54
|
+
*
|
|
55
|
+
* Returns a fresh {@link BudgetResult} containing (possibly shortened)
|
|
56
|
+
* copies of `headers`, `redirectChain`, and `cookies`, alongside `tls`
|
|
57
|
+
* and `timing` passed through unchanged, plus the final
|
|
58
|
+
* `metadataBytes` count.
|
|
59
|
+
*
|
|
60
|
+
* The returned arrays/maps are independent of the caller's inputs — the
|
|
61
|
+
* function does not mutate `input`.
|
|
62
|
+
*/
|
|
63
|
+
export function enforce(input) {
|
|
64
|
+
// Shallow-copy any mutable structures so the caller's data is left
|
|
65
|
+
// untouched even when the loop pops or halves entries.
|
|
66
|
+
const headers = input.headers !== undefined ? { ...input.headers } : undefined;
|
|
67
|
+
const cookies = input.cookies !== undefined ? [...input.cookies] : undefined;
|
|
68
|
+
const redirectChain = input.redirectChain !== undefined ? [...input.redirectChain] : undefined;
|
|
69
|
+
const { tls, timing } = input;
|
|
70
|
+
const measure = () => Buffer.byteLength(JSON.stringify({ headers, tls, timing, redirectChain, cookies }), "utf8");
|
|
71
|
+
let metadataBytes = measure();
|
|
72
|
+
for (let i = 0; i < MAX_ITERATIONS && metadataBytes > METADATA_BUDGET_BYTES; i++) {
|
|
73
|
+
let progress = false;
|
|
74
|
+
if (cookies !== undefined && cookies.length > 0) {
|
|
75
|
+
// Step 1: drop trailing cookies first (Requirement 2.35).
|
|
76
|
+
cookies.pop();
|
|
77
|
+
progress = true;
|
|
78
|
+
}
|
|
79
|
+
else if (headers !== undefined && hasHalveableHeader(headers)) {
|
|
80
|
+
// Step 2: halve the longest header value with content > 1024 chars.
|
|
81
|
+
halveLongestHeaderValue(headers);
|
|
82
|
+
progress = true;
|
|
83
|
+
}
|
|
84
|
+
else if (redirectChain !== undefined && redirectChain.length > 0) {
|
|
85
|
+
// Step 3: drop trailing redirect hops as the last resort.
|
|
86
|
+
redirectChain.pop();
|
|
87
|
+
progress = true;
|
|
88
|
+
}
|
|
89
|
+
if (!progress)
|
|
90
|
+
break;
|
|
91
|
+
metadataBytes = measure();
|
|
92
|
+
}
|
|
93
|
+
return assemble({
|
|
94
|
+
headers,
|
|
95
|
+
tls,
|
|
96
|
+
timing,
|
|
97
|
+
redirectChain,
|
|
98
|
+
cookies,
|
|
99
|
+
metadataBytes,
|
|
100
|
+
});
|
|
101
|
+
}
|
|
102
|
+
// ---------------------------------------------------------------------------
|
|
103
|
+
// Internals
|
|
104
|
+
// ---------------------------------------------------------------------------
|
|
105
|
+
/**
|
|
106
|
+
* Return `true` iff at least one header value's content portion (length
|
|
107
|
+
* excluding the trailing {@link TRUNCATION_MARKER}, when present)
|
|
108
|
+
* exceeds {@link HEADER_VALUE_FLOOR}.
|
|
109
|
+
*/
|
|
110
|
+
function hasHalveableHeader(headers) {
|
|
111
|
+
for (const value of Object.values(headers)) {
|
|
112
|
+
if (contentLength(value) > HEADER_VALUE_FLOOR)
|
|
113
|
+
return true;
|
|
114
|
+
}
|
|
115
|
+
return false;
|
|
116
|
+
}
|
|
117
|
+
/**
|
|
118
|
+
* Find the header whose content portion is currently longest (ties
|
|
119
|
+
* resolved by iteration order, which is stable in V8 for string keys),
|
|
120
|
+
* halve that content in place, and append the
|
|
121
|
+
* {@link TRUNCATION_MARKER}. Header values whose content is already
|
|
122
|
+
* ≤ {@link HEADER_VALUE_FLOOR} are skipped; the function is a no-op when
|
|
123
|
+
* no such value exists.
|
|
124
|
+
*/
|
|
125
|
+
function halveLongestHeaderValue(headers) {
|
|
126
|
+
let bestKey;
|
|
127
|
+
let bestLen = -1;
|
|
128
|
+
for (const [key, value] of Object.entries(headers)) {
|
|
129
|
+
const len = contentLength(value);
|
|
130
|
+
if (len > HEADER_VALUE_FLOOR && len > bestLen) {
|
|
131
|
+
bestKey = key;
|
|
132
|
+
bestLen = len;
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
if (bestKey === undefined)
|
|
136
|
+
return;
|
|
137
|
+
const current = headers[bestKey];
|
|
138
|
+
if (current === undefined)
|
|
139
|
+
return;
|
|
140
|
+
const content = stripMarker(current);
|
|
141
|
+
const halved = content.slice(0, Math.floor(content.length / 2));
|
|
142
|
+
headers[bestKey] = `${halved}${TRUNCATION_MARKER}`;
|
|
143
|
+
}
|
|
144
|
+
/**
|
|
145
|
+
* Length of `value`'s "content" portion in characters: the full string
|
|
146
|
+
* length minus the {@link TRUNCATION_MARKER} suffix when one is
|
|
147
|
+
* present. Used so repeated halving of the same header value reduces
|
|
148
|
+
* the underlying content rather than treating the marker itself as
|
|
149
|
+
* shrinkable text.
|
|
150
|
+
*/
|
|
151
|
+
function contentLength(value) {
|
|
152
|
+
return stripMarker(value).length;
|
|
153
|
+
}
|
|
154
|
+
/**
|
|
155
|
+
* Strip a single trailing {@link TRUNCATION_MARKER} from `value` if one
|
|
156
|
+
* is present. Returns `value` unchanged otherwise. Used by the halving
|
|
157
|
+
* step so the marker is not duplicated when a header is truncated more
|
|
158
|
+
* than once across loop iterations.
|
|
159
|
+
*/
|
|
160
|
+
function stripMarker(value) {
|
|
161
|
+
return value.endsWith(TRUNCATION_MARKER)
|
|
162
|
+
? value.slice(0, value.length - TRUNCATION_MARKER.length)
|
|
163
|
+
: value;
|
|
164
|
+
}
|
|
165
|
+
/**
|
|
166
|
+
* Build the {@link BudgetResult} from the working state. Optional input
|
|
167
|
+
* fields that were not supplied are left absent on the result (rather
|
|
168
|
+
* than set to `undefined`) to satisfy `exactOptionalPropertyTypes`.
|
|
169
|
+
*/
|
|
170
|
+
function assemble(state) {
|
|
171
|
+
const result = {
|
|
172
|
+
metadataBytes: state.metadataBytes,
|
|
173
|
+
cap: METADATA_BUDGET_BYTES,
|
|
174
|
+
};
|
|
175
|
+
if (state.headers !== undefined)
|
|
176
|
+
result.headers = state.headers;
|
|
177
|
+
if (state.tls !== undefined)
|
|
178
|
+
result.tls = state.tls;
|
|
179
|
+
if (state.timing !== undefined)
|
|
180
|
+
result.timing = state.timing;
|
|
181
|
+
if (state.redirectChain !== undefined)
|
|
182
|
+
result.redirectChain = state.redirectChain;
|
|
183
|
+
if (state.cookies !== undefined)
|
|
184
|
+
result.cookies = state.cookies;
|
|
185
|
+
return result;
|
|
186
|
+
}
|
|
187
|
+
//# sourceMappingURL=budget.js.map
|