{"version":3,"sources":["../src/tools/manage-messages.ts"],"names":["get","set","tool","z","del"],"mappings":"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","file":"chunk-FD34MTOK.cjs","sourcesContent":["/**\n * manage_messages — inspect and mutate the conversation history.\n *\n * Works on the active thread's IndexedDB store (careless-thread-{id})\n * or falls back to the default key (careless-v2-messages).\n *\n * Emits `careless:messages-changed` event so useAgent re-hydrates.\n */\nimport { tool } from '@strands-agents/sdk'\nimport { z } from 'zod'\nimport { get, set, del } from 'idb-keyval'\n\nconst DEFAULT_KEY = 'careless-v2-messages'\nconst THREADS_META_KEY = 'careless-threads-meta'\n\ninterface ThreadMeta { id: string; title: string; createdAt: number; updatedAt: number; pinned?: boolean }\n\nasync function getActiveKey(): Promise<string> {\n  try {\n    const meta = await get<{ activeId?: string; threads?: ThreadMeta[] }>(THREADS_META_KEY)\n    if (meta?.activeId) return `careless-thread-${meta.activeId}`\n  } catch { /* ignore */ }\n  return DEFAULT_KEY\n}\n\nasync function loadMessages(key: string): Promise<any[]> {\n  const m = await get<any[]>(key)\n  return Array.isArray(m) ? m : []\n}\n\nasync function saveMessages(key: string, msgs: any[]) {\n  await set(key, msgs)\n  window.dispatchEvent(new CustomEvent('careless:messages-changed', { detail: { key, count: msgs.length } }))\n}\n\nfunction previewText(msg: any, maxLen = 120): string {\n  const blocks = Array.isArray(msg.content) ? msg.content : [{ text: String(msg.content || '') }]\n  const parts: string[] = []\n  for (const b of blocks) {\n    if (b.text) parts.push(b.text)\n    else if (b.toolUse) parts.push(`[toolUse:${b.toolUse.name}#${(b.toolUse.toolUseId || '').slice(0, 8)}]`)\n    else if (b.toolResult) parts.push(`[toolResult#${(b.toolResult.toolUseId || '').slice(0, 8)}]`)\n    else if (b.image) parts.push('[image]')\n    else if (b.document) parts.push(`[document:${b.document.name || '?'}]`)\n  }\n  const joined = parts.join(' ')\n  return joined.length > maxLen ? joined.slice(0, maxLen) + '…' : joined\n}\n\n/** Returns {set, error} — error is non-null if range inputs are invalid. */\nfunction parseTurnIndices(turns: string | undefined, start: number | undefined, end: number | undefined, total: number): { set: Set<number>; error: string | null } {\n  const set = new Set<number>()\n  // Validate range before building\n  if (typeof start === 'number' && typeof end === 'number' && start > end) {\n    return { set, error: `invalid range: start (${start}) > end (${end})` }\n  }\n  if (typeof start === 'number' && start < 0) {\n    return { set, error: `start must be >= 0 (got ${start})` }\n  }\n  if (turns) {\n    for (const t of turns.split(',').map(s => s.trim()).filter(Boolean)) {\n      const n = parseInt(t, 10)\n      if (isNaN(n)) return { set, error: `invalid turn index: \"${t}\"` }\n      if (n < 0 || n >= total) return { set, error: `turn ${n} out of range [0, ${total})` }\n      set.add(n)\n    }\n  }\n  if (typeof start === 'number') {\n    const e = typeof end === 'number' ? end : start + 1\n    for (let i = Math.max(0, start); i < Math.min(total, e); i++) set.add(i)\n  }\n  return { set, error: null }\n}\n\n/** Strip tool blocks in a single message; keep text-only content. Returns {msg, removed}. */\nfunction compactMessage(msg: any): { msg: any; removed: number } {\n  const blocks = Array.isArray(msg.content) ? msg.content : [{ text: String(msg.content || '') }]\n  const keep = blocks.filter((b: any) => b.text || b.image || b.document)\n  const removed = blocks.length - keep.length\n  return { msg: { ...msg, content: keep.length ? keep : [{ text: '' }] }, removed }\n}\n\n/** Drop orphan toolUse/toolResult pairs so the conversation stays valid. */\nfunction pruneOrphanTools(msgs: any[]): any[] {\n  const toolUseIds = new Set<string>()\n  const toolResultIds = new Set<string>()\n  for (const m of msgs) {\n    const blocks = Array.isArray(m.content) ? m.content : []\n    for (const b of blocks) {\n      if (b.toolUse?.toolUseId) toolUseIds.add(b.toolUse.toolUseId)\n      if (b.toolResult?.toolUseId) toolResultIds.add(b.toolResult.toolUseId)\n    }\n  }\n  return msgs.map(m => {\n    const blocks = Array.isArray(m.content) ? m.content : []\n    const kept = blocks.filter((b: any) => {\n      if (b.toolUse) return toolResultIds.has(b.toolUse.toolUseId)\n      if (b.toolResult) return toolUseIds.has(b.toolResult.toolUseId)\n      return true\n    })\n    // Only keep message if it has meaningful content (non-empty text or any tool/media)\n    return { ...m, content: kept.length ? kept : [] }\n  }).filter(m => {\n    if (!Array.isArray(m.content) || m.content.length === 0) return false\n    return m.content.some((b: any) =>\n      (b.text && String(b.text).length > 0) ||\n      b.toolUse || b.toolResult || b.image || b.document\n    )\n  })\n}\n\nexport const manageMessagesTool = tool({\n  name: 'manage_messages',\n  description:\n    'Inspect & modify the active thread\\'s conversation history (agent.messages). ' +\n    'Actions: list | list_tools | stats | drop | drop_tools | compact | clear | export | import. ' +\n    'Mutating actions fire a reload event so the agent hydrates fresh state.',\n  inputSchema: z.object({\n    action: z.enum(['list', 'list_tools', 'stats', 'drop', 'drop_tools', 'compact', 'clear', 'export', 'import']),\n    role: z.enum(['user', 'assistant']).optional().describe('Filter for list action'),\n    turns: z.string().optional().describe('Comma-separated turn indices (e.g. \"0,2,5\") for drop/compact'),\n    start: z.number().int().optional().describe('Range start (inclusive) for drop/compact'),\n    end: z.number().int().optional().describe('Range end (exclusive) for drop/compact'),\n    tool_ids: z.string().optional().describe('Comma-separated toolUseIds for drop_tools'),\n    tool_name: z.string().optional().describe('Drop all calls to this tool name (comma-separated for multiple)'),\n    limit: z.number().int().optional().describe('Max items for list (must be > 0, default 50)'),\n    summary_len: z.number().int().optional().describe('Preview length for list (default 120)'),\n    json: z.string().optional().describe('JSON-stringified message array for import'),\n    thread_key: z.string().optional().describe('Override IDB key (default: active thread)'),\n  }),\n  callback: async (input) => {\n    try {\n      const key = input.thread_key || (await getActiveKey())\n      const msgs = await loadMessages(key)\n      const total = msgs.length\n\n      if (input.action === 'list') {\n        if (input.limit !== undefined && input.limit <= 0) {\n          return JSON.stringify({ status: 'error', error: `limit must be > 0 (got ${input.limit})` })\n        }\n        const maxLen = input.summary_len ?? 120\n        const limit = input.limit ?? 50\n        let rows = msgs.map((m, i) => ({ i, role: m.role, preview: previewText(m, maxLen) }))\n        if (input.role) rows = rows.filter(r => r.role === input.role)\n        rows = rows.slice(-limit)\n        return JSON.stringify({ status: 'success', key, total, shown: rows.length, messages: rows })\n      }\n\n      if (input.action === 'list_tools') {\n        if (input.limit !== undefined && input.limit <= 0) {\n          return JSON.stringify({ status: 'error', error: `limit must be > 0 (got ${input.limit})` })\n        }\n        const calls: any[] = []\n        msgs.forEach((m, i) => {\n          const blocks = Array.isArray(m.content) ? m.content : []\n          for (const b of blocks) {\n            if (b.toolUse) calls.push({ turn: i, role: m.role, kind: 'toolUse', name: b.toolUse.name, id: b.toolUse.toolUseId, input: b.toolUse.input })\n            if (b.toolResult) calls.push({ turn: i, role: m.role, kind: 'toolResult', id: b.toolResult.toolUseId, status: b.toolResult.status })\n          }\n        })\n        return JSON.stringify({ status: 'success', key, count: calls.length, tools: calls.slice(-(input.limit ?? 100)) })\n      }\n\n      if (input.action === 'stats') {\n        let user = 0, asst = 0, tUse = 0, tRes = 0, chars = 0, imgs = 0, docs = 0\n        for (const m of msgs) {\n          if (m.role === 'user') user++; else asst++\n          const blocks = Array.isArray(m.content) ? m.content : []\n          for (const b of blocks) {\n            if (b.text) chars += String(b.text).length\n            if (b.toolUse) tUse++\n            if (b.toolResult) tRes++\n            if (b.image) imgs++\n            if (b.document) docs++\n          }\n        }\n        const approxTokens = Math.ceil(chars / 4)\n        return JSON.stringify({\n          status: 'success', key, total,\n          user, assistant: asst, tool_uses: tUse, tool_results: tRes,\n          images: imgs, documents: docs, chars, approx_tokens: approxTokens,\n        })\n      }\n\n      if (input.action === 'drop') {\n        const { set: drop, error } = parseTurnIndices(input.turns, input.start, input.end, total)\n        if (error) return JSON.stringify({ status: 'error', error })\n        if (!drop.size) return JSON.stringify({ status: 'error', error: 'No valid turns to drop (specify turns, or start+end)' })\n        let next = msgs.filter((_, i) => !drop.has(i))\n        const beforePrune = next.length\n        next = pruneOrphanTools(next)\n        const orphans_pruned = beforePrune - next.length\n        await saveMessages(key, next)\n        return JSON.stringify({\n          status: 'success',\n          dropped: drop.size,\n          orphans_pruned,\n          before: total, after: next.length,\n        })\n      }\n\n      if (input.action === 'drop_tools') {\n        const ids = new Set((input.tool_ids || '').split(',').map(s => s.trim()).filter(Boolean))\n        const names = new Set((input.tool_name || '').split(',').map(s => s.trim()).filter(Boolean))\n        if (!ids.size && !names.size) return JSON.stringify({ status: 'error', error: 'Provide tool_ids or tool_name' })\n\n        // First pass: identify toolUseIds to drop (by name OR explicit id match)\n        const dropIds = new Set<string>(ids)\n        if (names.size) {\n          for (const m of msgs) {\n            const blocks = Array.isArray(m.content) ? m.content : []\n            for (const b of blocks) {\n              if (b.toolUse && names.has(b.toolUse.name) && b.toolUse.toolUseId) {\n                dropIds.add(b.toolUse.toolUseId)\n              }\n            }\n          }\n        }\n\n        // Second pass: drop toolUse AND matching toolResult by id\n        let removed = 0\n        const next = msgs.map(m => {\n          const blocks = Array.isArray(m.content) ? m.content : []\n          const kept = blocks.filter((b: any) => {\n            if (b.toolUse?.toolUseId && dropIds.has(b.toolUse.toolUseId)) { removed++; return false }\n            if (b.toolResult?.toolUseId && dropIds.has(b.toolResult.toolUseId)) { removed++; return false }\n            return true\n          })\n          return { ...m, content: kept }\n        })\n\n        // Only now prune orphans (shouldn't exist since we matched pairs by id)\n        const pruned = pruneOrphanTools(next)\n        await saveMessages(key, pruned)\n        return JSON.stringify({\n          status: 'success',\n          removed,\n          dropped_ids: [...dropIds],\n          before: total,\n          after: pruned.length,\n        })\n      }\n\n      if (input.action === 'compact') {\n        const { set: drop, error } = parseTurnIndices(input.turns, input.start, input.end, total)\n        if (error) return JSON.stringify({ status: 'error', error })\n        // If no turns/range specified → auto-compact all but last 3 turns\n        const applyAll = drop.size === 0\n        const keepLast = 3\n        let touched = 0\n        let blocks_removed = 0\n        const next = msgs.map((m, i) => {\n          const shouldCompact = applyAll ? i < total - keepLast : drop.has(i)\n          if (!shouldCompact) return m\n          const { msg, removed } = compactMessage(m)\n          if (removed > 0) {\n            touched++\n            blocks_removed += removed\n          }\n          return msg\n        })\n        await saveMessages(key, next)\n        return JSON.stringify({\n          status: 'success',\n          requested: applyAll ? Math.max(0, total - keepLast) : drop.size,\n          touched,           // messages that actually had tool blocks stripped\n          blocks_removed,    // number of toolUse/toolResult blocks removed\n          total: next.length,\n          note: touched === 0 ? 'no tool/image/doc blocks to strip in selected range (text-only compact is a no-op)' : undefined,\n        })\n      }\n\n      if (input.action === 'clear') {\n        await del(key)\n        window.dispatchEvent(new CustomEvent('careless:messages-changed', { detail: { key, count: 0 } }))\n        return JSON.stringify({ status: 'success', cleared: total, key })\n      }\n\n      if (input.action === 'export') {\n        return JSON.stringify({ status: 'success', key, count: total, messages: msgs })\n      }\n\n      if (input.action === 'import') {\n        if (!input.json) return JSON.stringify({ status: 'error', error: 'json parameter required' })\n        let parsed: any\n        try { parsed = JSON.parse(input.json) } catch (e: unknown) {\n          return JSON.stringify({ status: 'error', error: `Parse: ${(e as Error).message}` })\n        }\n        const arr = Array.isArray(parsed) ? parsed : (Array.isArray(parsed?.messages) ? parsed.messages : null)\n        if (!arr) return JSON.stringify({ status: 'error', error: 'json must be an array or {messages: []}' })\n        // Validate each entry has role + content\n        for (let i = 0; i < arr.length; i++) {\n          const m = arr[i]\n          if (!m || typeof m !== 'object') return JSON.stringify({ status: 'error', error: `message ${i}: not an object` })\n          if (!m.role) return JSON.stringify({ status: 'error', error: `message ${i}: missing role` })\n          if (m.content === undefined) return JSON.stringify({ status: 'error', error: `message ${i}: missing content` })\n        }\n        await saveMessages(key, arr)\n        return JSON.stringify({ status: 'success', imported: arr.length, replaced: total, key })\n      }\n\n      return JSON.stringify({ status: 'error', error: 'unknown action' })\n    } catch (err: unknown) {\n      return JSON.stringify({ status: 'error', error: (err as Error).message })\n    }\n  },\n})\n\nexport const MANAGE_MESSAGES_TOOLS = [manageMessagesTool]\n"]}