mirror of
https://github.com/getcompanion-ai/co-mono.git
synced 2026-04-16 15:02:32 +00:00
- Created javascript-repl.ts tool with SandboxedIframe for code execution - Integrated into ChatPanel replacing calculate and getCurrentTime tools - REPL provides full browser API access with external library support - Auto-registers renderer for tool output display - Uses srcdoc instead of sandbox.html (no CSP restrictions in web apps)
39 lines
1.5 KiB
TypeScript
39 lines
1.5 KiB
TypeScript
import type { TemplateResult } from "@mariozechner/mini-lit";
|
|
import type { ToolResultMessage } from "@mariozechner/pi-ai";
|
|
import { getToolRenderer, registerToolRenderer } from "./renderer-registry.js";
|
|
import { BashRenderer } from "./renderers/BashRenderer.js";
|
|
import { CalculateRenderer } from "./renderers/CalculateRenderer.js";
|
|
import { DefaultRenderer } from "./renderers/DefaultRenderer.js";
|
|
import { GetCurrentTimeRenderer } from "./renderers/GetCurrentTimeRenderer.js";
|
|
import "./javascript-repl.js"; // Auto-registers the renderer
|
|
|
|
// Register all built-in tool renderers
|
|
registerToolRenderer("calculate", new CalculateRenderer());
|
|
registerToolRenderer("get_current_time", new GetCurrentTimeRenderer());
|
|
registerToolRenderer("bash", new BashRenderer());
|
|
|
|
const defaultRenderer = new DefaultRenderer();
|
|
|
|
/**
|
|
* Render tool call parameters
|
|
*/
|
|
export function renderToolParams(toolName: string, params: any, isStreaming?: boolean): TemplateResult {
|
|
const renderer = getToolRenderer(toolName);
|
|
if (renderer) {
|
|
return renderer.renderParams(params, isStreaming);
|
|
}
|
|
return defaultRenderer.renderParams(params, isStreaming);
|
|
}
|
|
|
|
/**
|
|
* Render tool result
|
|
*/
|
|
export function renderToolResult(toolName: string, params: any, result: ToolResultMessage): TemplateResult {
|
|
const renderer = getToolRenderer(toolName);
|
|
if (renderer) {
|
|
return renderer.renderResult(params, result);
|
|
}
|
|
return defaultRenderer.renderResult(params, result);
|
|
}
|
|
|
|
export { registerToolRenderer, getToolRenderer };
|