pi-mega-compact 0.13.1 → 0.13.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/extensions/dashboard-server/api-contracts/embedder-health.js +11 -0
- package/dist/extensions/dashboard-server/api-contracts/endpoints/registry.js +225 -0
- package/dist/extensions/dashboard-server/api-contracts/endpoints/types.js +1 -0
- package/dist/extensions/dashboard-server/api-contracts/endpoints.js +5 -224
- package/dist/extensions/dashboard-server/api-contracts/raptor.js +8 -0
- package/dist/extensions/dashboard-server/api-contracts.test/_helpers.js +32 -0
- package/dist/extensions/dashboard-server/routes-cache.test/_helpers.js +48 -0
- package/dist/extensions/dashboard-server/routes-embedder-health.js +67 -0
- package/dist/extensions/dashboard-server/routes-raptor.js +88 -0
- package/dist/extensions/dashboard-server/routes-setup.js +1 -1
- package/dist/extensions/dashboard-server/routes.js +2 -0
- package/dist/extensions/dashboard-server/server.js +5 -1
- package/dist/extensions/mega-cache-replay.test/_helpers.js +175 -0
- package/dist/extensions/mega-commands/dataCommands.js +151 -0
- package/dist/extensions/mega-commands/helpers.js +61 -0
- package/dist/extensions/mega-commands/historyCommands.js +97 -0
- package/dist/extensions/mega-commands/setupCommand.js +200 -0
- package/dist/extensions/mega-commands.js +14 -499
- package/dist/extensions/mega-compact-s38.test/_helpers.js +194 -0
- package/dist/extensions/mega-compact.test/_helpers.js +225 -0
- package/dist/extensions/mega-events/agent-handlers/agentEndHandler.js +211 -0
- package/dist/extensions/mega-events/agent-handlers/turnEndHandler/cacheStripe.js +49 -0
- package/dist/extensions/mega-events/agent-handlers/turnEndHandler/contextHealth.js +33 -0
- package/dist/extensions/mega-events/agent-handlers/turnEndHandler/errorRetry.js +387 -0
- package/dist/extensions/mega-events/agent-handlers/turnEndHandler/event.js +7 -0
- package/dist/extensions/mega-events/agent-handlers/turnEndHandler/gameScoring.js +55 -0
- package/dist/extensions/mega-events/agent-handlers/turnEndHandler/lengthStop.js +12 -0
- package/dist/extensions/mega-events/agent-handlers/turnEndHandler/memoryReview.js +22 -0
- package/dist/extensions/mega-events/agent-handlers/turnEndHandler/recordTurnRow.js +38 -0
- package/dist/extensions/mega-events/agent-handlers/turnEndHandler.js +36 -0
- package/dist/extensions/mega-events/agent-handlers.js +4 -799
- package/dist/extensions/mega-events/context-handler/afterCompact.js +163 -0
- package/dist/extensions/mega-events/context-handler/messageText.js +12 -0
- package/dist/extensions/mega-events/context-handler/tailResult.js +46 -0
- package/dist/extensions/mega-events/context-handler.js +11 -198
- package/dist/extensions/mega-events/separated-prompt.test/_helpers.js +25 -0
- package/dist/src/config.js +2 -0
- package/dist/src/dedup-engine.test/_helpers.js +55 -0
- package/dist/src/e2e.test/_helpers.js +52 -0
- package/dist/src/embedder.js +1 -0
- package/dist/src/httpEmbedder.js +6 -0
- package/dist/src/hyde.js +146 -0
- package/dist/src/importance.test/_helpers.js +5 -0
- package/dist/src/memoryGraph/sources/checkpoints.js +78 -0
- package/dist/src/memoryGraph/sources/edges.js +17 -0
- package/dist/src/memoryGraph/sources/flags.js +22 -0
- package/dist/src/memoryGraph/sources/helpers.js +14 -0
- package/dist/src/memoryGraph/sources/memories.js +88 -0
- package/dist/src/memoryGraph/sources/raptor.js +26 -0
- package/dist/src/memoryGraph/sources/turns.js +176 -0
- package/dist/src/memoryGraph/sources.js +15 -441
- package/dist/src/memoryGraph-gates.test/_helpers.js +120 -0
- package/dist/src/ratio.bench.test/_helpers.js +198 -0
- package/dist/src/recall/async.js +112 -0
- package/dist/src/recall/format.js +149 -0
- package/dist/src/recall/memory.js +62 -0
- package/dist/src/recall/reformulate.js +82 -0
- package/dist/src/recall/sync.js +169 -0
- package/dist/src/recall/types.js +1 -0
- package/dist/src/recall.js +13 -530
- package/dist/src/store/sqlite/schema/core.js +232 -0
- package/dist/src/store/sqlite/schema/game.js +65 -0
- package/dist/src/store/sqlite/schema/plan-v2.js +107 -0
- package/dist/src/store/sqlite/schema/turns.js +59 -0
- package/dist/src/store/sqlite/schema.js +8 -441
- package/dist/src/store/turns/contract-compliance.test/_helpers.js +21 -0
- package/dist/src/store/turns/sqlite-store/admin.js +171 -0
- package/dist/src/store/turns/sqlite-store/ctx.js +1 -0
- package/dist/src/store/turns/sqlite-store/read.js +111 -0
- package/dist/src/store/turns/sqlite-store/rows.js +42 -0
- package/dist/src/store/turns/sqlite-store/write.js +102 -0
- package/dist/src/store/turns/sqlite-store.js +31 -367
- package/dist/src/vectorStore/class.js +356 -0
- package/dist/src/vectorStore/hash.js +10 -0
- package/dist/src/vectorStore/types.js +2 -0
- package/dist/src/vectorStore.js +8 -359
- package/dist/src/vectorStore.test/_helpers.js +17 -0
- package/extensions/dashboard-client/dist/assets/{CacheTab-8HRroK9K.js → CacheTab-DPRHjYZ0.js} +2 -2
- package/extensions/dashboard-client/dist/assets/{CacheTab-8HRroK9K.js.map → CacheTab-DPRHjYZ0.js.map} +1 -1
- package/extensions/dashboard-client/dist/assets/{EventsTab-ncobZw-I.js → EventsTab-CgwYq-Qf.js} +2 -2
- package/extensions/dashboard-client/dist/assets/{EventsTab-ncobZw-I.js.map → EventsTab-CgwYq-Qf.js.map} +1 -1
- package/extensions/dashboard-client/dist/assets/{HealthTab-C6BI1EZG.js → HealthTab-BgOCjVzR.js} +2 -2
- package/extensions/dashboard-client/dist/assets/{HealthTab-C6BI1EZG.js.map → HealthTab-BgOCjVzR.js.map} +1 -1
- package/extensions/dashboard-client/dist/assets/MaintenanceTab-Yw1yFpsy.js +2 -0
- package/extensions/dashboard-client/dist/assets/MaintenanceTab-Yw1yFpsy.js.map +1 -0
- package/extensions/dashboard-client/dist/assets/MemoryMapTab-yHUX7Yzi.js +2 -0
- package/extensions/dashboard-client/dist/assets/MemoryMapTab-yHUX7Yzi.js.map +1 -0
- package/extensions/dashboard-client/dist/assets/{MetricsTab-B88XTCMk.js → MetricsTab-CcH9fP8P.js} +2 -2
- package/extensions/dashboard-client/dist/assets/{MetricsTab-B88XTCMk.js.map → MetricsTab-CcH9fP8P.js.map} +1 -1
- package/extensions/dashboard-client/dist/assets/{OverviewTab-CGZrSia-.js → OverviewTab-BOs8ZNev.js} +2 -2
- package/extensions/dashboard-client/dist/assets/{OverviewTab-CGZrSia-.js.map → OverviewTab-BOs8ZNev.js.map} +1 -1
- package/extensions/dashboard-client/dist/assets/{ReposTab-BZo5cNS1.js → ReposTab-B-MfSPvg.js} +2 -2
- package/extensions/dashboard-client/dist/assets/{ReposTab-BZo5cNS1.js.map → ReposTab-B-MfSPvg.js.map} +1 -1
- package/extensions/dashboard-client/dist/assets/{SessionsTab-C2RokJcw.js → SessionsTab-BmeN649Q.js} +2 -2
- package/extensions/dashboard-client/dist/assets/{SessionsTab-C2RokJcw.js.map → SessionsTab-BmeN649Q.js.map} +1 -1
- package/extensions/dashboard-client/dist/assets/SetupTab-nOknoph5.js +2 -0
- package/extensions/dashboard-client/dist/assets/SetupTab-nOknoph5.js.map +1 -0
- package/extensions/dashboard-client/dist/assets/{TimeSavedCard-CewYB2aA.js → TimeSavedCard-DnPg0L0z.js} +2 -2
- package/extensions/dashboard-client/dist/assets/{TimeSavedCard-CewYB2aA.js.map → TimeSavedCard-DnPg0L0z.js.map} +1 -1
- package/extensions/dashboard-client/dist/assets/{TopicsTab-DpVNIuaL.js → TopicsTab-BODHOg_b.js} +2 -2
- package/extensions/dashboard-client/dist/assets/{TopicsTab-DpVNIuaL.js.map → TopicsTab-BODHOg_b.js.map} +1 -1
- package/extensions/dashboard-client/dist/assets/{TurnsTab-KeuKKVC9.js → TurnsTab-BK0I7hKr.js} +2 -2
- package/extensions/dashboard-client/dist/assets/{TurnsTab-KeuKKVC9.js.map → TurnsTab-BK0I7hKr.js.map} +1 -1
- package/extensions/dashboard-client/dist/assets/{index-Cucgohga.js → index-mOlljTFI.js} +9 -9
- package/extensions/dashboard-client/dist/assets/index-mOlljTFI.js.map +1 -0
- package/extensions/dashboard-client/dist/assets/{useSSE-DJsqdPXC.js → useSSE-BYOtv1-3.js} +2 -2
- package/extensions/dashboard-client/dist/assets/{useSSE-DJsqdPXC.js.map → useSSE-BYOtv1-3.js.map} +1 -1
- package/extensions/dashboard-client/dist/index.html +1 -1
- package/extensions/dashboard-client/src/api/client.ts +16 -0
- package/extensions/dashboard-client/src/tabs/MaintenanceTab/ActionsCard.tsx +178 -0
- package/extensions/dashboard-client/src/tabs/MaintenanceTab/DbStatsCard.tsx +140 -0
- package/extensions/dashboard-client/src/tabs/MaintenanceTab/DebugBundleCard.tsx +109 -0
- package/extensions/dashboard-client/src/tabs/MaintenanceTab/HealthMitigationCard.tsx +98 -0
- package/extensions/dashboard-client/src/tabs/MaintenanceTab/SchemaHealthCard.tsx +108 -0
- package/extensions/dashboard-client/src/tabs/MaintenanceTab.tsx +12 -598
- package/extensions/dashboard-client/src/tabs/MemoryMapTab/MemoryMapView.tsx +476 -0
- package/extensions/dashboard-client/src/tabs/MemoryMapTab/RaptorTreeView.tsx +163 -0
- package/extensions/dashboard-client/src/tabs/MemoryMapTab.tsx +56 -466
- package/extensions/dashboard-client/src/tabs/SetupTab/EmbedderHealthCard.tsx +109 -0
- package/extensions/dashboard-client/src/tabs/SetupTab/EmbedderSetup.tsx +468 -0
- package/extensions/dashboard-client/src/tabs/SetupTab.tsx +13 -483
- package/extensions/dashboard-server/api-contracts/embedder-health.ts +32 -0
- package/extensions/dashboard-server/api-contracts/endpoints/registry.ts +360 -0
- package/extensions/dashboard-server/api-contracts/endpoints/types.ts +350 -0
- package/extensions/dashboard-server/api-contracts/endpoints.ts +27 -648
- package/extensions/dashboard-server/api-contracts/index.ts +6 -0
- package/extensions/dashboard-server/api-contracts/raptor.ts +49 -0
- package/extensions/dashboard-server/api-contracts.test/_helpers.ts +47 -0
- package/extensions/dashboard-server/routes-cache.test/_helpers.ts +94 -0
- package/extensions/dashboard-server/routes-embedder-health.ts +77 -0
- package/extensions/dashboard-server/routes-raptor.ts +128 -0
- package/extensions/dashboard-server/routes-setup.ts +1 -1
- package/extensions/dashboard-server/routes.ts +2 -0
- package/extensions/dashboard-server/server.ts +4 -0
- package/extensions/mega-cache-replay.test/_helpers.ts +188 -0
- package/extensions/mega-commands/dataCommands.ts +169 -0
- package/extensions/mega-commands/helpers.ts +62 -0
- package/extensions/mega-commands/historyCommands.ts +117 -0
- package/extensions/mega-commands/setupCommand.ts +235 -0
- package/extensions/mega-commands.ts +25 -538
- package/extensions/mega-compact-s38.test/_helpers.ts +201 -0
- package/extensions/mega-compact.test/_helpers.ts +237 -0
- package/extensions/mega-events/agent-handlers/agentEndHandler.ts +238 -0
- package/extensions/mega-events/agent-handlers/turnEndHandler/cacheStripe.ts +74 -0
- package/extensions/mega-events/agent-handlers/turnEndHandler/contextHealth.ts +50 -0
- package/extensions/mega-events/agent-handlers/turnEndHandler/errorRetry.ts +421 -0
- package/extensions/mega-events/agent-handlers/turnEndHandler/event.ts +16 -0
- package/extensions/mega-events/agent-handlers/turnEndHandler/gameScoring.ts +73 -0
- package/extensions/mega-events/agent-handlers/turnEndHandler/lengthStop.ts +29 -0
- package/extensions/mega-events/agent-handlers/turnEndHandler/memoryReview.ts +42 -0
- package/extensions/mega-events/agent-handlers/turnEndHandler/recordTurnRow.ts +61 -0
- package/extensions/mega-events/agent-handlers/turnEndHandler.ts +64 -0
- package/extensions/mega-events/agent-handlers.ts +15 -861
- package/extensions/mega-events/context-handler/afterCompact.ts +213 -0
- package/extensions/mega-events/context-handler/messageText.ts +20 -0
- package/extensions/mega-events/context-handler/tailResult.ts +63 -0
- package/extensions/mega-events/context-handler.ts +17 -235
- package/extensions/mega-events/separated-prompt.test/_helpers.ts +35 -0
- package/package.json +1 -1
- package/src/config.ts +4 -0
- package/src/dedup-engine.test/_helpers.ts +79 -0
- package/src/e2e.test/_helpers.ts +59 -0
- package/src/embedder.ts +4 -0
- package/src/httpEmbedder.ts +7 -0
- package/src/hyde.ts +162 -0
- package/src/importance.test/_helpers.ts +5 -0
- package/src/memoryGraph/sources/checkpoints.ts +99 -0
- package/src/memoryGraph/sources/edges.ts +23 -0
- package/src/memoryGraph/sources/flags.ts +26 -0
- package/src/memoryGraph/sources/helpers.ts +13 -0
- package/src/memoryGraph/sources/memories.ts +108 -0
- package/src/memoryGraph/sources/raptor.ts +37 -0
- package/src/memoryGraph/sources/turns.ts +226 -0
- package/src/memoryGraph/sources.ts +19 -544
- package/src/memoryGraph-gates.test/_helpers.ts +164 -0
- package/src/ratio.bench.test/_helpers.ts +268 -0
- package/src/recall/async.ts +142 -0
- package/src/recall/format.ts +173 -0
- package/src/recall/memory.ts +90 -0
- package/src/recall/reformulate.ts +111 -0
- package/src/recall/sync.ts +196 -0
- package/src/recall/types.ts +63 -0
- package/src/recall.ts +25 -712
- package/src/store/sqlite/schema/core.ts +233 -0
- package/src/store/sqlite/schema/game.ts +66 -0
- package/src/store/sqlite/schema/plan-v2.ts +108 -0
- package/src/store/sqlite/schema/turns.ts +60 -0
- package/src/store/sqlite/schema.ts +13 -441
- package/src/store/turns/contract-compliance.test/_helpers.ts +38 -0
- package/src/store/turns/sqlite-store/admin.ts +249 -0
- package/src/store/turns/sqlite-store/ctx.ts +14 -0
- package/src/store/turns/sqlite-store/read.ts +174 -0
- package/src/store/turns/sqlite-store/rows.ts +55 -0
- package/src/store/turns/sqlite-store/write.ts +193 -0
- package/src/store/turns/sqlite-store.ts +33 -514
- package/src/vectorStore/class.ts +433 -0
- package/src/vectorStore/hash.ts +11 -0
- package/src/vectorStore/types.ts +58 -0
- package/src/vectorStore.test/_helpers.ts +20 -0
- package/src/vectorStore.ts +13 -489
- package/extensions/dashboard-client/dist/assets/MaintenanceTab-DZi1MnZI.js +0 -2
- package/extensions/dashboard-client/dist/assets/MaintenanceTab-DZi1MnZI.js.map +0 -1
- package/extensions/dashboard-client/dist/assets/MemoryMapTab-CjUa9zzw.js +0 -2
- package/extensions/dashboard-client/dist/assets/MemoryMapTab-CjUa9zzw.js.map +0 -1
- package/extensions/dashboard-client/dist/assets/SetupTab-C_BwmebC.js +0 -2
- package/extensions/dashboard-client/dist/assets/SetupTab-C_BwmebC.js.map +0 -1
- package/extensions/dashboard-client/dist/assets/index-Cucgohga.js.map +0 -1
|
@@ -0,0 +1,200 @@
|
|
|
1
|
+
import { spawnSync } from "node:child_process"; // guardrails-allow PREVENT-PI-004: local subprocess detection only (no network)
|
|
2
|
+
import { mkdirSync, writeFileSync } from "node:fs";
|
|
3
|
+
import path from "node:path";
|
|
4
|
+
import os from "node:os";
|
|
5
|
+
import { createRequire } from "node:module";
|
|
6
|
+
import { checkRecallQuality } from "./helpers.js";
|
|
7
|
+
/** Register the /mega-setup embedder wizard command. */
|
|
8
|
+
export function registerSetupCommand(pi) {
|
|
9
|
+
pi.registerCommand("mega-setup", {
|
|
10
|
+
description: "Local embedding setup wizard — detect available embedders and configure mega-compact.",
|
|
11
|
+
handler: async (_args, ctx) => {
|
|
12
|
+
try {
|
|
13
|
+
const log = (msg) => ctx.ui.notify(msg);
|
|
14
|
+
// --- 1. Current config ---
|
|
15
|
+
const embeddingUrl = process.env["MEGACOMPACT_EMBEDDING_URL"];
|
|
16
|
+
const minilm = process.env["MEGACOMPACT_MINILM"];
|
|
17
|
+
let currentEmbedder = "TrigramEmbedder (heuristic, default)";
|
|
18
|
+
if (embeddingUrl)
|
|
19
|
+
currentEmbedder = `httpEmbedder → ${embeddingUrl}`;
|
|
20
|
+
else if (minilm)
|
|
21
|
+
currentEmbedder = "MiniLM (experimental)";
|
|
22
|
+
// --- 2. Detection ---
|
|
23
|
+
let ollamaDetected = false;
|
|
24
|
+
let ollamaModels = [];
|
|
25
|
+
let ollamaRunning = false;
|
|
26
|
+
let llamaDetected = false;
|
|
27
|
+
let onnxDetected = false;
|
|
28
|
+
try {
|
|
29
|
+
const ollamaVer = spawnSync("ollama", ["--version"], {
|
|
30
|
+
timeout: 5000,
|
|
31
|
+
encoding: "utf-8",
|
|
32
|
+
stdio: ["ignore", "pipe", "pipe"],
|
|
33
|
+
}); // guardrails-allow PREVENT-PI-004: local subprocess detection only
|
|
34
|
+
if (ollamaVer.status === 0) {
|
|
35
|
+
ollamaDetected = true;
|
|
36
|
+
try {
|
|
37
|
+
const listResult = spawnSync("ollama", ["list"], {
|
|
38
|
+
timeout: 5000,
|
|
39
|
+
encoding: "utf-8",
|
|
40
|
+
stdio: ["ignore", "pipe", "pipe"],
|
|
41
|
+
}); // guardrails-allow PREVENT-PI-004: local subprocess detection only
|
|
42
|
+
if (listResult.status === 0) {
|
|
43
|
+
ollamaRunning = true;
|
|
44
|
+
const lines = listResult.stdout?.split("\n") ?? [];
|
|
45
|
+
for (const line of lines) {
|
|
46
|
+
const name = line.split(/\s+/)[0];
|
|
47
|
+
if (name && name !== "NAME")
|
|
48
|
+
ollamaModels.push(name);
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
catch {
|
|
53
|
+
// ollama list fails if server not running — that's fine
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
catch {
|
|
58
|
+
// ollama not found
|
|
59
|
+
}
|
|
60
|
+
try {
|
|
61
|
+
const whichLlama = spawnSync("which", ["llama-server"], {
|
|
62
|
+
timeout: 3000,
|
|
63
|
+
encoding: "utf-8",
|
|
64
|
+
stdio: ["ignore", "pipe", "pipe"],
|
|
65
|
+
}); // guardrails-allow PREVENT-PI-004: local subprocess detection only
|
|
66
|
+
llamaDetected = whichLlama.status === 0;
|
|
67
|
+
}
|
|
68
|
+
catch {
|
|
69
|
+
// not found
|
|
70
|
+
}
|
|
71
|
+
try {
|
|
72
|
+
const req = createRequire(import.meta.url);
|
|
73
|
+
try {
|
|
74
|
+
req.resolve("onnxruntime-node");
|
|
75
|
+
onnxDetected = true;
|
|
76
|
+
}
|
|
77
|
+
catch {
|
|
78
|
+
// not in node_modules
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
catch {
|
|
82
|
+
// require error
|
|
83
|
+
}
|
|
84
|
+
// --- 2.5 Quality check ---
|
|
85
|
+
// Scan recent events for low recall quality (best-effort, non-fatal)
|
|
86
|
+
const stateDir = process.env["MEGACOMPACT_STATE_DIR"] ?? path.join(os.homedir(), ".pi", "mega-compact");
|
|
87
|
+
const lowRecallQuality = checkRecallQuality(stateDir);
|
|
88
|
+
const choices = [];
|
|
89
|
+
if (ollamaDetected && ollamaRunning) {
|
|
90
|
+
const model = ollamaModels.find((m) => m.includes("nomic-embed") ||
|
|
91
|
+
m.includes("embed") ||
|
|
92
|
+
m.includes("mxbai"));
|
|
93
|
+
const suggestedModel = model ?? "nomic-embed-text";
|
|
94
|
+
choices.push({
|
|
95
|
+
label: `Use Ollama (${suggestedModel}) at localhost:11434`,
|
|
96
|
+
value: `ollama:${suggestedModel}`,
|
|
97
|
+
});
|
|
98
|
+
}
|
|
99
|
+
else if (ollamaDetected && !ollamaRunning) {
|
|
100
|
+
choices.push({
|
|
101
|
+
label: "Ollama detected but server is not running — start it first",
|
|
102
|
+
value: "ollama:offline",
|
|
103
|
+
});
|
|
104
|
+
}
|
|
105
|
+
if (llamaDetected) {
|
|
106
|
+
choices.push({
|
|
107
|
+
label: "Use llama.cpp server at localhost:8080",
|
|
108
|
+
value: "llama:default",
|
|
109
|
+
});
|
|
110
|
+
}
|
|
111
|
+
if (onnxDetected) {
|
|
112
|
+
choices.push({
|
|
113
|
+
label: "Use ONNX Runtime (experimental, requires config)",
|
|
114
|
+
value: "onnx:default",
|
|
115
|
+
});
|
|
116
|
+
}
|
|
117
|
+
choices.push({
|
|
118
|
+
label: "Keep TrigramEmbedder (default, no setup)",
|
|
119
|
+
value: "trigram",
|
|
120
|
+
});
|
|
121
|
+
// --- 4. Prompt user ---
|
|
122
|
+
log(`Current embedder: ${currentEmbedder}`);
|
|
123
|
+
if (lowRecallQuality) {
|
|
124
|
+
log("Tap: recent recall quality is low. Consider switching to Ollama or llama.cpp for better results.");
|
|
125
|
+
}
|
|
126
|
+
let selected = "trigram";
|
|
127
|
+
if (choices.length > 1) {
|
|
128
|
+
try {
|
|
129
|
+
const labels = choices.map((c) => c.label);
|
|
130
|
+
const picked = await ctx.ui.select("Select an embedder to configure:", labels);
|
|
131
|
+
if (picked === undefined) {
|
|
132
|
+
log("Setup cancelled by user.");
|
|
133
|
+
return;
|
|
134
|
+
}
|
|
135
|
+
const match = choices.find((c) => c.label === picked);
|
|
136
|
+
selected = match?.value ?? "trigram";
|
|
137
|
+
}
|
|
138
|
+
catch {
|
|
139
|
+
log("Setup cancelled by user.");
|
|
140
|
+
return;
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
else {
|
|
144
|
+
log("No local embedders detected. Keeping TrigramEmbedder default.");
|
|
145
|
+
}
|
|
146
|
+
// --- 5. Apply selection ---
|
|
147
|
+
if (selected.startsWith("ollama:")) {
|
|
148
|
+
const model = selected.split(":")[1];
|
|
149
|
+
const url = `http://localhost:11434/api/embeddings`; // guardrails-allow PREVENT-PI-004: localhost-only config string, not a runtime fetch
|
|
150
|
+
const lines = [
|
|
151
|
+
`# Mega-Compact Embedder Configuration — Ollama`,
|
|
152
|
+
`# Generated by /megasetup at ${new Date().toISOString()}`,
|
|
153
|
+
`export MEGACOMPACT_EMBEDDING_URL="${url}"`,
|
|
154
|
+
`# Optional: uncomment to set cache size (default 1000)`,
|
|
155
|
+
`# export MEGACOMPACT_EMBED_CACHE=1000`,
|
|
156
|
+
];
|
|
157
|
+
const envContent = lines.join("\n") + "\n";
|
|
158
|
+
// Write .mega-compact.env to state dir
|
|
159
|
+
try {
|
|
160
|
+
mkdirSync(stateDir, { recursive: true });
|
|
161
|
+
writeFileSync(path.join(stateDir, ".mega-compact.env"), envContent, "utf-8");
|
|
162
|
+
}
|
|
163
|
+
catch {
|
|
164
|
+
// non-fatal
|
|
165
|
+
}
|
|
166
|
+
log(`Configured for Ollama (${model}).\n\nAdd to your shell profile (~/.bashrc, ~/.zshrc, or ~/.config/fish/config.fish):\n\n source "${path.join(stateDir, ".mega-compact.env")}"\n\nOr export manually:\n\n export MEGACOMPACT_EMBEDDING_URL="${url}"\n\nThen restart pi to activate the http embedder.`);
|
|
167
|
+
}
|
|
168
|
+
else if (selected.startsWith("llama:")) {
|
|
169
|
+
const url = "http://localhost:8080/v1/embeddings"; // guardrails-allow PREVENT-PI-004: localhost-only config string, not a runtime fetch
|
|
170
|
+
const lines = [
|
|
171
|
+
`# Mega-Compact Embedder Configuration — llama.cpp`,
|
|
172
|
+
`# Generated by /megasetup at ${new Date().toISOString()}`,
|
|
173
|
+
`export MEGACOMPACT_EMBEDDING_URL="${url}"`,
|
|
174
|
+
];
|
|
175
|
+
const envContent = lines.join("\n") + "\n";
|
|
176
|
+
try {
|
|
177
|
+
mkdirSync(stateDir, { recursive: true });
|
|
178
|
+
writeFileSync(path.join(stateDir, ".mega-compact.env"), envContent, "utf-8");
|
|
179
|
+
}
|
|
180
|
+
catch {
|
|
181
|
+
// non-fatal
|
|
182
|
+
}
|
|
183
|
+
log(`Configured for llama.cpp server.\n\nAdd to your shell profile:\n\n source "${path.join(stateDir, ".mega-compact.env")}"\n\nOr export manually:\n\n export MEGACOMPACT_EMBEDDING_URL="${url}"\n\nThen restart pi to activate the http embedder.`);
|
|
184
|
+
}
|
|
185
|
+
else if (selected.startsWith("onnx:")) {
|
|
186
|
+
log("ONNX Runtime configuration is experimental.\n\nSet MEGACOMPACT_EMBEDDING_URL to your local ONNX server URL, or see docs for manual setup.\nKeeping TrigramEmbedder for now.");
|
|
187
|
+
}
|
|
188
|
+
else {
|
|
189
|
+
const qualityTip = lowRecallQuality
|
|
190
|
+
? " Recent recall quality is low — consider running /mega-setup again to switch to Ollama or llama.cpp for better results."
|
|
191
|
+
: "";
|
|
192
|
+
log(`Keeping TrigramEmbedder (default). No configuration needed.${qualityTip}`);
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
catch (e) {
|
|
196
|
+
ctx.ui.notify(`[mega-compact] /mega-setup failed: ${String(e)}`);
|
|
197
|
+
}
|
|
198
|
+
},
|
|
199
|
+
});
|
|
200
|
+
}
|