@animalabs/agent-framework 0.8.0 → 0.9.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 (172) hide show
  1. package/dist/src/agent.d.ts +10 -0
  2. package/dist/src/agent.d.ts.map +1 -1
  3. package/dist/src/agent.js +33 -3
  4. package/dist/src/agent.js.map +1 -1
  5. package/dist/src/framework.d.ts +171 -15
  6. package/dist/src/framework.d.ts.map +1 -1
  7. package/dist/src/framework.js +1059 -224
  8. package/dist/src/framework.js.map +1 -1
  9. package/dist/src/gate/event-gate.d.ts +11 -0
  10. package/dist/src/gate/event-gate.d.ts.map +1 -1
  11. package/dist/src/gate/event-gate.js +66 -0
  12. package/dist/src/gate/event-gate.js.map +1 -1
  13. package/dist/src/index.d.ts +1 -0
  14. package/dist/src/index.d.ts.map +1 -1
  15. package/dist/src/index.js +1 -0
  16. package/dist/src/index.js.map +1 -1
  17. package/dist/src/mcpl/capability-grant.d.ts +115 -0
  18. package/dist/src/mcpl/capability-grant.d.ts.map +1 -0
  19. package/dist/src/mcpl/capability-grant.js +291 -0
  20. package/dist/src/mcpl/capability-grant.js.map +1 -0
  21. package/dist/src/mcpl/capability-mask.d.ts +51 -0
  22. package/dist/src/mcpl/capability-mask.d.ts.map +1 -0
  23. package/dist/src/mcpl/capability-mask.js +190 -0
  24. package/dist/src/mcpl/capability-mask.js.map +1 -0
  25. package/dist/src/mcpl/channel-registry.d.ts +3 -1
  26. package/dist/src/mcpl/channel-registry.d.ts.map +1 -1
  27. package/dist/src/mcpl/channel-registry.js +163 -36
  28. package/dist/src/mcpl/channel-registry.js.map +1 -1
  29. package/dist/src/mcpl/checkpoint-manager.d.ts +8 -3
  30. package/dist/src/mcpl/checkpoint-manager.d.ts.map +1 -1
  31. package/dist/src/mcpl/checkpoint-manager.js +28 -8
  32. package/dist/src/mcpl/checkpoint-manager.js.map +1 -1
  33. package/dist/src/mcpl/errors.d.ts +6 -0
  34. package/dist/src/mcpl/errors.d.ts.map +1 -1
  35. package/dist/src/mcpl/errors.js +6 -0
  36. package/dist/src/mcpl/errors.js.map +1 -1
  37. package/dist/src/mcpl/feature-set-manager.d.ts +10 -1
  38. package/dist/src/mcpl/feature-set-manager.d.ts.map +1 -1
  39. package/dist/src/mcpl/feature-set-manager.js +45 -4
  40. package/dist/src/mcpl/feature-set-manager.js.map +1 -1
  41. package/dist/src/mcpl/hook-orchestrator.d.ts +10 -14
  42. package/dist/src/mcpl/hook-orchestrator.d.ts.map +1 -1
  43. package/dist/src/mcpl/hook-orchestrator.js +58 -67
  44. package/dist/src/mcpl/hook-orchestrator.js.map +1 -1
  45. package/dist/src/mcpl/index.d.ts +1 -1
  46. package/dist/src/mcpl/index.d.ts.map +1 -1
  47. package/dist/src/mcpl/index.js.map +1 -1
  48. package/dist/src/mcpl/prose-stream-router.d.ts +9 -0
  49. package/dist/src/mcpl/prose-stream-router.d.ts.map +1 -1
  50. package/dist/src/mcpl/prose-stream-router.js +16 -0
  51. package/dist/src/mcpl/prose-stream-router.js.map +1 -1
  52. package/dist/src/mcpl/push-handler.d.ts.map +1 -1
  53. package/dist/src/mcpl/push-handler.js +20 -2
  54. package/dist/src/mcpl/push-handler.js.map +1 -1
  55. package/dist/src/mcpl/server-connection.d.ts +93 -9
  56. package/dist/src/mcpl/server-connection.d.ts.map +1 -1
  57. package/dist/src/mcpl/server-connection.js +231 -32
  58. package/dist/src/mcpl/server-connection.js.map +1 -1
  59. package/dist/src/mcpl/server-registry.d.ts.map +1 -1
  60. package/dist/src/mcpl/server-registry.js +4 -3
  61. package/dist/src/mcpl/server-registry.js.map +1 -1
  62. package/dist/src/mcpl/tags.d.ts +24 -0
  63. package/dist/src/mcpl/tags.d.ts.map +1 -0
  64. package/dist/src/mcpl/tags.js +52 -0
  65. package/dist/src/mcpl/tags.js.map +1 -0
  66. package/dist/src/mcpl/transport.d.ts.map +1 -1
  67. package/dist/src/mcpl/transport.js +10 -0
  68. package/dist/src/mcpl/transport.js.map +1 -1
  69. package/dist/src/mcpl/types.d.ts +159 -64
  70. package/dist/src/mcpl/types.d.ts.map +1 -1
  71. package/dist/src/mcpl/types.js +16 -2
  72. package/dist/src/mcpl/types.js.map +1 -1
  73. package/dist/src/refusal-reactions.d.ts +27 -0
  74. package/dist/src/refusal-reactions.d.ts.map +1 -0
  75. package/dist/src/refusal-reactions.js +35 -0
  76. package/dist/src/refusal-reactions.js.map +1 -0
  77. package/dist/src/tool-result-history.d.ts +10 -0
  78. package/dist/src/tool-result-history.d.ts.map +1 -1
  79. package/dist/src/tool-result-history.js +16 -5
  80. package/dist/src/tool-result-history.js.map +1 -1
  81. package/dist/src/types/agent.d.ts +35 -0
  82. package/dist/src/types/agent.d.ts.map +1 -1
  83. package/dist/src/types/framework.d.ts +16 -0
  84. package/dist/src/types/framework.d.ts.map +1 -1
  85. package/dist/src/types/trace.d.ts +24 -0
  86. package/dist/src/types/trace.d.ts.map +1 -1
  87. package/dist/test/channel-registry-routing.test.js +38 -10
  88. package/dist/test/channel-registry-routing.test.js.map +1 -1
  89. package/dist/test/channel-registry-typing.test.js +10 -1
  90. package/dist/test/channel-registry-typing.test.js.map +1 -1
  91. package/dist/test/checkpoint-attribution.test.js +168 -8
  92. package/dist/test/checkpoint-attribution.test.js.map +1 -1
  93. package/dist/test/conversation-fork-injection-scoping.test.js +8 -3
  94. package/dist/test/conversation-fork-injection-scoping.test.js.map +1 -1
  95. package/dist/test/event-gate-selfwake.test.d.ts +15 -0
  96. package/dist/test/event-gate-selfwake.test.d.ts.map +1 -0
  97. package/dist/test/event-gate-selfwake.test.js +125 -0
  98. package/dist/test/event-gate-selfwake.test.js.map +1 -0
  99. package/dist/test/machine-close-provenance.test.js +6 -0
  100. package/dist/test/machine-close-provenance.test.js.map +1 -1
  101. package/dist/test/mcpl-awareness-barrier.test.js +10 -0
  102. package/dist/test/mcpl-awareness-barrier.test.js.map +1 -1
  103. package/dist/test/mcpl-capability-grant.test.d.ts +10 -0
  104. package/dist/test/mcpl-capability-grant.test.d.ts.map +1 -0
  105. package/dist/test/mcpl-capability-grant.test.js +109 -0
  106. package/dist/test/mcpl-capability-grant.test.js.map +1 -0
  107. package/dist/test/mcpl-capability-scoping.test.d.ts +2 -0
  108. package/dist/test/mcpl-capability-scoping.test.d.ts.map +1 -0
  109. package/dist/test/mcpl-capability-scoping.test.js +266 -0
  110. package/dist/test/mcpl-capability-scoping.test.js.map +1 -0
  111. package/dist/test/mcpl-gate-roundtrip.test.js +13 -0
  112. package/dist/test/mcpl-gate-roundtrip.test.js.map +1 -1
  113. package/dist/test/mcpl-list-status.test.d.ts +2 -0
  114. package/dist/test/mcpl-list-status.test.d.ts.map +1 -0
  115. package/dist/test/mcpl-list-status.test.js +78 -0
  116. package/dist/test/mcpl-list-status.test.js.map +1 -0
  117. package/dist/test/mcpl-manifest-changed.test.d.ts +2 -0
  118. package/dist/test/mcpl-manifest-changed.test.d.ts.map +1 -0
  119. package/dist/test/mcpl-manifest-changed.test.js +177 -0
  120. package/dist/test/mcpl-manifest-changed.test.js.map +1 -0
  121. package/dist/test/mcpl-reconnect-events.test.js +27 -2
  122. package/dist/test/mcpl-reconnect-events.test.js.map +1 -1
  123. package/dist/test/mcpl-reconnect-reregistration.test.js +53 -17
  124. package/dist/test/mcpl-reconnect-reregistration.test.js.map +1 -1
  125. package/dist/test/mcpl-request-timeout.test.js +1 -1
  126. package/dist/test/mcpl-request-timeout.test.js.map +1 -1
  127. package/dist/test/physical-window-restart.test.d.ts +14 -0
  128. package/dist/test/physical-window-restart.test.d.ts.map +1 -0
  129. package/dist/test/physical-window-restart.test.js +222 -0
  130. package/dist/test/physical-window-restart.test.js.map +1 -0
  131. package/dist/test/present-while-acting.test.js +199 -1
  132. package/dist/test/present-while-acting.test.js.map +1 -1
  133. package/dist/test/refusal-reaction-baseline.test.d.ts +2 -0
  134. package/dist/test/refusal-reaction-baseline.test.d.ts.map +1 -0
  135. package/dist/test/refusal-reaction-baseline.test.js +74 -0
  136. package/dist/test/refusal-reaction-baseline.test.js.map +1 -0
  137. package/dist/test/state-scaling-e2e.test.js +7 -1
  138. package/dist/test/state-scaling-e2e.test.js.map +1 -1
  139. package/dist/test/state-scaling.test.js +9 -1
  140. package/dist/test/state-scaling.test.js.map +1 -1
  141. package/dist/test/tool-result-spill.test.d.ts +13 -0
  142. package/dist/test/tool-result-spill.test.d.ts.map +1 -0
  143. package/dist/test/tool-result-spill.test.js +463 -0
  144. package/dist/test/tool-result-spill.test.js.map +1 -0
  145. package/dist/test/trunk-channel-routing.test.js +45 -0
  146. package/dist/test/trunk-channel-routing.test.js.map +1 -1
  147. package/dist/tsconfig.tsbuildinfo +1 -1
  148. package/package.json +4 -4
  149. package/src/agent.ts +37 -3
  150. package/src/framework.ts +1219 -248
  151. package/src/gate/event-gate.ts +72 -0
  152. package/src/index.ts +1 -0
  153. package/src/mcpl/capability-grant.ts +319 -0
  154. package/src/mcpl/capability-mask.ts +228 -0
  155. package/src/mcpl/channel-registry.ts +167 -39
  156. package/src/mcpl/checkpoint-manager.ts +28 -8
  157. package/src/mcpl/errors.ts +7 -0
  158. package/src/mcpl/feature-set-manager.ts +50 -5
  159. package/src/mcpl/hook-orchestrator.ts +64 -86
  160. package/src/mcpl/index.ts +0 -2
  161. package/src/mcpl/prose-stream-router.ts +17 -0
  162. package/src/mcpl/push-handler.ts +18 -2
  163. package/src/mcpl/server-connection.ts +262 -34
  164. package/src/mcpl/server-registry.ts +4 -3
  165. package/src/mcpl/tags.ts +50 -0
  166. package/src/mcpl/transport.ts +11 -0
  167. package/src/mcpl/types.ts +176 -78
  168. package/src/refusal-reactions.ts +37 -0
  169. package/src/tool-result-history.ts +17 -5
  170. package/src/types/agent.ts +36 -0
  171. package/src/types/framework.ts +17 -0
  172. package/src/types/trace.ts +22 -0
@@ -1 +1 @@
1
- {"version":3,"file":"mcpl-gate-roundtrip.test.js","sourceRoot":"","sources":["../../test/mcpl-gate-roundtrip.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mcpl-gate-roundtrip.test.js","sourceRoot":"","sources":["../../test/mcpl-gate-roundtrip.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=mcpl-list-status.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcpl-list-status.test.d.ts","sourceRoot":"","sources":["../../test/mcpl-list-status.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,78 @@
1
+ import { test } from 'node:test';
2
+ import assert from 'node:assert/strict';
3
+ import { AgentFramework } from '../src/framework.js';
4
+ import { CapabilityGrant } from '../src/mcpl/capability-grant.js';
5
+ function frameworkWithConnection(connection) {
6
+ const framework = Object.create(AgentFramework.prototype);
7
+ framework.mcplServerConfigs = new Map([[
8
+ 'discord',
9
+ { id: 'discord', command: 'node', allowHostCommands: true },
10
+ ]]);
11
+ framework.mcplServerRegistry = {
12
+ getServer: (id) => id === 'discord' ? connection : null,
13
+ };
14
+ framework.mcplTools = [{ name: 'mcpl--discord--send_message' }];
15
+ return framework;
16
+ }
17
+ test('listMcplServers exposes the live grant layers and host-owned authority', () => {
18
+ const grant = new CapabilityGrant(new Set(['channels.incoming', 'channels.publish']), ['contextHooks.beforeInference.inject.system']);
19
+ const connection = {
20
+ isConnected: true,
21
+ willReconnect: true,
22
+ policyEstablished: true,
23
+ grant,
24
+ droppedCapabilities: new Set(['channels.streaming']),
25
+ manifestState: {
26
+ lastValidatedRevision: 'sha256:validated',
27
+ lastFetchedAt: 1_786_000_000_000,
28
+ lastNegotiatedAt: 1_786_000_000_100,
29
+ },
30
+ };
31
+ const framework = frameworkWithConnection(connection);
32
+ const listed = framework.listMcplServers();
33
+ assert.deepEqual(listed, [{
34
+ id: 'discord',
35
+ connected: true,
36
+ retrying: false,
37
+ toolPrefix: 'mcpl--discord',
38
+ toolCount: 1,
39
+ policyEstablished: true,
40
+ effectiveGrant: ['channels.incoming', 'channels.publish'],
41
+ maskedCapabilities: ['channels.streaming'],
42
+ deniedCapabilities: ['contextHooks.beforeInference.inject.system'],
43
+ allowHostCommands: true,
44
+ manifestState: {
45
+ lastValidatedRevision: 'sha256:validated',
46
+ lastFetchedAt: 1_786_000_000_000,
47
+ lastNegotiatedAt: 1_786_000_000_100,
48
+ },
49
+ command: 'node',
50
+ url: undefined,
51
+ }]);
52
+ assert.notStrictEqual(listed[0].manifestState, connection.manifestState);
53
+ });
54
+ test('listMcplServers distinguishes a disconnected retrying stub from connected', () => {
55
+ const framework = frameworkWithConnection({
56
+ isConnected: false,
57
+ willReconnect: true,
58
+ policyEstablished: false,
59
+ grant: CapabilityGrant.empty(),
60
+ droppedCapabilities: new Set(),
61
+ manifestState: {
62
+ lastValidatedRevision: null,
63
+ lastFetchedAt: null,
64
+ lastNegotiatedAt: null,
65
+ },
66
+ });
67
+ const [status] = framework.listMcplServers();
68
+ assert.equal(status.connected, false);
69
+ assert.equal(status.retrying, true);
70
+ assert.equal(status.policyEstablished, false);
71
+ assert.deepEqual(status.effectiveGrant, []);
72
+ assert.deepEqual(status.manifestState, {
73
+ lastValidatedRevision: null,
74
+ lastFetchedAt: null,
75
+ lastNegotiatedAt: null,
76
+ });
77
+ });
78
+ //# sourceMappingURL=mcpl-list-status.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcpl-list-status.test.js","sourceRoot":"","sources":["../../test/mcpl-list-status.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=mcpl-manifest-changed.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcpl-manifest-changed.test.d.ts","sourceRoot":"","sources":["../../test/mcpl-manifest-changed.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,177 @@
1
+ /**
2
+ * §17 host-side manifest tracking (RFC-003, af#78).
3
+ *
4
+ * The load-bearing orderings, each pinned:
5
+ * - reduction applies BEFORE the post-manifest policy Request is sent
6
+ * (§6.7: security cannot wait on consent);
7
+ * - expansion activates only AFTER the receipt (an unanswered Request
8
+ * leaves the interim reduced grant standing);
9
+ * - a failed fetch teaches nothing — the previous manifest stands;
10
+ * - exactly ONE receipt trace per change, host-derived vocabulary;
11
+ * - announcements coalesce under the §17.8 fetch floor.
12
+ */
13
+ import { test } from 'node:test';
14
+ import assert from 'node:assert/strict';
15
+ import { EventEmitter } from 'node:events';
16
+ import { AgentFramework } from '../src/framework.js';
17
+ import { FeatureSetManager } from '../src/mcpl/feature-set-manager.js';
18
+ import { CapabilityGrant, computeGrant, expandAdvertisementShorthand } from '../src/mcpl/capability-grant.js';
19
+ const INITIAL = {
20
+ version: '0.5',
21
+ pushEvents: true,
22
+ channels: { incoming: true, publish: true },
23
+ featureSets: {
24
+ chat: { description: 'chat', uses: ['pushEvents', 'channels.incoming', 'channels.publish'] },
25
+ },
26
+ };
27
+ class ManifestFake extends EventEmitter {
28
+ id = 'srv';
29
+ capabilities = null;
30
+ willReconnect = false;
31
+ mcpToolsAdvertised = false;
32
+ allowHostCommands = false;
33
+ grant = CapabilityGrant.empty();
34
+ policyEstablished = false;
35
+ manifestState = { lastValidatedRevision: null, lastFetchedAt: null, lastNegotiatedAt: null };
36
+ droppedCapabilities = new Set();
37
+ /** Ordered record of what the host did to us, for ordering assertions. */
38
+ events = [];
39
+ /** Next mcpl/manifest answer; a function may throw to model fetch failure. */
40
+ nextManifest = () => INITIAL;
41
+ /** How featureSets/update Requests are answered. */
42
+ answerPolicy = 'accept';
43
+ closed = false;
44
+ close() { this.closed = true; return Promise.resolve(); }
45
+ establishGrant(grant) {
46
+ this.grant = grant;
47
+ this.policyEstablished = true;
48
+ this.events.push({ kind: 'grant', detail: grant.effectiveList() });
49
+ }
50
+ sendManifestRequest() {
51
+ this.events.push({ kind: 'fetch' });
52
+ return Promise.resolve(this.nextManifest());
53
+ }
54
+ sendFeatureSetsUpdateRequest(params) {
55
+ this.events.push({ kind: 'policy-request', detail: params });
56
+ switch (this.answerPolicy) {
57
+ case 'never': return new Promise(() => { });
58
+ case 'refuse-mcp-only': return Promise.resolve({ accepted: false, fallback: 'mcp-only' });
59
+ case 'refuse-close': return Promise.resolve({ accepted: false, fallback: 'close' });
60
+ default: return Promise.resolve({ accepted: true });
61
+ }
62
+ }
63
+ sendFeatureSetsUpdate() { }
64
+ }
65
+ function makeHarness() {
66
+ const traces = [];
67
+ const fw = Object.create(AgentFramework.prototype);
68
+ fw.traceListeners = [(e) => traces.push(e)];
69
+ fw.featureSetManager = new FeatureSetManager();
70
+ fw.mcplTools = [];
71
+ fw.mcplToolRefreshInFlight = false;
72
+ fw.mcplToolRefreshPending = false;
73
+ fw.agents = new Map();
74
+ fw.manifestRefreshState = new Map();
75
+ fw.handleToolsListChanged = () => { };
76
+ const config = { id: 'srv', command: 'unused' };
77
+ fw.mcplServerConfigs = new Map([[config.id, config]]);
78
+ const connection = new ManifestFake();
79
+ connection.capabilities = expandAdvertisementShorthand(INITIAL);
80
+ fw.mcplServerRegistry = { getAllServers: () => [connection], getServer: (id) => (id === 'srv' ? connection : null) };
81
+ // Model post-§5.3 state: initial policy done, full grant active.
82
+ const grant = computeGrant(connection.capabilities, config, { mcpToolsAdvertised: false });
83
+ fw.featureSetManager.initializeServer('srv', connection.capabilities, {}, grant);
84
+ connection.establishGrant(grant);
85
+ connection.events = []; // discard setup noise
86
+ return { fw, connection, traces };
87
+ }
88
+ const settle = () => new Promise((r) => setImmediate(r));
89
+ test('reduction applies BEFORE the policy Request; receipt names it applied', async () => {
90
+ const { fw, connection, traces } = makeHarness();
91
+ // New manifest drops channels.publish (and the chat set with it, since
92
+ // uses requires it).
93
+ connection.nextManifest = () => ({
94
+ version: '0.5',
95
+ pushEvents: true,
96
+ channels: { incoming: true },
97
+ featureSets: { chat: { description: 'chat', uses: ['pushEvents', 'channels.incoming', 'channels.publish'] } },
98
+ });
99
+ await fw.handleManifestChanged(connection, { revision: 'sha256:x', domains: ['capabilities'] });
100
+ const kinds = connection.events.map((e) => e.kind);
101
+ const firstGrant = kinds.indexOf('grant');
102
+ const policyIdx = kinds.indexOf('policy-request');
103
+ assert.ok(firstGrant >= 0 && policyIdx >= 0 && firstGrant < policyIdx, `reduction must land before the Request (got order: ${kinds.join(',')})`);
104
+ const interim = connection.events[firstGrant].detail;
105
+ assert.ok(!interim.includes('channels.publish'), 'interim grant must not carry the revoked path');
106
+ // After the receipt: final grant matches the new manifest; chat degraded
107
+ // by §6.4 (its uses still names the revoked path).
108
+ assert.ok(!connection.grant.has('channels.publish'));
109
+ assert.equal(fw.featureSetManager.isEnabled('srv', 'chat'), false);
110
+ const receipts = traces.filter((t) => t.type === 'mcpl:manifest-change-receipt');
111
+ assert.equal(receipts.length, 1, 'exactly ONE receipt per change');
112
+ const impacts = receipts[0].impacts;
113
+ assert.ok(impacts.some((i) => i.impact === 'capability-revoked' && i.subject === 'channels.publish' && i.disposition === 'applied'));
114
+ assert.ok(impacts.some((i) => i.impact === 'feature-degraded' && i.subject === 'chat'));
115
+ });
116
+ test('expansion activates only after the receipt; unanswered Request leaves it inactive', async () => {
117
+ const { fw, connection } = makeHarness();
118
+ connection.answerPolicy = 'never'; // server never answers the new policy
119
+ connection.nextManifest = () => ({
120
+ version: '0.5',
121
+ pushEvents: true,
122
+ channels: { incoming: true, publish: true, streaming: true }, // + streaming
123
+ featureSets: {
124
+ chat: { description: 'chat', uses: ['pushEvents', 'channels.incoming', 'channels.publish'] },
125
+ // NEW set backed by the NEW capability — the §84-review probe.
126
+ streamy: { description: 's', uses: ['channels.streaming'] },
127
+ },
128
+ });
129
+ // Fire and give the pipeline a beat; the policy Request hangs forever.
130
+ const p = fw.handleManifestChanged(connection, { revision: 'sha256:y', domains: ['capabilities'] });
131
+ await settle();
132
+ await settle();
133
+ assert.ok(!connection.grant.has('channels.streaming'), 'unanswered expansion must not activate (§6.7)');
134
+ assert.ok(connection.grant.has('channels.publish'), 'no reduction occurred, so the standing grant survives');
135
+ // Sol's #84 blocker: a NEW capability-backed feature set must not be
136
+ // host-enabled while its capability is absent from the ACTIVE grant.
137
+ assert.equal(fw.featureSetManager.isEnabled('srv', 'streamy'), false, 'feature state must not run ahead of active authority');
138
+ assert.equal(fw.featureSetManager.isEnabled('srv', 'chat'), true, 'interim-derived state keeps what active authority supports');
139
+ void p; // intentionally left pending — models the wedged server
140
+ });
141
+ test('refusal with fallback mcp-only: empty grant, empty-derived feature state', async () => {
142
+ const { fw, connection } = makeHarness();
143
+ connection.answerPolicy = 'refuse-mcp-only';
144
+ connection.nextManifest = () => INITIAL;
145
+ await fw.handleManifestChanged(connection, { revision: 'sha256:r1', domains: ['capabilities'] });
146
+ assert.deepEqual(connection.grant.effectiveList(), [], 'mcp-only = empty grant, like the §5.3 path');
147
+ assert.equal(fw.featureSetManager.isEnabled('srv', 'chat'), false, 'feature state derives from the (empty) active grant');
148
+ assert.equal(connection.closed, false);
149
+ });
150
+ test('refusal with fallback close: the transport is closed', async () => {
151
+ const { fw, connection } = makeHarness();
152
+ connection.answerPolicy = 'refuse-close';
153
+ connection.nextManifest = () => INITIAL;
154
+ await fw.handleManifestChanged(connection, { revision: 'sha256:r2', domains: ['capabilities'] });
155
+ assert.equal(connection.closed, true, 'fallback close must be honored (§6.7)');
156
+ });
157
+ test('failed fetch: previous manifest and grant stand untouched', async () => {
158
+ const { fw, connection, traces } = makeHarness();
159
+ const before = connection.grant.effectiveList();
160
+ connection.nextManifest = () => { throw new Error('boom'); };
161
+ await fw.handleManifestChanged(connection, { revision: 'sha256:z', domains: ['featureSets'] });
162
+ assert.deepEqual(connection.grant.effectiveList(), before);
163
+ assert.equal(traces.filter((t) => t.type === 'mcpl:manifest-change-receipt').length, 0, 'no receipt for a change the host could not observe');
164
+ });
165
+ test('announcements coalesce: rapid-fire N announces cause one immediate fetch', async () => {
166
+ const { fw, connection } = makeHarness();
167
+ connection.nextManifest = () => INITIAL;
168
+ const first = fw.handleManifestChanged(connection, { revision: 'sha256:a', domains: [] });
169
+ // While the first is in flight (or inside the floor window) these coalesce.
170
+ void fw.handleManifestChanged(connection, { revision: 'sha256:b', domains: [] });
171
+ void fw.handleManifestChanged(connection, { revision: 'sha256:c', domains: [] });
172
+ await first;
173
+ await settle();
174
+ const fetches = connection.events.filter((e) => e.kind === 'fetch').length;
175
+ assert.equal(fetches, 1, `rapid announcements must coalesce (§17.8), got ${fetches} fetches`);
176
+ });
177
+ //# sourceMappingURL=mcpl-manifest-changed.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcpl-manifest-changed.test.js","sourceRoot":"","sources":["../../test/mcpl-manifest-changed.test.ts"],"names":[],"mappings":"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"}
@@ -13,6 +13,7 @@ import assert from 'node:assert';
13
13
  import { existsSync, mkdirSync, rmSync, writeFileSync } from 'node:fs';
14
14
  import { join } from 'node:path';
15
15
  import { McplServerConnection } from '../src/mcpl/server-connection.js';
16
+ import { CapabilityGrant } from '../src/mcpl/capability-grant.js';
16
17
  // The .mjs fixture is not compiled/copied by tsc, so when this test runs from
17
18
  // dist/test it must reach back into the source tree for it.
18
19
  const FIXTURE = [
@@ -22,9 +23,9 @@ const FIXTURE = [
22
23
  const TMP_DIR = join(import.meta.dirname, '../.test-tmp-reconnect');
23
24
  const FLAG_FILE = join(TMP_DIR, 'server-healthy');
24
25
  const HOST_CAPS = {
25
- version: '0.4',
26
+ version: '0.5',
26
27
  pushEvents: true,
27
- contextHooks: { beforeInference: true, afterInference: { blocking: true } },
28
+ contextHooks: { beforeInference: true },
28
29
  featureSets: true,
29
30
  };
30
31
  function makeConfig(overrides) {
@@ -115,5 +116,29 @@ describe('McplServerConnection — reconnect lifecycle events', () => {
115
116
  assert.strictEqual(reconnected.length, 0);
116
117
  connection = null;
117
118
  });
119
+ it('clears the previous transport grant before publishing a reconnected handshake', async () => {
120
+ writeFileSync(FLAG_FILE, '');
121
+ connection = await McplServerConnection.connect(makeConfig(), HOST_CAPS);
122
+ connection.establishGrant(new CapabilityGrant(new Set(['pushEvents']), []));
123
+ assert.strictEqual(connection.policyEstablished, true);
124
+ assert.deepStrictEqual(connection.grant.effectiveList(), ['pushEvents']);
125
+ let stateAtReconnect = null;
126
+ connection.on('reconnect', () => {
127
+ stateAtReconnect = {
128
+ policyEstablished: connection.policyEstablished,
129
+ grant: connection.grant.effectiveList(),
130
+ };
131
+ });
132
+ connection.ready();
133
+ // Crash the old transport. The replacement handshake is a fresh policy
134
+ // epoch: no authority from the prior process may survive until the host's
135
+ // new §5.3 Request receives its degradation receipt.
136
+ connection.sendToolsList().catch(() => { });
137
+ await waitFor(() => stateAtReconnect !== null, 5000, 'reconnect after granted transport');
138
+ assert.deepStrictEqual(stateAtReconnect, {
139
+ policyEstablished: false,
140
+ grant: [],
141
+ });
142
+ });
118
143
  });
119
144
  //# sourceMappingURL=mcpl-reconnect-events.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"mcpl-reconnect-events.test.js","sourceRoot":"","sources":["../../test/mcpl-reconnect-events.test.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAChE,OAAO,MAAM,MAAM,aAAa,CAAC;AACjC,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACvE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,OAAO,EAAE,oBAAoB,EAAE,MAAM,kCAAkC,CAAC;AAGxE,8EAA8E;AAC9E,4DAA4D;AAC5D,MAAM,OAAO,GAAG;IACd,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,gCAAgC,CAAC;IAC3D,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,2CAA2C,CAAC;CACvE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,CAAE,CAAC;AAC9B,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,wBAAwB,CAAC,CAAC;AACpE,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,EAAE,gBAAgB,CAAC,CAAC;AAElD,MAAM,SAAS,GAAyB;IACtC,OAAO,EAAE,KAAK;IACd,UAAU,EAAE,IAAI;IAChB,YAAY,EAAE,EAAE,eAAe,EAAE,IAAI,EAAE,cAAc,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE;IAC3E,WAAW,EAAE,IAAI;CAClB,CAAC;AAEF,SAAS,UAAU,CAAC,SAAqC;IACvD,OAAO;QACL,EAAE,EAAE,OAAO;QACX,OAAO,EAAE,OAAO,CAAC,QAAQ;QACzB,IAAI,EAAE,CAAC,OAAO,EAAE,SAAS,CAAC;QAC1B,SAAS,EAAE,IAAI;QACf,mBAAmB,EAAE,EAAE;QACvB,GAAG,SAAS;KACb,CAAC;AACJ,CAAC;AAED,kEAAkE;AAClE,KAAK,UAAU,OAAO,CAAC,SAAwB,EAAE,SAAS,GAAG,IAAI,EAAE,KAAK,GAAG,WAAW;IACpF,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;IACxC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC;QACpB,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,QAAQ,EAAE,CAAC;YAC1B,MAAM,IAAI,KAAK,CAAC,yBAAyB,KAAK,EAAE,CAAC,CAAC;QACpD,CAAC;QACD,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;IAC9C,CAAC;AACH,CAAC;AAED,IAAI,UAAU,GAAgC,IAAI,CAAC;AAEnD,UAAU,CAAC,GAAG,EAAE;IACd,SAAS,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;AAC1C,CAAC,CAAC,CAAC;AAEH,SAAS,CAAC,KAAK,IAAI,EAAE;IACnB,MAAM,UAAU,EAAE,KAAK,EAAE,CAAC;IAC1B,UAAU,GAAG,IAAI,CAAC;IAClB,IAAI,UAAU,CAAC,OAAO,CAAC;QAAE,MAAM,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;AAC7E,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,mDAAmD,EAAE,GAAG,EAAE;IACjE,EAAE,CAAC,kGAAkG,EAAE,KAAK,IAAI,EAAE;QAChH,iEAAiE;QACjE,UAAU,GAAG,MAAM,oBAAoB,CAAC,oBAAoB,CAAC,UAAU,EAAE,EAAE,SAAS,CAAC,CAAC;QACtF,MAAM,CAAC,WAAW,CAAC,UAAU,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;QAElD,MAAM,aAAa,GAA8C,EAAE,CAAC;QACpE,MAAM,eAAe,GAA8C,EAAE,CAAC;QACtE,MAAM,WAAW,GAAgC,EAAE,CAAC;QACpD,UAAU,CAAC,EAAE,CAAC,gBAAgB,EAAE,CAAC,CAAqC,EAAE,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QAClG,UAAU,CAAC,EAAE,CAAC,kBAAkB,EAAE,CAAC,CAAqC,EAAE,EAAE,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QACtG,UAAU,CAAC,EAAE,CAAC,WAAW,EAAE,CAAC,CAAuB,EAAE,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QAE7E,2EAA2E;QAC3E,UAAU,CAAC,KAAK,EAAE,CAAC;QACnB,MAAM,CAAC,WAAW,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;QAC5C,MAAM,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC,CAAE,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;QACjD,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAAE,CAAC,KAAK,EAAE,kBAAkB,CAAC,CAAC;QAE1D,mEAAmE;QACnE,MAAM,OAAO,CAAC,GAAG,EAAE,CAAC,eAAe,CAAC,MAAM,IAAI,CAAC,EAAE,IAAI,EAAE,wBAAwB,CAAC,CAAC;QACjF,MAAM,CAAC,WAAW,CAAC,eAAe,CAAC,CAAC,CAAE,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;QAEnD,kDAAkD;QAClD,aAAa,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;QAC7B,MAAM,OAAO,CAAC,GAAG,EAAE,CAAC,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC;QACnE,MAAM,CAAC,EAAE,CACP,WAAW,CAAC,CAAC,CAAE,CAAC,QAAQ,IAAI,CAAC,EAC7B,mEAAmE,WAAW,CAAC,CAAC,CAAE,CAAC,QAAQ,EAAE,CAC9F,CAAC;QACF,MAAM,CAAC,WAAW,CAAC,UAAU,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC;IACrD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kFAAkF,EAAE,KAAK,IAAI,EAAE;QAChG,aAAa,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;QAC7B,UAAU,GAAG,MAAM,oBAAoB,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,SAAS,CAAC,CAAC;QAEzE,MAAM,MAAM,GAA0D,EAAE,CAAC;QACzE,MAAM,WAAW,GAAgC,EAAE,CAAC;QACpD,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,IAAoB,EAAE,MAAsB,EAAE,EAAE,CACtE,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,IAAI,IAAI,EAAE,MAAM,EAAE,MAAM,IAAI,IAAI,EAAE,CAAC,CAAC,CAAC;QAC/D,UAAU,CAAC,EAAE,CAAC,WAAW,EAAE,CAAC,CAAuB,EAAE,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QAC7E,UAAU,CAAC,KAAK,EAAE,CAAC;QAEnB,yEAAyE;QACzE,4DAA4D;QAC5D,UAAU,CAAC,aAAa,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;QAE3C,MAAM,OAAO,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,IAAI,EAAE,aAAa,CAAC,CAAC;QAC9D,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAE,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;QACvC,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAE,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QAC5C,MAAM,CAAC,WAAW,CAAC,UAAU,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC;QAEnD,4EAA4E;QAC5E,MAAM,OAAO,CAAC,GAAG,EAAE,CAAC,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,IAAI,EAAE,uBAAuB,CAAC,CAAC;QAC7E,MAAM,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,CAAE,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;IAClD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,qEAAqE,EAAE,KAAK,IAAI,EAAE;QACnF,aAAa,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;QAC7B,UAAU,GAAG,MAAM,oBAAoB,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,SAAS,CAAC,CAAC;QACzE,UAAU,CAAC,KAAK,EAAE,CAAC;QAEnB,MAAM,WAAW,GAAc,EAAE,CAAC;QAClC,UAAU,CAAC,EAAE,CAAC,WAAW,EAAE,CAAC,CAAU,EAAE,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QAEhE,MAAM,CAAC,WAAW,CAAC,UAAU,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC;QACnD,MAAM,UAAU,CAAC,KAAK,EAAE,CAAC;QACzB,MAAM,CAAC,WAAW,CAAC,UAAU,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC;QAEpD,sCAAsC;QACtC,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;QAC7C,MAAM,CAAC,WAAW,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;QAC1C,UAAU,GAAG,IAAI,CAAC;IACpB,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"mcpl-reconnect-events.test.js","sourceRoot":"","sources":["../../test/mcpl-reconnect-events.test.ts"],"names":[],"mappings":"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"}
@@ -23,6 +23,7 @@ import { AgentFramework } from '../src/framework.js';
23
23
  import { FeatureSetManager } from '../src/mcpl/feature-set-manager.js';
24
24
  import { ScopeManager } from '../src/mcpl/scope-manager.js';
25
25
  import { CheckpointManager } from '../src/mcpl/checkpoint-manager.js';
26
+ import { CapabilityGrant } from '../src/mcpl/capability-grant.js';
26
27
  import { PushHandler } from '../src/mcpl/push-handler.js';
27
28
  /** In-memory JsStore stub — CheckpointManager only needs the state-slot API. */
28
29
  function makeStoreStub() {
@@ -35,7 +36,12 @@ function makeStoreStub() {
35
36
  };
36
37
  }
37
38
  const CAPABILITIES = {
38
- version: '0.4',
39
+ version: '0.5',
40
+ // §6.4 derivation runs against the computed grant now: the advertisement
41
+ // must cover each feature set's `uses` or derivation disables it before
42
+ // any push is attempted.
43
+ pushEvents: true,
44
+ tools: true,
39
45
  featureSets: {
40
46
  chat: { description: 'chat events', uses: ['pushEvents'] },
41
47
  mem: { description: 'stateful memory', uses: ['tools'], hostState: true, rollback: true },
@@ -47,6 +53,24 @@ class FakeConnection extends EventEmitter {
47
53
  willReconnect = true;
48
54
  featureSetUpdates = [];
49
55
  onReady;
56
+ // 0.5 surface (§5.3/§6.7): the framework now sends the initial policy as a
57
+ // Request and activates the grant on the receipt. The fake answers
58
+ // accepted — modeling a conforming 0.5 server — so registration reaches
59
+ // establishGrant and post-policy tests exercise delivery, not denial.
60
+ grant = CapabilityGrant.empty();
61
+ // §5.1: `tools` comes from the OUTER standard MCP capabilities — the
62
+ // experimental advert can't mint it. mem uses ['tools'], so the fake
63
+ // models a server whose initialize carried capabilities.tools.
64
+ mcpToolsAdvertised = true;
65
+ policyEstablished = false;
66
+ establishGrant(grant) {
67
+ this.grant = grant;
68
+ this.policyEstablished = true;
69
+ }
70
+ sendFeatureSetsUpdateRequest(params) {
71
+ this.featureSetUpdates.push(params);
72
+ return Promise.resolve({ accepted: true });
73
+ }
50
74
  constructor(id) {
51
75
  super();
52
76
  this.id = id;
@@ -62,7 +86,7 @@ class FakeConnection extends EventEmitter {
62
86
  callback?.();
63
87
  }
64
88
  }
65
- function makeHarness() {
89
+ async function makeHarness() {
66
90
  const store = makeStoreStub();
67
91
  const traces = [];
68
92
  const pushed = [];
@@ -96,8 +120,12 @@ function makeHarness() {
96
120
  fw.discordAwarenessBarrier = null;
97
121
  fw.discordAwarenessBarrierGeneration = 0;
98
122
  fw.wireMcplEvents(connection);
99
- fw.registerMcplServerFeatures(config, connection);
100
- const sendPush = (eventId) => {
123
+ await fw.registerMcplServerFeatures(config, connection);
124
+ // The push handler responds synchronously when no awareness barrier is
125
+ // up, but during reconnect the §5.3 policy round-trip holds the barrier
126
+ // across a microtask — so the harness settles the loop once before
127
+ // asserting. (Was 'must respond synchronously' pre-0.5.)
128
+ const sendPush = async (eventId) => {
101
129
  let result;
102
130
  connection.emit('push-event', {
103
131
  featureSet: 'chat',
@@ -106,23 +134,25 @@ function makeHarness() {
106
134
  payload: { content: [{ type: 'text', text: 'hello' }] },
107
135
  }, {
108
136
  respond: (r) => { result = r; },
109
- respondError: () => { assert.fail('push responded with a JSON-RPC error'); },
137
+ respondError: (_c, m) => { result = { accepted: false, reason: m }; },
110
138
  });
111
- assert.ok(result, 'push handler must respond synchronously');
139
+ if (!result)
140
+ await new Promise((r) => setImmediate(r));
141
+ assert.ok(result, 'push handler must respond within one settle');
112
142
  return result;
113
143
  };
114
144
  return { fw, store, connection, config, sendPush, pushed, traces };
115
145
  }
116
- test('reconnect re-registers the server: pushes are accepted again after close→reconnect', () => {
117
- const { fw, connection, sendPush, pushed } = makeHarness();
146
+ test('reconnect re-registers the server: pushes are accepted again after close→reconnect', async () => {
147
+ const { fw, connection, sendPush, pushed } = await makeHarness();
118
148
  // Sanity: initial registration accepts pushes.
119
- assert.equal(sendPush('e1').accepted, true);
149
+ assert.equal((await sendPush('e1')).accepted, true);
120
150
  assert.equal(pushed.length, 1);
121
151
  // Transient crash: transport closed, background reconnect pending.
122
152
  connection.willReconnect = true;
123
153
  connection.emit('close', null, 'SIGKILL');
124
154
  // While down, the server is deregistered — pushes are rejected.
125
- const down = sendPush('e2');
155
+ const down = await sendPush('e2');
126
156
  assert.equal(down.accepted, false);
127
157
  assert.match(down.reason ?? '', /Unknown server/);
128
158
  // Reconnect succeeded (fresh handshake refreshed capabilities).
@@ -130,19 +160,25 @@ test('reconnect re-registers the server: pushes are accepted again after close
130
160
  // push already buffered on the fresh transport: ready() flushes it in the
131
161
  // reconnect listener's stack, after host-side feature re-registration.
132
162
  let duringReconnect;
133
- connection.onReady = () => { duringReconnect = sendPush('e3'); };
163
+ let e3;
164
+ connection.onReady = () => { e3 = sendPush('e3'); };
134
165
  connection.emit('reconnect', { attempts: 1 });
166
+ // Re-registration is async since the §5.3 policy Request: the reconnect
167
+ // listener awaits the receipt before releasing the data plane, so settle
168
+ // the microtask chain before asserting what happened at ready().
169
+ await new Promise((r) => setImmediate(r));
170
+ duringReconnect = await e3;
135
171
  assert.equal(duringReconnect?.accepted, true);
136
172
  // THE regression: before the fix this stayed rejected forever.
137
- const revived = sendPush('e4');
173
+ const revived = await sendPush('e4');
138
174
  assert.equal(revived.accepted, true, `push after reconnect must be accepted, got: ${revived.reason}`);
139
175
  assert.equal(pushed.length, 3);
140
176
  // The server was told its enabled feature sets again on re-registration.
141
177
  assert.equal(connection.featureSetUpdates.length, 2, 'featureSets/update re-sent on reconnect');
142
178
  assert.ok(fw.featureSetManager.isEnabled('srv', 'chat'));
143
179
  });
144
- test('checkpoint state SURVIVES a transient close + reconnect', () => {
145
- const { fw, store, connection } = makeHarness();
180
+ test('checkpoint state SURVIVES a transient close + reconnect', async () => {
181
+ const { fw, store, connection } = await makeHarness();
146
182
  // Record durable checkpoint state for the stateful feature set.
147
183
  fw.checkpointManager.recordCheckpoint('srv', 'mem', {
148
184
  checkpoint: 'cp1',
@@ -160,7 +196,7 @@ test('checkpoint state SURVIVES a transient close + reconnect', () => {
160
196
  assert.equal(fw.checkpointManager.getCurrentCheckpoint('srv', 'mem'), 'cp1');
161
197
  assert.deepEqual(fw.checkpointManager.getCurrentState('srv', 'mem'), { counter: 42 });
162
198
  });
163
- test('the close handler NEVER destroys checkpoints — even with willReconnect=false', () => {
199
+ test('the close handler NEVER destroys checkpoints — even with willReconnect=false', async () => {
164
200
  // A clean AgentFramework.stop() sets reconnectEnabled=false BEFORE emitting
165
201
  // 'close', so willReconnect is false on an ordinary host restart just as much
166
202
  // as on a permanent teardown. Gating checkpoint destruction on willReconnect
@@ -168,7 +204,7 @@ test('the close handler NEVER destroys checkpoints — even with willReconnect=f
168
204
  // (while a SIGKILL, whose 'close' carries willReconnect=true, preserved them).
169
205
  // Permanent removal is owned solely by disconnectMcplServer; the close handler
170
206
  // must leave the persisted tree intact for loadFromStore() to resume.
171
- const { fw, store, connection } = makeHarness();
207
+ const { fw, store, connection } = await makeHarness();
172
208
  fw.checkpointManager.recordCheckpoint('srv', 'mem', { checkpoint: 'cp1', data: { x: 1 } });
173
209
  // Even a "permanent-looking" close (reconnect disabled) must not delete state.
174
210
  connection.willReconnect = false;
@@ -178,7 +214,7 @@ test('the close handler NEVER destroys checkpoints — even with willReconnect=f
178
214
  assert.ok(persisted.trees['srv:mem'], 'the persisted tree survives a clean shutdown for later resume');
179
215
  });
180
216
  test('disconnectMcplServer destroys checkpoints even when the connection already closed transiently', async () => {
181
- const { fw, connection, config } = makeHarness();
217
+ const { fw, connection, config } = await makeHarness();
182
218
  fw.checkpointManager.recordCheckpoint('srv', 'mem', { checkpoint: 'cp1', data: { x: 1 } });
183
219
  // Transient close first (checkpoints preserved for the pending reconnect)…
184
220
  connection.willReconnect = true;