twining-mcp 1.4.0 → 1.4.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.
Files changed (53) hide show
  1. package/README.md +119 -106
  2. package/dist/config.d.ts.map +1 -1
  3. package/dist/config.js +2 -1
  4. package/dist/config.js.map +1 -1
  5. package/dist/dashboard/public/app.js +140 -9
  6. package/dist/dashboard/public/index.html +19 -1
  7. package/dist/dashboard/public/style.css +123 -3
  8. package/dist/embeddings/search.d.ts.map +1 -1
  9. package/dist/embeddings/search.js +5 -2
  10. package/dist/embeddings/search.js.map +1 -1
  11. package/dist/engine/archiver.d.ts.map +1 -1
  12. package/dist/engine/archiver.js +15 -11
  13. package/dist/engine/archiver.js.map +1 -1
  14. package/dist/engine/blackboard.d.ts +6 -1
  15. package/dist/engine/blackboard.d.ts.map +1 -1
  16. package/dist/engine/blackboard.js +16 -0
  17. package/dist/engine/blackboard.js.map +1 -1
  18. package/dist/engine/context-assembler.d.ts +6 -0
  19. package/dist/engine/context-assembler.d.ts.map +1 -1
  20. package/dist/engine/context-assembler.js +69 -14
  21. package/dist/engine/context-assembler.js.map +1 -1
  22. package/dist/engine/verify.d.ts +8 -2
  23. package/dist/engine/verify.d.ts.map +1 -1
  24. package/dist/engine/verify.js +27 -9
  25. package/dist/engine/verify.js.map +1 -1
  26. package/dist/server.d.ts.map +1 -1
  27. package/dist/server.js +3 -1
  28. package/dist/server.js.map +1 -1
  29. package/dist/storage/decision-store.d.ts.map +1 -1
  30. package/dist/storage/decision-store.js +8 -18
  31. package/dist/storage/decision-store.js.map +1 -1
  32. package/dist/storage/handoff-store.d.ts +1 -1
  33. package/dist/storage/handoff-store.d.ts.map +1 -1
  34. package/dist/storage/handoff-store.js +45 -17
  35. package/dist/storage/handoff-store.js.map +1 -1
  36. package/dist/tools/blackboard-tools.d.ts.map +1 -1
  37. package/dist/tools/blackboard-tools.js +4 -1
  38. package/dist/tools/blackboard-tools.js.map +1 -1
  39. package/dist/tools/context-tools.d.ts.map +1 -1
  40. package/dist/tools/context-tools.js +3 -0
  41. package/dist/tools/context-tools.js.map +1 -1
  42. package/dist/tools/graph-tools.d.ts.map +1 -1
  43. package/dist/tools/graph-tools.js +6 -4
  44. package/dist/tools/graph-tools.js.map +1 -1
  45. package/dist/tools/lifecycle-tools.d.ts.map +1 -1
  46. package/dist/tools/lifecycle-tools.js +3 -0
  47. package/dist/tools/lifecycle-tools.js.map +1 -1
  48. package/dist/utils/types.d.ts +1 -0
  49. package/dist/utils/types.d.ts.map +1 -1
  50. package/package.json +1 -1
  51. package/src/dashboard/public/app.js +140 -9
  52. package/src/dashboard/public/index.html +19 -1
  53. package/src/dashboard/public/style.css +123 -3
@@ -168,6 +168,87 @@ main {
168
168
  font-weight: 700;
169
169
  }
170
170
 
171
+ .stats-section {
172
+ margin-top: 2rem;
173
+ }
174
+
175
+ .stats-section-title {
176
+ font-size: 1.125rem;
177
+ font-weight: 600;
178
+ margin-bottom: 1rem;
179
+ color: var(--text);
180
+ }
181
+
182
+ .activity-breakdown {
183
+ display: grid;
184
+ grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));
185
+ gap: 0.75rem;
186
+ margin-bottom: 1.5rem;
187
+ }
188
+
189
+ .activity-item {
190
+ background: var(--card-bg);
191
+ border: 1px solid var(--card-border);
192
+ border-radius: 6px;
193
+ padding: 0.875rem;
194
+ display: flex;
195
+ justify-content: space-between;
196
+ align-items: center;
197
+ }
198
+
199
+ .activity-item-label {
200
+ font-size: 0.8125rem;
201
+ color: var(--muted);
202
+ }
203
+
204
+ .activity-item-count {
205
+ font-size: 1.25rem;
206
+ font-weight: 600;
207
+ color: var(--accent);
208
+ }
209
+
210
+ .recent-activity {
211
+ background: var(--card-bg);
212
+ border: 1px solid var(--card-border);
213
+ border-radius: 8px;
214
+ padding: 1rem;
215
+ max-height: 400px;
216
+ overflow-y: auto;
217
+ }
218
+
219
+ .activity-entry {
220
+ padding: 0.75rem;
221
+ border-bottom: 1px solid var(--card-border);
222
+ }
223
+
224
+ .activity-entry:last-child {
225
+ border-bottom: none;
226
+ }
227
+
228
+ .activity-entry-header {
229
+ display: flex;
230
+ justify-content: space-between;
231
+ align-items: center;
232
+ margin-bottom: 0.25rem;
233
+ }
234
+
235
+ .activity-entry-type {
236
+ font-size: 0.75rem;
237
+ font-weight: 600;
238
+ text-transform: uppercase;
239
+ }
240
+
241
+ .activity-entry-time {
242
+ font-size: 0.6875rem;
243
+ color: var(--muted);
244
+ }
245
+
246
+ .activity-entry-summary {
247
+ font-size: 0.8125rem;
248
+ color: var(--text);
249
+ margin-top: 0.25rem;
250
+ }
251
+
171
252
  .content-area {
172
253
  display: grid;
173
254
  grid-template-columns: 1fr 380px;
@@ -617,18 +698,57 @@ footer p {
617
698
  /* ========== Visualization Containers ========== */
618
699
 
619
700
  #timeline-container {
620
- height: 400px;
621
- overflow: hidden;
701
+ height: 600px;
702
+ overflow: auto;
622
703
  border: 1px solid var(--card-border);
623
704
  border-radius: 4px;
624
705
  background: var(--card-bg);
625
706
  }
626
707
 
627
708
  #graph-canvas {
628
- height: 500px;
709
+ height: 700px;
629
710
  border: 1px solid var(--card-border);
630
711
  border-radius: 4px;
631
712
  background: var(--card-bg);
713
+ position: relative;
714
+ }
715
+
716
+ .graph-controls {
717
+ position: absolute;
718
+ top: 10px;
719
+ right: 10px;
720
+ z-index: 100;
721
+ display: flex;
722
+ flex-direction: column;
723
+ gap: 6px;
724
+ }
725
+
726
+ .graph-controls button {
727
+ width: 36px;
728
+ height: 36px;
729
+ background: var(--card-bg);
730
+ border: 1px solid var(--card-border);
731
+ border-radius: 4px;
732
+ color: var(--text);
733
+ font-size: 18px;
734
+ font-weight: bold;
735
+ cursor: pointer;
736
+ display: flex;
737
+ align-items: center;
738
+ justify-content: center;
739
+ transition: all 0.2s;
740
+ box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
741
+ }
742
+
743
+ .graph-controls button:hover {
744
+ background: var(--accent);
745
+ color: white;
746
+ border-color: var(--accent);
747
+ transform: scale(1.05);
748
+ }
749
+
750
+ .graph-controls button:active {
751
+ transform: scale(0.95);
632
752
  }
633
753
 
634
754
  /* ========== Graph Legend ========== */
@@ -1 +1 @@
1
- {"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../../src/embeddings/search.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,KAAK,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAEnE,MAAM,WAAW,sBAAsB;IACrC,KAAK,EAAE,eAAe,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,oBAAoB;IACnC,QAAQ,EAAE,QAAQ,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,aAAa,CAAC,CAAC;IAC9B,OAAO,EAAE,CAAC,EAAE,CAAC;IACb,aAAa,EAAE,OAAO,CAAC;CACxB;AAED,qBAAa,YAAY;IACvB,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAW;IACpC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAe;gBAEhC,QAAQ,EAAE,QAAQ,EAAE,YAAY,EAAE,YAAY;IAK1D,4EAA4E;IACtE,gBAAgB,CACpB,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,eAAe,EAAE,EAC1B,OAAO,CAAC,EAAE;QAAE,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,GACnD,OAAO,CAAC,aAAa,CAAC,sBAAsB,CAAC,CAAC;IA4EjD,mEAAmE;IAC7D,eAAe,CACnB,KAAK,EAAE,MAAM,EACb,SAAS,EAAE,QAAQ,EAAE,EACrB,OAAO,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,GAC3B,OAAO,CAAC,aAAa,CAAC,oBAAoB,CAAC,CAAC;CAmEhD;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,MAAM,EAAE,GAAG,MAAM,CAOjE;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAC3B,KAAK,EAAE,MAAM,EACb,KAAK,EAAE;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,EAAE,EACrC,KAAK,EAAE,MAAM,GACZ;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,EAAE,CAiCjC"}
1
+ {"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../../src/embeddings/search.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,KAAK,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAEnE,MAAM,WAAW,sBAAsB;IACrC,KAAK,EAAE,eAAe,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,oBAAoB;IACnC,QAAQ,EAAE,QAAQ,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,aAAa,CAAC,CAAC;IAC9B,OAAO,EAAE,CAAC,EAAE,CAAC;IACb,aAAa,EAAE,OAAO,CAAC;CACxB;AAED,qBAAa,YAAY;IACvB,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAW;IACpC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAe;gBAEhC,QAAQ,EAAE,QAAQ,EAAE,YAAY,EAAE,YAAY;IAK1D,4EAA4E;IACtE,gBAAgB,CACpB,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,eAAe,EAAE,EAC1B,OAAO,CAAC,EAAE;QAAE,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,GACnD,OAAO,CAAC,aAAa,CAAC,sBAAsB,CAAC,CAAC;IA4EjD,mEAAmE;IAC7D,eAAe,CACnB,KAAK,EAAE,MAAM,EACb,SAAS,EAAE,QAAQ,EAAE,EACrB,OAAO,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,GAC3B,OAAO,CAAC,aAAa,CAAC,oBAAoB,CAAC,CAAC;CAmEhD;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,MAAM,EAAE,GAAG,MAAM,CAYjE;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAC3B,KAAK,EAAE,MAAM,EACb,KAAK,EAAE;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,EAAE,EACrC,KAAK,EAAE,MAAM,GACZ;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,EAAE,CAiCjC"}
@@ -128,9 +128,12 @@ export class SearchEngine {
128
128
  * simplifies to the dot product.
129
129
  */
130
130
  export function cosineSimilarity(a, b) {
131
+ if (a.length !== b.length) {
132
+ console.error(`[twining] Cosine similarity dimension mismatch: ${a.length} vs ${b.length}. Returning 0.`);
133
+ return 0;
134
+ }
131
135
  let sum = 0;
132
- const len = Math.min(a.length, b.length);
133
- for (let i = 0; i < len; i++) {
136
+ for (let i = 0; i < a.length; i++) {
134
137
  sum += a[i] * b[i];
135
138
  }
136
139
  return sum;
@@ -1 +1 @@
1
- {"version":3,"file":"search.js","sourceRoot":"","sources":["../../src/embeddings/search.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"search.js","sourceRoot":"","sources":["../../src/embeddings/search.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"archiver.d.ts","sourceRoot":"","sources":["../../src/engine/archiver.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AACtE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACxD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;AAQnE,qBAAa,QAAQ;IACnB,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IACpC,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAkB;IAClD,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAmB;IACpD,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAsB;gBAGjD,UAAU,EAAE,MAAM,EAClB,eAAe,EAAE,eAAe,EAChC,gBAAgB,EAAE,gBAAgB,EAClC,YAAY,EAAE,YAAY,GAAG,IAAI;IAQnC;;;;;OAKG;IACG,OAAO,CAAC,OAAO,CAAC,EAAE;QACtB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,cAAc,CAAC,EAAE,OAAO,CAAC;QACzB,SAAS,CAAC,EAAE,OAAO,CAAC;KACrB,GAAG,OAAO,CAAC;QACV,cAAc,EAAE,MAAM,CAAC;QACvB,YAAY,EAAE,MAAM,CAAC;QACrB,OAAO,CAAC,EAAE,MAAM,CAAC;KAClB,CAAC;IA0GF,0DAA0D;IAC1D,OAAO,CAAC,YAAY;CA8BrB"}
1
+ {"version":3,"file":"archiver.d.ts","sourceRoot":"","sources":["../../src/engine/archiver.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AACtE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACxD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;AAQnE,qBAAa,QAAQ;IACnB,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IACpC,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAkB;IAClD,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAmB;IACpD,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAsB;gBAGjD,UAAU,EAAE,MAAM,EAClB,eAAe,EAAE,eAAe,EAChC,gBAAgB,EAAE,gBAAgB,EAClC,YAAY,EAAE,YAAY,GAAG,IAAI;IAQnC;;;;;OAKG;IACG,OAAO,CAAC,OAAO,CAAC,EAAE;QACtB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,cAAc,CAAC,EAAE,OAAO,CAAC;QACzB,SAAS,CAAC,EAAE,OAAO,CAAC;KACrB,GAAG,OAAO,CAAC;QACV,cAAc,EAAE,MAAM,CAAC;QACvB,YAAY,EAAE,MAAM,CAAC;QACrB,OAAO,CAAC,EAAE,MAAM,CAAC;KAClB,CAAC;IA8GF,0DAA0D;IAC1D,OAAO,CAAC,YAAY;CA8BrB"}
@@ -7,7 +7,7 @@
7
7
  import fs from "node:fs";
8
8
  import path from "node:path";
9
9
  import lockfile from "proper-lockfile";
10
- import { readJSONL, appendJSONL, ensureDir } from "../storage/file-store.js";
10
+ import { ensureDir } from "../storage/file-store.js";
11
11
  const LOCK_OPTIONS = {
12
12
  retries: { retries: 10, factor: 1.5, minTimeout: 50, maxTimeout: 1000 },
13
13
  stale: 10000,
@@ -45,6 +45,7 @@ export class Archiver {
45
45
  const release = await lockfile.lock(bbPath, LOCK_OPTIONS);
46
46
  let toArchive = [];
47
47
  let toKeep = [];
48
+ let archiveFile = "";
48
49
  try {
49
50
  // Read all entries (no lock needed since we hold it)
50
51
  const content = fs.readFileSync(bbPath, "utf-8");
@@ -76,7 +77,19 @@ export class Archiver {
76
77
  if (toArchive.length === 0) {
77
78
  return { archived_count: 0, archive_file: "" };
78
79
  }
79
- // Rewrite blackboard with only kept entries
80
+ // Write archived entries to archive file BEFORE rewriting blackboard.
81
+ // This ensures entries exist in the archive before being removed from
82
+ // the blackboard, preventing data loss on crash.
83
+ const archiveDir = path.join(this.twiningDir, "archive");
84
+ ensureDir(archiveDir);
85
+ const dateStr = cutoff.slice(0, 10); // YYYY-MM-DD
86
+ archiveFile = path.join(archiveDir, `${dateStr}-blackboard.jsonl`);
87
+ // Direct append (no nested lock since we already hold the blackboard lock)
88
+ const archiveContent = toArchive
89
+ .map((e) => JSON.stringify(e))
90
+ .join("\n") + "\n";
91
+ fs.appendFileSync(archiveFile, archiveContent);
92
+ // Now rewrite blackboard with only kept entries
80
93
  const keptContent = toKeep.length > 0
81
94
  ? toKeep.map((e) => JSON.stringify(e)).join("\n") + "\n"
82
95
  : "";
@@ -85,15 +98,6 @@ export class Archiver {
85
98
  finally {
86
99
  await release();
87
100
  }
88
- // Write archived entries to archive file (outside blackboard lock)
89
- const archiveDir = path.join(this.twiningDir, "archive");
90
- ensureDir(archiveDir);
91
- const dateStr = cutoff.slice(0, 10); // YYYY-MM-DD
92
- const archiveFile = path.join(archiveDir, `${dateStr}-blackboard.jsonl`);
93
- // Append each archived entry to the archive file
94
- for (const entry of toArchive) {
95
- await appendJSONL(archiveFile, entry);
96
- }
97
101
  // Remove archived entry embeddings (best-effort)
98
102
  if (this.indexManager) {
99
103
  try {
@@ -1 +1 @@
1
- {"version":3,"file":"archiver.js","sourceRoot":"","sources":["../../src/engine/archiver.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"archiver.js","sourceRoot":"","sources":["../../src/engine/archiver.ts"],"names":[],"mappings":"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"}
@@ -4,16 +4,21 @@
4
4
  * Generates embeddings on post (Phase 2) with graceful fallback.
5
5
  */
6
6
  import { BlackboardStore } from "../storage/blackboard-store.js";
7
- import type { BlackboardEntry } from "../utils/types.js";
7
+ import type { BlackboardEntry, TwiningConfig } from "../utils/types.js";
8
8
  import type { Embedder } from "../embeddings/embedder.js";
9
9
  import type { IndexManager } from "../embeddings/index-manager.js";
10
10
  import type { SearchEngine, BlackboardSearchResult } from "../embeddings/search.js";
11
+ import type { Archiver } from "./archiver.js";
11
12
  export declare class BlackboardEngine {
12
13
  private readonly store;
13
14
  private readonly embedder;
14
15
  private readonly indexManager;
15
16
  private readonly searchEngine;
17
+ private archiver;
18
+ private archiveThreshold;
16
19
  constructor(store: BlackboardStore, embedder?: Embedder | null, indexManager?: IndexManager | null, searchEngine?: SearchEngine | null);
20
+ /** Inject archiver for threshold-based auto-archiving (spec §6.1.3). */
21
+ setArchiver(archiver: Archiver, config: TwiningConfig): void;
17
22
  /** Post a new blackboard entry with validation and defaults. */
18
23
  post(input: {
19
24
  entry_type: string;
@@ -1 +1 @@
1
- {"version":3,"file":"blackboard.d.ts","sourceRoot":"","sources":["../../src/engine/blackboard.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AAEjE,OAAO,KAAK,EAAE,eAAe,EAAa,MAAM,mBAAmB,CAAC;AAEpE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;AACnE,OAAO,KAAK,EAAE,YAAY,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AAEpF,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAkB;IACxC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAkB;IAC3C,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAsB;IACnD,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAsB;gBAGjD,KAAK,EAAE,eAAe,EACtB,QAAQ,CAAC,EAAE,QAAQ,GAAG,IAAI,EAC1B,YAAY,CAAC,EAAE,YAAY,GAAG,IAAI,EAClC,YAAY,CAAC,EAAE,YAAY,GAAG,IAAI;IAQpC,gEAAgE;IAC1D,IAAI,CAAC,KAAK,EAAE;QAChB,UAAU,EAAE,MAAM,CAAC;QACnB,OAAO,EAAE,MAAM,CAAC;QAChB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;QAChB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;QACtB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,SAAS,CAAC,EAAE,OAAO,CAAC;KACrB,GAAG,OAAO,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC;IAuD9C,qDAAqD;IAC/C,IAAI,CAAC,OAAO,CAAC,EAAE;QACnB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;QACvB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;QAChB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB,GAAG,OAAO,CAAC;QAAE,OAAO,EAAE,eAAe,EAAE,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,CAAC;IAUhE,oEAAoE;IAC9D,KAAK,CACT,KAAK,EAAE,MAAM,EACb,OAAO,CAAC,EAAE;QAAE,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,GACnD,OAAO,CAAC;QACT,OAAO,EAAE,sBAAsB,EAAE,CAAC;QAClC,aAAa,EAAE,OAAO,CAAC;KACxB,CAAC;IAcF,kEAAkE;IAC5D,MAAM,CACV,CAAC,CAAC,EAAE,MAAM,EACV,WAAW,CAAC,EAAE,MAAM,EAAE,GACrB,OAAO,CAAC;QAAE,OAAO,EAAE,eAAe,EAAE,CAAA;KAAE,CAAC;CAI3C"}
1
+ {"version":3,"file":"blackboard.d.ts","sourceRoot":"","sources":["../../src/engine/blackboard.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AAEjE,OAAO,KAAK,EAAE,eAAe,EAAa,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAEnF,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;AACnE,OAAO,KAAK,EAAE,YAAY,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AACpF,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAE9C,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAkB;IACxC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAkB;IAC3C,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAsB;IACnD,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAsB;IACnD,OAAO,CAAC,QAAQ,CAAyB;IACzC,OAAO,CAAC,gBAAgB,CAAuB;gBAG7C,KAAK,EAAE,eAAe,EACtB,QAAQ,CAAC,EAAE,QAAQ,GAAG,IAAI,EAC1B,YAAY,CAAC,EAAE,YAAY,GAAG,IAAI,EAClC,YAAY,CAAC,EAAE,YAAY,GAAG,IAAI;IAQpC,wEAAwE;IACxE,WAAW,CAAC,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,aAAa,GAAG,IAAI;IAK5D,gEAAgE;IAC1D,IAAI,CAAC,KAAK,EAAE;QAChB,UAAU,EAAE,MAAM,CAAC;QACnB,OAAO,EAAE,MAAM,CAAC;QAChB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;QAChB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;QACtB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,SAAS,CAAC,EAAE,OAAO,CAAC;KACrB,GAAG,OAAO,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC;IAiE9C,qDAAqD;IAC/C,IAAI,CAAC,OAAO,CAAC,EAAE;QACnB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;QACvB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;QAChB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB,GAAG,OAAO,CAAC;QAAE,OAAO,EAAE,eAAe,EAAE,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,CAAC;IAUhE,oEAAoE;IAC9D,KAAK,CACT,KAAK,EAAE,MAAM,EACb,OAAO,CAAC,EAAE;QAAE,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,GACnD,OAAO,CAAC;QACT,OAAO,EAAE,sBAAsB,EAAE,CAAC;QAClC,aAAa,EAAE,OAAO,CAAC;KACxB,CAAC;IAcF,kEAAkE;IAC5D,MAAM,CACV,CAAC,CAAC,EAAE,MAAM,EACV,WAAW,CAAC,EAAE,MAAM,EAAE,GACrB,OAAO,CAAC;QAAE,OAAO,EAAE,eAAe,EAAE,CAAA;KAAE,CAAC;CAI3C"}
@@ -11,12 +11,19 @@ export class BlackboardEngine {
11
11
  embedder;
12
12
  indexManager;
13
13
  searchEngine;
14
+ archiver = null;
15
+ archiveThreshold = null;
14
16
  constructor(store, embedder, indexManager, searchEngine) {
15
17
  this.store = store;
16
18
  this.embedder = embedder ?? null;
17
19
  this.indexManager = indexManager ?? null;
18
20
  this.searchEngine = searchEngine ?? null;
19
21
  }
22
+ /** Inject archiver for threshold-based auto-archiving (spec §6.1.3). */
23
+ setArchiver(archiver, config) {
24
+ this.archiver = archiver;
25
+ this.archiveThreshold = config.archive.max_blackboard_entries_before_archive;
26
+ }
20
27
  /** Post a new blackboard entry with validation and defaults. */
21
28
  async post(input) {
22
29
  // Validate entry_type
@@ -57,6 +64,15 @@ export class BlackboardEngine {
57
64
  console.error("[twining] Embedding generation failed (non-fatal):", error);
58
65
  }
59
66
  }
67
+ // Auto-archive if threshold exceeded (fire-and-forget, non-fatal) — spec §6.1.3
68
+ if (this.archiver && this.archiveThreshold) {
69
+ const { total_count } = await this.store.read();
70
+ if (total_count >= this.archiveThreshold) {
71
+ this.archiver.archive({ summarize: true }).catch((err) => {
72
+ console.error("[twining] Auto-archive failed (non-fatal):", err);
73
+ });
74
+ }
75
+ }
60
76
  return { id: entry.id, timestamp: entry.timestamp };
61
77
  }
62
78
  /** Read blackboard entries with optional filters. */
@@ -1 +1 @@
1
- {"version":3,"file":"blackboard.js","sourceRoot":"","sources":["../../src/engine/blackboard.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AACjE,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEhD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAKlD,MAAM,OAAO,gBAAgB;IACV,KAAK,CAAkB;IACvB,QAAQ,CAAkB;IAC1B,YAAY,CAAsB;IAClC,YAAY,CAAsB;IAEnD,YACE,KAAsB,EACtB,QAA0B,EAC1B,YAAkC,EAClC,YAAkC;QAElC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,QAAQ,GAAG,QAAQ,IAAI,IAAI,CAAC;QACjC,IAAI,CAAC,YAAY,GAAG,YAAY,IAAI,IAAI,CAAC;QACzC,IAAI,CAAC,YAAY,GAAG,YAAY,IAAI,IAAI,CAAC;IAC3C,CAAC;IAED,gEAAgE;IAChE,KAAK,CAAC,IAAI,CAAC,KASV;QACC,sBAAsB;QACtB,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,KAAK,CAAC,UAAuB,CAAC,EAAE,CAAC;YACzD,MAAM,IAAI,YAAY,CACpB,uBAAuB,KAAK,CAAC,UAAU,sBAAsB,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EACrF,eAAe,CAChB,CAAC;QACJ,CAAC;QAED,sFAAsF;QACtF,IAAI,KAAK,CAAC,UAAU,KAAK,UAAU,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC;YACxD,MAAM,IAAI,YAAY,CACpB,wJAAwJ,EACxJ,eAAe,CAChB,CAAC;QACJ,CAAC;QAED,0BAA0B;QAC1B,IAAI,CAAC,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACjD,MAAM,IAAI,YAAY,CAAC,qBAAqB,EAAE,eAAe,CAAC,CAAC;QACjE,CAAC;QACD,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,GAAG,GAAG,EAAE,CAAC;YAC/B,MAAM,IAAI,YAAY,CACpB,wCAAwC,EACxC,eAAe,CAChB,CAAC;QACJ,CAAC;QAED,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;YACpC,UAAU,EAAE,KAAK,CAAC,UAAuB;YACzC,OAAO,EAAE,KAAK,CAAC,OAAO;YACtB,MAAM,EAAE,KAAK,CAAC,MAAM,IAAI,EAAE;YAC1B,IAAI,EAAE,KAAK,CAAC,IAAI,IAAI,EAAE;YACtB,KAAK,EAAE,KAAK,CAAC,KAAK,IAAI,SAAS;YAC/B,UAAU,EAAE,KAAK,CAAC,UAAU;YAC5B,QAAQ,EAAE,KAAK,CAAC,QAAQ,IAAI,MAAM;SACnC,CAAC,CAAC;QAEH,8EAA8E;QAC9E,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;YACvC,IAAI,CAAC;gBACH,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,GAAG,GAAG,GAAG,KAAK,CAAC,MAAM,CAAC;gBAChD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBAC/C,IAAI,MAAM,EAAE,CAAC;oBACX,MAAM,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,YAAY,EAAE,KAAK,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;gBACnE,CAAC;YACH,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,4CAA4C;gBAC5C,OAAO,CAAC,KAAK,CAAC,oDAAoD,EAAE,KAAK,CAAC,CAAC;YAC7E,CAAC;QACH,CAAC;QAED,OAAO,EAAE,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,SAAS,EAAE,KAAK,CAAC,SAAS,EAAE,CAAC;IACtD,CAAC;IAED,qDAAqD;IACrD,KAAK,CAAC,IAAI,CAAC,OAMV;QACC,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;YACrB,WAAW,EAAE,OAAO,EAAE,WAAW;YACjC,IAAI,EAAE,OAAO,EAAE,IAAI;YACnB,KAAK,EAAE,OAAO,EAAE,KAAK;YACrB,KAAK,EAAE,OAAO,EAAE,KAAK;YACrB,KAAK,EAAE,OAAO,EAAE,KAAK,IAAI,EAAE;SAC5B,CAAC,CAAC;IACL,CAAC;IAED,oEAAoE;IACpE,KAAK,CAAC,KAAK,CACT,KAAa,EACb,OAAoD;QAKpD,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;YACvB,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC;QAC9C,CAAC;QAED,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;QAC5C,MAAM,KAAK,GAAG,OAAO,EAAE,KAAK,IAAI,EAAE,CAAC;QAEnC,OAAO,IAAI,CAAC,YAAY,CAAC,gBAAgB,CAAC,KAAK,EAAE,OAAO,EAAE;YACxD,WAAW,EAAE,OAAO,EAAE,WAAW;YACjC,KAAK;SACN,CAAC,CAAC;IACL,CAAC;IAED,kEAAkE;IAClE,KAAK,CAAC,MAAM,CACV,CAAU,EACV,WAAsB;QAEtB,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC;QACxD,OAAO,EAAE,OAAO,EAAE,CAAC;IACrB,CAAC;CACF"}
1
+ {"version":3,"file":"blackboard.js","sourceRoot":"","sources":["../../src/engine/blackboard.ts"],"names":[],"mappings":"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"}
@@ -40,6 +40,12 @@ export declare class ContextAssembler {
40
40
  * Implements spec section 4.3 (twining_what_changed).
41
41
  */
42
42
  whatChanged(since: string, scope?: string): Promise<WhatChangedResult>;
43
+ /**
44
+ * Compute graph connectivity boost for decisions (spec §5.5).
45
+ * Decisions whose affected_files/symbols have more graph relations
46
+ * to the scope get a higher boost (0.0 to 1.0).
47
+ */
48
+ private computeGraphConnectivity;
43
49
  /**
44
50
  * Populate related_entities from the knowledge graph.
45
51
  * Finds entities matching the scope and gets their immediate neighbors.
@@ -1 +1 @@
1
- {"version":3,"file":"context-assembler.d.ts","sourceRoot":"","sources":["../../src/engine/context-assembler.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AACtE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAClE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAC9C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAC5D,OAAO,KAAK,EACV,gBAAgB,EAGhB,eAAe,EACf,aAAa,EACb,iBAAiB,EAClB,MAAM,mBAAmB,CAAC;AAkB3B,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAkB;IAClD,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAgB;IAC9C,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAsB;IACnD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAgB;IACvC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAqB;IACjD,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAwB;IACvD,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAsB;IACnD,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAoB;IAE/C,qFAAqF;IACrF,OAAO,CAAC,QAAQ,CAAC,WAAW,CAA6B;gBAGvD,eAAe,EAAE,eAAe,EAChC,aAAa,EAAE,aAAa,EAC5B,YAAY,EAAE,YAAY,GAAG,IAAI,EACjC,MAAM,EAAE,aAAa,EACrB,WAAW,CAAC,EAAE,WAAW,GAAG,IAAI,EAChC,cAAc,CAAC,EAAE,cAAc,GAAG,IAAI,EACtC,YAAY,CAAC,EAAE,YAAY,GAAG,IAAI,EAClC,UAAU,CAAC,EAAE,UAAU,GAAG,IAAI;IAYhC,0EAA0E;IAC1E,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAI3C;;;OAGG;IACG,QAAQ,CACZ,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,EACb,SAAS,CAAC,EAAE,MAAM,EAClB,OAAO,CAAC,EAAE,MAAM,GACf,OAAO,CAAC,gBAAgB,CAAC;IAqV5B;;;OAGG;IACG,SAAS,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC;IA8EzD;;;OAGG;IACG,WAAW,CACf,KAAK,EAAE,MAAM,EACb,KAAK,CAAC,EAAE,MAAM,GACb,OAAO,CAAC,iBAAiB,CAAC;IAuD7B;;;;OAIG;YACW,kBAAkB;IA2ChC,qDAAqD;IACrD,OAAO,CAAC,YAAY;IAMpB,sDAAsD;IACtD,OAAO,CAAC,eAAe;CAYxB"}
1
+ {"version":3,"file":"context-assembler.d.ts","sourceRoot":"","sources":["../../src/engine/context-assembler.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AACtE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAClE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAC9C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAC5D,OAAO,KAAK,EACV,gBAAgB,EAGhB,eAAe,EACf,aAAa,EACb,iBAAiB,EAClB,MAAM,mBAAmB,CAAC;AAkB3B,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAkB;IAClD,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAgB;IAC9C,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAsB;IACnD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAgB;IACvC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAqB;IACjD,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAwB;IACvD,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAsB;IACnD,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAoB;IAE/C,qFAAqF;IACrF,OAAO,CAAC,QAAQ,CAAC,WAAW,CAA6B;gBAGvD,eAAe,EAAE,eAAe,EAChC,aAAa,EAAE,aAAa,EAC5B,YAAY,EAAE,YAAY,GAAG,IAAI,EACjC,MAAM,EAAE,aAAa,EACrB,WAAW,CAAC,EAAE,WAAW,GAAG,IAAI,EAChC,cAAc,CAAC,EAAE,cAAc,GAAG,IAAI,EACtC,YAAY,CAAC,EAAE,YAAY,GAAG,IAAI,EAClC,UAAU,CAAC,EAAE,UAAU,GAAG,IAAI;IAYhC,0EAA0E;IAC1E,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAI3C;;;OAGG;IACG,QAAQ,CACZ,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,EACb,SAAS,CAAC,EAAE,MAAM,EAClB,OAAO,CAAC,EAAE,MAAM,GACf,OAAO,CAAC,gBAAgB,CAAC;IAqW5B;;;OAGG;IACG,SAAS,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC;IA8EzD;;;OAGG;IACG,WAAW,CACf,KAAK,EAAE,MAAM,EACb,KAAK,CAAC,EAAE,MAAM,GACb,OAAO,CAAC,iBAAiB,CAAC;IAuD7B;;;;OAIG;YACW,wBAAwB;IA4DtC;;;;OAIG;YACW,kBAAkB;IA2ChC,qDAAqD;IACrD,OAAO,CAAC,YAAY;IAMpB,sDAAsD;IACtD,OAAO,CAAC,eAAe;CAYxB"}
@@ -103,17 +103,22 @@ export class ContextAssembler {
103
103
  }
104
104
  }
105
105
  }
106
- // 5. Score each item
106
+ // 5. Compute graph connectivity scores for decisions (spec §5.5)
107
+ const connectivityScores = await this.computeGraphConnectivity(scope, mergedDecisionMap);
108
+ // 6. Score each item
107
109
  const scoredItems = [];
110
+ const graphWeight = weights.graph_connectivity ?? 0;
108
111
  for (const [id, decision] of mergedDecisionMap) {
109
112
  const recency = this.recencyScore(decision.timestamp, now);
110
113
  const relevance = decisionRelevance.get(id) ?? 0.5;
111
114
  const confidence = this.confidenceScore(decision.confidence);
112
115
  const warningBoost = 0;
116
+ const connectivity = connectivityScores.get(id) ?? 0;
113
117
  const score = recency * weights.recency +
114
118
  relevance * weights.relevance +
115
119
  confidence * weights.decision_confidence +
116
- warningBoost * weights.warning_boost;
120
+ warningBoost * weights.warning_boost +
121
+ connectivity * graphWeight;
117
122
  const text = `${decision.summary} ${decision.rationale} ${decision.confidence} ${decision.affected_files.join(", ")}`;
118
123
  scoredItems.push({
119
124
  type: "decision",
@@ -141,10 +146,12 @@ export class ContextAssembler {
141
146
  data: entry,
142
147
  });
143
148
  }
144
- // 6. Fill token budget in priority order
145
- // Reserve 10% for warnings
146
- const warningBudget = Math.floor(budget * 0.1);
147
- const mainBudget = budget - warningBudget;
149
+ // 7. Fill token budget in priority order.
150
+ // Warnings get priority access — they fill first from the full budget.
151
+ // Non-warnings fill the remaining budget, but are capped at 90% of the
152
+ // total budget to ensure at least 10% is reserved for warnings.
153
+ const warningReserve = Math.floor(budget * 0.1);
154
+ const nonWarningCap = budget - warningReserve;
148
155
  // Separate warnings and non-warnings
149
156
  const warnings = scoredItems.filter((i) => i.type === "warning");
150
157
  const nonWarnings = scoredItems.filter((i) => i.type !== "warning");
@@ -152,18 +159,21 @@ export class ContextAssembler {
152
159
  nonWarnings.sort((a, b) => b.score - a.score);
153
160
  const selected = new Set();
154
161
  let tokensUsed = 0;
155
- // First: fill warnings with reserved budget
162
+ // First: fill warnings from the full budget (priority access)
156
163
  for (const item of warnings) {
157
164
  if (tokensUsed + item.tokenCost <= budget) {
158
165
  selected.add(item.id);
159
166
  tokensUsed += item.tokenCost;
160
167
  }
161
168
  }
162
- // Then: fill non-warnings with remaining budget
169
+ // Then: fill non-warnings, capped so they don't starve warnings
170
+ let nonWarningTokens = 0;
163
171
  for (const item of nonWarnings) {
164
- if (tokensUsed + item.tokenCost <= budget) {
172
+ if (tokensUsed + item.tokenCost <= budget &&
173
+ nonWarningTokens + item.tokenCost <= nonWarningCap) {
165
174
  selected.add(item.id);
166
175
  tokensUsed += item.tokenCost;
176
+ nonWarningTokens += item.tokenCost;
167
177
  }
168
178
  }
169
179
  // Also include needs even if low-scored (safety)
@@ -175,7 +185,7 @@ export class ContextAssembler {
175
185
  tokensUsed += item.tokenCost;
176
186
  }
177
187
  }
178
- // 7. Build AssembledContext
188
+ // 8. Build AssembledContext
179
189
  const activeDecisionResults = [];
180
190
  const openNeeds = [];
181
191
  const recentFindings = [];
@@ -244,7 +254,7 @@ export class ContextAssembler {
244
254
  }
245
255
  }
246
256
  }
247
- // 8. Populate related_entities from knowledge graph
257
+ // 9. Populate related_entities from knowledge graph
248
258
  const relatedEntities = await this.getRelatedEntities(scope);
249
259
  const result = {
250
260
  assembled_at: new Date().toISOString(),
@@ -258,7 +268,7 @@ export class ContextAssembler {
258
268
  recent_questions: recentQuestions,
259
269
  related_entities: relatedEntities,
260
270
  };
261
- // 9. Integrate planning state from .planning/ directory
271
+ // 10. Integrate planning state from .planning/ directory
262
272
  const planningState = this.planningBridge?.readPlanningState() ?? null;
263
273
  if (planningState) {
264
274
  // Always include planning_state as metadata (not subject to token budget)
@@ -286,7 +296,7 @@ export class ContextAssembler {
286
296
  result.token_estimate += planningTokenCost;
287
297
  }
288
298
  }
289
- // 10. Include recent handoffs matching scope (HND-03)
299
+ // 11. Include recent handoffs matching scope (HND-03)
290
300
  if (this.handoffStore) {
291
301
  const handoffEntries = await this.handoffStore.list({ scope, limit: 5 });
292
302
  if (handoffEntries.length > 0) {
@@ -302,7 +312,7 @@ export class ContextAssembler {
302
312
  }));
303
313
  }
304
314
  }
305
- // 11. Include suggested agents with matching capabilities (HND-06)
315
+ // 12. Include suggested agents with matching capabilities (HND-06)
306
316
  if (this.agentStore) {
307
317
  const allAgents = await this.agentStore.getAll();
308
318
  const thresholds = this.config.agents?.liveness ?? DEFAULT_LIVENESS_THRESHOLDS;
@@ -428,6 +438,51 @@ export class ContextAssembler {
428
438
  reconsidered_decisions: reconsideredDecisions,
429
439
  };
430
440
  }
441
+ /**
442
+ * Compute graph connectivity boost for decisions (spec §5.5).
443
+ * Decisions whose affected_files/symbols have more graph relations
444
+ * to the scope get a higher boost (0.0 to 1.0).
445
+ */
446
+ async computeGraphConnectivity(scope, decisions) {
447
+ const scores = new Map();
448
+ if (!this.graphEngine)
449
+ return scores;
450
+ try {
451
+ // Find entities matching the scope
452
+ const { entities: scopeEntities } = await this.graphEngine.query(scope, undefined, 20);
453
+ if (scopeEntities.length === 0)
454
+ return scores;
455
+ const scopeEntityIds = new Set(scopeEntities.map((e) => e.id));
456
+ const scopeEntityNames = new Set(scopeEntities.map((e) => e.name));
457
+ for (const [id, decision] of decisions) {
458
+ let connectionCount = 0;
459
+ const targets = [
460
+ ...decision.affected_files,
461
+ ...decision.affected_symbols,
462
+ ];
463
+ for (const target of targets) {
464
+ const { entities: targetEntities } = await this.graphEngine.query(target, undefined, 3);
465
+ for (const te of targetEntities) {
466
+ const { neighbors } = await this.graphEngine.neighbors(te.id, 1);
467
+ for (const n of neighbors) {
468
+ if (scopeEntityIds.has(n.entity.id) ||
469
+ scopeEntityNames.has(n.entity.name)) {
470
+ connectionCount++;
471
+ }
472
+ }
473
+ }
474
+ }
475
+ // Normalize: cap at 1.0, use log scale to avoid domination
476
+ scores.set(id, connectionCount > 0
477
+ ? Math.min(1.0, Math.log2(connectionCount + 1) / 3)
478
+ : 0);
479
+ }
480
+ }
481
+ catch {
482
+ // Graph errors should never break scoring
483
+ }
484
+ return scores;
485
+ }
431
486
  /**
432
487
  * Populate related_entities from the knowledge graph.
433
488
  * Finds entities matching the scope and gets their immediate neighbors.