@polpo-ai/dashboard 0.15.11 → 0.15.13
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/README.md +43 -9
- package/dist/host.d.ts +16 -0
- package/dist/host.d.ts.map +1 -1
- package/dist/host.js +3 -0
- package/dist/host.js.map +1 -1
- package/dist/index.d.ts +35 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +27 -1
- package/dist/index.js.map +1 -1
- package/dist/self-host-api.d.ts +3 -0
- package/dist/self-host-api.d.ts.map +1 -0
- package/dist/self-host-api.js +55 -0
- package/dist/self-host-api.js.map +1 -0
- package/dist/v2/agents/agent-detail.d.ts +58 -0
- package/dist/v2/agents/agent-detail.d.ts.map +1 -0
- package/dist/v2/agents/agent-detail.js +412 -0
- package/dist/v2/agents/agent-detail.js.map +1 -0
- package/dist/v2/agents/agent-run-panel.d.ts +5 -0
- package/dist/v2/agents/agent-run-panel.d.ts.map +1 -0
- package/dist/v2/agents/agent-run-panel.js +149 -0
- package/dist/v2/agents/agent-run-panel.js.map +1 -0
- package/dist/v2/agents/loops-tab.d.ts +6 -0
- package/dist/v2/agents/loops-tab.d.ts.map +1 -0
- package/dist/v2/agents/loops-tab.js +160 -0
- package/dist/v2/agents/loops-tab.js.map +1 -0
- package/dist/v2/agents/model-select.d.ts +24 -0
- package/dist/v2/agents/model-select.d.ts.map +1 -0
- package/dist/v2/agents/model-select.js +157 -0
- package/dist/v2/agents/model-select.js.map +1 -0
- package/dist/v2/agents/prompt-preview-dialog.d.ts +15 -0
- package/dist/v2/agents/prompt-preview-dialog.d.ts.map +1 -0
- package/dist/v2/agents/prompt-preview-dialog.js +141 -0
- package/dist/v2/agents/prompt-preview-dialog.js.map +1 -0
- package/dist/v2/agents/self-host-create-agent-dialog.d.ts +6 -0
- package/dist/v2/agents/self-host-create-agent-dialog.d.ts.map +1 -0
- package/dist/v2/agents/self-host-create-agent-dialog.js +31 -0
- package/dist/v2/agents/self-host-create-agent-dialog.js.map +1 -0
- package/dist/v2/agents/self-host-detail.d.ts +4 -0
- package/dist/v2/agents/self-host-detail.d.ts.map +1 -0
- package/dist/v2/agents/self-host-detail.js +34 -0
- package/dist/v2/agents/self-host-detail.js.map +1 -0
- package/dist/v2/agents/self-host-run-chat.d.ts +10 -0
- package/dist/v2/agents/self-host-run-chat.d.ts.map +1 -0
- package/dist/v2/agents/self-host-run-chat.js +18 -0
- package/dist/v2/agents/self-host-run-chat.js.map +1 -0
- package/dist/v2/agents/skills-tab.d.ts +6 -0
- package/dist/v2/agents/skills-tab.d.ts.map +1 -0
- package/dist/v2/agents/skills-tab.js +112 -0
- package/dist/v2/agents/skills-tab.js.map +1 -0
- package/dist/v2/agents/tools-panel.d.ts +26 -0
- package/dist/v2/agents/tools-panel.d.ts.map +1 -0
- package/dist/v2/agents/tools-panel.js +123 -0
- package/dist/v2/agents/tools-panel.js.map +1 -0
- package/dist/v2/agents/tools-tab.d.ts +6 -0
- package/dist/v2/agents/tools-tab.d.ts.map +1 -0
- package/dist/v2/agents/tools-tab.js +117 -0
- package/dist/v2/agents/tools-tab.js.map +1 -0
- package/dist/v2/agents/vault-tab.d.ts +13 -0
- package/dist/v2/agents/vault-tab.d.ts.map +1 -0
- package/dist/v2/agents/vault-tab.js +93 -0
- package/dist/v2/agents/vault-tab.js.map +1 -0
- package/dist/v2/files/file-browser-primitives.d.ts +39 -0
- package/dist/v2/files/file-browser-primitives.d.ts.map +1 -0
- package/dist/v2/files/file-browser-primitives.js +75 -0
- package/dist/v2/files/file-browser-primitives.js.map +1 -0
- package/dist/v2/files/file-directory-browser.d.ts +10 -0
- package/dist/v2/files/file-directory-browser.d.ts.map +1 -0
- package/dist/v2/files/file-directory-browser.js +57 -0
- package/dist/v2/files/file-directory-browser.js.map +1 -0
- package/dist/v2/files/files-browser.d.ts +7 -0
- package/dist/v2/files/files-browser.d.ts.map +1 -0
- package/dist/v2/files/files-browser.js +390 -0
- package/dist/v2/files/files-browser.js.map +1 -0
- package/dist/v2/files/host.d.ts +45 -0
- package/dist/v2/files/host.d.ts.map +1 -0
- package/dist/v2/files/host.js +72 -0
- package/dist/v2/files/host.js.map +1 -0
- package/dist/v2/host.d.ts +42 -0
- package/dist/v2/host.d.ts.map +1 -0
- package/dist/v2/host.js +137 -0
- package/dist/v2/host.js.map +1 -0
- package/dist/v2/playground/chat-canvas.d.ts +9 -0
- package/dist/v2/playground/chat-canvas.d.ts.map +1 -0
- package/dist/v2/playground/chat-canvas.js +88 -0
- package/dist/v2/playground/chat-canvas.js.map +1 -0
- package/dist/v2/playground/host.d.ts +116 -0
- package/dist/v2/playground/host.d.ts.map +1 -0
- package/dist/v2/playground/host.js +12 -0
- package/dist/v2/playground/host.js.map +1 -0
- package/dist/v2/playground/self-host-chat.d.ts +11 -0
- package/dist/v2/playground/self-host-chat.d.ts.map +1 -0
- package/dist/v2/playground/self-host-chat.js +85 -0
- package/dist/v2/playground/self-host-chat.js.map +1 -0
- package/dist/v2/playground/self-host.d.ts +2 -0
- package/dist/v2/playground/self-host.d.ts.map +1 -0
- package/dist/v2/playground/self-host.js +87 -0
- package/dist/v2/playground/self-host.js.map +1 -0
- package/dist/v2/sessions/host.d.ts +167 -0
- package/dist/v2/sessions/host.d.ts.map +1 -0
- package/dist/v2/sessions/host.js +12 -0
- package/dist/v2/sessions/host.js.map +1 -0
- package/dist/v2/sessions/self-host.d.ts +7 -0
- package/dist/v2/sessions/self-host.d.ts.map +1 -0
- package/dist/v2/sessions/self-host.js +120 -0
- package/dist/v2/sessions/self-host.js.map +1 -0
- package/dist/v2/sessions/trace-columns.d.ts +4 -0
- package/dist/v2/sessions/trace-columns.d.ts.map +1 -0
- package/dist/v2/sessions/trace-columns.js +102 -0
- package/dist/v2/sessions/trace-columns.js.map +1 -0
- package/dist/v2/sessions/trace-detail-view.d.ts +7 -0
- package/dist/v2/sessions/trace-detail-view.d.ts.map +1 -0
- package/dist/v2/sessions/trace-detail-view.js +346 -0
- package/dist/v2/sessions/trace-detail-view.js.map +1 -0
- package/dist/v2/sessions/trace-detail.d.ts +133 -0
- package/dist/v2/sessions/trace-detail.d.ts.map +1 -0
- package/dist/v2/sessions/trace-detail.js +210 -0
- package/dist/v2/sessions/trace-detail.js.map +1 -0
- package/dist/v2/sessions/trace-normalize.d.ts +60 -0
- package/dist/v2/sessions/trace-normalize.d.ts.map +1 -0
- package/dist/v2/sessions/trace-normalize.js +87 -0
- package/dist/v2/sessions/trace-normalize.js.map +1 -0
- package/dist/v2/sessions/trace-table.d.ts +8 -0
- package/dist/v2/sessions/trace-table.d.ts.map +1 -0
- package/dist/v2/sessions/trace-table.js +27 -0
- package/dist/v2/sessions/trace-table.js.map +1 -0
- package/dist/v2/shell/coding-agents.d.ts +21 -0
- package/dist/v2/shell/coding-agents.d.ts.map +1 -0
- package/dist/v2/shell/coding-agents.js +41 -0
- package/dist/v2/shell/coding-agents.js.map +1 -0
- package/dist/v2/shell/dashboard-shell.d.ts +6 -0
- package/dist/v2/shell/dashboard-shell.d.ts.map +1 -0
- package/dist/v2/shell/dashboard-shell.js +132 -0
- package/dist/v2/shell/dashboard-shell.js.map +1 -0
- package/dist/v2/skills/self-host-create-skill-dialog.d.ts +6 -0
- package/dist/v2/skills/self-host-create-skill-dialog.d.ts.map +1 -0
- package/dist/v2/skills/self-host-create-skill-dialog.js +27 -0
- package/dist/v2/skills/self-host-create-skill-dialog.js.map +1 -0
- package/dist/v2/skills/self-host-detail.d.ts +4 -0
- package/dist/v2/skills/self-host-detail.d.ts.map +1 -0
- package/dist/v2/skills/self-host-detail.js +31 -0
- package/dist/v2/skills/self-host-detail.js.map +1 -0
- package/dist/v2/support/agent-call-snippets.d.ts +35 -0
- package/dist/v2/support/agent-call-snippets.d.ts.map +1 -0
- package/dist/v2/support/agent-call-snippets.js +113 -0
- package/dist/v2/support/agent-call-snippets.js.map +1 -0
- package/dist/v2/support/tool-catalog.d.ts +62 -0
- package/dist/v2/support/tool-catalog.d.ts.map +1 -0
- package/dist/v2/support/tool-catalog.js +271 -0
- package/dist/v2/support/tool-catalog.js.map +1 -0
- package/dist/v2/support/vault-fields.d.ts +29 -0
- package/dist/v2/support/vault-fields.d.ts.map +1 -0
- package/dist/v2/support/vault-fields.js +74 -0
- package/dist/v2/support/vault-fields.js.map +1 -0
- package/dist/v2/tools/param-fields.d.ts +19 -0
- package/dist/v2/tools/param-fields.d.ts.map +1 -0
- package/dist/v2/tools/param-fields.js +191 -0
- package/dist/v2/tools/param-fields.js.map +1 -0
- package/dist/v2/tools/self-host.d.ts +7 -0
- package/dist/v2/tools/self-host.d.ts.map +1 -0
- package/dist/v2/tools/self-host.js +26 -0
- package/dist/v2/tools/self-host.js.map +1 -0
- package/dist/v2/tools/source-parsing.d.ts +4 -0
- package/dist/v2/tools/source-parsing.d.ts.map +1 -0
- package/dist/v2/tools/source-parsing.js +15 -0
- package/dist/v2/tools/source-parsing.js.map +1 -0
- package/dist/v2/tools/tool-detail.d.ts +7 -0
- package/dist/v2/tools/tool-detail.d.ts.map +1 -0
- package/dist/v2/tools/tool-detail.js +157 -0
- package/dist/v2/tools/tool-detail.js.map +1 -0
- package/dist/v2/tools/tool-editor-dialog.d.ts +9 -0
- package/dist/v2/tools/tool-editor-dialog.d.ts.map +1 -0
- package/dist/v2/tools/tool-editor-dialog.js +306 -0
- package/dist/v2/tools/tool-editor-dialog.js.map +1 -0
- package/dist/v2/tools/tools-view.d.ts +21 -0
- package/dist/v2/tools/tools-view.d.ts.map +1 -0
- package/dist/v2/tools/tools-view.js +77 -0
- package/dist/v2/tools/tools-view.js.map +1 -0
- package/dist/v2/ui/bits.d.ts +23 -0
- package/dist/v2/ui/bits.d.ts.map +1 -0
- package/dist/v2/ui/bits.js +18 -0
- package/dist/v2/ui/bits.js.map +1 -0
- package/dist/v2/ui/button.d.ts +9 -0
- package/dist/v2/ui/button.d.ts.map +1 -0
- package/dist/v2/ui/button.js +33 -0
- package/dist/v2/ui/button.js.map +1 -0
- package/dist/v2/ui/code-block.d.ts +20 -0
- package/dist/v2/ui/code-block.d.ts.map +1 -0
- package/dist/v2/ui/code-block.js +44 -0
- package/dist/v2/ui/code-block.js.map +1 -0
- package/dist/v2/ui/code-editor.d.ts +9 -0
- package/dist/v2/ui/code-editor.d.ts.map +1 -0
- package/dist/v2/ui/code-editor.js +25 -0
- package/dist/v2/ui/code-editor.js.map +1 -0
- package/dist/v2/ui/copy-button.d.ts +9 -0
- package/dist/v2/ui/copy-button.d.ts.map +1 -0
- package/dist/v2/ui/copy-button.js +24 -0
- package/dist/v2/ui/copy-button.js.map +1 -0
- package/dist/v2/ui/data-table.d.ts +40 -0
- package/dist/v2/ui/data-table.d.ts.map +1 -0
- package/dist/v2/ui/data-table.js +85 -0
- package/dist/v2/ui/data-table.js.map +1 -0
- package/dist/v2/ui/dialog.d.ts +16 -0
- package/dist/v2/ui/dialog.d.ts.map +1 -0
- package/dist/v2/ui/dialog.js +39 -0
- package/dist/v2/ui/dialog.js.map +1 -0
- package/dist/v2/ui/input.d.ts +2 -0
- package/dist/v2/ui/input.d.ts.map +1 -0
- package/dist/v2/ui/input.js +7 -0
- package/dist/v2/ui/input.js.map +1 -0
- package/dist/v2/ui/multi-select-filter.d.ts +18 -0
- package/dist/v2/ui/multi-select-filter.d.ts.map +1 -0
- package/dist/v2/ui/multi-select-filter.js +37 -0
- package/dist/v2/ui/multi-select-filter.js.map +1 -0
- package/dist/v2/ui/page-header.d.ts +10 -0
- package/dist/v2/ui/page-header.d.ts.map +1 -0
- package/dist/v2/ui/page-header.js +8 -0
- package/dist/v2/ui/page-header.js.map +1 -0
- package/dist/v2/ui/refresh-button.d.ts +5 -0
- package/dist/v2/ui/refresh-button.d.ts.map +1 -0
- package/dist/v2/ui/refresh-button.js +7 -0
- package/dist/v2/ui/refresh-button.js.map +1 -0
- package/dist/v2/ui/select.d.ts +16 -0
- package/dist/v2/ui/select.d.ts.map +1 -0
- package/dist/v2/ui/select.js +36 -0
- package/dist/v2/ui/select.js.map +1 -0
- package/dist/v2/ui/skeleton.d.ts +3 -0
- package/dist/v2/ui/skeleton.d.ts.map +1 -0
- package/dist/v2/ui/skeleton.js +7 -0
- package/dist/v2/ui/skeleton.js.map +1 -0
- package/dist/v2/ui/textarea.d.ts +2 -0
- package/dist/v2/ui/textarea.d.ts.map +1 -0
- package/dist/v2/ui/textarea.js +6 -0
- package/dist/v2/ui/textarea.js.map +1 -0
- package/dist/v2/utils.d.ts +3 -0
- package/dist/v2/utils.d.ts.map +1 -0
- package/dist/v2/utils.js +6 -0
- package/dist/v2/utils.js.map +1 -0
- package/dist/v2/views/agents-detail.d.ts +2 -0
- package/dist/v2/views/agents-detail.d.ts.map +1 -0
- package/dist/v2/views/agents-detail.js +2 -0
- package/dist/v2/views/agents-detail.js.map +1 -0
- package/dist/v2/views/agents.d.ts +27 -0
- package/dist/v2/views/agents.d.ts.map +1 -0
- package/dist/v2/views/agents.js +161 -0
- package/dist/v2/views/agents.js.map +1 -0
- package/dist/v2/views/files.d.ts +2 -0
- package/dist/v2/views/files.d.ts.map +1 -0
- package/dist/v2/views/files.js +10 -0
- package/dist/v2/views/files.js.map +1 -0
- package/dist/v2/views/memory-host.d.ts +10 -0
- package/dist/v2/views/memory-host.d.ts.map +1 -0
- package/dist/v2/views/memory-host.js +17 -0
- package/dist/v2/views/memory-host.js.map +1 -0
- package/dist/v2/views/memory-project.d.ts +5 -0
- package/dist/v2/views/memory-project.d.ts.map +1 -0
- package/dist/v2/views/memory-project.js +36 -0
- package/dist/v2/views/memory-project.js.map +1 -0
- package/dist/v2/views/memory.d.ts +2 -0
- package/dist/v2/views/memory.d.ts.map +1 -0
- package/dist/v2/views/memory.js +14 -0
- package/dist/v2/views/memory.js.map +1 -0
- package/dist/v2/views/playground.d.ts +13 -0
- package/dist/v2/views/playground.d.ts.map +1 -0
- package/dist/v2/views/playground.js +88 -0
- package/dist/v2/views/playground.js.map +1 -0
- package/dist/v2/views/sessions-detail.d.ts +8 -0
- package/dist/v2/views/sessions-detail.d.ts.map +1 -0
- package/dist/v2/views/sessions-detail.js +107 -0
- package/dist/v2/views/sessions-detail.js.map +1 -0
- package/dist/v2/views/sessions.d.ts +9 -0
- package/dist/v2/views/sessions.d.ts.map +1 -0
- package/dist/v2/views/sessions.js +9 -0
- package/dist/v2/views/sessions.js.map +1 -0
- package/dist/v2/views/skills-detail.d.ts +26 -0
- package/dist/v2/views/skills-detail.d.ts.map +1 -0
- package/dist/v2/views/skills-detail.js +120 -0
- package/dist/v2/views/skills-detail.js.map +1 -0
- package/dist/v2/views/skills.d.ts +18 -0
- package/dist/v2/views/skills.d.ts.map +1 -0
- package/dist/v2/views/skills.js +46 -0
- package/dist/v2/views/skills.js.map +1 -0
- package/package.json +20 -4
- package/src/v2.css +212 -0
|
@@ -0,0 +1,271 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Static catalog of agent runtime tools (the strings used in an agent's
|
|
3
|
+
* `allowedTools`). Mirrors the `@polpo-ai/tools` package so the dashboard
|
|
4
|
+
* can show the FULL catalog — not just what a given agent has enabled —
|
|
5
|
+
* with human-readable descriptions and per-category metadata.
|
|
6
|
+
*
|
|
7
|
+
* Descriptions are taken from the tool definitions in @polpo-ai/tools.
|
|
8
|
+
* Keep in sync when the package adds/changes tools. (A future
|
|
9
|
+
* GET /v1/tools endpoint will replace this — see todo-tools-catalog-endpoint.)
|
|
10
|
+
*
|
|
11
|
+
* `core: true` → always available, cannot be disabled (no allowedTools entry needed).
|
|
12
|
+
* `requiresKey` → needs an external credential (vault entry, env var, or managed Connection) to run.
|
|
13
|
+
*/
|
|
14
|
+
export const TOOL_CATALOG = [
|
|
15
|
+
{
|
|
16
|
+
key: "core",
|
|
17
|
+
label: "Core",
|
|
18
|
+
icon: "ShieldCheck",
|
|
19
|
+
core: true,
|
|
20
|
+
note: "Always on for every agent — vault access and task outcomes. Cannot be disabled.",
|
|
21
|
+
tools: [
|
|
22
|
+
{ name: "vault_get", description: "Retrieve credentials for a service from the agent vault." },
|
|
23
|
+
{ name: "vault_list", description: "List available vault services (names + key names, no values)." },
|
|
24
|
+
{ name: "register_outcome", description: "Register a file, text, URL or data as a task deliverable — the only way to declare outcomes. Task runs only." },
|
|
25
|
+
],
|
|
26
|
+
},
|
|
27
|
+
{
|
|
28
|
+
key: "fs",
|
|
29
|
+
label: "Coding",
|
|
30
|
+
icon: "Terminal",
|
|
31
|
+
baseline: true,
|
|
32
|
+
note: "Read/write files and run shell commands. On by default — turn tools off to sandbox the agent. (Once you customise tools, only the ones left on here stay available.)",
|
|
33
|
+
tools: [
|
|
34
|
+
{ name: "read", description: "Read the contents of a file. Returns line-numbered text; supports offset/limit for large files." },
|
|
35
|
+
{ name: "write", description: "Create or overwrite a file. Parent directories are created automatically." },
|
|
36
|
+
{ name: "edit", description: "Replace a unique string in a file. The old text must appear exactly once." },
|
|
37
|
+
{ name: "bash", description: "Execute a shell command and return its output — tests, packages, git, etc." },
|
|
38
|
+
{ name: "glob", description: "Find files matching a glob pattern (**, *, ?, [abc], {a,b})." },
|
|
39
|
+
{ name: "grep", description: "Search files for a regex pattern (PCRE). Returns matching lines with paths + line numbers." },
|
|
40
|
+
{ name: "ls", description: "List files and directories at a given path." },
|
|
41
|
+
],
|
|
42
|
+
},
|
|
43
|
+
{
|
|
44
|
+
key: "http_",
|
|
45
|
+
label: "HTTP",
|
|
46
|
+
icon: "Globe",
|
|
47
|
+
baseline: true,
|
|
48
|
+
note: "Outbound HTTP — fetch URLs and download files. SSRF-protected. On by default.",
|
|
49
|
+
tools: [
|
|
50
|
+
{ name: "http_fetch", description: "Make an HTTP request (any method, headers, body). Returns status, headers and body. SSRF-protected." },
|
|
51
|
+
{ name: "http_download", description: "Download a file from a URL and save it locally." },
|
|
52
|
+
],
|
|
53
|
+
},
|
|
54
|
+
{
|
|
55
|
+
key: "browser_",
|
|
56
|
+
label: "Browser",
|
|
57
|
+
icon: "Globe",
|
|
58
|
+
note: "Browser automation via the agent-browser runtime. Set a browser profile on the agent to persist cookies and localStorage across runs.",
|
|
59
|
+
tools: [
|
|
60
|
+
{ name: "browser_navigate", description: "Open a URL in the browser. Launches it if not running." },
|
|
61
|
+
{ name: "browser_snapshot", description: "Get the accessibility tree with element refs (@e1, @e2) for reliable targeting." },
|
|
62
|
+
{ name: "browser_click", description: "Click an element. Use refs from a snapshot." },
|
|
63
|
+
{ name: "browser_fill", description: "Clear an input and type new text." },
|
|
64
|
+
{ name: "browser_type", description: "Type text into an element without clearing it first." },
|
|
65
|
+
{ name: "browser_press", description: "Press a keyboard key, including modifiers (Control+a, Shift+Enter)." },
|
|
66
|
+
{ name: "browser_screenshot", description: "Screenshot the current page. Returns the saved image path." },
|
|
67
|
+
{ name: "browser_get", description: "Read element text/html/value, page title, or current URL." },
|
|
68
|
+
{ name: "browser_select", description: "Select an option from a <select> dropdown." },
|
|
69
|
+
{ name: "browser_hover", description: "Hover an element to trigger tooltips or menus." },
|
|
70
|
+
{ name: "browser_scroll", description: "Scroll the page to load lazy content or navigate." },
|
|
71
|
+
{ name: "browser_wait", description: "Wait for an element, text, URL pattern, or load state." },
|
|
72
|
+
{ name: "browser_eval", description: "Run JavaScript in the page context and return the result." },
|
|
73
|
+
{ name: "browser_close", description: "Close the browser session (profile data is saved)." },
|
|
74
|
+
{ name: "browser_back", description: "Navigate back in browser history." },
|
|
75
|
+
{ name: "browser_forward", description: "Navigate forward in browser history." },
|
|
76
|
+
{ name: "browser_reload", description: "Reload the current page." },
|
|
77
|
+
{ name: "browser_tabs", description: "Manage tabs: list, open, switch, or close." },
|
|
78
|
+
],
|
|
79
|
+
},
|
|
80
|
+
{
|
|
81
|
+
key: "image_",
|
|
82
|
+
label: "Image",
|
|
83
|
+
icon: "Image",
|
|
84
|
+
note: "Image generation + vision analysis — runs through the managed gateway, no key needed.",
|
|
85
|
+
tools: [
|
|
86
|
+
{ name: "image_generate", description: "Generate an image from a text prompt. Model from agent.image_model (default fal/flux/dev)." },
|
|
87
|
+
{ name: "image_analyze", description: "Analyze an image with a vision model — describe, OCR, answer questions. Model from agent.vision_model." },
|
|
88
|
+
],
|
|
89
|
+
},
|
|
90
|
+
{
|
|
91
|
+
key: "video_",
|
|
92
|
+
label: "Video",
|
|
93
|
+
icon: "Video",
|
|
94
|
+
note: "Video generation — runs through the managed gateway, no key needed.",
|
|
95
|
+
tools: [
|
|
96
|
+
{ name: "video_generate", description: "Generate a video from a text prompt (MP4). Model from agent.video_model (default luma-ray-2-flash)." },
|
|
97
|
+
],
|
|
98
|
+
},
|
|
99
|
+
{
|
|
100
|
+
key: "audio_",
|
|
101
|
+
label: "Audio",
|
|
102
|
+
icon: "Volume2",
|
|
103
|
+
note: "Speech-to-text + text-to-speech — runs through the managed gateway (Edge TTS is free).",
|
|
104
|
+
tools: [
|
|
105
|
+
{ name: "audio_transcribe", description: "Transcribe an audio file to text. Model from agent.transcribe_model (default whisper-1)." },
|
|
106
|
+
{ name: "audio_speak", description: "Synthesize speech from text. Model from agent.tts_model (default tts-1; edge is free, no key)." },
|
|
107
|
+
],
|
|
108
|
+
},
|
|
109
|
+
{
|
|
110
|
+
key: "search_",
|
|
111
|
+
label: "Search",
|
|
112
|
+
icon: "Search",
|
|
113
|
+
note: "Managed web search — runs through the platform (Perplexity via the AI Gateway). No key required.",
|
|
114
|
+
tools: [
|
|
115
|
+
{ name: "search_web", description: "Search the web with natural-language queries. Returns titles, URLs and snippets." },
|
|
116
|
+
{ name: "search_find_similar", description: "Find web pages similar to a given URL — alternatives, competitors, related resources." },
|
|
117
|
+
],
|
|
118
|
+
},
|
|
119
|
+
{
|
|
120
|
+
key: "email_",
|
|
121
|
+
label: "Email",
|
|
122
|
+
icon: "Mail",
|
|
123
|
+
requiresKey: true,
|
|
124
|
+
note: "SMTP/IMAP email. Needs mail server credentials.",
|
|
125
|
+
tools: [
|
|
126
|
+
{ name: "email_send", description: "Send an email via SMTP. HTML, to/cc/bcc, attachments, reply-to. Domain allowlist enforced." },
|
|
127
|
+
{ name: "email_draft", description: "Create a draft by appending a composed message to the IMAP Drafts folder." },
|
|
128
|
+
{ name: "email_list", description: "List recent emails from a folder — subject, from, date, UID." },
|
|
129
|
+
{ name: "email_read", description: "Read a full email by UID — headers, body, attachment metadata." },
|
|
130
|
+
{ name: "email_search", description: "Search the mailbox for messages matching a query." },
|
|
131
|
+
{ name: "email_download_attachment", description: "Download a specific attachment from a message to the output directory." },
|
|
132
|
+
{ name: "email_verify", description: "Verify SMTP credentials / connectivity before sending." },
|
|
133
|
+
{ name: "email_count", description: "Count messages in a mailbox folder." },
|
|
134
|
+
],
|
|
135
|
+
},
|
|
136
|
+
{
|
|
137
|
+
key: "excel_",
|
|
138
|
+
label: "Spreadsheet",
|
|
139
|
+
icon: "Sheet",
|
|
140
|
+
note: "Spreadsheet (.xlsx / CSV) read + write.",
|
|
141
|
+
tools: [
|
|
142
|
+
{ name: "excel_read", description: "Read rows from an Excel/CSV file with column headers. Supports sheet + range." },
|
|
143
|
+
{ name: "excel_write", description: "Write structured rows to an Excel/CSV file." },
|
|
144
|
+
{ name: "excel_query", description: "Query a spreadsheet with filters/aggregations and return matching rows." },
|
|
145
|
+
{ name: "excel_info", description: "Inspect a workbook — sheets, dimensions, column headers." },
|
|
146
|
+
],
|
|
147
|
+
},
|
|
148
|
+
{
|
|
149
|
+
key: "pdf_",
|
|
150
|
+
label: "PDF",
|
|
151
|
+
icon: "FileText",
|
|
152
|
+
note: "PDF read, create (HTML→PDF), merge.",
|
|
153
|
+
tools: [
|
|
154
|
+
{ name: "pdf_read", description: "Extract text from a PDF — all or specific pages." },
|
|
155
|
+
{ name: "pdf_create", description: "Render a full HTML document to a professional PDF via Chromium (full CSS support)." },
|
|
156
|
+
{ name: "pdf_merge", description: "Merge multiple PDFs into a single document." },
|
|
157
|
+
{ name: "pdf_info", description: "Inspect a PDF — page count and metadata." },
|
|
158
|
+
],
|
|
159
|
+
},
|
|
160
|
+
{
|
|
161
|
+
key: "docx_",
|
|
162
|
+
label: "Docs",
|
|
163
|
+
icon: "FileType",
|
|
164
|
+
note: "Word document (.docx) read + create.",
|
|
165
|
+
tools: [
|
|
166
|
+
{ name: "docx_read", description: "Read a .docx and extract content as text, Markdown or HTML (preserves structure)." },
|
|
167
|
+
{ name: "docx_create", description: "Create a .docx with headings, paragraphs, lists and bold/italic formatting." },
|
|
168
|
+
],
|
|
169
|
+
},
|
|
170
|
+
{
|
|
171
|
+
key: "memory_",
|
|
172
|
+
label: "Memory",
|
|
173
|
+
icon: "Brain",
|
|
174
|
+
note: "The agent's own persistent memory across sessions.",
|
|
175
|
+
tools: [
|
|
176
|
+
{ name: "memory_get", description: "Read the agent's persistent memory (empty if none yet)." },
|
|
177
|
+
{ name: "memory_save", description: "Overwrite the entire persistent memory with new content." },
|
|
178
|
+
{ name: "memory_append", description: "Append a timestamped line to the persistent memory." },
|
|
179
|
+
{ name: "memory_update", description: "Find-and-replace a unique section in the persistent memory." },
|
|
180
|
+
],
|
|
181
|
+
},
|
|
182
|
+
{
|
|
183
|
+
key: "github_",
|
|
184
|
+
label: "GitHub",
|
|
185
|
+
icon: "GithubLogo",
|
|
186
|
+
requiresKey: true,
|
|
187
|
+
credentialLabel: "needs connection",
|
|
188
|
+
explicitToolsOnly: true,
|
|
189
|
+
note: "Uses a project Connection. OAuth token is resolved server-side and never shown to the model.",
|
|
190
|
+
tools: [
|
|
191
|
+
{ name: "github_list_repos", description: "List repositories visible to the connected GitHub account." },
|
|
192
|
+
{ name: "github_create_issue", description: "Create an issue in an authorized repository." },
|
|
193
|
+
{ name: "github_read_file", description: "Read a repository file through a connected GitHub account." },
|
|
194
|
+
],
|
|
195
|
+
},
|
|
196
|
+
{
|
|
197
|
+
key: "slack_",
|
|
198
|
+
label: "Slack",
|
|
199
|
+
icon: "SlackLogo",
|
|
200
|
+
requiresKey: true,
|
|
201
|
+
credentialLabel: "needs connection",
|
|
202
|
+
explicitToolsOnly: true,
|
|
203
|
+
note: "Uses a project Connection. Slack tokens are resolved server-side and never shown to the model.",
|
|
204
|
+
tools: [
|
|
205
|
+
{ name: "slack_list_channels", description: "List channels visible to the connected Slack workspace." },
|
|
206
|
+
{ name: "slack_send_message", description: "Send a message to a channel in the connected workspace." },
|
|
207
|
+
],
|
|
208
|
+
},
|
|
209
|
+
{
|
|
210
|
+
key: "drive_",
|
|
211
|
+
label: "Google Drive",
|
|
212
|
+
icon: "GoogleDriveLogo",
|
|
213
|
+
requiresKey: true,
|
|
214
|
+
credentialLabel: "needs connection",
|
|
215
|
+
explicitToolsOnly: true,
|
|
216
|
+
note: "Uses a project Connection. Drive tokens are resolved server-side and never shown to the model.",
|
|
217
|
+
tools: [
|
|
218
|
+
{ name: "drive_search_files", description: "Search files in the connected Google Drive account." },
|
|
219
|
+
{ name: "drive_read_file", description: "Read a Drive file. Google Docs are exported as text/plain." },
|
|
220
|
+
],
|
|
221
|
+
},
|
|
222
|
+
];
|
|
223
|
+
/** Every catalogued tool name, for detecting custom/unknown enabled tools. */
|
|
224
|
+
export const CATALOG_TOOL_NAMES = new Set(TOOL_CATALOG.flatMap((g) => g.tools.map((t) => t.name)));
|
|
225
|
+
export const CATALOG_TOOL_WILDCARDS = new Set(TOOL_CATALOG.filter((g) => g.key.endsWith("_") && !g.explicitToolsOnly).map((g) => `${g.key}*`));
|
|
226
|
+
/**
|
|
227
|
+
* Is `toolName` enabled by an agent's `allowedTools`? True on an exact match
|
|
228
|
+
* or a matching wildcard (e.g. "image_*" enables "image_generate").
|
|
229
|
+
*/
|
|
230
|
+
export function isToolEnabled(toolName, allowed) {
|
|
231
|
+
if (allowed.includes(toolName))
|
|
232
|
+
return true;
|
|
233
|
+
return allowed.some((a) => a.endsWith("*") && toolName.startsWith(a.slice(0, -1)));
|
|
234
|
+
}
|
|
235
|
+
/** Tools the runtime grants when an agent has no explicit allowedTools. */
|
|
236
|
+
export const BASELINE_TOOLS = new Set([
|
|
237
|
+
"read",
|
|
238
|
+
"write",
|
|
239
|
+
"edit",
|
|
240
|
+
"bash",
|
|
241
|
+
"glob",
|
|
242
|
+
"grep",
|
|
243
|
+
"ls",
|
|
244
|
+
"http_fetch",
|
|
245
|
+
"http_download",
|
|
246
|
+
]);
|
|
247
|
+
/**
|
|
248
|
+
* The number of tools an agent actually has enabled — resolving core tools
|
|
249
|
+
* (always on), the empty-allowedTools baseline, and `prefix*` wildcards. Use
|
|
250
|
+
* this instead of `allowedTools.length`, which miscounts wildcards/baseline.
|
|
251
|
+
*/
|
|
252
|
+
export function countEnabledTools(allowed) {
|
|
253
|
+
let n = 0;
|
|
254
|
+
for (const group of TOOL_CATALOG) {
|
|
255
|
+
for (const tool of group.tools) {
|
|
256
|
+
const on = group.core
|
|
257
|
+
? true
|
|
258
|
+
: allowed.length === 0
|
|
259
|
+
? BASELINE_TOOLS.has(tool.name)
|
|
260
|
+
: isToolEnabled(tool.name, allowed);
|
|
261
|
+
if (on)
|
|
262
|
+
n += 1;
|
|
263
|
+
}
|
|
264
|
+
}
|
|
265
|
+
return n;
|
|
266
|
+
}
|
|
267
|
+
/** Does `allowed` enable a whole group via its wildcard (e.g. "image_*")? */
|
|
268
|
+
export function hasGroupWildcard(groupKey, allowed) {
|
|
269
|
+
return allowed.includes(`${groupKey}*`);
|
|
270
|
+
}
|
|
271
|
+
//# sourceMappingURL=tool-catalog.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tool-catalog.js","sourceRoot":"","sources":["../../../src/v2/support/tool-catalog.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAiCH,MAAM,CAAC,MAAM,YAAY,GAAmB;IAC1C;QACE,GAAG,EAAE,MAAM;QACX,KAAK,EAAE,MAAM;QACb,IAAI,EAAE,aAAa;QACnB,IAAI,EAAE,IAAI;QACV,IAAI,EAAE,iFAAiF;QACvF,KAAK,EAAE;YACL,EAAE,IAAI,EAAE,WAAW,EAAE,WAAW,EAAE,0DAA0D,EAAE;YAC9F,EAAE,IAAI,EAAE,YAAY,EAAE,WAAW,EAAE,+DAA+D,EAAE;YACpG,EAAE,IAAI,EAAE,kBAAkB,EAAE,WAAW,EAAE,8GAA8G,EAAE;SAC1J;KACF;IACD;QACE,GAAG,EAAE,IAAI;QACT,KAAK,EAAE,QAAQ;QACf,IAAI,EAAE,UAAU;QAChB,QAAQ,EAAE,IAAI;QACd,IAAI,EAAE,sKAAsK;QAC5K,KAAK,EAAE;YACL,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,iGAAiG,EAAE;YAChI,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,2EAA2E,EAAE;YAC3G,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,2EAA2E,EAAE;YAC1G,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,4EAA4E,EAAE;YAC3G,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,8DAA8D,EAAE;YAC7F,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,4FAA4F,EAAE;YAC3H,EAAE,IAAI,EAAE,IAAI,EAAE,WAAW,EAAE,6CAA6C,EAAE;SAC3E;KACF;IACD;QACE,GAAG,EAAE,OAAO;QACZ,KAAK,EAAE,MAAM;QACb,IAAI,EAAE,OAAO;QACb,QAAQ,EAAE,IAAI;QACd,IAAI,EAAE,+EAA+E;QACrF,KAAK,EAAE;YACL,EAAE,IAAI,EAAE,YAAY,EAAE,WAAW,EAAE,qGAAqG,EAAE;YAC1I,EAAE,IAAI,EAAE,eAAe,EAAE,WAAW,EAAE,iDAAiD,EAAE;SAC1F;KACF;IACD;QACE,GAAG,EAAE,UAAU;QACf,KAAK,EAAE,SAAS;QAChB,IAAI,EAAE,OAAO;QACb,IAAI,EAAE,uIAAuI;QAC7I,KAAK,EAAE;YACL,EAAE,IAAI,EAAE,kBAAkB,EAAE,WAAW,EAAE,wDAAwD,EAAE;YACnG,EAAE,IAAI,EAAE,kBAAkB,EAAE,WAAW,EAAE,iFAAiF,EAAE;YAC5H,EAAE,IAAI,EAAE,eAAe,EAAE,WAAW,EAAE,6CAA6C,EAAE;YACrF,EAAE,IAAI,EAAE,cAAc,EAAE,WAAW,EAAE,mCAAmC,EAAE;YAC1E,EAAE,IAAI,EAAE,cAAc,EAAE,WAAW,EAAE,sDAAsD,EAAE;YAC7F,EAAE,IAAI,EAAE,eAAe,EAAE,WAAW,EAAE,qEAAqE,EAAE;YAC7G,EAAE,IAAI,EAAE,oBAAoB,EAAE,WAAW,EAAE,4DAA4D,EAAE;YACzG,EAAE,IAAI,EAAE,aAAa,EAAE,WAAW,EAAE,2DAA2D,EAAE;YACjG,EAAE,IAAI,EAAE,gBAAgB,EAAE,WAAW,EAAE,4CAA4C,EAAE;YACrF,EAAE,IAAI,EAAE,eAAe,EAAE,WAAW,EAAE,gDAAgD,EAAE;YACxF,EAAE,IAAI,EAAE,gBAAgB,EAAE,WAAW,EAAE,mDAAmD,EAAE;YAC5F,EAAE,IAAI,EAAE,cAAc,EAAE,WAAW,EAAE,wDAAwD,EAAE;YAC/F,EAAE,IAAI,EAAE,cAAc,EAAE,WAAW,EAAE,2DAA2D,EAAE;YAClG,EAAE,IAAI,EAAE,eAAe,EAAE,WAAW,EAAE,oDAAoD,EAAE;YAC5F,EAAE,IAAI,EAAE,cAAc,EAAE,WAAW,EAAE,mCAAmC,EAAE;YAC1E,EAAE,IAAI,EAAE,iBAAiB,EAAE,WAAW,EAAE,sCAAsC,EAAE;YAChF,EAAE,IAAI,EAAE,gBAAgB,EAAE,WAAW,EAAE,0BAA0B,EAAE;YACnE,EAAE,IAAI,EAAE,cAAc,EAAE,WAAW,EAAE,4CAA4C,EAAE;SACpF;KACF;IACD;QACE,GAAG,EAAE,QAAQ;QACb,KAAK,EAAE,OAAO;QACd,IAAI,EAAE,OAAO;QACb,IAAI,EAAE,uFAAuF;QAC7F,KAAK,EAAE;YACL,EAAE,IAAI,EAAE,gBAAgB,EAAE,WAAW,EAAE,4FAA4F,EAAE;YACrI,EAAE,IAAI,EAAE,eAAe,EAAE,WAAW,EAAE,wGAAwG,EAAE;SACjJ;KACF;IACD;QACE,GAAG,EAAE,QAAQ;QACb,KAAK,EAAE,OAAO;QACd,IAAI,EAAE,OAAO;QACb,IAAI,EAAE,qEAAqE;QAC3E,KAAK,EAAE;YACL,EAAE,IAAI,EAAE,gBAAgB,EAAE,WAAW,EAAE,qGAAqG,EAAE;SAC/I;KACF;IACD;QACE,GAAG,EAAE,QAAQ;QACb,KAAK,EAAE,OAAO;QACd,IAAI,EAAE,SAAS;QACf,IAAI,EAAE,wFAAwF;QAC9F,KAAK,EAAE;YACL,EAAE,IAAI,EAAE,kBAAkB,EAAE,WAAW,EAAE,0FAA0F,EAAE;YACrI,EAAE,IAAI,EAAE,aAAa,EAAE,WAAW,EAAE,gGAAgG,EAAE;SACvI;KACF;IACD;QACE,GAAG,EAAE,SAAS;QACd,KAAK,EAAE,QAAQ;QACf,IAAI,EAAE,QAAQ;QACd,IAAI,EAAE,kGAAkG;QACxG,KAAK,EAAE;YACL,EAAE,IAAI,EAAE,YAAY,EAAE,WAAW,EAAE,kFAAkF,EAAE;YACvH,EAAE,IAAI,EAAE,qBAAqB,EAAE,WAAW,EAAE,uFAAuF,EAAE;SACtI;KACF;IACD;QACE,GAAG,EAAE,QAAQ;QACb,KAAK,EAAE,OAAO;QACd,IAAI,EAAE,MAAM;QACZ,WAAW,EAAE,IAAI;QACjB,IAAI,EAAE,iDAAiD;QACvD,KAAK,EAAE;YACL,EAAE,IAAI,EAAE,YAAY,EAAE,WAAW,EAAE,4FAA4F,EAAE;YACjI,EAAE,IAAI,EAAE,aAAa,EAAE,WAAW,EAAE,2EAA2E,EAAE;YACjH,EAAE,IAAI,EAAE,YAAY,EAAE,WAAW,EAAE,8DAA8D,EAAE;YACnG,EAAE,IAAI,EAAE,YAAY,EAAE,WAAW,EAAE,gEAAgE,EAAE;YACrG,EAAE,IAAI,EAAE,cAAc,EAAE,WAAW,EAAE,mDAAmD,EAAE;YAC1F,EAAE,IAAI,EAAE,2BAA2B,EAAE,WAAW,EAAE,wEAAwE,EAAE;YAC5H,EAAE,IAAI,EAAE,cAAc,EAAE,WAAW,EAAE,wDAAwD,EAAE;YAC/F,EAAE,IAAI,EAAE,aAAa,EAAE,WAAW,EAAE,qCAAqC,EAAE;SAC5E;KACF;IACD;QACE,GAAG,EAAE,QAAQ;QACb,KAAK,EAAE,aAAa;QACpB,IAAI,EAAE,OAAO;QACb,IAAI,EAAE,yCAAyC;QAC/C,KAAK,EAAE;YACL,EAAE,IAAI,EAAE,YAAY,EAAE,WAAW,EAAE,+EAA+E,EAAE;YACpH,EAAE,IAAI,EAAE,aAAa,EAAE,WAAW,EAAE,6CAA6C,EAAE;YACnF,EAAE,IAAI,EAAE,aAAa,EAAE,WAAW,EAAE,yEAAyE,EAAE;YAC/G,EAAE,IAAI,EAAE,YAAY,EAAE,WAAW,EAAE,0DAA0D,EAAE;SAChG;KACF;IACD;QACE,GAAG,EAAE,MAAM;QACX,KAAK,EAAE,KAAK;QACZ,IAAI,EAAE,UAAU;QAChB,IAAI,EAAE,qCAAqC;QAC3C,KAAK,EAAE;YACL,EAAE,IAAI,EAAE,UAAU,EAAE,WAAW,EAAE,kDAAkD,EAAE;YACrF,EAAE,IAAI,EAAE,YAAY,EAAE,WAAW,EAAE,oFAAoF,EAAE;YACzH,EAAE,IAAI,EAAE,WAAW,EAAE,WAAW,EAAE,6CAA6C,EAAE;YACjF,EAAE,IAAI,EAAE,UAAU,EAAE,WAAW,EAAE,0CAA0C,EAAE;SAC9E;KACF;IACD;QACE,GAAG,EAAE,OAAO;QACZ,KAAK,EAAE,MAAM;QACb,IAAI,EAAE,UAAU;QAChB,IAAI,EAAE,sCAAsC;QAC5C,KAAK,EAAE;YACL,EAAE,IAAI,EAAE,WAAW,EAAE,WAAW,EAAE,mFAAmF,EAAE;YACvH,EAAE,IAAI,EAAE,aAAa,EAAE,WAAW,EAAE,6EAA6E,EAAE;SACpH;KACF;IACD;QACE,GAAG,EAAE,SAAS;QACd,KAAK,EAAE,QAAQ;QACf,IAAI,EAAE,OAAO;QACb,IAAI,EAAE,oDAAoD;QAC1D,KAAK,EAAE;YACL,EAAE,IAAI,EAAE,YAAY,EAAE,WAAW,EAAE,yDAAyD,EAAE;YAC9F,EAAE,IAAI,EAAE,aAAa,EAAE,WAAW,EAAE,0DAA0D,EAAE;YAChG,EAAE,IAAI,EAAE,eAAe,EAAE,WAAW,EAAE,qDAAqD,EAAE;YAC7F,EAAE,IAAI,EAAE,eAAe,EAAE,WAAW,EAAE,6DAA6D,EAAE;SACtG;KACF;IACD;QACE,GAAG,EAAE,SAAS;QACd,KAAK,EAAE,QAAQ;QACf,IAAI,EAAE,YAAY;QAClB,WAAW,EAAE,IAAI;QACjB,eAAe,EAAE,kBAAkB;QACnC,iBAAiB,EAAE,IAAI;QACvB,IAAI,EAAE,8FAA8F;QACpG,KAAK,EAAE;YACL,EAAE,IAAI,EAAE,mBAAmB,EAAE,WAAW,EAAE,4DAA4D,EAAE;YACxG,EAAE,IAAI,EAAE,qBAAqB,EAAE,WAAW,EAAE,8CAA8C,EAAE;YAC5F,EAAE,IAAI,EAAE,kBAAkB,EAAE,WAAW,EAAE,4DAA4D,EAAE;SACxG;KACF;IACD;QACE,GAAG,EAAE,QAAQ;QACb,KAAK,EAAE,OAAO;QACd,IAAI,EAAE,WAAW;QACjB,WAAW,EAAE,IAAI;QACjB,eAAe,EAAE,kBAAkB;QACnC,iBAAiB,EAAE,IAAI;QACvB,IAAI,EAAE,gGAAgG;QACtG,KAAK,EAAE;YACL,EAAE,IAAI,EAAE,qBAAqB,EAAE,WAAW,EAAE,yDAAyD,EAAE;YACvG,EAAE,IAAI,EAAE,oBAAoB,EAAE,WAAW,EAAE,yDAAyD,EAAE;SACvG;KACF;IACD;QACE,GAAG,EAAE,QAAQ;QACb,KAAK,EAAE,cAAc;QACrB,IAAI,EAAE,iBAAiB;QACvB,WAAW,EAAE,IAAI;QACjB,eAAe,EAAE,kBAAkB;QACnC,iBAAiB,EAAE,IAAI;QACvB,IAAI,EAAE,gGAAgG;QACtG,KAAK,EAAE;YACL,EAAE,IAAI,EAAE,oBAAoB,EAAE,WAAW,EAAE,qDAAqD,EAAE;YAClG,EAAE,IAAI,EAAE,iBAAiB,EAAE,WAAW,EAAE,4DAA4D,EAAE;SACvG;KACF;CACF,CAAC;AAEF,8EAA8E;AAC9E,MAAM,CAAC,MAAM,kBAAkB,GAAG,IAAI,GAAG,CACvC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CACxD,CAAC;AAEF,MAAM,CAAC,MAAM,sBAAsB,GAAG,IAAI,GAAG,CAC3C,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,CAChG,CAAC;AAEF;;;GAGG;AACH,MAAM,UAAU,aAAa,CAAC,QAAgB,EAAE,OAAiB;IAC/D,IAAI,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC;QAAE,OAAO,IAAI,CAAC;IAC5C,OAAO,OAAO,CAAC,IAAI,CACjB,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAC9D,CAAC;AACJ,CAAC;AAED,2EAA2E;AAC3E,MAAM,CAAC,MAAM,cAAc,GAAG,IAAI,GAAG,CAAC;IACpC,MAAM;IACN,OAAO;IACP,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,IAAI;IACJ,YAAY;IACZ,eAAe;CAChB,CAAC,CAAC;AAEH;;;;GAIG;AACH,MAAM,UAAU,iBAAiB,CAAC,OAAiB;IACjD,IAAI,CAAC,GAAG,CAAC,CAAC;IACV,KAAK,MAAM,KAAK,IAAI,YAAY,EAAE,CAAC;QACjC,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;YAC/B,MAAM,EAAE,GAAG,KAAK,CAAC,IAAI;gBACnB,CAAC,CAAC,IAAI;gBACN,CAAC,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC;oBACpB,CAAC,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC;oBAC/B,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;YACxC,IAAI,EAAE;gBAAE,CAAC,IAAI,CAAC,CAAC;QACjB,CAAC;IACH,CAAC;IACD,OAAO,CAAC,CAAC;AACX,CAAC;AAED,6EAA6E;AAC7E,MAAM,UAAU,gBAAgB,CAAC,QAAgB,EAAE,OAAiB;IAClE,OAAO,OAAO,CAAC,QAAQ,CAAC,GAAG,QAAQ,GAAG,CAAC,CAAC;AAC1C,CAAC"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared vault credential-field config + helpers.
|
|
3
|
+
*
|
|
4
|
+
* Mirrors the credential schemas in @polpo-ai/server's vault route
|
|
5
|
+
* (`SaveVaultEntryBody`). Used by both the agent vault tab CRUD and the
|
|
6
|
+
* builder's `save_credential` secure form so the typed fields stay in sync.
|
|
7
|
+
*/
|
|
8
|
+
export type VaultType = "api_key" | "smtp" | "imap" | "oauth" | "login" | "custom";
|
|
9
|
+
export interface FieldDef {
|
|
10
|
+
k: string;
|
|
11
|
+
label: string;
|
|
12
|
+
secret?: boolean;
|
|
13
|
+
optional?: boolean;
|
|
14
|
+
placeholder?: string;
|
|
15
|
+
}
|
|
16
|
+
export declare const typeLabel: Record<string, string>;
|
|
17
|
+
export declare const TYPE_OPTIONS: VaultType[];
|
|
18
|
+
export declare const TYPE_FIELDS: Record<Exclude<VaultType, "custom">, FieldDef[]>;
|
|
19
|
+
export declare const VAULT_INPUT_CLS = "w-full border border-border bg-background px-2.5 py-1.5 text-sm text-foreground placeholder:text-muted-foreground/40 focus:border-foreground/30 focus:outline-none";
|
|
20
|
+
export declare const VAULT_FIELD_LABEL_CLS = "font-mono text-[10px] font-medium uppercase tracking-[0.12em] text-muted-foreground";
|
|
21
|
+
/**
|
|
22
|
+
* Build the credentials object from form state, validating required fields.
|
|
23
|
+
* Throws a user-facing Error on the first missing required field.
|
|
24
|
+
*/
|
|
25
|
+
export declare function buildCredentials(type: VaultType, fields: Record<string, string>, customRows: {
|
|
26
|
+
k: string;
|
|
27
|
+
v: string;
|
|
28
|
+
}[]): Record<string, string>;
|
|
29
|
+
//# sourceMappingURL=vault-fields.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vault-fields.d.ts","sourceRoot":"","sources":["../../../src/v2/support/vault-fields.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,MAAM,MAAM,SAAS,GAAG,SAAS,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,OAAO,GAAG,QAAQ,CAAC;AAEnF,MAAM,WAAW,QAAQ;IACvB,CAAC,EAAE,MAAM,CAAC;IACV,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,eAAO,MAAM,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAO5C,CAAC;AAEF,eAAO,MAAM,YAAY,EAAE,SAAS,EAA4D,CAAC;AAEjG,eAAO,MAAM,WAAW,EAAE,MAAM,CAAC,OAAO,CAAC,SAAS,EAAE,QAAQ,CAAC,EAAE,QAAQ,EAAE,CA6BxE,CAAC;AAGF,eAAO,MAAM,eAAe,uKAC0I,CAAC;AACvK,eAAO,MAAM,qBAAqB,wFACqD,CAAC;AAExF;;;GAGG;AACH,wBAAgB,gBAAgB,CAC9B,IAAI,EAAE,SAAS,EACf,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAC9B,UAAU,EAAE;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAA;CAAE,EAAE,GACrC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAcxB"}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared vault credential-field config + helpers.
|
|
3
|
+
*
|
|
4
|
+
* Mirrors the credential schemas in @polpo-ai/server's vault route
|
|
5
|
+
* (`SaveVaultEntryBody`). Used by both the agent vault tab CRUD and the
|
|
6
|
+
* builder's `save_credential` secure form so the typed fields stay in sync.
|
|
7
|
+
*/
|
|
8
|
+
export const typeLabel = {
|
|
9
|
+
smtp: "SMTP",
|
|
10
|
+
imap: "IMAP",
|
|
11
|
+
oauth: "OAuth",
|
|
12
|
+
api_key: "API Key",
|
|
13
|
+
login: "Login",
|
|
14
|
+
custom: "Custom",
|
|
15
|
+
};
|
|
16
|
+
export const TYPE_OPTIONS = ["api_key", "smtp", "imap", "oauth", "login", "custom"];
|
|
17
|
+
export const TYPE_FIELDS = {
|
|
18
|
+
api_key: [{ k: "key", label: "API key", secret: true }],
|
|
19
|
+
smtp: [
|
|
20
|
+
{ k: "host", label: "Host" },
|
|
21
|
+
{ k: "port", label: "Port", placeholder: "587" },
|
|
22
|
+
{ k: "user", label: "User" },
|
|
23
|
+
{ k: "pass", label: "Password", secret: true },
|
|
24
|
+
{ k: "from", label: "From address" },
|
|
25
|
+
{ k: "secure", label: "Secure", optional: true, placeholder: "true | false" },
|
|
26
|
+
],
|
|
27
|
+
imap: [
|
|
28
|
+
{ k: "host", label: "Host" },
|
|
29
|
+
{ k: "port", label: "Port", placeholder: "993" },
|
|
30
|
+
{ k: "user", label: "User" },
|
|
31
|
+
{ k: "pass", label: "Password", secret: true },
|
|
32
|
+
{ k: "tls", label: "TLS", optional: true, placeholder: "true | false" },
|
|
33
|
+
],
|
|
34
|
+
oauth: [
|
|
35
|
+
{ k: "access_token", label: "Access token", secret: true },
|
|
36
|
+
{ k: "refresh_token", label: "Refresh token", secret: true, optional: true },
|
|
37
|
+
{ k: "client_id", label: "Client ID", optional: true },
|
|
38
|
+
{ k: "client_secret", label: "Client secret", secret: true, optional: true },
|
|
39
|
+
{ k: "expires_at", label: "Expires at", optional: true },
|
|
40
|
+
{ k: "scope", label: "Scope", optional: true },
|
|
41
|
+
],
|
|
42
|
+
login: [
|
|
43
|
+
{ k: "username", label: "Username" },
|
|
44
|
+
{ k: "password", label: "Password", secret: true },
|
|
45
|
+
],
|
|
46
|
+
};
|
|
47
|
+
// Sharp, design-system-consistent field styling (no rounded; native inputs).
|
|
48
|
+
export const VAULT_INPUT_CLS = "w-full border border-border bg-background px-2.5 py-1.5 text-sm text-foreground placeholder:text-muted-foreground/40 focus:border-foreground/30 focus:outline-none";
|
|
49
|
+
export const VAULT_FIELD_LABEL_CLS = "font-mono text-[10px] font-medium uppercase tracking-[0.12em] text-muted-foreground";
|
|
50
|
+
/**
|
|
51
|
+
* Build the credentials object from form state, validating required fields.
|
|
52
|
+
* Throws a user-facing Error on the first missing required field.
|
|
53
|
+
*/
|
|
54
|
+
export function buildCredentials(type, fields, customRows) {
|
|
55
|
+
if (type === "custom") {
|
|
56
|
+
const out = {};
|
|
57
|
+
for (const r of customRows)
|
|
58
|
+
if (r.k.trim())
|
|
59
|
+
out[r.k.trim()] = r.v;
|
|
60
|
+
if (Object.keys(out).length === 0)
|
|
61
|
+
throw new Error("Add at least one field.");
|
|
62
|
+
return out;
|
|
63
|
+
}
|
|
64
|
+
const out = {};
|
|
65
|
+
for (const f of TYPE_FIELDS[type]) {
|
|
66
|
+
const v = (fields[f.k] ?? "").trim();
|
|
67
|
+
if (!v && !f.optional)
|
|
68
|
+
throw new Error(`${f.label} is required.`);
|
|
69
|
+
if (v)
|
|
70
|
+
out[f.k] = v;
|
|
71
|
+
}
|
|
72
|
+
return out;
|
|
73
|
+
}
|
|
74
|
+
//# sourceMappingURL=vault-fields.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vault-fields.js","sourceRoot":"","sources":["../../../src/v2/support/vault-fields.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAYH,MAAM,CAAC,MAAM,SAAS,GAA2B;IAC/C,IAAI,EAAE,MAAM;IACZ,IAAI,EAAE,MAAM;IACZ,KAAK,EAAE,OAAO;IACd,OAAO,EAAE,SAAS;IAClB,KAAK,EAAE,OAAO;IACd,MAAM,EAAE,QAAQ;CACjB,CAAC;AAEF,MAAM,CAAC,MAAM,YAAY,GAAgB,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;AAEjG,MAAM,CAAC,MAAM,WAAW,GAAqD;IAC3E,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;IACvD,IAAI,EAAE;QACJ,EAAE,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE;QAC5B,EAAE,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE;QAChD,EAAE,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE;QAC5B,EAAE,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE;QAC9C,EAAE,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,cAAc,EAAE;QACpC,EAAE,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,WAAW,EAAE,cAAc,EAAE;KAC9E;IACD,IAAI,EAAE;QACJ,EAAE,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE;QAC5B,EAAE,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE;QAChD,EAAE,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE;QAC5B,EAAE,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE;QAC9C,EAAE,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,WAAW,EAAE,cAAc,EAAE;KACxE;IACD,KAAK,EAAE;QACL,EAAE,CAAC,EAAE,cAAc,EAAE,KAAK,EAAE,cAAc,EAAE,MAAM,EAAE,IAAI,EAAE;QAC1D,EAAE,CAAC,EAAE,eAAe,EAAE,KAAK,EAAE,eAAe,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE;QAC5E,EAAE,CAAC,EAAE,WAAW,EAAE,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,IAAI,EAAE;QACtD,EAAE,CAAC,EAAE,eAAe,EAAE,KAAK,EAAE,eAAe,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE;QAC5E,EAAE,CAAC,EAAE,YAAY,EAAE,KAAK,EAAE,YAAY,EAAE,QAAQ,EAAE,IAAI,EAAE;QACxD,EAAE,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE;KAC/C;IACD,KAAK,EAAE;QACL,EAAE,CAAC,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,EAAE;QACpC,EAAE,CAAC,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE;KACnD;CACF,CAAC;AAEF,6EAA6E;AAC7E,MAAM,CAAC,MAAM,eAAe,GAC1B,oKAAoK,CAAC;AACvK,MAAM,CAAC,MAAM,qBAAqB,GAChC,qFAAqF,CAAC;AAExF;;;GAGG;AACH,MAAM,UAAU,gBAAgB,CAC9B,IAAe,EACf,MAA8B,EAC9B,UAAsC;IAEtC,IAAI,IAAI,KAAK,QAAQ,EAAE,CAAC;QACtB,MAAM,GAAG,GAA2B,EAAE,CAAC;QACvC,KAAK,MAAM,CAAC,IAAI,UAAU;YAAE,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE;gBAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QAClE,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,KAAK,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;QAC9E,OAAO,GAAG,CAAC;IACb,CAAC;IACD,MAAM,GAAG,GAA2B,EAAE,CAAC;IACvC,KAAK,MAAM,CAAC,IAAI,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC;QAClC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QACrC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ;YAAE,MAAM,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,eAAe,CAAC,CAAC;QAClE,IAAI,CAAC;YAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IACtB,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Turn a tool's TypeBox/JSON-Schema `parameters` into a guided "Try it" form,
|
|
3
|
+
* and assemble a typed args object back from the form values. Ported from the
|
|
4
|
+
* v1 tools view so the run form works without needing the AI example endpoint.
|
|
5
|
+
*/
|
|
6
|
+
export type ParamField = {
|
|
7
|
+
name: string;
|
|
8
|
+
type: "string" | "number" | "integer" | "boolean" | "enum" | "json";
|
|
9
|
+
required: boolean;
|
|
10
|
+
description?: string;
|
|
11
|
+
enumValues?: (string | number)[];
|
|
12
|
+
raw?: Record<string, unknown>;
|
|
13
|
+
};
|
|
14
|
+
export declare function schemaToFields(schema: unknown): ParamField[] | null;
|
|
15
|
+
export declare function placeholderFor(f: ParamField): string;
|
|
16
|
+
export declare function argsToFormValues(fields: ParamField[], args: Record<string, unknown>): Record<string, string>;
|
|
17
|
+
export declare function emptyFormValues(fields: ParamField[]): Record<string, string>;
|
|
18
|
+
export declare function buildArgsFromForm(fields: ParamField[], values: Record<string, string>): Record<string, unknown>;
|
|
19
|
+
//# sourceMappingURL=param-fields.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"param-fields.d.ts","sourceRoot":"","sources":["../../../src/v2/tools/param-fields.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,MAAM,MAAM,UAAU,GAAG;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,QAAQ,GAAG,QAAQ,GAAG,SAAS,GAAG,SAAS,GAAG,MAAM,GAAG,MAAM,CAAC;IACpE,QAAQ,EAAE,OAAO,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,CAAC;IACjC,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC/B,CAAC;AAIF,wBAAgB,cAAc,CAAC,MAAM,EAAE,OAAO,GAAG,UAAU,EAAE,GAAG,IAAI,CAwCnE;AA2DD,wBAAgB,cAAc,CAAC,CAAC,EAAE,UAAU,GAAG,MAAM,CAKpD;AAED,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,UAAU,EAAE,EACpB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC5B,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAkBxB;AAED,wBAAgB,eAAe,CAAC,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAI5E;AAED,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,UAAU,EAAE,EACpB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAC7B,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CA+BzB"}
|
|
@@ -0,0 +1,191 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Turn a tool's TypeBox/JSON-Schema `parameters` into a guided "Try it" form,
|
|
3
|
+
* and assemble a typed args object back from the form values. Ported from the
|
|
4
|
+
* v1 tools view so the run form works without needing the AI example endpoint.
|
|
5
|
+
*/
|
|
6
|
+
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
7
|
+
export function schemaToFields(schema) {
|
|
8
|
+
if (!schema || typeof schema !== "object")
|
|
9
|
+
return null;
|
|
10
|
+
const s = schema;
|
|
11
|
+
const props = s.properties;
|
|
12
|
+
if (!props || typeof props !== "object")
|
|
13
|
+
return null;
|
|
14
|
+
const required = Array.isArray(s.required) ? s.required : [];
|
|
15
|
+
const names = Object.keys(props);
|
|
16
|
+
if (names.length === 0)
|
|
17
|
+
return null;
|
|
18
|
+
return names.map((name) => {
|
|
19
|
+
const p = (props[name] ?? {});
|
|
20
|
+
const description = typeof p.description === "string" ? p.description : undefined;
|
|
21
|
+
const req = required.includes(name);
|
|
22
|
+
const enumFromKeyword = Array.isArray(p.enum) ? p.enum : null;
|
|
23
|
+
const enumFromAnyOf = Array.isArray(p.anyOf) && p.anyOf.every((m) => m && "const" in m)
|
|
24
|
+
? p.anyOf.map((m) => m.const)
|
|
25
|
+
: null;
|
|
26
|
+
const enumValues = (enumFromKeyword ?? enumFromAnyOf);
|
|
27
|
+
if (enumValues && enumValues.length > 0) {
|
|
28
|
+
return { name, type: "enum", required: req, description, enumValues };
|
|
29
|
+
}
|
|
30
|
+
switch (p.type) {
|
|
31
|
+
case "string":
|
|
32
|
+
return { name, type: "string", required: req, description };
|
|
33
|
+
case "number":
|
|
34
|
+
return { name, type: "number", required: req, description };
|
|
35
|
+
case "integer":
|
|
36
|
+
return { name, type: "integer", required: req, description };
|
|
37
|
+
case "boolean":
|
|
38
|
+
return { name, type: "boolean", required: req, description };
|
|
39
|
+
default:
|
|
40
|
+
return { name, type: "json", required: req, description, raw: p };
|
|
41
|
+
}
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
function exampleString(name) {
|
|
45
|
+
const n = name.toLowerCase();
|
|
46
|
+
if (/email/.test(n))
|
|
47
|
+
return "user@example.com";
|
|
48
|
+
if (/url|link|website|endpoint/.test(n))
|
|
49
|
+
return "https://example.com";
|
|
50
|
+
if (/phone|tel/.test(n))
|
|
51
|
+
return "+15550100";
|
|
52
|
+
if (/datetime|timestamp/.test(n))
|
|
53
|
+
return "2024-01-15T09:30:00Z";
|
|
54
|
+
if (/date|day/.test(n))
|
|
55
|
+
return "2024-01-15";
|
|
56
|
+
if (/time/.test(n))
|
|
57
|
+
return "09:30";
|
|
58
|
+
if (/uuid|(^|_)id$/.test(n))
|
|
59
|
+
return "abc123";
|
|
60
|
+
if (/city/.test(n))
|
|
61
|
+
return "San Francisco";
|
|
62
|
+
if (/country/.test(n))
|
|
63
|
+
return "US";
|
|
64
|
+
if (/currency/.test(n))
|
|
65
|
+
return "USD";
|
|
66
|
+
if (/(^|_)name$|title|company/.test(n))
|
|
67
|
+
return "Acme Inc";
|
|
68
|
+
if (/query|search|(^|_)q$/.test(n))
|
|
69
|
+
return "quarterly report";
|
|
70
|
+
if (/message|text|body|content|prompt/.test(n))
|
|
71
|
+
return "Hello world";
|
|
72
|
+
if (/slug/.test(n))
|
|
73
|
+
return "my-tool";
|
|
74
|
+
if (/path|file/.test(n))
|
|
75
|
+
return "/tmp/out.txt";
|
|
76
|
+
if (/lang|locale/.test(n))
|
|
77
|
+
return "en";
|
|
78
|
+
return "text";
|
|
79
|
+
}
|
|
80
|
+
function exampleNumber(name) {
|
|
81
|
+
const n = name.toLowerCase();
|
|
82
|
+
if (/amount|price|cost|total|fee|balance/.test(n))
|
|
83
|
+
return 99.99;
|
|
84
|
+
if (/count|qty|quantity|limit|page|size|max|min/.test(n))
|
|
85
|
+
return 10;
|
|
86
|
+
if (/age/.test(n))
|
|
87
|
+
return 30;
|
|
88
|
+
if (/year/.test(n))
|
|
89
|
+
return 2024;
|
|
90
|
+
return 42;
|
|
91
|
+
}
|
|
92
|
+
function exampleFromSchema(node, name = "") {
|
|
93
|
+
if (!node || typeof node !== "object")
|
|
94
|
+
return "value";
|
|
95
|
+
if (Array.isArray(node.enum) && node.enum.length)
|
|
96
|
+
return node.enum[0];
|
|
97
|
+
if (Array.isArray(node.anyOf) && node.anyOf[0] && "const" in node.anyOf[0])
|
|
98
|
+
return node.anyOf[0].const;
|
|
99
|
+
switch (node.type) {
|
|
100
|
+
case "string":
|
|
101
|
+
return exampleString(name);
|
|
102
|
+
case "number":
|
|
103
|
+
case "integer":
|
|
104
|
+
return exampleNumber(name);
|
|
105
|
+
case "boolean":
|
|
106
|
+
return true;
|
|
107
|
+
case "array":
|
|
108
|
+
return [exampleFromSchema(node.items, name)];
|
|
109
|
+
case "object": {
|
|
110
|
+
const props = (node.properties ?? {});
|
|
111
|
+
const out = {};
|
|
112
|
+
for (const k of Object.keys(props).slice(0, 4))
|
|
113
|
+
out[k] = exampleFromSchema(props[k], k);
|
|
114
|
+
return Object.keys(out).length ? out : { key: "value" };
|
|
115
|
+
}
|
|
116
|
+
default:
|
|
117
|
+
return "value";
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
export function placeholderFor(f) {
|
|
121
|
+
if (f.type === "boolean" || f.type === "enum")
|
|
122
|
+
return "";
|
|
123
|
+
if (f.type === "json")
|
|
124
|
+
return `e.g. ${JSON.stringify(exampleFromSchema(f.raw, f.name))}`;
|
|
125
|
+
if (f.type === "number" || f.type === "integer")
|
|
126
|
+
return `e.g. ${exampleNumber(f.name)}`;
|
|
127
|
+
return `e.g. ${exampleString(f.name)}`;
|
|
128
|
+
}
|
|
129
|
+
export function argsToFormValues(fields, args) {
|
|
130
|
+
const values = {};
|
|
131
|
+
for (const f of fields) {
|
|
132
|
+
const v = args?.[f.name];
|
|
133
|
+
if (v === undefined || v === null) {
|
|
134
|
+
values[f.name] = f.type === "boolean" ? "false" : "";
|
|
135
|
+
continue;
|
|
136
|
+
}
|
|
137
|
+
values[f.name] =
|
|
138
|
+
typeof v === "boolean"
|
|
139
|
+
? v
|
|
140
|
+
? "true"
|
|
141
|
+
: "false"
|
|
142
|
+
: typeof v === "object"
|
|
143
|
+
? JSON.stringify(v)
|
|
144
|
+
: String(v);
|
|
145
|
+
}
|
|
146
|
+
return values;
|
|
147
|
+
}
|
|
148
|
+
export function emptyFormValues(fields) {
|
|
149
|
+
const out = {};
|
|
150
|
+
for (const f of fields)
|
|
151
|
+
out[f.name] = f.type === "boolean" ? "false" : "";
|
|
152
|
+
return out;
|
|
153
|
+
}
|
|
154
|
+
export function buildArgsFromForm(fields, values) {
|
|
155
|
+
const args = {};
|
|
156
|
+
for (const f of fields) {
|
|
157
|
+
const raw = values[f.name];
|
|
158
|
+
if (f.type === "boolean") {
|
|
159
|
+
if (raw === "true")
|
|
160
|
+
args[f.name] = true;
|
|
161
|
+
else if (raw === "false" && f.required)
|
|
162
|
+
args[f.name] = false;
|
|
163
|
+
continue;
|
|
164
|
+
}
|
|
165
|
+
if (raw === undefined || raw === "")
|
|
166
|
+
continue;
|
|
167
|
+
if (f.type === "number" || f.type === "integer") {
|
|
168
|
+
const n = Number(raw);
|
|
169
|
+
if (Number.isNaN(n))
|
|
170
|
+
throw new Error(`"${f.name}" must be a number.`);
|
|
171
|
+
args[f.name] = f.type === "integer" ? Math.trunc(n) : n;
|
|
172
|
+
continue;
|
|
173
|
+
}
|
|
174
|
+
if (f.type === "enum") {
|
|
175
|
+
args[f.name] = raw;
|
|
176
|
+
continue;
|
|
177
|
+
}
|
|
178
|
+
if (f.type === "json") {
|
|
179
|
+
try {
|
|
180
|
+
args[f.name] = JSON.parse(raw);
|
|
181
|
+
}
|
|
182
|
+
catch {
|
|
183
|
+
throw new Error(`"${f.name}" must be valid JSON.`);
|
|
184
|
+
}
|
|
185
|
+
continue;
|
|
186
|
+
}
|
|
187
|
+
args[f.name] = raw;
|
|
188
|
+
}
|
|
189
|
+
return args;
|
|
190
|
+
}
|
|
191
|
+
//# sourceMappingURL=param-fields.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"param-fields.js","sourceRoot":"","sources":["../../../src/v2/tools/param-fields.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { type ToolRow } from "./tools-view.js";
|
|
2
|
+
export declare function SelfHostToolsView(): import("react/jsx-runtime").JSX.Element;
|
|
3
|
+
export declare function SelfHostToolDetailView({ name }: {
|
|
4
|
+
name: string;
|
|
5
|
+
}): import("react/jsx-runtime").JSX.Element;
|
|
6
|
+
export type { ToolRow };
|
|
7
|
+
//# sourceMappingURL=self-host.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"self-host.d.ts","sourceRoot":"","sources":["../../../src/v2/tools/self-host.tsx"],"names":[],"mappings":"AAOA,OAAO,EAAa,KAAK,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAE1D,wBAAgB,iBAAiB,4CAMhC;AAED,wBAAgB,sBAAsB,CAAC,EAAE,IAAI,EAAE,EAAE;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,2CA0ChE;AAED,YAAY,EAAE,OAAO,EAAE,CAAC"}
|