@alexanderfortin/pi-tavily-tools 0.1.2 → 0.2.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 (45) hide show
  1. package/README.md +152 -8
  2. package/dist/index.d.ts.map +1 -1
  3. package/dist/index.js +2 -0
  4. package/dist/index.js.map +1 -1
  5. package/dist/tools/index.d.ts +1 -0
  6. package/dist/tools/index.d.ts.map +1 -1
  7. package/dist/tools/index.js +1 -0
  8. package/dist/tools/index.js.map +1 -1
  9. package/dist/tools/shared/execute.d.ts +28 -0
  10. package/dist/tools/shared/execute.d.ts.map +1 -0
  11. package/dist/tools/shared/execute.js +39 -0
  12. package/dist/tools/shared/execute.js.map +1 -0
  13. package/dist/tools/shared/truncation.d.ts.map +1 -1
  14. package/dist/tools/shared/truncation.js +2 -1
  15. package/dist/tools/shared/truncation.js.map +1 -1
  16. package/dist/tools/tavily/client.d.ts +10 -1
  17. package/dist/tools/tavily/client.d.ts.map +1 -1
  18. package/dist/tools/tavily/client.js +46 -1
  19. package/dist/tools/tavily/client.js.map +1 -1
  20. package/dist/tools/tavily/details.d.ts +14 -2
  21. package/dist/tools/tavily/details.d.ts.map +1 -1
  22. package/dist/tools/tavily/details.js +29 -0
  23. package/dist/tools/tavily/details.js.map +1 -1
  24. package/dist/tools/tavily/formatters.d.ts +12 -1
  25. package/dist/tools/tavily/formatters.d.ts.map +1 -1
  26. package/dist/tools/tavily/formatters.js +79 -5
  27. package/dist/tools/tavily/formatters.js.map +1 -1
  28. package/dist/tools/tavily/renderers.d.ts +11 -0
  29. package/dist/tools/tavily/renderers.d.ts.map +1 -1
  30. package/dist/tools/tavily/renderers.js +121 -0
  31. package/dist/tools/tavily/renderers.js.map +1 -1
  32. package/dist/tools/tavily/schemas.d.ts +7 -0
  33. package/dist/tools/tavily/schemas.d.ts.map +1 -1
  34. package/dist/tools/tavily/schemas.js +16 -0
  35. package/dist/tools/tavily/schemas.js.map +1 -1
  36. package/dist/tools/tavily/types.d.ts +31 -0
  37. package/dist/tools/tavily/types.d.ts.map +1 -1
  38. package/dist/tools/web-extract.d.ts +17 -0
  39. package/dist/tools/web-extract.d.ts.map +1 -0
  40. package/dist/tools/web-extract.js +69 -0
  41. package/dist/tools/web-extract.js.map +1 -0
  42. package/dist/tools/web-search.d.ts.map +1 -1
  43. package/dist/tools/web-search.js +10 -17
  44. package/dist/tools/web-search.js.map +1 -1
  45. package/package.json +4 -2
package/README.md CHANGED
@@ -1,10 +1,13 @@
1
- # Pi Tavily Web Search Extension
1
+ # Pi Tavily Web Search & Extract Extension
2
2
 
3
3
  [![codecov](https://codecov.io/gh/shaftoe/pi-tavily-tools/graph/badge.svg?token=jFWEnUSop4)](https://codecov.io/gh/shaftoe/pi-tavily-tools)
4
4
 
5
- Add web search capabilities to Pi using the Tavily search API.
5
+ Add web search and content extraction capabilities to [Pi coding agent](https://pi.dev) using the Tavily API.
6
6
 
7
- This extension provides a `web_search` tool that the LLM can use to find current information, recent news, documentation, and time-sensitive data.
7
+ This extension provides two tools:
8
+
9
+ - `web_search`: Find current information, recent news, documentation, and time-sensitive data
10
+ - `web_extract`: Extract raw content from one or more web pages for detailed analysis
8
11
 
9
12
  Requires a valid `TAVILY_API_KEY` exported in the enviornment, e.g.
10
13
 
@@ -16,12 +19,26 @@ You can get a free one at <https://tavily.com>
16
19
 
17
20
  ## Features
18
21
 
19
- - **Web Search:** Query the web for real-time information
22
+ ### Web Search
23
+
24
+ - **Real-time Search:** Query the web for current information
20
25
  - **AI-Generated Answers:** Get direct answers to questions powered by Tavily
21
26
  - **Configurable Depth:** Choose between "basic" and "advanced" search modes
22
27
  - **Time Filtering:** Limit results to recent timeframes (e.g., last 7 days)
23
28
  - **Image Support:** Include relevant images in search results
24
- - **Content Extraction:** Optional raw content for deeper analysis
29
+ - **Raw Content:** Optional raw content for deeper analysis
30
+
31
+ ### Web Extract
32
+
33
+ - **Content Extraction:** Extract full content from one or more URLs
34
+ - **Batch Processing:** Extract from up to 20 URLs in a single request
35
+ - **Configurable Depth:** Choose between "basic" and "advanced" extraction
36
+ - **Multiple Formats:** Output in markdown or plain text
37
+ - **Image Extraction:** Optionally include images from pages
38
+ - **Query Filtering:** Focus extraction on specific content within pages
39
+
40
+ ### Shared Features
41
+
25
42
  - **Proper Truncation:** Output truncated to 50KB / 2000 lines to avoid context overflow
26
43
  - **Custom TUI Rendering:** Beautiful display with expandable results
27
44
  - **Error Handling:** Graceful failures with helpful error messages
@@ -160,6 +177,94 @@ The `web_search` tool accepts the following parameters:
160
177
  { query: "Bun documentation", include_raw_content: true }
161
178
  ```
162
179
 
180
+ ## Web Extract Usage
181
+
182
+ ### Basic Content Extraction
183
+
184
+ Extract the full content of a specific page:
185
+
186
+ ```
187
+ Extract the content from https://example.com/article
188
+ ```
189
+
190
+ ```
191
+ Read the full article at https://docs.example.com/guide
192
+ ```
193
+
194
+ ### Batch Extraction
195
+
196
+ Extract content from multiple URLs at once:
197
+
198
+ ```
199
+ Extract content from these pages:
200
+ - https://wikipedia.org/wiki/Artificial_intelligence
201
+ - https://wikipedia.org/wiki/Machine_learning
202
+ - https://wikipedia.org/wiki/Data_science
203
+ ```
204
+
205
+ ### Extract with Images
206
+
207
+ Include images when extracting content:
208
+
209
+ ```
210
+ Extract the article and images from https://example.com/visual-guide
211
+ ```
212
+
213
+ ### Plain Text Format
214
+
215
+ Get content in plain text instead of markdown:
216
+
217
+ ```
218
+ Extract https://example.com/article as plain text
219
+ ```
220
+
221
+ ### Content Filtering
222
+
223
+ Focus extraction on specific content:
224
+
225
+ ```
226
+ Extract content about "security" from https://example.com/docs
227
+ ```
228
+
229
+ ### Advanced Extraction
230
+
231
+ Use advanced extraction for more comprehensive content:
232
+
233
+ ```
234
+ Extract detailed content from https://example.com/long-article using advanced mode
235
+ ```
236
+
237
+ ## Web Extract Parameters
238
+
239
+ The `web_extract` tool accepts the following parameters:
240
+
241
+ | Parameter | Type | Required | Default | Description |
242
+ | ---------------- | ------- | -------- | ---------- | ---------------------------------------------- |
243
+ | `urls` | array | Yes | - | Array of URLs to extract content from (max 20) |
244
+ | `extract_depth` | string | No | "basic" | Extraction depth: "basic" or "advanced" |
245
+ | `include_images` | boolean | No | false | Include images from pages |
246
+ | `format` | string | No | "markdown" | Output format: "markdown" or "text" |
247
+ | `query` | string | No | - | Optional query to focus extraction on content |
248
+
249
+ ### Parameter Examples
250
+
251
+ ```typescript
252
+ // Single URL extraction
253
+ { urls: ["https://example.com/article"] }
254
+
255
+ // Multiple URLs
256
+ { urls: ["https://site1.com", "https://site2.com", "https://site3.com"] }
257
+
258
+ // Advanced extraction with images
259
+ { urls: ["https://example.com"], extract_depth: "advanced", include_images: true }
260
+
261
+ // Plain text format
262
+ { urls: ["https://example.com"], format: "text" }
263
+
264
+ // Content filtering
265
+ { urls: ["https://docs.example.com"], query: "API reference" }
266
+ ```
267
+
163
268
  ## Output Truncation
164
269
 
165
270
  To prevent overwhelming the LLM context, tool output is truncated to:
@@ -172,7 +277,9 @@ Whichever limit is hit first triggers truncation.
172
277
  When output is truncated:
173
278
 
174
279
  - A warning is displayed in the results
175
- - Full output is saved to a temp file in your project directory: `.pi-tavily-temp/search-{timestamp}.txt`
280
+ - Full output is saved to a temp file in your project directory:
281
+ - `.pi-tavily-temp/search-{timestamp}.txt` for web_search
282
+ - `.pi-tavily-temp/extract-{timestamp}.txt` for web_extract
176
283
  - The LLM is informed where to find the complete output
177
284
 
178
285
  ## Troubleshooting
@@ -251,6 +358,37 @@ Error: You have exceeded your monthly request limit
251
358
  3. Remove any special characters or complex filters
252
359
  4. Try basic search depth instead of advanced
253
360
 
361
+ ### No Content Extracted
362
+
363
+ **Symptoms:**
364
+
365
+ - Extract returns "No content was extracted successfully."
366
+ - All URLs failed
367
+
368
+ **Solutions:**
369
+
370
+ 1. Check that URLs are accessible (try opening in a browser)
371
+ 2. Verify URLs start with `http://` or `https://`
372
+ 3. Some websites may block automated extraction
373
+ 4. Try with different URLs
374
+ 5. Check failed results for specific error messages
375
+
376
+ ### URL Validation Errors
377
+
378
+ **Error Messages:**
379
+
380
+ ```
381
+ Error: URLs array cannot be empty
382
+ Error: Invalid URL format
383
+ Error: Maximum 20 URLs allowed
384
+ ```
385
+
386
+ **Solutions:**
387
+
388
+ 1. Provide at least one URL in the urls array
389
+ 2. Ensure all URLs are valid and start with http:// or https://
390
+ 3. Limit to 20 URLs maximum per request
391
+
254
392
  ## Development
255
393
 
256
394
  ### Project Structure
@@ -276,8 +414,10 @@ pi-tavily-tools/
276
414
  │ └── tools/
277
415
  │ ├── index.ts # Tool exports
278
416
  │ ├── web-search.ts # Web search tool implementation
417
+ │ ├── web-extract.ts # Web extract tool implementation
279
418
  │ ├── tavily/ # Tavily API integration
280
419
  │ │ ├── client.ts # Tavily client & initialization
420
+ │ │ ├── details.ts # Result details builders
281
421
  │ │ ├── formatters.ts # Response formatting
282
422
  │ │ ├── renderers.ts # TUI rendering utilities
283
423
  │ │ ├── schemas.ts # TypeBox parameter schemas
@@ -286,13 +426,17 @@ pi-tavily-tools/
286
426
  │ └── truncation.ts # Output truncation utilities
287
427
  └── tests/
288
428
  ├── integration/ # Integration tests
289
- └── web-search.test.ts
429
+ ├── web-search.test.ts
430
+ │ └── web-extract.test.ts
290
431
  ├── client.test.ts
291
432
  ├── create-error-output.test.ts
433
+ ├── details.test.ts
292
434
  ├── formatters.test.ts
293
435
  ├── renderers.test.ts
294
436
  ├── schemas.test.ts
295
- └── truncation.test.ts
437
+ ├── truncation.test.ts
438
+ ├── web-search.test.ts
439
+ └── web-extract.test.ts
296
440
  ```
297
441
 
298
442
  ### Running Type Checks
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAIlE;;;;;;GAMG;AACH,MAAM,CAAC,OAAO,WAAW,EAAE,EAAE,YAAY,GAAG,IAAI,CAmB/C"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAKlE;;;;;;GAMG;AACH,MAAM,CAAC,OAAO,WAAW,EAAE,EAAE,YAAY,GAAG,IAAI,CAoB/C"}
package/dist/index.js CHANGED
@@ -6,6 +6,7 @@
6
6
  * information, recent news, documentation, and time-sensitive data.
7
7
  */
8
8
  import { createTavilyClient } from "./tools/tavily/client.js";
9
+ import { registerWebExtractTool } from "./tools/web-extract.js";
9
10
  import { registerWebSearchTool } from "./tools/web-search.js";
10
11
  /**
11
12
  * Main extension entry point.
@@ -23,6 +24,7 @@ export default function (pi) {
23
24
  try {
24
25
  const client = createTavilyClient();
25
26
  registerWebSearchTool(pi, client);
27
+ registerWebExtractTool(pi, client);
26
28
  }
27
29
  catch (error) {
28
30
  if (error instanceof Error) {
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAE9D;;;;;;GAMG;AACH,MAAM,CAAC,OAAO,WAAW,EAAgB;IACvC,IAAI,UAAU,GAAG,KAAK,CAAC;IAEvB,EAAE,CAAC,EAAE,CAAC,eAAe,EAAE,CAAC,MAAM,EAAE,GAAG,EAAE,EAAE;QACrC,IAAI,UAAU;YAAE,OAAO;QACvB,UAAU,GAAG,IAAI,CAAC;QAElB,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,kBAAkB,EAAE,CAAC;YACpC,qBAAqB,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;QACpC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;gBAC3B,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,qBAAqB,KAAK,CAAC,OAAO,EAAE,EAAE,OAAO,CAAC,CAAC;YAC/D,CAAC;iBAAM,CAAC;gBACN,2DAA2D;gBAC3D,MAAM,KAAK,CAAC;YACd,CAAC;QACH,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AAChE,OAAO,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAE9D;;;;;;GAMG;AACH,MAAM,CAAC,OAAO,WAAW,EAAgB;IACvC,IAAI,UAAU,GAAG,KAAK,CAAC;IAEvB,EAAE,CAAC,EAAE,CAAC,eAAe,EAAE,CAAC,MAAM,EAAE,GAAG,EAAE,EAAE;QACrC,IAAI,UAAU;YAAE,OAAO;QACvB,UAAU,GAAG,IAAI,CAAC;QAElB,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,kBAAkB,EAAE,CAAC;YACpC,qBAAqB,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;YAClC,sBAAsB,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;QACrC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;gBAC3B,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,qBAAqB,KAAK,CAAC,OAAO,EAAE,EAAE,OAAO,CAAC,CAAC;YAC/D,CAAC;iBAAM,CAAC;gBACN,2DAA2D;gBAC3D,MAAM,KAAK,CAAC;YACd,CAAC;QACH,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -3,5 +3,6 @@
3
3
  *
4
4
  * This package provides Pi tools for interacting with Tavily's API.
5
5
  */
6
+ export { registerWebExtractTool } from "./web-extract.js";
6
7
  export { registerWebSearchTool } from "./web-search.js";
7
8
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAC;AAC1D,OAAO,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC"}
@@ -3,5 +3,6 @@
3
3
  *
4
4
  * This package provides Pi tools for interacting with Tavily's API.
5
5
  */
6
+ export { registerWebExtractTool } from "./web-extract.js";
6
7
  export { registerWebSearchTool } from "./web-search.js";
7
8
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAC;AAC1D,OAAO,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC"}
@@ -0,0 +1,28 @@
1
+ /**
2
+ * Shared execute helpers for Tavily tools
3
+ *
4
+ * Provides reusable utilities for the common phases of tool execution:
5
+ * - Progress updates (onUpdate)
6
+ * - Truncation + result assembly
7
+ */
8
+ import type { AgentToolUpdateCallback, ExtensionContext, TruncationResult } from "@mariozechner/pi-coding-agent";
9
+ /**
10
+ * Send a progress update to the TUI during tool execution.
11
+ * Wraps the common `onUpdate?.({ content: [...], details: {} })` pattern.
12
+ */
13
+ export declare function sendProgress(onUpdate: AgentToolUpdateCallback | undefined, message: string): void;
14
+ /**
15
+ * Apply truncation to full output and assemble the standard tool result.
16
+ *
17
+ * Handles: truncation → temp file (if needed) → `{ content, details }` return shape.
18
+ * The `buildDetails` callback receives truncation metadata so each tool can
19
+ * include it in its own typed details object.
20
+ */
21
+ export declare function buildToolResult<TDetails>(fullOutput: string, ctx: ExtensionContext, toolName: string, buildDetails: (truncation: TruncationResult | undefined, fullOutputPath: string | undefined) => TDetails): Promise<{
22
+ content: Array<{
23
+ type: "text";
24
+ text: string;
25
+ }>;
26
+ details: TDetails;
27
+ }>;
28
+ //# sourceMappingURL=execute.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"execute.d.ts","sourceRoot":"","sources":["../../../src/tools/shared/execute.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EACV,uBAAuB,EACvB,gBAAgB,EAChB,gBAAgB,EACjB,MAAM,+BAA+B,CAAC;AAQvC;;;GAGG;AACH,wBAAgB,YAAY,CAAC,QAAQ,EAAE,uBAAuB,GAAG,SAAS,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAKjG;AAMD;;;;;;GAMG;AACH,wBAAsB,eAAe,CAAC,QAAQ,EAC5C,UAAU,EAAE,MAAM,EAClB,GAAG,EAAE,gBAAgB,EACrB,QAAQ,EAAE,MAAM,EAChB,YAAY,EAAE,CACZ,UAAU,EAAE,gBAAgB,GAAG,SAAS,EACxC,cAAc,EAAE,MAAM,GAAG,SAAS,KAC/B,QAAQ,GACZ,OAAO,CAAC;IACT,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC/C,OAAO,EAAE,QAAQ,CAAC;CACnB,CAAC,CAWD"}
@@ -0,0 +1,39 @@
1
+ /**
2
+ * Shared execute helpers for Tavily tools
3
+ *
4
+ * Provides reusable utilities for the common phases of tool execution:
5
+ * - Progress updates (onUpdate)
6
+ * - Truncation + result assembly
7
+ */
8
+ import { applyTruncation } from "./truncation.js";
9
+ // ============================================================================
10
+ // Progress Update
11
+ // ============================================================================
12
+ /**
13
+ * Send a progress update to the TUI during tool execution.
14
+ * Wraps the common `onUpdate?.({ content: [...], details: {} })` pattern.
15
+ */
16
+ export function sendProgress(onUpdate, message) {
17
+ onUpdate?.({
18
+ content: [{ type: "text", text: message }],
19
+ details: {},
20
+ });
21
+ }
22
+ // ============================================================================
23
+ // Tool Result Assembly
24
+ // ============================================================================
25
+ /**
26
+ * Apply truncation to full output and assemble the standard tool result.
27
+ *
28
+ * Handles: truncation → temp file (if needed) → `{ content, details }` return shape.
29
+ * The `buildDetails` callback receives truncation metadata so each tool can
30
+ * include it in its own typed details object.
31
+ */
32
+ export async function buildToolResult(fullOutput, ctx, toolName, buildDetails) {
33
+ const { content, truncation, fullOutputPath } = await applyTruncation(fullOutput, ctx.cwd, toolName);
34
+ return {
35
+ content: [{ type: "text", text: content }],
36
+ details: buildDetails(truncation, fullOutputPath),
37
+ };
38
+ }
39
+ //# sourceMappingURL=execute.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"execute.js","sourceRoot":"","sources":["../../../src/tools/shared/execute.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAQH,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAElD,+EAA+E;AAC/E,kBAAkB;AAClB,+EAA+E;AAE/E;;;GAGG;AACH,MAAM,UAAU,YAAY,CAAC,QAA6C,EAAE,OAAe;IACzF,QAAQ,EAAE,CAAC;QACT,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;QAC1C,OAAO,EAAE,EAAE;KACZ,CAAC,CAAC;AACL,CAAC;AAED,+EAA+E;AAC/E,uBAAuB;AACvB,+EAA+E;AAE/E;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,UAAkB,EAClB,GAAqB,EACrB,QAAgB,EAChB,YAGa;IAKb,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,GAAG,MAAM,eAAe,CACnE,UAAU,EACV,GAAG,CAAC,GAAG,EACP,QAAQ,CACT,CAAC;IAEF,OAAO;QACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;QAC1C,OAAO,EAAE,YAAY,CAAC,UAAU,EAAE,cAAc,CAAC;KAClD,CAAC;AACJ,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"truncation.d.ts","sourceRoot":"","sources":["../../../src/tools/shared/truncation.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAML,KAAK,gBAAgB,EACtB,MAAM,+BAA+B,CAAC;AAMvC,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,gBAAgB,CAAC;IAC9B,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED;;GAEG;AACH,wBAAsB,eAAe,CACnC,UAAU,EAAE,MAAM,EAClB,GAAG,EAAE,MAAM,EACX,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,eAAe,CAAC,CAuC1B"}
1
+ {"version":3,"file":"truncation.d.ts","sourceRoot":"","sources":["../../../src/tools/shared/truncation.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAML,KAAK,gBAAgB,EACtB,MAAM,+BAA+B,CAAC;AAMvC,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,gBAAgB,CAAC;IAC9B,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED;;GAEG;AACH,wBAAsB,eAAe,CACnC,UAAU,EAAE,MAAM,EAClB,GAAG,EAAE,MAAM,EACX,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,eAAe,CAAC,CAwC1B"}
@@ -29,7 +29,8 @@ export async function applyTruncation(fullOutput, cwd, toolName) {
29
29
  content += `showing ${truncation.outputLines} of ${truncation.totalLines} lines, `;
30
30
  content += `(${formatSize(truncation.outputBytes)} of ${formatSize(truncation.totalBytes)}). `;
31
31
  content += `${truncatedLines} lines (${formatSize(truncatedBytes)}) omitted. `;
32
- content += `Full output saved to: ${tempFile}]`;
32
+ content += `Full output saved to: ${tempFile}. `;
33
+ content += "Use the read tool to read the full output from this file.]";
33
34
  return {
34
35
  content,
35
36
  truncation,
@@ -1 +1 @@
1
- {"version":3,"file":"truncation.js","sourceRoot":"","sources":["../../../src/tools/shared/truncation.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EACL,iBAAiB,EACjB,iBAAiB,EACjB,UAAU,EACV,YAAY,EACZ,qBAAqB,GAEtB,MAAM,+BAA+B,CAAC;AAYvC;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,UAAkB,EAClB,GAAW,EACX,QAAgB;IAEhB,MAAM,UAAU,GAAG,YAAY,CAAC,UAAU,EAAE;QAC1C,QAAQ,EAAE,iBAAiB;QAC3B,QAAQ,EAAE,iBAAiB;KAC5B,CAAC,CAAC;IAEH,IAAI,OAAO,GAAG,UAAU,CAAC,OAAO,CAAC;IAEjC,6CAA6C;IAC7C,IAAI,UAAU,CAAC,SAAS,EAAE,CAAC;QACzB,MAAM,OAAO,GAAG,GAAG,GAAG,kBAAkB,CAAC;QACzC,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAC7B,MAAM,QAAQ,GAAG,GAAG,OAAO,IAAI,QAAQ,IAAI,SAAS,MAAM,CAAC;QAE3D,MAAM,qBAAqB,CAAC,QAAQ,EAAE,KAAK,IAAI,EAAE;YAC/C,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,MAAM,MAAM,CAAC,kBAAkB,CAAC,CAAC;YAC9D,MAAM,KAAK,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YAC1C,MAAM,SAAS,CAAC,QAAQ,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC;QAChD,CAAC,CAAC,CAAC;QAEH,wBAAwB;QACxB,MAAM,cAAc,GAAG,UAAU,CAAC,UAAU,GAAG,UAAU,CAAC,WAAW,CAAC;QACtE,MAAM,cAAc,GAAG,UAAU,CAAC,UAAU,GAAG,UAAU,CAAC,WAAW,CAAC;QAEtE,OAAO,IAAI,MAAM,CAAC;QAClB,OAAO,IAAI,qBAAqB,CAAC;QACjC,OAAO,IAAI,WAAW,UAAU,CAAC,WAAW,OAAO,UAAU,CAAC,UAAU,UAAU,CAAC;QACnF,OAAO,IAAI,IAAI,UAAU,CAAC,UAAU,CAAC,WAAW,CAAC,OAAO,UAAU,CAAC,UAAU,CAAC,UAAU,CAAC,KAAK,CAAC;QAC/F,OAAO,IAAI,GAAG,cAAc,WAAW,UAAU,CAAC,cAAc,CAAC,aAAa,CAAC;QAC/E,OAAO,IAAI,yBAAyB,QAAQ,GAAG,CAAC;QAEhD,OAAO;YACL,OAAO;YACP,UAAU;YACV,cAAc,EAAE,QAAQ;SACzB,CAAC;IACJ,CAAC;IAED,OAAO,EAAE,OAAO,EAAE,CAAC;AACrB,CAAC"}
1
+ {"version":3,"file":"truncation.js","sourceRoot":"","sources":["../../../src/tools/shared/truncation.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EACL,iBAAiB,EACjB,iBAAiB,EACjB,UAAU,EACV,YAAY,EACZ,qBAAqB,GAEtB,MAAM,+BAA+B,CAAC;AAYvC;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,UAAkB,EAClB,GAAW,EACX,QAAgB;IAEhB,MAAM,UAAU,GAAG,YAAY,CAAC,UAAU,EAAE;QAC1C,QAAQ,EAAE,iBAAiB;QAC3B,QAAQ,EAAE,iBAAiB;KAC5B,CAAC,CAAC;IAEH,IAAI,OAAO,GAAG,UAAU,CAAC,OAAO,CAAC;IAEjC,6CAA6C;IAC7C,IAAI,UAAU,CAAC,SAAS,EAAE,CAAC;QACzB,MAAM,OAAO,GAAG,GAAG,GAAG,kBAAkB,CAAC;QACzC,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAC7B,MAAM,QAAQ,GAAG,GAAG,OAAO,IAAI,QAAQ,IAAI,SAAS,MAAM,CAAC;QAE3D,MAAM,qBAAqB,CAAC,QAAQ,EAAE,KAAK,IAAI,EAAE;YAC/C,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,MAAM,MAAM,CAAC,kBAAkB,CAAC,CAAC;YAC9D,MAAM,KAAK,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YAC1C,MAAM,SAAS,CAAC,QAAQ,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC;QAChD,CAAC,CAAC,CAAC;QAEH,wBAAwB;QACxB,MAAM,cAAc,GAAG,UAAU,CAAC,UAAU,GAAG,UAAU,CAAC,WAAW,CAAC;QACtE,MAAM,cAAc,GAAG,UAAU,CAAC,UAAU,GAAG,UAAU,CAAC,WAAW,CAAC;QAEtE,OAAO,IAAI,MAAM,CAAC;QAClB,OAAO,IAAI,qBAAqB,CAAC;QACjC,OAAO,IAAI,WAAW,UAAU,CAAC,WAAW,OAAO,UAAU,CAAC,UAAU,UAAU,CAAC;QACnF,OAAO,IAAI,IAAI,UAAU,CAAC,UAAU,CAAC,WAAW,CAAC,OAAO,UAAU,CAAC,UAAU,CAAC,UAAU,CAAC,KAAK,CAAC;QAC/F,OAAO,IAAI,GAAG,cAAc,WAAW,UAAU,CAAC,cAAc,CAAC,aAAa,CAAC;QAC/E,OAAO,IAAI,yBAAyB,QAAQ,IAAI,CAAC;QACjD,OAAO,IAAI,4DAA4D,CAAC;QAExE,OAAO;YACL,OAAO;YACP,UAAU;YACV,cAAc,EAAE,QAAQ;SACzB,CAAC;IACJ,CAAC;IAED,OAAO,EAAE,OAAO,EAAE,CAAC;AACrB,CAAC"}
@@ -3,7 +3,7 @@
3
3
  *
4
4
  * Creates Tavily client instances with proper initialization.
5
5
  */
6
- import { type TavilyClient, type TavilySearchOptions } from "@tavily/core";
6
+ import { type TavilyClient, type TavilyExtractOptions, type TavilySearchOptions } from "@tavily/core";
7
7
  /**
8
8
  * Create a new Tavily client instance
9
9
  * @throws {Error} If TAVILY_API_KEY is not set or client initialization fails
@@ -24,4 +24,13 @@ export declare function createSearchFunction(client: TavilyClient): import("@tav
24
24
  * @throws {Error} If query is empty or whitespace only
25
25
  */
26
26
  export declare function validateQuery(query: string): string;
27
+ /**
28
+ * Build Tavily extract options from parameters
29
+ */
30
+ export declare function buildExtractOptions(params: Record<string, unknown>): TavilyExtractOptions;
31
+ /**
32
+ * Validate URLs array
33
+ * @throws {Error} If URLs array is empty, exceeds max count, or contains invalid URLs
34
+ */
35
+ export declare function validateUrls(urls: unknown[]): string[];
27
36
  //# sourceMappingURL=client.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../src/tools/tavily/client.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAU,KAAK,YAAY,EAAE,KAAK,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAMnF;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,YAAY,CAiBhE;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,mBAAmB,CAYvF;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,YAAY,8CAExD;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAMnD"}
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../src/tools/tavily/client.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAEL,KAAK,YAAY,EACjB,KAAK,oBAAoB,EACzB,KAAK,mBAAmB,EACzB,MAAM,cAAc,CAAC;AAMtB;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,YAAY,CAiBhE;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,mBAAmB,CAYvF;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,YAAY,8CAExD;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAMnD;AAMD;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,oBAAoB,CAOzF;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,MAAM,EAAE,CAiCtD"}
@@ -3,7 +3,7 @@
3
3
  *
4
4
  * Creates Tavily client instances with proper initialization.
5
5
  */
6
- import { tavily } from "@tavily/core";
6
+ import { tavily, } from "@tavily/core";
7
7
  // ============================================================================
8
8
  // Client Creation
9
9
  // ============================================================================
@@ -59,4 +59,49 @@ export function validateQuery(query) {
59
59
  }
60
60
  return trimmed;
61
61
  }
62
+ // ============================================================================
63
+ // Extract Helpers
64
+ // ============================================================================
65
+ /**
66
+ * Build Tavily extract options from parameters
67
+ */
68
+ export function buildExtractOptions(params) {
69
+ return {
70
+ extractDepth: params.extract_depth ?? "basic",
71
+ includeImages: params.include_images === true,
72
+ format: params.format ?? "markdown",
73
+ query: typeof params.query === "string" ? params.query : undefined,
74
+ };
75
+ }
76
+ /**
77
+ * Validate URLs array
78
+ * @throws {Error} If URLs array is empty, exceeds max count, or contains invalid URLs
79
+ */
80
+ export function validateUrls(urls) {
81
+ if (!Array.isArray(urls)) {
82
+ throw new Error("URLs must be an array");
83
+ }
84
+ if (urls.length === 0) {
85
+ throw new Error("URLs array cannot be empty");
86
+ }
87
+ if (urls.length > 20) {
88
+ throw new Error("Maximum 20 URLs allowed, got " + urls.length);
89
+ }
90
+ const validatedUrls = [];
91
+ for (const url of urls) {
92
+ if (typeof url !== "string") {
93
+ throw new Error("All URLs must be strings");
94
+ }
95
+ const trimmed = url.trim();
96
+ if (!trimmed) {
97
+ throw new Error("URLs cannot be empty strings");
98
+ }
99
+ // Basic URL validation - must start with http:// or https://
100
+ if (!trimmed.match(/^https?:\/\//i)) {
101
+ throw new Error(`Invalid URL format: ${trimmed}. URLs must start with http:// or https://`);
102
+ }
103
+ validatedUrls.push(trimmed);
104
+ }
105
+ return validatedUrls;
106
+ }
62
107
  //# sourceMappingURL=client.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"client.js","sourceRoot":"","sources":["../../../src/tools/tavily/client.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,MAAM,EAA+C,MAAM,cAAc,CAAC;AAEnF,+EAA+E;AAC/E,kBAAkB;AAClB,+EAA+E;AAE/E;;;GAGG;AACH,MAAM,UAAU,kBAAkB,CAAC,MAAe;IAChD,MAAM,GAAG,GAAG,MAAM,IAAI,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC;IACjD,IAAI,CAAC,GAAG,EAAE,CAAC;QACT,MAAM,IAAI,KAAK,CACb,kDAAkD;YAChD,2DAA2D;YAC3D,2CAA2C,CAC9C,CAAC;IACJ,CAAC;IAED,IAAI,CAAC;QACH,OAAO,MAAM,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC;IACjC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CACb,uCAAuC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAChG,CAAC;IACJ,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,kBAAkB,CAAC,MAA+B;IAChE,OAAO;QACL,UAAU,EACR,OAAO,MAAM,CAAC,WAAW,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC5F,WAAW,EAAG,MAAM,CAAC,YAAqC,IAAI,OAAO;QACrE,aAAa,EAAE,MAAM,CAAC,cAAc,KAAK,KAAK;QAC9C,aAAa,EAAE,MAAM,CAAC,cAAc,KAAK,IAAI;QAC7C,iBAAiB,EAAE,MAAM,CAAC,mBAAmB,KAAK,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK;QAC3E,IAAI,EAAE,OAAO,MAAM,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS;QAC/D,cAAc,EAAE,SAAS;QACzB,cAAc,EAAE,SAAS;KAC1B,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,oBAAoB,CAAC,MAAoB;IACvD,OAAO,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AACpC,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,aAAa,CAAC,KAAa;IACzC,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;IAC7B,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC;IAC3C,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC"}
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../../../src/tools/tavily/client.ts"],"names":[],"mappings":"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"}
@@ -8,8 +8,8 @@
8
8
  * framework and reported to the LLM with isError: true.
9
9
  */
10
10
  import type { TruncationResult } from "@mariozechner/pi-coding-agent";
11
- import type { TavilySearchOptions } from "@tavily/core";
12
- import type { SearchResult, WebSearchDetails } from "./types.js";
11
+ import type { TavilyExtractOptions, TavilySearchOptions } from "@tavily/core";
12
+ import type { ExtractFailedResult, ExtractResult, SearchResult, WebExtractDetails, WebSearchDetails } from "./types.js";
13
13
  export interface SuccessDetailsInput {
14
14
  query: string;
15
15
  options: TavilySearchOptions;
@@ -22,4 +22,16 @@ export interface SuccessDetailsInput {
22
22
  * Build WebSearchDetails for a successful search.
23
23
  */
24
24
  export declare function buildSuccessDetails(input: SuccessDetailsInput): WebSearchDetails;
25
+ export interface ExtractSuccessDetailsInput {
26
+ urlCount: number;
27
+ options: TavilyExtractOptions;
28
+ results: ExtractResult[];
29
+ failedResults: ExtractFailedResult[];
30
+ truncation?: TruncationResult;
31
+ fullOutputPath?: string;
32
+ }
33
+ /**
34
+ * Build WebExtractDetails for a successful extract operation.
35
+ */
36
+ export declare function buildExtractSuccessDetails(input: ExtractSuccessDetailsInput): WebExtractDetails;
25
37
  //# sourceMappingURL=details.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"details.d.ts","sourceRoot":"","sources":["../../../src/tools/tavily/details.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACtE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACxD,OAAO,KAAK,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAuBjE,MAAM,WAAW,mBAAmB;IAClC,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,mBAAmB,CAAC;IAC7B,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,OAAO,EAAE,YAAY,EAAE,CAAC;IACxB,UAAU,CAAC,EAAE,gBAAgB,CAAC;IAC9B,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,mBAAmB,GAAG,gBAAgB,CAqBhF"}
1
+ {"version":3,"file":"details.d.ts","sourceRoot":"","sources":["../../../src/tools/tavily/details.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACtE,OAAO,KAAK,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAC9E,OAAO,KAAK,EACV,mBAAmB,EACnB,aAAa,EACb,YAAY,EACZ,iBAAiB,EACjB,gBAAgB,EACjB,MAAM,YAAY,CAAC;AAuBpB,MAAM,WAAW,mBAAmB;IAClC,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,mBAAmB,CAAC;IAC7B,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,OAAO,EAAE,YAAY,EAAE,CAAC;IACxB,UAAU,CAAC,EAAE,gBAAgB,CAAC;IAC9B,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,mBAAmB,GAAG,gBAAgB,CAqBhF;AAMD,MAAM,WAAW,0BAA0B;IACzC,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,oBAAoB,CAAC;IAC9B,OAAO,EAAE,aAAa,EAAE,CAAC;IACzB,aAAa,EAAE,mBAAmB,EAAE,CAAC;IACrC,UAAU,CAAC,EAAE,gBAAgB,CAAC;IAC9B,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAaD;;GAEG;AACH,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,0BAA0B,GAAG,iBAAiB,CAgB/F"}
@@ -46,4 +46,33 @@ export function buildSuccessDetails(input) {
46
46
  fullOutputPath: input.fullOutputPath,
47
47
  };
48
48
  }
49
+ /**
50
+ * Read normalized param defaults from TavilyExtractOptions.
51
+ */
52
+ function extractOptionDefaults(options) {
53
+ return {
54
+ extractDepth: String(options.extractDepth ?? "basic"),
55
+ includeImages: options.includeImages ?? false,
56
+ format: String(options.format ?? "markdown"),
57
+ };
58
+ }
59
+ /**
60
+ * Build WebExtractDetails for a successful extract operation.
61
+ */
62
+ export function buildExtractSuccessDetails(input) {
63
+ const defaults = extractOptionDefaults(input.options);
64
+ return {
65
+ urlCount: input.urlCount,
66
+ extractDepth: defaults.extractDepth,
67
+ includeImages: defaults.includeImages,
68
+ format: defaults.format,
69
+ query: input.options.query,
70
+ successCount: input.results.length,
71
+ failureCount: input.failedResults.length,
72
+ results: input.results,
73
+ failedResults: input.failedResults,
74
+ truncation: input.truncation,
75
+ fullOutputPath: input.fullOutputPath,
76
+ };
77
+ }
49
78
  //# sourceMappingURL=details.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"details.js","sourceRoot":"","sources":["../../../src/tools/tavily/details.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAMH,+EAA+E;AAC/E,uBAAuB;AACvB,+EAA+E;AAE/E;;GAEG;AACH,SAAS,cAAc,CAAC,OAA4B;IAClD,OAAO;QACL,UAAU,EAAE,OAAO,CAAC,UAAU,IAAI,CAAC;QACnC,WAAW,EAAE,MAAM,CAAC,OAAO,CAAC,WAAW,IAAI,OAAO,CAAC;QACnD,aAAa,EAAE,OAAO,CAAC,aAAa,IAAI,KAAK;QAC7C,aAAa,EAAE,OAAO,CAAC,aAAa,KAAK,KAAK;QAC9C,iBAAiB,EAAE,OAAO,OAAO,CAAC,iBAAiB,KAAK,QAAQ;KACjE,CAAC;AACJ,CAAC;AAeD;;GAEG;AACH,MAAM,UAAU,mBAAmB,CAAC,KAA0B;IAC5D,MAAM,QAAQ,GAAG,cAAc,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAE/C,OAAO;QACL,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,UAAU,EAAE,QAAQ,CAAC,UAAU;QAC/B,WAAW,EAAE,QAAQ,CAAC,WAAW;QACjC,aAAa,EAAE,QAAQ,CAAC,aAAa;QACrC,iBAAiB,EAAE,QAAQ,CAAC,iBAAiB;QAC7C,aAAa,EAAE,QAAQ,CAAC,aAAa;QACrC,IAAI,EAAE,KAAK,CAAC,OAAO,CAAC,IAAI;QACxB,MAAM,EAAE,KAAK,CAAC,MAAM,IAAI,SAAS;QACjC,WAAW,EAAE,KAAK,CAAC,OAAO,CAAC,MAAM;QACjC,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACjC,KAAK,EAAE,CAAC,CAAC,KAAK;YACd,GAAG,EAAE,CAAC,CAAC,GAAG;YACV,KAAK,EAAE,CAAC,CAAC,KAAK;SACf,CAAC,CAAC;QACH,UAAU,EAAE,KAAK,CAAC,UAAU;QAC5B,cAAc,EAAE,KAAK,CAAC,cAAc;KACrC,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"details.js","sourceRoot":"","sources":["../../../src/tools/tavily/details.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAYH,+EAA+E;AAC/E,uBAAuB;AACvB,+EAA+E;AAE/E;;GAEG;AACH,SAAS,cAAc,CAAC,OAA4B;IAClD,OAAO;QACL,UAAU,EAAE,OAAO,CAAC,UAAU,IAAI,CAAC;QACnC,WAAW,EAAE,MAAM,CAAC,OAAO,CAAC,WAAW,IAAI,OAAO,CAAC;QACnD,aAAa,EAAE,OAAO,CAAC,aAAa,IAAI,KAAK;QAC7C,aAAa,EAAE,OAAO,CAAC,aAAa,KAAK,KAAK;QAC9C,iBAAiB,EAAE,OAAO,OAAO,CAAC,iBAAiB,KAAK,QAAQ;KACjE,CAAC;AACJ,CAAC;AAeD;;GAEG;AACH,MAAM,UAAU,mBAAmB,CAAC,KAA0B;IAC5D,MAAM,QAAQ,GAAG,cAAc,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAE/C,OAAO;QACL,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,UAAU,EAAE,QAAQ,CAAC,UAAU;QAC/B,WAAW,EAAE,QAAQ,CAAC,WAAW;QACjC,aAAa,EAAE,QAAQ,CAAC,aAAa;QACrC,iBAAiB,EAAE,QAAQ,CAAC,iBAAiB;QAC7C,aAAa,EAAE,QAAQ,CAAC,aAAa;QACrC,IAAI,EAAE,KAAK,CAAC,OAAO,CAAC,IAAI;QACxB,MAAM,EAAE,KAAK,CAAC,MAAM,IAAI,SAAS;QACjC,WAAW,EAAE,KAAK,CAAC,OAAO,CAAC,MAAM;QACjC,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACjC,KAAK,EAAE,CAAC,CAAC,KAAK;YACd,GAAG,EAAE,CAAC,CAAC,GAAG;YACV,KAAK,EAAE,CAAC,CAAC,KAAK;SACf,CAAC,CAAC;QACH,UAAU,EAAE,KAAK,CAAC,UAAU;QAC5B,cAAc,EAAE,KAAK,CAAC,cAAc;KACrC,CAAC;AACJ,CAAC;AAeD;;GAEG;AACH,SAAS,qBAAqB,CAAC,OAA6B;IAC1D,OAAO;QACL,YAAY,EAAE,MAAM,CAAC,OAAO,CAAC,YAAY,IAAI,OAAO,CAAC;QACrD,aAAa,EAAE,OAAO,CAAC,aAAa,IAAI,KAAK;QAC7C,MAAM,EAAE,MAAM,CAAC,OAAO,CAAC,MAAM,IAAI,UAAU,CAAC;KAC7C,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,0BAA0B,CAAC,KAAiC;IAC1E,MAAM,QAAQ,GAAG,qBAAqB,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAEtD,OAAO;QACL,QAAQ,EAAE,KAAK,CAAC,QAAQ;QACxB,YAAY,EAAE,QAAQ,CAAC,YAAoC;QAC3D,aAAa,EAAE,QAAQ,CAAC,aAAa;QACrC,MAAM,EAAE,QAAQ,CAAC,MAA6B;QAC9C,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,KAAK;QAC1B,YAAY,EAAE,KAAK,CAAC,OAAO,CAAC,MAAM;QAClC,YAAY,EAAE,KAAK,CAAC,aAAa,CAAC,MAAM;QACxC,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,aAAa,EAAE,KAAK,CAAC,aAAa;QAClC,UAAU,EAAE,KAAK,CAAC,UAAU;QAC5B,cAAc,EAAE,KAAK,CAAC,cAAc;KACrC,CAAC;AACJ,CAAC"}
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * Response formatters for Tavily tools
3
3
  */
4
- import type { FormattedOutputParts, ImageResult, SearchResult } from "./types.js";
4
+ import type { ExtractFailedResult, ExtractResult, FormattedOutputParts, ImageResult, SearchResult } from "./types.js";
5
5
  /**
6
6
  * Format Tavily search response into human-readable text
7
7
  */
@@ -18,4 +18,15 @@ export declare function extractSearchResults(response: unknown): {
18
18
  results: SearchResult[];
19
19
  images: ImageResult[];
20
20
  };
21
+ /**
22
+ * Format Tavily extract response into human-readable text
23
+ */
24
+ export declare function formatExtractResponse(results: ExtractResult[], failedResults: ExtractFailedResult[], includeImages: boolean): string;
25
+ /**
26
+ * Extract and type-safe Tavily extract response data
27
+ */
28
+ export declare function extractExtractResults(response: unknown): {
29
+ results: ExtractResult[];
30
+ failedResults: ExtractFailedResult[];
31
+ };
21
32
  //# sourceMappingURL=formatters.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"formatters.d.ts","sourceRoot":"","sources":["../../../src/tools/tavily/formatters.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,oBAAoB,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAMlF;;GAEG;AACH,wBAAgB,uBAAuB,CACrC,MAAM,EAAE,MAAM,GAAG,IAAI,EACrB,OAAO,EAAE,YAAY,EAAE,EACvB,MAAM,EAAE,WAAW,EAAE,EACrB,aAAa,EAAE,OAAO,GAAG,SAAS,GACjC,MAAM,CAyCR;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,MAAM,GAAG,IAAI,EACrB,OAAO,EAAE,YAAY,EAAE,EACvB,MAAM,EAAE,WAAW,EAAE,EACrB,aAAa,EAAE,OAAO,GACrB,oBAAoB,CAiCtB;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,OAAO,GAAG;IACvD,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,OAAO,EAAE,YAAY,EAAE,CAAC;IACxB,MAAM,EAAE,WAAW,EAAE,CAAC;CACvB,CA4CA"}
1
+ {"version":3,"file":"formatters.d.ts","sourceRoot":"","sources":["../../../src/tools/tavily/formatters.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EACV,mBAAmB,EACnB,aAAa,EACb,oBAAoB,EACpB,WAAW,EACX,YAAY,EACb,MAAM,YAAY,CAAC;AAMpB;;GAEG;AACH,wBAAgB,uBAAuB,CACrC,MAAM,EAAE,MAAM,GAAG,IAAI,EACrB,OAAO,EAAE,YAAY,EAAE,EACvB,MAAM,EAAE,WAAW,EAAE,EACrB,aAAa,EAAE,OAAO,GAAG,SAAS,GACjC,MAAM,CAwCR;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,MAAM,GAAG,IAAI,EACrB,OAAO,EAAE,YAAY,EAAE,EACvB,MAAM,EAAE,WAAW,EAAE,EACrB,aAAa,EAAE,OAAO,GACrB,oBAAoB,CAgCtB;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,OAAO,GAAG;IACvD,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,OAAO,EAAE,YAAY,EAAE,CAAC;IACxB,MAAM,EAAE,WAAW,EAAE,CAAC;CACvB,CA4CA;AAMD;;GAEG;AACH,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,aAAa,EAAE,EACxB,aAAa,EAAE,mBAAmB,EAAE,EACpC,aAAa,EAAE,OAAO,GACrB,MAAM,CAyCR;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,OAAO,GAAG;IACxD,OAAO,EAAE,aAAa,EAAE,CAAC;IACzB,aAAa,EAAE,mBAAmB,EAAE,CAAC;CACtC,CA0CA"}
@@ -18,11 +18,10 @@ export function formatWebSearchResponse(answer, results, images, includeImages)
18
18
  parts.push("Sources:");
19
19
  results.forEach((result, index) => {
20
20
  parts.push(`\n${index + 1}. ${result.title}`, ` URL: ${result.url}`, ` Score: ${result.score.toFixed(2)}`);
21
- // Add content/snippet if available
21
+ // Add full content truncation is handled downstream by applyTruncation
22
22
  const contentToShow = result.rawContent || result.content;
23
23
  if (contentToShow) {
24
- const snippet = contentToShow.slice(0, 300);
25
- parts.push(` Content: ${snippet}${contentToShow.length > 300 ? "..." : ""}`);
24
+ parts.push(` Content: ${contentToShow}`);
26
25
  }
27
26
  });
28
27
  }
@@ -54,8 +53,7 @@ export function formatSearchResults(answer, results, images, includeImages) {
54
53
  parts.sources.push(`\n${index + 1}. ${result.title}`, ` URL: ${result.url}`, ` Score: ${result.score.toFixed(2)}`);
55
54
  const contentToShow = result.rawContent || result.content;
56
55
  if (contentToShow) {
57
- const snippet = contentToShow.slice(0, 300);
58
- parts.sources.push(` Content: ${snippet}${contentToShow.length > 300 ? "..." : ""}`);
56
+ parts.sources.push(` Content: ${contentToShow}`);
59
57
  }
60
58
  });
61
59
  // Add image results if available
@@ -105,4 +103,80 @@ export function extractSearchResults(response) {
105
103
  images,
106
104
  };
107
105
  }
106
+ // ============================================================================
107
+ // Web Extract Formatting
108
+ // ============================================================================
109
+ /**
110
+ * Format Tavily extract response into human-readable text
111
+ */
112
+ export function formatExtractResponse(results, failedResults, includeImages) {
113
+ const parts = [];
114
+ // Add successful extractions
115
+ if (results.length > 0) {
116
+ parts.push(`Successfully extracted content from ${results.length} URL(s):\n`);
117
+ results.forEach((result, index) => {
118
+ parts.push(`${index + 1}. ${result.title || "Untitled"}`);
119
+ parts.push(` URL: ${result.url}`);
120
+ // Add full content — truncation is handled downstream by applyTruncation
121
+ parts.push(` Content: ${result.rawContent}`);
122
+ // Add images if available and requested
123
+ if (includeImages && result.images && result.images.length > 0) {
124
+ parts.push(` Images: ${result.images.length} found`);
125
+ result.images.slice(0, 3).forEach((img, imgIndex) => {
126
+ parts.push(` ${imgIndex + 1}. ${img}`);
127
+ });
128
+ if (result.images.length > 3) {
129
+ parts.push(` ... ${result.images.length - 3} more`);
130
+ }
131
+ }
132
+ parts.push("");
133
+ });
134
+ }
135
+ else {
136
+ parts.push("No content was extracted successfully.");
137
+ }
138
+ // Add failed extractions
139
+ if (failedResults.length > 0) {
140
+ parts.push(`\nFailed to extract from ${failedResults.length} URL(s):\n`);
141
+ failedResults.forEach((failed, index) => {
142
+ parts.push(`${index + 1}. URL: ${failed.url}`);
143
+ parts.push(` Error: ${failed.error}`);
144
+ });
145
+ }
146
+ return parts.join("\n");
147
+ }
148
+ /**
149
+ * Extract and type-safe Tavily extract response data
150
+ */
151
+ export function extractExtractResults(response) {
152
+ const resp = response;
153
+ // Extract successful results
154
+ const results = (resp.results || [])
155
+ .filter((r) => r !== null && typeof r === "object")
156
+ .map((r) => {
157
+ const result = r;
158
+ return {
159
+ url: typeof result.url === "string" ? result.url : "",
160
+ title: typeof result.title === "string" ? result.title : null,
161
+ rawContent: typeof result.rawContent === "string" ? result.rawContent : "",
162
+ images: Array.isArray(result.images) && result.images.every((img) => typeof img === "string")
163
+ ? result.images
164
+ : undefined,
165
+ };
166
+ });
167
+ // Extract failed results
168
+ const failedResults = (resp.failedResults || [])
169
+ .filter((f) => f !== null && typeof f === "object")
170
+ .map((f) => {
171
+ const failed = f;
172
+ return {
173
+ url: typeof failed.url === "string" ? failed.url : "",
174
+ error: typeof failed.error === "string" ? failed.error : "Unknown error",
175
+ };
176
+ });
177
+ return {
178
+ results,
179
+ failedResults,
180
+ };
181
+ }
108
182
  //# sourceMappingURL=formatters.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"formatters.js","sourceRoot":"","sources":["../../../src/tools/tavily/formatters.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"formatters.js","sourceRoot":"","sources":["../../../src/tools/tavily/formatters.ts"],"names":[],"mappings":"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"}
@@ -24,5 +24,16 @@ export declare function renderWebSearchResult(result: ToolCallResult, state: {
24
24
  expanded: boolean;
25
25
  isPartial: boolean;
26
26
  }, theme: Theme): Text;
27
+ /**
28
+ * Render a web extract tool call
29
+ */
30
+ export declare function renderExtractCall(args: Record<string, unknown>, theme: Theme): Text;
31
+ /**
32
+ * Render a web extract tool result
33
+ */
34
+ export declare function renderExtractResult(result: ToolCallResult, state: {
35
+ expanded: boolean;
36
+ isPartial: boolean;
37
+ }, theme: Theme): Text;
27
38
  export {};
28
39
  //# sourceMappingURL=renderers.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"renderers.d.ts","sourceRoot":"","sources":["../../../src/tools/tavily/renderers.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,IAAI,EAAmB,MAAM,sBAAsB,CAAC;AAO7D,MAAM,MAAM,cAAc,GAAG;IAC3B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACjD,CAAC;AAEF,KAAK,KAAK,GAAG;IACX,EAAE,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC;IAC5C,IAAI,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC;CAChC,CAAC;AAMF;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,KAAK,EAAE,KAAK,GAAG,IAAI,CA8BrF;AAuBD;;GAEG;AACH,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,cAAc,EACtB,KAAK,EAAE;IAAE,QAAQ,EAAE,OAAO,CAAC;IAAC,SAAS,EAAE,OAAO,CAAA;CAAE,EAChD,KAAK,EAAE,KAAK,GACX,IAAI,CAeN"}
1
+ {"version":3,"file":"renderers.d.ts","sourceRoot":"","sources":["../../../src/tools/tavily/renderers.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,IAAI,EAAmB,MAAM,sBAAsB,CAAC;AAO7D,MAAM,MAAM,cAAc,GAAG;IAC3B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACjD,CAAC;AAEF,KAAK,KAAK,GAAG;IACX,EAAE,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC;IAC5C,IAAI,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC;CAChC,CAAC;AAMF;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,KAAK,EAAE,KAAK,GAAG,IAAI,CA8BrF;AAuBD;;GAEG;AACH,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,cAAc,EACtB,KAAK,EAAE;IAAE,QAAQ,EAAE,OAAO,CAAC;IAAC,SAAS,EAAE,OAAO,CAAA;CAAE,EAChD,KAAK,EAAE,KAAK,GACX,IAAI,CAeN;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,KAAK,EAAE,KAAK,GAAG,IAAI,CAiCnF;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,cAAc,EACtB,KAAK,EAAE;IAAE,QAAQ,EAAE,OAAO,CAAC;IAAC,SAAS,EAAE,OAAO,CAAA;CAAE,EAChD,KAAK,EAAE,KAAK,GACX,IAAI,CAeN"}
@@ -71,6 +71,127 @@ export function renderWebSearchResult(result, state, theme) {
71
71
  // Build result display
72
72
  return renderSearchResultCommon(details, state.expanded, theme, true);
73
73
  }
74
+ /**
75
+ * Render a web extract tool call
76
+ */
77
+ export function renderExtractCall(args, theme) {
78
+ let text = theme.fg("toolTitle", theme.bold("web_extract "));
79
+ const urls = Array.isArray(args.urls) ? args.urls : [];
80
+ const urlCount = urls.length;
81
+ if (urlCount === 0) {
82
+ text += theme.fg("warning", "(no URLs)");
83
+ }
84
+ else if (urlCount === 1) {
85
+ const url = typeof urls[0] === "string" ? urls[0] : "(invalid)";
86
+ text += theme.fg("accent", `"${url}"`);
87
+ }
88
+ else {
89
+ text += theme.fg("accent", `${urlCount} URLs`);
90
+ }
91
+ const options = [];
92
+ if (args.extract_depth === "advanced") {
93
+ options.push("advanced");
94
+ }
95
+ if (args.include_images === true) {
96
+ options.push("images");
97
+ }
98
+ if (args.format === "text") {
99
+ options.push("text");
100
+ }
101
+ if (args.query && typeof args.query === "string") {
102
+ options.push(`query: "${args.query.slice(0, 20)}"`);
103
+ }
104
+ if (options.length > 0) {
105
+ text += ` ${theme.fg("dim", `[${options.join(", ")}]`)}`;
106
+ }
107
+ return new Text(truncateToWidth(text, 100), 0, 0);
108
+ }
109
+ /**
110
+ * Render a web extract tool result
111
+ */
112
+ export function renderExtractResult(result, state, theme) {
113
+ const details = result.details;
114
+ // Show loading state
115
+ if (state.isPartial) {
116
+ return new Text(theme.fg("warning", "Extracting..."), 0, 0);
117
+ }
118
+ // Show error state
119
+ if (details?.error) {
120
+ return new Text(theme.fg("error", `Error: ${details.error}`), 0, 0);
121
+ }
122
+ // Build result display
123
+ return renderExtractResultCommon(details, state.expanded, theme);
124
+ }
125
+ /**
126
+ * Common result renderer for extract tools
127
+ */
128
+ function renderExtractResultCommon(details, expanded, theme) {
129
+ let text = "";
130
+ if (details) {
131
+ // Main summary
132
+ const summary = `${details.successCount}/${details.urlCount} extracted`;
133
+ text += theme.fg("success", summary);
134
+ // Show failures if any
135
+ if (details.failureCount > 0) {
136
+ text += ` ${theme.fg("warning", `(${details.failureCount} failed)`)}`;
137
+ }
138
+ // Show options
139
+ const options = [];
140
+ if (details.extractDepth === "advanced") {
141
+ options.push("advanced");
142
+ }
143
+ if (details.includeImages) {
144
+ options.push("images");
145
+ }
146
+ if (details.format === "text") {
147
+ options.push("text");
148
+ }
149
+ if (options.length > 0) {
150
+ text += theme.fg("dim", ` (${options.join(", ")})`);
151
+ }
152
+ // Show truncation warning
153
+ if (details.truncation?.truncated) {
154
+ text += " " + theme.fg("warning", "(truncated)");
155
+ }
156
+ // Expanded view: show extracted URLs
157
+ if (expanded) {
158
+ // Show successful extractions
159
+ if (details.results.length > 0) {
160
+ text += "\n\n";
161
+ text += theme.fg("accent", "Extracted:") + "\n";
162
+ const displayResults = details.results.slice(0, 5);
163
+ for (let i = 0; i < displayResults.length; i++) {
164
+ const result = displayResults[i];
165
+ text += `\n${theme.fg("accent", `${i + 1}.`)} ${result.title || "Untitled"}\n`;
166
+ text += ` ${theme.fg("dim", result.url)}\n`;
167
+ }
168
+ if (details.results.length > 5) {
169
+ text += `\n${theme.fg("dim", `... ${details.results.length - 5} more`)}`;
170
+ }
171
+ }
172
+ // Show failed extractions
173
+ if (details.failedResults.length > 0) {
174
+ text += "\n\n";
175
+ text += theme.fg("error", "Failed:") + "\n";
176
+ const displayFailed = details.failedResults.slice(0, 3);
177
+ for (let i = 0; i < displayFailed.length; i++) {
178
+ const failed = displayFailed[i];
179
+ text += `\n${theme.fg("error", `${i + 1}.`)} ${failed.url}\n`;
180
+ text += ` ${theme.fg("dim", failed.error)}\n`;
181
+ }
182
+ if (details.failedResults.length > 3) {
183
+ text += `\n${theme.fg("dim", `... ${details.failedResults.length - 3} more`)}`;
184
+ }
185
+ }
186
+ // Show temp file path if truncated
187
+ if (details.fullOutputPath) {
188
+ text += "\n\n";
189
+ text += theme.fg("dim", `Full output: ${details.fullOutputPath}`);
190
+ }
191
+ }
192
+ }
193
+ return new Text(text, 0, 0);
194
+ }
74
195
  /**
75
196
  * Common result renderer for search tools
76
197
  */
@@ -1 +1 @@
1
- {"version":3,"file":"renderers.js","sourceRoot":"","sources":["../../../src/tools/tavily/renderers.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"renderers.js","sourceRoot":"","sources":["../../../src/tools/tavily/renderers.ts"],"names":[],"mappings":"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"}
@@ -10,6 +10,13 @@ export declare const WebSearchParamsSchema: import("@sinclair/typebox").TObject<
10
10
  include_images: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
11
11
  days: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
12
12
  }>;
13
+ export declare const WebExtractParamsSchema: import("@sinclair/typebox").TObject<{
14
+ urls: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString>;
15
+ extract_depth: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnsafe<"basic" | "advanced">>;
16
+ include_images: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
17
+ format: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnsafe<"markdown" | "text">>;
18
+ query: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
19
+ }>;
13
20
  export declare const BaseSearchParamsSchema: {
14
21
  query: import("@sinclair/typebox").TString;
15
22
  max_results: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
@@ -1 +1 @@
1
- {"version":3,"file":"schemas.d.ts","sourceRoot":"","sources":["../../../src/tools/tavily/schemas.ts"],"names":[],"mappings":"AAAA;;GAEG;AASH,eAAO,MAAM,qBAAqB;;;;;;;;EAsBhC,CAAC;AAMH,eAAO,MAAM,sBAAsB;;;;;CAalC,CAAC;AAEF,eAAO,MAAM,oBAAoB;;;;CAUhC,CAAC"}
1
+ {"version":3,"file":"schemas.d.ts","sourceRoot":"","sources":["../../../src/tools/tavily/schemas.ts"],"names":[],"mappings":"AAAA;;GAEG;AASH,eAAO,MAAM,qBAAqB;;;;;;;;EAsBhC,CAAC;AAMH,eAAO,MAAM,sBAAsB;;;;;;EAoBjC,CAAC;AAMH,eAAO,MAAM,sBAAsB;;;;;CAalC,CAAC;AAEF,eAAO,MAAM,oBAAoB;;;;CAUhC,CAAC"}
@@ -18,6 +18,22 @@ export const WebSearchParamsSchema = Type.Object({
18
18
  days: Type.Optional(Type.Number({ description: "Limit results to last N days (e.g., 7 for last week)" })),
19
19
  });
20
20
  // ============================================================================
21
+ // Web Extract Schema
22
+ // ============================================================================
23
+ export const WebExtractParamsSchema = Type.Object({
24
+ urls: Type.Array(Type.String({ description: "URL to extract content from" }), {
25
+ description: "Array of URLs to extract content from (max 20)",
26
+ }),
27
+ extract_depth: Type.Optional(StringEnum(["basic", "advanced"], {
28
+ description: "Extraction depth: 'basic' or 'advanced' (default: 'basic')",
29
+ })),
30
+ include_images: Type.Optional(Type.Boolean({ description: "Include images from pages (default: false)" })),
31
+ format: Type.Optional(StringEnum(["markdown", "text"], {
32
+ description: "Output format: 'markdown' or 'text' (default: 'markdown')",
33
+ })),
34
+ query: Type.Optional(Type.String({ description: "Optional query to focus extraction on specific content" })),
35
+ });
36
+ // ============================================================================
21
37
  // Common Schema Parts
22
38
  // ============================================================================
23
39
  export const BaseSearchParamsSchema = {
@@ -1 +1 @@
1
- {"version":3,"file":"schemas.js","sourceRoot":"","sources":["../../../src/tools/tavily/schemas.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AAEzC,+EAA+E;AAC/E,oBAAoB;AACpB,+EAA+E;AAE/E,MAAM,CAAC,MAAM,qBAAqB,GAAG,IAAI,CAAC,MAAM,CAAC;IAC/C,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,WAAW,EAAE,qBAAqB,EAAE,CAAC;IAC1D,WAAW,EAAE,IAAI,CAAC,QAAQ,CACxB,IAAI,CAAC,MAAM,CAAC,EAAE,WAAW,EAAE,gDAAgD,EAAE,CAAC,CAC/E;IACD,YAAY,EAAE,IAAI,CAAC,QAAQ,CACzB,UAAU,CAAC,CAAC,OAAO,EAAE,UAAU,CAAU,EAAE;QACzC,WAAW,EAAE,wDAAwD;KACtE,CAAC,CACH;IACD,cAAc,EAAE,IAAI,CAAC,QAAQ,CAC3B,IAAI,CAAC,OAAO,CAAC,EAAE,WAAW,EAAE,6CAA6C,EAAE,CAAC,CAC7E;IACD,mBAAmB,EAAE,IAAI,CAAC,QAAQ,CAChC,IAAI,CAAC,OAAO,CAAC,EAAE,WAAW,EAAE,sDAAsD,EAAE,CAAC,CACtF;IACD,cAAc,EAAE,IAAI,CAAC,QAAQ,CAC3B,IAAI,CAAC,OAAO,CAAC,EAAE,WAAW,EAAE,qDAAqD,EAAE,CAAC,CACrF;IACD,IAAI,EAAE,IAAI,CAAC,QAAQ,CACjB,IAAI,CAAC,MAAM,CAAC,EAAE,WAAW,EAAE,sDAAsD,EAAE,CAAC,CACrF;CACF,CAAC,CAAC;AAEH,+EAA+E;AAC/E,sBAAsB;AACtB,+EAA+E;AAE/E,MAAM,CAAC,MAAM,sBAAsB,GAAG;IACpC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,WAAW,EAAE,qBAAqB,EAAE,CAAC;IAC1D,WAAW,EAAE,IAAI,CAAC,QAAQ,CACxB,IAAI,CAAC,MAAM,CAAC,EAAE,WAAW,EAAE,gDAAgD,EAAE,CAAC,CAC/E;IACD,YAAY,EAAE,IAAI,CAAC,QAAQ,CACzB,UAAU,CAAC,CAAC,OAAO,EAAE,UAAU,CAAU,EAAE;QACzC,WAAW,EAAE,wDAAwD;KACtE,CAAC,CACH;IACD,IAAI,EAAE,IAAI,CAAC,QAAQ,CACjB,IAAI,CAAC,MAAM,CAAC,EAAE,WAAW,EAAE,sDAAsD,EAAE,CAAC,CACrF;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,oBAAoB,GAAG;IAClC,cAAc,EAAE,IAAI,CAAC,QAAQ,CAC3B,IAAI,CAAC,OAAO,CAAC,EAAE,WAAW,EAAE,6CAA6C,EAAE,CAAC,CAC7E;IACD,mBAAmB,EAAE,IAAI,CAAC,QAAQ,CAChC,IAAI,CAAC,OAAO,CAAC,EAAE,WAAW,EAAE,sDAAsD,EAAE,CAAC,CACtF;IACD,cAAc,EAAE,IAAI,CAAC,QAAQ,CAC3B,IAAI,CAAC,OAAO,CAAC,EAAE,WAAW,EAAE,qDAAqD,EAAE,CAAC,CACrF;CACF,CAAC"}
1
+ {"version":3,"file":"schemas.js","sourceRoot":"","sources":["../../../src/tools/tavily/schemas.ts"],"names":[],"mappings":"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"}
@@ -34,6 +34,37 @@ export interface WebSearchDetails extends SearchResponseDetails {
34
34
  includeRawContent: boolean;
35
35
  includeImages: boolean;
36
36
  }
37
+ export interface WebExtractParams {
38
+ urls: string[];
39
+ extract_depth?: "basic" | "advanced";
40
+ include_images?: boolean;
41
+ format?: "markdown" | "text";
42
+ query?: string;
43
+ }
44
+ export interface ExtractResult {
45
+ url: string;
46
+ title: string | null;
47
+ rawContent: string;
48
+ images?: string[];
49
+ }
50
+ export interface ExtractFailedResult {
51
+ url: string;
52
+ error: string;
53
+ }
54
+ export interface WebExtractDetails {
55
+ urlCount: number;
56
+ extractDepth: string;
57
+ includeImages: boolean;
58
+ format: string;
59
+ query?: string;
60
+ successCount: number;
61
+ failureCount: number;
62
+ results: ExtractResult[];
63
+ failedResults: ExtractFailedResult[];
64
+ truncation?: TruncationResult;
65
+ fullOutputPath?: string;
66
+ error?: string;
67
+ }
37
68
  export interface SearchResult {
38
69
  title: string;
39
70
  url: string;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/tools/tavily/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AAMtE,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,OAAO,GAAG,UAAU,CAAC;IACpC,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,qBAAqB;IACpC,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,KAAK,CAAC;QACb,KAAK,EAAE,MAAM,CAAC;QACd,GAAG,EAAE,MAAM,CAAC;QACZ,KAAK,EAAE,MAAM,CAAC;KACf,CAAC,CAAC;IACH,UAAU,CAAC,EAAE,gBAAgB,CAAC;IAC9B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAMD,MAAM,WAAW,eAAgB,SAAQ,gBAAgB;IACvD,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED,MAAM,WAAW,gBAAiB,SAAQ,qBAAqB;IAC7D,aAAa,EAAE,OAAO,CAAC;IACvB,iBAAiB,EAAE,OAAO,CAAC;IAC3B,aAAa,EAAE,OAAO,CAAC;CACxB;AAMD,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,WAAW;IAC1B,GAAG,EAAE,MAAM,CAAC;IACZ,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAMD,MAAM,WAAW,oBAAoB;IACnC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;CACnB"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/tools/tavily/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Web Extract Tool - Provides content extraction capabilities using Tavily SDK
3
+ *
4
+ * Features:
5
+ * - Extract raw content from one or more URLs
6
+ * - Configurable extraction depth (basic/advanced)
7
+ * - Optional image extraction
8
+ * - Multiple output formats (markdown/text)
9
+ * - Query-based content filtering
10
+ * - Proper output truncation (50KB / 2000 lines)
11
+ * - Custom TUI rendering
12
+ * - Robust error handling
13
+ */
14
+ import type { ExtensionAPI } from "@mariozechner/pi-coding-agent";
15
+ import type { TavilyClient } from "@tavily/core";
16
+ export declare function registerWebExtractTool(pi: ExtensionAPI, client: TavilyClient): void;
17
+ //# sourceMappingURL=web-extract.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"web-extract.d.ts","sourceRoot":"","sources":["../../src/tools/web-extract.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAClE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAajD,wBAAgB,sBAAsB,CAAC,EAAE,EAAE,YAAY,EAAE,MAAM,EAAE,YAAY,GAAG,IAAI,CA4DnF"}
@@ -0,0 +1,69 @@
1
+ /**
2
+ * Web Extract Tool - Provides content extraction capabilities using Tavily SDK
3
+ *
4
+ * Features:
5
+ * - Extract raw content from one or more URLs
6
+ * - Configurable extraction depth (basic/advanced)
7
+ * - Optional image extraction
8
+ * - Multiple output formats (markdown/text)
9
+ * - Query-based content filtering
10
+ * - Proper output truncation (50KB / 2000 lines)
11
+ * - Custom TUI rendering
12
+ * - Robust error handling
13
+ */
14
+ import { buildToolResult, sendProgress } from "./shared/execute.js";
15
+ import { buildExtractOptions, validateUrls } from "./tavily/client.js";
16
+ import { buildExtractSuccessDetails } from "./tavily/details.js";
17
+ import { extractExtractResults, formatExtractResponse } from "./tavily/formatters.js";
18
+ import { renderExtractCall, renderExtractResult } from "./tavily/renderers.js";
19
+ import { WebExtractParamsSchema } from "./tavily/schemas.js";
20
+ // ============================================================================
21
+ // Web Extract Tool Registration
22
+ // ============================================================================
23
+ export function registerWebExtractTool(pi, client) {
24
+ pi.registerTool({
25
+ name: "web_extract",
26
+ label: "Web Extract",
27
+ description: `Extracts raw content from one or more URLs using Tavily. ` +
28
+ `Output is truncated to 2000 lines or 50KB (whichever is hit first). ` +
29
+ `Useful for reading full content from specific pages, data collection, or content analysis.`,
30
+ promptSnippet: "Extract raw content from one or more web pages.",
31
+ promptGuidelines: [
32
+ "Use this tool when you need to read the full content of specific web pages.",
33
+ "Use this tool after web_search to get detailed content from specific URLs.",
34
+ "Use this tool for data collection and content analysis tasks.",
35
+ "Use extract_depth advanced for more comprehensive extraction.",
36
+ "Use include_images to also extract images from pages.",
37
+ "Use format text if you need plain text instead of markdown.",
38
+ "Use query to focus extraction on specific content within pages.",
39
+ "Provide up to 20 URLs in a single request for batch extraction.",
40
+ ],
41
+ parameters: WebExtractParamsSchema,
42
+ // Pi catches thrown errors and reports them to the LLM with isError: true
43
+ async execute(_toolCallId, params, _signal, onUpdate, ctx) {
44
+ const urls = validateUrls(params.urls);
45
+ const extractOptions = buildExtractOptions(params);
46
+ const urlCount = urls.length;
47
+ const urlText = urlCount === 1 ? "URL" : "URLs";
48
+ sendProgress(onUpdate, `Extracting content from ${urlCount} ${urlText}...`);
49
+ const response = await client.extract(urls, extractOptions);
50
+ const { results, failedResults } = extractExtractResults(response);
51
+ const fullOutput = formatExtractResponse(results, failedResults, extractOptions.includeImages ?? false);
52
+ return buildToolResult(fullOutput, ctx, "extract", (truncation, fullOutputPath) => buildExtractSuccessDetails({
53
+ urlCount,
54
+ options: extractOptions,
55
+ results,
56
+ failedResults,
57
+ truncation,
58
+ fullOutputPath,
59
+ }));
60
+ },
61
+ renderCall(args, theme) {
62
+ return renderExtractCall(args, theme);
63
+ },
64
+ renderResult(result, state, theme) {
65
+ return renderExtractResult(result, state, theme);
66
+ },
67
+ });
68
+ }
69
+ //# sourceMappingURL=web-extract.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"web-extract.js","sourceRoot":"","sources":["../../src/tools/web-extract.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAKH,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACpE,OAAO,EAAE,mBAAmB,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AACvE,OAAO,EAAE,0BAA0B,EAAE,MAAM,qBAAqB,CAAC;AACjE,OAAO,EAAE,qBAAqB,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AACtF,OAAO,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC/E,OAAO,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAE7D,+EAA+E;AAC/E,gCAAgC;AAChC,+EAA+E;AAE/E,MAAM,UAAU,sBAAsB,CAAC,EAAgB,EAAE,MAAoB;IAC3E,EAAE,CAAC,YAAY,CAAC;QACd,IAAI,EAAE,aAAa;QACnB,KAAK,EAAE,aAAa;QACpB,WAAW,EACT,2DAA2D;YAC3D,sEAAsE;YACtE,4FAA4F;QAE9F,aAAa,EAAE,iDAAiD;QAChE,gBAAgB,EAAE;YAChB,6EAA6E;YAC7E,4EAA4E;YAC5E,+DAA+D;YAC/D,+DAA+D;YAC/D,uDAAuD;YACvD,6DAA6D;YAC7D,iEAAiE;YACjE,iEAAiE;SAClE;QAED,UAAU,EAAE,sBAAsB;QAElC,0EAA0E;QAC1E,KAAK,CAAC,OAAO,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG;YACvD,MAAM,IAAI,GAAG,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YACvC,MAAM,cAAc,GAAG,mBAAmB,CAAC,MAAM,CAAC,CAAC;YAEnD,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC;YAC7B,MAAM,OAAO,GAAG,QAAQ,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC;YAEhD,YAAY,CAAC,QAAQ,EAAE,2BAA2B,QAAQ,IAAI,OAAO,KAAK,CAAC,CAAC;YAE5E,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC;YAC5D,MAAM,EAAE,OAAO,EAAE,aAAa,EAAE,GAAG,qBAAqB,CAAC,QAAQ,CAAC,CAAC;YACnE,MAAM,UAAU,GAAG,qBAAqB,CACtC,OAAO,EACP,aAAa,EACb,cAAc,CAAC,aAAa,IAAI,KAAK,CACtC,CAAC;YACF,OAAO,eAAe,CAAC,UAAU,EAAE,GAAG,EAAE,SAAS,EAAE,CAAC,UAAU,EAAE,cAAc,EAAE,EAAE,CAChF,0BAA0B,CAAC;gBACzB,QAAQ;gBACR,OAAO,EAAE,cAAc;gBACvB,OAAO;gBACP,aAAa;gBACb,UAAU;gBACV,cAAc;aACf,CAAC,CACH,CAAC;QACJ,CAAC;QAED,UAAU,CAAC,IAAI,EAAE,KAAK;YACpB,OAAO,iBAAiB,CAAC,IAAI,EAAE,KAAgD,CAAC,CAAC;QACnF,CAAC;QAED,YAAY,CAAC,MAAM,EAAE,KAAK,EAAE,KAAK;YAC/B,OAAO,mBAAmB,CAAC,MAAM,EAAE,KAAK,EAAE,KAAkD,CAAC,CAAC;QAChG,CAAC;KACF,CAAC,CAAC;AACL,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"web-search.d.ts","sourceRoot":"","sources":["../../src/tools/web-search.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAClE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAajD,wBAAgB,qBAAqB,CAAC,EAAE,EAAE,YAAY,EAAE,MAAM,EAAE,YAAY,GAAG,IAAI,CAwElF"}
1
+ {"version":3,"file":"web-search.d.ts","sourceRoot":"","sources":["../../src/tools/web-search.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAClE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAajD,wBAAgB,qBAAqB,CAAC,EAAE,EAAE,YAAY,EAAE,MAAM,EAAE,YAAY,GAAG,IAAI,CA8DlF"}
@@ -10,7 +10,7 @@
10
10
  * - Custom TUI rendering
11
11
  * - Robust error handling
12
12
  */
13
- import { applyTruncation } from "./shared/truncation.js";
13
+ import { buildToolResult, sendProgress } from "./shared/execute.js";
14
14
  import { buildSearchOptions, validateQuery } from "./tavily/client.js";
15
15
  import { buildSuccessDetails } from "./tavily/details.js";
16
16
  import { extractSearchResults, formatWebSearchResponse } from "./tavily/formatters.js";
@@ -41,25 +41,18 @@ export function registerWebSearchTool(pi, client) {
41
41
  async execute(_toolCallId, params, _signal, onUpdate, ctx) {
42
42
  const query = validateQuery(params.query);
43
43
  const searchOptions = buildSearchOptions(params);
44
- onUpdate?.({
45
- content: [{ type: "text", text: `Searching for: ${query}` }],
46
- details: {},
47
- });
44
+ sendProgress(onUpdate, `Searching for: ${query}`);
48
45
  const response = await client.search(query, searchOptions);
49
46
  const { answer, results, images } = extractSearchResults(response);
50
47
  const fullOutput = formatWebSearchResponse(answer, results, images, searchOptions.includeImages);
51
- const { content, truncation, fullOutputPath } = await applyTruncation(fullOutput, ctx.cwd, "search");
52
- return {
53
- content: [{ type: "text", text: content }],
54
- details: buildSuccessDetails({
55
- query,
56
- options: searchOptions,
57
- answer,
58
- results,
59
- truncation,
60
- fullOutputPath,
61
- }),
62
- };
48
+ return buildToolResult(fullOutput, ctx, "search", (truncation, fullOutputPath) => buildSuccessDetails({
49
+ query,
50
+ options: searchOptions,
51
+ answer,
52
+ results,
53
+ truncation,
54
+ fullOutputPath,
55
+ }));
63
56
  },
64
57
  renderCall(args, theme) {
65
58
  return renderWebSearchCall(args, theme);
@@ -1 +1 @@
1
- {"version":3,"file":"web-search.js","sourceRoot":"","sources":["../../src/tools/web-search.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAKH,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,kBAAkB,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACvE,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,EAAE,oBAAoB,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AACvF,OAAO,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AACnF,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAE5D,+EAA+E;AAC/E,+BAA+B;AAC/B,+EAA+E;AAE/E,MAAM,UAAU,qBAAqB,CAAC,EAAgB,EAAE,MAAoB;IAC1E,EAAE,CAAC,YAAY,CAAC;QACd,IAAI,EAAE,YAAY;QAClB,KAAK,EAAE,YAAY;QACnB,WAAW,EACT,yDAAyD;YACzD,sEAAsE;YACtE,mFAAmF;QAErF,aAAa,EACX,sFAAsF;QACxF,gBAAgB,EAAE;YAChB,8FAA8F;YAC9F,4EAA4E;YAC5E,2DAA2D;YAC3D,uFAAuF;YACvF,6DAA6D;YAC7D,4DAA4D;YAC5D,oEAAoE;SACrE;QAED,UAAU,EAAE,qBAAqB;QAEjC,0EAA0E;QAC1E,KAAK,CAAC,OAAO,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG;YACvD,MAAM,KAAK,GAAG,aAAa,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YAC1C,MAAM,aAAa,GAAG,kBAAkB,CAAC,MAAM,CAAC,CAAC;YAEjD,QAAQ,EAAE,CAAC;gBACT,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,kBAAkB,KAAK,EAAE,EAAE,CAAC;gBAC5D,OAAO,EAAE,EAAE;aACZ,CAAC,CAAC;YAEH,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC;YAC3D,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,oBAAoB,CAAC,QAAQ,CAAC,CAAC;YACnE,MAAM,UAAU,GAAG,uBAAuB,CACxC,MAAM,EACN,OAAO,EACP,MAAM,EACN,aAAa,CAAC,aAAa,CAC5B,CAAC;YACF,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,GAAG,MAAM,eAAe,CACnE,UAAU,EACV,GAAG,CAAC,GAAG,EACP,QAAQ,CACT,CAAC;YAEF,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;gBAC1C,OAAO,EAAE,mBAAmB,CAAC;oBAC3B,KAAK;oBACL,OAAO,EAAE,aAAa;oBACtB,MAAM;oBACN,OAAO;oBACP,UAAU;oBACV,cAAc;iBACf,CAAC;aACH,CAAC;QACJ,CAAC;QAED,UAAU,CAAC,IAAI,EAAE,KAAK;YACpB,OAAO,mBAAmB,CAAC,IAAI,EAAE,KAAkD,CAAC,CAAC;QACvF,CAAC;QAED,YAAY,CAAC,MAAM,EAAE,KAAK,EAAE,KAAK;YAC/B,OAAO,qBAAqB,CAC1B,MAAM,EACN,KAAK,EACL,KAAoD,CACrD,CAAC;QACJ,CAAC;KACF,CAAC,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"web-search.js","sourceRoot":"","sources":["../../src/tools/web-search.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAKH,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACpE,OAAO,EAAE,kBAAkB,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACvE,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,EAAE,oBAAoB,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AACvF,OAAO,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AACnF,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAE5D,+EAA+E;AAC/E,+BAA+B;AAC/B,+EAA+E;AAE/E,MAAM,UAAU,qBAAqB,CAAC,EAAgB,EAAE,MAAoB;IAC1E,EAAE,CAAC,YAAY,CAAC;QACd,IAAI,EAAE,YAAY;QAClB,KAAK,EAAE,YAAY;QACnB,WAAW,EACT,yDAAyD;YACzD,sEAAsE;YACtE,mFAAmF;QAErF,aAAa,EACX,sFAAsF;QACxF,gBAAgB,EAAE;YAChB,8FAA8F;YAC9F,4EAA4E;YAC5E,2DAA2D;YAC3D,uFAAuF;YACvF,6DAA6D;YAC7D,4DAA4D;YAC5D,oEAAoE;SACrE;QAED,UAAU,EAAE,qBAAqB;QAEjC,0EAA0E;QAC1E,KAAK,CAAC,OAAO,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG;YACvD,MAAM,KAAK,GAAG,aAAa,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YAC1C,MAAM,aAAa,GAAG,kBAAkB,CAAC,MAAM,CAAC,CAAC;YAEjD,YAAY,CAAC,QAAQ,EAAE,kBAAkB,KAAK,EAAE,CAAC,CAAC;YAElD,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC;YAC3D,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,oBAAoB,CAAC,QAAQ,CAAC,CAAC;YACnE,MAAM,UAAU,GAAG,uBAAuB,CACxC,MAAM,EACN,OAAO,EACP,MAAM,EACN,aAAa,CAAC,aAAa,CAC5B,CAAC;YACF,OAAO,eAAe,CAAC,UAAU,EAAE,GAAG,EAAE,QAAQ,EAAE,CAAC,UAAU,EAAE,cAAc,EAAE,EAAE,CAC/E,mBAAmB,CAAC;gBAClB,KAAK;gBACL,OAAO,EAAE,aAAa;gBACtB,MAAM;gBACN,OAAO;gBACP,UAAU;gBACV,cAAc;aACf,CAAC,CACH,CAAC;QACJ,CAAC;QAED,UAAU,CAAC,IAAI,EAAE,KAAK;YACpB,OAAO,mBAAmB,CAAC,IAAI,EAAE,KAAkD,CAAC,CAAC;QACvF,CAAC;QAED,YAAY,CAAC,MAAM,EAAE,KAAK,EAAE,KAAK;YAC/B,OAAO,qBAAqB,CAC1B,MAAM,EACN,KAAK,EACL,KAAoD,CACrD,CAAC;QACJ,CAAC;KACF,CAAC,CAAC;AACL,CAAC"}
package/package.json CHANGED
@@ -1,12 +1,14 @@
1
1
  {
2
2
  "name": "@alexanderfortin/pi-tavily-tools",
3
3
  "author": "Alexander Fortin",
4
- "version": "0.1.2",
5
- "description": "Pi coding agent extension for web search using Tavily",
4
+ "version": "0.2.0",
5
+ "description": "Pi coding agent extension for web search and content extraction using Tavily",
6
6
  "keywords": [
7
7
  "pi-package",
8
8
  "tavily",
9
9
  "web-search",
10
+ "web-extract",
11
+ "content-extraction",
10
12
  "search"
11
13
  ],
12
14
  "type": "module",