ocsmarttools 0.1.7 → 0.1.8
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 +6 -0
- package/README.md +4 -0
- package/package.json +1 -1
- package/src/lib/tool-catalog.ts +37 -4
- package/src/tools/tool-search.ts +2 -0
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,12 @@
|
|
|
2
2
|
|
|
3
3
|
All notable changes to `ocsmarttools` are documented here.
|
|
4
4
|
|
|
5
|
+
## [0.1.8] - 2026-02-22
|
|
6
|
+
|
|
7
|
+
### Changed
|
|
8
|
+
- Improved `tool_search` fallback discovery for skill-driven workflows by adding relevance keywords for browser/playwright/stealth-style usage.
|
|
9
|
+
- Added explicit skill-compatibility note in search results and README.
|
|
10
|
+
|
|
5
11
|
## [0.1.7] - 2026-02-22
|
|
6
12
|
|
|
7
13
|
### Fixed
|
package/README.md
CHANGED
|
@@ -11,6 +11,10 @@ Provider-agnostic tool orchestration for lower latency and lower token cost.
|
|
|
11
11
|
- `tool_batch`: runs bounded multi-step workflows (`call` + `foreach`)
|
|
12
12
|
- `tool_result_get`: retrieves large stored outputs by handle
|
|
13
13
|
|
|
14
|
+
Skills compatibility:
|
|
15
|
+
- Works with OpenClaw skills because skills are instructions layered on top of tools.
|
|
16
|
+
- For blocked websites, skill workflows that use `browser`/Playwright-style flows are compatible with `tool_dispatch` and `tool_batch`.
|
|
17
|
+
|
|
14
18
|
## Why It Helps
|
|
15
19
|
|
|
16
20
|
```mermaid
|
package/package.json
CHANGED
package/src/lib/tool-catalog.ts
CHANGED
|
@@ -5,11 +5,19 @@ export type ToolEntry = {
|
|
|
5
5
|
group: string;
|
|
6
6
|
description: string;
|
|
7
7
|
paramsHint?: string;
|
|
8
|
+
keywords?: string[];
|
|
8
9
|
source: "builtin" | "policy" | "live";
|
|
9
10
|
};
|
|
10
11
|
|
|
11
12
|
const BUILTIN: ToolEntry[] = [
|
|
12
|
-
{
|
|
13
|
+
{
|
|
14
|
+
name: "exec",
|
|
15
|
+
group: "runtime",
|
|
16
|
+
description: "Run shell commands.",
|
|
17
|
+
paramsHint: "{ command }",
|
|
18
|
+
keywords: ["script", "python", "node", "playwright", "stealth", "scrape"],
|
|
19
|
+
source: "builtin",
|
|
20
|
+
},
|
|
13
21
|
{ name: "bash", group: "runtime", description: "Alias for exec in many contexts.", paramsHint: "{ command }", source: "builtin" },
|
|
14
22
|
{ name: "process", group: "runtime", description: "Manage background command sessions.", paramsHint: "{ action, sessionId? }", source: "builtin" },
|
|
15
23
|
{ name: "read", group: "fs", description: "Read files.", paramsHint: "{ path }", source: "builtin" },
|
|
@@ -23,9 +31,30 @@ const BUILTIN: ToolEntry[] = [
|
|
|
23
31
|
{ name: "session_status", group: "sessions", description: "Show current session status.", paramsHint: "{}", source: "builtin" },
|
|
24
32
|
{ name: "memory_search", group: "memory", description: "Search memory snippets.", paramsHint: "{ query }", source: "builtin" },
|
|
25
33
|
{ name: "memory_get", group: "memory", description: "Read memory entries.", paramsHint: "{ key }", source: "builtin" },
|
|
26
|
-
{
|
|
27
|
-
|
|
28
|
-
|
|
34
|
+
{
|
|
35
|
+
name: "web_search",
|
|
36
|
+
group: "web",
|
|
37
|
+
description: "Search the web.",
|
|
38
|
+
paramsHint: "{ query }",
|
|
39
|
+
keywords: ["research", "discover", "find"],
|
|
40
|
+
source: "builtin",
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
name: "web_fetch",
|
|
44
|
+
group: "web",
|
|
45
|
+
description: "Fetch and extract web page content.",
|
|
46
|
+
paramsHint: "{ url }",
|
|
47
|
+
keywords: ["read page", "extract", "html"],
|
|
48
|
+
source: "builtin",
|
|
49
|
+
},
|
|
50
|
+
{
|
|
51
|
+
name: "browser",
|
|
52
|
+
group: "ui",
|
|
53
|
+
description: "Browser automation.",
|
|
54
|
+
paramsHint: "{ action, ... }",
|
|
55
|
+
keywords: ["playwright", "stealth", "anti-bot", "captcha", "dynamic site", "javascript page"],
|
|
56
|
+
source: "builtin",
|
|
57
|
+
},
|
|
29
58
|
{ name: "canvas", group: "ui", description: "Canvas/artifact rendering actions.", paramsHint: "{ action, ... }", source: "builtin" },
|
|
30
59
|
{ name: "cron", group: "automation", description: "Manage scheduled jobs.", paramsHint: "{ action, ... }", source: "builtin" },
|
|
31
60
|
{ name: "gateway", group: "automation", description: "Gateway control-plane actions.", paramsHint: "{ action, ... }", source: "builtin" },
|
|
@@ -298,6 +327,7 @@ function score(query: string, entry: ToolEntry): number {
|
|
|
298
327
|
const n = entry.name.toLowerCase();
|
|
299
328
|
const d = entry.description.toLowerCase();
|
|
300
329
|
const g = entry.group.toLowerCase();
|
|
330
|
+
const keywords = (entry.keywords ?? []).map((v) => v.toLowerCase());
|
|
301
331
|
|
|
302
332
|
let s = 0;
|
|
303
333
|
if (n === q) s += 100;
|
|
@@ -305,10 +335,13 @@ function score(query: string, entry: ToolEntry): number {
|
|
|
305
335
|
if (n.includes(q)) s += 30;
|
|
306
336
|
if (g.includes(q)) s += 15;
|
|
307
337
|
if (d.includes(q)) s += 10;
|
|
338
|
+
if (keywords.includes(q)) s += 25;
|
|
308
339
|
|
|
309
340
|
for (const token of q.split(/\s+/).filter(Boolean)) {
|
|
310
341
|
if (n.includes(token)) s += 12;
|
|
311
342
|
if (d.includes(token)) s += 4;
|
|
343
|
+
if (g.includes(token)) s += 4;
|
|
344
|
+
if (keywords.some((k) => k.includes(token))) s += 8;
|
|
312
345
|
}
|
|
313
346
|
return s;
|
|
314
347
|
}
|
package/src/tools/tool-search.ts
CHANGED
|
@@ -65,6 +65,8 @@ export function createToolSearchTool(api: OpenClawPluginApi): AnyAgentTool {
|
|
|
65
65
|
liveCount: built.liveCount,
|
|
66
66
|
totalCatalogSize: catalog.length,
|
|
67
67
|
count: matches.length,
|
|
68
|
+
note:
|
|
69
|
+
"Skills are instruction layers. OCSmartTools can still dispatch/batch-call runtime and browser tools used by those skills.",
|
|
68
70
|
tools: matches,
|
|
69
71
|
});
|
|
70
72
|
},
|