diff --git a/plugin/openclaw.plugin.json b/plugin/openclaw.plugin.json index b18c8ff..54b99fb 100644 --- a/plugin/openclaw.plugin.json +++ b/plugin/openclaw.plugin.json @@ -11,10 +11,10 @@ "proxy-pcexec", "safe_restart", "dynamic-trim", - "dynamic-list-tools", - "dynamic-search-tools", - "dynamic-cache-tools", - "dynamic-evict-tools" + "dynamic-tools-list", + "dynamic-tools-search", + "dynamic-tools-cache", + "dynamic-tools-evict" ] }, "configSchema": { diff --git a/plugin/tools/dynamic-tools-cache.ts b/plugin/tools/dynamic-tools-cache.ts index 8522bf6..2af768e 100644 --- a/plugin/tools/dynamic-tools-cache.ts +++ b/plugin/tools/dynamic-tools-cache.ts @@ -1,5 +1,5 @@ -// `dynamic-list-tools` / `dynamic-search-tools` / `dynamic-cache-tools` / -// `dynamic-evict-tools` — agent-driven per-session tool visibility gate. +// `dynamic-tools-list` / `dynamic-tools-search` / `dynamic-tools-cache` / +// `dynamic-tools-evict` — agent-driven per-session tool visibility gate. // // openclaw plugin SDK has no `before_outgoing_tools` hook (see PaddedCell // plans/OPENCLAW_TOOLS_FILTER_HOOK.md for the gap analysis), so this @@ -31,10 +31,10 @@ import * as path from 'node:path'; /** Names of tools always exposed (the 4 cache tools themselves). */ export const ESSENTIAL_CACHE_TOOLS = new Set([ - 'dynamic-list-tools', - 'dynamic-search-tools', - 'dynamic-cache-tools', - 'dynamic-evict-tools', + 'dynamic-tools-list', + 'dynamic-tools-search', + 'dynamic-tools-cache', + 'dynamic-tools-evict', ]); /** Catalog entry registered by an opt-in plugin. */ @@ -234,9 +234,9 @@ function renderCatalogText( export function createListToolsTool(): any { return { - name: 'dynamic-list-tools', + name: 'dynamic-tools-list', description: - 'List the per-session tool catalog (essentials / cached / available). Pair with dynamic-cache-tools to enable specific tools for this session. Cache takes effect next turn.', + 'List the per-session tool catalog (essentials / cached / available). Pair with dynamic-tools-cache to enable specific tools for this session. Cache takes effect next turn.', parameters: { type: 'object', properties: {}, required: [] }, async execute(_callId: string, _params: any, ctx?: ToolCtx) { const c = ctx ?? {}; @@ -250,7 +250,7 @@ export function createListToolsTool(): any { const text = renderCatalogText( entries, c, - 'Call dynamic-cache-tools({names: [...]}) to make available tools usable this session.', + 'Call dynamic-tools-cache({names: [...]}) to make available tools usable this session.', ); return { content: [{ type: 'text', text }] }; }, @@ -259,7 +259,7 @@ export function createListToolsTool(): any { export function createSearchToolsTool(): any { return { - name: 'dynamic-search-tools', + name: 'dynamic-tools-search', description: 'Substring search (case-insensitive) over tool names + descriptions. Returns matches grouped by source.', parameters: { @@ -272,7 +272,7 @@ export function createSearchToolsTool(): any { const query = String(params?.query ?? '').trim(); if (!query) { return { - content: [{ type: 'text', text: 'dynamic-search-tools: query is required' }], + content: [{ type: 'text', text: 'dynamic-tools-search: query is required' }], isError: true, }; } @@ -289,7 +289,7 @@ export function createSearchToolsTool(): any { export function createCacheToolsTool(): any { return { - name: 'dynamic-cache-tools', + name: 'dynamic-tools-cache', description: 'Add the given tool names to this session\'s tools-cache. Takes effect starting your next turn (this iteration\'s tool list is frozen).', parameters: { @@ -304,14 +304,14 @@ export function createCacheToolsTool(): any { const names = Array.isArray(params?.names) ? params.names.map(String) : []; if (names.length === 0) { return { - content: [{ type: 'text', text: 'dynamic-cache-tools: names is required (non-empty)' }], + content: [{ type: 'text', text: 'dynamic-tools-cache: names is required (non-empty)' }], isError: true, }; } const fp = cacheFilePath(c.agentId, c.sessionId); if (!fp) { return { - content: [{ type: 'text', text: 'dynamic-cache-tools: no session context' }], + content: [{ type: 'text', text: 'dynamic-tools-cache: no session context' }], isError: true, }; } @@ -349,7 +349,7 @@ export function createCacheToolsTool(): any { export function createEvictToolsTool(): any { return { - name: 'dynamic-evict-tools', + name: 'dynamic-tools-evict', description: 'Remove the given tool names from this session\'s tools-cache. Essentials are silently un-evictable. Takes effect starting your next turn.', parameters: { @@ -364,14 +364,14 @@ export function createEvictToolsTool(): any { const names = Array.isArray(params?.names) ? params.names.map(String) : []; if (names.length === 0) { return { - content: [{ type: 'text', text: 'dynamic-evict-tools: names is required (non-empty)' }], + content: [{ type: 'text', text: 'dynamic-tools-evict: names is required (non-empty)' }], isError: true, }; } const fp = cacheFilePath(c.agentId, c.sessionId); if (!fp) { return { - content: [{ type: 'text', text: 'dynamic-evict-tools: no session context' }], + content: [{ type: 'text', text: 'dynamic-tools-evict: no session context' }], isError: true, }; }