instar 1.2.28 → 1.2.30
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/commands/server.d.ts.map +1 -1
- package/dist/commands/server.js +7 -1
- package/dist/commands/server.js.map +1 -1
- package/dist/commands/setup-wizard/codex-driver.d.ts.map +1 -1
- package/dist/commands/setup-wizard/codex-driver.js +36 -55
- package/dist/commands/setup-wizard/codex-driver.js.map +1 -1
- package/dist/memory/SemanticMemory.d.ts +15 -0
- package/dist/memory/SemanticMemory.d.ts.map +1 -1
- package/dist/memory/SemanticMemory.js +27 -0
- package/dist/memory/SemanticMemory.js.map +1 -1
- package/dist/monitoring/SessionActivitySentinel.d.ts +40 -0
- package/dist/monitoring/SessionActivitySentinel.d.ts.map +1 -1
- package/dist/monitoring/SessionActivitySentinel.js +157 -2
- package/dist/monitoring/SessionActivitySentinel.js.map +1 -1
- package/package.json +1 -1
- package/src/data/builtin-manifest.json +3 -3
- package/upgrades/1.2.29.md +54 -0
- package/upgrades/1.2.30.md +60 -0
- package/upgrades/side-effects/feat-activity-digest-entity-extraction.md +76 -0
- package/upgrades/side-effects/fix-codex-only-lifeline-topic.md +83 -0
|
@@ -27,6 +27,7 @@ import type { Session } from '../core/types.js';
|
|
|
27
27
|
import type { IntelligenceProvider } from '../core/types.js';
|
|
28
28
|
import { EpisodicMemory, type ActivityDigest } from '../memory/EpisodicMemory.js';
|
|
29
29
|
import { type TelegramLogEntry } from '../memory/ActivityPartitioner.js';
|
|
30
|
+
import type { SemanticMemory } from '../memory/SemanticMemory.js';
|
|
30
31
|
export interface SentinelConfig {
|
|
31
32
|
stateDir: string;
|
|
32
33
|
intelligence: IntelligenceProvider;
|
|
@@ -40,6 +41,14 @@ export interface SentinelConfig {
|
|
|
40
41
|
getTopicForSession?: (tmuxSession: string) => number | null;
|
|
41
42
|
/** Max retries before archiving pending content (default: 3) */
|
|
42
43
|
maxRetries?: number;
|
|
44
|
+
/**
|
|
45
|
+
* Optional SemanticMemory instance. When provided, the digest LLM is asked
|
|
46
|
+
* to also extract typed entities + relationships, and those are materialized
|
|
47
|
+
* into the knowledge graph with provenance back to the source session.
|
|
48
|
+
* When absent, digests are persisted with `entities: []` — graceful
|
|
49
|
+
* degradation.
|
|
50
|
+
*/
|
|
51
|
+
semanticMemory?: SemanticMemory;
|
|
43
52
|
}
|
|
44
53
|
export interface SentinelReport {
|
|
45
54
|
scannedAt: string;
|
|
@@ -83,8 +92,39 @@ export declare class SessionActivitySentinel {
|
|
|
83
92
|
*/
|
|
84
93
|
getEpisodicMemory(): EpisodicMemory;
|
|
85
94
|
private digestUnit;
|
|
95
|
+
/**
|
|
96
|
+
* Materialize extracted entities into SemanticMemory.
|
|
97
|
+
*
|
|
98
|
+
* Two-pass algorithm:
|
|
99
|
+
* 1. For each entity, dedupe against the existing graph via findByName.
|
|
100
|
+
* If the entity exists, reuse its ID. Otherwise call remember() to
|
|
101
|
+
* create it. Build a name→id map covering both reused and newly-created
|
|
102
|
+
* entities in this batch.
|
|
103
|
+
* 2. For each entity's relationships, resolve the target by name. Check
|
|
104
|
+
* the batch map first (intra-digest references), then findByName for
|
|
105
|
+
* cross-digest references. Unresolved targets are dropped silently —
|
|
106
|
+
* they'll naturally resolve when a future digest mentions both names.
|
|
107
|
+
*
|
|
108
|
+
* Confidence is set to 0.7 — matching the MEMORY.md migration default. This
|
|
109
|
+
* reflects observation-grade certainty (the LLM extracted from real
|
|
110
|
+
* conversation content), not user-asserted certainty (which would be 0.95).
|
|
111
|
+
*
|
|
112
|
+
* Returns the array of entity IDs (existing + newly-created) for
|
|
113
|
+
* traceability via ActivityDigest.entities.
|
|
114
|
+
*/
|
|
115
|
+
private materializeEntities;
|
|
86
116
|
private buildDigestPrompt;
|
|
87
117
|
private parseDigestResponse;
|
|
118
|
+
/**
|
|
119
|
+
* Validate and normalize the entities array from the LLM response.
|
|
120
|
+
*
|
|
121
|
+
* Malformed entries are dropped (logged at warn level) rather than failing
|
|
122
|
+
* the whole digest. The digest summary remains useful even when entity
|
|
123
|
+
* extraction degrades. Type and relation values not in the enums are
|
|
124
|
+
* filtered out at this step rather than at materialization, so the
|
|
125
|
+
* SemanticMemory.remember() call never receives an invalid type.
|
|
126
|
+
*/
|
|
127
|
+
private parseExtractedEntities;
|
|
88
128
|
private buildSynthesis;
|
|
89
129
|
private buildSynthesisPrompt;
|
|
90
130
|
private parseSynthesisResponse;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SessionActivitySentinel.d.ts","sourceRoot":"","sources":["../../src/monitoring/SessionActivitySentinel.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAIH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAC7D,OAAO,EAAE,cAAc,EAAE,KAAK,cAAc,EAA6C,MAAM,6BAA6B,CAAC;AAC7H,OAAO,EAAuB,KAAK,gBAAgB,EAAqB,MAAM,kCAAkC,CAAC;
|
|
1
|
+
{"version":3,"file":"SessionActivitySentinel.d.ts","sourceRoot":"","sources":["../../src/monitoring/SessionActivitySentinel.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAIH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAC7D,OAAO,EAAE,cAAc,EAAE,KAAK,cAAc,EAA6C,MAAM,6BAA6B,CAAC;AAC7H,OAAO,EAAuB,KAAK,gBAAgB,EAAqB,MAAM,kCAAkC,CAAC;AAEjH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAKlE,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,oBAAoB,CAAC;IACnC,+CAA+C;IAC/C,iBAAiB,EAAE,MAAM,OAAO,EAAE,CAAC;IACnC,oDAAoD;IACpD,oBAAoB,EAAE,CAAC,WAAW,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,CAAC;IAC7D,oDAAoD;IACpD,mBAAmB,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,KAAK,gBAAgB,EAAE,CAAC;IAC9E,6DAA6D;IAC7D,kBAAkB,CAAC,EAAE,CAAC,WAAW,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,CAAC;IAC5D,gEAAgE;IAChE,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;;;;OAMG;IACH,cAAc,CAAC,EAAE,cAAc,CAAC;CACjC;AAqBD,MAAM,WAAW,cAAc;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe,EAAE,MAAM,CAAC;IACxB,cAAc,EAAE,MAAM,CAAC;IACvB,eAAe,EAAE,MAAM,CAAC;IACxB,MAAM,EAAE,KAAK,CAAC;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACrD;AAED,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,gBAAgB,EAAE,OAAO,CAAC;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAID,qBAAa,uBAAuB;IAClC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAiB;IACxC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAiB;IAChD,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAsB;IAClD,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;gBAExB,MAAM,EAAE,cAAc;IASlC;;;OAGG;IACG,IAAI,IAAI,OAAO,CAAC,cAAc,CAAC;IA4DrC;;;OAGG;IACG,cAAc,CAAC,OAAO,EAAE,OAAO,EAAE,cAAc,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;IA2C1F;;;OAGG;IACG,iBAAiB,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,eAAe,CAAC;IAoCnE;;OAEG;IACH,iBAAiB,IAAI,cAAc;YAMrB,UAAU;IAuDxB;;;;;;;;;;;;;;;;;;;OAmBG;IACH,OAAO,CAAC,mBAAmB;IA0D3B,OAAO,CAAC,iBAAiB;IA0DzB,OAAO,CAAC,mBAAmB;IA6B3B;;;;;;;;OAQG;IACH,OAAO,CAAC,sBAAsB;YA0BhB,cAAc;IA+B5B,OAAO,CAAC,oBAAoB;IA+B5B,OAAO,CAAC,sBAAsB;YA0BhB,YAAY;IA0C1B,OAAO,CAAC,oBAAoB;IAI5B,OAAO,CAAC,QAAQ;CAIjB"}
|
|
@@ -28,6 +28,15 @@ import path from 'node:path';
|
|
|
28
28
|
import { EpisodicMemory } from '../memory/EpisodicMemory.js';
|
|
29
29
|
import { ActivityPartitioner } from '../memory/ActivityPartitioner.js';
|
|
30
30
|
import { DegradationReporter } from './DegradationReporter.js';
|
|
31
|
+
/** Valid entity types (must match EntityType in src/core/types.ts). */
|
|
32
|
+
const VALID_ENTITY_TYPES = [
|
|
33
|
+
'fact', 'person', 'project', 'tool', 'pattern', 'decision', 'lesson',
|
|
34
|
+
];
|
|
35
|
+
/** Valid relation types (must match RelationType in src/core/types.ts). */
|
|
36
|
+
const VALID_RELATION_TYPES = [
|
|
37
|
+
'related_to', 'built_by', 'learned_from', 'depends_on', 'supersedes',
|
|
38
|
+
'contradicts', 'part_of', 'used_in', 'knows_about', 'caused', 'verified_by',
|
|
39
|
+
];
|
|
31
40
|
// ─── SessionActivitySentinel ────────────────────────────────────────
|
|
32
41
|
export class SessionActivitySentinel {
|
|
33
42
|
config;
|
|
@@ -192,6 +201,23 @@ export class SessionActivitySentinel {
|
|
|
192
201
|
const parsed = this.parseDigestResponse(response);
|
|
193
202
|
if (!parsed)
|
|
194
203
|
return null;
|
|
204
|
+
// Materialize extracted entities into SemanticMemory when wired.
|
|
205
|
+
// Failures here MUST NOT block digest persistence — the digest is still
|
|
206
|
+
// useful as a summary record even if the entity graph can't be populated
|
|
207
|
+
// for this particular unit. The digest's `entities: []` field falls back
|
|
208
|
+
// to an empty array on any materialization error.
|
|
209
|
+
let entityIds = [];
|
|
210
|
+
if (this.config.semanticMemory && parsed.entities.length > 0) {
|
|
211
|
+
try {
|
|
212
|
+
entityIds = this.materializeEntities(session.id, parsed.entities);
|
|
213
|
+
}
|
|
214
|
+
catch (err) {
|
|
215
|
+
// @silent-fallback-ok — entity extraction is best-effort; the
|
|
216
|
+
// digest is the canonical record. Log and continue so future scans
|
|
217
|
+
// get another chance to extract entities from related content.
|
|
218
|
+
console.warn(`[ActivitySentinel] entity materialization failed for session ${session.id}: ${err instanceof Error ? err.message : String(err)}`);
|
|
219
|
+
}
|
|
220
|
+
}
|
|
195
221
|
const digestId = this.episodicMemory.saveDigest({
|
|
196
222
|
sessionId: session.id,
|
|
197
223
|
sessionName: session.name,
|
|
@@ -200,7 +226,7 @@ export class SessionActivitySentinel {
|
|
|
200
226
|
telegramTopicId,
|
|
201
227
|
summary: parsed.summary,
|
|
202
228
|
actions: parsed.actions,
|
|
203
|
-
entities:
|
|
229
|
+
entities: entityIds,
|
|
204
230
|
learnings: parsed.learnings,
|
|
205
231
|
significance: parsed.significance,
|
|
206
232
|
themes: parsed.themes,
|
|
@@ -208,6 +234,81 @@ export class SessionActivitySentinel {
|
|
|
208
234
|
});
|
|
209
235
|
return this.episodicMemory.getDigest(session.id, digestId);
|
|
210
236
|
}
|
|
237
|
+
/**
|
|
238
|
+
* Materialize extracted entities into SemanticMemory.
|
|
239
|
+
*
|
|
240
|
+
* Two-pass algorithm:
|
|
241
|
+
* 1. For each entity, dedupe against the existing graph via findByName.
|
|
242
|
+
* If the entity exists, reuse its ID. Otherwise call remember() to
|
|
243
|
+
* create it. Build a name→id map covering both reused and newly-created
|
|
244
|
+
* entities in this batch.
|
|
245
|
+
* 2. For each entity's relationships, resolve the target by name. Check
|
|
246
|
+
* the batch map first (intra-digest references), then findByName for
|
|
247
|
+
* cross-digest references. Unresolved targets are dropped silently —
|
|
248
|
+
* they'll naturally resolve when a future digest mentions both names.
|
|
249
|
+
*
|
|
250
|
+
* Confidence is set to 0.7 — matching the MEMORY.md migration default. This
|
|
251
|
+
* reflects observation-grade certainty (the LLM extracted from real
|
|
252
|
+
* conversation content), not user-asserted certainty (which would be 0.95).
|
|
253
|
+
*
|
|
254
|
+
* Returns the array of entity IDs (existing + newly-created) for
|
|
255
|
+
* traceability via ActivityDigest.entities.
|
|
256
|
+
*/
|
|
257
|
+
materializeEntities(sessionId, entities) {
|
|
258
|
+
const sm = this.config.semanticMemory;
|
|
259
|
+
if (!sm)
|
|
260
|
+
return [];
|
|
261
|
+
const now = new Date().toISOString();
|
|
262
|
+
const sourceTag = `session:${sessionId}`;
|
|
263
|
+
const nameToId = new Map();
|
|
264
|
+
const allIds = [];
|
|
265
|
+
// Pass 1 — remember entities, build name→id map.
|
|
266
|
+
for (const e of entities) {
|
|
267
|
+
const existing = sm.findByName(e.name, e.type);
|
|
268
|
+
let id;
|
|
269
|
+
if (existing) {
|
|
270
|
+
id = existing.id;
|
|
271
|
+
}
|
|
272
|
+
else {
|
|
273
|
+
id = sm.remember({
|
|
274
|
+
type: e.type,
|
|
275
|
+
name: e.name,
|
|
276
|
+
content: e.content,
|
|
277
|
+
confidence: 0.7,
|
|
278
|
+
lastVerified: now,
|
|
279
|
+
source: sourceTag,
|
|
280
|
+
sourceSession: sessionId,
|
|
281
|
+
tags: [],
|
|
282
|
+
});
|
|
283
|
+
}
|
|
284
|
+
nameToId.set(e.name.toLowerCase(), id);
|
|
285
|
+
allIds.push(id);
|
|
286
|
+
}
|
|
287
|
+
// Pass 2 — connect relationships. Resolve targets via batch map first,
|
|
288
|
+
// then fall through to the cross-digest lookup.
|
|
289
|
+
for (const e of entities) {
|
|
290
|
+
const fromId = nameToId.get(e.name.toLowerCase());
|
|
291
|
+
if (!fromId)
|
|
292
|
+
continue;
|
|
293
|
+
for (const rel of e.relationships) {
|
|
294
|
+
const targetKey = rel.to.toLowerCase();
|
|
295
|
+
let toId = nameToId.get(targetKey);
|
|
296
|
+
if (!toId) {
|
|
297
|
+
const found = sm.findByName(rel.to);
|
|
298
|
+
if (found) {
|
|
299
|
+
toId = found.id;
|
|
300
|
+
nameToId.set(targetKey, toId);
|
|
301
|
+
}
|
|
302
|
+
}
|
|
303
|
+
if (!toId)
|
|
304
|
+
continue; // unresolved cross-digest target — drop
|
|
305
|
+
if (toId === fromId)
|
|
306
|
+
continue; // self-loops aren't meaningful here
|
|
307
|
+
sm.connect(fromId, toId, rel.relation, `digest:${sessionId}`);
|
|
308
|
+
}
|
|
309
|
+
}
|
|
310
|
+
return allIds;
|
|
311
|
+
}
|
|
211
312
|
buildDigestPrompt(session, unit) {
|
|
212
313
|
const lines = [];
|
|
213
314
|
lines.push('You are analyzing a chunk of an AI agent\'s work session to create a concise activity digest.');
|
|
@@ -234,7 +335,17 @@ export class SessionActivitySentinel {
|
|
|
234
335
|
lines.push(' "actions": ["key action 1", "key action 2"],');
|
|
235
336
|
lines.push(' "learnings": ["insight or lesson learned"],');
|
|
236
337
|
lines.push(' "significance": 5,');
|
|
237
|
-
lines.push(' "themes": ["topic1", "topic2"]');
|
|
338
|
+
lines.push(' "themes": ["topic1", "topic2"],');
|
|
339
|
+
lines.push(' "entities": [');
|
|
340
|
+
lines.push(' {');
|
|
341
|
+
lines.push(' "type": "decision",');
|
|
342
|
+
lines.push(' "name": "short canonical name",');
|
|
343
|
+
lines.push(' "content": "1-3 sentence description with enough context to recall later",');
|
|
344
|
+
lines.push(' "relationships": [');
|
|
345
|
+
lines.push(' {"to": "other entity name", "relation": "part_of"}');
|
|
346
|
+
lines.push(' ]');
|
|
347
|
+
lines.push(' }');
|
|
348
|
+
lines.push(' ]');
|
|
238
349
|
lines.push('}');
|
|
239
350
|
lines.push('');
|
|
240
351
|
lines.push('RULES:');
|
|
@@ -242,6 +353,13 @@ export class SessionActivitySentinel {
|
|
|
242
353
|
lines.push('- themes are 1-3 word topic tags');
|
|
243
354
|
lines.push('- actions are specific: "committed migration engine", not "wrote code"');
|
|
244
355
|
lines.push('- learnings are insights, not descriptions: "FTS5 requires sync triggers", not "worked on FTS5"');
|
|
356
|
+
lines.push('- entities are durable things worth remembering across sessions: people mentioned, projects discussed, decisions made, tools introduced, patterns observed, lessons learned, hard facts. NOT every noun — only what an agent would want to recall weeks later.');
|
|
357
|
+
lines.push('- entity type MUST be one of: fact, person, project, tool, pattern, decision, lesson');
|
|
358
|
+
lines.push('- entity name is short and canonical (the form you would use to refer back to it)');
|
|
359
|
+
lines.push('- entity content captures enough context to ground a future recall (not just the name)');
|
|
360
|
+
lines.push('- relationship "to" references another entity by its name (must match one in this same entities array or a prior digest)');
|
|
361
|
+
lines.push('- relation MUST be one of: related_to, built_by, learned_from, depends_on, supersedes, contradicts, part_of, used_in, knows_about, caused, verified_by');
|
|
362
|
+
lines.push('- omit the entities array entirely or use [] if nothing in this activity unit is worth durable memory');
|
|
245
363
|
return lines.join('\n');
|
|
246
364
|
}
|
|
247
365
|
parseDigestResponse(response) {
|
|
@@ -257,6 +375,7 @@ export class SessionActivitySentinel {
|
|
|
257
375
|
learnings: Array.isArray(parsed.learnings) ? parsed.learnings.map(String) : [],
|
|
258
376
|
significance: Math.min(10, Math.max(1, Number(parsed.significance) || 5)),
|
|
259
377
|
themes: Array.isArray(parsed.themes) ? parsed.themes.map(String) : [],
|
|
378
|
+
entities: this.parseExtractedEntities(parsed.entities),
|
|
260
379
|
};
|
|
261
380
|
}
|
|
262
381
|
catch {
|
|
@@ -264,6 +383,42 @@ export class SessionActivitySentinel {
|
|
|
264
383
|
return null;
|
|
265
384
|
}
|
|
266
385
|
}
|
|
386
|
+
/**
|
|
387
|
+
* Validate and normalize the entities array from the LLM response.
|
|
388
|
+
*
|
|
389
|
+
* Malformed entries are dropped (logged at warn level) rather than failing
|
|
390
|
+
* the whole digest. The digest summary remains useful even when entity
|
|
391
|
+
* extraction degrades. Type and relation values not in the enums are
|
|
392
|
+
* filtered out at this step rather than at materialization, so the
|
|
393
|
+
* SemanticMemory.remember() call never receives an invalid type.
|
|
394
|
+
*/
|
|
395
|
+
parseExtractedEntities(raw) {
|
|
396
|
+
if (!Array.isArray(raw))
|
|
397
|
+
return [];
|
|
398
|
+
const out = [];
|
|
399
|
+
for (const item of raw) {
|
|
400
|
+
if (!item || typeof item !== 'object')
|
|
401
|
+
continue;
|
|
402
|
+
const o = item;
|
|
403
|
+
const type = String(o.type ?? '').toLowerCase();
|
|
404
|
+
const name = String(o.name ?? '').trim();
|
|
405
|
+
const content = String(o.content ?? '').trim();
|
|
406
|
+
if (!name || !content)
|
|
407
|
+
continue;
|
|
408
|
+
if (!VALID_ENTITY_TYPES.includes(type))
|
|
409
|
+
continue;
|
|
410
|
+
const relationships = Array.isArray(o.relationships)
|
|
411
|
+
? o.relationships
|
|
412
|
+
.map((r) => ({
|
|
413
|
+
to: String(r?.to ?? '').trim(),
|
|
414
|
+
relation: String(r?.relation ?? '').toLowerCase(),
|
|
415
|
+
}))
|
|
416
|
+
.filter((r) => r.to && VALID_RELATION_TYPES.includes(r.relation))
|
|
417
|
+
: [];
|
|
418
|
+
out.push({ type, name, content, relationships });
|
|
419
|
+
}
|
|
420
|
+
return out;
|
|
421
|
+
}
|
|
267
422
|
// ─── Session Synthesis ──────────────────────────────────────────
|
|
268
423
|
async buildSynthesis(session, digests) {
|
|
269
424
|
const prompt = this.buildSynthesisPrompt(session, digests);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SessionActivitySentinel.js","sourceRoot":"","sources":["../../src/monitoring/SessionActivitySentinel.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"SessionActivitySentinel.js","sourceRoot":"","sources":["../../src/monitoring/SessionActivitySentinel.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "./builtin-manifest.schema.json",
|
|
3
3
|
"schemaVersion": 1,
|
|
4
|
-
"generatedAt": "2026-05-
|
|
5
|
-
"instarVersion": "1.2.
|
|
4
|
+
"generatedAt": "2026-05-22T18:12:38.776Z",
|
|
5
|
+
"instarVersion": "1.2.30",
|
|
6
6
|
"entryCount": 191,
|
|
7
7
|
"entries": {
|
|
8
8
|
"hook:session-start": {
|
|
@@ -1520,7 +1520,7 @@
|
|
|
1520
1520
|
"type": "subsystem",
|
|
1521
1521
|
"domain": "memory",
|
|
1522
1522
|
"sourcePath": "src/memory/SemanticMemory.ts",
|
|
1523
|
-
"contentHash": "
|
|
1523
|
+
"contentHash": "6b1c7b18e1d8e35036cccc9d3cf80d29eea2435138c67a5640dbf5fbf2658e82",
|
|
1524
1524
|
"since": "2025-01-01"
|
|
1525
1525
|
},
|
|
1526
1526
|
"subsystem:multi-machine-coordinator": {
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
# Upgrade Guide — vNEXT
|
|
2
|
+
|
|
3
|
+
<!-- bump: minor -->
|
|
4
|
+
<!-- minor = new agent-facing capability without breaking changes -->
|
|
5
|
+
|
|
6
|
+
## What Changed
|
|
7
|
+
|
|
8
|
+
**feat(memory): activity-digest entity extraction — populate SemanticMemory from ongoing work.**
|
|
9
|
+
|
|
10
|
+
`SessionActivitySentinel` already wrote per-activity digests (summary, actions, learnings, themes) via a fast-tier LLM call after every chunk of session activity. The digest schema had an `entities: string[]` field — but the implementation was a hardcoded empty array with a `// future` comment. After the one-shot migration from MEMORY.md / relationships / canonical state / decision-journal completed, SemanticMemory stopped growing. Every conversation, every decision, every lesson learned landed in conversation logs but never in the structured graph the agent actually queries.
|
|
11
|
+
|
|
12
|
+
This release extends the digest LLM call to also extract typed entities (one of `fact`, `person`, `project`, `tool`, `pattern`, `decision`, `lesson`) plus relationships between them (one of the 11 RelationType enums). Extracted entities are validated, deduped against the existing graph by case-insensitive name+type match, written via `SemanticMemory.remember()` with `source: 'session:<id>'` provenance, and connected via `SemanticMemory.connect()` for both intra-batch and cross-digest references.
|
|
13
|
+
|
|
14
|
+
Architecture:
|
|
15
|
+
|
|
16
|
+
1. The digest prompt now asks for a sixth JSON key (`entities`) with type+name+content+relationships, alongside an enumeration of the valid types and a short rule about what's worth remembering ("durable things worth recalling weeks later, not every noun").
|
|
17
|
+
|
|
18
|
+
2. `parseExtractedEntities` validates each item against the type enum; malformed entries are dropped with a log warning rather than failing the whole digest. Relations with unknown verbs are filtered out before reaching `connect()`.
|
|
19
|
+
|
|
20
|
+
3. `materializeEntities` runs two passes — first remembering all entities (deduping via the new `findByName` SemanticMemory helper), then resolving relationships through the batch name→id map. Cross-digest references resolve through `findByName` against the persisted graph. Unresolved targets are dropped silently; they re-resolve when a future digest mentions both names together.
|
|
21
|
+
|
|
22
|
+
4. `SentinelConfig.semanticMemory` is optional. When unset (no SemanticMemory subsystem in this install), the sentinel falls through to the pre-existing behaviour: digests are persisted with `entities: []`. Graceful degradation; no breakage.
|
|
23
|
+
|
|
24
|
+
5. Confidence is set to 0.7 for all digest-extracted entities, matching the MEMORY.md migration default. This reflects observation-grade certainty (the LLM extracted from real session content), not user-asserted certainty (which would be 0.95).
|
|
25
|
+
|
|
26
|
+
Fail-open semantics throughout: extraction failures NEVER block digest persistence. The digest's summary/actions/learnings/themes are the canonical record; entities are an enrichment that degrades quietly when the LLM or the storage layer aren't cooperating.
|
|
27
|
+
|
|
28
|
+
## Evidence
|
|
29
|
+
|
|
30
|
+
7 new unit tests in `tests/unit/SessionActivitySentinel-entity-extraction.test.ts` against real SemanticMemory + EpisodicMemory (no mocks, per the verify-against-real-APIs memory):
|
|
31
|
+
|
|
32
|
+
1. Prompt shape — the digest prompt now requests entities with the JSON shape and the type+relation enumerations.
|
|
33
|
+
2. End-to-end — a digest LLM response with 2 entities produces 2 SemanticMemory records with `source: session:<id>` provenance.
|
|
34
|
+
3. Cross-digest dedup — same entity name in digest N and digest N+1 yields ONE entity with the original ID, not a duplicate.
|
|
35
|
+
4. Intra-batch relationship resolution — entity A's relationship to entity B (both in the same batch) creates an edge.
|
|
36
|
+
5. Malformed-entity safety — bogus types / missing content / unknown relation verbs are dropped; valid entries in the same batch still materialize.
|
|
37
|
+
6. Graceful degradation without SemanticMemory — digest still persists with `entities: []`; no crash.
|
|
38
|
+
7. Missing-entities-key tolerance — older LLM responses (or any response that omits the key) still produce a digest.
|
|
39
|
+
|
|
40
|
+
All 21 existing `session-activity-sentinel.test.ts` tests still pass — no regression.
|
|
41
|
+
|
|
42
|
+
## What to Tell Your User
|
|
43
|
+
|
|
44
|
+
Your agent now builds up a structured memory graph as it works. Over the next few days, you'll notice the agent's context at the start of new sessions getting richer — it'll know about more of its own prior work without needing to dig through transcripts. Decisions made in past sessions, people you've discussed, projects and tools — anything worth remembering durably — becomes searchable and connectable.
|
|
45
|
+
|
|
46
|
+
Nothing is required from you. The graph builds quietly in the background through the activity sentinel that's already running.
|
|
47
|
+
|
|
48
|
+
## Summary of New Capabilities
|
|
49
|
+
|
|
50
|
+
| Capability | How to Use |
|
|
51
|
+
|-----------|-----------|
|
|
52
|
+
| Automatic entity extraction from session activity | Automatic — runs in every digest scan when SemanticMemory is enabled |
|
|
53
|
+
| Cross-digest entity dedup | Automatic — same name + same type collapses to one entity |
|
|
54
|
+
| Typed graph edges from intra-batch and cross-digest references | Automatic — emitted when target entity is in scope |
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
# Upgrade Guide — v1.2.30 (Codex creates only Lifeline topic)
|
|
2
|
+
|
|
3
|
+
<!-- bump: patch -->
|
|
4
|
+
<!-- patch = bug fixes, refactors, test additions, doc updates -->
|
|
5
|
+
|
|
6
|
+
## What Changed
|
|
7
|
+
|
|
8
|
+
**Fix: duplicate Dashboard topic in the Codex Telegram setup.**
|
|
9
|
+
|
|
10
|
+
Real-user retest showed two "Dashboard" topics in the Telegram
|
|
11
|
+
group — one created by the Codex agentic flow (📊), one by the
|
|
12
|
+
instar server on boot (📢). The Codex flow was creating all four
|
|
13
|
+
system topics (Lifeline, Updates, Dashboard, Attention), but the
|
|
14
|
+
server ALSO creates Dashboard / Updates / Attention on its first
|
|
15
|
+
boot. They didn't coordinate, so Dashboard got made twice.
|
|
16
|
+
|
|
17
|
+
Lifeline never duplicated because the Codex flow persists its ID
|
|
18
|
+
and the server reuses it. The fix extends that pattern: the Codex
|
|
19
|
+
flow now creates ONLY Lifeline. The server creates Dashboard,
|
|
20
|
+
Updates, and Attention like it always has — with its own
|
|
21
|
+
canonical intros, emojis, colors, and the dashboard-link wiring.
|
|
22
|
+
|
|
23
|
+
The Lifeline orientation message now tells the user that "a few
|
|
24
|
+
more topics will appear automatically once my server starts," so
|
|
25
|
+
the brief single-topic state between Codex-done and server-boot
|
|
26
|
+
doesn't look incomplete.
|
|
27
|
+
|
|
28
|
+
Spec: `specs/dev-infrastructure/codex-only-lifeline-topic.md`.
|
|
29
|
+
ELI16: `specs/dev-infrastructure/codex-only-lifeline-topic.eli16.md`.
|
|
30
|
+
Side-effects: `upgrades/side-effects/fix-codex-only-lifeline-topic.md`.
|
|
31
|
+
|
|
32
|
+
## What to Tell Your User
|
|
33
|
+
|
|
34
|
+
The setup no longer creates a duplicate Dashboard topic. You'll
|
|
35
|
+
get one of each system topic, created by the part of instar that
|
|
36
|
+
owns it. The Lifeline topic now mentions that the other topics
|
|
37
|
+
appear automatically once your agent's server starts.
|
|
38
|
+
|
|
39
|
+
(Separately: if your dashboard link is missing, it's usually
|
|
40
|
+
because the Cloudflare tunnel can't connect — often a temporary
|
|
41
|
+
rate limit. Two follow-up improvements are planned: a clear
|
|
42
|
+
"tunnel couldn't connect" message in the Dashboard topic, and a
|
|
43
|
+
pool of backup tunnel providers.)
|
|
44
|
+
|
|
45
|
+
## Summary of New Capabilities
|
|
46
|
+
|
|
47
|
+
No new capabilities. Duplicate-topic bug fix.
|
|
48
|
+
|
|
49
|
+
## Evidence
|
|
50
|
+
|
|
51
|
+
Reproduction prior: live instar-codey config showed
|
|
52
|
+
`config.dashboardTopicId = 14` (server's "📢 Dashboard") plus a
|
|
53
|
+
separate Codex-created "📊 Dashboard" with no config reference.
|
|
54
|
+
The user's screenshot showed both in the chat list.
|
|
55
|
+
|
|
56
|
+
After fix: 81 wizard tests pass; the topic-creation canary now
|
|
57
|
+
asserts the prompt creates ONLY Lifeline and explicitly forbids
|
|
58
|
+
creating the other three. The retired Attention/Updates/Dashboard
|
|
59
|
+
color codes are no longer hard-coded in the prompt (only
|
|
60
|
+
Lifeline's remains).
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
# Side-Effects Review — feat(memory): activity-digest entity extraction
|
|
2
|
+
|
|
3
|
+
**Branch:** `echo/phase-0d-activity-digest-entities`
|
|
4
|
+
**Origin:** Phase 0d of the topic-intent-layer thread (Telegram 9976). Approved by Justin via the "Yes please" / "Please proceed" handoff on 2026-05-21 + 2026-05-22.
|
|
5
|
+
|
|
6
|
+
## Summary
|
|
7
|
+
|
|
8
|
+
`SessionActivitySentinel.digestUnit` was creating activity digests with `entities: []` hardcoded — line 268 carried a `// future` comment. SemanticMemory was shipping but had no automatic write path after the initial migration. This change extends the digest LLM prompt to also extract typed entities + relationships, validates them, and writes them to SemanticMemory with provenance back to the source session.
|
|
9
|
+
|
|
10
|
+
## Files touched
|
|
11
|
+
|
|
12
|
+
- `src/memory/SemanticMemory.ts` — added `findByName(name, type?)` helper for cross-digest dedup.
|
|
13
|
+
- `src/monitoring/SessionActivitySentinel.ts` — extended `SentinelConfig` with optional `semanticMemory`; extended `buildDigestPrompt`, `parseDigestResponse`; new `materializeEntities` and `parseExtractedEntities`.
|
|
14
|
+
- `src/commands/server.ts` — wired `semanticMemory` into the sentinel constructor, conditional on the SemanticMemory subsystem being enabled.
|
|
15
|
+
- `tests/unit/SessionActivitySentinel-entity-extraction.test.ts` — 7 tests covering prompt shape, dedup, intra-batch edges, malformed-entity skip, missing-key tolerance, graceful degradation without SemanticMemory.
|
|
16
|
+
- `docs/specs/activity-digest-entity-extraction.md` — spec.
|
|
17
|
+
- `docs/specs/activity-digest-entity-extraction.eli16.md` — ELI16 companion.
|
|
18
|
+
- `upgrades/NEXT.md` — release notes entry.
|
|
19
|
+
|
|
20
|
+
## Over-block check
|
|
21
|
+
|
|
22
|
+
The materializer runs only when `semanticMemory` is wired AND the LLM returned at least one entity. Empty arrays, missing keys, and malformed responses all short-circuit. No new code runs in the healthy-but-no-extraction path.
|
|
23
|
+
|
|
24
|
+
Existing sentinel callers that build a SessionActivitySentinel without `semanticMemory` continue to work — the field is optional. The Phase 0 startup path in `server.ts` only passes it when SemanticMemory was successfully constructed; if SemanticMemory degraded (e.g., better-sqlite3 issue), the sentinel falls through to the pre-fix behaviour.
|
|
25
|
+
|
|
26
|
+
## Under-block check
|
|
27
|
+
|
|
28
|
+
Could a future caller bypass the validator? `parseExtractedEntities` is private and called from `parseDigestResponse`. The entity-type and relation-type allowlists are local `readonly` arrays. Adding new types to either enum requires updating this list — if a future entity type is added to `EntityType` without the list update, the extractor will silently drop those entries. That's the safe direction (drop rather than crash) and the failure mode is observable (no entities of that type appear in the graph).
|
|
29
|
+
|
|
30
|
+
## Level-of-abstraction fit
|
|
31
|
+
|
|
32
|
+
`materializeEntities` lives inside the sentinel because that's where the digest LLM call lives — the extracted entities are a property of the digest, not a separate system. `findByName` lives on SemanticMemory because it's a primitive entity-lookup operation that other consumers (migration, future debug tools) will want too.
|
|
33
|
+
|
|
34
|
+
The materializer does NOT do its own LLM calls or schema inference. It accepts pre-validated typed structures and translates them into SemanticMemory.remember + connect calls. Pure plumbing, no policy.
|
|
35
|
+
|
|
36
|
+
## Signal-vs-authority compliance
|
|
37
|
+
|
|
38
|
+
The LLM extracts entities (signal). The validator rejects malformed structures (filter). The materializer writes only valid entities (authority). At no point does a brittle filter (regex, format match) decide what becomes a permanent record — every record goes through a typed-shape validator AND has provenance back to a specific session for audit.
|
|
39
|
+
|
|
40
|
+
If a future operator finds that the extractor's confidence threshold needs tuning, the entry point is `materializeEntities` (the authority), not the prompt or the validator. Same shape as CoherenceGate's signal-vs-authority pattern.
|
|
41
|
+
|
|
42
|
+
## Interactions
|
|
43
|
+
|
|
44
|
+
- **SemanticMemory.remember + connect**: existing public APIs, no behavior change. `findByName` is new but follows the same pattern as `findBySource`.
|
|
45
|
+
- **EpisodicMemory.saveDigest**: unchanged signature; the digest still saves with the entity-ID array as the `entities` field (previously always empty).
|
|
46
|
+
- **WorkingMemoryAssembler**: reads from SemanticMemory unchanged. The assembler now has a denser graph to retrieve from — pure quality improvement, no contract change.
|
|
47
|
+
- **Sentinel periodic scan / sessionComplete synthesis**: unchanged behaviour. Digest creation still proceeds even when entity extraction fails (the digest is the primary record).
|
|
48
|
+
- **PostUpdateMigrator**: unchanged. Migration backfills are independent of this pipeline.
|
|
49
|
+
|
|
50
|
+
## Cross-framework portability (v1.0+)
|
|
51
|
+
|
|
52
|
+
The digest LLM call routes through `IntelligenceProvider` (the framework-aware `sharedIntelligence`). Same call shape for Claude and Codex. The entities prompt is plain English asking for a JSON shape — both Haiku and gpt-5.2 handle it.
|
|
53
|
+
|
|
54
|
+
The capture path (tmux session output + Telegram JSONL) is unchanged from the pre-fix sentinel. Codex agents with a different session-output shape will see degraded extraction (smaller / noisier digests) but won't fail — that's an orthogonal improvement.
|
|
55
|
+
|
|
56
|
+
## Telemetry / observability
|
|
57
|
+
|
|
58
|
+
- Failed extraction logs a single warn line per failure (rate-limited by occurrence, not time).
|
|
59
|
+
- Digest persistence is unchanged — the existing `[ActivitySentinel] Session synthesis created` log still fires.
|
|
60
|
+
- `SemanticMemory.stats().totalEntities` and `totalEdges` will now grow with active sessions; that's the user-visible signal that the pipeline is working.
|
|
61
|
+
|
|
62
|
+
## Rollback
|
|
63
|
+
|
|
64
|
+
Single-commit revert. The new materializer is purely additive — reverting removes it, the digest schema still permits the (now-empty) `entities` field, and existing entities in SemanticMemory remain valid records. No data migration needed.
|
|
65
|
+
|
|
66
|
+
Already-extracted entities don't become orphans on rollback — they retain their `source: session:<id>` and `sourceSession` fields, and stay searchable / connectable like any other entity. They simply stop growing.
|
|
67
|
+
|
|
68
|
+
## Follow-ups (tracked, not orphaned)
|
|
69
|
+
|
|
70
|
+
1. **Confidence calibration.** v1 ships at 0.7 for all digest-extracted entities. Future work could differentiate by entity type (decisions → 0.6 because they may be revised, facts → 0.75 because they're observation-grounded).
|
|
71
|
+
|
|
72
|
+
2. **Pending-edges queue.** Currently unresolved cross-digest relationship targets are dropped silently. If we see meaningful edge loss in practice, the spec calls for a small JSONL-backed pending-edges queue that retries on subsequent scans.
|
|
73
|
+
|
|
74
|
+
3. **Cross-topic decay re-verification.** Entities first seen in one topic that get re-mentioned in another should bump `lastVerified` (treating cross-topic recurrence as light verification). Not in this commit; tracked as an enhancement to `findByName` callers.
|
|
75
|
+
|
|
76
|
+
Both items are tracked as initiatives, intentionally out of scope here.
|