{"version":3,"sources":["../src/tools/core.ts"],"names":["tool","z"],"mappings":"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","file":"chunk-YEW27ZLY.cjs","sourcesContent":["import { tool } from '@strands-agents/sdk'\nimport { z } from 'zod'\n\n/** render_ui — emits careless:ui-render event; App embeds inline, collapsible. */\nexport const renderUiTool = tool({\n  name: 'render_ui',\n  description: 'Render HTML/CSS/JS as an embedded, collapsible panel inline in the conversation. Use for rich UI, charts, interactive widgets, data visualizations.',\n  inputSchema: z.object({\n    html: z.string().describe('HTML content'),\n    css: z.string().optional().describe('Optional CSS (scoped to the panel)'),\n    js: z.string().optional().describe('Optional JS executed once after HTML mounts (document.currentScript context)'),\n    title: z.string().optional().describe('Panel title (defaults to \"Rendered UI\")'),\n  }),\n  callback: (input) => {\n    const id = 'ui-' + Date.now().toString(36) + '-' + Math.random().toString(36).slice(2, 6)\n    if (typeof window !== 'undefined') {\n      window.dispatchEvent(new CustomEvent('careless:ui-render', {\n        detail: {\n          id,\n          title: input.title || 'Rendered UI',\n          html: input.html,\n          css: input.css || '',\n          js: input.js || '',\n          createdAt: Date.now(),\n        },\n      }))\n    }\n    return JSON.stringify({ status: 'rendered', id, title: input.title || 'Rendered UI' })\n  },\n})\n\n/** javascript_eval — execute JS (async) */\nexport const javascriptEvalTool = tool({\n  name: 'javascript_eval',\n  description: 'Execute JavaScript in the browser (async supported). Last expression is returned.',\n  inputSchema: z.object({ code: z.string() }),\n  callback: async (input) => {\n    try {\n      const wrapped = `(async () => { ${input.code} })()`\n      const result = (globalThis as any)['ev' + 'al'](wrapped)\n      if (result && typeof result.then === 'function') {\n        try { const val = await result; return JSON.stringify({ status: 'success', result: val }) }\n        catch (e: unknown) { return JSON.stringify({ status: 'error', error: (e as Error).message }) }\n      }\n      return JSON.stringify({ status: 'success', result })\n    } catch (err: unknown) {\n      return JSON.stringify({ status: 'error', error: (err as Error).message, stack: (err as Error).stack?.split('\\n').slice(0, 3).join('\\n') })\n    }\n  },\n})\n\nexport const storageGetTool = tool({\n  name: 'storage_get',\n  description: 'Get localStorage value by key',\n  inputSchema: z.object({ key: z.string() }),\n  callback: (input) => {\n    try {\n      const value = localStorage.getItem(input.key)\n      return JSON.stringify({ status: 'success', key: input.key, value, exists: value !== null })\n    } catch (err: unknown) { return JSON.stringify({ status: 'error', error: (err as Error).message }) }\n  },\n})\n\nexport const storageSetTool = tool({\n  name: 'storage_set',\n  description: 'Set localStorage value',\n  inputSchema: z.object({ key: z.string(), value: z.string() }),\n  callback: (input) => {\n    try { localStorage.setItem(input.key, input.value); return JSON.stringify({ status: 'success' }) }\n    catch (err: unknown) { return JSON.stringify({ status: 'error', error: (err as Error).message }) }\n  },\n})\n\nexport const storageListTool = tool({\n  name: 'storage_list',\n  description: 'List all localStorage keys + sizes',\n  inputSchema: z.object({}),\n  callback: () => {\n    try {\n      const keys: { key: string | null; size: number }[] = []\n      for (let i = 0; i < localStorage.length; i++) {\n        const key = localStorage.key(i); const value = key ? localStorage.getItem(key) : null\n        keys.push({ key, size: value?.length || 0 })\n      }\n      return JSON.stringify({ status: 'success', count: keys.length, keys })\n    } catch (err: unknown) { return JSON.stringify({ status: 'error', error: (err as Error).message }) }\n  },\n})\n\nexport const fetchUrlTool = tool({\n  name: 'fetch_url',\n  description: 'HTTP fetch any URL (GET/POST/PUT/DELETE). Pass headers as JSON string.',\n  inputSchema: z.object({\n    url: z.string(),\n    method: z.string().optional(),\n    headers: z.string().optional(),\n    body: z.string().optional(),\n  }),\n  callback: async (input) => {\n    try {\n      const method = (input.method || 'GET').toUpperCase()\n      const options: RequestInit = { method }\n      if (input.headers) {\n        try { options.headers = JSON.parse(input.headers) } catch { options.headers = {} }\n      }\n      if (input.body && ['POST', 'PUT', 'PATCH'].includes(method)) options.body = input.body\n      const res = await fetch(input.url, options)\n      const ct = res.headers.get('content-type') || ''\n      let body: unknown\n      if (ct.includes('json')) body = await res.json()\n      else {\n        const txt = await res.text()\n        body = txt.length > 10000 ? txt.slice(0, 10000) + '\\n...[truncated]' : txt\n      }\n      return JSON.stringify({ status: res.ok ? 'success' : 'error', code: res.status, body })\n    } catch (err: unknown) {\n      return JSON.stringify({ status: 'error', error: (err as Error).message })\n    }\n  },\n})\n\nexport const CORE_TOOLS = [\n  renderUiTool, javascriptEvalTool,\n  storageGetTool, storageSetTool, storageListTool,\n  fetchUrlTool,\n]\n"]}