@alexanderfortin/pi-tavily-tools 0.5.0 → 0.5.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +22 -11
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/tools/shared/cache.d.ts +14 -0
- package/dist/tools/shared/cache.d.ts.map +1 -0
- package/dist/tools/shared/cache.js +20 -0
- package/dist/tools/shared/cache.js.map +1 -0
- package/dist/tools/web-extract.d.ts.map +1 -1
- package/dist/tools/web-extract.js +16 -0
- package/dist/tools/web-extract.js.map +1 -1
- package/dist/tools/web-search.d.ts.map +1 -1
- package/dist/tools/web-search.js +7 -0
- package/dist/tools/web-search.js.map +1 -1
- package/package.json +2 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,14 +1,32 @@
|
|
|
1
|
-
|
|
1
|
+
## [0.5.2](https://github.com/shaftoe/pi-tavily-tools/compare/v0.5.1...v0.5.2) (2026-04-08)
|
|
2
2
|
|
|
3
|
+
### Performance Improvements
|
|
4
|
+
|
|
5
|
+
- add session-level result cache to avoid redundant extract calls ([#9](https://github.com/shaftoe/pi-tavily-tools/issues/9)) ([6fd1056](https://github.com/shaftoe/pi-tavily-tools/commit/6fd1056a4bdbb108d0df5923c996e6e169641999))
|
|
6
|
+
|
|
7
|
+
## [0.5.1](https://github.com/shaftoe/pi-tavily-tools/compare/v0.5.0...v0.5.1) (2026-04-08)
|
|
3
8
|
|
|
4
9
|
### Bug Fixes
|
|
5
10
|
|
|
6
|
-
|
|
11
|
+
- ensure release process create a clean changelog ([a75777d](https://github.com/shaftoe/pi-tavily-tools/commit/a75777ddc8a31b6357f478e27bb5092e9df9fef3))
|
|
12
|
+
|
|
13
|
+
# Changelog
|
|
14
|
+
|
|
15
|
+
All notable changes to this project will be documented in this file.
|
|
16
|
+
|
|
17
|
+
This project follows [Semantic Versioning](https://semver.org/spec/v2.0.0.html) and
|
|
18
|
+
uses [semantic-release](https://semantic-release.gitbook.io/) for automated releases.
|
|
19
|
+
The format is based on [Keep a Changelog](https://keepachangelog.org/en/1.1.0/).
|
|
7
20
|
|
|
21
|
+
## [0.5.0](https://github.com/shaftoe/pi-tavily-tools/compare/v0.4.1...v0.5.0) (2026-04-08)
|
|
22
|
+
|
|
23
|
+
### Bug Fixes
|
|
24
|
+
|
|
25
|
+
- format changelog to make linter happy ([c7987f5](https://github.com/shaftoe/pi-tavily-tools/commit/c7987f547cc91d64475062dc22365311067e54e8))
|
|
8
26
|
|
|
9
27
|
### Features
|
|
10
28
|
|
|
11
|
-
|
|
29
|
+
- increase default max_results from 5 to 8 ([661a995](https://github.com/shaftoe/pi-tavily-tools/commit/661a9957911afcbd170d0318308a56f4653e8dc4))
|
|
12
30
|
|
|
13
31
|
## [0.4.1](https://github.com/shaftoe/pi-tavily-tools/compare/v0.4.0...v0.4.1) (2026-04-08)
|
|
14
32
|
|
|
@@ -16,7 +34,7 @@
|
|
|
16
34
|
|
|
17
35
|
- sanitize provider errors to prevent credential leakage ([#7](https://github.com/shaftoe/pi-tavily-tools/issues/7)) ([792a0a2](https://github.com/shaftoe/pi-tavily-tools/commit/792a0a28dcfb8e82a2711db16c492769b1361504))
|
|
18
36
|
|
|
19
|
-
|
|
37
|
+
## [0.4.0](https://github.com/shaftoe/pi-tavily-tools/compare/v0.3.1...v0.4.0) (2026-04-08)
|
|
20
38
|
|
|
21
39
|
### Bug Fixes
|
|
22
40
|
|
|
@@ -26,13 +44,6 @@
|
|
|
26
44
|
|
|
27
45
|
- add semantic release to automate releases ([ae572b0](https://github.com/shaftoe/pi-tavily-tools/commit/ae572b0c2c2529e8b9abc2b70268390bb226aba8))
|
|
28
46
|
|
|
29
|
-
# Changelog
|
|
30
|
-
|
|
31
|
-
All notable changes to this project will be documented in this file.
|
|
32
|
-
|
|
33
|
-
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
|
|
34
|
-
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
35
|
-
|
|
36
47
|
## [0.3.1] - 2026-04-06
|
|
37
48
|
|
|
38
49
|
### Changed
|
package/dist/index.d.ts.map
CHANGED
|
@@ -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;
|
|
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;AAOlE;;;;;;;;;GASG;AACH,MAAM,CAAC,OAAO,WAAW,EAAE,EAAE,YAAY,GAAG,IAAI,CAmC/C"}
|
package/dist/index.js
CHANGED
|
@@ -5,6 +5,7 @@
|
|
|
5
5
|
* Adds a `web_search` tool that the LLM can use to find current
|
|
6
6
|
* information, recent news, documentation, and time-sensitive data.
|
|
7
7
|
*/
|
|
8
|
+
import { resultCache } from "./tools/shared/cache.js";
|
|
8
9
|
import { createTavilyClient } from "./tools/tavily/client.js";
|
|
9
10
|
import { registerWebExtractTool } from "./tools/web-extract.js";
|
|
10
11
|
import { registerWebSearchTool } from "./tools/web-search.js";
|
|
@@ -30,6 +31,7 @@ export default function (pi) {
|
|
|
30
31
|
let registered = false;
|
|
31
32
|
const usageCache = new TavilyUsageCache(apiKey);
|
|
32
33
|
pi.on("session_start", async (_event, ctx) => {
|
|
34
|
+
resultCache.clear();
|
|
33
35
|
if (registered)
|
|
34
36
|
return;
|
|
35
37
|
registered = true;
|
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,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AAChE,OAAO,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAErD;;;;;;;;;GASG;AACH,MAAM,CAAC,OAAO,WAAW,EAAgB;IACvC,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,cAAc,EAAE,IAAI,EAAE,CAAC;IAClD,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,EAAE,CAAC,EAAE,CAAC,eAAe,EAAE,CAAC,MAAM,EAAE,GAAG,EAAE,EAAE;YACrC,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,mEAAmE,EAAE,SAAS,CAAC,CAAC;QAChG,CAAC,CAAC,CAAC;QACH,OAAO;IACT,CAAC;IAED,IAAI,UAAU,GAAG,KAAK,CAAC;IACvB,MAAM,UAAU,GAAG,IAAI,gBAAgB,CAAC,MAAM,CAAC,CAAC;IAEhD,EAAE,CAAC,EAAE,CAAC,eAAe,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE;QAC3C,IAAI,UAAU;YAAE,OAAO;QACvB,UAAU,GAAG,IAAI,CAAC;QAElB,MAAM,MAAM,GAAG,kBAAkB,CAAC,MAAM,CAAC,CAAC;QAC1C,qBAAqB,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;QAClC,sBAAsB,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;QAEnC,MAAM,UAAU,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;IACrC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,EAAE,CAAC,UAAU,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE;QACtC,MAAM,UAAU,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;IACrC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,EAAE,CAAC,kBAAkB,EAAE,CAAC,MAAM,EAAE,GAAG,EAAE,EAAE;QACxC,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACtB,MAAM,CAAC,kBAAkB,CAAC;aACvB,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,GAAG,kBAAkB,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;aACpF,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC,CAAC,cAAc;IACpC,CAAC,CAAC,CAAC;AACL,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AAChE,OAAO,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAErD;;;;;;;;;GASG;AACH,MAAM,CAAC,OAAO,WAAW,EAAgB;IACvC,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,cAAc,EAAE,IAAI,EAAE,CAAC;IAClD,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,EAAE,CAAC,EAAE,CAAC,eAAe,EAAE,CAAC,MAAM,EAAE,GAAG,EAAE,EAAE;YACrC,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,mEAAmE,EAAE,SAAS,CAAC,CAAC;QAChG,CAAC,CAAC,CAAC;QACH,OAAO;IACT,CAAC;IAED,IAAI,UAAU,GAAG,KAAK,CAAC;IACvB,MAAM,UAAU,GAAG,IAAI,gBAAgB,CAAC,MAAM,CAAC,CAAC;IAEhD,EAAE,CAAC,EAAE,CAAC,eAAe,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE;QAC3C,WAAW,CAAC,KAAK,EAAE,CAAC;QAEpB,IAAI,UAAU;YAAE,OAAO;QACvB,UAAU,GAAG,IAAI,CAAC;QAElB,MAAM,MAAM,GAAG,kBAAkB,CAAC,MAAM,CAAC,CAAC;QAC1C,qBAAqB,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;QAClC,sBAAsB,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;QAEnC,MAAM,UAAU,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;IACrC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,EAAE,CAAC,UAAU,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE;QACtC,MAAM,UAAU,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;IACrC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,EAAE,CAAC,kBAAkB,EAAE,CAAC,MAAM,EAAE,GAAG,EAAE,EAAE;QACxC,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACtB,MAAM,CAAC,kBAAkB,CAAC;aACvB,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,GAAG,kBAAkB,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;aACpF,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC,CAAC,cAAc;IACpC,CAAC,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Session-level result cache
|
|
3
|
+
*
|
|
4
|
+
* Populated by web_search results that include content.
|
|
5
|
+
* Checked by web_extract before making an API call.
|
|
6
|
+
* Cleared on session_start to prevent stale data across sessions.
|
|
7
|
+
*/
|
|
8
|
+
import type { ExtractResult } from "../tavily/types.js";
|
|
9
|
+
export declare const resultCache: {
|
|
10
|
+
get(url: string): ExtractResult | undefined;
|
|
11
|
+
set(result: ExtractResult): void;
|
|
12
|
+
clear(): void;
|
|
13
|
+
};
|
|
14
|
+
//# sourceMappingURL=cache.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cache.d.ts","sourceRoot":"","sources":["../../../src/tools/shared/cache.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAIxD,eAAO,MAAM,WAAW;aACb,MAAM,GAAG,aAAa,GAAG,SAAS;gBAI/B,aAAa,GAAG,IAAI;aAIvB,IAAI;CAGd,CAAC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Session-level result cache
|
|
3
|
+
*
|
|
4
|
+
* Populated by web_search results that include content.
|
|
5
|
+
* Checked by web_extract before making an API call.
|
|
6
|
+
* Cleared on session_start to prevent stale data across sessions.
|
|
7
|
+
*/
|
|
8
|
+
const cache = new Map();
|
|
9
|
+
export const resultCache = {
|
|
10
|
+
get(url) {
|
|
11
|
+
return cache.get(url);
|
|
12
|
+
},
|
|
13
|
+
set(result) {
|
|
14
|
+
cache.set(result.url, result);
|
|
15
|
+
},
|
|
16
|
+
clear() {
|
|
17
|
+
cache.clear();
|
|
18
|
+
},
|
|
19
|
+
};
|
|
20
|
+
//# sourceMappingURL=cache.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cache.js","sourceRoot":"","sources":["../../../src/tools/shared/cache.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH,MAAM,KAAK,GAAG,IAAI,GAAG,EAAyB,CAAC;AAE/C,MAAM,CAAC,MAAM,WAAW,GAAG;IACzB,GAAG,CAAC,GAAW;QACb,OAAO,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACxB,CAAC;IAED,GAAG,CAAC,MAAqB;QACvB,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IAChC,CAAC;IAED,KAAK;QACH,KAAK,CAAC,KAAK,EAAE,CAAC;IAChB,CAAC;CACF,CAAC"}
|
|
@@ -1 +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;
|
|
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;AAcjD,wBAAgB,sBAAsB,CAAC,EAAE,EAAE,YAAY,EAAE,MAAM,EAAE,YAAY,GAAG,IAAI,CAmFnF"}
|
|
@@ -11,6 +11,7 @@
|
|
|
11
11
|
* - Custom TUI rendering
|
|
12
12
|
* - Robust error handling
|
|
13
13
|
*/
|
|
14
|
+
import { resultCache } from "./shared/cache.js";
|
|
14
15
|
import { buildToolResult, raceAbort, sanitizeError, sendProgress } from "./shared/execute.js";
|
|
15
16
|
import { buildExtractOptions, validateUrls } from "./tavily/client.js";
|
|
16
17
|
import { buildExtractSuccessDetails } from "./tavily/details.js";
|
|
@@ -46,6 +47,21 @@ export function registerWebExtractTool(pi, client) {
|
|
|
46
47
|
const urlCount = urls.length;
|
|
47
48
|
const urlText = urlCount === 1 ? "URL" : "URLs";
|
|
48
49
|
sendProgress(onUpdate, `Extracting content from ${urlCount} ${urlText}...`);
|
|
50
|
+
// Check cache for single-URL requests — avoids a redundant API call when
|
|
51
|
+
// the URL was already returned with content in a prior web_search result.
|
|
52
|
+
if (urlCount === 1 && !extractOptions.query) {
|
|
53
|
+
const cached = resultCache.get(urls[0]);
|
|
54
|
+
if (cached) {
|
|
55
|
+
return buildToolResult(cached.rawContent, ctx, "extract", (truncation, fullOutputPath) => buildExtractSuccessDetails({
|
|
56
|
+
urlCount,
|
|
57
|
+
options: extractOptions,
|
|
58
|
+
results: [cached],
|
|
59
|
+
failedResults: [],
|
|
60
|
+
truncation,
|
|
61
|
+
fullOutputPath,
|
|
62
|
+
}));
|
|
63
|
+
}
|
|
64
|
+
}
|
|
49
65
|
let response;
|
|
50
66
|
try {
|
|
51
67
|
response = await raceAbort(client.extract(urls, extractOptions), signal);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"web-extract.js","sourceRoot":"","sources":["../../src/tools/web-extract.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAKH,OAAO,EAAE,eAAe,EAAE,SAAS,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAC9F,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,MAAM,EAAE,QAAQ,EAAE,GAAG;YACtD,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,IAAI,QAAQ,CAAC;YACb,IAAI,CAAC;gBACH,QAAQ,GAAG,MAAM,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,cAAc,CAAC,EAAE,MAAM,CAAC,CAAC;YAC3E,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,MAAM,aAAa,CAAC,KAAK,CAAC,CAAC;YAC7B,CAAC;YACD,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
|
+
{"version":3,"file":"web-extract.js","sourceRoot":"","sources":["../../src/tools/web-extract.ts"],"names":[],"mappings":"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"}
|
|
@@ -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;
|
|
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;AAcjD,wBAAgB,qBAAqB,CAAC,EAAE,EAAE,YAAY,EAAE,MAAM,EAAE,YAAY,GAAG,IAAI,CA2ElF"}
|
package/dist/tools/web-search.js
CHANGED
|
@@ -10,6 +10,7 @@
|
|
|
10
10
|
* - Custom TUI rendering
|
|
11
11
|
* - Robust error handling
|
|
12
12
|
*/
|
|
13
|
+
import { resultCache } from "./shared/cache.js";
|
|
13
14
|
import { buildToolResult, raceAbort, sanitizeError, sendProgress } from "./shared/execute.js";
|
|
14
15
|
import { buildSearchOptions, validateQuery } from "./tavily/client.js";
|
|
15
16
|
import { buildSuccessDetails } from "./tavily/details.js";
|
|
@@ -50,6 +51,12 @@ export function registerWebSearchTool(pi, client) {
|
|
|
50
51
|
throw sanitizeError(error);
|
|
51
52
|
}
|
|
52
53
|
const { answer, results, images } = extractSearchResults(response);
|
|
54
|
+
for (const r of results) {
|
|
55
|
+
const content = r.rawContent ?? r.content;
|
|
56
|
+
if (r.url && content) {
|
|
57
|
+
resultCache.set({ url: r.url, title: r.title, rawContent: content });
|
|
58
|
+
}
|
|
59
|
+
}
|
|
53
60
|
const fullOutput = formatWebSearchResponse(answer, results, images, searchOptions.includeImages);
|
|
54
61
|
return buildToolResult(fullOutput, ctx, "search", (truncation, fullOutputPath) => buildSuccessDetails({
|
|
55
62
|
query,
|
|
@@ -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,SAAS,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAC9F,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,MAAM,EAAE,QAAQ,EAAE,GAAG;YACtD,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,IAAI,QAAQ,CAAC;YACb,IAAI,CAAC;gBACH,QAAQ,GAAG,MAAM,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,aAAa,CAAC,EAAE,MAAM,CAAC,CAAC;YAC1E,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,MAAM,aAAa,CAAC,KAAK,CAAC,CAAC;YAC7B,CAAC;YACD,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,oBAAoB,CAAC,QAAQ,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"web-search.js","sourceRoot":"","sources":["../../src/tools/web-search.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@alexanderfortin/pi-tavily-tools",
|
|
3
3
|
"author": "Alexander Fortin",
|
|
4
|
-
"version": "0.5.
|
|
4
|
+
"version": "0.5.2",
|
|
5
5
|
"description": "Pi coding agent extension for web search and content extraction using Tavily",
|
|
6
6
|
"keywords": [
|
|
7
7
|
"pi-package",
|
|
@@ -66,6 +66,7 @@
|
|
|
66
66
|
"@mariozechner/pi-tui": "0.66.0",
|
|
67
67
|
"@semantic-release/changelog": "6.0.3",
|
|
68
68
|
"@semantic-release/commit-analyzer": "13.0.1",
|
|
69
|
+
"@semantic-release/exec": "7.1.0",
|
|
69
70
|
"@semantic-release/git": "10.0.1",
|
|
70
71
|
"@semantic-release/github": "12.0.6",
|
|
71
72
|
"@semantic-release/npm": "13.1.5",
|