@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.
Files changed (77) hide show
  1. package/README.md +32 -0
  2. package/dist/agent/runner.js +41 -3
  3. package/dist/agent/runner.js.map +1 -1
  4. package/dist/commands/providers.js +28 -0
  5. package/dist/commands/providers.js.map +1 -1
  6. package/dist/commands/search-providers.d.ts +50 -0
  7. package/dist/commands/search-providers.js +134 -0
  8. package/dist/commands/search-providers.js.map +1 -0
  9. package/dist/commands/update.js +1 -1
  10. package/dist/index.js +8 -0
  11. package/dist/index.js.map +1 -1
  12. package/dist/llm/provider.js +9 -6
  13. package/dist/llm/provider.js.map +1 -1
  14. package/dist/prompts/index.d.ts +1 -1
  15. package/dist/prompts/index.js +6 -0
  16. package/dist/prompts/index.js.map +1 -1
  17. package/dist/safety/classifier.js +40 -0
  18. package/dist/safety/classifier.js.map +1 -1
  19. package/dist/store/config.d.ts +5 -0
  20. package/dist/store/config.js +7 -0
  21. package/dist/store/config.js.map +1 -1
  22. package/dist/store/keys.d.ts +65 -0
  23. package/dist/store/keys.js +164 -28
  24. package/dist/store/keys.js.map +1 -1
  25. package/dist/tools/http.d.ts +12 -1
  26. package/dist/tools/http.js +8 -43
  27. package/dist/tools/http.js.map +1 -1
  28. package/dist/tools/registry.js +52 -0
  29. package/dist/tools/registry.js.map +1 -1
  30. package/dist/tools/shell.d.ts +25 -0
  31. package/dist/tools/shell.js +155 -6
  32. package/dist/tools/shell.js.map +1 -1
  33. package/dist/tools/web/audit.d.ts +154 -0
  34. package/dist/tools/web/audit.js +147 -0
  35. package/dist/tools/web/audit.js.map +1 -0
  36. package/dist/tools/web/budget.d.ts +76 -0
  37. package/dist/tools/web/budget.js +187 -0
  38. package/dist/tools/web/budget.js.map +1 -0
  39. package/dist/tools/web/capture.d.ts +201 -0
  40. package/dist/tools/web/capture.js +380 -0
  41. package/dist/tools/web/capture.js.map +1 -0
  42. package/dist/tools/web/fetch-core.d.ts +66 -0
  43. package/dist/tools/web/fetch-core.js +1123 -0
  44. package/dist/tools/web/fetch-core.js.map +1 -0
  45. package/dist/tools/web/fetch.d.ts +42 -0
  46. package/dist/tools/web/fetch.js +115 -0
  47. package/dist/tools/web/fetch.js.map +1 -0
  48. package/dist/tools/web/providers/brave.d.ts +46 -0
  49. package/dist/tools/web/providers/brave.js +263 -0
  50. package/dist/tools/web/providers/brave.js.map +1 -0
  51. package/dist/tools/web/providers/duckduckgo.d.ts +47 -0
  52. package/dist/tools/web/providers/duckduckgo.js +248 -0
  53. package/dist/tools/web/providers/duckduckgo.js.map +1 -0
  54. package/dist/tools/web/providers/provider.d.ts +99 -0
  55. package/dist/tools/web/providers/provider.js +38 -0
  56. package/dist/tools/web/providers/provider.js.map +1 -0
  57. package/dist/tools/web/providers/tavily.d.ts +52 -0
  58. package/dist/tools/web/providers/tavily.js +285 -0
  59. package/dist/tools/web/providers/tavily.js.map +1 -0
  60. package/dist/tools/web/readable.d.ts +67 -0
  61. package/dist/tools/web/readable.js +248 -0
  62. package/dist/tools/web/readable.js.map +1 -0
  63. package/dist/tools/web/redact.d.ts +120 -0
  64. package/dist/tools/web/redact.js +155 -0
  65. package/dist/tools/web/redact.js.map +1 -0
  66. package/dist/tools/web/search.d.ts +51 -0
  67. package/dist/tools/web/search.js +389 -0
  68. package/dist/tools/web/search.js.map +1 -0
  69. package/dist/tools/web/ssrf-guard.d.ts +85 -0
  70. package/dist/tools/web/ssrf-guard.js +265 -0
  71. package/dist/tools/web/ssrf-guard.js.map +1 -0
  72. package/dist/tools/web/types.d.ts +331 -0
  73. package/dist/tools/web/types.js +71 -0
  74. package/dist/tools/web/types.js.map +1 -0
  75. package/dist/ui/spinner.js +87 -14
  76. package/dist/ui/spinner.js.map +1 -1
  77. package/package.json +3 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fetch-core.js","sourceRoot":"","sources":["../../../src/tools/web/fetch-core.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,42 @@
1
+ /**
2
+ * `web.fetch` registry handler.
3
+ *
4
+ * Thin adapter that converts a {@link WebFetchArgs} call into a typed
5
+ * {@link WebFetchOutcome} via {@link webFetchCore}, emits exactly one
6
+ * `auditLog("tool.web_fetch", payload)` per invocation (Requirement 5.6),
7
+ * and returns the standard {@link ToolResult} shape consumed by the agent
8
+ * loop and `tool.batch`.
9
+ *
10
+ * Output composition (per the design's "ToolResult mapping" section):
11
+ *
12
+ * <final URL> <status> <content-type>
13
+ * mode=<readable|raw> resolvedIp=<ip> ...
14
+ *
15
+ * <metadata block as JSON>
16
+ *
17
+ * ---
18
+ * <body>
19
+ *
20
+ * On error outcomes the `output` field begins with the human-readable
21
+ * message defined in the design's error matrix (e.g.
22
+ * "Refusing binary content type: image/png").
23
+ */
24
+ import type { ToolResult } from "../../types.js";
25
+ import type { ToolRunOptions } from "../registry.js";
26
+ import { type WebFetchCoreOptions } from "./fetch-core.js";
27
+ import type { WebFetchArgs } from "./types.js";
28
+ /**
29
+ * Optional injection point for tests so they can stub the underlying
30
+ * transport without monkey-patching `node:http`/`node:https`. Production
31
+ * callers never pass these; the registry handler invokes `webFetch`
32
+ * with no extra options.
33
+ */
34
+ export interface WebFetchOptions extends ToolRunOptions {
35
+ core?: WebFetchCoreOptions;
36
+ }
37
+ /**
38
+ * Run `web.fetch`. Always emits a single audit-log entry; never throws —
39
+ * argument validation, SSRF blocks, network errors, HTTP errors, and
40
+ * timeouts surface as `ok=false` results.
41
+ */
42
+ export declare function webFetch(args: WebFetchArgs, options?: WebFetchOptions): Promise<ToolResult>;
@@ -0,0 +1,115 @@
1
+ /**
2
+ * `web.fetch` registry handler.
3
+ *
4
+ * Thin adapter that converts a {@link WebFetchArgs} call into a typed
5
+ * {@link WebFetchOutcome} via {@link webFetchCore}, emits exactly one
6
+ * `auditLog("tool.web_fetch", payload)` per invocation (Requirement 5.6),
7
+ * and returns the standard {@link ToolResult} shape consumed by the agent
8
+ * loop and `tool.batch`.
9
+ *
10
+ * Output composition (per the design's "ToolResult mapping" section):
11
+ *
12
+ * <final URL> <status> <content-type>
13
+ * mode=<readable|raw> resolvedIp=<ip> ...
14
+ *
15
+ * <metadata block as JSON>
16
+ *
17
+ * ---
18
+ * <body>
19
+ *
20
+ * On error outcomes the `output` field begins with the human-readable
21
+ * message defined in the design's error matrix (e.g.
22
+ * "Refusing binary content type: image/png").
23
+ */
24
+ import { auditLog } from "../../store/logs.js";
25
+ import { webFetchCore, } from "./fetch-core.js";
26
+ import { buildFetchAuditPayload } from "./audit.js";
27
+ /**
28
+ * Run `web.fetch`. Always emits a single audit-log entry; never throws —
29
+ * argument validation, SSRF blocks, network errors, HTTP errors, and
30
+ * timeouts surface as `ok=false` results.
31
+ */
32
+ export async function webFetch(args, options = {}) {
33
+ const outcome = await webFetchCore(args, options.core ?? {});
34
+ // Audit every invocation, success or failure (Requirement 5.6).
35
+ // We never await the audit log so a slow disk does not delay the
36
+ // tool result; logging errors are swallowed because they should not
37
+ // cascade into a tool failure.
38
+ void emitAudit(outcome);
39
+ return outcome.ok ? renderSuccess(outcome) : renderError(outcome);
40
+ }
41
+ async function emitAudit(outcome) {
42
+ try {
43
+ await auditLog("tool.web_fetch", buildFetchAuditPayload(outcome));
44
+ }
45
+ catch {
46
+ // Audit-log failures must not surface as tool errors.
47
+ }
48
+ }
49
+ /**
50
+ * Compose the success-path `output` string. The first line is a one-shot
51
+ * summary so the agent sees the most useful facts before any JSON; the
52
+ * metadata JSON block follows; then `---` separates the body so the
53
+ * agent loop can split if needed.
54
+ */
55
+ function renderSuccess(outcome) {
56
+ const meta = outcome.metadata;
57
+ const summary = `${meta.finalUrl} ${meta.status}${meta.contentType ? ` ${meta.contentType}` : ""}`;
58
+ const second = `mode=${meta.mode} resolvedIp=${meta.resolvedIp || "?"} bytes=${meta.bytesReceived}${meta.truncated ? ` (truncated@${meta.truncatedAt ?? meta.bytesReceived})` : ""}`;
59
+ // Stripped metadata for the JSON block — drop the body-shape fields
60
+ // so the agent reads them once on the first line.
61
+ const jsonBlock = JSON.stringify({
62
+ requestedUrl: meta.requestedUrl,
63
+ finalUrl: meta.finalUrl,
64
+ status: meta.status,
65
+ contentType: meta.contentType,
66
+ resolvedIp: meta.resolvedIp,
67
+ finalHostname: meta.finalHostname,
68
+ mode: meta.mode,
69
+ bytesReceived: meta.bytesReceived,
70
+ truncated: meta.truncated,
71
+ truncatedAt: meta.truncatedAt,
72
+ headers: meta.headers,
73
+ tls: meta.tls,
74
+ timing: meta.timing,
75
+ redirectChain: meta.redirectChain,
76
+ cookies: meta.cookies,
77
+ budget: meta.budget,
78
+ }, null, 2);
79
+ const output = `${summary}\n${second}\n\n${jsonBlock}\n\n---\n${outcome.body}`;
80
+ return {
81
+ ok: true,
82
+ output,
83
+ exitCode: 0,
84
+ truncated: meta.truncated || false,
85
+ stats: {
86
+ bytesRead: meta.bytesReceived,
87
+ bytesDropped: 0,
88
+ linesRead: outcome.body.split("\n").length,
89
+ elapsedMs: meta.timing?.totalMs ?? 0,
90
+ },
91
+ };
92
+ }
93
+ /**
94
+ * Compose the error-path `output` string. The first line is the
95
+ * human-readable error message from the design's error matrix; a JSON
96
+ * envelope of the outcome follows so callers can branch on
97
+ * `error.kind` if needed.
98
+ */
99
+ function renderError(outcome) {
100
+ const err = outcome.error;
101
+ const head = err?.message ?? "web.fetch failed";
102
+ const body = JSON.stringify({
103
+ error: err,
104
+ requestedUrl: outcome.metadata.requestedUrl,
105
+ finalUrl: outcome.metadata.finalUrl,
106
+ resolvedIp: outcome.metadata.resolvedIp,
107
+ finalHostname: outcome.metadata.finalHostname,
108
+ }, null, 2);
109
+ return {
110
+ ok: false,
111
+ output: `${head}\n\n${body}`,
112
+ exitCode: 1,
113
+ };
114
+ }
115
+ //# sourceMappingURL=fetch.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fetch.js","sourceRoot":"","sources":["../../../src/tools/web/fetch.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,46 @@
1
+ /**
2
+ * Brave Search adapter for `web.search`.
3
+ *
4
+ * Implements the {@link SearchProvider} contract from `./provider.ts` and
5
+ * registers itself in the {@link searchProviders} registry on import. The
6
+ * adapter performs exactly one outbound HTTPS request per invocation
7
+ * (Requirement 6.7), forwards the caller-provided {@link AbortSignal} to
8
+ * the underlying transport so the 15-second `web.search` timeout is
9
+ * honored (Requirement 1.8), and returns a {@link RawProviderResponse}
10
+ * describing the HTTP outcome plus the raw hit list.
11
+ *
12
+ * Status-to-error-kind classification (`401/403 → auth`, `429 → rate-limit`,
13
+ * `5xx → server`, non-JSON → `parse`, other non-2xx → `http`) is the
14
+ * responsibility of the `web.search` handler; this adapter only exposes
15
+ * the raw HTTP `status` and the parsed (or `parseError`-flagged) hit list
16
+ * so that mapping can be applied uniformly across providers (Requirements
17
+ * 6.1, 6.2, 6.5, 6.6).
18
+ *
19
+ * Endpoint and request shape match the design's "Per-provider notes →
20
+ * Brave Search" section (`.kiro/specs/web-search-and-fetch/design.md`).
21
+ */
22
+ import https from "node:https";
23
+ import { type SearchProvider } from "./provider.js";
24
+ /**
25
+ * Inject point for the underlying HTTPS transport so unit/property tests
26
+ * in epic 7.x can drive the adapter without touching the network. The
27
+ * default mirrors the standard `node:https.request` signature.
28
+ *
29
+ * Kept module-private (not exported) because the public adapter contract
30
+ * intentionally takes no transport argument — `web.search` always uses
31
+ * the default transport in production.
32
+ */
33
+ type HttpsRequestFn = typeof https.request;
34
+ /**
35
+ * Test-only seam: swap the HTTPS transport used by the adapter.
36
+ * Production callers never invoke this; tests in 7.x use it to inject a
37
+ * stubbed `request` implementation that emits scripted responses.
38
+ */
39
+ export declare function __setBraveHttpsRequestForTesting(fn: HttpsRequestFn | undefined): void;
40
+ /**
41
+ * Brave Search adapter. Registered in {@link searchProviders} as a
42
+ * side-effect of importing this module — `web.search` resolves the active
43
+ * provider via the registry.
44
+ */
45
+ export declare const braveProvider: SearchProvider;
46
+ export {};
@@ -0,0 +1,263 @@
1
+ /**
2
+ * Brave Search adapter for `web.search`.
3
+ *
4
+ * Implements the {@link SearchProvider} contract from `./provider.ts` and
5
+ * registers itself in the {@link searchProviders} registry on import. The
6
+ * adapter performs exactly one outbound HTTPS request per invocation
7
+ * (Requirement 6.7), forwards the caller-provided {@link AbortSignal} to
8
+ * the underlying transport so the 15-second `web.search` timeout is
9
+ * honored (Requirement 1.8), and returns a {@link RawProviderResponse}
10
+ * describing the HTTP outcome plus the raw hit list.
11
+ *
12
+ * Status-to-error-kind classification (`401/403 → auth`, `429 → rate-limit`,
13
+ * `5xx → server`, non-JSON → `parse`, other non-2xx → `http`) is the
14
+ * responsibility of the `web.search` handler; this adapter only exposes
15
+ * the raw HTTP `status` and the parsed (or `parseError`-flagged) hit list
16
+ * so that mapping can be applied uniformly across providers (Requirements
17
+ * 6.1, 6.2, 6.5, 6.6).
18
+ *
19
+ * Endpoint and request shape match the design's "Per-provider notes →
20
+ * Brave Search" section (`.kiro/specs/web-search-and-fetch/design.md`).
21
+ */
22
+ import https from "node:https";
23
+ import { searchProviders, } from "./provider.js";
24
+ // ---------------------------------------------------------------------------
25
+ // Constants
26
+ // ---------------------------------------------------------------------------
27
+ /** Brave Search Web API endpoint (host + path). */
28
+ const BRAVE_HOST = "api.search.brave.com";
29
+ const BRAVE_PATH = "/res/v1/web/search";
30
+ /**
31
+ * `count` parameter accepted by the Brave Web Search API. The provider's
32
+ * documented range is 1..20, which already matches the `maxResults`
33
+ * clamp the `web.search` handler enforces, so we forward the value
34
+ * unchanged but defend against out-of-range inputs that might slip past
35
+ * the handler in tests.
36
+ */
37
+ const BRAVE_MIN_COUNT = 1;
38
+ const BRAVE_MAX_COUNT = 20;
39
+ /** User-Agent sent on outbound Brave requests. */
40
+ const DEFAULT_USER_AGENT = "clai-web-search/1.0";
41
+ /**
42
+ * Hard cap on the number of body bytes we read from the provider before
43
+ * giving up and surfacing a `parse` error. Brave responses for 20 hits
44
+ * are well under 100 KiB; this cap is defensive against a misbehaving
45
+ * upstream that streams an unbounded body.
46
+ */
47
+ const MAX_RESPONSE_BYTES = 1_048_576; // 1 MiB
48
+ let httpsRequestFn = https.request;
49
+ /**
50
+ * Test-only seam: swap the HTTPS transport used by the adapter.
51
+ * Production callers never invoke this; tests in 7.x use it to inject a
52
+ * stubbed `request` implementation that emits scripted responses.
53
+ */
54
+ export function __setBraveHttpsRequestForTesting(fn) {
55
+ httpsRequestFn = fn ?? https.request;
56
+ }
57
+ /**
58
+ * Clamp `count` to the Brave-supported range. The handler is expected to
59
+ * pass an already-clamped value, but defending here keeps the adapter
60
+ * self-consistent if invoked directly (e.g. from a test).
61
+ */
62
+ function clampCount(count) {
63
+ if (!Number.isFinite(count))
64
+ return BRAVE_MIN_COUNT;
65
+ const rounded = Math.trunc(count);
66
+ if (rounded < BRAVE_MIN_COUNT)
67
+ return BRAVE_MIN_COUNT;
68
+ if (rounded > BRAVE_MAX_COUNT)
69
+ return BRAVE_MAX_COUNT;
70
+ return rounded;
71
+ }
72
+ /**
73
+ * Drain `res` into a UTF-8 string, capped at {@link MAX_RESPONSE_BYTES}.
74
+ * The body cap defends against a misbehaving upstream; the
75
+ * {@link AbortSignal} short-circuits the read on `web.search`'s 15-second
76
+ * timeout (Requirement 1.8).
77
+ */
78
+ function readBody(res, signal) {
79
+ return new Promise((resolve, reject) => {
80
+ const chunks = [];
81
+ let total = 0;
82
+ let aborted = false;
83
+ const onAbort = () => {
84
+ if (aborted)
85
+ return;
86
+ aborted = true;
87
+ res.destroy(new Error("aborted"));
88
+ reject(signal.reason instanceof Error
89
+ ? signal.reason
90
+ : new Error("aborted"));
91
+ };
92
+ if (signal.aborted) {
93
+ onAbort();
94
+ return;
95
+ }
96
+ signal.addEventListener("abort", onAbort, { once: true });
97
+ res.on("data", (chunk) => {
98
+ if (aborted)
99
+ return;
100
+ total += chunk.length;
101
+ if (total > MAX_RESPONSE_BYTES) {
102
+ aborted = true;
103
+ signal.removeEventListener("abort", onAbort);
104
+ res.destroy();
105
+ reject(new Error("response body exceeded 1 MiB cap"));
106
+ return;
107
+ }
108
+ chunks.push(chunk);
109
+ });
110
+ res.on("end", () => {
111
+ if (aborted)
112
+ return;
113
+ signal.removeEventListener("abort", onAbort);
114
+ resolve(Buffer.concat(chunks).toString("utf8"));
115
+ });
116
+ res.on("error", (err) => {
117
+ if (aborted)
118
+ return;
119
+ aborted = true;
120
+ signal.removeEventListener("abort", onAbort);
121
+ reject(err);
122
+ });
123
+ });
124
+ }
125
+ /**
126
+ * Issue the Brave HTTP GET and return `{status, body}` once the response
127
+ * is fully read. Network failures (DNS, connect, TLS, socket reset)
128
+ * propagate as a thrown error so the adapter can map them to
129
+ * `RawProviderResponse` with a `status: 0` placeholder for the search
130
+ * handler's `network` classification (Requirement 6.3).
131
+ */
132
+ function dispatchRequest(query, count, apiKey, signal) {
133
+ const params = new URLSearchParams();
134
+ params.set("q", query);
135
+ params.set("count", String(count));
136
+ const path = `${BRAVE_PATH}?${params.toString()}`;
137
+ return new Promise((resolve, reject) => {
138
+ const req = httpsRequestFn({
139
+ method: "GET",
140
+ host: BRAVE_HOST,
141
+ path,
142
+ signal,
143
+ headers: {
144
+ accept: "application/json",
145
+ "user-agent": DEFAULT_USER_AGENT,
146
+ // Brave Search expects the key in this exact header
147
+ // (case-insensitive per HTTP, but we use the canonical casing
148
+ // from Brave's published examples for clarity in audit logs).
149
+ "X-Subscription-Token": apiKey,
150
+ },
151
+ }, (res) => {
152
+ const status = res.statusCode ?? 0;
153
+ readBody(res, signal).then((body) => resolve({ status, body }), (err) => reject(err));
154
+ });
155
+ req.on("error", (err) => {
156
+ reject(err);
157
+ });
158
+ req.end();
159
+ });
160
+ }
161
+ /**
162
+ * Extract the Brave `web.results[]` array from a parsed JSON body and map
163
+ * it to the {@link RawProviderResponse.hits} shape. Each hit contributes
164
+ * `title`/`url`/`description` (Brave's snippet field) verbatim; the
165
+ * `web.search` handler is responsible for further validation (URL
166
+ * shape, whitespace, control chars — Requirement 7.3).
167
+ *
168
+ * Returns `null` when the JSON body did not have the expected
169
+ * `{ web: { results: [...] } }` shape, signalling the adapter to surface
170
+ * a `parseError` so the handler can emit `error.kind="parse"`
171
+ * (Requirement 6.5).
172
+ */
173
+ function extractHits(parsed) {
174
+ if (!parsed || typeof parsed !== "object")
175
+ return null;
176
+ const web = parsed.web;
177
+ if (!web || typeof web !== "object")
178
+ return null;
179
+ const results = web.results;
180
+ if (!Array.isArray(results))
181
+ return null;
182
+ const hits = [];
183
+ for (const entry of results) {
184
+ if (!entry || typeof entry !== "object")
185
+ continue;
186
+ const e = entry;
187
+ const hit = {};
188
+ if (typeof e.title === "string")
189
+ hit.title = e.title;
190
+ if (typeof e.url === "string")
191
+ hit.url = e.url;
192
+ if (typeof e.description === "string")
193
+ hit.snippet = e.description;
194
+ hits.push(hit);
195
+ }
196
+ return hits;
197
+ }
198
+ // ---------------------------------------------------------------------------
199
+ // Provider definition
200
+ // ---------------------------------------------------------------------------
201
+ /**
202
+ * Brave Search adapter. Registered in {@link searchProviders} as a
203
+ * side-effect of importing this module — `web.search` resolves the active
204
+ * provider via the registry.
205
+ */
206
+ export const braveProvider = {
207
+ id: "brave",
208
+ displayName: "Brave Search",
209
+ needsApiKey: true,
210
+ envVar: "BRAVE_SEARCH_API_KEY",
211
+ async search(query, maxResults, auth, signal) {
212
+ // Defensive: the handler resolves the key before calling us. If
213
+ // somehow we're invoked without one, surface a 0-status response so
214
+ // the handler can map it to `missing-key` / `network` rather than
215
+ // dispatching an unauthenticated request to Brave.
216
+ if (!auth.apiKey) {
217
+ return {
218
+ status: 0,
219
+ hits: [],
220
+ parseError: "missing api key",
221
+ };
222
+ }
223
+ const count = clampCount(maxResults);
224
+ const { status, body } = await dispatchRequest(query, count, auth.apiKey, signal);
225
+ // Non-2xx: forward the status with an empty hit list. The search
226
+ // handler maps the status to the appropriate error kind
227
+ // (`auth` for 401/403, `rate-limit` for 429, `server` for 5xx,
228
+ // `http` for everything else).
229
+ if (status < 200 || status >= 300) {
230
+ return { status, hits: [] };
231
+ }
232
+ // 2xx: parse JSON. Anything that does not parse, or whose shape
233
+ // does not match `{ web: { results: [...] } }`, surfaces as
234
+ // `parseError` so the handler emits `error.kind="parse"`
235
+ // (Requirement 6.5).
236
+ let parsed;
237
+ try {
238
+ parsed = JSON.parse(body);
239
+ }
240
+ catch (err) {
241
+ return {
242
+ status,
243
+ hits: [],
244
+ parseError: err instanceof Error
245
+ ? `non-JSON response: ${err.message}`
246
+ : "non-JSON response",
247
+ };
248
+ }
249
+ const hits = extractHits(parsed);
250
+ if (hits === null) {
251
+ return {
252
+ status,
253
+ hits: [],
254
+ parseError: "missing web.results array in Brave response",
255
+ };
256
+ }
257
+ return { status, hits };
258
+ },
259
+ };
260
+ // Register on import so `searchProviders.brave` is populated by the time
261
+ // the `web.search` handler dispatches.
262
+ searchProviders.brave = braveProvider;
263
+ //# sourceMappingURL=brave.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"brave.js","sourceRoot":"","sources":["../../../../src/tools/web/providers/brave.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,47 @@
1
+ /**
2
+ * DuckDuckGo search-provider adapter.
3
+ *
4
+ * Used as the keyless default so `clai` works out of the box without
5
+ * any API key (Requirement 3.5). The adapter targets DuckDuckGo's
6
+ * lite-HTML endpoint at `https://html.duckduckgo.com/html/?q=…`,
7
+ * parses the response with `cheerio`, unwraps the in-page redirect
8
+ * shim (`/l/?uddg=<encoded>`) so callers see the destination URL, and
9
+ * applies the same URL filter `web.search` enforces (Requirement 7.3)
10
+ * before forwarding hits to the registry handler.
11
+ *
12
+ * The adapter does not need redirect-chain capture, fine-grained
13
+ * timing, TLS metadata, or DNS-rebinding protection beyond the
14
+ * per-invocation `AbortSignal`, so it deliberately bypasses the full
15
+ * `fetch-core` pipeline. A small `node:https.request`-based helper
16
+ * keeps the implementation simple while still honoring the 15-second
17
+ * `web.search` invocation timeout (Requirement 1.8) via the supplied
18
+ * `AbortSignal`.
19
+ *
20
+ * Per Requirement 6.7 the adapter issues exactly one outbound request
21
+ * per invocation and never retries on transient failure.
22
+ */
23
+ import https from "node:https";
24
+ import type { SearchProvider } from "./provider.js";
25
+ /**
26
+ * Inject point for the underlying HTTPS transport. Mirrors the seam in
27
+ * `./brave.ts` so unit tests can drive the adapter without touching the
28
+ * network. Production code never invokes the setter.
29
+ */
30
+ type HttpsRequestFn = typeof https.request;
31
+ /**
32
+ * Test-only seam: swap the HTTPS transport used by the adapter. Tests use
33
+ * this to inject a stubbed `request` implementation that emits scripted
34
+ * responses; production callers never invoke it.
35
+ */
36
+ export declare function __setDuckduckgoHttpsRequestForTesting(fn: HttpsRequestFn | undefined): void;
37
+ /**
38
+ * The DuckDuckGo {@link SearchProvider} adapter.
39
+ *
40
+ * Resolves a search query into a {@link RawProviderResponse} carrying
41
+ * up to `maxResults` `{title, url, snippet}` hits. URL filtering and
42
+ * `maxResults` truncation happen here so the registry handler does not
43
+ * have to re-walk the cheerio tree; the handler still re-applies the
44
+ * filter for defense in depth (Requirement 7.3).
45
+ */
46
+ export declare const duckduckgoProvider: SearchProvider;
47
+ export {};