backpack-ontology 0.7.6 → 0.7.8

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.
Files changed (56) hide show
  1. package/dist/bin/backpack-sync.js +243 -65
  2. package/dist/bin/backpack-sync.js.map +1 -1
  3. package/dist/bin/backpack.js +7 -0
  4. package/dist/bin/backpack.js.map +1 -1
  5. package/dist/core/backpack.d.ts +7 -0
  6. package/dist/core/backpack.d.ts.map +1 -1
  7. package/dist/core/backpack.js +17 -0
  8. package/dist/core/backpack.js.map +1 -1
  9. package/dist/core/signal-detectors.d.ts +12 -0
  10. package/dist/core/signal-detectors.d.ts.map +1 -0
  11. package/dist/core/signal-detectors.js +591 -0
  12. package/dist/core/signal-detectors.js.map +1 -0
  13. package/dist/core/signal-store.d.ts +23 -0
  14. package/dist/core/signal-store.d.ts.map +1 -0
  15. package/dist/core/signal-store.js +179 -0
  16. package/dist/core/signal-store.js.map +1 -0
  17. package/dist/core/signal-types.d.ts +71 -0
  18. package/dist/core/signal-types.d.ts.map +1 -0
  19. package/dist/core/signal-types.js +12 -0
  20. package/dist/core/signal-types.js.map +1 -0
  21. package/dist/index.d.ts +5 -0
  22. package/dist/index.d.ts.map +1 -1
  23. package/dist/index.js +5 -0
  24. package/dist/index.js.map +1 -1
  25. package/dist/mcp/server.d.ts.map +1 -1
  26. package/dist/mcp/server.js +5 -1
  27. package/dist/mcp/server.js.map +1 -1
  28. package/dist/mcp/tools/signal-tools.d.ts +4 -0
  29. package/dist/mcp/tools/signal-tools.d.ts.map +1 -0
  30. package/dist/mcp/tools/signal-tools.js +295 -0
  31. package/dist/mcp/tools/signal-tools.js.map +1 -0
  32. package/dist/sync/auto-sync.d.ts +10 -0
  33. package/dist/sync/auto-sync.d.ts.map +1 -0
  34. package/dist/sync/auto-sync.js +81 -0
  35. package/dist/sync/auto-sync.js.map +1 -0
  36. package/dist/sync/index.d.ts +10 -0
  37. package/dist/sync/index.d.ts.map +1 -0
  38. package/dist/sync/index.js +7 -0
  39. package/dist/sync/index.js.map +1 -0
  40. package/dist/sync/sync-client.d.ts +80 -0
  41. package/dist/sync/sync-client.d.ts.map +1 -0
  42. package/dist/sync/sync-client.js +539 -0
  43. package/dist/sync/sync-client.js.map +1 -0
  44. package/dist/sync/sync-relay.d.ts +40 -0
  45. package/dist/sync/sync-relay.d.ts.map +1 -0
  46. package/dist/sync/sync-relay.js +118 -0
  47. package/dist/sync/sync-relay.js.map +1 -0
  48. package/dist/sync/sync-state.d.ts +7 -0
  49. package/dist/sync/sync-state.d.ts.map +1 -0
  50. package/dist/sync/sync-state.js +63 -0
  51. package/dist/sync/sync-state.js.map +1 -0
  52. package/dist/sync/types.d.ts +106 -0
  53. package/dist/sync/types.d.ts.map +1 -0
  54. package/dist/sync/types.js +20 -0
  55. package/dist/sync/types.js.map +1 -0
  56. package/package.json +1 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"signal-store.d.ts","sourceRoot":"","sources":["../../src/core/signal-store.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AACpD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,KAAK,EAEV,UAAU,EACV,YAAY,EACZ,YAAY,EACZ,UAAU,EAGX,MAAM,mBAAmB,CAAC;AAI3B,qBAAa,WAAW;IACtB,OAAO,CAAC,QAAQ,CAAS;gBAEb,YAAY,EAAE,MAAM;IAM1B,IAAI,IAAI,OAAO,CAAC,UAAU,CAAC;IAiB3B,IAAI,CAAC,IAAI,CAAC,EAAE;QAChB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,IAAI,CAAC,EAAE,UAAU,CAAC;QAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB,GAAG,OAAO,CAAC,YAAY,CAAC;IAmCnB,MAAM,CACV,MAAM,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,iBAAiB,CAAA;KAAE,EAAE,EACnD,IAAI,EAAE,cAAc,EAAE,GACrB,OAAO,CAAC,YAAY,CAAC;IAmDlB,OAAO,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAUxC,SAAS,CAAC,MAAM,EAAE,OAAO,CAAC,YAAY,CAAC,GAAG,OAAO,CAAC,YAAY,CAAC;IAcrE,OAAO,CAAC,UAAU;IAmDZ,IAAI,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;CAO5C"}
@@ -0,0 +1,179 @@
1
+ // ============================================================
2
+ // SignalStore — manages backpack-level signals.json.
3
+ //
4
+ // Persists detected signals to disk alongside graphs and KBs.
5
+ // Detection scans all graphs + KBs in the active backpack.
6
+ // Signals are regenerable — can always be recomputed from
7
+ // current graph/KB state.
8
+ // ============================================================
9
+ import * as fs from "node:fs/promises";
10
+ import * as path from "node:path";
11
+ import { DEFAULT_SIGNAL_CONFIG } from "./signal-types.js";
12
+ import { GRAPH_DETECTORS, CROSS_CUTTING_DETECTORS } from "./signal-detectors.js";
13
+ export class SignalStore {
14
+ filePath;
15
+ constructor(backpackPath) {
16
+ this.filePath = path.join(backpackPath, "signals.json");
17
+ }
18
+ // --- Read ---
19
+ async load() {
20
+ try {
21
+ const raw = await fs.readFile(this.filePath, "utf8");
22
+ return JSON.parse(raw);
23
+ }
24
+ catch (err) {
25
+ if (err?.code === "ENOENT") {
26
+ return {
27
+ signals: [],
28
+ dismissed: [],
29
+ config: { ...DEFAULT_SIGNAL_CONFIG },
30
+ computedAt: "",
31
+ };
32
+ }
33
+ throw err;
34
+ }
35
+ }
36
+ async list(opts) {
37
+ const file = await this.load();
38
+ const dismissedSet = new Set(file.dismissed);
39
+ let signals = file.signals.filter((s) => !dismissedSet.has(s.id));
40
+ const dismissedCount = file.signals.length - signals.length;
41
+ if (opts?.graph) {
42
+ signals = signals.filter((s) => s.graphNames.includes(opts.graph));
43
+ }
44
+ if (opts?.kind) {
45
+ signals = signals.filter((s) => s.kind === opts.kind);
46
+ }
47
+ if (opts?.severity) {
48
+ signals = signals.filter((s) => s.severity === opts.severity);
49
+ }
50
+ if (opts?.query) {
51
+ const q = opts.query.toLowerCase();
52
+ signals = signals.filter((s) => s.title.toLowerCase().includes(q) ||
53
+ s.description.toLowerCase().includes(q) ||
54
+ s.graphNames.some((g) => g.toLowerCase().includes(q)) ||
55
+ s.tags.some((t) => t.toLowerCase().includes(q)));
56
+ }
57
+ return {
58
+ signals: signals.sort((a, b) => b.score - a.score),
59
+ dismissed: dismissedCount,
60
+ computedAt: file.computedAt,
61
+ };
62
+ }
63
+ // --- Detect ---
64
+ async detect(graphs, docs) {
65
+ const file = await this.load();
66
+ const config = file.config ?? { ...DEFAULT_SIGNAL_CONFIG };
67
+ const { sensitivity, disabledKinds } = config;
68
+ const allSignals = [];
69
+ // Per-graph detectors
70
+ for (const { name, data } of graphs) {
71
+ const input = { data, graphName: name };
72
+ for (const detector of GRAPH_DETECTORS) {
73
+ if (disabledKinds.includes(detector.kind))
74
+ continue;
75
+ allSignals.push(...detector.detect(input, sensitivity));
76
+ }
77
+ }
78
+ // Cross-cutting detectors
79
+ const crossInput = {
80
+ graphs: graphs.map(({ name, data }) => ({ data, graphName: name })),
81
+ docs,
82
+ };
83
+ for (const detector of CROSS_CUTTING_DETECTORS) {
84
+ if (disabledKinds.includes(detector.kind))
85
+ continue;
86
+ allSignals.push(...detector.detect(crossInput, sensitivity));
87
+ }
88
+ // Enrich signals with tags derived from graph nodes and KB docs
89
+ this.enrichTags(allSignals, graphs, docs);
90
+ // Preserve dismissed list, write new signals
91
+ const newFile = {
92
+ signals: allSignals,
93
+ dismissed: file.dismissed,
94
+ config,
95
+ computedAt: new Date().toISOString(),
96
+ };
97
+ await this.save(newFile);
98
+ const dismissedSet = new Set(file.dismissed);
99
+ const active = allSignals.filter((s) => !dismissedSet.has(s.id));
100
+ return {
101
+ signals: active.sort((a, b) => b.score - a.score),
102
+ dismissed: allSignals.length - active.length,
103
+ computedAt: newFile.computedAt,
104
+ };
105
+ }
106
+ // --- Dismiss ---
107
+ async dismiss(signalId) {
108
+ const file = await this.load();
109
+ if (!file.dismissed.includes(signalId)) {
110
+ file.dismissed.push(signalId);
111
+ }
112
+ await this.save(file);
113
+ }
114
+ // --- Configure ---
115
+ async configure(update) {
116
+ const file = await this.load();
117
+ if (update.sensitivity !== undefined) {
118
+ file.config.sensitivity = Math.max(0, Math.min(1, update.sensitivity));
119
+ }
120
+ if (update.disabledKinds !== undefined) {
121
+ file.config.disabledKinds = update.disabledKinds;
122
+ }
123
+ await this.save(file);
124
+ return file.config;
125
+ }
126
+ // --- Tag enrichment ---
127
+ enrichTags(signals, graphs, docs) {
128
+ // Build lookup: nodeId → { types, graphName }
129
+ const nodeInfo = new Map();
130
+ for (const { name, data } of graphs) {
131
+ for (const node of data.nodes) {
132
+ nodeInfo.set(node.id, { type: node.type, graphName: name });
133
+ }
134
+ }
135
+ // Build lookup: graph name → KB tags associated with that graph
136
+ const graphKBTags = new Map();
137
+ for (const doc of docs) {
138
+ const docTags = doc.tags ?? [];
139
+ const sourceGraphs = doc.sourceGraphs ?? [];
140
+ for (const g of sourceGraphs) {
141
+ if (!graphKBTags.has(g))
142
+ graphKBTags.set(g, new Set());
143
+ for (const t of docTags)
144
+ graphKBTags.get(g).add(t);
145
+ }
146
+ }
147
+ for (const signal of signals) {
148
+ const tags = new Set();
149
+ // Graph names as tags
150
+ for (const g of signal.graphNames)
151
+ tags.add(g);
152
+ // Node types from evidence
153
+ for (const nid of signal.evidenceNodeIds) {
154
+ const info = nodeInfo.get(nid);
155
+ if (info)
156
+ tags.add(info.type.toLowerCase());
157
+ }
158
+ // KB tags from source graphs
159
+ for (const g of signal.graphNames) {
160
+ const kbTags = graphKBTags.get(g);
161
+ if (kbTags)
162
+ for (const t of kbTags)
163
+ tags.add(t);
164
+ }
165
+ // Signal kind as a tag
166
+ tags.add(signal.kind.replace(/_/g, "-"));
167
+ signal.tags = [...tags];
168
+ }
169
+ }
170
+ // --- Persistence ---
171
+ async save(file) {
172
+ const dir = path.dirname(this.filePath);
173
+ await fs.mkdir(dir, { recursive: true });
174
+ const tmp = `${this.filePath}.tmp`;
175
+ await fs.writeFile(tmp, JSON.stringify(file, null, 2), "utf8");
176
+ await fs.rename(tmp, this.filePath);
177
+ }
178
+ }
179
+ //# sourceMappingURL=signal-store.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"signal-store.js","sourceRoot":"","sources":["../../src/core/signal-store.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,qDAAqD;AACrD,EAAE;AACF,8DAA8D;AAC9D,2DAA2D;AAC3D,0DAA0D;AAC1D,0BAA0B;AAC1B,+DAA+D;AAE/D,OAAO,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACvC,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAYlC,OAAO,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAC1D,OAAO,EAAE,eAAe,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAEjF,MAAM,OAAO,WAAW;IACd,QAAQ,CAAS;IAEzB,YAAY,YAAoB;QAC9B,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,cAAc,CAAC,CAAC;IAC1D,CAAC;IAED,eAAe;IAEf,KAAK,CAAC,IAAI;QACR,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;YACrD,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAe,CAAC;QACvC,CAAC;QAAC,OAAO,GAAQ,EAAE,CAAC;YAClB,IAAI,GAAG,EAAE,IAAI,KAAK,QAAQ,EAAE,CAAC;gBAC3B,OAAO;oBACL,OAAO,EAAE,EAAE;oBACX,SAAS,EAAE,EAAE;oBACb,MAAM,EAAE,EAAE,GAAG,qBAAqB,EAAE;oBACpC,UAAU,EAAE,EAAE;iBACf,CAAC;YACJ,CAAC;YACD,MAAM,GAAG,CAAC;QACZ,CAAC;IACH,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,IAKV;QACC,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;QAC/B,MAAM,YAAY,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC7C,IAAI,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAClE,MAAM,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;QAE5D,IAAI,IAAI,EAAE,KAAK,EAAE,CAAC;YAChB,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAM,CAAC,CAAC,CAAC;QACtE,CAAC;QACD,IAAI,IAAI,EAAE,IAAI,EAAE,CAAC;YACf,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC,CAAC;QACxD,CAAC;QACD,IAAI,IAAI,EAAE,QAAQ,EAAE,CAAC;YACnB,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,IAAI,CAAC,QAAQ,CAAC,CAAC;QAChE,CAAC;QACD,IAAI,IAAI,EAAE,KAAK,EAAE,CAAC;YAChB,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;YACnC,OAAO,GAAG,OAAO,CAAC,MAAM,CACtB,CAAC,CAAC,EAAE,EAAE,CACJ,CAAC,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;gBACjC,CAAC,CAAC,WAAW,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;gBACvC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;gBACrD,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAClD,CAAC;QACJ,CAAC;QAED,OAAO;YACL,OAAO,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC;YAClD,SAAS,EAAE,cAAc;YACzB,UAAU,EAAE,IAAI,CAAC,UAAU;SAC5B,CAAC;IACJ,CAAC;IAED,iBAAiB;IAEjB,KAAK,CAAC,MAAM,CACV,MAAmD,EACnD,IAAsB;QAEtB,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;QAC/B,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,EAAE,GAAG,qBAAqB,EAAE,CAAC;QAC3D,MAAM,EAAE,WAAW,EAAE,aAAa,EAAE,GAAG,MAAM,CAAC;QAE9C,MAAM,UAAU,GAAa,EAAE,CAAC;QAEhC,sBAAsB;QACtB,KAAK,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,MAAM,EAAE,CAAC;YACpC,MAAM,KAAK,GAAuB,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;YAC5D,KAAK,MAAM,QAAQ,IAAI,eAAe,EAAE,CAAC;gBACvC,IAAI,aAAa,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC;oBAAE,SAAS;gBACpD,UAAU,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,MAAM,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC,CAAC;YAC1D,CAAC;QACH,CAAC;QAED,0BAA0B;QAC1B,MAAM,UAAU,GAA8B;YAC5C,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YACnE,IAAI;SACL,CAAC;QACF,KAAK,MAAM,QAAQ,IAAI,uBAAuB,EAAE,CAAC;YAC/C,IAAI,aAAa,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC;gBAAE,SAAS;YACpD,UAAU,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,MAAM,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC,CAAC;QAC/D,CAAC;QAED,gEAAgE;QAChE,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;QAE1C,6CAA6C;QAC7C,MAAM,OAAO,GAAe;YAC1B,OAAO,EAAE,UAAU;YACnB,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,MAAM;YACN,UAAU,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;SACrC,CAAC;QAEF,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAEzB,MAAM,YAAY,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC7C,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAEjE,OAAO;YACL,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC;YACjD,SAAS,EAAE,UAAU,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM;YAC5C,UAAU,EAAE,OAAO,CAAC,UAAU;SAC/B,CAAC;IACJ,CAAC;IAED,kBAAkB;IAElB,KAAK,CAAC,OAAO,CAAC,QAAgB;QAC5B,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;QAC/B,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;YACvC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAChC,CAAC;QACD,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACxB,CAAC;IAED,oBAAoB;IAEpB,KAAK,CAAC,SAAS,CAAC,MAA6B;QAC3C,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;QAC/B,IAAI,MAAM,CAAC,WAAW,KAAK,SAAS,EAAE,CAAC;YACrC,IAAI,CAAC,MAAM,CAAC,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC;QACzE,CAAC;QACD,IAAI,MAAM,CAAC,aAAa,KAAK,SAAS,EAAE,CAAC;YACvC,IAAI,CAAC,MAAM,CAAC,aAAa,GAAG,MAAM,CAAC,aAAa,CAAC;QACnD,CAAC;QACD,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACtB,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAED,yBAAyB;IAEjB,UAAU,CAChB,OAAiB,EACjB,MAAmD,EACnD,IAAsB;QAEtB,8CAA8C;QAC9C,MAAM,QAAQ,GAAG,IAAI,GAAG,EAA+C,CAAC;QACxE,KAAK,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,MAAM,EAAE,CAAC;YACpC,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;gBAC9B,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YAC9D,CAAC;QACH,CAAC;QAED,gEAAgE;QAChE,MAAM,WAAW,GAAG,IAAI,GAAG,EAAuB,CAAC;QACnD,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;YACvB,MAAM,OAAO,GAAG,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC;YAC/B,MAAM,YAAY,GAAG,GAAG,CAAC,YAAY,IAAI,EAAE,CAAC;YAC5C,KAAK,MAAM,CAAC,IAAI,YAAY,EAAE,CAAC;gBAC7B,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC;oBAAE,WAAW,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,GAAG,EAAE,CAAC,CAAC;gBACvD,KAAK,MAAM,CAAC,IAAI,OAAO;oBAAE,WAAW,CAAC,GAAG,CAAC,CAAC,CAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YACtD,CAAC;QACH,CAAC;QAED,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;YAC7B,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;YAE/B,sBAAsB;YACtB,KAAK,MAAM,CAAC,IAAI,MAAM,CAAC,UAAU;gBAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YAE/C,2BAA2B;YAC3B,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,eAAe,EAAE,CAAC;gBACzC,MAAM,IAAI,GAAG,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;gBAC/B,IAAI,IAAI;oBAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;YAC9C,CAAC;YAED,6BAA6B;YAC7B,KAAK,MAAM,CAAC,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;gBAClC,MAAM,MAAM,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;gBAClC,IAAI,MAAM;oBAAE,KAAK,MAAM,CAAC,IAAI,MAAM;wBAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YAClD,CAAC;YAED,uBAAuB;YACvB,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC;YAEzC,MAAM,CAAC,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC;QAC1B,CAAC;IACH,CAAC;IAED,sBAAsB;IAEtB,KAAK,CAAC,IAAI,CAAC,IAAgB;QACzB,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACxC,MAAM,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACzC,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,QAAQ,MAAM,CAAC;QACnC,MAAM,EAAE,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;QAC/D,MAAM,EAAE,CAAC,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;IACtC,CAAC;CACF"}
@@ -0,0 +1,71 @@
1
+ import type { LearningGraphData } from "./types.js";
2
+ import type { KBDocumentMeta } from "./document-store.js";
3
+ /** Structural detectors (no LLM, content-aware graph analysis) */
4
+ export type StructuralSignalKind = "type_ratio_imbalance" | "missing_relationships" | "property_completeness" | "underconnected_important" | "disconnected_island" | "cross_graph_entity" | "kb_graph_gap" | "coverage_asymmetry";
5
+ /** Semantic detectors (LLM-based, v2 placeholder) */
6
+ export type SemanticSignalKind = "kb_contradiction" | "buried_actionable" | "cross_graph_pattern";
7
+ export type SignalKind = StructuralSignalKind | SemanticSignalKind;
8
+ export type SignalCategory = "structural" | "semantic";
9
+ export type SignalSeverity = "critical" | "high" | "medium" | "low";
10
+ export interface Signal {
11
+ /** Deterministic ID: kind + sorted evidence IDs. Same state = same ID. */
12
+ id: string;
13
+ kind: SignalKind;
14
+ category: SignalCategory;
15
+ severity: SignalSeverity;
16
+ /** One-liner: what matters and why. */
17
+ title: string;
18
+ /** Longer explanation with evidence. */
19
+ description: string;
20
+ /** Node IDs that constitute evidence (viewer highlights these). */
21
+ evidenceNodeIds: string[];
22
+ /** KB document IDs that constitute evidence. */
23
+ evidenceDocIds: string[];
24
+ /** Which graph(s) this signal relates to. Can span multiple. */
25
+ graphNames: string[];
26
+ /** Numeric score for ranking (higher = more important). */
27
+ score: number;
28
+ /** Tags derived from source graphs, node types, and KB doc tags. */
29
+ tags: string[];
30
+ }
31
+ export interface SignalFile {
32
+ signals: Signal[];
33
+ dismissed: string[];
34
+ config: SignalConfig;
35
+ computedAt: string;
36
+ }
37
+ export interface SignalConfig {
38
+ /** 0.0 = show nothing, 1.0 = show everything. Default 0.5. */
39
+ sensitivity: number;
40
+ /** Disable specific detector kinds. */
41
+ disabledKinds: SignalKind[];
42
+ }
43
+ export declare const DEFAULT_SIGNAL_CONFIG: SignalConfig;
44
+ /** Input bundle for per-graph detectors. */
45
+ export interface GraphDetectorInput {
46
+ data: LearningGraphData;
47
+ graphName: string;
48
+ }
49
+ /** Input bundle for cross-cutting detectors. */
50
+ export interface CrossCuttingDetectorInput {
51
+ graphs: GraphDetectorInput[];
52
+ docs: KBDocumentMeta[];
53
+ }
54
+ /** A per-graph detector: runs against one graph at a time. */
55
+ export interface GraphSignalDetector {
56
+ kind: SignalKind;
57
+ category: SignalCategory;
58
+ detect(input: GraphDetectorInput, sensitivity: number): Signal[];
59
+ }
60
+ /** A cross-cutting detector: runs across all graphs + KB docs. */
61
+ export interface CrossCuttingSignalDetector {
62
+ kind: SignalKind;
63
+ category: SignalCategory;
64
+ detect(input: CrossCuttingDetectorInput, sensitivity: number): Signal[];
65
+ }
66
+ export interface SignalResult {
67
+ signals: Signal[];
68
+ dismissed: number;
69
+ computedAt: string;
70
+ }
71
+ //# sourceMappingURL=signal-types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"signal-types.d.ts","sourceRoot":"","sources":["../../src/core/signal-types.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AACpD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAI1D,kEAAkE;AAClE,MAAM,MAAM,oBAAoB,GAC5B,sBAAsB,GACtB,uBAAuB,GACvB,uBAAuB,GACvB,0BAA0B,GAC1B,qBAAqB,GACrB,oBAAoB,GACpB,cAAc,GACd,oBAAoB,CAAC;AAEzB,qDAAqD;AACrD,MAAM,MAAM,kBAAkB,GAC1B,kBAAkB,GAClB,mBAAmB,GACnB,qBAAqB,CAAC;AAE1B,MAAM,MAAM,UAAU,GAAG,oBAAoB,GAAG,kBAAkB,CAAC;AAEnE,MAAM,MAAM,cAAc,GAAG,YAAY,GAAG,UAAU,CAAC;AAEvD,MAAM,MAAM,cAAc,GAAG,UAAU,GAAG,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAC;AAIpE,MAAM,WAAW,MAAM;IACrB,0EAA0E;IAC1E,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,UAAU,CAAC;IACjB,QAAQ,EAAE,cAAc,CAAC;IACzB,QAAQ,EAAE,cAAc,CAAC;IACzB,uCAAuC;IACvC,KAAK,EAAE,MAAM,CAAC;IACd,wCAAwC;IACxC,WAAW,EAAE,MAAM,CAAC;IACpB,mEAAmE;IACnE,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,gDAAgD;IAChD,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,gEAAgE;IAChE,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,2DAA2D;IAC3D,KAAK,EAAE,MAAM,CAAC;IACd,oEAAoE;IACpE,IAAI,EAAE,MAAM,EAAE,CAAC;CAChB;AAID,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,MAAM,EAAE,YAAY,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,YAAY;IAC3B,8DAA8D;IAC9D,WAAW,EAAE,MAAM,CAAC;IACpB,uCAAuC;IACvC,aAAa,EAAE,UAAU,EAAE,CAAC;CAC7B;AAED,eAAO,MAAM,qBAAqB,EAAE,YAGnC,CAAC;AAIF,4CAA4C;AAC5C,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,iBAAiB,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,gDAAgD;AAChD,MAAM,WAAW,yBAAyB;IACxC,MAAM,EAAE,kBAAkB,EAAE,CAAC;IAC7B,IAAI,EAAE,cAAc,EAAE,CAAC;CACxB;AAED,8DAA8D;AAC9D,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,UAAU,CAAC;IACjB,QAAQ,EAAE,cAAc,CAAC;IACzB,MAAM,CAAC,KAAK,EAAE,kBAAkB,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;CAClE;AAED,kEAAkE;AAClE,MAAM,WAAW,0BAA0B;IACzC,IAAI,EAAE,UAAU,CAAC;IACjB,QAAQ,EAAE,cAAc,CAAC;IACzB,MAAM,CAAC,KAAK,EAAE,yBAAyB,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;CACzE;AAID,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;CACpB"}
@@ -0,0 +1,12 @@
1
+ // ============================================================
2
+ // Signal types — the third primitive.
3
+ //
4
+ // Signals are derived salience: computed from graph structure
5
+ // and KB content, persisted to disk, regenerable on demand.
6
+ // They answer: "what matters right now and why?"
7
+ // ============================================================
8
+ export const DEFAULT_SIGNAL_CONFIG = {
9
+ sensitivity: 0.5,
10
+ disabledKinds: [],
11
+ };
12
+ //# sourceMappingURL=signal-types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"signal-types.js","sourceRoot":"","sources":["../../src/core/signal-types.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,sCAAsC;AACtC,EAAE;AACF,8DAA8D;AAC9D,4DAA4D;AAC5D,iDAAiD;AACjD,+DAA+D;AAsE/D,MAAM,CAAC,MAAM,qBAAqB,GAAiB;IACjD,WAAW,EAAE,GAAG;IAChB,aAAa,EAAE,EAAE;CAClB,CAAC"}
package/dist/index.d.ts CHANGED
@@ -14,6 +14,9 @@ export type { BackpackEntry, KBMountConfig } from "./core/backpacks-registry.js"
14
14
  export { DocumentStore } from "./core/document-store.js";
15
15
  export type { KBMount, KBDocument, KBDocumentMeta, KBDocumentSummary, KBListResult, KBMountInfo, WikilinkRef, } from "./core/document-store.js";
16
16
  export { parseWikilinks } from "./core/document-store.js";
17
+ export { SignalStore } from "./core/signal-store.js";
18
+ export type { Signal, SignalFile, SignalConfig, SignalResult, SignalKind, SignalCategory, SignalSeverity, GraphSignalDetector, CrossCuttingSignalDetector, } from "./core/signal-types.js";
19
+ export { GRAPH_DETECTORS, CROSS_CUTTING_DETECTORS } from "./core/signal-detectors.js";
17
20
  export { RemoteRegistry, RemoteRegistryError } from "./core/remote-registry.js";
18
21
  export type { RemoteEntry } from "./core/remote-registry.js";
19
22
  export { remoteFetch, RemoteFetchError, isBlockedIp } from "./core/remote-fetch.js";
@@ -25,4 +28,6 @@ export { createEnvelope, parseEnvelope, generateKeyPair, encrypt, decrypt, encod
25
28
  export type { EnvelopeHeader, Envelope, KeyPair, ShareResult, RelayConfig, } from "./sharing/index.js";
26
29
  export { createMcpServer } from "./mcp/server.js";
27
30
  export type { BackpackServerConfig, BackpackLocalConfig, BackpackAppConfig } from "./mcp/server.js";
31
+ export { SyncClient, SyncRelayClient, SyncVersionConflictError, ARTIFACT_KIND_GRAPH, ARTIFACT_KIND_KB_DOC, SYNC_PROTOCOL_VERSION, hashContent as hashSyncContent, parseArtifactId, readSyncState, writeSyncState, deleteSyncState, isStateInitialized, runStartupSync, } from "./sync/index.js";
32
+ export type { SyncClientOptions, RegisterOptions, SyncRelayClientOptions, TokenProvider, ArtifactKind, ArtifactSyncState, BackpackSyncState, ConflictRecord, GraphArtifactContent, KBDocArtifactContent, SyncArtifact, SyncArtifactSummary, SyncBackpack, SyncError, SyncManifest, SyncRunResult, } from "./sync/index.js";
28
33
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AACxC,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AACjE,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,YAAY,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AACvD,YAAY,EACV,IAAI,EACJ,IAAI,EACJ,iBAAiB,EACjB,qBAAqB,EACrB,oBAAoB,EACpB,WAAW,EACX,WAAW,EACX,YAAY,EACZ,YAAY,EACZ,eAAe,EACf,aAAa,EACb,cAAc,EACd,aAAa,GACd,MAAM,iBAAiB,CAAC;AAGzB,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AACjE,OAAO,EACL,mBAAmB,EACnB,gBAAgB,EAChB,aAAa,GACd,MAAM,oCAAoC,CAAC;AAC5C,YAAY,EAAE,QAAQ,EAAE,MAAM,oCAAoC,CAAC;AACnE,OAAO,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AAGrE,OAAO,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAG9E,OAAO,EACL,YAAY,EACZ,aAAa,EACb,WAAW,EACX,gBAAgB,EAChB,kBAAkB,EAClB,iBAAiB,EACjB,iBAAiB,EACjB,WAAW,EACX,WAAW,EACX,UAAU,EACV,aAAa,EACb,WAAW,EACX,YAAY,EACZ,UAAU,EACV,qBAAqB,GACtB,MAAM,8BAA8B,CAAC;AACtC,YAAY,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAGjF,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACzD,YAAY,EACV,OAAO,EACP,UAAU,EACV,cAAc,EACd,iBAAiB,EACjB,YAAY,EACZ,WAAW,EACX,WAAW,GACZ,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAG1D,OAAO,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAChF,YAAY,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAC7D,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACpF,YAAY,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AACpF,OAAO,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAGtG,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,iBAAiB,EAAE,QAAQ,IAAI,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAGlH,OAAO,EAAE,cAAc,EAAE,mBAAmB,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAGpH,OAAO,EACL,cAAc,EACd,aAAa,EACb,eAAe,EACf,OAAO,EACP,OAAO,EACP,oBAAoB,EACpB,qBAAqB,EACrB,iBAAiB,EACjB,YAAY,GACb,MAAM,oBAAoB,CAAC;AAC5B,YAAY,EACV,cAAc,EACd,QAAQ,EACR,OAAO,EACP,WAAW,EACX,WAAW,GACZ,MAAM,oBAAoB,CAAC;AAG5B,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAClD,YAAY,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -15,6 +15,9 @@ export { loadRegistry, listBackpacks, getBackpack, registerBackpack, unregisterB
15
15
  // Knowledge Base (document store)
16
16
  export { DocumentStore } from "./core/document-store.js";
17
17
  export { parseWikilinks } from "./core/document-store.js";
18
+ // Signals (the third primitive)
19
+ export { SignalStore } from "./core/signal-store.js";
20
+ export { GRAPH_DETECTORS, CROSS_CUTTING_DETECTORS } from "./core/signal-detectors.js";
18
21
  // Remote graph registry (subscriptions to graphs hosted at HTTPS URLs)
19
22
  export { RemoteRegistry, RemoteRegistryError } from "./core/remote-registry.js";
20
23
  export { remoteFetch, RemoteFetchError, isBlockedIp } from "./core/remote-fetch.js";
@@ -27,4 +30,6 @@ export { estimateTokens, estimateGraphTokens, computeSavings, formatSavingsFoote
27
30
  export { createEnvelope, parseEnvelope, generateKeyPair, encrypt, decrypt, encodeKeyForFragment, decodeKeyFromFragment, downloadFromRelay, getShareMeta, } from "./sharing/index.js";
28
31
  // MCP server factory
29
32
  export { createMcpServer } from "./mcp/server.js";
33
+ // Sync Protocol v0.1
34
+ export { SyncClient, SyncRelayClient, SyncVersionConflictError, ARTIFACT_KIND_GRAPH, ARTIFACT_KIND_KB_DOC, SYNC_PROTOCOL_VERSION, hashContent as hashSyncContent, parseArtifactId, readSyncState, writeSyncState, deleteSyncState, isStateInitialized, runStartupSync, } from "./sync/index.js";
30
35
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,6EAA6E;AAE7E,OAAO;AACP,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AACxC,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AACjE,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAkB9C,mBAAmB;AACnB,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AACjE,OAAO,EACL,mBAAmB,EACnB,gBAAgB,EAChB,aAAa,GACd,MAAM,oCAAoC,CAAC;AAE5C,OAAO,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AAErE,8EAA8E;AAC9E,OAAO,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAE9E,iDAAiD;AACjD,OAAO,EACL,YAAY,EACZ,aAAa,EACb,WAAW,EACX,gBAAgB,EAChB,kBAAkB,EAClB,iBAAiB,EACjB,iBAAiB,EACjB,WAAW,EACX,WAAW,EACX,UAAU,EACV,aAAa,EACb,WAAW,EACX,YAAY,EACZ,UAAU,EACV,qBAAqB,GACtB,MAAM,8BAA8B,CAAC;AAGtC,kCAAkC;AAClC,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAUzD,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAE1D,uEAAuE;AACvE,OAAO,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAEhF,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAEpF,OAAO,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAEtG,YAAY;AACZ,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,iBAAiB,EAAE,QAAQ,IAAI,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAElH,mBAAmB;AACnB,OAAO,EAAE,cAAc,EAAE,mBAAmB,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAEpH,0DAA0D;AAC1D,OAAO,EACL,cAAc,EACd,aAAa,EACb,eAAe,EACf,OAAO,EACP,OAAO,EACP,oBAAoB,EACpB,qBAAqB,EACrB,iBAAiB,EACjB,YAAY,GACb,MAAM,oBAAoB,CAAC;AAS5B,qBAAqB;AACrB,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,6EAA6E;AAE7E,OAAO;AACP,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AACxC,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AACjE,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAkB9C,mBAAmB;AACnB,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AACjE,OAAO,EACL,mBAAmB,EACnB,gBAAgB,EAChB,aAAa,GACd,MAAM,oCAAoC,CAAC;AAE5C,OAAO,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AAErE,8EAA8E;AAC9E,OAAO,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAE9E,iDAAiD;AACjD,OAAO,EACL,YAAY,EACZ,aAAa,EACb,WAAW,EACX,gBAAgB,EAChB,kBAAkB,EAClB,iBAAiB,EACjB,iBAAiB,EACjB,WAAW,EACX,WAAW,EACX,UAAU,EACV,aAAa,EACb,WAAW,EACX,YAAY,EACZ,UAAU,EACV,qBAAqB,GACtB,MAAM,8BAA8B,CAAC;AAGtC,kCAAkC;AAClC,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAUzD,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAE1D,gCAAgC;AAChC,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAYrD,OAAO,EAAE,eAAe,EAAE,uBAAuB,EAAE,MAAM,4BAA4B,CAAC;AAEtF,uEAAuE;AACvE,OAAO,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAEhF,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAEpF,OAAO,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAEtG,YAAY;AACZ,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,iBAAiB,EAAE,QAAQ,IAAI,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAElH,mBAAmB;AACnB,OAAO,EAAE,cAAc,EAAE,mBAAmB,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAEpH,0DAA0D;AAC1D,OAAO,EACL,cAAc,EACd,aAAa,EACb,eAAe,EACf,OAAO,EACP,OAAO,EACP,oBAAoB,EACpB,qBAAqB,EACrB,iBAAiB,EACjB,YAAY,GACb,MAAM,oBAAoB,CAAC;AAS5B,qBAAqB;AACrB,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAGlD,qBAAqB;AACrB,OAAO,EACL,UAAU,EACV,eAAe,EACf,wBAAwB,EACxB,mBAAmB,EACnB,oBAAoB,EACpB,qBAAqB,EACrB,WAAW,IAAI,eAAe,EAC9B,eAAe,EACf,aAAa,EACb,cAAc,EACd,eAAe,EACf,kBAAkB,EAClB,cAAc,GACf,MAAM,iBAAiB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/mcp/server.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAoBpE,kDAAkD;AAClD,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,OAAO,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,0DAA0D;AAC1D,MAAM,WAAW,sBAAsB;IACrC,IAAI,EAAE,KAAK,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;CACf;AAED,2DAA2D;AAC3D,MAAM,WAAW,sBAAsB;IACrC,IAAI,EAAE,KAAK,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,MAAM,iBAAiB,GAAG,sBAAsB,GAAG,sBAAsB,CAAC;AAChF,MAAM,MAAM,oBAAoB,GAAG,mBAAmB,GAAG,iBAAiB,CAAC;AAE3E;;;;;;GAMG;AACH,wBAAsB,eAAe,CACnC,MAAM,CAAC,EAAE,oBAAoB,GAC5B,OAAO,CAAC,SAAS,CAAC,CAgGpB"}
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/mcp/server.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAqBpE,kDAAkD;AAClD,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,OAAO,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,0DAA0D;AAC1D,MAAM,WAAW,sBAAsB;IACrC,IAAI,EAAE,KAAK,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;CACf;AAED,2DAA2D;AAC3D,MAAM,WAAW,sBAAsB;IACrC,IAAI,EAAE,KAAK,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,MAAM,iBAAiB,GAAG,sBAAsB,GAAG,sBAAsB,CAAC;AAChF,MAAM,MAAM,oBAAoB,GAAG,mBAAmB,GAAG,iBAAiB,CAAC;AAE3E;;;;;;GAMG;AACH,wBAAsB,eAAe,CACnC,MAAM,CAAC,EAAE,oBAAoB,GAC5B,OAAO,CAAC,SAAS,CAAC,CAmGpB"}
@@ -17,6 +17,7 @@ import { registerBackpackTools } from "./tools/backpack-tools.js";
17
17
  import { registerShareTools } from "./tools/share-tools.js";
18
18
  import { registerKBTools } from "./tools/kb-tools.js";
19
19
  import { registerCloudTools } from "./tools/cloud-tools.js";
20
+ import { registerSignalTools } from "./tools/signal-tools.js";
20
21
  import { registerViewerStateResource } from "./viewer-state-resource.js";
21
22
  /**
22
23
  * Create and configure the MCP server.
@@ -77,7 +78,9 @@ If the viewer isn't running, tell the user to start it with: npx backpack-viewer
77
78
 
78
79
  After updating a learning graph, include a link to view it.
79
80
 
80
- Be selective — not every conversation needs to be captured. Focus on knowledge with lasting value: relationships, decisions, architecture, processes, domain concepts, conventions.`,
81
+ Be selective — not every conversation needs to be captured. Focus on knowledge with lasting value: relationships, decisions, architecture, processes, domain concepts, conventions.
82
+
83
+ Signals: after running backpack_signal_detect, automatically enrich the HIGH and MEDIUM signals by rewriting their descriptions with contextual intelligence. Use the evidence node labels, properties, and your knowledge of the graphs/KBs to explain WHY each signal matters and what the user should consider doing. Then call backpack_signal_enrich with the enriched descriptions to persist them. This makes signals actionable instead of diagnostic.`,
81
84
  });
82
85
  // The remote graph registry lives parallel to the local storage. It only
83
86
  // matters when running against the local file backend (cloud users get
@@ -100,6 +103,7 @@ Be selective — not every conversation needs to be captured. Focus on knowledge
100
103
  if (!config || config.mode === "local") {
101
104
  registerBackpackTools(server, backpack);
102
105
  registerKBTools(server, backpack);
106
+ registerSignalTools(server, backpack);
103
107
  registerCloudTools(server, backpack);
104
108
  }
105
109
  // Viewer-state bridge: exposes the local viewer's current selection /
@@ -1 +1 @@
1
- {"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/mcp/server.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/mcp/server.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2
+ import type { Backpack } from "../../core/backpack.js";
3
+ export declare function registerSignalTools(server: McpServer, backpack: Backpack): void;
4
+ //# sourceMappingURL=signal-tools.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"signal-tools.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/signal-tools.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEzE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAIvD,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,SAAS,EACjB,QAAQ,EAAE,QAAQ,GACjB,IAAI,CAiVN"}