@sesamespace/hivemind 0.11.4 → 0.11.5
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/{chunk-OB6OXLPC.js → chunk-EKZ3IZU6.js} +38 -35
- package/dist/chunk-EKZ3IZU6.js.map +1 -0
- package/dist/{chunk-4YXOQGQC.js → chunk-GD6XTDQQ.js} +2 -2
- package/dist/{chunk-4C6B2AMB.js → chunk-HQTD25CP.js} +2 -2
- package/dist/{chunk-K6KL2VD6.js → chunk-MWQZTAYA.js} +2 -2
- package/dist/{chunk-ZA4NWNS6.js → chunk-NUMLGOLM.js} +2 -2
- package/dist/{chunk-LYL5GG2F.js → chunk-TTVGHFFT.js} +3 -3
- package/dist/commands/fleet.js +3 -3
- package/dist/commands/init.js +3 -3
- package/dist/commands/start.js +3 -3
- package/dist/commands/watchdog.js +3 -3
- package/dist/index.js +2 -2
- package/dist/main.js +6 -6
- package/dist/start.js +1 -1
- package/package.json +5 -4
- package/.session-log.json +0 -58
- package/dist/chunk-OB6OXLPC.js.map +0 -1
- /package/dist/{chunk-4YXOQGQC.js.map → chunk-GD6XTDQQ.js.map} +0 -0
- /package/dist/{chunk-4C6B2AMB.js.map → chunk-HQTD25CP.js.map} +0 -0
- /package/dist/{chunk-K6KL2VD6.js.map → chunk-MWQZTAYA.js.map} +0 -0
- /package/dist/{chunk-ZA4NWNS6.js.map → chunk-NUMLGOLM.js.map} +0 -0
- /package/dist/{chunk-LYL5GG2F.js.map → chunk-TTVGHFFT.js.map} +0 -0
|
@@ -5335,15 +5335,12 @@ function registerMemoryTools(registry, daemonUrl) {
|
|
|
5335
5335
|
const context = params.context || "global";
|
|
5336
5336
|
const topK = params.top_k || 10;
|
|
5337
5337
|
try {
|
|
5338
|
-
const
|
|
5339
|
-
|
|
5340
|
-
headers: { "Content-Type": "application/json" },
|
|
5341
|
-
body: JSON.stringify({ query, context_name: context, top_k: topK })
|
|
5342
|
-
});
|
|
5338
|
+
const searchParams = new URLSearchParams({ q: query, context, limit: String(topK) });
|
|
5339
|
+
const resp = await fetch(`${daemonUrl}/search?${searchParams}`);
|
|
5343
5340
|
if (!resp.ok) return `Memory search failed: ${resp.status}`;
|
|
5344
5341
|
const data = await resp.json();
|
|
5345
|
-
if (!data.
|
|
5346
|
-
return data.
|
|
5342
|
+
if (!data.episodes?.length) return `No memories found for "${query}" in context "${context}".`;
|
|
5343
|
+
return data.episodes.map((r, i) => `${i + 1}. [score: ${r.score.toFixed(3)}] [${r.context_name}] [${r.role}] ${r.content.slice(0, 200)}`).join("\n");
|
|
5347
5344
|
} catch (err) {
|
|
5348
5345
|
return `Memory daemon unreachable: ${err.message}`;
|
|
5349
5346
|
}
|
|
@@ -5361,12 +5358,12 @@ function registerMemoryTools(registry, daemonUrl) {
|
|
|
5361
5358
|
try {
|
|
5362
5359
|
const healthResp = await fetch(`${daemonUrl}/health`);
|
|
5363
5360
|
const health = healthResp.ok ? await healthResp.json() : { status: "unreachable" };
|
|
5364
|
-
const ctxResp = await fetch(`${daemonUrl}/
|
|
5361
|
+
const ctxResp = await fetch(`${daemonUrl}/contexts`);
|
|
5365
5362
|
const contexts = ctxResp.ok ? (await ctxResp.json()).contexts : [];
|
|
5366
5363
|
const l3Counts = {};
|
|
5367
5364
|
for (const ctx of contexts) {
|
|
5368
5365
|
try {
|
|
5369
|
-
const l3Resp = await fetch(`${daemonUrl}/
|
|
5366
|
+
const l3Resp = await fetch(`${daemonUrl}/promotion/l3?context=${encodeURIComponent(ctx.name)}`);
|
|
5370
5367
|
if (l3Resp.ok) {
|
|
5371
5368
|
const l3Data = await l3Resp.json();
|
|
5372
5369
|
l3Counts[ctx.name] = l3Data.entries?.length ?? 0;
|
|
@@ -5411,7 +5408,7 @@ Contexts:
|
|
|
5411
5408
|
async (params) => {
|
|
5412
5409
|
const context = params.context || "global";
|
|
5413
5410
|
try {
|
|
5414
|
-
const resp = await fetch(`${daemonUrl}/
|
|
5411
|
+
const resp = await fetch(`${daemonUrl}/promotion/l3?context=${encodeURIComponent(context)}`);
|
|
5415
5412
|
if (!resp.ok) return `L3 query failed: ${resp.status}`;
|
|
5416
5413
|
const data = await resp.json();
|
|
5417
5414
|
if (!data.entries?.length) return `No L3 knowledge in context "${context}".`;
|
|
@@ -5442,15 +5439,19 @@ Contexts:
|
|
|
5442
5439
|
const query = params.query;
|
|
5443
5440
|
const topK = params.top_k || 10;
|
|
5444
5441
|
try {
|
|
5445
|
-
const
|
|
5446
|
-
|
|
5447
|
-
headers: { "Content-Type": "application/json" },
|
|
5448
|
-
body: JSON.stringify({ query, top_k: topK })
|
|
5449
|
-
});
|
|
5442
|
+
const crossParams = new URLSearchParams({ q: query, limit: String(topK) });
|
|
5443
|
+
const resp = await fetch(`${daemonUrl}/search/cross-context?${crossParams}`);
|
|
5450
5444
|
if (!resp.ok) return `Cross-context search failed: ${resp.status}`;
|
|
5451
5445
|
const data = await resp.json();
|
|
5452
|
-
|
|
5453
|
-
|
|
5446
|
+
const flat = [];
|
|
5447
|
+
for (const group of data.results || []) {
|
|
5448
|
+
for (const ep of group.episodes) {
|
|
5449
|
+
flat.push({ ...ep, context_name: group.context });
|
|
5450
|
+
}
|
|
5451
|
+
}
|
|
5452
|
+
if (!flat.length) return `No memories found across any context for "${query}".`;
|
|
5453
|
+
flat.sort((a, b) => b.score - a.score);
|
|
5454
|
+
return flat.map((r, i) => `${i + 1}. [${r.score.toFixed(3)}] [${r.context_name}] ${r.content.slice(0, 200)}`).join("\n");
|
|
5454
5455
|
} catch (err) {
|
|
5455
5456
|
return `Memory daemon unreachable: ${err.message}`;
|
|
5456
5457
|
}
|
|
@@ -8070,7 +8071,7 @@ ${findingText}`
|
|
|
8070
8071
|
async function storeInMemory(contextName, topic, findings, synthesis, daemonUrl) {
|
|
8071
8072
|
const storedIds = [];
|
|
8072
8073
|
try {
|
|
8073
|
-
await fetch(`${daemonUrl}/
|
|
8074
|
+
await fetch(`${daemonUrl}/contexts`, {
|
|
8074
8075
|
method: "POST",
|
|
8075
8076
|
headers: { "Content-Type": "application/json" },
|
|
8076
8077
|
body: JSON.stringify({
|
|
@@ -8084,7 +8085,7 @@ async function storeInMemory(contextName, topic, findings, synthesis, daemonUrl)
|
|
|
8084
8085
|
const content = `[Source: ${finding.source}]
|
|
8085
8086
|
${finding.keyPoints.join("\n")}`;
|
|
8086
8087
|
try {
|
|
8087
|
-
const resp = await fetch(`${daemonUrl}/
|
|
8088
|
+
const resp = await fetch(`${daemonUrl}/episodes`, {
|
|
8088
8089
|
method: "POST",
|
|
8089
8090
|
headers: { "Content-Type": "application/json" },
|
|
8090
8091
|
body: JSON.stringify({
|
|
@@ -8101,7 +8102,7 @@ ${finding.keyPoints.join("\n")}`;
|
|
|
8101
8102
|
}
|
|
8102
8103
|
}
|
|
8103
8104
|
try {
|
|
8104
|
-
const resp = await fetch(`${daemonUrl}/
|
|
8105
|
+
const resp = await fetch(`${daemonUrl}/episodes`, {
|
|
8105
8106
|
method: "POST",
|
|
8106
8107
|
headers: { "Content-Type": "application/json" },
|
|
8107
8108
|
body: JSON.stringify({
|
|
@@ -8118,7 +8119,7 @@ ${synthesis}`
|
|
|
8118
8119
|
} catch {
|
|
8119
8120
|
}
|
|
8120
8121
|
try {
|
|
8121
|
-
await fetch(`${daemonUrl}/
|
|
8122
|
+
await fetch(`${daemonUrl}/promotion/run?context=${encodeURIComponent(contextName)}`, {
|
|
8122
8123
|
method: "POST"
|
|
8123
8124
|
});
|
|
8124
8125
|
} catch {
|
|
@@ -8265,28 +8266,30 @@ ${synthesis}${storageNote}`;
|
|
|
8265
8266
|
const daemonUrl = config.memoryDaemonUrl;
|
|
8266
8267
|
try {
|
|
8267
8268
|
if (context) {
|
|
8268
|
-
const
|
|
8269
|
-
|
|
8270
|
-
headers: { "Content-Type": "application/json" },
|
|
8271
|
-
body: JSON.stringify({ query: topic, context_name: context, top_k: 10 })
|
|
8272
|
-
});
|
|
8269
|
+
const searchParams = new URLSearchParams({ q: topic, context, limit: "10" });
|
|
8270
|
+
const resp2 = await fetch(`${daemonUrl}/search?${searchParams}`);
|
|
8273
8271
|
if (!resp2.ok) return `Memory search failed: ${resp2.status}`;
|
|
8274
8272
|
const data2 = await resp2.json();
|
|
8275
|
-
if (!data2.
|
|
8276
|
-
return data2.
|
|
8273
|
+
if (!data2.episodes?.length) return `No learned knowledge found for "${topic}" in context "${context}".`;
|
|
8274
|
+
return data2.episodes.map((r, i) => `${i + 1}. [score: ${r.score.toFixed(3)}] [${r.role}]
|
|
8277
8275
|
${r.content.slice(0, 500)}`).join("\n\n");
|
|
8278
8276
|
}
|
|
8279
|
-
const
|
|
8280
|
-
|
|
8281
|
-
headers: { "Content-Type": "application/json" },
|
|
8282
|
-
body: JSON.stringify({ query: topic, top_k: 15 })
|
|
8283
|
-
});
|
|
8277
|
+
const crossParams = new URLSearchParams({ q: topic, limit: "15" });
|
|
8278
|
+
const resp = await fetch(`${daemonUrl}/search/cross-context?${crossParams}`);
|
|
8284
8279
|
if (!resp.ok) return `Memory cross-search failed: ${resp.status}`;
|
|
8285
8280
|
const data = await resp.json();
|
|
8286
|
-
const learnResults =
|
|
8281
|
+
const learnResults = [];
|
|
8282
|
+
for (const group of data.results || []) {
|
|
8283
|
+
if (group.context.startsWith("learn-")) {
|
|
8284
|
+
for (const ep of group.episodes) {
|
|
8285
|
+
learnResults.push({ ...ep, context_name: group.context });
|
|
8286
|
+
}
|
|
8287
|
+
}
|
|
8288
|
+
}
|
|
8287
8289
|
if (learnResults.length === 0) {
|
|
8288
8290
|
return `No previously learned knowledge found for "${topic}". Use the learn tool first.`;
|
|
8289
8291
|
}
|
|
8292
|
+
learnResults.sort((a, b) => b.score - a.score);
|
|
8290
8293
|
return learnResults.map((r, i) => `${i + 1}. [score: ${r.score.toFixed(3)}] [${r.context_name}] [${r.role}]
|
|
8291
8294
|
${r.content.slice(0, 500)}`).join("\n\n");
|
|
8292
8295
|
} catch (err) {
|
|
@@ -9415,4 +9418,4 @@ smol-toml/dist/index.js:
|
|
|
9415
9418
|
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
9416
9419
|
*)
|
|
9417
9420
|
*/
|
|
9418
|
-
//# sourceMappingURL=chunk-
|
|
9421
|
+
//# sourceMappingURL=chunk-EKZ3IZU6.js.map
|