zan-browser 3.0.2 → 3.0.3

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.
@@ -1 +1 @@
1
- {"version":3,"file":"web_search.d.ts","sourceRoot":"","sources":["../../../src/tools/network/web_search.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAKzE,qBAAa,aAAc,YAAW,IAAI;IACxC,IAAI,SAAgB;IACpB,WAAW,SAAoJ;IAE/J,WAAW,EAAE,UAAU,CAMrB;IAEI,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,GAAG,EAAE,WAAW,GAAG,OAAO,CAAC,UAAU,CAAC;CA8CtF"}
1
+ {"version":3,"file":"web_search.d.ts","sourceRoot":"","sources":["../../../src/tools/network/web_search.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAgCzE,qBAAa,aAAc,YAAW,IAAI;IACxC,IAAI,SAAgB;IACpB,WAAW,SAAoJ;IAE/J,WAAW,EAAE,UAAU,CAMrB;IAEI,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,GAAG,EAAE,WAAW,GAAG,OAAO,CAAC,UAAU,CAAC;CA2FtF"}
@@ -1,11 +1,9 @@
1
1
  "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
2
  Object.defineProperty(exports, "__esModule", { value: true });
6
3
  exports.WebSearchTool = void 0;
7
- const sdk_1 = __importDefault(require("@anthropic-ai/sdk"));
8
- const FALLBACK_MODEL = "claude-haiku-4-5-20251001";
4
+ const FALLBACK_MODEL = "claude-sonnet-4-6-20250514";
5
+ const API_TIMEOUT_MS = 30_000;
6
+ // ─── Tool ────────────────────────────────────────────────────────────────────
9
7
  class WebSearchTool {
10
8
  name = "web_search";
11
9
  description = "Search the web for information before navigating. Useful when the goal is vague or the target site/URL is unknown. Does NOT require a browser.";
@@ -19,38 +17,77 @@ class WebSearchTool {
19
17
  async execute(params, ctx) {
20
18
  const query = String(params.query);
21
19
  try {
22
- const client = new sdk_1.default({ apiKey: ctx.anthropicApiKey });
23
- // The web_search tool type is supported by the API but may not be
24
- // in older SDK type definitions — cast through unknown.
25
- const response = await client.messages.create({
26
- model: ctx.aiModel ?? FALLBACK_MODEL,
27
- max_tokens: 1024,
28
- tools: [{ type: "web_search_20250305" }],
29
- messages: [
30
- { role: "user", content: `Search the web for: ${query}\n\nReturn the most relevant URLs and snippets.` },
31
- ],
20
+ // Call the Anthropic API directly via fetch — the SDK 0.39.0 doesn't
21
+ // support the web_search server-side tool, so we bypass it entirely.
22
+ const response = await fetch("https://api.anthropic.com/v1/messages", {
23
+ method: "POST",
24
+ headers: {
25
+ "Content-Type": "application/json",
26
+ "x-api-key": ctx.anthropicApiKey,
27
+ "anthropic-version": "2023-06-01",
28
+ "anthropic-beta": "web-search-2025-03-05",
29
+ },
30
+ body: JSON.stringify({
31
+ model: ctx.aiModel ?? FALLBACK_MODEL,
32
+ max_tokens: 1024,
33
+ tools: [{ type: "web_search_20250305", name: "web_search" }],
34
+ messages: [{ role: "user", content: query }],
35
+ }),
36
+ signal: AbortSignal.timeout(API_TIMEOUT_MS),
32
37
  });
33
- // Extract text and search result blocks from the response
34
- const parts = [];
35
- const urls = [];
36
- for (const block of response.content) {
38
+ if (!response.ok) {
39
+ const errorBody = await response.text();
40
+ return {
41
+ success: false,
42
+ summary: `web_search failed: HTTP ${response.status} — ${errorBody.slice(0, 300)}`,
43
+ error: `HTTP ${response.status}`,
44
+ };
45
+ }
46
+ const data = (await response.json());
47
+ if (data.error) {
48
+ return {
49
+ success: false,
50
+ summary: `web_search failed: ${data.error.message}`,
51
+ error: data.error.message,
52
+ };
53
+ }
54
+ // Extract search results and text blocks
55
+ const results = [];
56
+ const textParts = [];
57
+ for (const block of data.content) {
37
58
  if (block.type === "text") {
38
- parts.push(block.text);
59
+ textParts.push(block.text);
39
60
  }
40
61
  else if (block.type === "web_search_tool_result") {
41
- for (const item of block.content ?? []) {
62
+ const searchBlock = block;
63
+ for (const item of searchBlock.content ?? []) {
42
64
  if (item.type === "web_search_result") {
43
- urls.push(item.url);
44
- parts.push(`- ${item.title}: ${item.url}\n ${(item.page_content ?? item.encrypted_content ?? "").slice(0, 200)}`);
65
+ results.push({
66
+ title: item.title,
67
+ url: item.url,
68
+ snippet: (item.page_content ?? item.encrypted_content ?? "").slice(0, 200),
69
+ });
45
70
  }
46
71
  }
47
72
  }
48
73
  }
49
- const summary = parts.join("\n\n").slice(0, 4000);
74
+ // Format top 5 results
75
+ const top = results.slice(0, 5);
76
+ const resultLines = top.map((r, i) => `[${i + 1}] ${r.title} — ${r.url}\n${r.snippet}`);
77
+ // Combine: search results first, then any Claude commentary
78
+ const parts = [];
79
+ if (resultLines.length > 0) {
80
+ parts.push(resultLines.join("\n\n"));
81
+ }
82
+ if (textParts.length > 0) {
83
+ parts.push(textParts.join("\n"));
84
+ }
85
+ const summary = parts.join("\n\n---\n\n").slice(0, 4000);
86
+ const urls = results.map((r) => r.url);
50
87
  return {
51
88
  success: true,
52
- summary: `Web search results for "${query}":\n${summary}`,
53
- data: { query, urls, resultCount: urls.length },
89
+ summary: summary || "Web search returned no results.",
90
+ data: { query, urls, resultCount: results.length },
54
91
  };
55
92
  }
56
93
  catch (err) {
@@ -1 +1 @@
1
- {"version":3,"file":"web_search.js","sourceRoot":"","sources":["../../../src/tools/network/web_search.ts"],"names":[],"mappings":";;;;;;AACA,4DAA0C;AAE1C,MAAM,cAAc,GAAG,2BAA2B,CAAC;AAEnD,MAAa,aAAa;IACxB,IAAI,GAAG,YAAY,CAAC;IACpB,WAAW,GAAG,gJAAgJ,CAAC;IAE/J,WAAW,GAAe;QACxB,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE;YACV,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,cAAc,EAAE;SACvD;QACD,QAAQ,EAAE,CAAC,OAAO,CAAC;KACpB,CAAC;IAEF,KAAK,CAAC,OAAO,CAAC,MAA+B,EAAE,GAAgB;QAC7D,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAEnC,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,IAAI,aAAS,CAAC,EAAE,MAAM,EAAE,GAAG,CAAC,eAAe,EAAE,CAAC,CAAC;YAE9D,kEAAkE;YAClE,wDAAwD;YACxD,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC;gBAC5C,KAAK,EAAE,GAAG,CAAC,OAAO,IAAI,cAAc;gBACpC,UAAU,EAAE,IAAI;gBAChB,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,qBAAqB,EAAS,CAAC;gBAC/C,QAAQ,EAAE;oBACR,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,uBAAuB,KAAK,iDAAiD,EAAE;iBACzG;aACF,CAAC,CAAC;YAEH,0DAA0D;YAC1D,MAAM,KAAK,GAAa,EAAE,CAAC;YAC3B,MAAM,IAAI,GAAa,EAAE,CAAC;YAE1B,KAAK,MAAM,KAAK,IAAI,QAAQ,CAAC,OAAO,EAAE,CAAC;gBACrC,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;oBAC1B,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBACzB,CAAC;qBAAM,IAAK,KAAa,CAAC,IAAI,KAAK,wBAAwB,EAAE,CAAC;oBAC5D,KAAK,MAAM,IAAI,IAAK,KAAa,CAAC,OAAO,IAAI,EAAE,EAAE,CAAC;wBAChD,IAAI,IAAI,CAAC,IAAI,KAAK,mBAAmB,EAAE,CAAC;4BACtC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;4BACpB,KAAK,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,KAAK,KAAK,IAAI,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,iBAAiB,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;wBACrH,CAAC;oBACH,CAAC;gBACH,CAAC;YACH,CAAC;YAED,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;YAElD,OAAO;gBACL,OAAO,EAAE,IAAI;gBACb,OAAO,EAAE,2BAA2B,KAAK,OAAO,OAAO,EAAE;gBACzD,IAAI,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,CAAC,MAAM,EAAE;aAChD,CAAC;QACJ,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,GAAG,GAAI,GAAa,CAAC,OAAO,CAAC;YACnC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,sBAAsB,GAAG,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC;QAC9E,CAAC;IACH,CAAC;CACF;AA1DD,sCA0DC"}
1
+ {"version":3,"file":"web_search.js","sourceRoot":"","sources":["../../../src/tools/network/web_search.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "zan-browser",
3
- "version": "3.0.2",
3
+ "version": "3.0.3",
4
4
  "description": "AI-powered cloud browser library with observe-first, screenshot-as-fallback pattern",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",