mirror of
https://github.com/openclaw/openclaw.git
synced 2026-04-03 03:03:24 -04:00
chore: centralize tool display detail resolution
This commit is contained in:
@@ -220,6 +220,26 @@ export function resolveWriteDetail(toolKey: string, args: unknown): string | und
|
|||||||
return `${destinationPrefix} ${path}`;
|
return `${destinationPrefix} ${path}`;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export function resolveToolSpecificDetail(key: string, args: unknown): string | undefined {
|
||||||
|
if (key === "exec") {
|
||||||
|
return resolveExecDetail(args);
|
||||||
|
}
|
||||||
|
if (key === "read") {
|
||||||
|
return resolveReadDetail(args);
|
||||||
|
}
|
||||||
|
if (key === "write" || key === "edit" || key === "attach") {
|
||||||
|
return resolveWriteDetail(key, args);
|
||||||
|
}
|
||||||
|
if (key === "web_search") {
|
||||||
|
return resolveWebSearchDetail(args);
|
||||||
|
}
|
||||||
|
if (key === "web_fetch") {
|
||||||
|
return resolveWebFetchDetail(args);
|
||||||
|
}
|
||||||
|
|
||||||
|
return undefined;
|
||||||
|
}
|
||||||
|
|
||||||
export function resolveWebSearchDetail(args: unknown): string | undefined {
|
export function resolveWebSearchDetail(args: unknown): string | undefined {
|
||||||
const record = asRecord(args);
|
const record = asRecord(args);
|
||||||
if (!record) {
|
if (!record) {
|
||||||
|
|||||||
@@ -7,11 +7,7 @@ import {
|
|||||||
normalizeVerb,
|
normalizeVerb,
|
||||||
resolveActionSpec,
|
resolveActionSpec,
|
||||||
resolveDetailFromKeys,
|
resolveDetailFromKeys,
|
||||||
resolveExecDetail,
|
resolveToolSpecificDetail,
|
||||||
resolveReadDetail,
|
|
||||||
resolveWebFetchDetail,
|
|
||||||
resolveWebSearchDetail,
|
|
||||||
resolveWriteDetail,
|
|
||||||
type ToolDisplaySpec as ToolDisplaySpecBase,
|
type ToolDisplaySpec as ToolDisplaySpecBase,
|
||||||
} from "./tool-display-common.js";
|
} from "./tool-display-common.js";
|
||||||
import TOOL_DISPLAY_JSON from "./tool-display.json" with { type: "json" };
|
import TOOL_DISPLAY_JSON from "./tool-display.json" with { type: "json" };
|
||||||
@@ -83,24 +79,7 @@ export function resolveToolDisplay(params: {
|
|||||||
: key.replace(/_/g, " ").replace(/\./g, " ");
|
: key.replace(/_/g, " ").replace(/\./g, " ");
|
||||||
const verb = normalizeVerb(actionSpec?.label ?? action ?? fallbackVerb);
|
const verb = normalizeVerb(actionSpec?.label ?? action ?? fallbackVerb);
|
||||||
|
|
||||||
let detail: string | undefined;
|
let detail: string | undefined = resolveToolSpecificDetail(key, params.args);
|
||||||
if (key === "exec") {
|
|
||||||
detail = resolveExecDetail(params.args);
|
|
||||||
}
|
|
||||||
if (!detail && key === "read") {
|
|
||||||
detail = resolveReadDetail(params.args);
|
|
||||||
}
|
|
||||||
if (!detail && (key === "write" || key === "edit" || key === "attach")) {
|
|
||||||
detail = resolveWriteDetail(key, params.args);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!detail && key === "web_search") {
|
|
||||||
detail = resolveWebSearchDetail(params.args);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!detail && key === "web_fetch") {
|
|
||||||
detail = resolveWebFetchDetail(params.args);
|
|
||||||
}
|
|
||||||
|
|
||||||
const detailKeys = actionSpec?.detailKeys ?? spec?.detailKeys ?? FALLBACK.detailKeys ?? [];
|
const detailKeys = actionSpec?.detailKeys ?? spec?.detailKeys ?? FALLBACK.detailKeys ?? [];
|
||||||
if (!detail && detailKeys.length > 0) {
|
if (!detail && detailKeys.length > 0) {
|
||||||
|
|||||||
@@ -1,17 +1,13 @@
|
|||||||
|
import type { IconName } from "./icons.ts";
|
||||||
import {
|
import {
|
||||||
defaultTitle,
|
defaultTitle,
|
||||||
normalizeToolName,
|
normalizeToolName,
|
||||||
normalizeVerb,
|
normalizeVerb,
|
||||||
resolveActionSpec,
|
resolveActionSpec,
|
||||||
resolveDetailFromKeys,
|
resolveDetailFromKeys,
|
||||||
resolveExecDetail,
|
resolveToolSpecificDetail,
|
||||||
resolveReadDetail,
|
|
||||||
resolveWebFetchDetail,
|
|
||||||
resolveWebSearchDetail,
|
|
||||||
resolveWriteDetail,
|
|
||||||
type ToolDisplaySpec as ToolDisplaySpecBase,
|
type ToolDisplaySpec as ToolDisplaySpecBase,
|
||||||
} from "../../../src/agents/tool-display-common.js";
|
} from "../../../src/agents/tool-display-common.js";
|
||||||
import type { IconName } from "./icons.ts";
|
|
||||||
import rawConfig from "./tool-display.json" with { type: "json" };
|
import rawConfig from "./tool-display.json" with { type: "json" };
|
||||||
|
|
||||||
type ToolDisplaySpec = ToolDisplaySpecBase & {
|
type ToolDisplaySpec = ToolDisplaySpecBase & {
|
||||||
@@ -83,24 +79,7 @@ export function resolveToolDisplay(params: {
|
|||||||
: key.replace(/_/g, " ").replace(/\./g, " ");
|
: key.replace(/_/g, " ").replace(/\./g, " ");
|
||||||
const verb = normalizeVerb(actionSpec?.label ?? action ?? fallbackVerb);
|
const verb = normalizeVerb(actionSpec?.label ?? action ?? fallbackVerb);
|
||||||
|
|
||||||
let detail: string | undefined;
|
let detail: string | undefined = resolveToolSpecificDetail(key, params.args);
|
||||||
if (key === "exec") {
|
|
||||||
detail = resolveExecDetail(params.args);
|
|
||||||
}
|
|
||||||
if (!detail && key === "read") {
|
|
||||||
detail = resolveReadDetail(params.args);
|
|
||||||
}
|
|
||||||
if (!detail && (key === "write" || key === "edit" || key === "attach")) {
|
|
||||||
detail = resolveWriteDetail(key, params.args);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!detail && key === "web_search") {
|
|
||||||
detail = resolveWebSearchDetail(params.args);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!detail && key === "web_fetch") {
|
|
||||||
detail = resolveWebFetchDetail(params.args);
|
|
||||||
}
|
|
||||||
|
|
||||||
const detailKeys = actionSpec?.detailKeys ?? spec?.detailKeys ?? FALLBACK.detailKeys ?? [];
|
const detailKeys = actionSpec?.detailKeys ?? spec?.detailKeys ?? FALLBACK.detailKeys ?? [];
|
||||||
if (!detail && detailKeys.length > 0) {
|
if (!detail && detailKeys.length > 0) {
|
||||||
|
|||||||
Reference in New Issue
Block a user