@agentmeshhq/agent 0.4.16 → 0.4.18

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 (88) hide show
  1. package/LICENSE +21 -0
  2. package/dist/__tests__/injection-verify.test.d.ts +1 -0
  3. package/dist/__tests__/injection-verify.test.js +93 -0
  4. package/dist/__tests__/injection-verify.test.js.map +1 -0
  5. package/dist/__tests__/injector.test.js +78 -1
  6. package/dist/__tests__/injector.test.js.map +1 -1
  7. package/dist/__tests__/relay.test.d.ts +1 -0
  8. package/dist/__tests__/relay.test.js +17 -0
  9. package/dist/__tests__/relay.test.js.map +1 -0
  10. package/dist/__tests__/runner.test.js +17 -0
  11. package/dist/__tests__/runner.test.js.map +1 -1
  12. package/dist/__tests__/session-recovery.test.js +214 -11
  13. package/dist/__tests__/session-recovery.test.js.map +1 -1
  14. package/dist/__tests__/startup-diagnostics.test.d.ts +1 -0
  15. package/dist/__tests__/startup-diagnostics.test.js +250 -0
  16. package/dist/__tests__/startup-diagnostics.test.js.map +1 -0
  17. package/dist/__tests__/tmux-runtime.test.js +13 -0
  18. package/dist/__tests__/tmux-runtime.test.js.map +1 -1
  19. package/dist/__tests__/watcher-queue.test.d.ts +1 -0
  20. package/dist/__tests__/watcher-queue.test.js +85 -0
  21. package/dist/__tests__/watcher-queue.test.js.map +1 -0
  22. package/dist/__tests__/watcher-state.test.d.ts +1 -0
  23. package/dist/__tests__/watcher-state.test.js +159 -0
  24. package/dist/__tests__/watcher-state.test.js.map +1 -0
  25. package/dist/cli/commands.d.ts +32 -0
  26. package/dist/cli/commands.js +165 -0
  27. package/dist/cli/commands.js.map +1 -0
  28. package/dist/cli/index.js +88 -0
  29. package/dist/cli/index.js.map +1 -1
  30. package/dist/cli/relay.d.ts +1 -0
  31. package/dist/cli/relay.js +16 -2
  32. package/dist/cli/relay.js.map +1 -1
  33. package/dist/config/schema.d.ts +1 -1
  34. package/dist/core/chat-output-parser.d.ts +24 -0
  35. package/dist/core/chat-output-parser.js +134 -0
  36. package/dist/core/chat-output-parser.js.map +1 -0
  37. package/dist/core/chat-output-parser.test.d.ts +7 -0
  38. package/dist/core/chat-output-parser.test.js +130 -0
  39. package/dist/core/chat-output-parser.test.js.map +1 -0
  40. package/dist/core/daemon/crash-log.js +5 -0
  41. package/dist/core/daemon/crash-log.js.map +1 -1
  42. package/dist/core/daemon/injection-verify.d.ts +25 -0
  43. package/dist/core/daemon/injection-verify.js +94 -0
  44. package/dist/core/daemon/injection-verify.js.map +1 -0
  45. package/dist/core/daemon/roles.d.ts +2 -2
  46. package/dist/core/daemon/roles.js +3 -0
  47. package/dist/core/daemon/roles.js.map +1 -1
  48. package/dist/core/daemon/session-recovery.d.ts +18 -1
  49. package/dist/core/daemon/session-recovery.js +89 -5
  50. package/dist/core/daemon/session-recovery.js.map +1 -1
  51. package/dist/core/daemon/startup-diagnostics.d.ts +76 -0
  52. package/dist/core/daemon/startup-diagnostics.js +277 -0
  53. package/dist/core/daemon/startup-diagnostics.js.map +1 -0
  54. package/dist/core/daemon/watcher-loop.d.ts +27 -0
  55. package/dist/core/daemon/watcher-loop.js +134 -0
  56. package/dist/core/daemon/watcher-loop.js.map +1 -0
  57. package/dist/core/daemon/watcher-queue.d.ts +33 -0
  58. package/dist/core/daemon/watcher-queue.js +71 -0
  59. package/dist/core/daemon/watcher-queue.js.map +1 -0
  60. package/dist/core/daemon/watcher-state.d.ts +66 -0
  61. package/dist/core/daemon/watcher-state.js +151 -0
  62. package/dist/core/daemon/watcher-state.js.map +1 -0
  63. package/dist/core/daemon.d.ts +12 -0
  64. package/dist/core/daemon.js +134 -2
  65. package/dist/core/daemon.js.map +1 -1
  66. package/dist/core/injector.js +164 -27
  67. package/dist/core/injector.js.map +1 -1
  68. package/dist/core/runner/build.js +7 -31
  69. package/dist/core/runner/build.js.map +1 -1
  70. package/dist/core/runner/detect.js +2 -8
  71. package/dist/core/runner/detect.js.map +1 -1
  72. package/dist/core/runner/index.d.ts +3 -1
  73. package/dist/core/runner/index.js +2 -0
  74. package/dist/core/runner/index.js.map +1 -1
  75. package/dist/core/runner/kimi-models.d.ts +4 -0
  76. package/dist/core/runner/kimi-models.js +24 -0
  77. package/dist/core/runner/kimi-models.js.map +1 -0
  78. package/dist/core/runner/registry.d.ts +3 -0
  79. package/dist/core/runner/registry.js +75 -0
  80. package/dist/core/runner/registry.js.map +1 -0
  81. package/dist/core/runner/types.d.ts +17 -1
  82. package/dist/core/tmux-runtime.d.ts +1 -1
  83. package/dist/core/tmux-runtime.js +13 -0
  84. package/dist/core/tmux-runtime.js.map +1 -1
  85. package/dist/core/tmux.d.ts +4 -0
  86. package/dist/core/tmux.js +49 -11
  87. package/dist/core/tmux.js.map +1 -1
  88. package/package.json +11 -12
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 therajushahi
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,93 @@
1
+ import { beforeEach, describe, expect, it, vi } from "vitest";
2
+ const sendKeysMock = vi.fn();
3
+ const captureSessionOutputMock = vi.fn();
4
+ vi.mock("../core/tmux.js", () => ({
5
+ sendKeys: (...args) => sendKeysMock(...args),
6
+ captureSessionOutput: (...args) => captureSessionOutputMock(...args),
7
+ getSessionName: (name) => `agentmesh-${name}`,
8
+ sessionExists: () => true,
9
+ }));
10
+ import { isRateLimited, verifyInjection } from "../core/daemon/injection-verify.js";
11
+ describe("injection-verify", () => {
12
+ beforeEach(() => {
13
+ sendKeysMock.mockClear();
14
+ captureSessionOutputMock.mockClear();
15
+ vi.useRealTimers();
16
+ });
17
+ describe("isRateLimited", () => {
18
+ it("detects 'hit your limit' pattern", () => {
19
+ expect(isRateLimited("You've hit your limit · resets Apr 1")).toBe(true);
20
+ });
21
+ it("detects 'rate limit' pattern", () => {
22
+ expect(isRateLimited("Error: rate limit exceeded")).toBe(true);
23
+ });
24
+ it("detects 'usage limit' pattern", () => {
25
+ expect(isRateLimited("Usage limit reached for this billing period")).toBe(true);
26
+ });
27
+ it("returns false for normal output", () => {
28
+ expect(isRateLimited("Hello, I'll help you with that task.")).toBe(false);
29
+ });
30
+ it("is case insensitive", () => {
31
+ expect(isRateLimited("RATE LIMIT exceeded")).toBe(true);
32
+ });
33
+ });
34
+ describe("verifyInjection", () => {
35
+ it("returns verified=true when output changes after injection", async () => {
36
+ vi.useFakeTimers();
37
+ // Baseline capture
38
+ captureSessionOutputMock.mockReturnValueOnce("idle prompt");
39
+ // After first poll (5s) — output changed
40
+ captureSessionOutputMock.mockReturnValueOnce("LLM is now working on the handoff...");
41
+ const promise = verifyInjection("test-agent", "hnd_123", "Fix bug");
42
+ await vi.advanceTimersByTimeAsync(6000);
43
+ const result = await promise;
44
+ expect(result.verified).toBe(true);
45
+ expect(result.rateLimited).toBe(false);
46
+ expect(result.attempts).toBe(1);
47
+ vi.useRealTimers();
48
+ });
49
+ it("detects rate limit in baseline output", async () => {
50
+ captureSessionOutputMock.mockReturnValue("You've hit your limit · resets tomorrow");
51
+ const result = await verifyInjection("test-agent", "hnd_123", "Fix bug");
52
+ expect(result.verified).toBe(false);
53
+ expect(result.rateLimited).toBe(true);
54
+ expect(result.attempts).toBe(1);
55
+ });
56
+ it("re-injects when no activity detected", async () => {
57
+ vi.useFakeTimers();
58
+ sendKeysMock.mockReturnValue(true);
59
+ // All polls return same baseline — no activity
60
+ captureSessionOutputMock.mockReturnValue("idle prompt");
61
+ const promise = verifyInjection("test-agent", "hnd_123", "Fix bug", 1);
62
+ // First verification window: 30s (6 polls * 5s)
63
+ await vi.advanceTimersByTimeAsync(35000);
64
+ // Re-injection happens, then 5s sleep + 20s verification (4 polls * 5s)
65
+ await vi.advanceTimersByTimeAsync(30000);
66
+ const result = await promise;
67
+ expect(result.verified).toBe(false);
68
+ expect(result.attempts).toBe(2);
69
+ expect(sendKeysMock).toHaveBeenCalledWith("test-agent", expect.stringContaining("Reminder: You accepted handoff hnd_123"));
70
+ vi.useRealTimers();
71
+ });
72
+ it("detects rate limit after re-injection", async () => {
73
+ vi.useFakeTimers();
74
+ sendKeysMock.mockReturnValue(true);
75
+ // Baseline — normal
76
+ captureSessionOutputMock.mockReturnValueOnce("idle prompt");
77
+ // All verification polls — same (no activity)
78
+ for (let i = 0; i < 6; i++) {
79
+ captureSessionOutputMock.mockReturnValueOnce("idle prompt");
80
+ }
81
+ // After re-injection sleep — rate limited
82
+ captureSessionOutputMock.mockReturnValue("You've hit your limit · resets Apr 1");
83
+ const promise = verifyInjection("test-agent", "hnd_123", "Fix bug", 1);
84
+ // Wait through first verification + re-injection
85
+ await vi.advanceTimersByTimeAsync(40000);
86
+ const result = await promise;
87
+ expect(result.rateLimited).toBe(true);
88
+ expect(result.verified).toBe(false);
89
+ vi.useRealTimers();
90
+ });
91
+ });
92
+ });
93
+ //# sourceMappingURL=injection-verify.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"injection-verify.test.js","sourceRoot":"","sources":["../../src/__tests__/injection-verify.test.ts"],"names":[],"mappings":"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"}
@@ -117,6 +117,7 @@ describe("injector runtime chat bridge", () => {
117
117
  it("injects agent.chat.input and publishes assistant output", async () => {
118
118
  vi.useFakeTimers();
119
119
  sendKeysMock.mockReturnValue(true);
120
+ // Return same output every time to simulate stable output
120
121
  captureSessionOutputMock.mockReturnValue("assistant terminal output");
121
122
  const fetchMock = vi.fn().mockResolvedValue({ ok: true });
122
123
  vi.stubGlobal("fetch", fetchMock);
@@ -124,13 +125,15 @@ describe("injector runtime chat bridge", () => {
124
125
  type: "agent.chat.input",
125
126
  workspace: "agentmesh",
126
127
  agent_id: "agent_123",
128
+ message_id: "msg_abc",
127
129
  content: "hello from control",
128
130
  }, {
129
131
  hubUrl: "http://localhost:3000",
130
132
  token: "token_123",
131
133
  });
132
134
  expect(sendKeysMock).toHaveBeenCalledWith("worker-1", "hello from control");
133
- await vi.advanceTimersByTimeAsync(700);
135
+ // GH-845: Output stability polling — first poll at 2s, stable after 5s of no change
136
+ await vi.advanceTimersByTimeAsync(8000);
134
137
  expect(captureSessionOutputMock).toHaveBeenCalledWith("worker-1", 120);
135
138
  expect(fetchMock).toHaveBeenCalledTimes(1);
136
139
  expect(fetchMock).toHaveBeenCalledWith("http://localhost:3000/api/v1/workspaces/agentmesh/agents/agent_123/messages", expect.objectContaining({
@@ -142,5 +145,79 @@ describe("injector runtime chat bridge", () => {
142
145
  }));
143
146
  vi.useRealTimers();
144
147
  });
148
+ it("publishes explicit assistant error when chat injection fails", async () => {
149
+ sendKeysMock.mockReturnValue(false);
150
+ const fetchMock = vi.fn().mockResolvedValue({ ok: true });
151
+ vi.stubGlobal("fetch", fetchMock);
152
+ handleWebSocketEvent("worker-1", {
153
+ type: "agent.chat.input",
154
+ workspace: "agentmesh",
155
+ agent_id: "agent_123",
156
+ content: "hello from control",
157
+ }, {
158
+ hubUrl: "http://localhost:3000",
159
+ token: "token_123",
160
+ });
161
+ expect(sendKeysMock).toHaveBeenCalledWith("worker-1", "hello from control");
162
+ expect(fetchMock).toHaveBeenCalledTimes(1);
163
+ expect(fetchMock).toHaveBeenCalledWith("http://localhost:3000/api/v1/workspaces/agentmesh/agents/agent_123/messages", expect.objectContaining({
164
+ method: "POST",
165
+ body: expect.stringContaining("Interactive session is unavailable"),
166
+ }));
167
+ });
168
+ });
169
+ describe("injector runtime terminal bridge", () => {
170
+ beforeEach(() => {
171
+ sendKeysMock.mockClear();
172
+ captureSessionOutputMock.mockClear();
173
+ vi.unstubAllGlobals();
174
+ });
175
+ it("injects agent.terminal.input and publishes terminal output", async () => {
176
+ vi.useFakeTimers();
177
+ sendKeysMock.mockReturnValue(true);
178
+ captureSessionOutputMock.mockReturnValue("terminal output");
179
+ const fetchMock = vi.fn().mockResolvedValue({ ok: true });
180
+ vi.stubGlobal("fetch", fetchMock);
181
+ handleWebSocketEvent("worker-1", {
182
+ type: "agent.terminal.input",
183
+ workspace: "agentmesh",
184
+ agent_id: "agent_123",
185
+ command: "pwd",
186
+ request_id: "req_1",
187
+ }, {
188
+ hubUrl: "http://localhost:3000",
189
+ token: "token_123",
190
+ });
191
+ expect(sendKeysMock).toHaveBeenCalledWith("worker-1", "pwd");
192
+ await vi.advanceTimersByTimeAsync(400);
193
+ expect(captureSessionOutputMock).toHaveBeenCalledWith("worker-1", 80);
194
+ expect(fetchMock).toHaveBeenCalledTimes(1);
195
+ expect(fetchMock).toHaveBeenCalledWith("http://localhost:3000/api/v1/workspaces/agentmesh/agents/agent_123/terminal/output", expect.objectContaining({
196
+ method: "POST",
197
+ body: expect.stringContaining("terminal output"),
198
+ }));
199
+ vi.useRealTimers();
200
+ });
201
+ it("publishes explicit terminal error when command injection fails", async () => {
202
+ sendKeysMock.mockReturnValue(false);
203
+ const fetchMock = vi.fn().mockResolvedValue({ ok: true });
204
+ vi.stubGlobal("fetch", fetchMock);
205
+ handleWebSocketEvent("worker-1", {
206
+ type: "agent.terminal.input",
207
+ workspace: "agentmesh",
208
+ agent_id: "agent_123",
209
+ command: "pwd",
210
+ request_id: "req_2",
211
+ }, {
212
+ hubUrl: "http://localhost:3000",
213
+ token: "token_123",
214
+ });
215
+ expect(sendKeysMock).toHaveBeenCalledWith("worker-1", "pwd");
216
+ expect(fetchMock).toHaveBeenCalledTimes(1);
217
+ expect(fetchMock).toHaveBeenCalledWith("http://localhost:3000/api/v1/workspaces/agentmesh/agents/agent_123/terminal/output", expect.objectContaining({
218
+ method: "POST",
219
+ body: expect.stringContaining("Interactive session is unavailable"),
220
+ }));
221
+ });
145
222
  });
146
223
  //# sourceMappingURL=injector.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"injector.test.js","sourceRoot":"","sources":["../../src/__tests__/injector.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAC9D,OAAO,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAEnG,MAAM,EAAE,YAAY,EAAE,wBAAwB,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;IACnE,YAAY,EAAE,EAAE,CAAC,EAAE,EAAE;IACrB,wBAAwB,EAAE,EAAE,CAAC,EAAE,EAAE;CAClC,CAAC,CAAC,CAAC;AAEJ,EAAE,CAAC,IAAI,CAAC,iBAAiB,EAAE,GAAG,EAAE,CAAC,CAAC;IAChC,QAAQ,EAAE,YAAY;IACtB,oBAAoB,EAAE,wBAAwB;CAC/C,CAAC,CAAC,CAAC;AAEJ,QAAQ,CAAC,iCAAiC,EAAE,GAAG,EAAE;IAC/C,UAAU,CAAC,GAAG,EAAE;QACd,YAAY,CAAC,SAAS,EAAE,CAAC;IAC3B,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iDAAiD,EAAE,GAAG,EAAE;QACzD,oBAAoB,CAAC,WAAW,EAAE;YAChC,IAAI,EAAE,eAAe;YACrB,IAAI,EAAE,MAAM;YACZ,OAAO,EAAE,MAAM;YACf,IAAI,EAAE,kCAAkC;YACxC,EAAE,EAAE,iBAAiB;SACtB,CAAC,CAAC;QAEH,MAAM,CAAC,YAAY,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;QAC9C,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAC1D,MAAM,QAAQ,GAAG,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;QAC/D,mEAAmE;QACnE,MAAM,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,2BAA2B,CAAC,CAAC;QACxD,MAAM,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,kCAAkC,CAAC,CAAC;IACjE,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,2BAA2B,EAAE,GAAG,EAAE;IACzC,UAAU,CAAC,GAAG,EAAE;QACd,YAAY,CAAC,SAAS,EAAE,CAAC;IAC3B,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,yDAAyD,EAAE,GAAG,EAAE;QACjE,oBAAoB,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;QAEpC,MAAM,CAAC,YAAY,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;QAC9C,MAAM,QAAQ,GAAG,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;QAC/D,MAAM,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,gCAAgC,CAAC,CAAC;IAC/D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,2EAA2E,EAAE,GAAG,EAAE;QACnF,oBAAoB,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;QAEpC,MAAM,CAAC,YAAY,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;QAC9C,MAAM,QAAQ,GAAG,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;QAC/D,MAAM,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,mCAAmC,CAAC,CAAC;QAChE,MAAM,CAAC,QAAQ,CAAC,CAAC,SAAS,CACxB,uEAAuE,CACxE,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6DAA6D,EAAE,KAAK,IAAI,EAAE;QAC3E,MAAM,gBAAgB,CAAC,UAAU,EAAE;YACjC;gBACE,EAAE,EAAE,SAAS;gBACb,aAAa,EAAE,UAAU;gBACzB,KAAK,EAAE,uBAAuB;gBAC9B,MAAM,EAAE,aAAa;gBACrB,MAAM,EAAE,SAAS;gBACjB,UAAU,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;aACrC;SACF,CAAC,CAAC;QAEH,+DAA+D;QAC/D,MAAM,CAAC,YAAY,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;QAC9C,MAAM,QAAQ,GAAG,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;QAC/D,MAAM,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,+BAA+B,CAAC,CAAC;QAC5D,MAAM,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;QACtC,MAAM,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,uBAAuB,CAAC,CAAC;IACtD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,8DAA8D,EAAE,KAAK,IAAI,EAAE;QAC5E,EAAE,CAAC,aAAa,EAAE,CAAC;QAEnB,MAAM,OAAO,GAAG,gBAAgB,CAAC,UAAU,EAAE;YAC3C;gBACE,EAAE,EAAE,OAAO;gBACX,aAAa,EAAE,SAAS;gBACxB,KAAK,EAAE,UAAU;gBACjB,MAAM,EAAE,GAAG;gBACX,MAAM,EAAE,SAAS;gBACjB,UAAU,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;aACrC;YACD;gBACE,EAAE,EAAE,OAAO;gBACX,aAAa,EAAE,SAAS;gBACxB,KAAK,EAAE,UAAU;gBACjB,MAAM,EAAE,GAAG;gBACX,MAAM,EAAE,SAAS;gBACjB,UAAU,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;aACrC;YACD;gBACE,EAAE,EAAE,OAAO;gBACX,aAAa,EAAE,SAAS;gBACxB,KAAK,EAAE,YAAY;gBACnB,MAAM,EAAE,GAAG;gBACX,MAAM,EAAE,SAAS;gBACjB,UAAU,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;aACrC;SACF,CAAC,CAAC;QAEH,iDAAiD;QACjD,MAAM,CAAC,YAAY,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;QAC9C,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;QAEnE,oDAAoD;QACpD,MAAM,EAAE,CAAC,wBAAwB,CAAC,IAAI,CAAC,CAAC;QACxC,MAAM,CAAC,YAAY,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;QAC9C,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;QAEnE,uDAAuD;QACvD,MAAM,EAAE,CAAC,wBAAwB,CAAC,IAAI,CAAC,CAAC;QACxC,MAAM,OAAO,CAAC;QACd,MAAM,CAAC,YAAY,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;QAC9C,MAAM,OAAO,GAAG,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QACxD,MAAM,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;QACnC,MAAM,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,+BAA+B,CAAC,CAAC;QAE3D,EAAE,CAAC,aAAa,EAAE,CAAC;IACrB,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,8BAA8B,EAAE,GAAG,EAAE;IAC5C,UAAU,CAAC,GAAG,EAAE;QACd,YAAY,CAAC,SAAS,EAAE,CAAC;QACzB,wBAAwB,CAAC,SAAS,EAAE,CAAC;QACrC,EAAE,CAAC,gBAAgB,EAAE,CAAC;IACxB,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,yDAAyD,EAAE,KAAK,IAAI,EAAE;QACvE,EAAE,CAAC,aAAa,EAAE,CAAC;QACnB,YAAY,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;QACnC,wBAAwB,CAAC,eAAe,CAAC,2BAA2B,CAAC,CAAC;QACtE,MAAM,SAAS,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;QAC1D,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;QAElC,oBAAoB,CAClB,UAAU,EACV;YACE,IAAI,EAAE,kBAAkB;YACxB,SAAS,EAAE,WAAW;YACtB,QAAQ,EAAE,WAAW;YACrB,OAAO,EAAE,oBAAoB;SAC9B,EACD;YACE,MAAM,EAAE,uBAAuB;YAC/B,KAAK,EAAE,WAAW;SACnB,CACF,CAAC;QAEF,MAAM,CAAC,YAAY,CAAC,CAAC,oBAAoB,CAAC,UAAU,EAAE,oBAAoB,CAAC,CAAC;QAE5E,MAAM,EAAE,CAAC,wBAAwB,CAAC,GAAG,CAAC,CAAC;QAEvC,MAAM,CAAC,wBAAwB,CAAC,CAAC,oBAAoB,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC;QACvE,MAAM,CAAC,SAAS,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;QAC3C,MAAM,CAAC,SAAS,CAAC,CAAC,oBAAoB,CACpC,6EAA6E,EAC7E,MAAM,CAAC,gBAAgB,CAAC;YACtB,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,MAAM,CAAC,gBAAgB,CAAC;gBAC/B,aAAa,EAAE,kBAAkB;gBACjC,cAAc,EAAE,kBAAkB;aACnC,CAAC;SACH,CAAC,CACH,CAAC;QAEF,EAAE,CAAC,aAAa,EAAE,CAAC;IACrB,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"injector.test.js","sourceRoot":"","sources":["../../src/__tests__/injector.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,17 @@
1
+ import { describe, expect, it } from "vitest";
2
+ import { normalizeRelaySpawnCommand } from "../cli/relay.js";
3
+ describe("normalizeRelaySpawnCommand", () => {
4
+ it("rewrites agentmesh start to current cli entrypoint", () => {
5
+ const out = normalizeRelaySpawnCommand('agentmesh start --name "a1" --model "gpt-5-codex"', "/opt/agentmesh/dist/cli/index.js", "/usr/local/bin/node");
6
+ expect(out).toBe('"/usr/local/bin/node" "/opt/agentmesh/dist/cli/index.js" start --name "a1" --model "gpt-5-codex"');
7
+ });
8
+ it("rejects non-start commands", () => {
9
+ const out = normalizeRelaySpawnCommand("agentmesh stop my-agent");
10
+ expect(out).toBeNull();
11
+ });
12
+ it("trims whitespace before normalization", () => {
13
+ const out = normalizeRelaySpawnCommand(' agentmesh start --name "a2" ', "/entry.js", "/node");
14
+ expect(out).toBe('"/node" "/entry.js" start --name "a2"');
15
+ });
16
+ });
17
+ //# sourceMappingURL=relay.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"relay.test.js","sourceRoot":"","sources":["../../src/__tests__/relay.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EAAE,0BAA0B,EAAE,MAAM,iBAAiB,CAAC;AAE7D,QAAQ,CAAC,4BAA4B,EAAE,GAAG,EAAE;IAC1C,EAAE,CAAC,oDAAoD,EAAE,GAAG,EAAE;QAC5D,MAAM,GAAG,GAAG,0BAA0B,CACpC,mDAAmD,EACnD,kCAAkC,EAClC,qBAAqB,CACtB,CAAC;QAEF,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CACd,kGAAkG,CACnG,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,4BAA4B,EAAE,GAAG,EAAE;QACpC,MAAM,GAAG,GAAG,0BAA0B,CAAC,yBAAyB,CAAC,CAAC;QAClE,MAAM,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC;IACzB,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,uCAAuC,EAAE,GAAG,EAAE;QAC/C,MAAM,GAAG,GAAG,0BAA0B,CACpC,mCAAmC,EACnC,WAAW,EACX,OAAO,CACR,CAAC;QACF,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,uCAAuC,CAAC,CAAC;IAC5D,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -17,6 +17,11 @@ describe("Runner Module", () => {
17
17
  expect(detectRunner("codex --some-flag")).toBe("codex");
18
18
  expect(detectRunner("CODEX")).toBe("codex");
19
19
  });
20
+ it("should detect kimi runner", () => {
21
+ expect(detectRunner("kimi")).toBe("kimi");
22
+ expect(detectRunner("kimi --yolo")).toBe("kimi");
23
+ expect(detectRunner("KIMI")).toBe("kimi");
24
+ });
20
25
  it("should detect custom runner for unknown commands", () => {
21
26
  expect(detectRunner("aider")).toBe("custom");
22
27
  expect(detectRunner("cursor")).toBe("custom");
@@ -90,12 +95,24 @@ describe("Runner Module", () => {
90
95
  expect(config.model).toBe("openai/gpt-5-codex");
91
96
  expect(config.env.CODEX_MODEL).toBe("openai/gpt-5-codex");
92
97
  });
98
+ it("should build config for kimi with KIMI env vars", () => {
99
+ const config = buildRunnerConfig({
100
+ cliModel: "kimi-for-coding",
101
+ defaultModel: "claude-sonnet-4",
102
+ command: "kimi",
103
+ });
104
+ expect(config.type).toBe("kimi");
105
+ expect(config.model).toBe("kimi-for-coding");
106
+ expect(config.env.KIMI_MODEL_NAME).toBe("kimi-for-coding");
107
+ expect(config.env.KIMI_BASE_URL).toBe("https://api.kimi.com/coding/v1");
108
+ });
93
109
  });
94
110
  describe("getRunnerDisplayName", () => {
95
111
  it("should return correct display names", () => {
96
112
  expect(getRunnerDisplayName("opencode")).toBe("OpenCode");
97
113
  expect(getRunnerDisplayName("claude")).toBe("Claude CLI");
98
114
  expect(getRunnerDisplayName("codex")).toBe("Codex CLI");
115
+ expect(getRunnerDisplayName("kimi")).toBe("Kimi CLI");
99
116
  expect(getRunnerDisplayName("custom")).toBe("Custom");
100
117
  });
101
118
  });
@@ -1 +1 @@
1
- {"version":3,"file":"runner.test.js","sourceRoot":"","sources":["../../src/__tests__/runner.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"runner.test.js","sourceRoot":"","sources":["../../src/__tests__/runner.test.ts"],"names":[],"mappings":"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"}
@@ -1,16 +1,219 @@
1
- import { describe, expect, it } from "vitest";
2
- import { isRecoverableSessionFailure } from "../core/daemon/session-recovery.js";
1
+ import { beforeEach, describe, expect, it, vi } from "vitest";
2
+ import { getLastProcessExit, isRecoverableSessionFailure, } from "../core/daemon/session-recovery.js";
3
+ // Mock startup-diagnostics
4
+ vi.mock("../core/daemon/startup-diagnostics.js", () => ({
5
+ readStartupDiagnostics: vi.fn(),
6
+ }));
7
+ import { readStartupDiagnostics } from "../core/daemon/startup-diagnostics.js";
3
8
  describe("session recovery classification", () => {
4
- it("marks tmux-loss reasons as recoverable", () => {
5
- expect(isRecoverableSessionFailure("session_not_found")).toBe(true);
6
- expect(isRecoverableSessionFailure("pane_dead")).toBe(true);
7
- expect(isRecoverableSessionFailure("no_pid")).toBe(true);
8
- expect(isRecoverableSessionFailure("check_failed: tmux list-panes")).toBe(true);
9
+ beforeEach(() => {
10
+ vi.resetAllMocks();
9
11
  });
10
- it("does not mark non-session reasons as recoverable", () => {
11
- expect(isRecoverableSessionFailure("container_not_running")).toBe(false);
12
- expect(isRecoverableSessionFailure("auth_invalid")).toBe(false);
13
- expect(isRecoverableSessionFailure("unknown")).toBe(false);
12
+ describe("isRecoverableSessionFailure (legacy without agentName)", () => {
13
+ it("marks tmux-loss reasons as recoverable", () => {
14
+ expect(isRecoverableSessionFailure("session_not_found")).toBe(true);
15
+ expect(isRecoverableSessionFailure("pane_dead")).toBe(true);
16
+ expect(isRecoverableSessionFailure("no_pid")).toBe(true);
17
+ expect(isRecoverableSessionFailure("check_failed: tmux list-panes")).toBe(true);
18
+ });
19
+ it("marks pane death variations as recoverable", () => {
20
+ expect(isRecoverableSessionFailure("pane_died")).toBe(true);
21
+ expect(isRecoverableSessionFailure("pane_dead_in_container")).toBe(true);
22
+ });
23
+ it("marks session creation failures as recoverable", () => {
24
+ expect(isRecoverableSessionFailure("session_creation_failed: command not found")).toBe(true);
25
+ });
26
+ it("does not mark non-session reasons as recoverable", () => {
27
+ expect(isRecoverableSessionFailure("container_not_running")).toBe(false);
28
+ expect(isRecoverableSessionFailure("auth_invalid")).toBe(false);
29
+ expect(isRecoverableSessionFailure("unknown")).toBe(false);
30
+ });
31
+ });
32
+ describe("isRecoverableSessionFailure (with startup diagnostics)", () => {
33
+ it("considers early exit as recoverable when within 15s window", () => {
34
+ vi.mocked(readStartupDiagnostics).mockReturnValue([
35
+ {
36
+ type: "startup",
37
+ timestamp: new Date(Date.now() - 20000).toISOString(),
38
+ agentName: "test-agent",
39
+ data: {
40
+ resolvedCommand: "claude",
41
+ envKeys: [],
42
+ sessionName: "agentmesh-test-agent",
43
+ startTime: new Date(Date.now() - 20000).toISOString(),
44
+ runnerKind: "claude",
45
+ },
46
+ },
47
+ {
48
+ type: "exit",
49
+ timestamp: new Date(Date.now() - 5000).toISOString(), // Exited 5s after startup
50
+ agentName: "test-agent",
51
+ data: {
52
+ code: 1,
53
+ signal: null,
54
+ elapsedMs: 5000,
55
+ reason: "early_exit",
56
+ },
57
+ },
58
+ ]);
59
+ // With agentName, it should check diagnostics
60
+ expect(isRecoverableSessionFailure("some_unknown_reason", "test-agent")).toBe(true);
61
+ });
62
+ it("does not consider late exit as recoverable", () => {
63
+ vi.mocked(readStartupDiagnostics).mockReturnValue([
64
+ {
65
+ type: "startup",
66
+ timestamp: new Date(Date.now() - 60000).toISOString(),
67
+ agentName: "test-agent",
68
+ data: {
69
+ resolvedCommand: "claude",
70
+ envKeys: [],
71
+ sessionName: "agentmesh-test-agent",
72
+ startTime: new Date(Date.now() - 60000).toISOString(),
73
+ runnerKind: "claude",
74
+ },
75
+ },
76
+ {
77
+ type: "exit",
78
+ timestamp: new Date().toISOString(),
79
+ agentName: "test-agent",
80
+ data: {
81
+ code: 0,
82
+ signal: null,
83
+ elapsedMs: 60000, // Exited 60s after startup - outside window
84
+ reason: "normal_exit",
85
+ },
86
+ },
87
+ ]);
88
+ // With agentName but exit outside window, should fall back to reason matching
89
+ expect(isRecoverableSessionFailure("normal_exit", "test-agent")).toBe(false);
90
+ });
91
+ it("falls back to reason matching when no diagnostics available", () => {
92
+ vi.mocked(readStartupDiagnostics).mockReturnValue([]);
93
+ expect(isRecoverableSessionFailure("session_not_found", "test-agent")).toBe(true);
94
+ expect(isRecoverableSessionFailure("auth_invalid", "test-agent")).toBe(false);
95
+ });
96
+ it("falls back to reason matching when no exit entries in diagnostics", () => {
97
+ vi.mocked(readStartupDiagnostics).mockReturnValue([
98
+ {
99
+ type: "startup",
100
+ timestamp: new Date().toISOString(),
101
+ agentName: "test-agent",
102
+ data: {
103
+ resolvedCommand: "claude",
104
+ envKeys: [],
105
+ sessionName: "agentmesh-test-agent",
106
+ startTime: new Date().toISOString(),
107
+ runnerKind: "claude",
108
+ },
109
+ },
110
+ ]);
111
+ expect(isRecoverableSessionFailure("pane_dead", "test-agent")).toBe(true);
112
+ });
113
+ it("does not use stale exit events older than 60 seconds (freshness guard)", () => {
114
+ // Old exit event from hours ago with elapsedMs < 15000
115
+ vi.mocked(readStartupDiagnostics).mockReturnValue([
116
+ {
117
+ type: "exit",
118
+ timestamp: new Date(Date.now() - 2 * 60 * 60 * 1000).toISOString(), // 2 hours ago
119
+ agentName: "test-agent",
120
+ data: {
121
+ code: 1,
122
+ signal: null,
123
+ elapsedMs: 5000, // Would normally be considered recoverable
124
+ reason: "old_crash",
125
+ },
126
+ },
127
+ ]);
128
+ // A new unrelated failure should NOT be misclassified as recoverable
129
+ // based on an old exit event
130
+ expect(isRecoverableSessionFailure("some_new_failure", "test-agent")).toBe(false);
131
+ });
132
+ it("only considers exit events within 60 second freshness window", () => {
133
+ // Recent exit event (within 60s) with early exit
134
+ vi.mocked(readStartupDiagnostics).mockReturnValue([
135
+ {
136
+ type: "exit",
137
+ timestamp: new Date(Date.now() - 30 * 1000).toISOString(), // 30 seconds ago
138
+ agentName: "test-agent",
139
+ data: {
140
+ code: 1,
141
+ signal: null,
142
+ elapsedMs: 5000, // Early exit
143
+ reason: "recent_crash",
144
+ },
145
+ },
146
+ ]);
147
+ // Recent early exit should be considered recoverable
148
+ expect(isRecoverableSessionFailure("some_failure", "test-agent")).toBe(true);
149
+ });
150
+ });
151
+ describe("getLastProcessExit", () => {
152
+ it("returns null when no diagnostics exist", () => {
153
+ vi.mocked(readStartupDiagnostics).mockReturnValue([]);
154
+ const result = getLastProcessExit("test-agent");
155
+ expect(result).toBeNull();
156
+ });
157
+ it("returns null when no exit entries exist", () => {
158
+ vi.mocked(readStartupDiagnostics).mockReturnValue([
159
+ {
160
+ type: "startup",
161
+ timestamp: new Date().toISOString(),
162
+ agentName: "test-agent",
163
+ data: {
164
+ resolvedCommand: "claude",
165
+ envKeys: [],
166
+ sessionName: "agentmesh-test-agent",
167
+ startTime: new Date().toISOString(),
168
+ runnerKind: "claude",
169
+ },
170
+ },
171
+ ]);
172
+ const result = getLastProcessExit("test-agent");
173
+ expect(result).toBeNull();
174
+ });
175
+ it("returns the most recent exit event", () => {
176
+ vi.mocked(readStartupDiagnostics).mockReturnValue([
177
+ {
178
+ type: "exit",
179
+ timestamp: "2026-01-01T00:00:00Z",
180
+ agentName: "test-agent",
181
+ data: {
182
+ code: 1,
183
+ signal: null,
184
+ elapsedMs: 5000,
185
+ reason: "first_exit",
186
+ },
187
+ },
188
+ {
189
+ type: "startup",
190
+ timestamp: "2026-01-01T00:00:10Z",
191
+ agentName: "test-agent",
192
+ data: {
193
+ resolvedCommand: "claude",
194
+ envKeys: [],
195
+ sessionName: "agentmesh-test-agent",
196
+ startTime: "2026-01-01T00:00:10Z",
197
+ runnerKind: "claude",
198
+ },
199
+ },
200
+ {
201
+ type: "exit",
202
+ timestamp: "2026-01-01T00:00:20Z",
203
+ agentName: "test-agent",
204
+ data: {
205
+ code: 0,
206
+ signal: null,
207
+ elapsedMs: 8000,
208
+ reason: "second_exit",
209
+ },
210
+ },
211
+ ]);
212
+ const result = getLastProcessExit("test-agent");
213
+ expect(result).not.toBeNull();
214
+ expect(result?.reason).toBe("second_exit");
215
+ expect(result?.elapsedMs).toBe(8000);
216
+ });
14
217
  });
15
218
  });
16
219
  //# sourceMappingURL=session-recovery.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"session-recovery.test.js","sourceRoot":"","sources":["../../src/__tests__/session-recovery.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EAAE,2BAA2B,EAAE,MAAM,oCAAoC,CAAC;AAEjF,QAAQ,CAAC,iCAAiC,EAAE,GAAG,EAAE;IAC/C,EAAE,CAAC,wCAAwC,EAAE,GAAG,EAAE;QAChD,MAAM,CAAC,2BAA2B,CAAC,mBAAmB,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACpE,MAAM,CAAC,2BAA2B,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC5D,MAAM,CAAC,2BAA2B,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACzD,MAAM,CAAC,2BAA2B,CAAC,+BAA+B,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAClF,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kDAAkD,EAAE,GAAG,EAAE;QAC1D,MAAM,CAAC,2BAA2B,CAAC,uBAAuB,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACzE,MAAM,CAAC,2BAA2B,CAAC,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAChE,MAAM,CAAC,2BAA2B,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC7D,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"session-recovery.test.js","sourceRoot":"","sources":["../../src/__tests__/session-recovery.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export {};