@alfe.ai/openclaw-search 0.0.20 → 0.0.22

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":"plugin.d.cts","names":[],"sources":["../src/plugin.ts"],"mappings":";UAOU,SAAA;EAAA,MAAA,EAAA;IAQJ,IAAA,EAkCL,CAAA,GAAA,IAAA,EAAA,OAAA,EAAA,EAAA,GAAA,IAAA;IAAA,IAAA,EAAA,CAAA,GAAA,IAAA,EAAA,OAAA,EAAA,EAAA,GAAA,IAAA;IA7Be,KAAA,EAAA,CAAA,GAAA,IAAA,EAAA,OAAA,EAAA,EAAA,GAAA,IAAA;IAyBE,KAAA,EAAA,CAAA,GAAA,IAAA,EAAA,OAAA,EAAA,EAAA,GAAA,IAAA;EAAS,CAAA;;;cA9BrB;;;;gBAKU;kBAyBE"}
1
+ {"version":3,"file":"plugin.d.cts","names":[],"sources":["../src/plugin.ts"],"mappings":";UAOU,SAAA;EAAA,MAAA,EAAA;IAKJ,IAAA,EA6BL,CAAA,GAAA,IAAA,EAAA,OAAA,EAAA,EAAA,GAAA,IAAA;IAAA,IAAA,EAAA,CAAA,GAAA,IAAA,EAAA,OAAA,EAAA,EAAA,GAAA,IAAA;IAxBe,KAAA,EAAA,CAAA,GAAA,IAAA,EAAA,OAAA,EAAA,EAAA,GAAA,IAAA;IAqBE,KAAA,EAAA,CAAA,GAAA,IAAA,EAAA,OAAA,EAAA,EAAA,GAAA,IAAA;EAAS,CAAA;;;cA1BrB;;;;gBAKU;kBAqBE"}
@@ -1 +1 @@
1
- {"version":3,"file":"plugin.d.ts","names":[],"sources":["../src/plugin.ts"],"mappings":";UAOU,SAAA;EAAA,MAAA,EAAA;IAQJ,IAAA,EAkCL,CAAA,GAAA,IAAA,EAAA,OAAA,EAAA,EAAA,GAAA,IAAA;IAAA,IAAA,EAAA,CAAA,GAAA,IAAA,EAAA,OAAA,EAAA,EAAA,GAAA,IAAA;IA7Be,KAAA,EAAA,CAAA,GAAA,IAAA,EAAA,OAAA,EAAA,EAAA,GAAA,IAAA;IAyBE,KAAA,EAAA,CAAA,GAAA,IAAA,EAAA,OAAA,EAAA,EAAA,GAAA,IAAA;EAAS,CAAA;;;cA9BrB;;;;gBAKU;kBAyBE"}
1
+ {"version":3,"file":"plugin.d.ts","names":[],"sources":["../src/plugin.ts"],"mappings":";UAOU,SAAA;EAAA,MAAA,EAAA;IAKJ,IAAA,EA6BL,CAAA,GAAA,IAAA,EAAA,OAAA,EAAA,EAAA,GAAA,IAAA;IAAA,IAAA,EAAA,CAAA,GAAA,IAAA,EAAA,OAAA,EAAA,EAAA,GAAA,IAAA;IAxBe,KAAA,EAAA,CAAA,GAAA,IAAA,EAAA,OAAA,EAAA,EAAA,GAAA,IAAA;IAqBE,KAAA,EAAA,CAAA,GAAA,IAAA,EAAA,OAAA,EAAA,EAAA,GAAA,IAAA;EAAS,CAAA;;;cA1BrB;;;;gBAKU;kBAqBE"}
package/dist/plugin2.cjs CHANGED
@@ -85,20 +85,12 @@ function registerTools(api, client) {
85
85
  }
86
86
  //#endregion
87
87
  //#region src/plugin.ts
88
- const pkg = (0, node_module.createRequire)(require("url").pathToFileURL(__filename).href)("../package.json");
89
- const ACTIVATED_KEY = "__alfeSearchPluginActivated";
90
- const g = globalThis;
91
88
  const plugin = {
92
89
  id: "@alfe.ai/openclaw-search",
93
90
  name: "Search",
94
- version: pkg.version,
91
+ version: (0, node_module.createRequire)(require("url").pathToFileURL(__filename).href)("../package.json").version,
95
92
  activate(api) {
96
93
  const log = api.logger;
97
- if (g[ACTIVATED_KEY] === true) {
98
- log.debug("Search plugin already activated — skipping duplicate");
99
- return;
100
- }
101
- g[ACTIVATED_KEY] = true;
102
94
  log.info("Search plugin activating...");
103
95
  let client;
104
96
  try {
@@ -108,7 +100,6 @@ const plugin = {
108
100
  apiKey: config.apiKey
109
101
  });
110
102
  } catch (err) {
111
- g[ACTIVATED_KEY] = false;
112
103
  log.error(`Search plugin: failed to resolve config — ${err instanceof Error ? err.message : String(err)}`);
113
104
  return;
114
105
  }
@@ -116,7 +107,6 @@ const plugin = {
116
107
  log.info("Search plugin activated — web_search, image_search, news_search tools registered");
117
108
  },
118
109
  deactivate(api) {
119
- g[ACTIVATED_KEY] = false;
120
110
  api.logger.info("Search plugin deactivating...");
121
111
  }
122
112
  };
package/dist/plugin2.js CHANGED
@@ -85,20 +85,12 @@ function registerTools(api, client) {
85
85
  }
86
86
  //#endregion
87
87
  //#region src/plugin.ts
88
- const pkg = createRequire(import.meta.url)("../package.json");
89
- const ACTIVATED_KEY = "__alfeSearchPluginActivated";
90
- const g = globalThis;
91
88
  const plugin = {
92
89
  id: "@alfe.ai/openclaw-search",
93
90
  name: "Search",
94
- version: pkg.version,
91
+ version: createRequire(import.meta.url)("../package.json").version,
95
92
  activate(api) {
96
93
  const log = api.logger;
97
- if (g[ACTIVATED_KEY] === true) {
98
- log.debug("Search plugin already activated — skipping duplicate");
99
- return;
100
- }
101
- g[ACTIVATED_KEY] = true;
102
94
  log.info("Search plugin activating...");
103
95
  let client;
104
96
  try {
@@ -108,7 +100,6 @@ const plugin = {
108
100
  apiKey: config.apiKey
109
101
  });
110
102
  } catch (err) {
111
- g[ACTIVATED_KEY] = false;
112
103
  log.error(`Search plugin: failed to resolve config — ${err instanceof Error ? err.message : String(err)}`);
113
104
  return;
114
105
  }
@@ -116,7 +107,6 @@ const plugin = {
116
107
  log.info("Search plugin activated — web_search, image_search, news_search tools registered");
117
108
  },
118
109
  deactivate(api) {
119
- g[ACTIVATED_KEY] = false;
120
110
  api.logger.info("Search plugin deactivating...");
121
111
  }
122
112
  };
@@ -1 +1 @@
1
- {"version":3,"file":"plugin2.js","names":[],"sources":["../src/tools.ts","../src/plugin.ts"],"sourcesContent":["import type { AgentApiClient } from \"@alfe.ai/agent-api-client\";\n\ninterface PluginApi {\n registerTool(tool: ToolDef): void;\n}\n\ninterface ToolDef {\n name: string;\n description: string;\n label: string;\n parameters: Record<string, unknown>;\n execute: (toolCallId: string, params: Record<string, unknown>) => Promise<unknown>;\n}\n\nexport function registerTools(api: PluginApi, client: AgentApiClient): void {\n // ── Web Search ──────────────────────────────────────\n\n api.registerTool({\n name: \"web_search\",\n label: \"web_search\",\n description: \"Search the web. Returns web pages with titles, URLs, and descriptions.\",\n parameters: {\n type: \"object\",\n properties: {\n query: { type: \"string\", description: \"The search query\" },\n count: { type: \"number\", description: \"Number of results to return (1-20)\", default: 10 },\n offset: { type: \"number\", description: \"Pagination offset (0-9)\", default: 0 },\n },\n required: [\"query\"],\n },\n execute: async (_id, params) => {\n return client.searchWeb(params as { query: string; count?: number; offset?: number });\n },\n });\n\n // ── Image Search ────────────────────────────────────\n\n api.registerTool({\n name: \"image_search\",\n label: \"image_search\",\n description: \"Search for images. Returns image URLs, thumbnails, and metadata.\",\n parameters: {\n type: \"object\",\n properties: {\n query: { type: \"string\", description: \"The search query\" },\n count: { type: \"number\", description: \"Number of results to return (1-20)\", default: 10 },\n },\n required: [\"query\"],\n },\n execute: async (_id, params) => {\n return client.searchImages(params as { query: string; count?: number });\n },\n });\n\n // ── News Search ─────────────────────────────────────\n\n api.registerTool({\n name: \"news_search\",\n label: \"news_search\",\n description: \"Search for news articles. Returns articles with titles, sources, and publication dates.\",\n parameters: {\n type: \"object\",\n properties: {\n query: { type: \"string\", description: \"The search query\" },\n count: { type: \"number\", description: \"Number of results to return (1-20)\", default: 10 },\n offset: { type: \"number\", description: \"Pagination offset (0-9)\", default: 0 },\n },\n required: [\"query\"],\n },\n execute: async (_id, params) => {\n return client.searchNews(params as { query: string; count?: number; freshness?: string });\n },\n });\n}\n","import { registerTools } from \"./tools.js\";\nimport { resolveConfig } from \"@alfe.ai/config\";\nimport { AgentApiClient } from \"@alfe.ai/agent-api-client\";\nimport { createRequire } from 'node:module';\nconst require = createRequire(import.meta.url);\nconst pkg = require('../package.json') as { version: string };\n\ninterface PluginApi {\n logger: { info: (...args: unknown[]) => void; warn: (...args: unknown[]) => void; error: (...args: unknown[]) => void; debug: (...args: unknown[]) => void };\n registerTool(tool: unknown): void;\n}\n\nconst ACTIVATED_KEY = \"__alfeSearchPluginActivated\";\nconst g = globalThis as Record<string, unknown>;\n\nconst plugin = {\n id: \"@alfe.ai/openclaw-search\",\n name: \"Search\",\n version: pkg.version,\n\n activate(api: PluginApi) {\n const log = api.logger;\n\n if (g[ACTIVATED_KEY] === true) {\n log.debug(\"Search plugin already activated — skipping duplicate\");\n return;\n }\n g[ACTIVATED_KEY] = true;\n\n log.info(\"Search plugin activating...\");\n\n let client: AgentApiClient;\n try {\n const config = resolveConfig();\n client = new AgentApiClient({ apiUrl: config.apiUrl, apiKey: config.apiKey });\n } catch (err) {\n g[ACTIVATED_KEY] = false;\n log.error(`Search plugin: failed to resolve config — ${err instanceof Error ? err.message : String(err)}`);\n return;\n }\n\n registerTools(api, client);\n log.info(\"Search plugin activated — web_search, image_search, news_search tools registered\");\n },\n\n deactivate(api: PluginApi) {\n g[ACTIVATED_KEY] = false;\n api.logger.info(\"Search plugin deactivating...\");\n },\n};\n\nexport default plugin;\n"],"mappings":";;;;AAcA,SAAgB,cAAc,KAAgB,QAA8B;AAG1E,KAAI,aAAa;EACf,MAAM;EACN,OAAO;EACP,aAAa;EACb,YAAY;GACV,MAAM;GACN,YAAY;IACV,OAAO;KAAE,MAAM;KAAU,aAAa;KAAoB;IAC1D,OAAO;KAAE,MAAM;KAAU,aAAa;KAAsC,SAAS;KAAI;IACzF,QAAQ;KAAE,MAAM;KAAU,aAAa;KAA2B,SAAS;KAAG;IAC/E;GACD,UAAU,CAAC,QAAQ;GACpB;EACD,SAAS,OAAO,KAAK,WAAW;AAC9B,UAAO,OAAO,UAAU,OAA6D;;EAExF,CAAC;AAIF,KAAI,aAAa;EACf,MAAM;EACN,OAAO;EACP,aAAa;EACb,YAAY;GACV,MAAM;GACN,YAAY;IACV,OAAO;KAAE,MAAM;KAAU,aAAa;KAAoB;IAC1D,OAAO;KAAE,MAAM;KAAU,aAAa;KAAsC,SAAS;KAAI;IAC1F;GACD,UAAU,CAAC,QAAQ;GACpB;EACD,SAAS,OAAO,KAAK,WAAW;AAC9B,UAAO,OAAO,aAAa,OAA4C;;EAE1E,CAAC;AAIF,KAAI,aAAa;EACf,MAAM;EACN,OAAO;EACP,aAAa;EACb,YAAY;GACV,MAAM;GACN,YAAY;IACV,OAAO;KAAE,MAAM;KAAU,aAAa;KAAoB;IAC1D,OAAO;KAAE,MAAM;KAAU,aAAa;KAAsC,SAAS;KAAI;IACzF,QAAQ;KAAE,MAAM;KAAU,aAAa;KAA2B,SAAS;KAAG;IAC/E;GACD,UAAU,CAAC,QAAQ;GACpB;EACD,SAAS,OAAO,KAAK,WAAW;AAC9B,UAAO,OAAO,WAAW,OAAgE;;EAE5F,CAAC;;;;ACnEJ,MAAM,MADU,cAAc,OAAO,KAAK,IAAI,CAC1B,kBAAkB;AAOtC,MAAM,gBAAgB;AACtB,MAAM,IAAI;AAEV,MAAM,SAAS;CACb,IAAI;CACJ,MAAM;CACN,SAAS,IAAI;CAEb,SAAS,KAAgB;EACvB,MAAM,MAAM,IAAI;AAEhB,MAAI,EAAE,mBAAmB,MAAM;AAC7B,OAAI,MAAM,uDAAuD;AACjE;;AAEF,IAAE,iBAAiB;AAEnB,MAAI,KAAK,8BAA8B;EAEvC,IAAI;AACJ,MAAI;GACF,MAAM,SAAS,eAAe;AAC9B,YAAS,IAAI,eAAe;IAAE,QAAQ,OAAO;IAAQ,QAAQ,OAAO;IAAQ,CAAC;WACtE,KAAK;AACZ,KAAE,iBAAiB;AACnB,OAAI,MAAM,6CAA6C,eAAe,QAAQ,IAAI,UAAU,OAAO,IAAI,GAAG;AAC1G;;AAGF,gBAAc,KAAK,OAAO;AAC1B,MAAI,KAAK,mFAAmF;;CAG9F,WAAW,KAAgB;AACzB,IAAE,iBAAiB;AACnB,MAAI,OAAO,KAAK,gCAAgC;;CAEnD"}
1
+ {"version":3,"file":"plugin2.js","names":[],"sources":["../src/tools.ts","../src/plugin.ts"],"sourcesContent":["import type { AgentApiClient } from \"@alfe.ai/agent-api-client\";\n\ninterface PluginApi {\n registerTool(tool: ToolDef): void;\n}\n\ninterface ToolDef {\n name: string;\n description: string;\n label: string;\n parameters: Record<string, unknown>;\n execute: (toolCallId: string, params: Record<string, unknown>) => Promise<unknown>;\n}\n\nexport function registerTools(api: PluginApi, client: AgentApiClient): void {\n // ── Web Search ──────────────────────────────────────\n\n api.registerTool({\n name: \"web_search\",\n label: \"web_search\",\n description: \"Search the web. Returns web pages with titles, URLs, and descriptions.\",\n parameters: {\n type: \"object\",\n properties: {\n query: { type: \"string\", description: \"The search query\" },\n count: { type: \"number\", description: \"Number of results to return (1-20)\", default: 10 },\n offset: { type: \"number\", description: \"Pagination offset (0-9)\", default: 0 },\n },\n required: [\"query\"],\n },\n execute: async (_id, params) => {\n return client.searchWeb(params as { query: string; count?: number; offset?: number });\n },\n });\n\n // ── Image Search ────────────────────────────────────\n\n api.registerTool({\n name: \"image_search\",\n label: \"image_search\",\n description: \"Search for images. Returns image URLs, thumbnails, and metadata.\",\n parameters: {\n type: \"object\",\n properties: {\n query: { type: \"string\", description: \"The search query\" },\n count: { type: \"number\", description: \"Number of results to return (1-20)\", default: 10 },\n },\n required: [\"query\"],\n },\n execute: async (_id, params) => {\n return client.searchImages(params as { query: string; count?: number });\n },\n });\n\n // ── News Search ─────────────────────────────────────\n\n api.registerTool({\n name: \"news_search\",\n label: \"news_search\",\n description: \"Search for news articles. Returns articles with titles, sources, and publication dates.\",\n parameters: {\n type: \"object\",\n properties: {\n query: { type: \"string\", description: \"The search query\" },\n count: { type: \"number\", description: \"Number of results to return (1-20)\", default: 10 },\n offset: { type: \"number\", description: \"Pagination offset (0-9)\", default: 0 },\n },\n required: [\"query\"],\n },\n execute: async (_id, params) => {\n return client.searchNews(params as { query: string; count?: number; freshness?: string });\n },\n });\n}\n","import { registerTools } from \"./tools.js\";\nimport { resolveConfig } from \"@alfe.ai/config\";\nimport { AgentApiClient } from \"@alfe.ai/agent-api-client\";\nimport { createRequire } from 'node:module';\nconst require = createRequire(import.meta.url);\nconst pkg = require('../package.json') as { version: string };\n\ninterface PluginApi {\n logger: { info: (...args: unknown[]) => void; warn: (...args: unknown[]) => void; error: (...args: unknown[]) => void; debug: (...args: unknown[]) => void };\n registerTool(tool: unknown): void;\n}\n\nconst plugin = {\n id: \"@alfe.ai/openclaw-search\",\n name: \"Search\",\n version: pkg.version,\n\n activate(api: PluginApi) {\n const log = api.logger;\n\n log.info(\"Search plugin activating...\");\n\n let client: AgentApiClient;\n try {\n const config = resolveConfig();\n client = new AgentApiClient({ apiUrl: config.apiUrl, apiKey: config.apiKey });\n } catch (err) {\n log.error(`Search plugin: failed to resolve config — ${err instanceof Error ? err.message : String(err)}`);\n return;\n }\n\n // No activation guard: tools must register on EVERY activate — OpenClaw\n // 2026.5+ uses per-session registries, and registration has no side\n // effects worth deduplicating (the client is a stateless HTTP wrapper).\n registerTools(api, client);\n log.info(\"Search plugin activated — web_search, image_search, news_search tools registered\");\n },\n\n deactivate(api: PluginApi) {\n api.logger.info(\"Search plugin deactivating...\");\n },\n};\n\nexport default plugin;\n"],"mappings":";;;;AAcA,SAAgB,cAAc,KAAgB,QAA8B;AAG1E,KAAI,aAAa;EACf,MAAM;EACN,OAAO;EACP,aAAa;EACb,YAAY;GACV,MAAM;GACN,YAAY;IACV,OAAO;KAAE,MAAM;KAAU,aAAa;KAAoB;IAC1D,OAAO;KAAE,MAAM;KAAU,aAAa;KAAsC,SAAS;KAAI;IACzF,QAAQ;KAAE,MAAM;KAAU,aAAa;KAA2B,SAAS;KAAG;IAC/E;GACD,UAAU,CAAC,QAAQ;GACpB;EACD,SAAS,OAAO,KAAK,WAAW;AAC9B,UAAO,OAAO,UAAU,OAA6D;;EAExF,CAAC;AAIF,KAAI,aAAa;EACf,MAAM;EACN,OAAO;EACP,aAAa;EACb,YAAY;GACV,MAAM;GACN,YAAY;IACV,OAAO;KAAE,MAAM;KAAU,aAAa;KAAoB;IAC1D,OAAO;KAAE,MAAM;KAAU,aAAa;KAAsC,SAAS;KAAI;IAC1F;GACD,UAAU,CAAC,QAAQ;GACpB;EACD,SAAS,OAAO,KAAK,WAAW;AAC9B,UAAO,OAAO,aAAa,OAA4C;;EAE1E,CAAC;AAIF,KAAI,aAAa;EACf,MAAM;EACN,OAAO;EACP,aAAa;EACb,YAAY;GACV,MAAM;GACN,YAAY;IACV,OAAO;KAAE,MAAM;KAAU,aAAa;KAAoB;IAC1D,OAAO;KAAE,MAAM;KAAU,aAAa;KAAsC,SAAS;KAAI;IACzF,QAAQ;KAAE,MAAM;KAAU,aAAa;KAA2B,SAAS;KAAG;IAC/E;GACD,UAAU,CAAC,QAAQ;GACpB;EACD,SAAS,OAAO,KAAK,WAAW;AAC9B,UAAO,OAAO,WAAW,OAAgE;;EAE5F,CAAC;;;;AC5DJ,MAAM,SAAS;CACb,IAAI;CACJ,MAAM;CACN,SAXc,cAAc,OAAO,KAAK,IAAI,CAC1B,kBAAkB,CAUvB;CAEb,SAAS,KAAgB;EACvB,MAAM,MAAM,IAAI;AAEhB,MAAI,KAAK,8BAA8B;EAEvC,IAAI;AACJ,MAAI;GACF,MAAM,SAAS,eAAe;AAC9B,YAAS,IAAI,eAAe;IAAE,QAAQ,OAAO;IAAQ,QAAQ,OAAO;IAAQ,CAAC;WACtE,KAAK;AACZ,OAAI,MAAM,6CAA6C,eAAe,QAAQ,IAAI,UAAU,OAAO,IAAI,GAAG;AAC1G;;AAMF,gBAAc,KAAK,OAAO;AAC1B,MAAI,KAAK,mFAAmF;;CAG9F,WAAW,KAAgB;AACzB,MAAI,OAAO,KAAK,gCAAgC;;CAEnD"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@alfe.ai/openclaw-search",
3
- "version": "0.0.20",
3
+ "version": "0.0.22",
4
4
  "description": "OpenClaw search plugin — web, image, and news search",
5
5
  "type": "module",
6
6
  "main": "./dist/plugin.js",
@@ -27,10 +27,20 @@
27
27
  "openclaw.plugin.json"
28
28
  ],
29
29
  "dependencies": {
30
- "@alfe.ai/agent-api-client": "0.3.0",
31
- "@alfe.ai/config": "0.1.0"
30
+ "@alfe.ai/agent-api-client": "0.4.0",
31
+ "@alfe.ai/config": "0.2.0"
32
32
  },
33
33
  "license": "UNLICENSED",
34
+ "homepage": "https://alfe.ai",
35
+ "author": "Alfe (https://alfe.ai)",
36
+ "keywords": [
37
+ "alfe",
38
+ "ai-agents",
39
+ "agent",
40
+ "llm",
41
+ "openclaw",
42
+ "plugin"
43
+ ],
34
44
  "scripts": {
35
45
  "build": "tsdown",
36
46
  "dev": "tsdown --watch",