@kanadego/dsh-heartbeat 1.6.1 → 1.6.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/README.md +11 -1
- package/config/profile-schema.json +253 -15
- package/dist/{chunk-5TNGUHIR.js → chunk-QAJ2D445.js} +2 -5
- package/dist/chunk-QAJ2D445.js.map +1 -0
- package/dist/cli/index.js +1 -1
- package/dist/index.js +27 -4
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
- package/dist/chunk-5TNGUHIR.js.map +0 -1
package/dist/index.js
CHANGED
|
@@ -22,7 +22,7 @@ import {
|
|
|
22
22
|
scanPending,
|
|
23
23
|
sendNewMessageHint,
|
|
24
24
|
userPresetRoot
|
|
25
|
-
} from "./chunk-
|
|
25
|
+
} from "./chunk-QAJ2D445.js";
|
|
26
26
|
import {
|
|
27
27
|
getRuntime,
|
|
28
28
|
setRuntime
|
|
@@ -1500,14 +1500,22 @@ var RULES = [
|
|
|
1500
1500
|
'\u53EA\u8F93\u51FA\u4E00\u4E2A JSON \u6570\u7EC4\uFF0C\u5143\u7D20\u5F62\u5982 {"op":"ADD"|"UPDATE"|"INVALIDATE"|"NOOP"|...,..}\u3002'
|
|
1501
1501
|
].join("\n");
|
|
1502
1502
|
var CHAT_SEED_RULE = '\u804A\u5929\u79CD\u5B50\uFF08spec \u2467\uFF09\uFF1A\u4ECE\u89C2\u5BDF\u91CC\u6311"\u503C\u5F97\u4E3B\u52A8\u804A\u7684\u8BDD\u9898"\u2014\u2014\u53EA\u6311\u4ED6\u771F\u6B63\u8868\u73B0\u51FA\u5174\u8DA3\u7684\u3001\u65B0\u51FA\u73B0\u7684\u4E8B\u7269\u6216\u4ED6\u60F3\u6DF1\u5165\u7684\u8BDD\u9898\uFF1B\u666E\u901A\u5BD2\u6684\u3001\u5BA2\u5957\u3001\u5DF2\u5B8C\u7ED3\u7684\u5C0F\u4E8B\u4E0D\u8BB0\u3002\u6BCF\u6761\u8F93\u51FA\u4E3A {"op":"CHAT_SEED","text":"\u4E00\u53E5\u8BDD\u7D20\u6750(<=60\u5B57)"}\uFF08topic \u53EF\u9009\uFF09\u3002\u6CA1\u6709\u5408\u9002\u7684\u5C31\u4E0D\u6311\u3002';
|
|
1503
|
-
function buildConsolidationPrompt(entriesView, observations) {
|
|
1503
|
+
function buildConsolidationPrompt(entriesView, observations, schema) {
|
|
1504
1504
|
const notes = observations.map((o) => `- [${o.kind} ${o.at}] ${o.note} (ref=${o.kind}#${o.ref})`).join("\n");
|
|
1505
|
+
const whitelist = schema ? renderSchemaWhitelist(schema) : "";
|
|
1505
1506
|
return [
|
|
1506
1507
|
"\u4F60\u662F\u7528\u6237\u753B\u50CF\u7684\u5408\u5E76\u88C1\u51B3\u5668\u3002\u4E0B\u9762\u662F\u5F53\u524D\u753B\u50CF\u6761\u76EE\u4E0E\u65B0\u89C2\u5BDF\u3002\u8BF7\u4EA7\u51FA\u7ED3\u6784\u5316\u64CD\u4F5C\u3002",
|
|
1507
1508
|
"\u88C1\u51B3\u89C4\u5219\uFF1A",
|
|
1508
1509
|
RULES,
|
|
1509
1510
|
CHAT_SEED_RULE,
|
|
1510
1511
|
"",
|
|
1512
|
+
"## \u5206\u533A\u767D\u540D\u5355\uFF08\u5FC5\u987B\u4E25\u683C\u9075\u5B88\uFF09",
|
|
1513
|
+
"partition/topic/subTopic \u53EA\u80FD\u4ECE\u4E0B\u9762\u8FD9\u4EFD\u6E05\u5355\u91CC\u9009\uFF0C\u9010\u5B57\u5339\u914D\uFF0C\u7981\u6B62\u81EA\u521B\u3001\u7981\u6B62\u6539\u5199\u6210\u522B\u7684\u540D\u5B57\uFF1A",
|
|
1514
|
+
whitelist || "(\u65E0 schema \u767D\u540D\u5355\u2014\u2014\u4F46\u5206\u533A\u5FC5\u987B\u5C5E\u4E8E interest/projects/comm/psy \u56DB\u8005\u4E4B\u4E00)",
|
|
1515
|
+
"",
|
|
1516
|
+
"## temporal \u53D6\u503C",
|
|
1517
|
+
"temporal \u53EA\u80FD\u586B stable \u6216 volatile\uFF08\u6BCF\u4E2A sub_topic \u6709\u81EA\u5DF1\u7684\u5141\u8BB8\u96C6\uFF0C\u89C1\u4E0A\u9762\u62EC\u53F7\u6807\u6CE8\uFF1B\u6CA1\u6807\u6CE8\u7684\u9ED8\u8BA4 stable\uFF09\u3002",
|
|
1518
|
+
"",
|
|
1511
1519
|
"## \u5F53\u524D\u6761\u76EE\uFF08\u4EC5\u975E psy \u5206\u533A\uFF1B\u5B57\u6BB5\uFF1Aid/partition/topic/subTopic/content/confidence\uFF09",
|
|
1512
1520
|
entriesView || "(\u7A7A)",
|
|
1513
1521
|
"",
|
|
@@ -1515,9 +1523,24 @@ function buildConsolidationPrompt(entriesView, observations) {
|
|
|
1515
1523
|
notes || "(\u7A7A)",
|
|
1516
1524
|
"",
|
|
1517
1525
|
"\u8F93\u51FA\uFF1A\u4E00\u4E2A JSON \u6570\u7EC4\u7684 ops\u3002ADD \u9700\u542B partition/topic/subTopic/content/temporal/evidence[{kind,at,ref}]\uFF1B",
|
|
1518
|
-
"UPDATE \u9700\u542B id/changes\uFF1BINVALIDATE \u9700\u542B id/why\u3002
|
|
1526
|
+
"UPDATE \u9700\u542B id/changes\uFF1BINVALIDATE \u9700\u542B id/why\u3002",
|
|
1527
|
+
'evidence[].ref \u5FC5\u987B\u662F\u80FD\u89E3\u6790\u7684\u6570\u636E\u6587\u4EF6\u5B9A\u4F4D\u7B26\uFF0C\u683C\u5F0F\u4E3A "<data\u4E0B\u7684\u6587\u4EF6>#<\u5B9A\u4F4D>"\uFF0C\u4F8B\u5982 "cursors.json#2026-09-06T08:32:51.185Z"\u3002',
|
|
1528
|
+
'\u4E0D\u8981\u5728 ref \u524D\u9762\u52A0 "chat#" \u7B49\u591A\u4F59\u524D\u7F00\u2014\u2014\u90A3\u4F1A\u5BFC\u81F4\u8BC1\u636E\u65E0\u6CD5\u89E3\u6790\u800C\u88AB\u62D2\u3002',
|
|
1529
|
+
"\u4E0D\u8981\u8F93\u51FA\u6570\u7EC4\u4EE5\u5916\u7684\u4EFB\u4F55\u5185\u5BB9\u3002"
|
|
1519
1530
|
].join("\n");
|
|
1520
1531
|
}
|
|
1532
|
+
function renderSchemaWhitelist(schema) {
|
|
1533
|
+
const rows = [];
|
|
1534
|
+
for (const [partition, p] of Object.entries(schema.partitions ?? {})) {
|
|
1535
|
+
for (const [topic, t] of Object.entries(p?.topics ?? {})) {
|
|
1536
|
+
for (const [subTopic, st] of Object.entries(t?.subtopics ?? {})) {
|
|
1537
|
+
const allowed = (st?.allowed && st.allowed.length ? st.allowed : ["stable"]).join("|");
|
|
1538
|
+
rows.push(`- ${partition}/${topic}/${subTopic} (temporal: ${allowed})`);
|
|
1539
|
+
}
|
|
1540
|
+
}
|
|
1541
|
+
}
|
|
1542
|
+
return rows.join("\n");
|
|
1543
|
+
}
|
|
1521
1544
|
var MAX_CHAT_SEEDS_PER_RUN = 3;
|
|
1522
1545
|
function splitChatSeedOps(raw) {
|
|
1523
1546
|
const chatSeeds = [];
|
|
@@ -1547,7 +1570,7 @@ async function runConsolidation(guard, paths, policy, llm, now = Date.now()) {
|
|
|
1547
1570
|
const doc = loadProfile(guard, paths.dataDir + "/profile.json");
|
|
1548
1571
|
const all = dedupeItems(inboxDrain(guard, inboxFilePath(paths.dataDir)));
|
|
1549
1572
|
const entriesView = ["interest", "projects", "comm"].flatMap((p) => doc.partitions[p].entries.filter((e) => e.validTo === null).map((e) => `${e.id} [${e.partition}/${e.topic}/${e.subTopic}] conf=${e.confidence} (${e.temporal}): ${e.content}`)).filter(Boolean).join("\n");
|
|
1550
|
-
const prompt = buildConsolidationPrompt(entriesView, all);
|
|
1573
|
+
const prompt = buildConsolidationPrompt(entriesView, all, schema);
|
|
1551
1574
|
let ops = null;
|
|
1552
1575
|
let lastError = "";
|
|
1553
1576
|
for (let attempt = 0; attempt < 2 && ops === null; attempt++) {
|