@agentmeshhq/agent 0.4.2 → 0.4.3

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 (60) hide show
  1. package/LICENSE +21 -0
  2. package/dist/__tests__/evicted-cleanup.test.d.ts +10 -0
  3. package/dist/__tests__/evicted-cleanup.test.js +459 -0
  4. package/dist/__tests__/evicted-cleanup.test.js.map +1 -0
  5. package/dist/__tests__/local.test.d.ts +1 -0
  6. package/dist/__tests__/local.test.js +124 -0
  7. package/dist/__tests__/local.test.js.map +1 -0
  8. package/dist/__tests__/tmux-send.test.d.ts +10 -0
  9. package/dist/__tests__/tmux-send.test.js +96 -0
  10. package/dist/__tests__/tmux-send.test.js.map +1 -0
  11. package/dist/cli/inbox.d.ts +5 -0
  12. package/dist/cli/inbox.js +123 -0
  13. package/dist/cli/inbox.js.map +1 -0
  14. package/dist/cli/index.js +285 -11
  15. package/dist/cli/index.js.map +1 -1
  16. package/dist/cli/issue.d.ts +42 -0
  17. package/dist/cli/issue.js +297 -0
  18. package/dist/cli/issue.js.map +1 -0
  19. package/dist/cli/local.d.ts +27 -6
  20. package/dist/cli/local.js +319 -36
  21. package/dist/cli/local.js.map +1 -1
  22. package/dist/cli/ready.d.ts +5 -0
  23. package/dist/cli/ready.js +131 -0
  24. package/dist/cli/ready.js.map +1 -0
  25. package/dist/cli/sync.d.ts +8 -0
  26. package/dist/cli/sync.js +154 -0
  27. package/dist/cli/sync.js.map +1 -0
  28. package/dist/cli/token.js +242 -9
  29. package/dist/cli/token.js.map +1 -1
  30. package/dist/cli/whoami.d.ts +6 -0
  31. package/dist/cli/whoami.js +109 -5
  32. package/dist/cli/whoami.js.map +1 -1
  33. package/dist/core/cleanup/eligibility.d.ts +41 -0
  34. package/dist/core/cleanup/eligibility.js +64 -0
  35. package/dist/core/cleanup/eligibility.js.map +1 -0
  36. package/dist/core/cleanup/scheduler.d.ts +50 -0
  37. package/dist/core/cleanup/scheduler.js +120 -0
  38. package/dist/core/cleanup/scheduler.js.map +1 -0
  39. package/dist/core/cleanup/worker.d.ts +63 -0
  40. package/dist/core/cleanup/worker.js +191 -0
  41. package/dist/core/cleanup/worker.js.map +1 -0
  42. package/dist/core/daemon.d.ts +1 -0
  43. package/dist/core/daemon.js +18 -0
  44. package/dist/core/daemon.js.map +1 -1
  45. package/dist/core/heartbeat.d.ts +6 -1
  46. package/dist/core/heartbeat.js +44 -39
  47. package/dist/core/heartbeat.js.map +1 -1
  48. package/dist/core/issue-cache.d.ts +44 -0
  49. package/dist/core/issue-cache.js +75 -0
  50. package/dist/core/issue-cache.js.map +1 -0
  51. package/dist/core/registry.d.ts +1 -0
  52. package/dist/core/registry.js +1 -0
  53. package/dist/core/registry.js.map +1 -1
  54. package/dist/core/token-lifecycle.d.ts +81 -0
  55. package/dist/core/token-lifecycle.js +210 -0
  56. package/dist/core/token-lifecycle.js.map +1 -0
  57. package/dist/core/token-lifecycle.test.d.ts +10 -0
  58. package/dist/core/token-lifecycle.test.js +309 -0
  59. package/dist/core/token-lifecycle.test.js.map +1 -0
  60. package/package.json +11 -12
package/dist/cli/local.js CHANGED
@@ -1,21 +1,91 @@
1
1
  import { execSync, spawn, spawnSync } from "node:child_process";
2
+ import fs from "node:fs";
3
+ import net from "node:net";
2
4
  import path from "node:path";
3
5
  import pc from "picocolors";
4
- const COMPOSE_FILE = "docker/docker-compose.local.yml";
5
- function findProjectRoot() {
6
- // Try to find the project root by looking for docker-compose files
6
+ const DEFAULT_COMPOSE_FILE = "docker/docker-compose.local.yml";
7
+ // Base ports for slot 0; each slot gets a 100-port block
8
+ const BASE_PORT_BLOCK = 5400;
9
+ const SLOT_PORT_BLOCK_SIZE = 100;
10
+ // Default port offsets within a slot block
11
+ const _PORT_OFFSETS = {
12
+ postgres: 32, // 5432 -> slot0=5432, slot1=5532, ...
13
+ valkey: 79, // 6379 -> slot0=5479 NOTE: we map explicitly below
14
+ "hub-api": 77, // 3777
15
+ admin: 78, // 3778
16
+ nginx: 80, // 80
17
+ };
18
+ // Canonical default ports per service (slot 0 / no-slot mode)
19
+ const _DEFAULT_PORTS = {
20
+ postgres: 5432,
21
+ valkey: 6379,
22
+ "hub-api": 3777,
23
+ admin: 3778,
24
+ nginx: 80,
25
+ };
26
+ // ─────────────────────────────────────────────
27
+ // Port helpers
28
+ // ─────────────────────────────────────────────
29
+ /**
30
+ * Compute the host port for a given internal service port when using slots.
31
+ * Slot 0 preserves default ports; slot N shifts by N * SLOT_PORT_BLOCK_SIZE.
32
+ */
33
+ export function slotPort(internalPort, slot) {
34
+ if (slot === 0)
35
+ return internalPort;
36
+ return BASE_PORT_BLOCK + slot * SLOT_PORT_BLOCK_SIZE + (internalPort % 100);
37
+ }
38
+ /** Check if a TCP port is free on 127.0.0.1 */
39
+ export function isPortFree(port) {
40
+ return new Promise((resolve) => {
41
+ const server = net.createServer();
42
+ server.once("error", () => resolve(false));
43
+ server.once("listening", () => {
44
+ server.close();
45
+ resolve(true);
46
+ });
47
+ server.listen(port, "127.0.0.1");
48
+ });
49
+ }
50
+ // ─────────────────────────────────────────────
51
+ // Compose file resolution
52
+ // ─────────────────────────────────────────────
53
+ function resolveComposePath(target) {
54
+ // Absolute path provided
55
+ if (target && path.isAbsolute(target)) {
56
+ if (!fs.existsSync(target)) {
57
+ throw new Error(`Compose file not found: ${target}`);
58
+ }
59
+ return { projectRoot: path.dirname(target), composePath: target };
60
+ }
61
+ // Relative path or filename
62
+ const filename = target || DEFAULT_COMPOSE_FILE;
63
+ // Try CWD first
64
+ const cwdPath = path.resolve(process.cwd(), filename);
65
+ if (fs.existsSync(cwdPath)) {
66
+ return { projectRoot: process.cwd(), composePath: cwdPath };
67
+ }
68
+ // Walk up to find project root
7
69
  let dir = process.cwd();
8
70
  for (let i = 0; i < 10; i++) {
9
- const composePath = path.join(dir, COMPOSE_FILE);
10
- try {
11
- execSync(`test -f "${composePath}"`, { stdio: "ignore" });
12
- return dir;
13
- }
14
- catch {
15
- dir = path.dirname(dir);
71
+ const candidate = path.join(dir, filename);
72
+ if (fs.existsSync(candidate)) {
73
+ return { projectRoot: dir, composePath: candidate };
16
74
  }
75
+ dir = path.dirname(dir);
17
76
  }
18
- throw new Error("Could not find AgentMesh project root. Make sure you're in the agentmesh repository.");
77
+ throw new Error(`Could not find compose file "${filename}". ` +
78
+ "Pass --target with an absolute path or run from the agentmesh repo root.");
79
+ }
80
+ // ─────────────────────────────────────────────
81
+ // Container helpers
82
+ // ─────────────────────────────────────────────
83
+ function containerPrefix(project, slot) {
84
+ if (project)
85
+ return project;
86
+ if (slot !== undefined && slot > 0)
87
+ return `agentmesh_slot${slot}`;
88
+ return "agentmesh";
19
89
  }
20
90
  function getContainerStatus(containerName) {
21
91
  try {
@@ -35,7 +105,6 @@ function getContainerPort(containerName, internalPort) {
35
105
  const result = execSync(`docker port ${containerName} ${internalPort} 2>/dev/null | head -1`, {
36
106
  encoding: "utf-8",
37
107
  }).trim();
38
- // Format: 0.0.0.0:5432 -> 5432
39
108
  const match = result.match(/:(\d+)$/);
40
109
  return match ? match[1] : null;
41
110
  }
@@ -43,19 +112,142 @@ function getContainerPort(containerName, internalPort) {
43
112
  return null;
44
113
  }
45
114
  }
115
+ /** Get PID of process listening on a port (macOS / Linux) */
116
+ function getPortOwner(port) {
117
+ try {
118
+ const out = execSync(`lsof -ti tcp:${port} 2>/dev/null || true`, {
119
+ encoding: "utf-8",
120
+ }).trim();
121
+ if (!out)
122
+ return null;
123
+ const pid = out.split("\n")[0].trim();
124
+ try {
125
+ const cmd = execSync(`ps -p ${pid} -o comm= 2>/dev/null || true`, {
126
+ encoding: "utf-8",
127
+ }).trim();
128
+ return cmd ? `pid ${pid} (${cmd})` : `pid ${pid}`;
129
+ }
130
+ catch {
131
+ return `pid ${pid}`;
132
+ }
133
+ }
134
+ catch {
135
+ return null;
136
+ }
137
+ }
138
+ export async function runPreflight(options = {}) {
139
+ const result = { ok: true, errors: [], warnings: [] };
140
+ // 1. Compose file exists
141
+ try {
142
+ resolveComposePath(options.target);
143
+ }
144
+ catch (err) {
145
+ result.errors.push(err.message);
146
+ result.ok = false;
147
+ return result; // Can't continue without compose file
148
+ }
149
+ // 2. Port availability checks
150
+ const slot = options.slot ?? 0;
151
+ const portsToCheck = [
152
+ { service: "postgres", internal: 5432 },
153
+ { service: "valkey", internal: 6379 },
154
+ { service: "hub-api", internal: 3777 },
155
+ { service: "admin", internal: 3778 },
156
+ { service: "nginx", internal: 80 },
157
+ ];
158
+ const occupiedPorts = [];
159
+ for (const { service, internal } of portsToCheck) {
160
+ const hostPort = slotPort(internal, slot);
161
+ const free = await isPortFree(hostPort);
162
+ if (!free) {
163
+ const owner = getPortOwner(hostPort);
164
+ occupiedPorts.push({ port: hostPort, service, owner });
165
+ }
166
+ }
167
+ if (occupiedPorts.length > 0) {
168
+ result.ok = false;
169
+ // Suggest next free slot
170
+ let suggestedSlot = null;
171
+ for (let s = slot + 1; s <= slot + 10; s++) {
172
+ const portsForSlot = portsToCheck.map(({ internal }) => slotPort(internal, s));
173
+ const allFree = await Promise.all(portsForSlot.map(isPortFree));
174
+ if (allFree.every(Boolean)) {
175
+ suggestedSlot = s;
176
+ break;
177
+ }
178
+ }
179
+ result.errors.push("Port collision detected:");
180
+ for (const { port, service, owner } of occupiedPorts) {
181
+ const ownerStr = owner ? ` — owner: ${owner}` : "";
182
+ result.errors.push(` ${service} port ${port} is in use${ownerStr}`);
183
+ }
184
+ if (suggestedSlot !== null) {
185
+ result.errors.push(` Suggested next free slot: --slot ${suggestedSlot}`);
186
+ }
187
+ }
188
+ return result;
189
+ }
190
+ // ─────────────────────────────────────────────
191
+ // Compose args builder
192
+ // ─────────────────────────────────────────────
193
+ function buildComposeArgs(composePath, project, slot) {
194
+ const baseArgs = ["-f", composePath];
195
+ // Project namespace for compose
196
+ if (project) {
197
+ baseArgs.push("-p", project);
198
+ }
199
+ else if (slot !== undefined && slot > 0) {
200
+ baseArgs.push("-p", `agentmesh-slot${slot}`);
201
+ }
202
+ // Port overrides via environment (slot mapping)
203
+ const envOverrides = {};
204
+ if (slot !== undefined && slot > 0) {
205
+ envOverrides.POSTGRES_PORT = String(slotPort(5432, slot));
206
+ envOverrides.VALKEY_PORT = String(slotPort(6379, slot));
207
+ envOverrides.HUB_API_PORT = String(slotPort(3777, slot));
208
+ envOverrides.ADMIN_PORT = String(slotPort(3778, slot));
209
+ envOverrides.NGINX_PORT = String(slotPort(80, slot));
210
+ }
211
+ return { baseArgs, envOverrides };
212
+ }
213
+ // ─────────────────────────────────────────────
214
+ // localUp (Part A + B)
215
+ // ─────────────────────────────────────────────
46
216
  export async function localUp(options = {}) {
47
- const projectRoot = findProjectRoot();
48
- const composePath = path.join(projectRoot, COMPOSE_FILE);
217
+ const { projectRoot, composePath } = resolveComposePath(options.target);
218
+ // Preflight checks (Part B)
219
+ console.log(pc.dim("Running preflight checks..."));
220
+ const preflight = await runPreflight(options);
221
+ if (!preflight.ok) {
222
+ console.error(pc.red("Preflight failed — cannot start local stack:"));
223
+ for (const err of preflight.errors) {
224
+ console.error(pc.red(` ${err}`));
225
+ }
226
+ process.exit(1);
227
+ }
228
+ for (const warn of preflight.warnings) {
229
+ console.warn(pc.yellow(` Warning: ${warn}`));
230
+ }
49
231
  console.log(pc.cyan("Starting AgentMesh local development stack..."));
232
+ if (options.slot !== undefined && options.slot > 0) {
233
+ console.log(pc.dim(` Slot: ${options.slot}`));
234
+ }
235
+ if (options.project) {
236
+ console.log(pc.dim(` Project: ${options.project}`));
237
+ }
238
+ if (options.target) {
239
+ console.log(pc.dim(` Target: ${composePath}`));
240
+ }
50
241
  console.log();
51
- const args = ["compose", "-f", composePath, "up"];
52
- if (options.detach !== false) {
242
+ const { baseArgs, envOverrides } = buildComposeArgs(composePath, options.project, options.slot);
243
+ const args = ["compose", ...baseArgs, "up"];
244
+ if (options.detach !== false)
53
245
  args.push("-d");
54
- }
55
246
  args.push("--build");
56
247
  const result = spawnSync("docker", args, {
57
248
  cwd: projectRoot,
58
249
  stdio: "inherit",
250
+ env: { ...process.env, ...envOverrides },
59
251
  });
60
252
  if (result.status !== 0) {
61
253
  console.error(pc.red("Failed to start local stack"));
@@ -65,16 +257,21 @@ export async function localUp(options = {}) {
65
257
  console.log();
66
258
  console.log(pc.green("Local stack started successfully!"));
67
259
  console.log();
68
- await localStatus();
260
+ await localStatus(options);
69
261
  }
70
262
  }
71
- export async function localDown() {
72
- const projectRoot = findProjectRoot();
73
- const composePath = path.join(projectRoot, COMPOSE_FILE);
263
+ // ─────────────────────────────────────────────
264
+ // localDown (Part A)
265
+ // ─────────────────────────────────────────────
266
+ export async function localDown(options = {}) {
267
+ const { projectRoot, composePath } = resolveComposePath(options.target);
74
268
  console.log(pc.cyan("Stopping AgentMesh local development stack..."));
75
- const result = spawnSync("docker", ["compose", "-f", composePath, "down"], {
269
+ const { baseArgs, envOverrides } = buildComposeArgs(composePath, options.project, options.slot);
270
+ const args = ["compose", ...baseArgs, "down"];
271
+ const result = spawnSync("docker", args, {
76
272
  cwd: projectRoot,
77
273
  stdio: "inherit",
274
+ env: { ...process.env, ...envOverrides },
78
275
  });
79
276
  if (result.status !== 0) {
80
277
  console.error(pc.red("Failed to stop local stack"));
@@ -82,16 +279,29 @@ export async function localDown() {
82
279
  }
83
280
  console.log(pc.green("Local stack stopped."));
84
281
  }
85
- export async function localStatus() {
282
+ // ─────────────────────────────────────────────
283
+ // localStatus (Part A)
284
+ // ─────────────────────────────────────────────
285
+ export async function localStatus(options = {}) {
286
+ const slot = options.slot ?? 0;
287
+ const prefix = containerPrefix(options.project, slot);
86
288
  const services = [
87
- { name: "postgres", container: "agentmesh_postgres", port: 5432 },
88
- { name: "valkey", container: "agentmesh_valkey", port: 6379 },
89
- { name: "hub-api", container: "agentmesh_hub_api", port: 3777 },
90
- { name: "hub-worker", container: "agentmesh_hub_worker", port: null },
91
- { name: "admin", container: "agentmesh_admin", port: 3778 },
92
- { name: "nginx", container: "agentmesh_nginx", port: 80 },
289
+ { name: "postgres", container: `${prefix}_postgres`, port: 5432 },
290
+ { name: "valkey", container: `${prefix}_valkey`, port: 6379 },
291
+ { name: "hub-api", container: `${prefix}_hub_api`, port: 3777 },
292
+ { name: "hub-worker", container: `${prefix}_hub_worker`, port: null },
293
+ { name: "admin", container: `${prefix}_admin`, port: 3778 },
294
+ { name: "nginx", container: `${prefix}_nginx`, port: 80 },
93
295
  ];
94
296
  console.log(pc.bold("AgentMesh Local Stack Status"));
297
+ if (options.project || slot > 0) {
298
+ const labels = [];
299
+ if (options.project)
300
+ labels.push(`project: ${options.project}`);
301
+ if (slot > 0)
302
+ labels.push(`slot: ${slot}`);
303
+ console.log(pc.dim(` (${labels.join(", ")})`));
304
+ }
95
305
  console.log();
96
306
  console.log(pc.dim(`${"Service".padEnd(15) + "Status".padEnd(12) + "Health".padEnd(10)}Port`));
97
307
  console.log(pc.dim("-".repeat(50)));
@@ -112,23 +322,31 @@ export async function localStatus() {
112
322
  }
113
323
  console.log();
114
324
  if (anyRunning) {
115
- const nginxPort = getContainerPort("agentmesh_nginx", 80) || "3000";
325
+ const nginxPort = getContainerPort(`${prefix}_nginx`, 80) || String(slotPort(80, slot));
116
326
  console.log(pc.bold("Access:"));
117
327
  console.log(` Admin UI: ${pc.cyan(`http://localhost:${nginxPort}/admin`)}`);
118
328
  console.log(` API: ${pc.cyan(`http://localhost:${nginxPort}/api`)}`);
119
329
  console.log();
120
330
  console.log(pc.bold("Commands:"));
121
- console.log(` Stop: ${pc.cyan("agentmesh local down")}`);
122
- console.log(` Logs: ${pc.cyan("docker compose -f docker/docker-compose.local.yml logs -f")}`);
331
+ const stopCmd = buildStopCmd(options);
332
+ console.log(` Stop: ${pc.cyan(stopCmd)}`);
333
+ const logsSuffix = options.target
334
+ ? ` -f ${options.target}`
335
+ : ` -f docker/docker-compose.local.yml`;
336
+ console.log(` Logs: ${pc.cyan(`docker compose${logsSuffix} logs -f`)}`);
123
337
  }
124
338
  else {
125
- console.log(pc.dim("No services running. Start with: agentmesh local up"));
339
+ const startCmd = buildStartCmd(options);
340
+ console.log(pc.dim(`No services running. Start with: ${startCmd}`));
126
341
  }
127
342
  }
343
+ // ─────────────────────────────────────────────
344
+ // localLogs (Part A)
345
+ // ─────────────────────────────────────────────
128
346
  export async function localLogs(options = {}) {
129
- const projectRoot = findProjectRoot();
130
- const composePath = path.join(projectRoot, COMPOSE_FILE);
131
- const args = ["compose", "-f", composePath, "logs"];
347
+ const { projectRoot, composePath } = resolveComposePath(options.target);
348
+ const { baseArgs, envOverrides } = buildComposeArgs(composePath, options.project, options.slot);
349
+ const args = ["compose", ...baseArgs, "logs"];
132
350
  if (options.follow)
133
351
  args.push("-f");
134
352
  if (options.service)
@@ -136,6 +354,71 @@ export async function localLogs(options = {}) {
136
354
  spawn("docker", args, {
137
355
  cwd: projectRoot,
138
356
  stdio: "inherit",
357
+ env: { ...process.env, ...envOverrides },
139
358
  });
140
359
  }
360
+ // ─────────────────────────────────────────────
361
+ // localDoctor — preflight-only check (Part B)
362
+ // ─────────────────────────────────────────────
363
+ export async function localDoctor(options = {}) {
364
+ console.log(pc.bold("AgentMesh Local Preflight Check"));
365
+ console.log();
366
+ const preflight = await runPreflight(options);
367
+ if (preflight.ok) {
368
+ console.log(pc.green("All preflight checks passed."));
369
+ }
370
+ else {
371
+ for (const err of preflight.errors) {
372
+ console.error(pc.red(` ${err}`));
373
+ }
374
+ process.exit(1);
375
+ }
376
+ }
377
+ // ─────────────────────────────────────────────
378
+ // localSmoke — quick smoke test
379
+ // ─────────────────────────────────────────────
380
+ export async function localSmoke(options = {}) {
381
+ const slot = options.slot ?? 0;
382
+ const nginxPort = slotPort(80, slot);
383
+ const apiUrl = `http://localhost:${nginxPort}/api/v1/health`;
384
+ console.log(pc.bold("AgentMesh Local Smoke Test"));
385
+ console.log(pc.dim(` Checking ${apiUrl}...`));
386
+ try {
387
+ const res = await fetch(apiUrl, { signal: AbortSignal.timeout(5000) });
388
+ if (res.ok) {
389
+ console.log(pc.green(" Smoke test passed — API is reachable."));
390
+ }
391
+ else {
392
+ console.error(pc.red(` Smoke test failed — status ${res.status}`));
393
+ process.exit(1);
394
+ }
395
+ }
396
+ catch (err) {
397
+ console.error(pc.red(` Smoke test failed — ${err.message}`));
398
+ process.exit(1);
399
+ }
400
+ }
401
+ // ─────────────────────────────────────────────
402
+ // Helpers for help text
403
+ // ─────────────────────────────────────────────
404
+ function buildStopCmd(options) {
405
+ const parts = ["agentmesh local down"];
406
+ if (options.target)
407
+ parts.push(`--target ${options.target}`);
408
+ if (options.slot !== undefined)
409
+ parts.push(`--slot ${options.slot}`);
410
+ if (options.project)
411
+ parts.push(`--project ${options.project}`);
412
+ return parts.join(" ");
413
+ }
414
+ function buildStartCmd(options) {
415
+ const parts = ["agentmesh local up"];
416
+ if (options.target)
417
+ parts.push(`--target ${options.target}`);
418
+ if (options.slot !== undefined)
419
+ parts.push(`--slot ${options.slot}`);
420
+ if (options.project)
421
+ parts.push(`--project ${options.project}`);
422
+ return parts.join(" ");
423
+ }
141
424
  //# sourceMappingURL=local.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"local.js","sourceRoot":"","sources":["../../src/cli/local.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"local.js","sourceRoot":"","sources":["../../src/cli/local.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Ready CLI Command
3
+ * Shows available unassigned work
4
+ */
5
+ export declare function ready(): Promise<void>;
@@ -0,0 +1,131 @@
1
+ /**
2
+ * Ready CLI Command
3
+ * Shows available unassigned work
4
+ */
5
+ import pc from "picocolors";
6
+ import { getAgentState, loadConfig } from "../config/loader.js";
7
+ import { loadCache } from "../core/issue-cache.js";
8
+ async function getHubUrl() {
9
+ const config = loadConfig();
10
+ return config?.hubUrl || process.env.AGENTMESH_HUB_URL || "https://agentmeshhq.dev";
11
+ }
12
+ async function getToken() {
13
+ const state = getAgentState(process.env.AGENT_NAME || "");
14
+ if (state?.token)
15
+ return state.token;
16
+ if (process.env.AGENT_TOKEN)
17
+ return process.env.AGENT_TOKEN;
18
+ return null;
19
+ }
20
+ async function getWorkspace() {
21
+ const config = loadConfig();
22
+ return config?.workspace || process.env.AGENTMESH_WORKSPACE || "agentmesh";
23
+ }
24
+ async function apiRequest(path) {
25
+ const hubUrl = await getHubUrl();
26
+ const token = await getToken();
27
+ try {
28
+ const response = await fetch(`${hubUrl}${path}`, {
29
+ headers: {
30
+ "Content-Type": "application/json",
31
+ ...(token && { Authorization: `Bearer ${token}` }),
32
+ },
33
+ });
34
+ if (!response.ok) {
35
+ const error = await response.json().catch(() => ({ error: response.statusText }));
36
+ return { error: error.error || response.statusText };
37
+ }
38
+ const data = await response.json();
39
+ return { data: data };
40
+ }
41
+ catch (err) {
42
+ return { error: err.message };
43
+ }
44
+ }
45
+ function _getPriorityColor(priority) {
46
+ switch (priority) {
47
+ case "P0":
48
+ return pc.red;
49
+ case "P1":
50
+ return (s) => pc.yellow(pc.bold(s));
51
+ case "P2":
52
+ return pc.yellow;
53
+ default:
54
+ return pc.dim;
55
+ }
56
+ }
57
+ function getTypeIcon(type) {
58
+ switch (type) {
59
+ case "bug":
60
+ return "!";
61
+ case "feature":
62
+ return "+";
63
+ case "task":
64
+ return "-";
65
+ case "epic":
66
+ return "*";
67
+ default:
68
+ return "-";
69
+ }
70
+ }
71
+ export async function ready() {
72
+ console.log(pc.bold("Available Work"));
73
+ console.log();
74
+ const result = await apiRequest("/api/v1/agents/me/ready");
75
+ if (result.error) {
76
+ if (result.error.includes("fetch") || result.error.includes("network")) {
77
+ console.log(pc.yellow("Offline - showing cached unassigned issues"));
78
+ const workspace = await getWorkspace();
79
+ const cache = loadCache(workspace);
80
+ const unassigned = cache.issues.filter((i) => !i.assignee_agent_id && !i.assignee_user_id && i.status === "open");
81
+ displayReadyWork(unassigned);
82
+ return;
83
+ }
84
+ console.error(pc.red(`Error: ${result.error}`));
85
+ process.exit(1);
86
+ }
87
+ displayReadyWork(result.data?.issues || []);
88
+ }
89
+ function displayReadyWork(issues) {
90
+ if (issues.length === 0) {
91
+ console.log(pc.green("No unassigned work available. All caught up!"));
92
+ return;
93
+ }
94
+ // Group by priority
95
+ const p0 = issues.filter((i) => i.priority === "P0");
96
+ const p1 = issues.filter((i) => i.priority === "P1");
97
+ const p2 = issues.filter((i) => i.priority === "P2");
98
+ const rest = issues.filter((i) => !["P0", "P1", "P2"].includes(i.priority || ""));
99
+ if (p0.length > 0) {
100
+ console.log(pc.red(pc.bold("Critical (P0)")));
101
+ for (const issue of p0) {
102
+ console.log(` ${getTypeIcon(issue.type)} ${pc.cyan(issue.issue_id)} ${issue.title}`);
103
+ }
104
+ console.log();
105
+ }
106
+ if (p1.length > 0) {
107
+ console.log(pc.yellow(pc.bold("High Priority (P1)")));
108
+ for (const issue of p1) {
109
+ console.log(` ${getTypeIcon(issue.type)} ${pc.cyan(issue.issue_id)} ${issue.title}`);
110
+ }
111
+ console.log();
112
+ }
113
+ if (p2.length > 0) {
114
+ console.log(pc.bold("Normal Priority (P2)"));
115
+ for (const issue of p2) {
116
+ console.log(` ${getTypeIcon(issue.type)} ${pc.cyan(issue.issue_id)} ${issue.title}`);
117
+ }
118
+ console.log();
119
+ }
120
+ if (rest.length > 0) {
121
+ console.log(pc.dim("Lower Priority"));
122
+ for (const issue of rest) {
123
+ console.log(` ${getTypeIcon(issue.type)} ${pc.cyan(issue.issue_id)} ${issue.title}`);
124
+ }
125
+ console.log();
126
+ }
127
+ console.log(pc.dim(`Total: ${issues.length} unassigned issue(s)`));
128
+ console.log();
129
+ console.log(`Claim an issue: ${pc.cyan("agentmesh issue claim <id>")}`);
130
+ }
131
+ //# sourceMappingURL=ready.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ready.js","sourceRoot":"","sources":["../../src/cli/ready.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Sync CLI Command
3
+ * Synchronize local cache with HQ
4
+ */
5
+ export interface SyncOptions {
6
+ force?: boolean;
7
+ }
8
+ export declare function sync(options?: SyncOptions): Promise<void>;