@agentmeshhq/agent 0.4.2 → 0.4.4
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/LICENSE +21 -0
- package/dist/__tests__/cli-command-uniqueness.test.d.ts +10 -0
- package/dist/__tests__/cli-command-uniqueness.test.js +67 -0
- package/dist/__tests__/cli-command-uniqueness.test.js.map +1 -0
- package/dist/__tests__/evicted-cleanup.test.d.ts +10 -0
- package/dist/__tests__/evicted-cleanup.test.js +459 -0
- package/dist/__tests__/evicted-cleanup.test.js.map +1 -0
- package/dist/__tests__/local.test.d.ts +1 -0
- package/dist/__tests__/local.test.js +124 -0
- package/dist/__tests__/local.test.js.map +1 -0
- package/dist/__tests__/tmux-send.test.d.ts +10 -0
- package/dist/__tests__/tmux-send.test.js +96 -0
- package/dist/__tests__/tmux-send.test.js.map +1 -0
- package/dist/cli/inbox.d.ts +5 -0
- package/dist/cli/inbox.js +123 -0
- package/dist/cli/inbox.js.map +1 -0
- package/dist/cli/index.js +263 -11
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/issue.d.ts +42 -0
- package/dist/cli/issue.js +297 -0
- package/dist/cli/issue.js.map +1 -0
- package/dist/cli/local.d.ts +27 -6
- package/dist/cli/local.js +319 -36
- package/dist/cli/local.js.map +1 -1
- package/dist/cli/ready.d.ts +5 -0
- package/dist/cli/ready.js +131 -0
- package/dist/cli/ready.js.map +1 -0
- package/dist/cli/sync.d.ts +8 -0
- package/dist/cli/sync.js +154 -0
- package/dist/cli/sync.js.map +1 -0
- package/dist/cli/token.js +242 -9
- package/dist/cli/token.js.map +1 -1
- package/dist/cli/whoami.d.ts +6 -0
- package/dist/cli/whoami.js +109 -5
- package/dist/cli/whoami.js.map +1 -1
- package/dist/core/cleanup/eligibility.d.ts +41 -0
- package/dist/core/cleanup/eligibility.js +64 -0
- package/dist/core/cleanup/eligibility.js.map +1 -0
- package/dist/core/cleanup/scheduler.d.ts +50 -0
- package/dist/core/cleanup/scheduler.js +120 -0
- package/dist/core/cleanup/scheduler.js.map +1 -0
- package/dist/core/cleanup/worker.d.ts +63 -0
- package/dist/core/cleanup/worker.js +191 -0
- package/dist/core/cleanup/worker.js.map +1 -0
- package/dist/core/daemon.d.ts +1 -0
- package/dist/core/daemon.js +18 -0
- package/dist/core/daemon.js.map +1 -1
- package/dist/core/heartbeat.d.ts +6 -1
- package/dist/core/heartbeat.js +44 -39
- package/dist/core/heartbeat.js.map +1 -1
- package/dist/core/issue-cache.d.ts +44 -0
- package/dist/core/issue-cache.js +75 -0
- package/dist/core/issue-cache.js.map +1 -0
- package/dist/core/registry.d.ts +1 -0
- package/dist/core/registry.js +1 -0
- package/dist/core/registry.js.map +1 -1
- package/dist/core/token-lifecycle.d.ts +81 -0
- package/dist/core/token-lifecycle.js +210 -0
- package/dist/core/token-lifecycle.js.map +1 -0
- package/dist/core/token-lifecycle.test.d.ts +10 -0
- package/dist/core/token-lifecycle.test.js +309 -0
- package/dist/core/token-lifecycle.test.js.map +1 -0
- package/package.json +11 -12
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Unit tests for TokenLifecycleManager (#401 + #402)
|
|
3
|
+
*
|
|
4
|
+
* Uses injectable fetch + short timers to test scheduling, backoff,
|
|
5
|
+
* circuit-breaker, bootstrap re-register fallback, and loop guard.
|
|
6
|
+
*
|
|
7
|
+
* Tokens are unsigned fake JWTs — TokenLifecycleManager only decodes
|
|
8
|
+
* the exp claim client-side and never verifies signatures.
|
|
9
|
+
*/
|
|
10
|
+
export {};
|
|
@@ -0,0 +1,309 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Unit tests for TokenLifecycleManager (#401 + #402)
|
|
3
|
+
*
|
|
4
|
+
* Uses injectable fetch + short timers to test scheduling, backoff,
|
|
5
|
+
* circuit-breaker, bootstrap re-register fallback, and loop guard.
|
|
6
|
+
*
|
|
7
|
+
* Tokens are unsigned fake JWTs — TokenLifecycleManager only decodes
|
|
8
|
+
* the exp claim client-side and never verifies signatures.
|
|
9
|
+
*/
|
|
10
|
+
import assert from "node:assert/strict";
|
|
11
|
+
import test from "node:test";
|
|
12
|
+
import { TokenLifecycleManager } from "./token-lifecycle.js";
|
|
13
|
+
// ---------------------------------------------------------------------------
|
|
14
|
+
// Helpers
|
|
15
|
+
// ---------------------------------------------------------------------------
|
|
16
|
+
/** Build a fake JWT with a real exp claim (signature is ignored client-side). */
|
|
17
|
+
function makeToken(expiresInSeconds) {
|
|
18
|
+
const header = Buffer.from(JSON.stringify({ alg: "HS256", typ: "JWT" })).toString("base64url");
|
|
19
|
+
const exp = Math.floor(Date.now() / 1000) + expiresInSeconds;
|
|
20
|
+
const payload = Buffer.from(JSON.stringify({
|
|
21
|
+
sub: "test-agent-id",
|
|
22
|
+
actorType: "agent",
|
|
23
|
+
workspaceScopes: ["test-ws"],
|
|
24
|
+
iat: Math.floor(Date.now() / 1000),
|
|
25
|
+
exp,
|
|
26
|
+
})).toString("base64url");
|
|
27
|
+
return `${header}.${payload}.fakesig`;
|
|
28
|
+
}
|
|
29
|
+
const FRESH = () => makeToken(7 * 24 * 60 * 60); // 7 days — not expiring
|
|
30
|
+
const EXPIRING = () => makeToken(60); // 60 s — within any threshold
|
|
31
|
+
function refreshResponse(newToken) {
|
|
32
|
+
const tok = newToken ?? makeToken(604800);
|
|
33
|
+
return async () => new Response(JSON.stringify({
|
|
34
|
+
token: tok,
|
|
35
|
+
expires_at: new Date(Date.now() + 604800 * 1000).toISOString(),
|
|
36
|
+
expires_in_seconds: 604800,
|
|
37
|
+
}), { status: 200, headers: { "content-type": "application/json" } });
|
|
38
|
+
}
|
|
39
|
+
const BOOTSTRAP = {
|
|
40
|
+
apiKey: "test-api-key",
|
|
41
|
+
agentId: "test-agent-id",
|
|
42
|
+
displayName: "Test Agent",
|
|
43
|
+
model: "test-model",
|
|
44
|
+
workspace: "test-ws",
|
|
45
|
+
};
|
|
46
|
+
// ---------------------------------------------------------------------------
|
|
47
|
+
test("does not refresh when token is not expiring", async () => {
|
|
48
|
+
const token = FRESH();
|
|
49
|
+
let refreshCalled = false;
|
|
50
|
+
const mgr = new TokenLifecycleManager({
|
|
51
|
+
hubUrl: "http://hub",
|
|
52
|
+
initialToken: token,
|
|
53
|
+
bootstrap: BOOTSTRAP,
|
|
54
|
+
onTokenUpdate: () => {
|
|
55
|
+
refreshCalled = true;
|
|
56
|
+
},
|
|
57
|
+
refreshThresholdMs: 5 * 60 * 1000,
|
|
58
|
+
checkIntervalMs: 40,
|
|
59
|
+
fetch: async () => {
|
|
60
|
+
throw new Error("should not be called");
|
|
61
|
+
},
|
|
62
|
+
});
|
|
63
|
+
mgr.start();
|
|
64
|
+
await new Promise((r) => setTimeout(r, 100));
|
|
65
|
+
mgr.stop();
|
|
66
|
+
assert.equal(refreshCalled, false, "Should not refresh a fresh token");
|
|
67
|
+
assert.equal(mgr.getToken(), token);
|
|
68
|
+
});
|
|
69
|
+
// ---------------------------------------------------------------------------
|
|
70
|
+
test("refreshes expiring token via /token/refresh", async () => {
|
|
71
|
+
const old = EXPIRING();
|
|
72
|
+
const newTok = makeToken(604800);
|
|
73
|
+
const events = [];
|
|
74
|
+
let updated = "";
|
|
75
|
+
const mgr = new TokenLifecycleManager({
|
|
76
|
+
hubUrl: "http://hub",
|
|
77
|
+
initialToken: old,
|
|
78
|
+
bootstrap: BOOTSTRAP,
|
|
79
|
+
onTokenUpdate: (t) => {
|
|
80
|
+
updated = t;
|
|
81
|
+
},
|
|
82
|
+
onEvent: (e) => {
|
|
83
|
+
events.push(e.type);
|
|
84
|
+
},
|
|
85
|
+
refreshThresholdMs: 10 * 60 * 1000,
|
|
86
|
+
checkIntervalMs: 30,
|
|
87
|
+
fetch: async (url) => {
|
|
88
|
+
if (String(url).includes("/token/refresh"))
|
|
89
|
+
return refreshResponse(newTok)();
|
|
90
|
+
throw new Error(`Unexpected: ${url}`);
|
|
91
|
+
},
|
|
92
|
+
});
|
|
93
|
+
mgr.start();
|
|
94
|
+
await new Promise((r) => setTimeout(r, 120));
|
|
95
|
+
mgr.stop();
|
|
96
|
+
assert.equal(updated, newTok, "Token should be updated");
|
|
97
|
+
assert.ok(events.includes("refresh_success"), `events: ${events}`);
|
|
98
|
+
});
|
|
99
|
+
// ---------------------------------------------------------------------------
|
|
100
|
+
test("401 on refresh triggers re-register immediately without retrying", async () => {
|
|
101
|
+
const old = EXPIRING();
|
|
102
|
+
const newTok = makeToken(604800);
|
|
103
|
+
const events = [];
|
|
104
|
+
let refreshHits = 0;
|
|
105
|
+
let reregHits = 0;
|
|
106
|
+
const mgr = new TokenLifecycleManager({
|
|
107
|
+
hubUrl: "http://hub",
|
|
108
|
+
initialToken: old,
|
|
109
|
+
bootstrap: BOOTSTRAP,
|
|
110
|
+
onTokenUpdate: () => { },
|
|
111
|
+
onEvent: (e) => {
|
|
112
|
+
events.push(e.type);
|
|
113
|
+
},
|
|
114
|
+
refreshThresholdMs: 10 * 60 * 1000,
|
|
115
|
+
checkIntervalMs: 5000,
|
|
116
|
+
minReregisterIntervalMs: 0,
|
|
117
|
+
fetch: async (url) => {
|
|
118
|
+
if (String(url).includes("/token/refresh")) {
|
|
119
|
+
refreshHits++;
|
|
120
|
+
return new Response(JSON.stringify({ error: "unauthorized" }), { status: 401 });
|
|
121
|
+
}
|
|
122
|
+
if (String(url).includes("/agents/register")) {
|
|
123
|
+
reregHits++;
|
|
124
|
+
return refreshResponse(newTok)();
|
|
125
|
+
}
|
|
126
|
+
throw new Error(`Unexpected: ${url}`);
|
|
127
|
+
},
|
|
128
|
+
});
|
|
129
|
+
mgr.start();
|
|
130
|
+
await new Promise((r) => setTimeout(r, 200));
|
|
131
|
+
mgr.stop();
|
|
132
|
+
assert.equal(refreshHits, 1, "Should only attempt refresh once before falling back");
|
|
133
|
+
assert.equal(reregHits, 1, "Should call re-register exactly once");
|
|
134
|
+
assert.ok(events.includes("circuit_open"), `events: ${events}`);
|
|
135
|
+
assert.ok(events.includes("reregister_success"), `events: ${events}`);
|
|
136
|
+
});
|
|
137
|
+
// ---------------------------------------------------------------------------
|
|
138
|
+
test("opens circuit after maxConsecutiveFailures and falls back to re-register", async () => {
|
|
139
|
+
const old = EXPIRING();
|
|
140
|
+
const newTok = makeToken(604800);
|
|
141
|
+
const events = [];
|
|
142
|
+
let refreshHits = 0;
|
|
143
|
+
let reregHits = 0;
|
|
144
|
+
const mgr = new TokenLifecycleManager({
|
|
145
|
+
hubUrl: "http://hub",
|
|
146
|
+
initialToken: old,
|
|
147
|
+
bootstrap: BOOTSTRAP,
|
|
148
|
+
onTokenUpdate: () => { },
|
|
149
|
+
onEvent: (e) => {
|
|
150
|
+
events.push(e.type);
|
|
151
|
+
},
|
|
152
|
+
refreshThresholdMs: 10 * 60 * 1000,
|
|
153
|
+
checkIntervalMs: 10_000, // single cycle
|
|
154
|
+
backoffBaseMs: 5,
|
|
155
|
+
backoffMaxMs: 15,
|
|
156
|
+
maxConsecutiveFailures: 3,
|
|
157
|
+
minReregisterIntervalMs: 0,
|
|
158
|
+
fetch: async (url) => {
|
|
159
|
+
if (String(url).includes("/token/refresh")) {
|
|
160
|
+
refreshHits++;
|
|
161
|
+
throw new Error("network error");
|
|
162
|
+
}
|
|
163
|
+
if (String(url).includes("/agents/register")) {
|
|
164
|
+
reregHits++;
|
|
165
|
+
return refreshResponse(newTok)();
|
|
166
|
+
}
|
|
167
|
+
throw new Error(`Unexpected: ${url}`);
|
|
168
|
+
},
|
|
169
|
+
});
|
|
170
|
+
mgr.start();
|
|
171
|
+
await new Promise((r) => setTimeout(r, 400));
|
|
172
|
+
mgr.stop();
|
|
173
|
+
assert.ok(refreshHits >= 3, `Expected ≥3 refresh attempts, got ${refreshHits}`);
|
|
174
|
+
assert.equal(reregHits, 1, "Re-register should be called exactly once");
|
|
175
|
+
assert.ok(events.includes("circuit_open"), `events: ${events}`);
|
|
176
|
+
assert.ok(events.includes("reregister_success"), `events: ${events}`);
|
|
177
|
+
});
|
|
178
|
+
// ---------------------------------------------------------------------------
|
|
179
|
+
test("re-register rate-limit guard prevents loops", async () => {
|
|
180
|
+
const old = EXPIRING();
|
|
181
|
+
const events = [];
|
|
182
|
+
let reregHits = 0;
|
|
183
|
+
const mgr = new TokenLifecycleManager({
|
|
184
|
+
hubUrl: "http://hub",
|
|
185
|
+
initialToken: old,
|
|
186
|
+
bootstrap: BOOTSTRAP,
|
|
187
|
+
onTokenUpdate: () => { },
|
|
188
|
+
onEvent: (e) => {
|
|
189
|
+
events.push(e.type);
|
|
190
|
+
},
|
|
191
|
+
refreshThresholdMs: 10 * 60 * 1000,
|
|
192
|
+
checkIntervalMs: 20, // fast check loop
|
|
193
|
+
backoffBaseMs: 5,
|
|
194
|
+
backoffMaxMs: 10,
|
|
195
|
+
maxConsecutiveFailures: 2,
|
|
196
|
+
minReregisterIntervalMs: 10_000, // 10s — nothing else should slip through
|
|
197
|
+
fetch: async (url) => {
|
|
198
|
+
if (String(url).includes("/token/refresh"))
|
|
199
|
+
throw new Error("fail");
|
|
200
|
+
if (String(url).includes("/agents/register")) {
|
|
201
|
+
reregHits++;
|
|
202
|
+
throw new Error("re-register also fails");
|
|
203
|
+
}
|
|
204
|
+
throw new Error(`Unexpected: ${url}`);
|
|
205
|
+
},
|
|
206
|
+
});
|
|
207
|
+
mgr.start();
|
|
208
|
+
await new Promise((r) => setTimeout(r, 300));
|
|
209
|
+
mgr.stop();
|
|
210
|
+
assert.equal(reregHits, 1, `Rate limit should allow only 1 re-register attempt, got ${reregHits}`);
|
|
211
|
+
assert.ok(events.filter((e) => e === "reregister_rate_limited").length >= 1, `Expected ≥1 rate_limited event, got: ${events}`);
|
|
212
|
+
});
|
|
213
|
+
// ---------------------------------------------------------------------------
|
|
214
|
+
test("re-register success resets consecutive failures and circuit", async () => {
|
|
215
|
+
const old = EXPIRING();
|
|
216
|
+
const newTok = makeToken(604800);
|
|
217
|
+
const events = [];
|
|
218
|
+
let updated = "";
|
|
219
|
+
const mgr = new TokenLifecycleManager({
|
|
220
|
+
hubUrl: "http://hub",
|
|
221
|
+
initialToken: old,
|
|
222
|
+
bootstrap: BOOTSTRAP,
|
|
223
|
+
onTokenUpdate: (t) => {
|
|
224
|
+
updated = t;
|
|
225
|
+
},
|
|
226
|
+
onEvent: (e) => {
|
|
227
|
+
events.push(e.type);
|
|
228
|
+
},
|
|
229
|
+
refreshThresholdMs: 10 * 60 * 1000,
|
|
230
|
+
checkIntervalMs: 10_000,
|
|
231
|
+
backoffBaseMs: 5,
|
|
232
|
+
backoffMaxMs: 15,
|
|
233
|
+
maxConsecutiveFailures: 2,
|
|
234
|
+
minReregisterIntervalMs: 0,
|
|
235
|
+
fetch: async (url) => {
|
|
236
|
+
if (String(url).includes("/token/refresh"))
|
|
237
|
+
throw new Error("fail");
|
|
238
|
+
return refreshResponse(newTok)();
|
|
239
|
+
},
|
|
240
|
+
});
|
|
241
|
+
mgr.start();
|
|
242
|
+
await new Promise((r) => setTimeout(r, 300));
|
|
243
|
+
mgr.stop();
|
|
244
|
+
assert.equal(updated, newTok, "Token should be updated after re-register");
|
|
245
|
+
assert.ok(events.includes("reregister_success"), `events: ${events}`);
|
|
246
|
+
});
|
|
247
|
+
// ---------------------------------------------------------------------------
|
|
248
|
+
test("stop() halts the check loop", async () => {
|
|
249
|
+
const token = EXPIRING();
|
|
250
|
+
let fetchCalls = 0;
|
|
251
|
+
const mgr = new TokenLifecycleManager({
|
|
252
|
+
hubUrl: "http://hub",
|
|
253
|
+
initialToken: token,
|
|
254
|
+
bootstrap: BOOTSTRAP,
|
|
255
|
+
onTokenUpdate: () => { },
|
|
256
|
+
refreshThresholdMs: 10 * 60 * 1000,
|
|
257
|
+
checkIntervalMs: 30,
|
|
258
|
+
fetch: async () => {
|
|
259
|
+
fetchCalls++;
|
|
260
|
+
return refreshResponse()();
|
|
261
|
+
},
|
|
262
|
+
});
|
|
263
|
+
mgr.start();
|
|
264
|
+
await new Promise((r) => setTimeout(r, 80));
|
|
265
|
+
mgr.stop();
|
|
266
|
+
const snapshot = fetchCalls;
|
|
267
|
+
await new Promise((r) => setTimeout(r, 100));
|
|
268
|
+
assert.equal(fetchCalls, snapshot, "No fetches should happen after stop()");
|
|
269
|
+
});
|
|
270
|
+
// ---------------------------------------------------------------------------
|
|
271
|
+
test("backoff increases with each attempt", async () => {
|
|
272
|
+
const old = EXPIRING();
|
|
273
|
+
const backoffs = [];
|
|
274
|
+
const events = [];
|
|
275
|
+
// Intercept events to collect nextRetryMs values
|
|
276
|
+
const mgr = new TokenLifecycleManager({
|
|
277
|
+
hubUrl: "http://hub",
|
|
278
|
+
initialToken: old,
|
|
279
|
+
bootstrap: BOOTSTRAP,
|
|
280
|
+
onTokenUpdate: () => { },
|
|
281
|
+
onEvent: (e) => {
|
|
282
|
+
events.push(e.type);
|
|
283
|
+
if (e.type === "refresh_failure" && e.nextRetryMs !== undefined) {
|
|
284
|
+
backoffs.push(e.nextRetryMs);
|
|
285
|
+
}
|
|
286
|
+
},
|
|
287
|
+
refreshThresholdMs: 10 * 60 * 1000,
|
|
288
|
+
checkIntervalMs: 10_000,
|
|
289
|
+
backoffBaseMs: 10,
|
|
290
|
+
backoffMaxMs: 200,
|
|
291
|
+
maxConsecutiveFailures: 4,
|
|
292
|
+
minReregisterIntervalMs: 0,
|
|
293
|
+
fetch: async (url) => {
|
|
294
|
+
if (String(url).includes("/token/refresh"))
|
|
295
|
+
throw new Error("fail");
|
|
296
|
+
return refreshResponse()(); // re-register succeeds to stop the loop
|
|
297
|
+
},
|
|
298
|
+
});
|
|
299
|
+
mgr.start();
|
|
300
|
+
await new Promise((r) => setTimeout(r, 500));
|
|
301
|
+
mgr.stop();
|
|
302
|
+
// We collected backoff values — verify they are non-decreasing (allowing jitter)
|
|
303
|
+
assert.ok(backoffs.length >= 2, `Expected ≥2 backoff values, got ${backoffs.length}`);
|
|
304
|
+
// Each subsequent backoff should be >= previous * 0.5 (jitter can reduce up to 20%)
|
|
305
|
+
for (let i = 1; i < backoffs.length; i++) {
|
|
306
|
+
assert.ok(backoffs[i] >= backoffs[i - 1] * 0.5, `Backoff should not collapse: [${backoffs}]`);
|
|
307
|
+
}
|
|
308
|
+
});
|
|
309
|
+
//# sourceMappingURL=token-lifecycle.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"token-lifecycle.test.js","sourceRoot":"","sources":["../../src/core/token-lifecycle.test.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@agentmeshhq/agent",
|
|
3
|
-
"version": "0.4.
|
|
3
|
+
"version": "0.4.4",
|
|
4
4
|
"description": "AgentMesh Agent Wrapper - Turn any AI coding assistant into a dispatchable, nudge-able agent",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -16,15 +16,6 @@
|
|
|
16
16
|
"access": "public",
|
|
17
17
|
"registry": "https://registry.npmjs.org/"
|
|
18
18
|
},
|
|
19
|
-
"scripts": {
|
|
20
|
-
"dev": "tsx watch src/cli/index.ts",
|
|
21
|
-
"build": "tsc -p tsconfig.json",
|
|
22
|
-
"lint": "biome check src",
|
|
23
|
-
"start": "node dist/cli/index.js",
|
|
24
|
-
"test": "vitest run",
|
|
25
|
-
"test:watch": "vitest",
|
|
26
|
-
"prepublishOnly": "pnpm build && pnpm test"
|
|
27
|
-
},
|
|
28
19
|
"dependencies": {
|
|
29
20
|
"commander": "^12.0.0",
|
|
30
21
|
"picocolors": "^1.0.0",
|
|
@@ -53,5 +44,13 @@
|
|
|
53
44
|
"url": "https://github.com/therajushahi/agentmesh.git",
|
|
54
45
|
"directory": "packages/agent"
|
|
55
46
|
},
|
|
56
|
-
"homepage": "https://agentmeshhq.dev"
|
|
57
|
-
|
|
47
|
+
"homepage": "https://agentmeshhq.dev",
|
|
48
|
+
"scripts": {
|
|
49
|
+
"dev": "tsx watch src/cli/index.ts",
|
|
50
|
+
"build": "tsc -p tsconfig.json",
|
|
51
|
+
"lint": "biome check src",
|
|
52
|
+
"start": "node dist/cli/index.js",
|
|
53
|
+
"test": "vitest run",
|
|
54
|
+
"test:watch": "vitest"
|
|
55
|
+
}
|
|
56
|
+
}
|