@alfe.ai/openclaw-search 0.0.9 → 0.0.11

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;IAKJ,IAAA,EA0BL,CAAA,GAAA,IAAA,EAAA,OAAA,EAAA,EAAA,GAAA,IAAA;IAAA,IAAA,EAAA,CAAA,GAAA,IAAA,EAAA,OAAA,EAAA,EAAA,GAAA,IAAA;IArBe,KAAA,EAAA,CAAA,GAAA,IAAA,EAAA,OAAA,EAAA,EAAA,GAAA,IAAA;IAkBE,KAAA,EAAA,CAAA,GAAA,IAAA,EAAA,OAAA,EAAA,EAAA,GAAA,IAAA;EAAS,CAAA;;;cAvBrB;;;;gBAKU;kBAkBE"}
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 +1 @@
1
- {"version":3,"file":"plugin.d.ts","names":[],"sources":["../src/plugin.ts"],"mappings":";UAOU,SAAA;EAAA,MAAA,EAAA;IAKJ,IAAA,EA0BL,CAAA,GAAA,IAAA,EAAA,OAAA,EAAA,EAAA,GAAA,IAAA;IAAA,IAAA,EAAA,CAAA,GAAA,IAAA,EAAA,OAAA,EAAA,EAAA,GAAA,IAAA;IArBe,KAAA,EAAA,CAAA,GAAA,IAAA,EAAA,OAAA,EAAA,EAAA,GAAA,IAAA;IAkBE,KAAA,EAAA,CAAA,GAAA,IAAA,EAAA,OAAA,EAAA,EAAA,GAAA,IAAA;EAAS,CAAA;;;cAvBrB;;;;gBAKU;kBAkBE"}
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"}
package/dist/plugin2.cjs CHANGED
@@ -85,12 +85,20 @@ 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;
88
91
  const plugin = {
89
92
  id: "@alfe.ai/openclaw-search",
90
93
  name: "Search",
91
- version: (0, node_module.createRequire)(require("url").pathToFileURL(__filename).href)("../package.json").version,
94
+ version: pkg.version,
92
95
  activate(api) {
93
96
  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;
94
102
  log.info("Search plugin activating...");
95
103
  let client;
96
104
  try {
@@ -100,6 +108,7 @@ const plugin = {
100
108
  apiKey: config.apiKey
101
109
  });
102
110
  } catch (err) {
111
+ g[ACTIVATED_KEY] = false;
103
112
  log.error(`Search plugin: failed to resolve config — ${err instanceof Error ? err.message : String(err)}`);
104
113
  return;
105
114
  }
@@ -107,6 +116,7 @@ const plugin = {
107
116
  log.info("Search plugin activated — web_search, image_search, news_search tools registered");
108
117
  },
109
118
  deactivate(api) {
119
+ g[ACTIVATED_KEY] = false;
110
120
  api.logger.info("Search plugin deactivating...");
111
121
  }
112
122
  };
package/dist/plugin2.js CHANGED
@@ -85,12 +85,20 @@ 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;
88
91
  const plugin = {
89
92
  id: "@alfe.ai/openclaw-search",
90
93
  name: "Search",
91
- version: createRequire(import.meta.url)("../package.json").version,
94
+ version: pkg.version,
92
95
  activate(api) {
93
96
  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;
94
102
  log.info("Search plugin activating...");
95
103
  let client;
96
104
  try {
@@ -100,6 +108,7 @@ const plugin = {
100
108
  apiKey: config.apiKey
101
109
  });
102
110
  } catch (err) {
111
+ g[ACTIVATED_KEY] = false;
103
112
  log.error(`Search plugin: failed to resolve config — ${err instanceof Error ? err.message : String(err)}`);
104
113
  return;
105
114
  }
@@ -107,6 +116,7 @@ const plugin = {
107
116
  log.info("Search plugin activated — web_search, image_search, news_search tools registered");
108
117
  },
109
118
  deactivate(api) {
119
+ g[ACTIVATED_KEY] = false;
110
120
  api.logger.info("Search plugin deactivating...");
111
121
  }
112
122
  };
@@ -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 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 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;;AAGF,gBAAc,KAAK,OAAO;AAC1B,MAAI,KAAK,mFAAmF;;CAG9F,WAAW,KAAgB;AACzB,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 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"}
@@ -3,6 +3,10 @@
3
3
  "name": "Search",
4
4
  "description": "Web, image, and news search",
5
5
  "entry": "./dist/plugin.js",
6
+ "activation": { "onStartup": false },
7
+ "contracts": {
8
+ "tools": ["web_search", "image_search", "news_search"]
9
+ },
6
10
  "configSchema": {
7
11
  "type": "object",
8
12
  "additionalProperties": false,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@alfe.ai/openclaw-search",
3
- "version": "0.0.9",
3
+ "version": "0.0.11",
4
4
  "description": "OpenClaw search plugin — web, image, and news search",
5
5
  "type": "module",
6
6
  "main": "./dist/plugin.js",