@gguf/claw
Version:
Multi-channel AI gateway with extensible messaging integrations
119 lines (115 loc) • 4.04 kB
JavaScript
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 };