@ginkoai/cli 1.6.1 → 1.7.0

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 (246) hide show
  1. package/README.md +34 -0
  2. package/dist/commands/agent/agent-client.d.ts +150 -0
  3. package/dist/commands/agent/agent-client.d.ts.map +1 -0
  4. package/dist/commands/agent/agent-client.js +170 -0
  5. package/dist/commands/agent/agent-client.js.map +1 -0
  6. package/dist/commands/agent/index.d.ts +22 -0
  7. package/dist/commands/agent/index.d.ts.map +1 -0
  8. package/dist/commands/agent/index.js +121 -0
  9. package/dist/commands/agent/index.js.map +1 -0
  10. package/dist/commands/agent/list.d.ts +22 -0
  11. package/dist/commands/agent/list.d.ts.map +1 -0
  12. package/dist/commands/agent/list.js +119 -0
  13. package/dist/commands/agent/list.js.map +1 -0
  14. package/dist/commands/agent/register.d.ts +21 -0
  15. package/dist/commands/agent/register.d.ts.map +1 -0
  16. package/dist/commands/agent/register.js +97 -0
  17. package/dist/commands/agent/register.js.map +1 -0
  18. package/dist/commands/agent/status.d.ts +19 -0
  19. package/dist/commands/agent/status.d.ts.map +1 -0
  20. package/dist/commands/agent/status.js +271 -0
  21. package/dist/commands/agent/status.js.map +1 -0
  22. package/dist/commands/agent/work.d.ts +22 -0
  23. package/dist/commands/agent/work.d.ts.map +1 -0
  24. package/dist/commands/agent/work.js +459 -0
  25. package/dist/commands/agent/work.js.map +1 -0
  26. package/dist/commands/checkpoint/create.d.ts +27 -0
  27. package/dist/commands/checkpoint/create.d.ts.map +1 -0
  28. package/dist/commands/checkpoint/create.js +82 -0
  29. package/dist/commands/checkpoint/create.js.map +1 -0
  30. package/dist/commands/checkpoint/index.d.ts +23 -0
  31. package/dist/commands/checkpoint/index.d.ts.map +1 -0
  32. package/dist/commands/checkpoint/index.js +91 -0
  33. package/dist/commands/checkpoint/index.js.map +1 -0
  34. package/dist/commands/checkpoint/list.d.ts +27 -0
  35. package/dist/commands/checkpoint/list.d.ts.map +1 -0
  36. package/dist/commands/checkpoint/list.js +115 -0
  37. package/dist/commands/checkpoint/list.js.map +1 -0
  38. package/dist/commands/checkpoint/show.d.ts +23 -0
  39. package/dist/commands/checkpoint/show.d.ts.map +1 -0
  40. package/dist/commands/checkpoint/show.js +102 -0
  41. package/dist/commands/checkpoint/show.js.map +1 -0
  42. package/dist/commands/dlq.d.ts +24 -0
  43. package/dist/commands/dlq.d.ts.map +1 -0
  44. package/dist/commands/dlq.js +172 -0
  45. package/dist/commands/dlq.js.map +1 -0
  46. package/dist/commands/epic.d.ts +29 -0
  47. package/dist/commands/epic.d.ts.map +1 -0
  48. package/dist/commands/epic.js +322 -0
  49. package/dist/commands/epic.js.map +1 -0
  50. package/dist/commands/escalation/create.d.ts +22 -0
  51. package/dist/commands/escalation/create.d.ts.map +1 -0
  52. package/dist/commands/escalation/create.js +122 -0
  53. package/dist/commands/escalation/create.js.map +1 -0
  54. package/dist/commands/escalation/escalation-client.d.ts +101 -0
  55. package/dist/commands/escalation/escalation-client.d.ts.map +1 -0
  56. package/dist/commands/escalation/escalation-client.js +129 -0
  57. package/dist/commands/escalation/escalation-client.js.map +1 -0
  58. package/dist/commands/escalation/index.d.ts +22 -0
  59. package/dist/commands/escalation/index.d.ts.map +1 -0
  60. package/dist/commands/escalation/index.js +94 -0
  61. package/dist/commands/escalation/index.js.map +1 -0
  62. package/dist/commands/escalation/list.d.ts +24 -0
  63. package/dist/commands/escalation/list.d.ts.map +1 -0
  64. package/dist/commands/escalation/list.js +170 -0
  65. package/dist/commands/escalation/list.js.map +1 -0
  66. package/dist/commands/escalation/resolve.d.ts +20 -0
  67. package/dist/commands/escalation/resolve.d.ts.map +1 -0
  68. package/dist/commands/escalation/resolve.js +102 -0
  69. package/dist/commands/escalation/resolve.js.map +1 -0
  70. package/dist/commands/graph/api-client.d.ts +222 -1
  71. package/dist/commands/graph/api-client.d.ts.map +1 -1
  72. package/dist/commands/graph/api-client.js +82 -0
  73. package/dist/commands/graph/api-client.js.map +1 -1
  74. package/dist/commands/handoff.d.ts.map +1 -1
  75. package/dist/commands/handoff.js +9 -1
  76. package/dist/commands/handoff.js.map +1 -1
  77. package/dist/commands/log.d.ts +3 -0
  78. package/dist/commands/log.d.ts.map +1 -1
  79. package/dist/commands/log.js +110 -16
  80. package/dist/commands/log.js.map +1 -1
  81. package/dist/commands/notifications/history.d.ts +21 -0
  82. package/dist/commands/notifications/history.d.ts.map +1 -0
  83. package/dist/commands/notifications/history.js +160 -0
  84. package/dist/commands/notifications/history.js.map +1 -0
  85. package/dist/commands/notifications/index.d.ts +22 -0
  86. package/dist/commands/notifications/index.d.ts.map +1 -0
  87. package/dist/commands/notifications/index.js +87 -0
  88. package/dist/commands/notifications/index.js.map +1 -0
  89. package/dist/commands/notifications/list.d.ts +19 -0
  90. package/dist/commands/notifications/list.d.ts.map +1 -0
  91. package/dist/commands/notifications/list.js +132 -0
  92. package/dist/commands/notifications/list.js.map +1 -0
  93. package/dist/commands/notifications/test.d.ts +19 -0
  94. package/dist/commands/notifications/test.d.ts.map +1 -0
  95. package/dist/commands/notifications/test.js +217 -0
  96. package/dist/commands/notifications/test.js.map +1 -0
  97. package/dist/commands/orchestrate.d.ts +25 -0
  98. package/dist/commands/orchestrate.d.ts.map +1 -0
  99. package/dist/commands/orchestrate.js +858 -0
  100. package/dist/commands/orchestrate.js.map +1 -0
  101. package/dist/commands/sprint/deps.d.ts +29 -0
  102. package/dist/commands/sprint/deps.d.ts.map +1 -0
  103. package/dist/commands/sprint/deps.js +269 -0
  104. package/dist/commands/sprint/deps.js.map +1 -0
  105. package/dist/commands/sprint/index.d.ts +10 -5
  106. package/dist/commands/sprint/index.d.ts.map +1 -1
  107. package/dist/commands/sprint/index.js +26 -5
  108. package/dist/commands/sprint/index.js.map +1 -1
  109. package/dist/commands/start/index.d.ts.map +1 -1
  110. package/dist/commands/start/index.js +6 -0
  111. package/dist/commands/start/index.js.map +1 -1
  112. package/dist/commands/start/start-reflection.d.ts +11 -0
  113. package/dist/commands/start/start-reflection.d.ts.map +1 -1
  114. package/dist/commands/start/start-reflection.js +150 -12
  115. package/dist/commands/start/start-reflection.js.map +1 -1
  116. package/dist/commands/verify.d.ts +17 -0
  117. package/dist/commands/verify.d.ts.map +1 -0
  118. package/dist/commands/verify.js +232 -0
  119. package/dist/commands/verify.js.map +1 -0
  120. package/dist/core/session-log-manager.d.ts +1 -1
  121. package/dist/core/session-log-manager.d.ts.map +1 -1
  122. package/dist/core/session-log-manager.js +12 -3
  123. package/dist/core/session-log-manager.js.map +1 -1
  124. package/dist/index.js +98 -1
  125. package/dist/index.js.map +1 -1
  126. package/dist/lib/__tests__/task-timeout.test.d.ts +12 -0
  127. package/dist/lib/__tests__/task-timeout.test.d.ts.map +1 -0
  128. package/dist/lib/__tests__/task-timeout.test.js +278 -0
  129. package/dist/lib/__tests__/task-timeout.test.js.map +1 -0
  130. package/dist/lib/agent-heartbeat.d.ts +68 -0
  131. package/dist/lib/agent-heartbeat.d.ts.map +1 -0
  132. package/dist/lib/agent-heartbeat.js +117 -0
  133. package/dist/lib/agent-heartbeat.js.map +1 -0
  134. package/dist/lib/checkpoint.d.ts +85 -0
  135. package/dist/lib/checkpoint.d.ts.map +1 -0
  136. package/dist/lib/checkpoint.js +323 -0
  137. package/dist/lib/checkpoint.js.map +1 -0
  138. package/dist/lib/context-metrics.d.ts +230 -0
  139. package/dist/lib/context-metrics.d.ts.map +1 -0
  140. package/dist/lib/context-metrics.js +372 -0
  141. package/dist/lib/context-metrics.js.map +1 -0
  142. package/dist/lib/dead-letter-queue.d.ts +108 -0
  143. package/dist/lib/dead-letter-queue.d.ts.map +1 -0
  144. package/dist/lib/dead-letter-queue.js +378 -0
  145. package/dist/lib/dead-letter-queue.js.map +1 -0
  146. package/dist/lib/event-logger.d.ts +9 -1
  147. package/dist/lib/event-logger.d.ts.map +1 -1
  148. package/dist/lib/event-logger.js +45 -3
  149. package/dist/lib/event-logger.js.map +1 -1
  150. package/dist/lib/event-queue.d.ts.map +1 -1
  151. package/dist/lib/event-queue.js +13 -2
  152. package/dist/lib/event-queue.js.map +1 -1
  153. package/dist/lib/examples/timeout-demo.d.ts +13 -0
  154. package/dist/lib/examples/timeout-demo.d.ts.map +1 -0
  155. package/dist/lib/examples/timeout-demo.js +102 -0
  156. package/dist/lib/examples/timeout-demo.js.map +1 -0
  157. package/dist/lib/examples/timeout-integration-example.d.ts +17 -0
  158. package/dist/lib/examples/timeout-integration-example.d.ts.map +1 -0
  159. package/dist/lib/examples/timeout-integration-example.js +223 -0
  160. package/dist/lib/examples/timeout-integration-example.js.map +1 -0
  161. package/dist/lib/notification-hooks.d.ts +103 -0
  162. package/dist/lib/notification-hooks.d.ts.map +1 -0
  163. package/dist/lib/notification-hooks.js +223 -0
  164. package/dist/lib/notification-hooks.js.map +1 -0
  165. package/dist/lib/notifications/discord.d.ts +20 -0
  166. package/dist/lib/notifications/discord.d.ts.map +1 -0
  167. package/dist/lib/notifications/discord.js +140 -0
  168. package/dist/lib/notifications/discord.js.map +1 -0
  169. package/dist/lib/notifications/index.d.ts +66 -0
  170. package/dist/lib/notifications/index.d.ts.map +1 -0
  171. package/dist/lib/notifications/index.js +120 -0
  172. package/dist/lib/notifications/index.js.map +1 -0
  173. package/dist/lib/notifications/slack.d.ts +20 -0
  174. package/dist/lib/notifications/slack.d.ts.map +1 -0
  175. package/dist/lib/notifications/slack.js +186 -0
  176. package/dist/lib/notifications/slack.js.map +1 -0
  177. package/dist/lib/notifications/teams.d.ts +20 -0
  178. package/dist/lib/notifications/teams.d.ts.map +1 -0
  179. package/dist/lib/notifications/teams.js +146 -0
  180. package/dist/lib/notifications/teams.js.map +1 -0
  181. package/dist/lib/notifications/webhook.d.ts +23 -0
  182. package/dist/lib/notifications/webhook.d.ts.map +1 -0
  183. package/dist/lib/notifications/webhook.js +65 -0
  184. package/dist/lib/notifications/webhook.js.map +1 -0
  185. package/dist/lib/orchestrator-state.d.ts +194 -0
  186. package/dist/lib/orchestrator-state.d.ts.map +1 -0
  187. package/dist/lib/orchestrator-state.js +332 -0
  188. package/dist/lib/orchestrator-state.js.map +1 -0
  189. package/dist/lib/output-formatter.d.ts +25 -1
  190. package/dist/lib/output-formatter.d.ts.map +1 -1
  191. package/dist/lib/output-formatter.js +37 -17
  192. package/dist/lib/output-formatter.js.map +1 -1
  193. package/dist/lib/realtime-cursor.d.ts +107 -0
  194. package/dist/lib/realtime-cursor.d.ts.map +1 -0
  195. package/dist/lib/realtime-cursor.js +260 -0
  196. package/dist/lib/realtime-cursor.js.map +1 -0
  197. package/dist/lib/rollback.d.ts +86 -0
  198. package/dist/lib/rollback.d.ts.map +1 -0
  199. package/dist/lib/rollback.js +405 -0
  200. package/dist/lib/rollback.js.map +1 -0
  201. package/dist/lib/sprint-loader.d.ts +41 -2
  202. package/dist/lib/sprint-loader.d.ts.map +1 -1
  203. package/dist/lib/sprint-loader.js +335 -9
  204. package/dist/lib/sprint-loader.js.map +1 -1
  205. package/dist/lib/stale-agent-detector.d.ts +102 -0
  206. package/dist/lib/stale-agent-detector.d.ts.map +1 -0
  207. package/dist/lib/stale-agent-detector.js +156 -0
  208. package/dist/lib/stale-agent-detector.js.map +1 -0
  209. package/dist/lib/task-dependencies.d.ts +143 -0
  210. package/dist/lib/task-dependencies.d.ts.map +1 -0
  211. package/dist/lib/task-dependencies.js +357 -0
  212. package/dist/lib/task-dependencies.js.map +1 -0
  213. package/dist/lib/task-timeout.d.ts +153 -0
  214. package/dist/lib/task-timeout.d.ts.map +1 -0
  215. package/dist/lib/task-timeout.js +505 -0
  216. package/dist/lib/task-timeout.js.map +1 -0
  217. package/dist/lib/verification/build-check.d.ts +55 -0
  218. package/dist/lib/verification/build-check.d.ts.map +1 -0
  219. package/dist/lib/verification/build-check.js +111 -0
  220. package/dist/lib/verification/build-check.js.map +1 -0
  221. package/dist/lib/verification/index.d.ts +19 -0
  222. package/dist/lib/verification/index.d.ts.map +1 -0
  223. package/dist/lib/verification/index.js +17 -0
  224. package/dist/lib/verification/index.js.map +1 -0
  225. package/dist/lib/verification/lint-check.d.ts +34 -0
  226. package/dist/lib/verification/lint-check.d.ts.map +1 -0
  227. package/dist/lib/verification/lint-check.js +215 -0
  228. package/dist/lib/verification/lint-check.js.map +1 -0
  229. package/dist/lib/verification/test-runner.d.ts +50 -0
  230. package/dist/lib/verification/test-runner.d.ts.map +1 -0
  231. package/dist/lib/verification/test-runner.js +225 -0
  232. package/dist/lib/verification/test-runner.js.map +1 -0
  233. package/dist/templates/ai-instructions-template.d.ts +3 -2
  234. package/dist/templates/ai-instructions-template.d.ts.map +1 -1
  235. package/dist/templates/ai-instructions-template.js +104 -2
  236. package/dist/templates/ai-instructions-template.js.map +1 -1
  237. package/dist/templates/epic-template.md +319 -0
  238. package/dist/utils/command-helpers.d.ts +10 -0
  239. package/dist/utils/command-helpers.d.ts.map +1 -1
  240. package/dist/utils/command-helpers.js +59 -1
  241. package/dist/utils/command-helpers.js.map +1 -1
  242. package/dist/utils/pattern-confidence.d.ts +82 -0
  243. package/dist/utils/pattern-confidence.d.ts.map +1 -0
  244. package/dist/utils/pattern-confidence.js +172 -0
  245. package/dist/utils/pattern-confidence.js.map +1 -0
  246. package/package.json +1 -1
@@ -0,0 +1,119 @@
1
+ /**
2
+ * @fileType: command
3
+ * @status: current
4
+ * @updated: 2025-12-05
5
+ * @tags: [agent, list, cli, epic-004, multi-agent]
6
+ * @related: [index.ts, agent-client.ts]
7
+ * @priority: high
8
+ * @complexity: low
9
+ * @dependencies: [commander, chalk, ora]
10
+ */
11
+ /**
12
+ * List Agents Command (EPIC-004 Sprint 1 TASK-6)
13
+ *
14
+ * List agents with optional filtering by status or capability
15
+ */
16
+ import chalk from 'chalk';
17
+ import ora from 'ora';
18
+ import { AgentClient } from './agent-client.js';
19
+ /**
20
+ * List agents with optional filtering
21
+ */
22
+ export async function listAgentsCommand(options) {
23
+ const spinner = ora('Fetching agents...').start();
24
+ try {
25
+ const limit = parseInt(options.limit || '20', 10);
26
+ const offset = parseInt(options.offset || '0', 10);
27
+ const response = await AgentClient.list({
28
+ status: options.status,
29
+ capability: options.capability,
30
+ limit,
31
+ offset,
32
+ });
33
+ spinner.succeed(chalk.green(`Found ${response.total} agent${response.total === 1 ? '' : 's'}`));
34
+ console.log('');
35
+ if (response.agents.length === 0) {
36
+ console.log(chalk.dim(' No agents found'));
37
+ if (options.status || options.capability) {
38
+ console.log('');
39
+ console.log(chalk.dim('💡 Try removing filters to see all agents:'));
40
+ console.log(chalk.dim(' ginko agent list'));
41
+ }
42
+ else {
43
+ console.log('');
44
+ console.log(chalk.dim('💡 Register your first agent:'));
45
+ console.log(chalk.dim(' ginko agent register --name "Worker-1" --capabilities typescript,testing'));
46
+ }
47
+ return;
48
+ }
49
+ // Display agents in a table-like format
50
+ response.agents.forEach((agent, index) => {
51
+ console.log(chalk.bold(` ${agent.name}`));
52
+ console.log(chalk.dim(` ├─ ID: ${agent.id}`));
53
+ console.log(chalk.dim(` ├─ Status: ${getStatusBadge(agent.status)}`));
54
+ console.log(chalk.dim(` ├─ Capabilities: ${agent.capabilities.join(', ')}`));
55
+ console.log(chalk.dim(` ├─ Organization: ${agent.organizationId}`));
56
+ console.log(chalk.dim(` ├─ Created: ${formatDate(agent.createdAt)}`));
57
+ console.log(chalk.dim(` └─ Updated: ${formatDate(agent.updatedAt)}`));
58
+ // Add spacing between agents (except last one)
59
+ if (index < response.agents.length - 1) {
60
+ console.log('');
61
+ }
62
+ });
63
+ // Pagination info
64
+ if (response.total > response.limit) {
65
+ console.log('');
66
+ console.log(chalk.dim(` Showing ${response.offset + 1}-${Math.min(response.offset + response.limit, response.total)} of ${response.total} agents`));
67
+ if (response.offset + response.limit < response.total) {
68
+ const nextOffset = response.offset + response.limit;
69
+ console.log('');
70
+ console.log(chalk.dim('💡 View more:'));
71
+ console.log(chalk.dim(` ginko agent list --offset ${nextOffset}`));
72
+ }
73
+ }
74
+ }
75
+ catch (error) {
76
+ spinner.fail(chalk.red('Failed to list agents'));
77
+ // Handle specific error codes
78
+ if (error.message.includes('Not authenticated')) {
79
+ console.error(chalk.red(' Not authenticated. Run `ginko login` first.'));
80
+ }
81
+ else if (error.message.includes('INVALID_STATUS')) {
82
+ console.error(chalk.red(' Invalid status. Must be one of: active, idle, busy, offline'));
83
+ }
84
+ else {
85
+ console.error(chalk.red(` ${error.message}`));
86
+ }
87
+ process.exit(1);
88
+ }
89
+ }
90
+ /**
91
+ * Get colored status badge
92
+ */
93
+ function getStatusBadge(status) {
94
+ switch (status) {
95
+ case 'active':
96
+ return chalk.green('● active');
97
+ case 'idle':
98
+ return chalk.yellow('● idle');
99
+ case 'busy':
100
+ return chalk.blue('● busy');
101
+ case 'offline':
102
+ return chalk.gray('● offline');
103
+ default:
104
+ return status;
105
+ }
106
+ }
107
+ /**
108
+ * Format ISO date string to readable format
109
+ */
110
+ function formatDate(isoString) {
111
+ try {
112
+ const date = new Date(isoString);
113
+ return date.toLocaleString();
114
+ }
115
+ catch {
116
+ return isoString;
117
+ }
118
+ }
119
+ //# sourceMappingURL=list.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list.js","sourceRoot":"","sources":["../../../src/commands/agent/list.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH;;;;GAIG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,GAAG,MAAM,KAAK,CAAC;AACtB,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAShD;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,OAAoB;IAC1D,MAAM,OAAO,GAAG,GAAG,CAAC,oBAAoB,CAAC,CAAC,KAAK,EAAE,CAAC;IAElD,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,QAAQ,CAAC,OAAO,CAAC,KAAK,IAAI,IAAI,EAAE,EAAE,CAAC,CAAC;QAClD,MAAM,MAAM,GAAG,QAAQ,CAAC,OAAO,CAAC,MAAM,IAAI,GAAG,EAAE,EAAE,CAAC,CAAC;QAEnD,MAAM,QAAQ,GAAG,MAAM,WAAW,CAAC,IAAI,CAAC;YACtC,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,UAAU,EAAE,OAAO,CAAC,UAAU;YAC9B,KAAK;YACL,MAAM;SACP,CAAC,CAAC;QAEH,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,QAAQ,CAAC,KAAK,SAAS,QAAQ,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;QAChG,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAEhB,IAAI,QAAQ,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACjC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC,CAAC;YAE5C,IAAI,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;gBACzC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;gBAChB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,4CAA4C,CAAC,CAAC,CAAC;gBACrE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC,CAAC;YAC/C,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;gBAChB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,+BAA+B,CAAC,CAAC,CAAC;gBACxD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,4EAA4E,CAAC,CAAC,CAAC;YACvG,CAAC;YACD,OAAO;QACT,CAAC;QAED,wCAAwC;QACxC,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;YACvC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;YAC3C,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,YAAY,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;YAC/C,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,gBAAgB,cAAc,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;YACvE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,sBAAsB,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;YAC9E,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,sBAAsB,KAAK,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC;YACrE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,iBAAiB,UAAU,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC;YACvE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,iBAAiB,UAAU,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC;YAEvE,+CAA+C;YAC/C,IAAI,KAAK,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACvC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAClB,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,kBAAkB;QAClB,IAAI,QAAQ,CAAC,KAAK,GAAG,QAAQ,CAAC,KAAK,EAAE,CAAC;YACpC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAChB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,aAAa,QAAQ,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,GAAG,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC,KAAK,CAAC,OAAO,QAAQ,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC;YAErJ,IAAI,QAAQ,CAAC,MAAM,GAAG,QAAQ,CAAC,KAAK,GAAG,QAAQ,CAAC,KAAK,EAAE,CAAC;gBACtD,MAAM,UAAU,GAAG,QAAQ,CAAC,MAAM,GAAG,QAAQ,CAAC,KAAK,CAAC;gBACpD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;gBAChB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC,CAAC;gBACxC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,+BAA+B,UAAU,EAAE,CAAC,CAAC,CAAC;YACtE,CAAC;QACH,CAAC;IACH,CAAC;IAAC,OAAO,KAAU,EAAE,CAAC;QACpB,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC,CAAC;QAEjD,8BAA8B;QAC9B,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAC,EAAE,CAAC;YAChD,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,+CAA+C,CAAC,CAAC,CAAC;QAC5E,CAAC;aAAM,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAC,EAAE,CAAC;YACpD,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,+DAA+D,CAAC,CAAC,CAAC;QAC5F,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;QACjD,CAAC;QAED,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC;AAED;;GAEG;AACH,SAAS,cAAc,CAAC,MAAc;IACpC,QAAQ,MAAM,EAAE,CAAC;QACf,KAAK,QAAQ;YACX,OAAO,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;QACjC,KAAK,MAAM;YACT,OAAO,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAChC,KAAK,MAAM;YACT,OAAO,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC9B,KAAK,SAAS;YACZ,OAAO,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACjC;YACE,OAAO,MAAM,CAAC;IAClB,CAAC;AACH,CAAC;AAED;;GAEG;AACH,SAAS,UAAU,CAAC,SAAiB;IACnC,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC;QACjC,OAAO,IAAI,CAAC,cAAc,EAAE,CAAC;IAC/B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC"}
@@ -0,0 +1,21 @@
1
+ /**
2
+ * @fileType: command
3
+ * @status: current
4
+ * @updated: 2025-12-05
5
+ * @tags: [agent, register, cli, epic-004, multi-agent]
6
+ * @related: [index.ts, agent-client.ts]
7
+ * @priority: high
8
+ * @complexity: medium
9
+ * @dependencies: [commander, chalk, ora]
10
+ */
11
+ interface RegisterOptions {
12
+ name: string;
13
+ capabilities: string;
14
+ status?: 'active' | 'idle' | 'busy' | 'offline';
15
+ }
16
+ /**
17
+ * Register a new agent
18
+ */
19
+ export declare function registerAgentCommand(options: RegisterOptions): Promise<void>;
20
+ export {};
21
+ //# sourceMappingURL=register.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"register.d.ts","sourceRoot":"","sources":["../../../src/commands/agent/register.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAeH,UAAU,eAAe;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,QAAQ,GAAG,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;CACjD;AAWD;;GAEG;AACH,wBAAsB,oBAAoB,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CAkFlF"}
@@ -0,0 +1,97 @@
1
+ /**
2
+ * @fileType: command
3
+ * @status: current
4
+ * @updated: 2025-12-05
5
+ * @tags: [agent, register, cli, epic-004, multi-agent]
6
+ * @related: [index.ts, agent-client.ts]
7
+ * @priority: high
8
+ * @complexity: medium
9
+ * @dependencies: [commander, chalk, ora]
10
+ */
11
+ /**
12
+ * Register Agent Command (EPIC-004 Sprint 1 TASK-6)
13
+ *
14
+ * Register a new agent with capabilities and store ID locally
15
+ */
16
+ import chalk from 'chalk';
17
+ import ora from 'ora';
18
+ import fs from 'fs/promises';
19
+ import path from 'path';
20
+ import { AgentClient } from './agent-client.js';
21
+ import { requireGinkoRoot } from '../../utils/ginko-root.js';
22
+ /**
23
+ * Register a new agent
24
+ */
25
+ export async function registerAgentCommand(options) {
26
+ const spinner = ora('Registering agent...').start();
27
+ try {
28
+ // Parse capabilities (comma-separated)
29
+ const capabilities = options.capabilities
30
+ .split(',')
31
+ .map(c => c.trim())
32
+ .filter(c => c.length > 0);
33
+ if (capabilities.length === 0) {
34
+ spinner.fail(chalk.red('Failed to register agent'));
35
+ console.error(chalk.red(' At least one capability is required'));
36
+ process.exit(1);
37
+ }
38
+ // Register agent via API
39
+ const response = await AgentClient.register({
40
+ name: options.name,
41
+ capabilities,
42
+ status: options.status || 'active',
43
+ });
44
+ if (!response.agentId) {
45
+ spinner.fail(chalk.red('Failed to register agent'));
46
+ console.error(chalk.red(' No agent ID returned from API'));
47
+ process.exit(1);
48
+ }
49
+ // Store agent config locally in .ginko/agent.json
50
+ const projectRoot = await requireGinkoRoot();
51
+ const ginkoDir = path.join(projectRoot, '.ginko');
52
+ const agentConfigPath = path.join(ginkoDir, 'agent.json');
53
+ const agentConfig = {
54
+ agentId: response.agentId,
55
+ name: response.name,
56
+ capabilities: response.capabilities,
57
+ status: response.status,
58
+ organizationId: response.organizationId,
59
+ registeredAt: response.createdAt,
60
+ };
61
+ // Ensure .ginko directory exists
62
+ await fs.mkdir(ginkoDir, { recursive: true });
63
+ // Write agent config
64
+ await fs.writeFile(agentConfigPath, JSON.stringify(agentConfig, null, 2), 'utf-8');
65
+ spinner.succeed(chalk.green('Agent registered successfully'));
66
+ console.log('');
67
+ console.log(chalk.bold(` ${response.name}`));
68
+ console.log(chalk.dim(` ID: ${response.agentId}`));
69
+ console.log(chalk.dim(` Organization: ${response.organizationId}`));
70
+ console.log(chalk.dim(` Status: ${response.status}`));
71
+ console.log(chalk.dim(` Capabilities: ${response.capabilities.join(', ')}`));
72
+ console.log('');
73
+ console.log(chalk.dim(' Config stored at: .ginko/agent.json'));
74
+ console.log('');
75
+ console.log(chalk.dim('💡 Next steps:'));
76
+ console.log(chalk.dim(' ginko agent list # List all agents'));
77
+ console.log(chalk.dim(' ginko agent status # View current agent'));
78
+ }
79
+ catch (error) {
80
+ spinner.fail(chalk.red('Failed to register agent'));
81
+ // Handle specific error codes
82
+ if (error.message.includes('Not authenticated')) {
83
+ console.error(chalk.red(' Not authenticated. Run `ginko login` first.'));
84
+ }
85
+ else if (error.message.includes('MISSING_NAME')) {
86
+ console.error(chalk.red(' Agent name is required'));
87
+ }
88
+ else if (error.message.includes('MISSING_CAPABILITIES')) {
89
+ console.error(chalk.red(' At least one capability is required'));
90
+ }
91
+ else {
92
+ console.error(chalk.red(` ${error.message}`));
93
+ }
94
+ process.exit(1);
95
+ }
96
+ }
97
+ //# sourceMappingURL=register.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"register.js","sourceRoot":"","sources":["../../../src/commands/agent/register.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ /**
2
+ * @fileType: command
3
+ * @status: current
4
+ * @updated: 2025-12-05
5
+ * @tags: [agent, status, cli, epic-004, multi-agent, sprint-2]
6
+ * @related: [index.ts, agent-client.ts, list.ts]
7
+ * @priority: high
8
+ * @complexity: medium
9
+ * @dependencies: [commander, chalk, ora]
10
+ */
11
+ interface StatusOptions {
12
+ all?: boolean;
13
+ }
14
+ /**
15
+ * Enhanced agent status command (Sprint 2 TASK-6)
16
+ */
17
+ export declare function statusAgentCommand(options?: StatusOptions): Promise<void>;
18
+ export { statusAgentCommand as default };
19
+ //# sourceMappingURL=status.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../../src/commands/agent/status.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAmDH,UAAU,aAAa;IACrB,GAAG,CAAC,EAAE,OAAO,CAAC;CACf;AAED;;GAEG;AACH,wBAAsB,kBAAkB,CAAC,OAAO,GAAE,aAAkB,GAAG,OAAO,CAAC,IAAI,CAAC,CA8HnF;AAwID,OAAO,EAAE,kBAAkB,IAAI,OAAO,EAAE,CAAC"}
@@ -0,0 +1,271 @@
1
+ /**
2
+ * @fileType: command
3
+ * @status: current
4
+ * @updated: 2025-12-05
5
+ * @tags: [agent, status, cli, epic-004, multi-agent, sprint-2]
6
+ * @related: [index.ts, agent-client.ts, list.ts]
7
+ * @priority: high
8
+ * @complexity: medium
9
+ * @dependencies: [commander, chalk, ora]
10
+ */
11
+ /**
12
+ * Agent Status Command (EPIC-004 Sprint 2 TASK-6)
13
+ *
14
+ * Enhanced status command that shows:
15
+ * - All agents in the project
16
+ * - Current task for busy agents
17
+ * - Active blockers
18
+ * - Time since last heartbeat
19
+ */
20
+ import chalk from 'chalk';
21
+ import ora from 'ora';
22
+ import fs from 'fs/promises';
23
+ import path from 'path';
24
+ import { requireGinkoRoot } from '../../utils/ginko-root.js';
25
+ import { AgentClient } from './agent-client.js';
26
+ import { getAccessToken, isAuthenticated } from '../../utils/auth-storage.js';
27
+ /**
28
+ * Enhanced agent status command (Sprint 2 TASK-6)
29
+ */
30
+ export async function statusAgentCommand(options = {}) {
31
+ const spinner = ora('Loading agent status...').start();
32
+ try {
33
+ const projectRoot = await requireGinkoRoot();
34
+ const agentConfigPath = path.join(projectRoot, '.ginko', 'agent.json');
35
+ // Load local agent config if exists
36
+ let localConfig = null;
37
+ try {
38
+ const configData = await fs.readFile(agentConfigPath, 'utf-8');
39
+ localConfig = JSON.parse(configData);
40
+ }
41
+ catch {
42
+ // No local agent - that's ok
43
+ }
44
+ // Check if authenticated for API access
45
+ const authenticated = await isAuthenticated();
46
+ if (!authenticated) {
47
+ spinner.warn(chalk.yellow('Not authenticated - showing local status only'));
48
+ console.log('');
49
+ if (localConfig) {
50
+ displayLocalAgent(localConfig);
51
+ }
52
+ else {
53
+ console.log(chalk.dim(' No agent registered locally'));
54
+ console.log('');
55
+ console.log(chalk.dim('💡 Register an agent:'));
56
+ console.log(chalk.dim(' ginko agent register --name "Worker-1" --capabilities typescript,testing'));
57
+ }
58
+ console.log('');
59
+ console.log(chalk.dim('💡 Login to see all agents:'));
60
+ console.log(chalk.dim(' ginko login'));
61
+ return;
62
+ }
63
+ // Fetch all agents from API
64
+ const agentsResponse = await AgentClient.list({ limit: 50 });
65
+ const agents = agentsResponse.agents;
66
+ // Fetch active blockers
67
+ const blockers = await fetchActiveBlockers();
68
+ spinner.succeed(chalk.green('Agent Status'));
69
+ console.log('');
70
+ // Display active agents section
71
+ const activeAgents = agents.filter(a => a.status === 'busy');
72
+ const idleAgents = agents.filter(a => a.status === 'idle' || a.status === 'active');
73
+ const offlineAgents = agents.filter(a => a.status === 'offline');
74
+ console.log(chalk.bold(`Active Agents (${activeAgents.length}):`));
75
+ if (activeAgents.length === 0) {
76
+ console.log(chalk.dim(' No agents currently busy'));
77
+ }
78
+ else {
79
+ for (const agent of activeAgents) {
80
+ const timeSince = getTimeSince(agent.updatedAt);
81
+ const taskInfo = agent.metadata?.currentTask
82
+ ? chalk.cyan(agent.metadata.currentTask)
83
+ : chalk.dim('(task unknown)');
84
+ console.log(` ${formatAgentId(agent.id)} ${chalk.bold(agent.name)} ${getStatusBadge(agent.status)} ${taskInfo} ${chalk.dim(`(${timeSince} ago)`)}`);
85
+ }
86
+ }
87
+ console.log('');
88
+ // Display idle agents
89
+ if (idleAgents.length > 0) {
90
+ console.log(chalk.bold(`Idle Agents (${idleAgents.length}):`));
91
+ for (const agent of idleAgents) {
92
+ const timeSince = getTimeSince(agent.updatedAt);
93
+ console.log(` ${formatAgentId(agent.id)} ${chalk.bold(agent.name)} ${getStatusBadge(agent.status)} ${chalk.dim('-')} ${chalk.dim(`(${timeSince} ago)`)}`);
94
+ }
95
+ console.log('');
96
+ }
97
+ // Display offline agents (condensed)
98
+ if (offlineAgents.length > 0) {
99
+ console.log(chalk.dim(`Offline Agents (${offlineAgents.length}): ${offlineAgents.map(a => a.name).join(', ')}`));
100
+ console.log('');
101
+ }
102
+ // Display blockers section
103
+ if (blockers.length > 0) {
104
+ console.log(chalk.bold(`Blockers (${blockers.length}):`));
105
+ for (const blocker of blockers) {
106
+ const severityBadge = getSeverityBadge(blocker.blocker_severity);
107
+ const affectedTasks = blocker.blocking_tasks?.length
108
+ ? chalk.dim(`Affects: ${blocker.blocking_tasks.join(', ')}`)
109
+ : '';
110
+ console.log(` ${blocker.blocked_by} ${severityBadge}`);
111
+ console.log(chalk.dim(` ${truncate(blocker.description, 60)}`));
112
+ if (affectedTasks) {
113
+ console.log(` ${affectedTasks}`);
114
+ }
115
+ }
116
+ console.log('');
117
+ }
118
+ // Highlight current agent if registered locally
119
+ if (localConfig) {
120
+ const isCurrentActive = agents.find(a => a.id === localConfig.agentId);
121
+ if (isCurrentActive) {
122
+ console.log(chalk.dim(`You: ${localConfig.name} (${localConfig.agentId})`));
123
+ }
124
+ else {
125
+ console.log(chalk.yellow(`⚠ Your agent (${localConfig.name}) is not in the active list`));
126
+ console.log(chalk.dim(' It may have been unregistered or is in a different organization'));
127
+ }
128
+ console.log('');
129
+ }
130
+ // Summary
131
+ console.log(chalk.dim(`Total: ${agents.length} agents | ${activeAgents.length} busy | ${blockers.length} blockers`));
132
+ }
133
+ catch (error) {
134
+ spinner.fail(chalk.red('Failed to load agent status'));
135
+ if (error.message.includes('Not authenticated')) {
136
+ console.error(chalk.red(' Not authenticated. Run `ginko login` first.'));
137
+ }
138
+ else {
139
+ console.error(chalk.red(` ${error.message}`));
140
+ }
141
+ process.exit(1);
142
+ }
143
+ }
144
+ /**
145
+ * Display local agent config (fallback when not authenticated)
146
+ */
147
+ function displayLocalAgent(config) {
148
+ console.log(chalk.bold(` ${config.name}`));
149
+ console.log(chalk.dim(` ID: ${config.agentId}`));
150
+ console.log(chalk.dim(` Organization: ${config.organizationId}`));
151
+ console.log(chalk.dim(` Status: ${getStatusBadge(config.status)}`));
152
+ console.log(chalk.dim(` Capabilities: ${config.capabilities.join(', ')}`));
153
+ console.log(chalk.dim(` Registered: ${formatDate(config.registeredAt)}`));
154
+ console.log('');
155
+ console.log(chalk.dim(' Config stored at: .ginko/agent.json'));
156
+ }
157
+ /**
158
+ * Fetch active blocker events from API
159
+ */
160
+ async function fetchActiveBlockers() {
161
+ try {
162
+ const token = await getAccessToken();
163
+ if (!token)
164
+ return [];
165
+ const apiUrl = process.env.GINKO_API_URL || 'https://app.ginkoai.com';
166
+ // Query events stream for recent blockers (last 24 hours)
167
+ const since = new Date(Date.now() - 24 * 60 * 60 * 1000).toISOString();
168
+ const url = `${apiUrl}/api/v1/events/stream?categories=blocker&limit=10&since_time=${encodeURIComponent(since)}`;
169
+ const response = await fetch(url, {
170
+ headers: {
171
+ 'Authorization': `Bearer ${token}`,
172
+ 'Content-Type': 'application/json',
173
+ },
174
+ });
175
+ if (!response.ok) {
176
+ return [];
177
+ }
178
+ const data = await response.json();
179
+ return data.events || [];
180
+ }
181
+ catch {
182
+ // Blocker fetch is non-critical
183
+ return [];
184
+ }
185
+ }
186
+ /**
187
+ * Format agent ID (truncated for display)
188
+ */
189
+ function formatAgentId(id) {
190
+ return chalk.dim(id.substring(0, 12));
191
+ }
192
+ /**
193
+ * Get colored status badge
194
+ */
195
+ function getStatusBadge(status) {
196
+ switch (status) {
197
+ case 'active':
198
+ return chalk.green('● active');
199
+ case 'idle':
200
+ return chalk.yellow('● idle');
201
+ case 'busy':
202
+ return chalk.blue('● busy');
203
+ case 'offline':
204
+ return chalk.gray('● offline');
205
+ default:
206
+ return status;
207
+ }
208
+ }
209
+ /**
210
+ * Get colored severity badge
211
+ */
212
+ function getSeverityBadge(severity) {
213
+ switch (severity) {
214
+ case 'critical':
215
+ return chalk.bgRed.white(' CRITICAL ');
216
+ case 'high':
217
+ return chalk.red('HIGH');
218
+ case 'medium':
219
+ return chalk.yellow('MEDIUM');
220
+ case 'low':
221
+ return chalk.dim('LOW');
222
+ default:
223
+ return severity;
224
+ }
225
+ }
226
+ /**
227
+ * Format ISO date string to readable format
228
+ */
229
+ function formatDate(isoString) {
230
+ try {
231
+ const date = new Date(isoString);
232
+ return date.toLocaleString();
233
+ }
234
+ catch {
235
+ return isoString;
236
+ }
237
+ }
238
+ /**
239
+ * Get human-readable time since date
240
+ */
241
+ function getTimeSince(isoString) {
242
+ try {
243
+ const date = new Date(isoString);
244
+ const now = new Date();
245
+ const diffMs = now.getTime() - date.getTime();
246
+ const diffMins = Math.floor(diffMs / 60000);
247
+ if (diffMins < 1)
248
+ return '<1m';
249
+ if (diffMins < 60)
250
+ return `${diffMins}m`;
251
+ const diffHours = Math.floor(diffMins / 60);
252
+ if (diffHours < 24)
253
+ return `${diffHours}h`;
254
+ const diffDays = Math.floor(diffHours / 24);
255
+ return `${diffDays}d`;
256
+ }
257
+ catch {
258
+ return '?';
259
+ }
260
+ }
261
+ /**
262
+ * Truncate string with ellipsis
263
+ */
264
+ function truncate(str, maxLength) {
265
+ if (str.length <= maxLength)
266
+ return str;
267
+ return str.substring(0, maxLength - 3) + '...';
268
+ }
269
+ // Re-export for backwards compatibility
270
+ export { statusAgentCommand as default };
271
+ //# sourceMappingURL=status.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"status.js","sourceRoot":"","sources":["../../../src/commands/agent/status.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ /**
2
+ * @fileType: command
3
+ * @status: current
4
+ * @updated: 2025-12-07
5
+ * @tags: [agent, worker, cli, epic-004, sprint-4, multi-agent, context-loading]
6
+ * @related: [register.ts, agent-client.ts, ../start/index.ts, ../orchestrate.ts]
7
+ * @priority: high
8
+ * @complexity: high
9
+ * @dependencies: [commander, chalk, ora, agent-heartbeat, start, event-logger]
10
+ */
11
+ interface WorkOptions {
12
+ capabilities?: string;
13
+ name?: string;
14
+ pollInterval?: number;
15
+ maxTasks?: number;
16
+ }
17
+ /**
18
+ * Worker agent that loads context and polls for tasks
19
+ */
20
+ export declare function workAgentCommand(options: WorkOptions): Promise<void>;
21
+ export {};
22
+ //# sourceMappingURL=work.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"work.d.ts","sourceRoot":"","sources":["../../../src/commands/agent/work.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAsCH,UAAU,WAAW;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAgCD;;GAEG;AACH,wBAAsB,gBAAgB,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CA6M1E"}