@agentteams/runner 0.0.84-dev.208 → 0.0.85
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.
- package/dist/api-client.d.ts +2 -2
- package/dist/api-client.js +66 -66
- package/dist/api-client.js.map +1 -1
- package/dist/api-client.test.js +54 -63
- package/dist/api-client.test.js.map +1 -1
- package/dist/autostart.js +81 -81
- package/dist/autostart.js.map +1 -1
- package/dist/autostart.test.js +35 -35
- package/dist/autostart.test.js.map +1 -1
- package/dist/commands/cleanup.js +4 -4
- package/dist/commands/init.js +14 -14
- package/dist/commands/restart.js +3 -3
- package/dist/commands/start.js +10 -10
- package/dist/commands/start.js.map +1 -1
- package/dist/commands/status.js +7 -7
- package/dist/commands/stop.js +7 -7
- package/dist/commands/uninstall.js +6 -6
- package/dist/commands/update.d.ts +4 -4
- package/dist/commands/update.js +22 -20
- package/dist/commands/update.js.map +1 -1
- package/dist/commands/update.test.js +42 -38
- package/dist/commands/update.test.js.map +1 -1
- package/dist/config.d.ts +1 -1
- package/dist/config.js +12 -12
- package/dist/config.test.js +61 -61
- package/dist/config.test.js.map +1 -1
- package/dist/daemon-control.d.ts +5 -5
- package/dist/daemon-control.js +22 -21
- package/dist/daemon-control.js.map +1 -1
- package/dist/daemon-control.test.js +29 -29
- package/dist/executable.d.ts +3 -3
- package/dist/executable.js +49 -46
- package/dist/executable.js.map +1 -1
- package/dist/executable.test.js +62 -62
- package/dist/executable.test.js.map +1 -1
- package/dist/handlers/trigger-handler.d.ts +6 -6
- package/dist/handlers/trigger-handler.js +124 -118
- package/dist/handlers/trigger-handler.js.map +1 -1
- package/dist/handlers/trigger-handler.test.js +365 -373
- package/dist/handlers/trigger-handler.test.js.map +1 -1
- package/dist/index.js +25 -25
- package/dist/logger.js +1 -1
- package/dist/pid.js +6 -6
- package/dist/poller.d.ts +7 -7
- package/dist/poller.js +53 -54
- package/dist/poller.js.map +1 -1
- package/dist/poller.test.js +181 -209
- package/dist/poller.test.js.map +1 -1
- package/dist/runners/amp.d.ts +1 -1
- package/dist/runners/amp.js +81 -74
- package/dist/runners/amp.js.map +1 -1
- package/dist/runners/antigravity.d.ts +3 -3
- package/dist/runners/antigravity.js +127 -116
- package/dist/runners/antigravity.js.map +1 -1
- package/dist/runners/antigravity.replay.test.js +25 -25
- package/dist/runners/antigravity.replay.test.js.map +1 -1
- package/dist/runners/antigravity.test.js +98 -98
- package/dist/runners/antigravity.test.js.map +1 -1
- package/dist/runners/claude-code.d.ts +1 -1
- package/dist/runners/claude-code.js +84 -85
- package/dist/runners/claude-code.js.map +1 -1
- package/dist/runners/claude-code.test.js +40 -37
- package/dist/runners/claude-code.test.js.map +1 -1
- package/dist/runners/codex.d.ts +1 -1
- package/dist/runners/codex.js +96 -87
- package/dist/runners/codex.js.map +1 -1
- package/dist/runners/codex.test.js +68 -68
- package/dist/runners/codex.test.js.map +1 -1
- package/dist/runners/index.d.ts +1 -1
- package/dist/runners/index.js +10 -10
- package/dist/runners/index.test.js +16 -16
- package/dist/runners/log-reporter.d.ts +2 -2
- package/dist/runners/log-reporter.js +10 -10
- package/dist/runners/log-reporter.test.js +70 -70
- package/dist/runners/log-reporter.test.js.map +1 -1
- package/dist/runners/opencode.d.ts +1 -1
- package/dist/runners/opencode.js +75 -68
- package/dist/runners/opencode.js.map +1 -1
- package/dist/runners/process-control.d.ts +1 -1
- package/dist/runners/process-control.js +11 -13
- package/dist/runners/process-control.js.map +1 -1
- package/dist/runners/stream-json-parser.d.ts +1 -1
- package/dist/runners/stream-json-parser.js +67 -70
- package/dist/runners/stream-json-parser.js.map +1 -1
- package/dist/runners/stream-json-parser.replay.test.js +17 -17
- package/dist/runners/stream-json-parser.replay.test.js.map +1 -1
- package/dist/runners/stream-json-parser.test.js +78 -76
- package/dist/runners/stream-json-parser.test.js.map +1 -1
- package/dist/types.d.ts +4 -4
- package/dist/utils/auth-path-store.js +7 -7
- package/dist/utils/auth-path-store.test.js +29 -24
- package/dist/utils/auth-path-store.test.js.map +1 -1
- package/dist/utils/auto-update.d.ts +4 -4
- package/dist/utils/auto-update.js +28 -30
- package/dist/utils/auto-update.js.map +1 -1
- package/dist/utils/auto-update.test.js +30 -30
- package/dist/utils/convention-evaluator.d.ts +1 -1
- package/dist/utils/convention-evaluator.js +21 -22
- package/dist/utils/convention-evaluator.js.map +1 -1
- package/dist/utils/convention-evaluator.test.js +110 -120
- package/dist/utils/convention-evaluator.test.js.map +1 -1
- package/dist/utils/convention-sync.d.ts +3 -3
- package/dist/utils/convention-sync.js +10 -10
- package/dist/utils/convention-sync.test.js +25 -39
- package/dist/utils/convention-sync.test.js.map +1 -1
- package/dist/utils/git-worktree.js +18 -20
- package/dist/utils/git-worktree.js.map +1 -1
- package/dist/utils/git-worktree.test.js +98 -98
- package/dist/utils/git-worktree.test.js.map +1 -1
- package/dist/utils/origin-issue-safeguard.js +30 -35
- package/dist/utils/origin-issue-safeguard.js.map +1 -1
- package/dist/utils/power-save-blocker.d.ts +4 -4
- package/dist/utils/power-save-blocker.js +33 -33
- package/dist/utils/power-save-blocker.test.js +37 -37
- package/dist/utils/power-save-blocker.test.js.map +1 -1
- package/dist/utils/runner-cleanup.d.ts +3 -3
- package/dist/utils/runner-cleanup.js +13 -13
- package/dist/utils/runner-cleanup.test.js +35 -35
- package/dist/utils/runner-history.js +3 -3
- package/dist/utils/runner-history.test.js +17 -17
- package/package.json +1 -4
- package/readme.md +10 -10
package/dist/api-client.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { ClaimResult, DaemonInfo, DaemonTrigger, InjectedConventionRecord, PendingResponse, TriggerFinalStatus, TriggerLogInput, TriggerRuntime } from
|
|
1
|
+
import type { ClaimResult, DaemonInfo, DaemonTrigger, InjectedConventionRecord, PendingResponse, TriggerFinalStatus, TriggerLogInput, TriggerRuntime } from "./types.js";
|
|
2
2
|
export declare class DaemonApiClient {
|
|
3
3
|
private readonly apiUrl;
|
|
4
4
|
private readonly daemonToken;
|
|
@@ -21,5 +21,5 @@ export declare class DaemonApiClient {
|
|
|
21
21
|
}): Promise<void>;
|
|
22
22
|
recordInjectedConventions(triggerId: string, items: InjectedConventionRecord[]): Promise<void>;
|
|
23
23
|
ackRestartRequest(): Promise<void>;
|
|
24
|
-
notifyUpdate(version: string, pkg?:
|
|
24
|
+
notifyUpdate(version: string, pkg?: "cli" | "runner"): Promise<void>;
|
|
25
25
|
}
|
package/dist/api-client.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { createRequire } from
|
|
2
|
-
import { logger } from
|
|
1
|
+
import { createRequire } from "node:module";
|
|
2
|
+
import { logger } from "./logger.js";
|
|
3
3
|
const require = createRequire(import.meta.url);
|
|
4
|
-
const packageJson = require(
|
|
5
|
-
const runnerVersion = packageJson.version ??
|
|
4
|
+
const packageJson = require("../package.json");
|
|
5
|
+
const runnerVersion = packageJson.version ?? "0.0.0";
|
|
6
6
|
const MAX_NETWORK_RETRIES = 3;
|
|
7
7
|
const BASE_BACKOFF_MS = 1000;
|
|
8
8
|
const wait = (ms) => new Promise((resolve) => setTimeout(resolve, ms));
|
|
@@ -10,14 +10,14 @@ const isNetworkError = (error) => {
|
|
|
10
10
|
return error instanceof Error;
|
|
11
11
|
};
|
|
12
12
|
const detectOsType = () => {
|
|
13
|
-
if (process.platform ===
|
|
14
|
-
return
|
|
13
|
+
if (process.platform === "darwin") {
|
|
14
|
+
return "MACOS";
|
|
15
15
|
}
|
|
16
|
-
if (process.platform ===
|
|
17
|
-
return
|
|
16
|
+
if (process.platform === "linux") {
|
|
17
|
+
return "LINUX";
|
|
18
18
|
}
|
|
19
|
-
if (process.platform ===
|
|
20
|
-
return
|
|
19
|
+
if (process.platform === "win32") {
|
|
20
|
+
return "WINDOWS";
|
|
21
21
|
}
|
|
22
22
|
return undefined;
|
|
23
23
|
};
|
|
@@ -30,13 +30,13 @@ export class DaemonApiClient {
|
|
|
30
30
|
}
|
|
31
31
|
daemonHeaders(options) {
|
|
32
32
|
const headers = {
|
|
33
|
-
|
|
34
|
-
|
|
33
|
+
"x-daemon-token": this.daemonToken,
|
|
34
|
+
"x-runner-version": runnerVersion
|
|
35
35
|
};
|
|
36
36
|
if (options?.includeOsType) {
|
|
37
37
|
const osType = detectOsType();
|
|
38
38
|
if (osType) {
|
|
39
|
-
headers[
|
|
39
|
+
headers["x-os-type"] = osType;
|
|
40
40
|
}
|
|
41
41
|
}
|
|
42
42
|
return headers;
|
|
@@ -52,43 +52,43 @@ export class DaemonApiClient {
|
|
|
52
52
|
throw error;
|
|
53
53
|
}
|
|
54
54
|
const retryNumber = attempt + 1;
|
|
55
|
-
const delayMs = BASE_BACKOFF_MS * 2 ** attempt;
|
|
55
|
+
const delayMs = BASE_BACKOFF_MS * (2 ** attempt);
|
|
56
56
|
logger.warn(`Retry ${retryNumber}/${MAX_NETWORK_RETRIES}: network error while requesting daemon API`, {
|
|
57
57
|
path,
|
|
58
58
|
delayMs,
|
|
59
|
-
error: error instanceof Error ? error.message : String(error)
|
|
59
|
+
error: error instanceof Error ? error.message : String(error)
|
|
60
60
|
});
|
|
61
61
|
await wait(delayMs);
|
|
62
62
|
}
|
|
63
63
|
}
|
|
64
|
-
throw new Error(
|
|
64
|
+
throw new Error("Unexpected retry loop exit");
|
|
65
65
|
}
|
|
66
66
|
async validateDaemonToken() {
|
|
67
|
-
const response = await this.requestWithRetry(
|
|
68
|
-
method:
|
|
69
|
-
headers: this.daemonHeaders({ includeOsType: true })
|
|
67
|
+
const response = await this.requestWithRetry("/api/daemons/me", {
|
|
68
|
+
method: "GET",
|
|
69
|
+
headers: this.daemonHeaders({ includeOsType: true })
|
|
70
70
|
});
|
|
71
71
|
if (!response.ok) {
|
|
72
72
|
throw new Error(`Daemon token validation failed (${response.status})`);
|
|
73
73
|
}
|
|
74
|
-
const payload =
|
|
74
|
+
const payload = await response.json();
|
|
75
75
|
return payload.data;
|
|
76
76
|
}
|
|
77
77
|
async fetchPendingTrigger() {
|
|
78
|
-
const response = await this.requestWithRetry(
|
|
79
|
-
method:
|
|
80
|
-
headers: this.daemonHeaders()
|
|
78
|
+
const response = await this.requestWithRetry("/api/daemon-triggers/pending", {
|
|
79
|
+
method: "GET",
|
|
80
|
+
headers: this.daemonHeaders()
|
|
81
81
|
});
|
|
82
82
|
if (!response.ok) {
|
|
83
83
|
throw new Error(`Failed to fetch pending trigger (${response.status})`);
|
|
84
84
|
}
|
|
85
|
-
const payload =
|
|
85
|
+
const payload = await response.json();
|
|
86
86
|
return payload;
|
|
87
87
|
}
|
|
88
88
|
async claimTrigger(triggerId) {
|
|
89
89
|
const response = await this.requestWithRetry(`/api/daemon-triggers/${triggerId}/claim`, {
|
|
90
|
-
method:
|
|
91
|
-
headers: this.daemonHeaders()
|
|
90
|
+
method: "PATCH",
|
|
91
|
+
headers: this.daemonHeaders()
|
|
92
92
|
});
|
|
93
93
|
if (response.status === 409) {
|
|
94
94
|
return { ok: false, conflict: true };
|
|
@@ -100,15 +100,15 @@ export class DaemonApiClient {
|
|
|
100
100
|
}
|
|
101
101
|
async updateTriggerStatus(triggerId, status, errorMessage) {
|
|
102
102
|
const response = await this.requestWithRetry(`/api/daemon-triggers/${triggerId}/status`, {
|
|
103
|
-
method:
|
|
103
|
+
method: "PATCH",
|
|
104
104
|
headers: {
|
|
105
105
|
...this.daemonHeaders(),
|
|
106
|
-
|
|
106
|
+
"Content-Type": "application/json"
|
|
107
107
|
},
|
|
108
108
|
body: JSON.stringify({
|
|
109
109
|
status,
|
|
110
|
-
...(errorMessage ? { errorMessage } : {})
|
|
111
|
-
})
|
|
110
|
+
...(errorMessage ? { errorMessage } : {})
|
|
111
|
+
})
|
|
112
112
|
});
|
|
113
113
|
if (!response.ok) {
|
|
114
114
|
throw new Error(`Failed to update trigger status (${response.status})`);
|
|
@@ -116,87 +116,87 @@ export class DaemonApiClient {
|
|
|
116
116
|
}
|
|
117
117
|
async updateTriggerHistory(triggerId, historyMarkdown) {
|
|
118
118
|
const response = await this.requestWithRetry(`/api/daemon-triggers/${triggerId}/history`, {
|
|
119
|
-
method:
|
|
119
|
+
method: "PATCH",
|
|
120
120
|
headers: {
|
|
121
121
|
...this.daemonHeaders(),
|
|
122
|
-
|
|
122
|
+
"Content-Type": "application/json"
|
|
123
123
|
},
|
|
124
124
|
body: JSON.stringify({
|
|
125
|
-
historyMarkdown
|
|
126
|
-
})
|
|
125
|
+
historyMarkdown
|
|
126
|
+
})
|
|
127
127
|
});
|
|
128
128
|
if (!response.ok) {
|
|
129
129
|
throw new Error(`Failed to update trigger history (${response.status})`);
|
|
130
130
|
}
|
|
131
131
|
}
|
|
132
132
|
async fetchOrphanedCancelRequested() {
|
|
133
|
-
const response = await this.requestWithRetry(
|
|
134
|
-
method:
|
|
135
|
-
headers: this.daemonHeaders()
|
|
133
|
+
const response = await this.requestWithRetry("/api/daemon-triggers/orphaned-cancel-requested", {
|
|
134
|
+
method: "GET",
|
|
135
|
+
headers: this.daemonHeaders()
|
|
136
136
|
});
|
|
137
137
|
if (!response.ok) {
|
|
138
138
|
throw new Error(`Failed to fetch orphaned cancel-requested triggers (${response.status})`);
|
|
139
139
|
}
|
|
140
|
-
const payload =
|
|
140
|
+
const payload = await response.json();
|
|
141
141
|
return payload.data;
|
|
142
142
|
}
|
|
143
143
|
async isTriggerCancelRequested(triggerId) {
|
|
144
144
|
const response = await this.requestWithRetry(`/api/daemon-triggers/cancel-status/${triggerId}`, {
|
|
145
|
-
method:
|
|
146
|
-
headers: this.daemonHeaders()
|
|
145
|
+
method: "GET",
|
|
146
|
+
headers: this.daemonHeaders()
|
|
147
147
|
});
|
|
148
148
|
if (!response.ok) {
|
|
149
149
|
throw new Error(`Failed to fetch trigger cancel status (${response.status})`);
|
|
150
150
|
}
|
|
151
|
-
const payload =
|
|
151
|
+
const payload = await response.json();
|
|
152
152
|
return payload.data.cancelRequested;
|
|
153
153
|
}
|
|
154
154
|
async fetchTriggerRuntime(triggerId) {
|
|
155
155
|
const response = await this.requestWithRetry(`/api/daemon-triggers/${triggerId}/runtime`, {
|
|
156
|
-
method:
|
|
157
|
-
headers: this.daemonHeaders()
|
|
156
|
+
method: "GET",
|
|
157
|
+
headers: this.daemonHeaders()
|
|
158
158
|
});
|
|
159
159
|
if (!response.ok) {
|
|
160
160
|
throw new Error(`Failed to fetch trigger runtime (${response.status})`);
|
|
161
161
|
}
|
|
162
|
-
const payload =
|
|
162
|
+
const payload = await response.json();
|
|
163
163
|
return payload.data;
|
|
164
164
|
}
|
|
165
165
|
async reportWorktreeStatus(triggerId, status, worktreeError) {
|
|
166
166
|
const response = await this.requestWithRetry(`/api/daemon-triggers/${triggerId}/worktree/status`, {
|
|
167
|
-
method:
|
|
167
|
+
method: "PATCH",
|
|
168
168
|
headers: {
|
|
169
169
|
...this.daemonHeaders(),
|
|
170
|
-
|
|
170
|
+
"Content-Type": "application/json"
|
|
171
171
|
},
|
|
172
172
|
body: JSON.stringify({
|
|
173
173
|
worktreeStatus: status,
|
|
174
|
-
...(worktreeError ? { worktreeError } : {})
|
|
175
|
-
})
|
|
174
|
+
...(worktreeError ? { worktreeError } : {})
|
|
175
|
+
})
|
|
176
176
|
});
|
|
177
177
|
if (!response.ok) {
|
|
178
178
|
throw new Error(`Failed to report worktree status (${response.status})`);
|
|
179
179
|
}
|
|
180
180
|
}
|
|
181
181
|
async fetchPendingWorktreeRemovals() {
|
|
182
|
-
const response = await this.requestWithRetry(
|
|
183
|
-
method:
|
|
184
|
-
headers: this.daemonHeaders()
|
|
182
|
+
const response = await this.requestWithRetry("/api/daemon-triggers/worktree/pending-removal", {
|
|
183
|
+
method: "GET",
|
|
184
|
+
headers: this.daemonHeaders()
|
|
185
185
|
});
|
|
186
186
|
if (!response.ok) {
|
|
187
187
|
throw new Error(`Failed to fetch pending worktree removals (${response.status})`);
|
|
188
188
|
}
|
|
189
|
-
const payload =
|
|
189
|
+
const payload = await response.json();
|
|
190
190
|
return payload.data;
|
|
191
191
|
}
|
|
192
192
|
async appendTriggerLogs(triggerId, input) {
|
|
193
193
|
const response = await this.requestWithRetry(`/api/daemon-triggers/${triggerId}/logs`, {
|
|
194
|
-
method:
|
|
194
|
+
method: "POST",
|
|
195
195
|
headers: {
|
|
196
196
|
...this.daemonHeaders(),
|
|
197
|
-
|
|
197
|
+
"Content-Type": "application/json"
|
|
198
198
|
},
|
|
199
|
-
body: JSON.stringify(input)
|
|
199
|
+
body: JSON.stringify(input)
|
|
200
200
|
});
|
|
201
201
|
if (!response.ok) {
|
|
202
202
|
throw new Error(`Failed to append trigger logs (${response.status})`);
|
|
@@ -206,34 +206,34 @@ export class DaemonApiClient {
|
|
|
206
206
|
if (items.length === 0)
|
|
207
207
|
return;
|
|
208
208
|
const response = await this.requestWithRetry(`/api/daemon-triggers/${triggerId}/conventions`, {
|
|
209
|
-
method:
|
|
209
|
+
method: "POST",
|
|
210
210
|
headers: {
|
|
211
211
|
...this.daemonHeaders(),
|
|
212
|
-
|
|
212
|
+
"Content-Type": "application/json"
|
|
213
213
|
},
|
|
214
|
-
body: JSON.stringify({ items })
|
|
214
|
+
body: JSON.stringify({ items })
|
|
215
215
|
});
|
|
216
216
|
if (!response.ok) {
|
|
217
217
|
throw new Error(`Failed to record injected conventions (${response.status})`);
|
|
218
218
|
}
|
|
219
219
|
}
|
|
220
220
|
async ackRestartRequest() {
|
|
221
|
-
const response = await this.requestWithRetry(
|
|
222
|
-
method:
|
|
223
|
-
headers: this.daemonHeaders()
|
|
221
|
+
const response = await this.requestWithRetry("/api/daemons/restart-ack", {
|
|
222
|
+
method: "POST",
|
|
223
|
+
headers: this.daemonHeaders()
|
|
224
224
|
});
|
|
225
225
|
if (!response.ok) {
|
|
226
226
|
throw new Error(`Failed to ack restart request (${response.status})`);
|
|
227
227
|
}
|
|
228
228
|
}
|
|
229
|
-
async notifyUpdate(version, pkg =
|
|
230
|
-
const response = await this.requestWithRetry(
|
|
231
|
-
method:
|
|
229
|
+
async notifyUpdate(version, pkg = "runner") {
|
|
230
|
+
const response = await this.requestWithRetry("/api/daemons/notify-update", {
|
|
231
|
+
method: "POST",
|
|
232
232
|
headers: {
|
|
233
233
|
...this.daemonHeaders(),
|
|
234
|
-
|
|
234
|
+
"Content-Type": "application/json"
|
|
235
235
|
},
|
|
236
|
-
body: JSON.stringify({ version, package: pkg })
|
|
236
|
+
body: JSON.stringify({ version, package: pkg })
|
|
237
237
|
});
|
|
238
238
|
if (!response.ok) {
|
|
239
239
|
throw new Error(`Failed to notify update (${response.status})`);
|
package/dist/api-client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api-client.js","sourceRoot":"","sources":["../src/api-client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAY5C,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAErC,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC/C,MAAM,WAAW,GAAG,OAAO,CAAC,iBAAiB,CAAyB,CAAC;AACvE,MAAM,aAAa,GAAG,WAAW,CAAC,OAAO,IAAI,OAAO,CAAC;AAErD,MAAM,mBAAmB,GAAG,CAAC,CAAC;AAC9B,MAAM,eAAe,GAAG,IAAI,CAAC;AAE7B,MAAM,IAAI,GAAG,CAAC,EAAU,EAAE,EAAE,CAAC,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;AAE/E,MAAM,cAAc,GAAG,CAAC,KAAc,EAAW,EAAE;IACjD,OAAO,KAAK,YAAY,KAAK,CAAC;AAChC,CAAC,CAAC;AAEF,MAAM,YAAY,GAAG,GAAuB,EAAE;IAC5C,IAAI,OAAO,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;QAClC,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;QACjC,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;QACjC,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC,CAAC;AAEF,MAAM,OAAO,eAAe;IAEP;IACA;IAFnB,YACmB,MAAc,EACd,WAAmB;QADnB,WAAM,GAAN,MAAM,CAAQ;QACd,gBAAW,GAAX,WAAW,CAAQ;IACnC,CAAC;IAEI,aAAa,CAAC,OAAqC;QACzD,MAAM,OAAO,GAA2B;YACtC,gBAAgB,EAAE,IAAI,CAAC,WAAW;YAClC,kBAAkB,EAAE,aAAa;SAClC,CAAC;QAEF,IAAI,OAAO,EAAE,aAAa,EAAE,CAAC;YAC3B,MAAM,MAAM,GAAG,YAAY,EAAE,CAAC;YAC9B,IAAI,MAAM,EAAE,CAAC;gBACX,OAAO,CAAC,WAAW,CAAC,GAAG,MAAM,CAAC;YAChC,CAAC;QACH,CAAC;QAED,OAAO,OAAO,CAAC;IACjB,CAAC;IAEO,KAAK,CAAC,gBAAgB,CAAC,IAAY,EAAE,OAAoB;QAC/D,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,MAAM,GAAG,IAAI,EAAE,CAAC;QAEpC,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,IAAI,mBAAmB,EAAE,OAAO,IAAI,CAAC,EAAE,CAAC;YACnE,IAAI,CAAC;gBACH,OAAO,MAAM,KAAK,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;YACnC,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,IAAI,OAAO,IAAI,mBAAmB,EAAE,CAAC;oBAC7D,MAAM,KAAK,CAAC;gBACd,CAAC;gBAED,MAAM,WAAW,GAAG,OAAO,GAAG,CAAC,CAAC;gBAChC,MAAM,OAAO,GAAG,eAAe,GAAG,CAAC,IAAI,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"api-client.js","sourceRoot":"","sources":["../src/api-client.ts"],"names":[],"mappings":"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"}
|
package/dist/api-client.test.js
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import assert from
|
|
2
|
-
import { createRequire } from
|
|
3
|
-
import test, { mock } from
|
|
4
|
-
import { DaemonApiClient } from
|
|
5
|
-
import { logger } from
|
|
1
|
+
import assert from "node:assert/strict";
|
|
2
|
+
import { createRequire } from "node:module";
|
|
3
|
+
import test, { mock } from "node:test";
|
|
4
|
+
import { DaemonApiClient } from "./api-client.js";
|
|
5
|
+
import { logger } from "./logger.js";
|
|
6
6
|
const require = createRequire(import.meta.url);
|
|
7
|
-
const packageJson = require(
|
|
8
|
-
const runnerVersion = packageJson.version ??
|
|
7
|
+
const packageJson = require("../package.json");
|
|
8
|
+
const runnerVersion = packageJson.version ?? "0.0.0";
|
|
9
9
|
const originalFetch = globalThis.fetch;
|
|
10
10
|
const originalSetTimeout = globalThis.setTimeout;
|
|
11
11
|
test.afterEach(() => {
|
|
@@ -13,101 +13,92 @@ test.afterEach(() => {
|
|
|
13
13
|
globalThis.setTimeout = originalSetTimeout;
|
|
14
14
|
mock.restoreAll();
|
|
15
15
|
});
|
|
16
|
-
test(
|
|
16
|
+
test("validateDaemonToken sends daemon header and returns payload data", async () => {
|
|
17
17
|
const calls = [];
|
|
18
|
-
const expectedOsType = process.platform ===
|
|
19
|
-
?
|
|
20
|
-
: process.platform ===
|
|
21
|
-
?
|
|
22
|
-
: process.platform ===
|
|
23
|
-
?
|
|
18
|
+
const expectedOsType = process.platform === "darwin"
|
|
19
|
+
? "MACOS"
|
|
20
|
+
: process.platform === "win32"
|
|
21
|
+
? "WINDOWS"
|
|
22
|
+
: process.platform === "linux"
|
|
23
|
+
? "LINUX"
|
|
24
24
|
: undefined;
|
|
25
25
|
globalThis.fetch = (async (url, options) => {
|
|
26
26
|
calls.push({ url: String(url), options });
|
|
27
|
-
return new Response(JSON.stringify({
|
|
28
|
-
data: {
|
|
29
|
-
id: 'd1',
|
|
30
|
-
memberId: 'm1',
|
|
31
|
-
label: null,
|
|
32
|
-
osType: 'MACOS',
|
|
33
|
-
runnerVersion,
|
|
34
|
-
supportedEngines: ['CODEX'],
|
|
35
|
-
lastSeenAt: null,
|
|
36
|
-
createdAt: 'c',
|
|
37
|
-
updatedAt: 'u',
|
|
38
|
-
},
|
|
39
|
-
}), {
|
|
27
|
+
return new Response(JSON.stringify({ data: { id: "d1", memberId: "m1", label: null, osType: "MACOS", runnerVersion, supportedEngines: ["CODEX"], lastSeenAt: null, createdAt: "c", updatedAt: "u" } }), {
|
|
40
28
|
status: 200,
|
|
41
|
-
headers: {
|
|
29
|
+
headers: { "Content-Type": "application/json" }
|
|
42
30
|
});
|
|
43
31
|
});
|
|
44
|
-
const client = new DaemonApiClient(
|
|
32
|
+
const client = new DaemonApiClient("https://api.example", "daemon-token");
|
|
45
33
|
const result = await client.validateDaemonToken();
|
|
46
34
|
assert.equal(calls.length, 1);
|
|
47
|
-
assert.equal(calls[0]?.url,
|
|
35
|
+
assert.equal(calls[0]?.url, "https://api.example/api/daemons/me");
|
|
48
36
|
assert.deepEqual(calls[0]?.options?.headers, expectedOsType
|
|
49
37
|
? {
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
38
|
+
"x-daemon-token": "daemon-token",
|
|
39
|
+
"x-runner-version": runnerVersion,
|
|
40
|
+
"x-os-type": expectedOsType
|
|
53
41
|
}
|
|
54
42
|
: {
|
|
55
|
-
|
|
56
|
-
|
|
43
|
+
"x-daemon-token": "daemon-token",
|
|
44
|
+
"x-runner-version": runnerVersion
|
|
57
45
|
});
|
|
58
|
-
assert.equal(result.id,
|
|
59
|
-
assert.equal(result.osType,
|
|
60
|
-
assert.deepEqual(result.supportedEngines, [
|
|
46
|
+
assert.equal(result.id, "d1");
|
|
47
|
+
assert.equal(result.osType, "MACOS");
|
|
48
|
+
assert.deepEqual(result.supportedEngines, ["CODEX"]);
|
|
61
49
|
});
|
|
62
|
-
test(
|
|
50
|
+
test("claimTrigger returns conflict=false/ok=true on success and conflict=true on 409", async () => {
|
|
63
51
|
const calls = [];
|
|
64
|
-
const responses = [
|
|
52
|
+
const responses = [
|
|
53
|
+
new Response(null, { status: 200 }),
|
|
54
|
+
new Response(null, { status: 409 })
|
|
55
|
+
];
|
|
65
56
|
globalThis.fetch = (async (_url, options) => {
|
|
66
57
|
calls.push(options);
|
|
67
58
|
return responses.shift();
|
|
68
59
|
});
|
|
69
|
-
const client = new DaemonApiClient(
|
|
70
|
-
assert.deepEqual(await client.claimTrigger(
|
|
71
|
-
assert.deepEqual(await client.claimTrigger(
|
|
72
|
-
assert.equal((calls[0]?.headers)[
|
|
60
|
+
const client = new DaemonApiClient("https://api.example", "daemon-token");
|
|
61
|
+
assert.deepEqual(await client.claimTrigger("t1"), { ok: true, conflict: false });
|
|
62
|
+
assert.deepEqual(await client.claimTrigger("t2"), { ok: false, conflict: true });
|
|
63
|
+
assert.equal((calls[0]?.headers)["x-runner-version"], runnerVersion);
|
|
73
64
|
});
|
|
74
|
-
test(
|
|
65
|
+
test("updateTriggerStatus sends JSON payload including optional error message", async () => {
|
|
75
66
|
const calls = [];
|
|
76
67
|
globalThis.fetch = (async (_url, options) => {
|
|
77
68
|
calls.push(options);
|
|
78
69
|
return new Response(null, { status: 200 });
|
|
79
70
|
});
|
|
80
|
-
const client = new DaemonApiClient(
|
|
81
|
-
await client.updateTriggerStatus(
|
|
71
|
+
const client = new DaemonApiClient("https://api.example", "daemon-token");
|
|
72
|
+
await client.updateTriggerStatus("t1", "FAILED", "boom");
|
|
82
73
|
assert.equal(calls.length, 1);
|
|
83
74
|
assert.deepEqual(JSON.parse(String(calls[0]?.body)), {
|
|
84
|
-
status:
|
|
85
|
-
errorMessage:
|
|
75
|
+
status: "FAILED",
|
|
76
|
+
errorMessage: "boom"
|
|
86
77
|
});
|
|
87
|
-
assert.equal((calls[0]?.headers)[
|
|
78
|
+
assert.equal((calls[0]?.headers)["Content-Type"], "application/json");
|
|
88
79
|
});
|
|
89
|
-
test(
|
|
80
|
+
test("reportWorktreeStatus sends JSON payload including optional worktree error", async () => {
|
|
90
81
|
const calls = [];
|
|
91
82
|
globalThis.fetch = (async (_url, options) => {
|
|
92
83
|
calls.push(options);
|
|
93
84
|
return new Response(null, { status: 200 });
|
|
94
85
|
});
|
|
95
|
-
const client = new DaemonApiClient(
|
|
96
|
-
await client.reportWorktreeStatus(
|
|
86
|
+
const client = new DaemonApiClient("https://api.example", "daemon-token");
|
|
87
|
+
await client.reportWorktreeStatus("t1", "FAILED", "worktree missing");
|
|
97
88
|
assert.equal(calls.length, 1);
|
|
98
89
|
assert.deepEqual(JSON.parse(String(calls[0]?.body)), {
|
|
99
|
-
worktreeStatus:
|
|
100
|
-
worktreeError:
|
|
90
|
+
worktreeStatus: "FAILED",
|
|
91
|
+
worktreeError: "worktree missing"
|
|
101
92
|
});
|
|
102
93
|
});
|
|
103
|
-
test(
|
|
94
|
+
test("appendTriggerLogs throws when the API responds with an error", async () => {
|
|
104
95
|
globalThis.fetch = (async () => new Response(null, { status: 500 }));
|
|
105
|
-
const client = new DaemonApiClient(
|
|
106
|
-
await assert.rejects(() => client.appendTriggerLogs(
|
|
96
|
+
const client = new DaemonApiClient("https://api.example", "daemon-token");
|
|
97
|
+
await assert.rejects(() => client.appendTriggerLogs("t1", { heartbeat: true }), /Failed to append trigger logs \(500\)/);
|
|
107
98
|
});
|
|
108
|
-
test(
|
|
99
|
+
test("requestWithRetry retries network failures with exponential backoff and warning logs", async () => {
|
|
109
100
|
const warnings = [];
|
|
110
|
-
mock.method(logger,
|
|
101
|
+
mock.method(logger, "warn", (message, meta) => {
|
|
111
102
|
warnings.push({ message, meta });
|
|
112
103
|
});
|
|
113
104
|
const delays = [];
|
|
@@ -124,15 +115,15 @@ test('requestWithRetry retries network failures with exponential backoff and war
|
|
|
124
115
|
}
|
|
125
116
|
return new Response(JSON.stringify({ data: null }), {
|
|
126
117
|
status: 200,
|
|
127
|
-
headers: {
|
|
118
|
+
headers: { "Content-Type": "application/json" }
|
|
128
119
|
});
|
|
129
120
|
});
|
|
130
|
-
const client = new DaemonApiClient(
|
|
121
|
+
const client = new DaemonApiClient("https://api.example", "daemon-token");
|
|
131
122
|
const result = await client.fetchPendingTrigger();
|
|
132
123
|
assert.deepEqual(result, { data: null });
|
|
133
124
|
assert.deepEqual(delays, [1000, 2000]);
|
|
134
125
|
assert.equal(warnings.length, 2);
|
|
135
|
-
assert.match(warnings[0]?.message ??
|
|
126
|
+
assert.match(warnings[0]?.message ?? "", /Retry 1\/3/);
|
|
136
127
|
assert.equal(warnings[1]?.meta?.delayMs, 2000);
|
|
137
128
|
});
|
|
138
129
|
//# sourceMappingURL=api-client.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api-client.test.js","sourceRoot":"","sources":["../src/api-client.test.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,oBAAoB,CAAC;AACxC,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,IAAI,EAAE,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACvC,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAErC,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC/C,MAAM,WAAW,GAAG,OAAO,CAAC,iBAAiB,CAAyB,CAAC;AACvE,MAAM,aAAa,GAAG,WAAW,CAAC,OAAO,IAAI,OAAO,CAAC;AAErD,MAAM,aAAa,GAAG,UAAU,CAAC,KAAK,CAAC;AACvC,MAAM,kBAAkB,GAAG,UAAU,CAAC,UAAU,CAAC;AAEjD,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE;IAClB,UAAU,CAAC,KAAK,GAAG,aAAa,CAAC;IACjC,UAAU,CAAC,UAAU,GAAG,kBAAkB,CAAC;IAC3C,IAAI,CAAC,UAAU,EAAE,CAAC;AACpB,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,kEAAkE,EAAE,KAAK,IAAI,EAAE;IAClF,MAAM,KAAK,GAAkD,EAAE,CAAC;IAChE,MAAM,cAAc,
|
|
1
|
+
{"version":3,"file":"api-client.test.js","sourceRoot":"","sources":["../src/api-client.test.ts"],"names":[],"mappings":"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"}
|