@animalabs/agent-framework 0.6.7 → 0.6.10

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 (54) hide show
  1. package/dist/src/agent.d.ts +5 -34
  2. package/dist/src/agent.d.ts.map +1 -1
  3. package/dist/src/agent.js +62 -137
  4. package/dist/src/agent.js.map +1 -1
  5. package/dist/src/framework.d.ts +14 -56
  6. package/dist/src/framework.d.ts.map +1 -1
  7. package/dist/src/framework.js +192 -1742
  8. package/dist/src/framework.js.map +1 -1
  9. package/dist/src/modules/workspace/index.d.ts +10 -0
  10. package/dist/src/modules/workspace/index.d.ts.map +1 -1
  11. package/dist/src/modules/workspace/index.js +48 -2
  12. package/dist/src/modules/workspace/index.js.map +1 -1
  13. package/dist/src/modules/workspace/types.d.ts +2 -0
  14. package/dist/src/modules/workspace/types.d.ts.map +1 -1
  15. package/dist/src/modules/workspace/types.js.map +1 -1
  16. package/dist/src/modules/workspace/watcher.d.ts +17 -0
  17. package/dist/src/modules/workspace/watcher.d.ts.map +1 -1
  18. package/dist/src/modules/workspace/watcher.js +143 -7
  19. package/dist/src/modules/workspace/watcher.js.map +1 -1
  20. package/dist/src/types/agent.d.ts +15 -12
  21. package/dist/src/types/agent.d.ts.map +1 -1
  22. package/dist/test/helpers/mock-membrane.js +1 -1
  23. package/dist/test/helpers/mock-membrane.js.map +1 -1
  24. package/dist/test/mcpl-awareness-barrier.test.js +1 -228
  25. package/dist/test/mcpl-awareness-barrier.test.js.map +1 -1
  26. package/dist/test/refusal-single-call.test.d.ts +2 -0
  27. package/dist/test/refusal-single-call.test.d.ts.map +1 -0
  28. package/dist/test/refusal-single-call.test.js +177 -0
  29. package/dist/test/refusal-single-call.test.js.map +1 -0
  30. package/dist/test/trunk-channel-routing.test.js +5 -1
  31. package/dist/test/trunk-channel-routing.test.js.map +1 -1
  32. package/dist/test/workspace-watcher.test.js +161 -9
  33. package/dist/test/workspace-watcher.test.js.map +1 -1
  34. package/dist/tsconfig.tsbuildinfo +1 -1
  35. package/package.json +4 -4
  36. package/src/agent.ts +67 -226
  37. package/src/framework.ts +226 -2394
  38. package/src/modules/workspace/index.ts +47 -2
  39. package/src/modules/workspace/types.ts +2 -0
  40. package/src/modules/workspace/watcher.ts +160 -7
  41. package/src/types/agent.ts +17 -12
  42. package/dist/src/canonical-json.d.ts +0 -2
  43. package/dist/src/canonical-json.d.ts.map +0 -1
  44. package/dist/src/canonical-json.js +0 -23
  45. package/dist/src/canonical-json.js.map +0 -1
  46. package/dist/test/primary-summary-refusal-fallback-integration.test.d.ts +0 -2
  47. package/dist/test/primary-summary-refusal-fallback-integration.test.d.ts.map +0 -1
  48. package/dist/test/primary-summary-refusal-fallback-integration.test.js +0 -1955
  49. package/dist/test/primary-summary-refusal-fallback-integration.test.js.map +0 -1
  50. package/dist/test/primary-summary-refusal-fallback.test.d.ts +0 -2
  51. package/dist/test/primary-summary-refusal-fallback.test.d.ts.map +0 -1
  52. package/dist/test/primary-summary-refusal-fallback.test.js +0 -753
  53. package/dist/test/primary-summary-refusal-fallback.test.js.map +0 -1
  54. package/src/canonical-json.ts +0 -22
@@ -5,7 +5,8 @@
5
5
  * downstream wake policies can key on creation vs. modification vs. deletion.
6
6
  */
7
7
  import { watch } from 'chokidar';
8
- import { mkdirSync } from 'node:fs';
8
+ import { mkdirSync, statSync } from 'node:fs';
9
+ import { basename } from 'node:path';
9
10
  /**
10
11
  * Manages filesystem watching for a single mount.
11
12
  * Handles debouncing, ignore patterns, and write suppression.
@@ -16,8 +17,13 @@ export class MountWatcher {
16
17
  // create -> modify collapses to 'created' (single batch); delete always wins.
17
18
  pendingChanges = new Map();
18
19
  debounceTimer = null;
20
+ rootPollTimer = null;
19
21
  suppressedPaths = new Set();
20
22
  suppressionTimers = new Map();
23
+ rootIdentity = null;
24
+ detached = false;
25
+ attaching = false;
26
+ stopped = true;
21
27
  debounceMs;
22
28
  config;
23
29
  onChangeCallback;
@@ -32,8 +38,13 @@ export class MountWatcher {
32
38
  * Start watching the filesystem.
33
39
  */
34
40
  start() {
35
- if (this.watcher)
41
+ if (this.watcher || this.rootPollTimer)
36
42
  return;
43
+ this.stopped = false;
44
+ this.attach();
45
+ this.startRootPolling();
46
+ }
47
+ attach() {
37
48
  // Read-write mounts: ensure the path exists before chokidar attaches.
38
49
  // chokidar 4's fs.watch-based backend silently fails to fire events when
39
50
  // the watched path OR any of its parent directories don't exist at
@@ -75,19 +86,37 @@ export class MountWatcher {
75
86
  this.watcher.on('add', handleEvent('created'));
76
87
  this.watcher.on('change', handleEvent('modified'));
77
88
  this.watcher.on('unlink', handleEvent('deleted'));
89
+ this.watcher.on('unlinkDir', (dirPath) => {
90
+ if (this.isRootPath(dirPath)) {
91
+ this.detached = true;
92
+ }
93
+ });
78
94
  if (this.lifecycle.onReady) {
79
95
  this.watcher.once('ready', this.lifecycle.onReady);
80
96
  }
81
- if (this.lifecycle.onError) {
82
- this.watcher.on('error', (err) => {
83
- this.lifecycle.onError?.(err instanceof Error ? err : new Error(String(err)));
84
- });
85
- }
97
+ this.watcher.on('error', (err) => {
98
+ this.reportError(err);
99
+ });
100
+ this.watcher.on('raw', (event, rawPath, _details) => {
101
+ if (event !== 'rename')
102
+ return;
103
+ // A rename on the watched root's path/basename is the one signal that
104
+ // survives inode reuse on Linux, where unlinkDir/error never fire.
105
+ if (this.isRootPath(rawPath) || basename(rawPath) === basename(this.config.path)) {
106
+ void this.checkRootLiveness({ force: true });
107
+ }
108
+ });
109
+ this.captureRootIdentity();
86
110
  }
87
111
  /**
88
112
  * Stop watching.
89
113
  */
90
114
  async stop() {
115
+ this.stopped = true;
116
+ if (this.rootPollTimer) {
117
+ clearInterval(this.rootPollTimer);
118
+ this.rootPollTimer = null;
119
+ }
91
120
  if (this.debounceTimer) {
92
121
  clearTimeout(this.debounceTimer);
93
122
  this.debounceTimer = null;
@@ -102,6 +131,9 @@ export class MountWatcher {
102
131
  await this.watcher.close();
103
132
  this.watcher = null;
104
133
  }
134
+ this.rootIdentity = null;
135
+ this.detached = false;
136
+ this.attaching = false;
105
137
  }
106
138
  /**
107
139
  * Suppress watcher events for a path temporarily.
@@ -174,6 +206,101 @@ export class MountWatcher {
174
206
  }
175
207
  }, this.debounceMs);
176
208
  }
209
+ startRootPolling() {
210
+ const pollMs = this.config.watchRootPollMs ?? 2000;
211
+ this.rootPollTimer = setInterval(() => {
212
+ void this.checkRootLiveness();
213
+ }, pollMs);
214
+ this.rootPollTimer.unref();
215
+ }
216
+ async checkRootLiveness(opts = {}) {
217
+ if (this.stopped || this.attaching)
218
+ return;
219
+ let current;
220
+ try {
221
+ current = this.readRootIdentity();
222
+ }
223
+ catch (err) {
224
+ if (this.isErrno(err, 'ENOENT')) {
225
+ this.detached = true;
226
+ if (this.config.mode === 'read-write') {
227
+ await this.reattach();
228
+ }
229
+ return;
230
+ }
231
+ this.reportError(err);
232
+ if (opts.force) {
233
+ this.detached = true;
234
+ await this.reattach();
235
+ }
236
+ return;
237
+ }
238
+ if (!this.rootIdentity && !this.detached) {
239
+ await this.reattach();
240
+ return;
241
+ }
242
+ if (!opts.force && !this.detached && this.rootIdentity
243
+ && this.sameIdentity(current, this.rootIdentity)) {
244
+ return;
245
+ }
246
+ await this.reattach();
247
+ }
248
+ async reattach() {
249
+ if (this.attaching || this.stopped)
250
+ return;
251
+ this.attaching = true;
252
+ try {
253
+ const oldWatcher = this.watcher;
254
+ this.watcher = null;
255
+ if (oldWatcher) {
256
+ await oldWatcher.close();
257
+ }
258
+ if (this.stopped)
259
+ return;
260
+ this.attach();
261
+ if (!this.detached && this.rootIdentity) {
262
+ this.lifecycle.onReattach?.();
263
+ }
264
+ }
265
+ catch (err) {
266
+ this.reportError(err);
267
+ }
268
+ finally {
269
+ this.attaching = false;
270
+ }
271
+ }
272
+ captureRootIdentity() {
273
+ try {
274
+ this.rootIdentity = this.readRootIdentity();
275
+ this.detached = false;
276
+ }
277
+ catch (err) {
278
+ if (this.isErrno(err, 'ENOENT')) {
279
+ this.rootIdentity = null;
280
+ this.detached = true;
281
+ return;
282
+ }
283
+ this.rootIdentity = null;
284
+ this.detached = false;
285
+ this.reportError(err);
286
+ }
287
+ }
288
+ readRootIdentity() {
289
+ const stat = statSync(this.config.path);
290
+ return { dev: stat.dev, ino: stat.ino, birthtimeMs: stat.birthtimeMs };
291
+ }
292
+ sameIdentity(a, b) {
293
+ // birthtimeMs is only a secondary tripwire: sub-millisecond replacements
294
+ // can reuse both the inode and timestamp, so raw rename remains essential.
295
+ return a.dev === b.dev && a.ino === b.ino && a.birthtimeMs === b.birthtimeMs;
296
+ }
297
+ isErrno(err, code) {
298
+ return typeof err === 'object' && err !== null && 'code' in err
299
+ && err.code === code;
300
+ }
301
+ reportError(err) {
302
+ this.lifecycle.onError?.(err instanceof Error ? err : new Error(String(err)));
303
+ }
177
304
  toRelative(absolutePath) {
178
305
  const base = this.config.path.endsWith('/')
179
306
  ? this.config.path
@@ -183,5 +310,14 @@ export class MountWatcher {
183
310
  }
184
311
  return null;
185
312
  }
313
+ isRootPath(absolutePath) {
314
+ const root = this.config.path.endsWith('/')
315
+ ? this.config.path.slice(0, -1)
316
+ : this.config.path;
317
+ const candidate = absolutePath.endsWith('/')
318
+ ? absolutePath.slice(0, -1)
319
+ : absolutePath;
320
+ return candidate === root;
321
+ }
186
322
  }
187
323
  //# sourceMappingURL=watcher.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"watcher.js","sourceRoot":"","sources":["../../../../src/modules/workspace/watcher.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"watcher.js","sourceRoot":"","sources":["../../../../src/modules/workspace/watcher.ts"],"names":[],"mappings":"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"}
@@ -52,6 +52,21 @@ export interface AgentConfig {
52
52
  * where the cheaper write premium wins.
53
53
  */
54
54
  cacheTtl?: '5m' | '1h';
55
+ /**
56
+ * Whether to emit prompt-cache markers (cache_control) on requests.
57
+ * Default true (Anthropic API). Set false for transports that reject
58
+ * cache_control — e.g. Bedrock legacy Claude models, which fail with
59
+ * "your request did not allow prompt caching".
60
+ */
61
+ promptCaching?: boolean;
62
+ /**
63
+ * Prefill-formatter support: a synthetic user message appended after the
64
+ * conversation (e.g. chapterx's `<cmd>cat untitled.txt</cmd>` CLI-sim
65
+ * scaffold). Forwarded verbatim to membrane's prefill formatters; ignored
66
+ * by native formatting. Part of reproducing a prefill-era bot's exact
67
+ * prompting structure when migrating it into a resident.
68
+ */
69
+ prefillUserMessage?: string;
55
70
  /** Provider-specific request parameters (for example Responses reasoning
56
71
  * and server-side compaction settings). */
57
72
  providerParams?: Record<string, unknown>;
@@ -99,18 +114,6 @@ export interface AgentConfig {
99
114
  * than dropping it silently. Default true.
100
115
  */
101
116
  announceHumanTurns?: boolean;
102
- /**
103
- * Primary-lane autobiographical summary refusal fallback. Disabled by
104
- * default: when enabled, the framework may compare the refused primary
105
- * request against the latest compatible healthy request on the same branch
106
- * generation, expand newly admitted summary pairs back to exact raw
107
- * source, and issue at most one retry.
108
- */
109
- primarySummaryFallback?: {
110
- enabled?: boolean;
111
- maxNewSummaries?: number;
112
- requestBudgetTokens?: number;
113
- };
114
117
  };
115
118
  }
116
119
  /** The intentionally small set of agent settings that may change in-process. */
@@ -1 +1 @@
1
- {"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../../../src/types/agent.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../../../src/types/agent.ts"],"names":[],"mappings":"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"}
@@ -68,7 +68,7 @@ export class MockYieldingStream {
68
68
  if (response.usage) {
69
69
  this.events.push({ type: 'usage', usage: response.usage });
70
70
  }
71
- if (response.stopReason === 'tool_use' && response.toolCalls.length > 0) {
71
+ if (response.toolCalls.length > 0) {
72
72
  this._isWaitingForTools = true;
73
73
  this._pendingToolCallIds = response.toolCalls.map((c) => c.id);
74
74
  this.events.push({
@@ -1 +1 @@
1
- {"version":3,"file":"mock-membrane.js","sourceRoot":"","sources":["../../../test/helpers/mock-membrane.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mock-membrane.js","sourceRoot":"","sources":["../../../test/helpers/mock-membrane.ts"],"names":[],"mappings":"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"}
@@ -6,10 +6,9 @@ import { join } from 'node:path';
6
6
  import { AgentFramework } from '../src/framework.js';
7
7
  import { McplServerConnection } from '../src/mcpl/server-connection.js';
8
8
  import { DiscordAwarenessOutbox } from '../src/recovery/discord-awareness-outbox.js';
9
- import { MockMembrane, MockYieldingStream, createMockResponse } from './helpers/mock-membrane.js';
9
+ import { MockMembrane } from './helpers/mock-membrane.js';
10
10
  const FIXTURE = fileURLToPath(new URL('./fixtures/awareness-barrier-mcpl-server.mjs', import.meta.url));
11
11
  const TEST_ROOT = join(process.cwd(), '.test-tmp');
12
- const FALLBACK_STATE_ID = 'framework/primary-summary-fallback';
13
12
  function records(path) {
14
13
  try {
15
14
  return readFileSync(path, 'utf8')
@@ -108,131 +107,6 @@ function twoServerFrameworkConfig(dir, order, dataMethod, runtime = false) {
108
107
  },
109
108
  };
110
109
  }
111
- function identity(id) {
112
- return {
113
- id,
114
- contentHash: `content-${id}`,
115
- carrierHash: `carrier-${id}`,
116
- sourceLeafHash: `leaf-${id}`,
117
- };
118
- }
119
- function projection(branchId, generation, ids) {
120
- return {
121
- namespace: 'default',
122
- branch: { id: branchId, name: 'main', generation },
123
- selectedSummaries: ids.map((id, index) => ({
124
- identity: identity(id),
125
- level: 1,
126
- orderedSourceIds: [`src-${id}-1`, `src-${id}-2`],
127
- renderedAs: 'summary_pair',
128
- pairRange: { start: index * 2, end: index * 2 + 1 },
129
- })),
130
- };
131
- }
132
- function request(system, text) {
133
- return {
134
- system,
135
- messages: [{ participant: 'user', content: [{ type: 'text', text }] }],
136
- config: { model: 'test-model', maxTokens: 256 },
137
- assistantParticipant: 'assistant',
138
- promptCaching: true,
139
- cacheTtl: '1h',
140
- };
141
- }
142
- function artifacts(systemTag, summaryIds, branchId = 'branch-a', generation = 1) {
143
- return {
144
- compileResult: {
145
- messages: [
146
- { participant: 'Context Manager', content: [{ type: 'text', text: 'What do you remember from earlier?' }] },
147
- { participant: 'assistant', content: [{ type: 'text', text: `summary ${summaryIds.join(',')}` }] },
148
- { participant: 'user', content: [{ type: 'text', text: 'latest input' }] },
149
- ],
150
- systemInjections: [],
151
- primarySummaryProjection: projection(branchId, generation, summaryIds),
152
- },
153
- contract: {
154
- systemHash: `system-${systemTag}`,
155
- modelConfigHash: `model-${systemTag}`,
156
- toolContractHash: `tools-${systemTag}`,
157
- },
158
- };
159
- }
160
- function branchInfo(id = 'branch-a', generation = 1) {
161
- return {
162
- id,
163
- name: 'main',
164
- head: 1,
165
- generation,
166
- created: new Date('2026-07-17T00:00:00.000Z'),
167
- };
168
- }
169
- function refusalResponse(content = []) {
170
- return {
171
- ...createMockResponse(content, 'refusal'),
172
- content,
173
- stopReason: 'refusal',
174
- rawAssistantText: '',
175
- toolCalls: [],
176
- usage: { inputTokens: 40, outputTokens: 0 },
177
- details: {
178
- usage: { inputTokens: 40, outputTokens: 0 },
179
- stop: { reason: 'refusal', wasTruncated: false },
180
- },
181
- raw: {
182
- response: {
183
- stop_details: { category: 'reasoning_extraction' },
184
- },
185
- },
186
- };
187
- }
188
- function outputResponse(text = 'Recovered') {
189
- return createMockResponse([{ type: 'text', text }]);
190
- }
191
- class HookedCompleteStream {
192
- response;
193
- beforeYield;
194
- isWaitingForTools = false;
195
- pendingToolCallIds = [];
196
- toolDepth = 0;
197
- constructor(response, beforeYield) {
198
- this.response = response;
199
- this.beforeYield = beforeYield;
200
- }
201
- provideToolResults() {
202
- throw new Error('HookedCompleteStream does not support tool rounds');
203
- }
204
- cancel() { }
205
- async *[Symbol.asyncIterator]() {
206
- await this.beforeYield?.();
207
- yield { type: 'complete', response: this.response };
208
- }
209
- }
210
- class ScriptedMembrane {
211
- responsesByCall;
212
- calls = [];
213
- constructor(responsesByCall) {
214
- this.responsesByCall = responsesByCall;
215
- }
216
- complete() {
217
- throw new Error('complete() should not be used by the primary streaming fallback path');
218
- }
219
- streamYielding(request) {
220
- this.calls.push(structuredClone(request));
221
- const next = this.responsesByCall.shift();
222
- if (!next)
223
- return new MockYieldingStream([createMockResponse([{ type: 'text', text: 'default' }])]);
224
- return Array.isArray(next) ? new MockYieldingStream(next) : next;
225
- }
226
- asMembrane() {
227
- return this;
228
- }
229
- }
230
- async function persistHealthyBaseline(framework, agent, baselineRequest, baselineArtifacts) {
231
- const build = framework.buildPrimarySummaryRequestRecord.bind(framework);
232
- const persist = framework.persistPrimarySummaryRequestRecord.bind(framework);
233
- const record = build(agent, 'baseline-request', 'primary', baselineRequest, baselineArtifacts, branchInfo(baselineArtifacts.compileResult.primarySummaryProjection.branch.id, baselineArtifacts.compileResult.primarySummaryProjection.branch.generation), 'end_turn', true, 0, 30, 'success');
234
- await persist(record);
235
- }
236
110
  const DATA_METHODS = [
237
111
  'push/event',
238
112
  'inference/request',
@@ -298,107 +172,6 @@ for (const order of ['heartbeat-first', 'discord-first']) {
298
172
  }
299
173
  });
300
174
  }
301
- test('runtime awareness barrier blocks internally queued fallback retries until the newest release', async () => {
302
- mkdirSync(TEST_ROOT, { recursive: true });
303
- const dir = mkdtempSync(join(TEST_ROOT, 'awareness-fallback-retry-'));
304
- const storePath = join(dir, 'store');
305
- const outboxPath = join(dir, 'awareness.json');
306
- const statusPath = join(dir, 'status.jsonl');
307
- const releasePath = join(dir, 'release');
308
- const listChangePath = join(dir, 'list-change');
309
- const outbox = new DiscordAwarenessOutbox(outboxPath);
310
- const membrane = new ScriptedMembrane([
311
- new HookedCompleteStream(refusalResponse(), async () => {
312
- const batch = outbox.prepare({
313
- agentName: 'assistant',
314
- sourceBranch: 'source',
315
- targetBranch: 'main',
316
- activationPolicy: 'explicit',
317
- refs: [{ serverId: 'discord', channelId: 'discord:guild:runtime', messageId: 'runtime-fallback-barrier' }],
318
- });
319
- assert.ok(batch);
320
- outbox.activate(batch.id);
321
- writeFileSync(listChangePath, 'change');
322
- await waitFor('first runtime reaction call', () => records(statusPath).some((record) => record.event === 'reaction-call' && record.ordinal === 1));
323
- }),
324
- [outputResponse('Recovered after awareness barrier')],
325
- ]);
326
- let framework;
327
- try {
328
- framework = await AgentFramework.create({
329
- storePath,
330
- discordAwarenessOutboxPath: outboxPath,
331
- discordAwarenessDeadlineMs: 1_000,
332
- membrane: membrane.asMembrane(),
333
- agents: [{
334
- name: 'assistant',
335
- model: 'test-model',
336
- systemPrompt: 'system',
337
- refusalHandling: {
338
- primarySummaryFallback: { enabled: true, maxNewSummaries: 4, requestBudgetTokens: 4096 },
339
- },
340
- }],
341
- modules: [],
342
- mcplServers: [{
343
- id: 'discord',
344
- command: process.execPath,
345
- args: [FIXTURE],
346
- requestTimeoutMs: 0,
347
- env: {
348
- STATUS_PATH: statusPath,
349
- LEDGER_PATH: outboxPath,
350
- RELEASE_PATH: releasePath,
351
- LIST_CHANGE_PATH: listChangePath,
352
- DATA_METHOD: 'host/command',
353
- },
354
- enabledFeatureSets: ['chat'],
355
- }],
356
- });
357
- const agent = framework.getAgent('assistant');
358
- const baselineRequest = request('system', 'baseline');
359
- const baselineArtifacts = artifacts('shared', ['L1-1']);
360
- await persistHealthyBaseline(framework, agent, baselineRequest, baselineArtifacts);
361
- const currentRequest = request('system', 'latest input');
362
- const currentArtifacts = artifacts('shared', ['L1-1', 'L1-2']);
363
- const retryRequest = request('system', 'expanded raw source');
364
- agent.prepareActivationRequest = async () => ({ request: currentRequest, artifacts: currentArtifacts });
365
- agent.buildPrimarySummaryRawExpansionRequest = () => ({ request: retryRequest, artifacts: currentArtifacts });
366
- agent.getCurrentBranchGeneration =
367
- () => branchInfo();
368
- framework.pendingRequests.push({
369
- agentName: 'assistant',
370
- reason: 'test',
371
- source: 'test',
372
- timestamp: Date.now(),
373
- });
374
- let drained = false;
375
- const draining = framework.runUntilIdle().then(() => { drained = true; });
376
- await waitFor('primary provider call', () => membrane.calls.length === 1);
377
- await waitFor('fallback intent while barrier is unresolved', () => {
378
- const raw = framework.getStore().getStateJson(FALLBACK_STATE_ID);
379
- return (raw?.requests ?? []).some((record) => record.dispatchKind === 'primary'
380
- && record.requestId !== 'baseline-request'
381
- && record.fallbackStatus === 'pending');
382
- });
383
- assert.equal(membrane.calls.length, 1, 'queued fallback retry must not dispatch under an unresolved barrier');
384
- assert.equal(records(statusPath).some((record) => record.event === 'registration-response'), true, 'registration control plane stays live during the barrier');
385
- assert.equal(records(statusPath).some((record) => record.event === 'reaction-call'), true, 'awareness reaction tooling stays live during the barrier');
386
- assert.equal(drained, false, 'runUntilIdle remains blocked behind the unresolved retry barrier');
387
- await new Promise((resolve) => setTimeout(resolve, 100));
388
- assert.equal(membrane.calls.length, 1, 'the unresolved awareness barrier must keep the retry blocked without a third-party dispatch');
389
- writeFileSync(releasePath, 'release');
390
- await waitFor('single fallback retry dispatch after release', () => membrane.calls.length === 2);
391
- await draining;
392
- const fallbackDispatches = membrane.calls.filter((call) => call.messages[0]?.content[0]?.type === 'text'
393
- && call.messages[0]?.content[0]?.text === 'expanded raw source');
394
- assert.equal(fallbackDispatches.length, 1, 'the awareness barrier may release exactly one fallback retry dispatch');
395
- assert.equal(records(statusPath).filter((record) => record.event === 'reaction-call').length, 1, 'barrier control traffic should not spin into a hot loop');
396
- }
397
- finally {
398
- await framework?.stop();
399
- rmSync(dir, { recursive: true, force: true });
400
- }
401
- });
402
175
  test('mandatory awareness deadline survives requestTimeoutMs: 0 and durably releases startup', async () => {
403
176
  mkdirSync(TEST_ROOT, { recursive: true });
404
177
  const dir = mkdtempSync(join(TEST_ROOT, 'awareness-timeout-'));