@agentteams/runner 0.0.46

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 (158) hide show
  1. package/dist/api-client.d.ts +22 -0
  2. package/dist/api-client.js +201 -0
  3. package/dist/api-client.js.map +1 -0
  4. package/dist/api-client.test.d.ts +1 -0
  5. package/dist/api-client.test.js +118 -0
  6. package/dist/api-client.test.js.map +1 -0
  7. package/dist/autostart.d.ts +19 -0
  8. package/dist/autostart.js +359 -0
  9. package/dist/autostart.js.map +1 -0
  10. package/dist/autostart.test.d.ts +1 -0
  11. package/dist/autostart.test.js +42 -0
  12. package/dist/autostart.test.js.map +1 -0
  13. package/dist/commands/cleanup.d.ts +1 -0
  14. package/dist/commands/cleanup.js +12 -0
  15. package/dist/commands/cleanup.js.map +1 -0
  16. package/dist/commands/init.d.ts +1 -0
  17. package/dist/commands/init.js +57 -0
  18. package/dist/commands/init.js.map +1 -0
  19. package/dist/commands/restart.d.ts +1 -0
  20. package/dist/commands/restart.js +7 -0
  21. package/dist/commands/restart.js.map +1 -0
  22. package/dist/commands/start.d.ts +1 -0
  23. package/dist/commands/start.js +34 -0
  24. package/dist/commands/start.js.map +1 -0
  25. package/dist/commands/status.d.ts +1 -0
  26. package/dist/commands/status.js +20 -0
  27. package/dist/commands/status.js.map +1 -0
  28. package/dist/commands/stop.d.ts +1 -0
  29. package/dist/commands/stop.js +21 -0
  30. package/dist/commands/stop.js.map +1 -0
  31. package/dist/commands/uninstall.d.ts +1 -0
  32. package/dist/commands/uninstall.js +21 -0
  33. package/dist/commands/uninstall.js.map +1 -0
  34. package/dist/commands/update.d.ts +10 -0
  35. package/dist/commands/update.js +58 -0
  36. package/dist/commands/update.js.map +1 -0
  37. package/dist/commands/update.test.d.ts +1 -0
  38. package/dist/commands/update.test.js +104 -0
  39. package/dist/commands/update.test.js.map +1 -0
  40. package/dist/config.d.ts +6 -0
  41. package/dist/config.js +69 -0
  42. package/dist/config.js.map +1 -0
  43. package/dist/config.test.d.ts +1 -0
  44. package/dist/config.test.js +133 -0
  45. package/dist/config.test.js.map +1 -0
  46. package/dist/daemon-control.d.ts +21 -0
  47. package/dist/daemon-control.js +58 -0
  48. package/dist/daemon-control.js.map +1 -0
  49. package/dist/daemon-control.test.d.ts +1 -0
  50. package/dist/daemon-control.test.js +48 -0
  51. package/dist/daemon-control.test.js.map +1 -0
  52. package/dist/executable.d.ts +25 -0
  53. package/dist/executable.js +141 -0
  54. package/dist/executable.js.map +1 -0
  55. package/dist/executable.test.d.ts +1 -0
  56. package/dist/executable.test.js +57 -0
  57. package/dist/executable.test.js.map +1 -0
  58. package/dist/handlers/trigger-handler.d.ts +25 -0
  59. package/dist/handlers/trigger-handler.js +308 -0
  60. package/dist/handlers/trigger-handler.js.map +1 -0
  61. package/dist/handlers/trigger-handler.test.d.ts +1 -0
  62. package/dist/handlers/trigger-handler.test.js +496 -0
  63. package/dist/handlers/trigger-handler.test.js.map +1 -0
  64. package/dist/index.d.ts +2 -0
  65. package/dist/index.js +82 -0
  66. package/dist/index.js.map +1 -0
  67. package/dist/logger.d.ts +5 -0
  68. package/dist/logger.js +25 -0
  69. package/dist/logger.js.map +1 -0
  70. package/dist/pid.d.ts +8 -0
  71. package/dist/pid.js +49 -0
  72. package/dist/pid.js.map +1 -0
  73. package/dist/poller.d.ts +20 -0
  74. package/dist/poller.js +214 -0
  75. package/dist/poller.js.map +1 -0
  76. package/dist/poller.test.d.ts +1 -0
  77. package/dist/poller.test.js +382 -0
  78. package/dist/poller.test.js.map +1 -0
  79. package/dist/runners/amp.d.ts +5 -0
  80. package/dist/runners/amp.js +316 -0
  81. package/dist/runners/amp.js.map +1 -0
  82. package/dist/runners/claude-code.d.ts +6 -0
  83. package/dist/runners/claude-code.js +340 -0
  84. package/dist/runners/claude-code.js.map +1 -0
  85. package/dist/runners/claude-code.test.d.ts +1 -0
  86. package/dist/runners/claude-code.test.js +39 -0
  87. package/dist/runners/claude-code.test.js.map +1 -0
  88. package/dist/runners/codex.d.ts +6 -0
  89. package/dist/runners/codex.js +324 -0
  90. package/dist/runners/codex.js.map +1 -0
  91. package/dist/runners/codex.test.d.ts +1 -0
  92. package/dist/runners/codex.test.js +66 -0
  93. package/dist/runners/codex.test.js.map +1 -0
  94. package/dist/runners/gemini.d.ts +5 -0
  95. package/dist/runners/gemini.js +304 -0
  96. package/dist/runners/gemini.js.map +1 -0
  97. package/dist/runners/gemini.test.d.ts +1 -0
  98. package/dist/runners/gemini.test.js +16 -0
  99. package/dist/runners/gemini.test.js.map +1 -0
  100. package/dist/runners/index.d.ts +2 -0
  101. package/dist/runners/index.js +27 -0
  102. package/dist/runners/index.js.map +1 -0
  103. package/dist/runners/index.test.d.ts +1 -0
  104. package/dist/runners/index.test.js +19 -0
  105. package/dist/runners/index.test.js.map +1 -0
  106. package/dist/runners/log-reporter.d.ts +18 -0
  107. package/dist/runners/log-reporter.js +127 -0
  108. package/dist/runners/log-reporter.js.map +1 -0
  109. package/dist/runners/log-reporter.test.d.ts +1 -0
  110. package/dist/runners/log-reporter.test.js +152 -0
  111. package/dist/runners/log-reporter.test.js.map +1 -0
  112. package/dist/runners/opencode.d.ts +6 -0
  113. package/dist/runners/opencode.js +304 -0
  114. package/dist/runners/opencode.js.map +1 -0
  115. package/dist/runners/stream-json-parser.d.ts +17 -0
  116. package/dist/runners/stream-json-parser.js +116 -0
  117. package/dist/runners/stream-json-parser.js.map +1 -0
  118. package/dist/runners/types.d.ts +26 -0
  119. package/dist/runners/types.js +2 -0
  120. package/dist/runners/types.js.map +1 -0
  121. package/dist/types.d.ts +69 -0
  122. package/dist/types.js +2 -0
  123. package/dist/types.js.map +1 -0
  124. package/dist/utils/auth-path-store.d.ts +3 -0
  125. package/dist/utils/auth-path-store.js +37 -0
  126. package/dist/utils/auth-path-store.js.map +1 -0
  127. package/dist/utils/auth-path-store.test.d.ts +1 -0
  128. package/dist/utils/auth-path-store.test.js +70 -0
  129. package/dist/utils/auth-path-store.test.js.map +1 -0
  130. package/dist/utils/convention-sync.d.ts +8 -0
  131. package/dist/utils/convention-sync.js +41 -0
  132. package/dist/utils/convention-sync.js.map +1 -0
  133. package/dist/utils/convention-sync.test.d.ts +1 -0
  134. package/dist/utils/convention-sync.test.js +75 -0
  135. package/dist/utils/convention-sync.test.js.map +1 -0
  136. package/dist/utils/git-worktree.d.ts +9 -0
  137. package/dist/utils/git-worktree.js +150 -0
  138. package/dist/utils/git-worktree.js.map +1 -0
  139. package/dist/utils/git-worktree.test.d.ts +1 -0
  140. package/dist/utils/git-worktree.test.js +294 -0
  141. package/dist/utils/git-worktree.test.js.map +1 -0
  142. package/dist/utils/origin-issue-safeguard.d.ts +16 -0
  143. package/dist/utils/origin-issue-safeguard.js +198 -0
  144. package/dist/utils/origin-issue-safeguard.js.map +1 -0
  145. package/dist/utils/runner-cleanup.d.ts +10 -0
  146. package/dist/utils/runner-cleanup.js +59 -0
  147. package/dist/utils/runner-cleanup.js.map +1 -0
  148. package/dist/utils/runner-cleanup.test.d.ts +1 -0
  149. package/dist/utils/runner-cleanup.test.js +93 -0
  150. package/dist/utils/runner-cleanup.test.js.map +1 -0
  151. package/dist/utils/runner-history.d.ts +6 -0
  152. package/dist/utils/runner-history.js +13 -0
  153. package/dist/utils/runner-history.js.map +1 -0
  154. package/dist/utils/runner-history.test.d.ts +1 -0
  155. package/dist/utils/runner-history.test.js +25 -0
  156. package/dist/utils/runner-history.test.js.map +1 -0
  157. package/package.json +50 -0
  158. package/readme.md +188 -0
@@ -0,0 +1,382 @@
1
+ import assert from "node:assert/strict";
2
+ import * as fsModule from "node:fs";
3
+ import os from "node:os";
4
+ import path from "node:path";
5
+ import test, { mock } from "node:test";
6
+ import { logger } from "./logger.js";
7
+ import { startPolling } from "./poller.js";
8
+ const config = {
9
+ daemonToken: "daemon-token",
10
+ apiUrl: "https://api.example",
11
+ pollingIntervalMs: 5000,
12
+ timeoutMs: 1000,
13
+ idleTimeoutMs: 500,
14
+ runnerCmd: "opencode"
15
+ };
16
+ const trigger = {
17
+ id: "trigger-1",
18
+ prompt: "hello",
19
+ runnerType: "CODEX",
20
+ model: "o4-mini",
21
+ status: "PENDING",
22
+ agentConfigId: "agent-1",
23
+ startedAt: null,
24
+ errorMessage: null,
25
+ worktreeError: null,
26
+ lastHeartbeatAt: null,
27
+ conversationId: null,
28
+ parentTriggerId: null,
29
+ createdByMemberId: "member-1",
30
+ planMode: false,
31
+ targetDaemonId: null,
32
+ claimedByDaemonId: null,
33
+ useWorktree: false,
34
+ baseBranch: null,
35
+ worktreeId: null,
36
+ worktreeStatus: null,
37
+ createdAt: "2026-01-01T00:00:00.000Z",
38
+ updatedAt: "2026-01-01T00:00:00.000Z"
39
+ };
40
+ test.afterEach(() => {
41
+ mock.restoreAll();
42
+ });
43
+ test("startPolling handles a claimed trigger, registers auth paths, and runs scheduled cleanup", async () => {
44
+ const infos = [];
45
+ mock.method(logger, "info", (message, meta) => {
46
+ infos.push({ message, meta });
47
+ });
48
+ const signals = new Map();
49
+ const intervalCallbacks = [];
50
+ const cleanupCalls = [];
51
+ const handledTriggers = [];
52
+ const savedAuthPaths = [];
53
+ let nowValue = 0;
54
+ const pending = [trigger, null];
55
+ const client = {
56
+ fetchPendingTrigger: async () => pending.shift() ?? null,
57
+ claimTrigger: async () => ({ ok: true, conflict: false }),
58
+ fetchOrphanedCancelRequested: async () => [],
59
+ updateTriggerStatus: async () => undefined,
60
+ fetchPendingWorktreeRemovals: async () => [],
61
+ reportWorktreeStatus: async () => undefined
62
+ };
63
+ const createHandler = (onAuthPathDiscovered) => {
64
+ onAuthPathDiscovered("/auth/path");
65
+ return async (value) => {
66
+ handledTriggers.push(value.id);
67
+ };
68
+ };
69
+ let keepAliveResolve = null;
70
+ const pollingPromise = startPolling(config, createHandler, {
71
+ createClient: () => client,
72
+ runCleanup: async (authPath) => {
73
+ cleanupCalls.push(authPath);
74
+ },
75
+ setInterval: ((callback) => {
76
+ intervalCallbacks.push(callback);
77
+ return { ref() { }, unref() { } };
78
+ }),
79
+ clearInterval: (() => undefined),
80
+ processOn: ((event, listener) => {
81
+ signals.set(event, listener);
82
+ }),
83
+ processExit: (() => {
84
+ throw new Error("should not exit");
85
+ }),
86
+ now: () => nowValue,
87
+ loadAuthPaths: () => [],
88
+ saveAuthPath: (authPath) => {
89
+ savedAuthPaths.push(authPath);
90
+ return "/tmp/auth-paths.json";
91
+ },
92
+ keepAlive: () => new Promise((resolve) => {
93
+ keepAliveResolve = resolve;
94
+ })
95
+ });
96
+ await new Promise((resolve) => setImmediate(resolve));
97
+ assert.deepEqual(handledTriggers, ["trigger-1"]);
98
+ assert.deepEqual(cleanupCalls, []);
99
+ assert.equal(intervalCallbacks.length, 1);
100
+ nowValue = 24 * 60 * 60 * 1000 + 1;
101
+ await intervalCallbacks[0]?.();
102
+ await new Promise((resolve) => setImmediate(resolve));
103
+ assert.deepEqual(cleanupCalls, ["/auth/path"]);
104
+ assert.deepEqual(savedAuthPaths, ["/auth/path"]);
105
+ assert.equal(signals.has("SIGINT"), true);
106
+ assert.equal(signals.has("SIGTERM"), true);
107
+ assert.equal(infos.some((entry) => entry.message === "Daemon polling started"), true);
108
+ const resolveKeepAlive = keepAliveResolve ?? (() => {
109
+ throw new Error("keepAlive resolver was not registered");
110
+ });
111
+ resolveKeepAlive();
112
+ await pollingPromise;
113
+ });
114
+ test("startPolling logs conflicts and suppresses overlapping polling cycles", async () => {
115
+ const infos = [];
116
+ mock.method(logger, "info", (message, meta) => {
117
+ infos.push({ message, meta });
118
+ });
119
+ let releaseFetch = null;
120
+ const client = {
121
+ fetchPendingTrigger: async () => await new Promise((resolve) => {
122
+ releaseFetch = () => resolve(trigger);
123
+ }),
124
+ claimTrigger: async () => ({ ok: false, conflict: true }),
125
+ fetchOrphanedCancelRequested: async () => [],
126
+ updateTriggerStatus: async () => undefined,
127
+ fetchPendingWorktreeRemovals: async () => [],
128
+ reportWorktreeStatus: async () => undefined
129
+ };
130
+ const intervalCallbacks = [];
131
+ let keepAliveResolve = null;
132
+ const pollingPromise = startPolling(config, () => async () => {
133
+ throw new Error("handler should not run");
134
+ }, {
135
+ createClient: () => client,
136
+ runCleanup: async () => undefined,
137
+ setInterval: ((callback) => {
138
+ intervalCallbacks.push(callback);
139
+ return {};
140
+ }),
141
+ clearInterval: (() => undefined),
142
+ processOn: (() => undefined),
143
+ processExit: (() => {
144
+ throw new Error("should not exit");
145
+ }),
146
+ now: () => 0,
147
+ loadAuthPaths: () => [],
148
+ saveAuthPath: () => "/tmp/auth-paths.json",
149
+ keepAlive: () => new Promise((resolve) => {
150
+ keepAliveResolve = resolve;
151
+ })
152
+ });
153
+ await new Promise((resolve) => setImmediate(resolve));
154
+ await intervalCallbacks[0]?.();
155
+ const releasePendingFetch = releaseFetch ?? (() => {
156
+ throw new Error("fetch release was not registered");
157
+ });
158
+ releasePendingFetch();
159
+ await new Promise((resolve) => setImmediate(resolve));
160
+ assert.equal(infos.some((entry) => entry.message === "Trigger already claimed by another daemon"), true);
161
+ const resolveKeepAlive = keepAliveResolve ?? (() => {
162
+ throw new Error("keepAlive resolver was not registered");
163
+ });
164
+ resolveKeepAlive();
165
+ await pollingPromise;
166
+ });
167
+ test("startPolling clears the interval and exits on shutdown signals", async () => {
168
+ const signals = new Map();
169
+ const cleared = [];
170
+ let keepAliveResolve = null;
171
+ let exitCode = null;
172
+ const intervalHandle = {};
173
+ const pollingPromise = startPolling(config, () => async () => undefined, {
174
+ createClient: () => ({
175
+ fetchPendingTrigger: async () => null,
176
+ claimTrigger: async () => ({ ok: true, conflict: false }),
177
+ fetchOrphanedCancelRequested: async () => [],
178
+ updateTriggerStatus: async () => undefined,
179
+ fetchPendingWorktreeRemovals: async () => [],
180
+ reportWorktreeStatus: async () => undefined
181
+ }),
182
+ runCleanup: async () => undefined,
183
+ setInterval: (() => intervalHandle),
184
+ clearInterval: ((handle) => {
185
+ cleared.push(handle);
186
+ }),
187
+ processOn: ((event, listener) => {
188
+ signals.set(event, listener);
189
+ }),
190
+ processExit: ((code) => {
191
+ exitCode = code;
192
+ return undefined;
193
+ }),
194
+ now: () => 0,
195
+ loadAuthPaths: () => [],
196
+ saveAuthPath: () => "/tmp/auth-paths.json",
197
+ keepAlive: () => new Promise((resolve) => {
198
+ keepAliveResolve = resolve;
199
+ })
200
+ }).catch((error) => {
201
+ if (error.message !== "exit") {
202
+ throw error;
203
+ }
204
+ });
205
+ await new Promise((resolve) => setImmediate(resolve));
206
+ assert.ok(signals.get("SIGTERM"));
207
+ const sigterm = signals.get("SIGTERM");
208
+ assert.ok(sigterm);
209
+ sigterm();
210
+ assert.equal(exitCode, 0);
211
+ assert.deepEqual(cleared, [intervalHandle]);
212
+ const resolveKeepAlive = keepAliveResolve ?? (() => {
213
+ throw new Error("keepAlive resolver was not registered");
214
+ });
215
+ resolveKeepAlive();
216
+ await pollingPromise;
217
+ });
218
+ test("startPolling restores persisted auth paths for worktree removals after restart", async () => {
219
+ const removedWorktrees = [];
220
+ const reportedStatuses = [];
221
+ const tempRoot = fsModule.mkdtempSync(path.join(os.tmpdir(), "agentrunner-poller-"));
222
+ const authPath = path.join(tempRoot, "path");
223
+ const worktreePath = path.join(tempRoot, ".path-worktrees", "wt-worktree-1");
224
+ fsModule.mkdirSync(authPath, { recursive: true });
225
+ fsModule.mkdirSync(worktreePath, { recursive: true });
226
+ const worktreeRemovalTrigger = {
227
+ ...trigger,
228
+ id: "trigger-remove",
229
+ useWorktree: true,
230
+ worktreeId: "worktree-1",
231
+ worktreeStatus: "REMOVE_REQUESTED"
232
+ };
233
+ let keepAliveResolve = null;
234
+ const pollingPromise = startPolling(config, () => async () => undefined, {
235
+ createClient: () => ({
236
+ fetchPendingTrigger: async () => null,
237
+ claimTrigger: async () => ({ ok: true, conflict: false }),
238
+ fetchOrphanedCancelRequested: async () => [],
239
+ updateTriggerStatus: async () => undefined,
240
+ fetchPendingWorktreeRemovals: async () => [worktreeRemovalTrigger],
241
+ reportWorktreeStatus: async (triggerId, status, worktreeError) => {
242
+ reportedStatuses.push({ triggerId, status, worktreeError });
243
+ }
244
+ }),
245
+ runCleanup: async () => undefined,
246
+ removeWorktree: (authPath, worktreePath, worktreeId) => {
247
+ removedWorktrees.push({ authPath, worktreePath, worktreeId });
248
+ },
249
+ setInterval: (() => ({ ref() { }, unref() { } })),
250
+ clearInterval: (() => undefined),
251
+ processOn: (() => undefined),
252
+ processExit: (() => {
253
+ throw new Error("should not exit");
254
+ }),
255
+ now: () => 0,
256
+ loadAuthPaths: () => [authPath],
257
+ saveAuthPath: () => "/tmp/auth-paths.json",
258
+ keepAlive: () => new Promise((resolve) => {
259
+ keepAliveResolve = resolve;
260
+ })
261
+ });
262
+ await new Promise((resolve) => setImmediate(resolve));
263
+ assert.deepEqual(removedWorktrees, [{
264
+ authPath,
265
+ worktreePath,
266
+ worktreeId: "worktree-1"
267
+ }]);
268
+ assert.deepEqual(reportedStatuses, [{ triggerId: "trigger-remove", status: "REMOVED", worktreeError: undefined }]);
269
+ const resolveKeepAlive = keepAliveResolve ?? (() => {
270
+ throw new Error("keepAlive resolver was not registered");
271
+ });
272
+ resolveKeepAlive();
273
+ await pollingPromise;
274
+ fsModule.rmSync(tempRoot, { recursive: true, force: true });
275
+ });
276
+ test("startPolling reports FAILED when no persisted auth path matches the worktree", async () => {
277
+ const reportedStatuses = [];
278
+ const worktreeRemovalTrigger = {
279
+ ...trigger,
280
+ id: "trigger-remove-missing",
281
+ useWorktree: true,
282
+ worktreeId: "worktree-missing",
283
+ worktreeStatus: "REMOVE_REQUESTED"
284
+ };
285
+ let keepAliveResolve = null;
286
+ const pollingPromise = startPolling(config, () => async () => undefined, {
287
+ createClient: () => ({
288
+ fetchPendingTrigger: async () => null,
289
+ claimTrigger: async () => ({ ok: true, conflict: false }),
290
+ fetchOrphanedCancelRequested: async () => [],
291
+ updateTriggerStatus: async () => undefined,
292
+ fetchPendingWorktreeRemovals: async () => [worktreeRemovalTrigger],
293
+ reportWorktreeStatus: async (triggerId, status, worktreeError) => {
294
+ reportedStatuses.push({ triggerId, status, worktreeError });
295
+ }
296
+ }),
297
+ runCleanup: async () => undefined,
298
+ removeWorktree: () => {
299
+ throw new Error("removeWorktree should not be called");
300
+ },
301
+ setInterval: (() => ({ ref() { }, unref() { } })),
302
+ clearInterval: (() => undefined),
303
+ processOn: (() => undefined),
304
+ processExit: (() => {
305
+ throw new Error("should not exit");
306
+ }),
307
+ now: () => 0,
308
+ loadAuthPaths: () => ["/persisted/auth/path"],
309
+ saveAuthPath: () => "/tmp/auth-paths.json",
310
+ keepAlive: () => new Promise((resolve) => {
311
+ keepAliveResolve = resolve;
312
+ })
313
+ });
314
+ await new Promise((resolve) => setImmediate(resolve));
315
+ assert.deepEqual(reportedStatuses, [{
316
+ triggerId: "trigger-remove-missing",
317
+ status: "FAILED",
318
+ worktreeError: "Failed to remove RunnerBox: worktree path was not found for worktree-missing"
319
+ }]);
320
+ const resolveKeepAlive = keepAliveResolve ?? (() => {
321
+ throw new Error("keepAlive resolver was not registered");
322
+ });
323
+ resolveKeepAlive();
324
+ await pollingPromise;
325
+ });
326
+ test("startPolling reports FAILED when worktree removal throws after matching a path", async () => {
327
+ const reportedStatuses = [];
328
+ const tempRoot = fsModule.mkdtempSync(path.join(os.tmpdir(), "agentrunner-poller-"));
329
+ const authPath = path.join(tempRoot, "path");
330
+ const worktreePath = path.join(tempRoot, ".path-worktrees", "wt-worktree-failed");
331
+ fsModule.mkdirSync(authPath, { recursive: true });
332
+ fsModule.mkdirSync(worktreePath, { recursive: true });
333
+ const worktreeRemovalTrigger = {
334
+ ...trigger,
335
+ id: "trigger-remove-failed",
336
+ useWorktree: true,
337
+ worktreeId: "worktree-failed",
338
+ worktreeStatus: "REMOVE_REQUESTED"
339
+ };
340
+ let keepAliveResolve = null;
341
+ const pollingPromise = startPolling(config, () => async () => undefined, {
342
+ createClient: () => ({
343
+ fetchPendingTrigger: async () => null,
344
+ claimTrigger: async () => ({ ok: true, conflict: false }),
345
+ fetchOrphanedCancelRequested: async () => [],
346
+ updateTriggerStatus: async () => undefined,
347
+ fetchPendingWorktreeRemovals: async () => [worktreeRemovalTrigger],
348
+ reportWorktreeStatus: async (triggerId, status, worktreeError) => {
349
+ reportedStatuses.push({ triggerId, status, worktreeError });
350
+ }
351
+ }),
352
+ runCleanup: async () => undefined,
353
+ removeWorktree: () => {
354
+ throw new Error("permission denied");
355
+ },
356
+ setInterval: (() => ({ ref() { }, unref() { } })),
357
+ clearInterval: (() => undefined),
358
+ processOn: (() => undefined),
359
+ processExit: (() => {
360
+ throw new Error("should not exit");
361
+ }),
362
+ now: () => 0,
363
+ loadAuthPaths: () => [authPath],
364
+ saveAuthPath: () => "/tmp/auth-paths.json",
365
+ keepAlive: () => new Promise((resolve) => {
366
+ keepAliveResolve = resolve;
367
+ })
368
+ });
369
+ await new Promise((resolve) => setImmediate(resolve));
370
+ assert.deepEqual(reportedStatuses, [{
371
+ triggerId: "trigger-remove-failed",
372
+ status: "FAILED",
373
+ worktreeError: "permission denied"
374
+ }]);
375
+ const resolveKeepAlive = keepAliveResolve ?? (() => {
376
+ throw new Error("keepAlive resolver was not registered");
377
+ });
378
+ resolveKeepAlive();
379
+ await pollingPromise;
380
+ fsModule.rmSync(tempRoot, { recursive: true, force: true });
381
+ });
382
+ //# sourceMappingURL=poller.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"poller.test.js","sourceRoot":"","sources":["../src/poller.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import type { Runner, RunnerOptions, RunResult } from "./types.js";
2
+ export declare const buildAmpExecArgs: (prompt: string, model?: string | null) => string[];
3
+ export declare class AmpCodeRunner implements Runner {
4
+ run(opts: RunnerOptions): Promise<RunResult>;
5
+ }