instar 1.3.418 → 1.3.420

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.
@@ -1 +1 @@
1
- {"version":3,"file":"AgentPassport.d.ts","sourceRoot":"","sources":["../../src/core/AgentPassport.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAIH,MAAM,MAAM,UAAU,GAAG,WAAW,GAAG,YAAY,GAAG,eAAe,GAAG,YAAY,CAAC;AAErF,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,iFAAiF;IACjF,mBAAmB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC/B,sEAAsE;IACtE,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC5B,4EAA4E;IAC5E,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,CAAC,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,UAAU,CAAC;IACvB,mBAAmB,EAAE,MAAM,EAAE,CAAC;IAC9B,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAC3B,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,aAAa;IAC5B,SAAS,EAAE,OAAO,CAAC;IACnB,iEAAiE;IACjE,KAAK,EAAE,kBAAkB,GAAG,cAAc,GAAG,aAAa,GAAG,IAAI,CAAC;IAClE,MAAM,EAAE,MAAM,CAAC;IACf,iDAAiD;IACjD,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AA4BD,wBAAgB,aAAa,CAAC,KAAK,EAAE,aAAa,GAAG,aAAa,CAUjE;AAED;;;;GAIG;AACH,wBAAgB,OAAO,CAAC,QAAQ,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,GAAG,aAAa,CAgB9E"}
1
+ {"version":3,"file":"AgentPassport.d.ts","sourceRoot":"","sources":["../../src/core/AgentPassport.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAIH,MAAM,MAAM,UAAU,GAAG,WAAW,GAAG,YAAY,GAAG,eAAe,GAAG,YAAY,CAAC;AAErF,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,iFAAiF;IACjF,mBAAmB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC/B,sEAAsE;IACtE,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC5B,4EAA4E;IAC5E,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,CAAC,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,UAAU,CAAC;IACvB,mBAAmB,EAAE,MAAM,EAAE,CAAC;IAC9B,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAC3B,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,aAAa;IAC5B,SAAS,EAAE,OAAO,CAAC;IACnB,iEAAiE;IACjE,KAAK,EAAE,kBAAkB,GAAG,cAAc,GAAG,aAAa,GAAG,IAAI,CAAC;IAClE,MAAM,EAAE,MAAM,CAAC;IACf,iDAAiD;IACjD,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AA4BD,wBAAgB,aAAa,CAAC,KAAK,EAAE,aAAa,GAAG,aAAa,CAUjE;AAED;;;;GAIG;AACH,wBAAgB,OAAO,CAAC,QAAQ,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,GAAG,aAAa,CAuB9E"}
@@ -51,7 +51,14 @@ export function buildPassport(input) {
51
51
  * capability-scope (if scoped, the action must be in scope) → ok.
52
52
  */
53
53
  export function permits(passport, action) {
54
- for (const f of passport.forbiddenActions) {
54
+ // A passport supplied by a PEER may be partial/malformed — its whole purpose is
55
+ // that another agent reads it. Default the array fields so a missing field yields
56
+ // a verdict, never a crash (was: HTTP 500 "Cannot read properties of undefined
57
+ // (reading 'length')" when allowedCapabilities was omitted; forbiddenActions was
58
+ // likewise unguarded → "not iterable"). See exo3-harness passport-verify-robustness.
59
+ const forbiddenActions = passport.forbiddenActions ?? [];
60
+ const allowedCapabilities = passport.allowedCapabilities ?? [];
61
+ for (const f of forbiddenActions) {
55
62
  if (overlap(action, f) >= MATCH) {
56
63
  return { permitted: false, basis: 'forbidden-action', reason: `Forbidden by the passport: "${f}".`, matched: f };
57
64
  }
@@ -59,8 +66,8 @@ export function permits(passport, action) {
59
66
  if (passport.trustLevel === 'untrusted' && isActing(action)) {
60
67
  return { permitted: false, basis: 'trust-floor', reason: 'Untrusted passport may observe but not act.' };
61
68
  }
62
- if (passport.allowedCapabilities.length > 0) {
63
- const inScope = passport.allowedCapabilities.some((c) => overlap(action, c) >= MATCH);
69
+ if (allowedCapabilities.length > 0) {
70
+ const inScope = allowedCapabilities.some((c) => overlap(action, c) >= MATCH);
64
71
  if (!inScope) {
65
72
  return { permitted: false, basis: 'out-of-scope', reason: 'Action is outside the passport\'s allowed capabilities.' };
66
73
  }
@@ -1 +1 @@
1
- {"version":3,"file":"AgentPassport.js","sourceRoot":"","sources":["../../src/core/AgentPassport.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"AgentPassport.js","sourceRoot":"","sources":["../../src/core/AgentPassport.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"OrgIntentManager.d.ts","sourceRoot":"","sources":["../../src/core/OrgIntentManager.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAIH,OAAO,EAAsB,KAAK,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAInF,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,YAAY,CAAC;CACtB;AAED,MAAM,WAAW,OAAO;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,YAAY,CAAC;IACrB,aAAa,EAAE,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,aAAa,EAAE,CAAC;IAC7B,KAAK,EAAE,OAAO,EAAE,CAAC;IACjB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,iBAAiB,EAAE,MAAM,EAAE,CAAC;IAC5B,0FAA0F;IAC1F,QAAQ,CAAC,EAAE,WAAW,CAAC;IACvB,GAAG,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,cAAc;IAC7B,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC;IACvB,QAAQ,EAAE,OAAO,GAAG,SAAS,CAAC;IAC9B,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,sBAAsB;IACrC,KAAK,EAAE,OAAO,CAAC;IACf,SAAS,EAAE,cAAc,EAAE,CAAC;IAC5B,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AA2ID;;;;;;;;GAQG;AACH,wBAAgB,8BAA8B,CAAC,MAAM,EAAE,eAAe,GAAG,MAAM,CA6B9E;AAID,qBAAa,gBAAgB;IAGf,OAAO,CAAC,QAAQ;IAF5B,OAAO,CAAC,aAAa,CAAS;gBAEV,QAAQ,EAAE,MAAM;IAIpC,oCAAoC;IACpC,MAAM,IAAI,OAAO;IAIjB,kCAAkC;IAClC,OAAO,IAAI,MAAM,GAAG,IAAI;IAUxB,+CAA+C;IAC/C,KAAK,IAAI,eAAe,GAAG,IAAI;IAqC/B,2EAA2E;IAC3E,mBAAmB,CAAC,kBAAkB,EAAE,MAAM,GAAG,sBAAsB;IA0CvE;;;OAGG;IACH,OAAO,CAAC,iBAAiB;CA0B1B"}
1
+ {"version":3,"file":"OrgIntentManager.d.ts","sourceRoot":"","sources":["../../src/core/OrgIntentManager.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAIH,OAAO,EAAsB,KAAK,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAInF,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,YAAY,CAAC;CACtB;AAED,MAAM,WAAW,OAAO;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,YAAY,CAAC;IACrB,aAAa,EAAE,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,aAAa,EAAE,CAAC;IAC7B,KAAK,EAAE,OAAO,EAAE,CAAC;IACjB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,iBAAiB,EAAE,MAAM,EAAE,CAAC;IAC5B,0FAA0F;IAC1F,QAAQ,CAAC,EAAE,WAAW,CAAC;IACvB,GAAG,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,cAAc;IAC7B,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC;IACvB,QAAQ,EAAE,OAAO,GAAG,SAAS,CAAC;IAC9B,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,sBAAsB;IACrC,KAAK,EAAE,OAAO,CAAC;IACf,SAAS,EAAE,cAAc,EAAE,CAAC;IAC5B,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AA2ID;;;;;;;;GAQG;AACH,wBAAgB,8BAA8B,CAAC,MAAM,EAAE,eAAe,GAAG,MAAM,CA6B9E;AAID,qBAAa,gBAAgB;IAGf,OAAO,CAAC,QAAQ;IAF5B,OAAO,CAAC,aAAa,CAAS;gBAEV,QAAQ,EAAE,MAAM;IAIpC,oCAAoC;IACpC,MAAM,IAAI,OAAO;IAIjB,kCAAkC;IAClC,OAAO,IAAI,MAAM,GAAG,IAAI;IAUxB,+CAA+C;IAC/C,KAAK,IAAI,eAAe,GAAG,IAAI;IAkD/B,2EAA2E;IAC3E,mBAAmB,CAAC,kBAAkB,EAAE,MAAM,GAAG,sBAAsB;IA0CvE;;;OAGG;IACH,OAAO,CAAC,iBAAiB;CA0B1B"}
@@ -221,7 +221,20 @@ export class OrgIntentManager {
221
221
  ? extractListItems(goalsSection).map(text => ({ text, source: 'org-intent', specializable: true }))
222
222
  : [];
223
223
  const values = valuesSection ? extractListItems(valuesSection) : [];
224
- const tradeoffHierarchy = tradeoffSection ? extractListItems(tradeoffSection) : [];
224
+ let tradeoffHierarchy = tradeoffSection ? extractListItems(tradeoffSection) : [];
225
+ // The Tradeoff Hierarchy is documented (and scaffolded by `instar intent org-init`)
226
+ // as a single chained line — "Safety > Operator trust > Correctness > ..." — not a
227
+ // bulleted list, so extractListItems returns []. Accept the chained form too so the
228
+ // resolver actually sees the order. (exo3-harness mtp-tradeoff: was "no hierarchy".)
229
+ if (tradeoffHierarchy.length === 0 && tradeoffSection) {
230
+ const chain = tradeoffSection
231
+ .replace(/<!--[\s\S]*?-->/g, '')
232
+ .split('\n').map(l => l.trim()).filter(Boolean)
233
+ .find(l => /[>›»]/.test(l));
234
+ if (chain) {
235
+ tradeoffHierarchy = chain.split(/\s*[>›»]\s*/).map(s => s.trim()).filter(Boolean);
236
+ }
237
+ }
225
238
  const identity = parseIdentityLayer(raw) ?? undefined;
226
239
  // If all sections are empty after parsing, treat as template-only
227
240
  if (constraints.length === 0 && goals.length === 0 && values.length === 0 && tradeoffHierarchy.length === 0 && !identity) {
@@ -1 +1 @@
1
- {"version":3,"file":"OrgIntentManager.js","sourceRoot":"","sources":["../../src/core/OrgIntentManager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"OrgIntentManager.js","sourceRoot":"","sources":["../../src/core/OrgIntentManager.ts"],"names":[],"mappings":"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"}
@@ -46,7 +46,13 @@ export declare class OutboundContentDedup {
46
46
  /** topicId -> (fingerprint -> last-sent epoch ms) */
47
47
  private readonly seen;
48
48
  private readonly now;
49
- constructor(cfg?: OutboundContentDedupConfig, now?: () => number);
49
+ /** Optional durable backing so a duplicate is caught ACROSS a restart / across
50
+ * overlapping processes (the in-memory `seen` Map resets on restart — the exact
51
+ * window the 2026-06-07 restart churn opened, finding_cross_restart_duplicate_replies).
52
+ * Fail-open: the store itself never throws, so a backing hiccup degrades to the
53
+ * in-memory-only behavior — it can never suppress a legitimate message. */
54
+ private readonly store;
55
+ constructor(cfg?: OutboundContentDedupConfig, now?: () => number, store?: import('./OutboundDedupStore.js').OutboundDedupStore | null);
50
56
  /** Is `text` an exact duplicate of a message sent to `topicId` within the
51
57
  * window? Pure read — does NOT record. Returns false when disabled or the
52
58
  * text is below the length floor. */
@@ -1 +1 @@
1
- {"version":3,"file":"OutboundContentDedup.d.ts","sourceRoot":"","sources":["../../src/messaging/OutboundContentDedup.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAEH,MAAM,WAAW,0BAA0B;IACzC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,kFAAkF;IAClF,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,iGAAiG;IACjG,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,mEAAmE;IACnE,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AASD;0EAC0E;AAC1E,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEtD;AAED,oEAAoE;AACpE,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAQhD;AAED,qBAAa,oBAAoB;IAC/B,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAuC;IAC3D,qDAAqD;IACrD,OAAO,CAAC,QAAQ,CAAC,IAAI,CAA0C;IAC/D,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAe;gBAEvB,GAAG,GAAE,0BAA+B,EAAE,GAAG,GAAE,MAAM,MAAiB;IAK9E;;0CAEsC;IACtC,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO;IAYnD;8EAC0E;IAC1E,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI;IAc3C,gFAAgF;IAChF,OAAO,CAAC,UAAU;CAWnB"}
1
+ {"version":3,"file":"OutboundContentDedup.d.ts","sourceRoot":"","sources":["../../src/messaging/OutboundContentDedup.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAEH,MAAM,WAAW,0BAA0B;IACzC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,kFAAkF;IAClF,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,iGAAiG;IACjG,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,mEAAmE;IACnE,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AASD;0EAC0E;AAC1E,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEtD;AAED,oEAAoE;AACpE,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAQhD;AAED,qBAAa,oBAAoB;IAC/B,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAuC;IAC3D,qDAAqD;IACrD,OAAO,CAAC,QAAQ,CAAC,IAAI,CAA0C;IAC/D,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAe;IACnC;;;;gFAI4E;IAC5E,OAAO,CAAC,QAAQ,CAAC,KAAK,CAA8D;gBAGlF,GAAG,GAAE,0BAA+B,EACpC,GAAG,GAAE,MAAM,MAAiB,EAC5B,KAAK,GAAE,OAAO,yBAAyB,EAAE,kBAAkB,GAAG,IAAW;IAO3E;;0CAEsC;IACtC,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO;IAiBnD;8EAC0E;IAC1E,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI;IAiB3C,gFAAgF;IAChF,OAAO,CAAC,UAAU;CAWnB"}
@@ -53,9 +53,16 @@ export class OutboundContentDedup {
53
53
  /** topicId -> (fingerprint -> last-sent epoch ms) */
54
54
  seen = new Map();
55
55
  now;
56
- constructor(cfg = {}, now = Date.now) {
56
+ /** Optional durable backing so a duplicate is caught ACROSS a restart / across
57
+ * overlapping processes (the in-memory `seen` Map resets on restart — the exact
58
+ * window the 2026-06-07 restart churn opened, finding_cross_restart_duplicate_replies).
59
+ * Fail-open: the store itself never throws, so a backing hiccup degrades to the
60
+ * in-memory-only behavior — it can never suppress a legitimate message. */
61
+ store;
62
+ constructor(cfg = {}, now = Date.now, store = null) {
57
63
  this.cfg = { ...DEFAULTS, ...cfg };
58
64
  this.now = now;
65
+ this.store = store;
59
66
  }
60
67
  /** Is `text` an exact duplicate of a message sent to `topicId` within the
61
68
  * window? Pure read — does NOT record. Returns false when disabled or the
@@ -66,14 +73,18 @@ export class OutboundContentDedup {
66
73
  const norm = normalizeForDedup(text);
67
74
  if (norm.length < this.cfg.minLength)
68
75
  return false;
69
- const topicMap = this.seen.get(topicId);
70
- if (!topicMap)
71
- return false;
72
76
  const fp = fingerprint(norm);
73
- const last = topicMap.get(fp);
74
- if (last === undefined)
75
- return false;
76
- return this.now() - last < this.cfg.windowMs;
77
+ const topicMap = this.seen.get(topicId);
78
+ const last = topicMap?.get(fp);
79
+ if (last !== undefined && this.now() - last < this.cfg.windowMs)
80
+ return true;
81
+ // In-memory missed (or was reset by a restart) — consult the durable store so
82
+ // an identical send across a restart / overlapping process is still caught.
83
+ // Fail-open: the store swallows its own errors and returns false on trouble.
84
+ if (this.store) {
85
+ return this.store.wasSentSince(topicId, fp, this.now() - this.cfg.windowMs);
86
+ }
87
+ return false;
77
88
  }
78
89
  /** Record that `text` was sent to `topicId` now. Call AFTER a successful send.
79
90
  * No-op for below-floor text (it can never be a dedup target anyway). */
@@ -89,8 +100,11 @@ export class OutboundContentDedup {
89
100
  this.seen.set(topicId, topicMap);
90
101
  }
91
102
  const now = this.now();
92
- topicMap.set(fingerprint(norm), now);
103
+ const fp = fingerprint(norm);
104
+ topicMap.set(fp, now);
93
105
  this.pruneTopic(topicMap);
106
+ // Mirror to the durable store so a post-restart process sees it. Fail-open.
107
+ this.store?.record(topicId, fp, now);
94
108
  }
95
109
  /** Drop expired entries, then enforce the per-topic ring cap (oldest-first). */
96
110
  pruneTopic(topicMap) {
@@ -1 +1 @@
1
- {"version":3,"file":"OutboundContentDedup.js","sourceRoot":"","sources":["../../src/messaging/OutboundContentDedup.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"OutboundContentDedup.js","sourceRoot":"","sources":["../../src/messaging/OutboundContentDedup.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,38 @@
1
+ /**
2
+ * OutboundDedupStore — durable backing for OutboundContentDedup so an identical
3
+ * reply is suppressed even ACROSS a server restart or across overlapping server
4
+ * processes.
5
+ *
6
+ * Earned 2026-06-07 (topic 21816, finding_cross_restart_duplicate_replies): during
7
+ * the "server temporarily down" restart instability a byte-identical refusal went
8
+ * out 5× to the same topic within 19s. The in-memory OutboundContentDedup couldn't
9
+ * catch it because its Map is per-process and resets on restart — exactly the
10
+ * window the restart churn opened. A durable fingerprint store closes that window.
11
+ *
12
+ * FAIL-OPEN BY CONSTRUCTION. Every method swallows errors and degrades to "no
13
+ * durable signal" (the caller then behaves exactly as the in-memory-only path did).
14
+ * A dedup store must NEVER drop a legitimate message because its backing storage
15
+ * hiccuped — suppressing a real reply is strictly worse than the duplicate it
16
+ * prevents. So a missing/locked/corrupt/native-binding-broken db ⇒ silently no-op,
17
+ * never throw. (better-sqlite3 binding fragility was itself a factor in this
18
+ * incident, so the construct path is guarded too.)
19
+ */
20
+ export interface OutboundDedupStore {
21
+ /** True if `fingerprint` was recorded for `topicId` at or after `sinceMs`. */
22
+ wasSentSince(topicId: number, fingerprint: string, sinceMs: number): boolean;
23
+ /** Record that `fingerprint` was sent to `topicId` at `atMs`. Call after a successful send. */
24
+ record(topicId: number, fingerprint: string, atMs: number): void;
25
+ }
26
+ /** A no-op store — the explicit "no durable layer" fallback. */
27
+ export declare const NULL_OUTBOUND_DEDUP_STORE: OutboundDedupStore;
28
+ export declare class SqliteOutboundDedupStore implements OutboundDedupStore {
29
+ private db;
30
+ private lastPruneAt;
31
+ /** @param dbPath absolute path, or ':memory:' for tests. */
32
+ constructor(dbPath: string);
33
+ wasSentSince(topicId: number, fingerprint: string, sinceMs: number): boolean;
34
+ record(topicId: number, fingerprint: string, atMs: number): void;
35
+ /** Resolve the default db path for an agent's state dir. */
36
+ static defaultPath(stateDir: string): string;
37
+ }
38
+ //# sourceMappingURL=OutboundDedupStore.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"OutboundDedupStore.d.ts","sourceRoot":"","sources":["../../src/messaging/OutboundDedupStore.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAOH,MAAM,WAAW,kBAAkB;IACjC,8EAA8E;IAC9E,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC;IAC7E,+FAA+F;IAC/F,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;CAClE;AAED,gEAAgE;AAChE,eAAO,MAAM,yBAAyB,EAAE,kBAGvC,CAAC;AAEF,qBAAa,wBAAyB,YAAW,kBAAkB;IACjE,OAAO,CAAC,EAAE,CAAqC;IAC/C,OAAO,CAAC,WAAW,CAAK;IAExB,4DAA4D;gBAChD,MAAM,EAAE,MAAM;IA2B1B,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO;IAc5E,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI;IAoBhE,4DAA4D;IAC5D,MAAM,CAAC,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM;CAG7C"}
@@ -0,0 +1,99 @@
1
+ /**
2
+ * OutboundDedupStore — durable backing for OutboundContentDedup so an identical
3
+ * reply is suppressed even ACROSS a server restart or across overlapping server
4
+ * processes.
5
+ *
6
+ * Earned 2026-06-07 (topic 21816, finding_cross_restart_duplicate_replies): during
7
+ * the "server temporarily down" restart instability a byte-identical refusal went
8
+ * out 5× to the same topic within 19s. The in-memory OutboundContentDedup couldn't
9
+ * catch it because its Map is per-process and resets on restart — exactly the
10
+ * window the restart churn opened. A durable fingerprint store closes that window.
11
+ *
12
+ * FAIL-OPEN BY CONSTRUCTION. Every method swallows errors and degrades to "no
13
+ * durable signal" (the caller then behaves exactly as the in-memory-only path did).
14
+ * A dedup store must NEVER drop a legitimate message because its backing storage
15
+ * hiccuped — suppressing a real reply is strictly worse than the duplicate it
16
+ * prevents. So a missing/locked/corrupt/native-binding-broken db ⇒ silently no-op,
17
+ * never throw. (better-sqlite3 binding fragility was itself a factor in this
18
+ * incident, so the construct path is guarded too.)
19
+ */
20
+ import Database from 'better-sqlite3';
21
+ import path from 'node:path';
22
+ import { registerSqliteHandle } from '../core/SqliteRegistry.js';
23
+ /** A no-op store — the explicit "no durable layer" fallback. */
24
+ export const NULL_OUTBOUND_DEDUP_STORE = {
25
+ wasSentSince: () => false,
26
+ record: () => { },
27
+ };
28
+ export class SqliteOutboundDedupStore {
29
+ db = null;
30
+ lastPruneAt = 0;
31
+ /** @param dbPath absolute path, or ':memory:' for tests. */
32
+ constructor(dbPath) {
33
+ try {
34
+ this.db = new Database(dbPath);
35
+ this.db.pragma('journal_mode = WAL');
36
+ this.db.pragma('synchronous = NORMAL');
37
+ this.db.pragma('busy_timeout = 5000');
38
+ this.db.exec(`CREATE TABLE IF NOT EXISTS outbound_dedup (
39
+ topic_id INTEGER NOT NULL,
40
+ fingerprint TEXT NOT NULL,
41
+ sent_at INTEGER NOT NULL,
42
+ PRIMARY KEY (topic_id, fingerprint)
43
+ )`);
44
+ // Close-on-exit registry (SqliteRegistry.ts) — closed once at shutdown so
45
+ // the handle never leaks (db-leak hygiene; relevant to the topic-21816
46
+ // resource theme). Registered only after the db is successfully open.
47
+ registerSqliteHandle(() => {
48
+ try {
49
+ this.db?.close();
50
+ }
51
+ catch { /* already closed */ }
52
+ });
53
+ }
54
+ catch {
55
+ // @silent-fallback-ok — fail-open by design: no durable layer (e.g. native
56
+ // binding broken / fs unwritable). A dedup store must never block startup.
57
+ this.db = null;
58
+ }
59
+ }
60
+ wasSentSince(topicId, fingerprint, sinceMs) {
61
+ if (!this.db)
62
+ return false;
63
+ try {
64
+ const row = this.db
65
+ .prepare('SELECT sent_at FROM outbound_dedup WHERE topic_id = ? AND fingerprint = ?')
66
+ .get(topicId, fingerprint);
67
+ return row !== undefined && row.sent_at >= sinceMs;
68
+ }
69
+ catch {
70
+ // @silent-fallback-ok — fail-open: no durable signal ⇒ caller falls back to
71
+ // in-memory; never suppress a legitimate message because of a read error.
72
+ return false;
73
+ }
74
+ }
75
+ record(topicId, fingerprint, atMs) {
76
+ if (!this.db)
77
+ return;
78
+ try {
79
+ this.db
80
+ .prepare(`INSERT INTO outbound_dedup (topic_id, fingerprint, sent_at) VALUES (?, ?, ?)
81
+ ON CONFLICT(topic_id, fingerprint) DO UPDATE SET sent_at = excluded.sent_at`)
82
+ .run(topicId, fingerprint, atMs);
83
+ // Opportunistic prune (~hourly) so the table can't grow without bound.
84
+ if (atMs - this.lastPruneAt > 3_600_000) {
85
+ this.lastPruneAt = atMs;
86
+ // Keep a generous 24h tail (well past any dedup window) — cheap insurance.
87
+ this.db.prepare('DELETE FROM outbound_dedup WHERE sent_at < ?').run(atMs - 86_400_000);
88
+ }
89
+ }
90
+ catch {
91
+ // @silent-fallback-ok — fail-open: a record/prune failure must not break the send path.
92
+ }
93
+ }
94
+ /** Resolve the default db path for an agent's state dir. */
95
+ static defaultPath(stateDir) {
96
+ return path.join(stateDir, 'outbound-dedup.db');
97
+ }
98
+ }
99
+ //# sourceMappingURL=OutboundDedupStore.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"OutboundDedupStore.js","sourceRoot":"","sources":["../../src/messaging/OutboundDedupStore.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,QAAQ,MAAM,gBAAgB,CAAC;AAEtC,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AASjE,gEAAgE;AAChE,MAAM,CAAC,MAAM,yBAAyB,GAAuB;IAC3D,YAAY,EAAE,GAAG,EAAE,CAAC,KAAK;IACzB,MAAM,EAAE,GAAG,EAAE,GAAE,CAAC;CACjB,CAAC;AAEF,MAAM,OAAO,wBAAwB;IAC3B,EAAE,GAAgC,IAAI,CAAC;IACvC,WAAW,GAAG,CAAC,CAAC;IAExB,4DAA4D;IAC5D,YAAY,MAAc;QACxB,IAAI,CAAC;YACH,IAAI,CAAC,EAAE,GAAG,IAAI,QAAQ,CAAC,MAAM,CAAC,CAAC;YAC/B,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC;YACrC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,sBAAsB,CAAC,CAAC;YACvC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,qBAAqB,CAAC,CAAC;YACtC,IAAI,CAAC,EAAE,CAAC,IAAI,CACV;;;;;WAKG,CACJ,CAAC;YACF,0EAA0E;YAC1E,uEAAuE;YACvE,sEAAsE;YACtE,oBAAoB,CAAC,GAAG,EAAE;gBACxB,IAAI,CAAC;oBAAC,IAAI,CAAC,EAAE,EAAE,KAAK,EAAE,CAAC;gBAAC,CAAC;gBAAC,MAAM,CAAC,CAAC,oBAAoB,CAAC,CAAC;YAC1D,CAAC,CAAC,CAAC;QACL,CAAC;QAAC,MAAM,CAAC;YACP,2EAA2E;YAC3E,2EAA2E;YAC3E,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC;QACjB,CAAC;IACH,CAAC;IAED,YAAY,CAAC,OAAe,EAAE,WAAmB,EAAE,OAAe;QAChE,IAAI,CAAC,IAAI,CAAC,EAAE;YAAE,OAAO,KAAK,CAAC;QAC3B,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,IAAI,CAAC,EAAE;iBAChB,OAAO,CAAC,2EAA2E,CAAC;iBACpF,GAAG,CAAC,OAAO,EAAE,WAAW,CAAoC,CAAC;YAChE,OAAO,GAAG,KAAK,SAAS,IAAI,GAAG,CAAC,OAAO,IAAI,OAAO,CAAC;QACrD,CAAC;QAAC,MAAM,CAAC;YACP,4EAA4E;YAC5E,0EAA0E;YAC1E,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAED,MAAM,CAAC,OAAe,EAAE,WAAmB,EAAE,IAAY;QACvD,IAAI,CAAC,IAAI,CAAC,EAAE;YAAE,OAAO;QACrB,IAAI,CAAC;YACH,IAAI,CAAC,EAAE;iBACJ,OAAO,CACN;uFAC6E,CAC9E;iBACA,GAAG,CAAC,OAAO,EAAE,WAAW,EAAE,IAAI,CAAC,CAAC;YACnC,uEAAuE;YACvE,IAAI,IAAI,GAAG,IAAI,CAAC,WAAW,GAAG,SAAS,EAAE,CAAC;gBACxC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;gBACxB,2EAA2E;gBAC3E,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,8CAA8C,CAAC,CAAC,GAAG,CAAC,IAAI,GAAG,UAAU,CAAC,CAAC;YACzF,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,wFAAwF;QAC1F,CAAC;IACH,CAAC;IAED,4DAA4D;IAC5D,MAAM,CAAC,WAAW,CAAC,QAAgB;QACjC,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,mBAAmB,CAAC,CAAC;IAClD,CAAC;CACF"}
@@ -1 +1 @@
1
- {"version":3,"file":"routes.d.ts","sourceRoot":"","sources":["../../src/server/routes.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"routes.d.ts","sourceRoot":"","sources":["../../src/server/routes.ts"],"names":[],"mappings":"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"}
@@ -108,6 +108,7 @@ import { listAutonomousJobs, canStartAutonomousJob, stopAutonomousTopic, stopAll
108
108
  import { ProcessIntegrity } from '../core/ProcessIntegrity.js';
109
109
  import { decideIngress, commitInboundReply, dedupeKeyFor } from '../messaging/ingressDedup.js';
110
110
  import { OutboundContentDedup } from '../messaging/OutboundContentDedup.js';
111
+ import { SqliteOutboundDedupStore } from '../messaging/OutboundDedupStore.js';
111
112
  import { RelayContentDedup } from '../messaging/relayContentDedup.js';
112
113
  import { getOutboundQueueStatus, cleanupDeliveredOutbound, buildAgentList } from '../messaging/GitSyncTransport.js';
113
114
  import { verifyAgentToken, getAgentToken } from '../messaging/AgentTokenManager.js';
@@ -715,7 +716,11 @@ export function createRoutes(ctx) {
715
716
  // that, runs BEFORE the tone gate (so it also covers the proxy/relay paths
716
717
  // the tone gate skips), and honors the existing `allowDuplicate` escape hatch.
717
718
  const outboundContentDedup = new OutboundContentDedup(ctx.config
718
- .outboundContentDedup ?? {});
719
+ .outboundContentDedup ?? {}, Date.now,
720
+ // Durable backing — survives restarts + overlapping processes so a byte-identical
721
+ // reply isn't re-sent across a restart (finding_cross_restart_duplicate_replies,
722
+ // topic 21816). Fail-open: a backing hiccup degrades to in-memory-only.
723
+ new SqliteOutboundDedupStore(SqliteOutboundDedupStore.defaultPath(ctx.config.stateDir)));
719
724
  // ── Messaging tone gate ──────────────────────────────────────────
720
725
  //
721
726
  // Invoked before forwarding agent-authored messages to a user. Runs the
@@ -4475,43 +4480,47 @@ export function createRoutes(ctx) {
4475
4480
  const fs = await import('node:fs');
4476
4481
  const path = await import('node:path');
4477
4482
  const events = [];
4478
- const tsField = (o) => o.createdAt ?? o.timestamp ?? o.date ?? o.ts ?? o.loggedAt ?? o.addedAt;
4483
+ const tsField = (o) => o.createdAt ?? o.timestamp ?? o.date ?? o.ts ?? o.loggedAt ?? o.addedAt ?? o.discoveredAt;
4479
4484
  const push = (ts, type) => {
4480
4485
  if (ts === undefined || ts === null)
4481
4486
  return;
4482
4487
  const iso = typeof ts === 'number' ? new Date(ts).toISOString() : String(ts);
4483
4488
  events.push({ timestamp: iso, type });
4484
4489
  };
4485
- // learning-registry.json registered learnings
4490
+ // (1) Registered learnings — EvolutionManager writes to state/evolution/, and the
4491
+ // timestamp lives at source.discoveredAt (not a top-level field). The old path
4492
+ // (stateDir/learning-registry.json) and top-level tsField both missed → 0 events.
4486
4493
  try {
4487
- const p = path.join(ctx.config.stateDir, 'learning-registry.json');
4494
+ const p = path.join(ctx.config.stateDir, 'state', 'evolution', 'learning-registry.json');
4488
4495
  if (fs.existsSync(p)) {
4489
4496
  const reg = JSON.parse(fs.readFileSync(p, 'utf-8'));
4490
- for (const l of (reg.learnings ?? []))
4491
- push(tsField(l), 'learning');
4497
+ for (const l of (reg.learnings ?? [])) {
4498
+ const src = (l && typeof l === 'object' ? l.source : null);
4499
+ push(src?.discoveredAt ?? tsField(l), 'learning');
4500
+ }
4492
4501
  }
4493
4502
  }
4494
4503
  catch { /* skip unreadable source */ }
4495
- // best-effort JSONL sources
4496
- const jsonlSources = [
4497
- ['state/corrections.jsonl', 'correction'],
4498
- ['logs/evolution-actions.jsonl', 'evolution'],
4499
- ];
4500
- for (const [rel, type] of jsonlSources) {
4504
+ // (2) Evolution actions — a JSON array under .actions (each with top-level
4505
+ // createdAt), NOT a logs/*.jsonl stream.
4506
+ try {
4507
+ const p = path.join(ctx.config.stateDir, 'state', 'evolution', 'action-queue.json');
4508
+ if (fs.existsSync(p)) {
4509
+ const aq = JSON.parse(fs.readFileSync(p, 'utf-8'));
4510
+ for (const a of (aq.actions ?? []))
4511
+ push(tsField(a), 'evolution');
4512
+ }
4513
+ }
4514
+ catch { /* skip unreadable source */ }
4515
+ // (3) Corrections — persisted in the SQLite CorrectionLedger, not a JSONL file.
4516
+ // Guarded: correctionLearning ships off on many agents (ledger may be absent).
4517
+ if (ctx.correctionLedger) {
4501
4518
  try {
4502
- const p = path.join(ctx.config.stateDir, rel);
4503
- if (!fs.existsSync(p))
4504
- continue;
4505
- for (const line of fs.readFileSync(p, 'utf-8').split('\n')) {
4506
- if (!line.trim())
4507
- continue;
4508
- try {
4509
- push(tsField(JSON.parse(line)), type);
4510
- }
4511
- catch { /* skip bad line */ }
4519
+ for (const r of ctx.correctionLedger.list({ limit: 1000 })) {
4520
+ push(r.detectedAt ?? r.createdAt, 'correction');
4512
4521
  }
4513
4522
  }
4514
- catch { /* skip unreadable source */ }
4523
+ catch { /* skip ledger error */ }
4515
4524
  }
4516
4525
  res.json(computeLearningVelocity(events, new Date().toISOString(), windowDays));
4517
4526
  }