UNPKG

pyb-ts

Version:

PYB-CLI - Minimal AI Agent with multi-model support and CLI interface

91 lines (90 loc) 2.92 kB
import { Box, Text } from "ink"; import * as React from "react"; import { z } from "zod"; import { FallbackToolUseRejectedMessage } from "@components/FallbackToolUseRejectedMessage"; import { getTheme } from "@utils/theme"; import { DESCRIPTION, PROMPT } from "./prompt.js"; import { OutputLine } from "@tools/BashTool/OutputLine"; const inputSchema = z.object({}).passthrough(); const MCPTool = { async isEnabled() { return true; }, isReadOnly() { return false; }, isConcurrencySafe() { return false; }, // Overridden in mcpClient.ts name: "mcp", // Overridden in mcpClient.ts async description() { return DESCRIPTION; }, // Overridden in mcpClient.ts async prompt() { return PROMPT; }, inputSchema, // Overridden in mcpClient.ts async *call() { yield { type: "result", data: "", resultForAssistant: "" }; }, needsPermissions() { return true; }, renderToolUseMessage(input) { return Object.entries(input).map(([key, value]) => `${key}: ${JSON.stringify(value)}`).join(", "); }, // Overridden in mcpClient.ts userFacingName: () => "mcp", renderToolUseRejectedMessage() { return /* @__PURE__ */ React.createElement(FallbackToolUseRejectedMessage, null); }, renderToolResultMessage(output) { const verbose = false; if (Array.isArray(output)) { return /* @__PURE__ */ React.createElement(Box, { flexDirection: "column" }, output.map((item, i) => { if (item.type === "image") { return /* @__PURE__ */ React.createElement( Box, { key: i, justifyContent: "space-between", overflowX: "hidden", width: "100%" }, /* @__PURE__ */ React.createElement(Box, { flexDirection: "row" }, /* @__PURE__ */ React.createElement(Text, null, "\xA0\xA0\uFFFD\uFFFD?\xA0"), /* @__PURE__ */ React.createElement(Text, null, "[Image]")) ); } const lines2 = item.text.split("\n").length; return /* @__PURE__ */ React.createElement( OutputLine, { key: i, content: item.text, lines: lines2, verbose } ); })); } if (!output) { return /* @__PURE__ */ React.createElement(Box, { justifyContent: "space-between", overflowX: "hidden", width: "100%" }, /* @__PURE__ */ React.createElement(Box, { flexDirection: "row" }, /* @__PURE__ */ React.createElement(Text, null, "\xA0\xA0\uFFFD\uFFFD?\xA0"), /* @__PURE__ */ React.createElement(Text, { color: getTheme().secondaryText }, "(No content)"))); } const lines = output.split("\n").length; return /* @__PURE__ */ React.createElement(OutputLine, { content: output, lines, verbose }); }, renderResultForAssistant(content) { return content; } }; export { MCPTool }; //# sourceMappingURL=MCPTool.js.map