UNPKG

@gguf/claw

Version:

Multi-channel AI gateway with extensible messaging integrations

119 lines (115 loc) 4.04 kB
import "./paths-CyR9Pa1R.js"; import "./registry-BmY4gNy6.js"; import { c as resolveDefaultAgentId, r as resolveAgentDir, s as resolveAgentWorkspaceDir } from "./agent-scope-BLYwrEEA.js"; import "./subsystem-B5g771Td.js"; import "./workspace-D9IzNnST.js"; import "./tokens-BRx7o_ZS.js"; import { t as runEmbeddedPiAgent } from "./pi-embedded-BDHP7G3o.js"; import "./normalize-DZvZ0Eiv.js"; import "./accounts-D7irbKbS.js"; import "./boolean-B8-BqKGQ.js"; import "./command-format-Ck2WauwF.js"; import "./bindings-DWtXcdc8.js"; import "./send-CbPQXDCf.js"; import "./plugins-CJYXNO4s.js"; import "./send-VMzh7zM1.js"; import "./deliver-C5sD6Dv0.js"; import "./diagnostic-CoT2YQH4.js"; import "./diagnostic-session-state-DmrztgHU.js"; import "./accounts-DSVHyeYh.js"; import "./send-xJGV2Pmu.js"; import "./fs-safe-B8-WkEXM.js"; import "./model-auth-BPNt9bHS.js"; import "./github-copilot-token-BQ98eazZ.js"; import "./pi-model-discovery-C-yOXpma.js"; import "./message-channel-BDlvrUZF.js"; import "./pi-embedded-helpers-BfjCe8vu.js"; import "./config-C0k_b9gg.js"; import "./manifest-registry-Dovhiqzt.js"; import "./common-y9ALHdVZ.js"; import "./chrome-DVeI6N8j.js"; import "./frontmatter-BT4H5SZG.js"; import "./skills-Ci_2Mah4.js"; import "./redact-BBbIZgau.js"; import "./errors-3KjSwJLH.js"; import "./ssrf-B8OrDkCk.js"; import "./store-Be0QxLPZ.js"; import "./thinking-Bfk6_7EU.js"; import "./accounts-C5646aU0.js"; import "./paths-gnW-md4M.js"; import "./image-Do9rxbj3.js"; import "./reply-prefix-BaCBHwi7.js"; import "./manager-D7zJM2Ly.js"; import "./gemini-auth-DkBnXstb.js"; import "./sqlite-DJh2xLr6.js"; import "./retry-BxB_D6Pn.js"; import "./chunk-TRVny4T1.js"; import "./markdown-tables-DO9qAEKa.js"; import "./local-roots-tMzVEQD2.js"; import "./ir-CRTCIHIG.js"; import "./render-CDCvpfhh.js"; import "./commands-registry-DqNdrksb.js"; import "./skill-commands-pI2wkJrZ.js"; import "./runner-CLSBcNny.js"; import "./fetch-DtI0mtzx.js"; import "./send-hD-4IHpX.js"; import "./outbound-attachment-BChLBLPg.js"; import "./send-Cm_4TZEY.js"; import "./resolve-route-ClURVRZM.js"; import "./channel-activity-LT3oBvO7.js"; import "./tables-xDr7OSBa.js"; import "./proxy-CBJ1upuz.js"; import "./replies-BMmKlXtC.js"; import fs from "node:fs/promises"; import os from "node:os"; import path from "node:path"; //#region src/hooks/llm-slug-generator.ts /** * LLM-based slug generator for session memory filenames */ /** * Generate a short 1-2 word filename slug from session content using LLM */ async function generateSlugViaLLM(params) { let tempSessionFile = null; try { const agentId = resolveDefaultAgentId(params.cfg); const workspaceDir = resolveAgentWorkspaceDir(params.cfg, agentId); const agentDir = resolveAgentDir(params.cfg, agentId); const tempDir = await fs.mkdtemp(path.join(os.tmpdir(), "openclaw-slug-")); tempSessionFile = path.join(tempDir, "session.jsonl"); const prompt = `Based on this conversation, generate a short 1-2 word filename slug (lowercase, hyphen-separated, no file extension). Conversation summary: ${params.sessionContent.slice(0, 2e3)} Reply with ONLY the slug, nothing else. Examples: "vendor-pitch", "api-design", "bug-fix"`; const result = await runEmbeddedPiAgent({ sessionId: `slug-generator-${Date.now()}`, sessionKey: "temp:slug-generator", agentId, sessionFile: tempSessionFile, workspaceDir, agentDir, config: params.cfg, prompt, timeoutMs: 15e3, runId: `slug-gen-${Date.now()}` }); if (result.payloads && result.payloads.length > 0) { const text = result.payloads[0]?.text; if (text) return text.trim().toLowerCase().replace(/[^a-z0-9-]/g, "-").replace(/-+/g, "-").replace(/^-|-$/g, "").slice(0, 30) || null; } return null; } catch (err) { console.error("[llm-slug-generator] Failed to generate slug:", err); return null; } finally { if (tempSessionFile) try { await fs.rm(path.dirname(tempSessionFile), { recursive: true, force: true }); } catch {} } } //#endregion export { generateSlugViaLLM };