@animalabs/agent-framework 0.6.8 → 0.7.0

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 (49) hide show
  1. package/dist/src/agent.d.ts +6 -0
  2. package/dist/src/agent.d.ts.map +1 -1
  3. package/dist/src/agent.js +11 -1
  4. package/dist/src/agent.js.map +1 -1
  5. package/dist/src/framework.d.ts +129 -15
  6. package/dist/src/framework.d.ts.map +1 -1
  7. package/dist/src/framework.js +967 -113
  8. package/dist/src/framework.js.map +1 -1
  9. package/dist/src/mcpl/channel-registry.d.ts +87 -7
  10. package/dist/src/mcpl/channel-registry.d.ts.map +1 -1
  11. package/dist/src/mcpl/channel-registry.js +329 -49
  12. package/dist/src/mcpl/channel-registry.js.map +1 -1
  13. package/dist/src/modules/workspace/index.d.ts +10 -0
  14. package/dist/src/modules/workspace/index.d.ts.map +1 -1
  15. package/dist/src/modules/workspace/index.js +61 -6
  16. package/dist/src/modules/workspace/index.js.map +1 -1
  17. package/dist/src/modules/workspace/types.d.ts +2 -0
  18. package/dist/src/modules/workspace/types.d.ts.map +1 -1
  19. package/dist/src/modules/workspace/types.js.map +1 -1
  20. package/dist/src/modules/workspace/watcher.d.ts +17 -0
  21. package/dist/src/modules/workspace/watcher.d.ts.map +1 -1
  22. package/dist/src/modules/workspace/watcher.js +143 -7
  23. package/dist/src/modules/workspace/watcher.js.map +1 -1
  24. package/dist/src/types/agent.d.ts +32 -0
  25. package/dist/src/types/agent.d.ts.map +1 -1
  26. package/dist/src/types/trace.d.ts +32 -0
  27. package/dist/src/types/trace.d.ts.map +1 -1
  28. package/dist/test/channel-registry-routing.test.js +186 -10
  29. package/dist/test/channel-registry-routing.test.js.map +1 -1
  30. package/dist/test/explicit-prose-routing.test.d.ts +11 -0
  31. package/dist/test/explicit-prose-routing.test.d.ts.map +1 -0
  32. package/dist/test/explicit-prose-routing.test.js +247 -0
  33. package/dist/test/explicit-prose-routing.test.js.map +1 -0
  34. package/dist/test/present-while-acting.test.js +85 -8
  35. package/dist/test/present-while-acting.test.js.map +1 -1
  36. package/dist/test/trunk-channel-routing.test.js +7 -3
  37. package/dist/test/trunk-channel-routing.test.js.map +1 -1
  38. package/dist/test/workspace-watcher.test.js +161 -9
  39. package/dist/test/workspace-watcher.test.js.map +1 -1
  40. package/dist/tsconfig.tsbuildinfo +1 -1
  41. package/package.json +3 -3
  42. package/src/agent.ts +11 -1
  43. package/src/framework.ts +1037 -116
  44. package/src/mcpl/channel-registry.ts +401 -54
  45. package/src/modules/workspace/index.ts +60 -6
  46. package/src/modules/workspace/types.ts +2 -0
  47. package/src/modules/workspace/watcher.ts +160 -7
  48. package/src/types/agent.ts +35 -0
  49. package/src/types/trace.ts +47 -1
@@ -1,11 +1,12 @@
1
1
  import { describe, it, beforeEach, afterEach } from 'node:test';
2
2
  import assert from 'node:assert';
3
- import { existsSync, mkdtempSync, writeFileSync, unlinkSync, rmSync } from 'node:fs';
3
+ import { existsSync, mkdtempSync, mkdirSync, writeFileSync, unlinkSync, rmSync } from 'node:fs';
4
4
  import { tmpdir } from 'node:os';
5
5
  import { join } from 'node:path';
6
6
  import { MountWatcher } from '../src/modules/workspace/watcher.js';
7
7
  // Short debounce keeps each test under ~200ms.
8
8
  const DEBOUNCE_MS = 50;
9
+ const WATCH_ROOT_POLL_MS = 50;
9
10
  // Chokidar's awaitWriteFinish (stabilityThreshold:100) + our debounce means
10
11
  // each emission takes ~150ms to land; wait at least 300ms.
11
12
  const SETTLE_MS = 350;
@@ -24,26 +25,68 @@ function makeConfig() {
24
25
  mode: 'read-write',
25
26
  watch: 'always',
26
27
  watchDebounceMs: DEBOUNCE_MS,
28
+ watchRootPollMs: WATCH_ROOT_POLL_MS,
27
29
  };
28
30
  }
29
- function collect() {
31
+ function collect(lifecycle, config = makeConfig()) {
30
32
  const batches = [];
31
- const watcher = new MountWatcher(makeConfig(), (changes) => {
33
+ const watcher = new MountWatcher(config, (changes) => {
32
34
  batches.push(changes);
33
- });
35
+ }, lifecycle);
34
36
  watcher.start();
35
37
  return { watcher, batches };
36
38
  }
39
+ function withChokidarBackend(usePolling, start) {
40
+ const previousUsePolling = process.env.CHOKIDAR_USEPOLLING;
41
+ const previousInterval = process.env.CHOKIDAR_INTERVAL;
42
+ process.env.CHOKIDAR_USEPOLLING = String(usePolling);
43
+ if (usePolling)
44
+ process.env.CHOKIDAR_INTERVAL = '25';
45
+ try {
46
+ return start();
47
+ }
48
+ finally {
49
+ if (previousUsePolling === undefined)
50
+ delete process.env.CHOKIDAR_USEPOLLING;
51
+ else
52
+ process.env.CHOKIDAR_USEPOLLING = previousUsePolling;
53
+ if (previousInterval === undefined)
54
+ delete process.env.CHOKIDAR_INTERVAL;
55
+ else
56
+ process.env.CHOKIDAR_INTERVAL = previousInterval;
57
+ }
58
+ }
59
+ function withPollingBackend(start) {
60
+ return withChokidarBackend(true, start);
61
+ }
62
+ function withNativeBackend(start) {
63
+ return withChokidarBackend(false, start);
64
+ }
65
+ function collectWithPolling(lifecycle) {
66
+ return withPollingBackend(() => collect(lifecycle));
67
+ }
68
+ function collectWithNative(lifecycle, config) {
69
+ return withNativeBackend(() => collect(lifecycle, config));
70
+ }
37
71
  async function wait(ms) {
38
72
  await new Promise(r => setTimeout(r, ms));
39
73
  }
74
+ async function waitFor(predicate, message, timeoutMs = 1500) {
75
+ const start = Date.now();
76
+ while (Date.now() - start < timeoutMs) {
77
+ if (predicate())
78
+ return;
79
+ await wait(25);
80
+ }
81
+ assert.fail(message);
82
+ }
40
83
  describe('MountWatcher mergeOp', () => {
41
84
  it('unlink + add within debounce window → modified (atomic save)', async () => {
42
85
  // Seed a file before starting the watcher, so add+unlink+add reduces to
43
86
  // unlink+add (atomic save shape).
44
87
  const file = join(tmp, 'ticket.md');
45
88
  writeFileSync(file, 'v1');
46
- const { watcher, batches } = collect();
89
+ const { watcher, batches } = collectWithPolling();
47
90
  await wait(100); // let chokidar initialize
48
91
  // Atomic save: unlink then write
49
92
  unlinkSync(file);
@@ -57,7 +100,7 @@ describe('MountWatcher mergeOp', () => {
57
100
  assert.strictEqual(forFile[0].op, 'modified');
58
101
  });
59
102
  it('create + modify within window → created (net new)', async () => {
60
- const { watcher, batches } = collect();
103
+ const { watcher, batches } = collectWithPolling();
61
104
  await wait(100);
62
105
  const file = join(tmp, 'new.md');
63
106
  writeFileSync(file, 'hello');
@@ -75,7 +118,7 @@ describe('MountWatcher mergeOp', () => {
75
118
  // Seed so the watcher's first observation is the unlink of a real file.
76
119
  const file = join(tmp, 'a.md');
77
120
  writeFileSync(file, 'v1');
78
- const { watcher, batches } = collect();
121
+ const { watcher, batches } = collectWithPolling();
79
122
  await wait(100);
80
123
  // Double-flip: unlink + recreate + unlink + recreate inside one window.
81
124
  unlinkSync(file);
@@ -93,8 +136,11 @@ describe('MountWatcher lifecycle', () => {
93
136
  assert.ok(!existsSync(nested), 'precondition: nested path should not exist');
94
137
  const batches = [];
95
138
  let ready = false;
96
- const watcher = new MountWatcher({ name: 'tickets', path: nested, mode: 'read-write', watch: 'always', watchDebounceMs: DEBOUNCE_MS }, (changes) => { batches.push(changes); }, { onReady: () => { ready = true; } });
97
- watcher.start();
139
+ const watcher = withPollingBackend(() => {
140
+ const mounted = new MountWatcher({ name: 'tickets', path: nested, mode: 'read-write', watch: 'always', watchDebounceMs: DEBOUNCE_MS }, (changes) => { batches.push(changes); }, { onReady: () => { ready = true; } });
141
+ mounted.start();
142
+ return mounted;
143
+ });
98
144
  await wait(150);
99
145
  assert.ok(existsSync(nested), 'start() should have created the watched path');
100
146
  writeFileSync(join(nested, 'ticket.md'), 'hi');
@@ -113,5 +159,111 @@ describe('MountWatcher lifecycle', () => {
113
159
  assert.ok(!existsSync(roPath), 'read-only mount must not mkdir -p behind the user\'s back');
114
160
  await watcher.stop();
115
161
  });
162
+ it('read-write mount recreates a deleted root and re-attaches', async () => {
163
+ let readyCount = 0;
164
+ let reattachCount = 0;
165
+ const { watcher } = collectWithNative({
166
+ onReady: () => { readyCount++; },
167
+ onReattach: () => { reattachCount++; },
168
+ });
169
+ try {
170
+ await waitFor(() => readyCount > 0, 'expected initial watcher ready');
171
+ rmSync(tmp, { recursive: true, force: true });
172
+ await waitFor(() => reattachCount > 0, 'expected watcher to recreate and reattach');
173
+ await waitFor(() => readyCount > 1, 'expected recreated watcher ready');
174
+ assert.ok(existsSync(tmp), 'read-write mount should recreate its deleted root');
175
+ }
176
+ finally {
177
+ await watcher.stop();
178
+ }
179
+ });
180
+ // Sandboxed macOS rejects native fs.watch handles with EMFILE. Keep this
181
+ // production-backend integration assertion authoritative on Linux.
182
+ it('re-attaches after the root is removed and recreated', {
183
+ skip: process.platform !== 'linux',
184
+ }, async () => {
185
+ let readyCount = 0;
186
+ let reattachCount = 0;
187
+ const { watcher, batches } = collectWithNative({
188
+ onReady: () => { readyCount++; },
189
+ onReattach: () => { reattachCount++; },
190
+ }, { ...makeConfig(), watchRootPollMs: 5000 });
191
+ try {
192
+ await waitFor(() => readyCount > 0, 'expected initial watcher ready');
193
+ rmSync(tmp, { recursive: true, force: true });
194
+ mkdirSync(tmp, { recursive: true });
195
+ await waitFor(() => reattachCount > 0, 'expected watcher to reattach');
196
+ await waitFor(() => readyCount > 1, 'expected reattached watcher ready');
197
+ writeFileSync(join(tmp, 'after-recreate.md'), 'hello');
198
+ await wait(SETTLE_MS);
199
+ const created = batches.flat().find(c => c.path === 'after-recreate.md');
200
+ assert.ok(created, `expected created event after reattach, got ${JSON.stringify(batches.flat())}`);
201
+ assert.strictEqual(created.op, 'created');
202
+ }
203
+ finally {
204
+ await watcher.stop();
205
+ }
206
+ });
207
+ it('fires onReattach exactly once for one remove and recreate cycle', async () => {
208
+ let readyCount = 0;
209
+ let reattachCount = 0;
210
+ const { watcher } = collectWithNative({
211
+ onReady: () => { readyCount++; },
212
+ onReattach: () => { reattachCount++; },
213
+ });
214
+ try {
215
+ await waitFor(() => readyCount > 0, 'expected initial watcher ready');
216
+ rmSync(tmp, { recursive: true, force: true });
217
+ mkdirSync(tmp, { recursive: true });
218
+ await waitFor(() => reattachCount > 0, 'expected watcher to reattach');
219
+ await waitFor(() => readyCount > 1, 'expected reattached watcher ready');
220
+ await wait(WATCH_ROOT_POLL_MS * 4);
221
+ assert.strictEqual(reattachCount, 1);
222
+ }
223
+ finally {
224
+ await watcher.stop();
225
+ }
226
+ });
227
+ it('does not re-attach for normal create and modify traffic', async () => {
228
+ let ready = false;
229
+ let reattachCount = 0;
230
+ const { watcher, batches } = collectWithPolling({
231
+ onReady: () => { ready = true; },
232
+ onReattach: () => { reattachCount++; },
233
+ });
234
+ try {
235
+ await waitFor(() => ready, 'expected initial watcher ready');
236
+ const file = join(tmp, 'normal.md');
237
+ writeFileSync(file, 'v1');
238
+ await wait(SETTLE_MS);
239
+ writeFileSync(file, 'v2');
240
+ await wait(SETTLE_MS + WATCH_ROOT_POLL_MS * 4);
241
+ assert.strictEqual(reattachCount, 0);
242
+ const flat = batches.flat();
243
+ assert.ok(flat.some(c => c.path === 'normal.md'), `expected normal file event, got ${JSON.stringify(flat)}`);
244
+ }
245
+ finally {
246
+ await watcher.stop();
247
+ }
248
+ });
249
+ it('keeps a deleted read-only root detached and stops cleanly', async () => {
250
+ let ready = false;
251
+ let reattachCount = 0;
252
+ const watcher = new MountWatcher({ ...makeConfig(), mode: 'read-only' }, () => { }, {
253
+ onReady: () => { ready = true; },
254
+ onReattach: () => { reattachCount++; },
255
+ });
256
+ watcher.start();
257
+ try {
258
+ await waitFor(() => ready, 'expected initial watcher ready');
259
+ rmSync(tmp, { recursive: true, force: true });
260
+ await wait(WATCH_ROOT_POLL_MS * 2);
261
+ assert.ok(!existsSync(tmp), 'read-only mount must not recreate its deleted root');
262
+ assert.strictEqual(reattachCount, 0);
263
+ }
264
+ finally {
265
+ await watcher.stop();
266
+ }
267
+ });
116
268
  });
117
269
  //# sourceMappingURL=workspace-watcher.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"workspace-watcher.test.js","sourceRoot":"","sources":["../../test/workspace-watcher.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"workspace-watcher.test.js","sourceRoot":"","sources":["../../test/workspace-watcher.test.ts"],"names":[],"mappings":"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"}