@ginkoai/cli 1.6.2 → 1.7.1

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 (224) hide show
  1. package/dist/commands/agent/agent-client.d.ts +150 -0
  2. package/dist/commands/agent/agent-client.d.ts.map +1 -0
  3. package/dist/commands/agent/agent-client.js +170 -0
  4. package/dist/commands/agent/agent-client.js.map +1 -0
  5. package/dist/commands/agent/index.d.ts +22 -0
  6. package/dist/commands/agent/index.d.ts.map +1 -0
  7. package/dist/commands/agent/index.js +121 -0
  8. package/dist/commands/agent/index.js.map +1 -0
  9. package/dist/commands/agent/list.d.ts +22 -0
  10. package/dist/commands/agent/list.d.ts.map +1 -0
  11. package/dist/commands/agent/list.js +119 -0
  12. package/dist/commands/agent/list.js.map +1 -0
  13. package/dist/commands/agent/register.d.ts +21 -0
  14. package/dist/commands/agent/register.d.ts.map +1 -0
  15. package/dist/commands/agent/register.js +97 -0
  16. package/dist/commands/agent/register.js.map +1 -0
  17. package/dist/commands/agent/status.d.ts +19 -0
  18. package/dist/commands/agent/status.d.ts.map +1 -0
  19. package/dist/commands/agent/status.js +271 -0
  20. package/dist/commands/agent/status.js.map +1 -0
  21. package/dist/commands/agent/work.d.ts +22 -0
  22. package/dist/commands/agent/work.d.ts.map +1 -0
  23. package/dist/commands/agent/work.js +459 -0
  24. package/dist/commands/agent/work.js.map +1 -0
  25. package/dist/commands/checkpoint/create.d.ts +27 -0
  26. package/dist/commands/checkpoint/create.d.ts.map +1 -0
  27. package/dist/commands/checkpoint/create.js +82 -0
  28. package/dist/commands/checkpoint/create.js.map +1 -0
  29. package/dist/commands/checkpoint/index.d.ts +23 -0
  30. package/dist/commands/checkpoint/index.d.ts.map +1 -0
  31. package/dist/commands/checkpoint/index.js +91 -0
  32. package/dist/commands/checkpoint/index.js.map +1 -0
  33. package/dist/commands/checkpoint/list.d.ts +27 -0
  34. package/dist/commands/checkpoint/list.d.ts.map +1 -0
  35. package/dist/commands/checkpoint/list.js +115 -0
  36. package/dist/commands/checkpoint/list.js.map +1 -0
  37. package/dist/commands/checkpoint/show.d.ts +23 -0
  38. package/dist/commands/checkpoint/show.d.ts.map +1 -0
  39. package/dist/commands/checkpoint/show.js +102 -0
  40. package/dist/commands/checkpoint/show.js.map +1 -0
  41. package/dist/commands/dlq.d.ts +24 -0
  42. package/dist/commands/dlq.d.ts.map +1 -0
  43. package/dist/commands/dlq.js +172 -0
  44. package/dist/commands/dlq.js.map +1 -0
  45. package/dist/commands/escalation/create.d.ts +22 -0
  46. package/dist/commands/escalation/create.d.ts.map +1 -0
  47. package/dist/commands/escalation/create.js +122 -0
  48. package/dist/commands/escalation/create.js.map +1 -0
  49. package/dist/commands/escalation/escalation-client.d.ts +101 -0
  50. package/dist/commands/escalation/escalation-client.d.ts.map +1 -0
  51. package/dist/commands/escalation/escalation-client.js +129 -0
  52. package/dist/commands/escalation/escalation-client.js.map +1 -0
  53. package/dist/commands/escalation/index.d.ts +22 -0
  54. package/dist/commands/escalation/index.d.ts.map +1 -0
  55. package/dist/commands/escalation/index.js +94 -0
  56. package/dist/commands/escalation/index.js.map +1 -0
  57. package/dist/commands/escalation/list.d.ts +24 -0
  58. package/dist/commands/escalation/list.d.ts.map +1 -0
  59. package/dist/commands/escalation/list.js +170 -0
  60. package/dist/commands/escalation/list.js.map +1 -0
  61. package/dist/commands/escalation/resolve.d.ts +20 -0
  62. package/dist/commands/escalation/resolve.d.ts.map +1 -0
  63. package/dist/commands/escalation/resolve.js +102 -0
  64. package/dist/commands/escalation/resolve.js.map +1 -0
  65. package/dist/commands/graph/api-client.d.ts +21 -1
  66. package/dist/commands/graph/api-client.d.ts.map +1 -1
  67. package/dist/commands/graph/api-client.js +23 -0
  68. package/dist/commands/graph/api-client.js.map +1 -1
  69. package/dist/commands/handoff.d.ts.map +1 -1
  70. package/dist/commands/handoff.js +9 -1
  71. package/dist/commands/handoff.js.map +1 -1
  72. package/dist/commands/log.d.ts +3 -0
  73. package/dist/commands/log.d.ts.map +1 -1
  74. package/dist/commands/log.js +73 -14
  75. package/dist/commands/log.js.map +1 -1
  76. package/dist/commands/notifications/history.d.ts +21 -0
  77. package/dist/commands/notifications/history.d.ts.map +1 -0
  78. package/dist/commands/notifications/history.js +160 -0
  79. package/dist/commands/notifications/history.js.map +1 -0
  80. package/dist/commands/notifications/index.d.ts +22 -0
  81. package/dist/commands/notifications/index.d.ts.map +1 -0
  82. package/dist/commands/notifications/index.js +87 -0
  83. package/dist/commands/notifications/index.js.map +1 -0
  84. package/dist/commands/notifications/list.d.ts +19 -0
  85. package/dist/commands/notifications/list.d.ts.map +1 -0
  86. package/dist/commands/notifications/list.js +132 -0
  87. package/dist/commands/notifications/list.js.map +1 -0
  88. package/dist/commands/notifications/test.d.ts +19 -0
  89. package/dist/commands/notifications/test.d.ts.map +1 -0
  90. package/dist/commands/notifications/test.js +217 -0
  91. package/dist/commands/notifications/test.js.map +1 -0
  92. package/dist/commands/orchestrate.d.ts +25 -0
  93. package/dist/commands/orchestrate.d.ts.map +1 -0
  94. package/dist/commands/orchestrate.js +858 -0
  95. package/dist/commands/orchestrate.js.map +1 -0
  96. package/dist/commands/sprint/deps.d.ts +29 -0
  97. package/dist/commands/sprint/deps.d.ts.map +1 -0
  98. package/dist/commands/sprint/deps.js +269 -0
  99. package/dist/commands/sprint/deps.js.map +1 -0
  100. package/dist/commands/sprint/index.d.ts +10 -5
  101. package/dist/commands/sprint/index.d.ts.map +1 -1
  102. package/dist/commands/sprint/index.js +26 -5
  103. package/dist/commands/sprint/index.js.map +1 -1
  104. package/dist/commands/start/index.d.ts.map +1 -1
  105. package/dist/commands/start/index.js +6 -0
  106. package/dist/commands/start/index.js.map +1 -1
  107. package/dist/commands/start/start-reflection.d.ts.map +1 -1
  108. package/dist/commands/start/start-reflection.js +8 -0
  109. package/dist/commands/start/start-reflection.js.map +1 -1
  110. package/dist/commands/verify.d.ts +17 -0
  111. package/dist/commands/verify.d.ts.map +1 -0
  112. package/dist/commands/verify.js +232 -0
  113. package/dist/commands/verify.js.map +1 -0
  114. package/dist/core/session-log-manager.d.ts +1 -1
  115. package/dist/core/session-log-manager.d.ts.map +1 -1
  116. package/dist/index.js +78 -1
  117. package/dist/index.js.map +1 -1
  118. package/dist/lib/__tests__/task-timeout.test.d.ts +12 -0
  119. package/dist/lib/__tests__/task-timeout.test.d.ts.map +1 -0
  120. package/dist/lib/__tests__/task-timeout.test.js +278 -0
  121. package/dist/lib/__tests__/task-timeout.test.js.map +1 -0
  122. package/dist/lib/agent-heartbeat.d.ts +68 -0
  123. package/dist/lib/agent-heartbeat.d.ts.map +1 -0
  124. package/dist/lib/agent-heartbeat.js +117 -0
  125. package/dist/lib/agent-heartbeat.js.map +1 -0
  126. package/dist/lib/checkpoint.d.ts +85 -0
  127. package/dist/lib/checkpoint.d.ts.map +1 -0
  128. package/dist/lib/checkpoint.js +323 -0
  129. package/dist/lib/checkpoint.js.map +1 -0
  130. package/dist/lib/context-metrics.d.ts +230 -0
  131. package/dist/lib/context-metrics.d.ts.map +1 -0
  132. package/dist/lib/context-metrics.js +372 -0
  133. package/dist/lib/context-metrics.js.map +1 -0
  134. package/dist/lib/dead-letter-queue.d.ts +108 -0
  135. package/dist/lib/dead-letter-queue.d.ts.map +1 -0
  136. package/dist/lib/dead-letter-queue.js +378 -0
  137. package/dist/lib/dead-letter-queue.js.map +1 -0
  138. package/dist/lib/event-logger.d.ts +9 -1
  139. package/dist/lib/event-logger.d.ts.map +1 -1
  140. package/dist/lib/event-logger.js +45 -3
  141. package/dist/lib/event-logger.js.map +1 -1
  142. package/dist/lib/event-queue.d.ts.map +1 -1
  143. package/dist/lib/event-queue.js +13 -2
  144. package/dist/lib/event-queue.js.map +1 -1
  145. package/dist/lib/examples/timeout-demo.d.ts +13 -0
  146. package/dist/lib/examples/timeout-demo.d.ts.map +1 -0
  147. package/dist/lib/examples/timeout-demo.js +102 -0
  148. package/dist/lib/examples/timeout-demo.js.map +1 -0
  149. package/dist/lib/examples/timeout-integration-example.d.ts +17 -0
  150. package/dist/lib/examples/timeout-integration-example.d.ts.map +1 -0
  151. package/dist/lib/examples/timeout-integration-example.js +223 -0
  152. package/dist/lib/examples/timeout-integration-example.js.map +1 -0
  153. package/dist/lib/notification-hooks.d.ts +103 -0
  154. package/dist/lib/notification-hooks.d.ts.map +1 -0
  155. package/dist/lib/notification-hooks.js +223 -0
  156. package/dist/lib/notification-hooks.js.map +1 -0
  157. package/dist/lib/notifications/discord.d.ts +20 -0
  158. package/dist/lib/notifications/discord.d.ts.map +1 -0
  159. package/dist/lib/notifications/discord.js +140 -0
  160. package/dist/lib/notifications/discord.js.map +1 -0
  161. package/dist/lib/notifications/index.d.ts +66 -0
  162. package/dist/lib/notifications/index.d.ts.map +1 -0
  163. package/dist/lib/notifications/index.js +120 -0
  164. package/dist/lib/notifications/index.js.map +1 -0
  165. package/dist/lib/notifications/slack.d.ts +20 -0
  166. package/dist/lib/notifications/slack.d.ts.map +1 -0
  167. package/dist/lib/notifications/slack.js +186 -0
  168. package/dist/lib/notifications/slack.js.map +1 -0
  169. package/dist/lib/notifications/teams.d.ts +20 -0
  170. package/dist/lib/notifications/teams.d.ts.map +1 -0
  171. package/dist/lib/notifications/teams.js +146 -0
  172. package/dist/lib/notifications/teams.js.map +1 -0
  173. package/dist/lib/notifications/webhook.d.ts +23 -0
  174. package/dist/lib/notifications/webhook.d.ts.map +1 -0
  175. package/dist/lib/notifications/webhook.js +65 -0
  176. package/dist/lib/notifications/webhook.js.map +1 -0
  177. package/dist/lib/orchestrator-state.d.ts +194 -0
  178. package/dist/lib/orchestrator-state.d.ts.map +1 -0
  179. package/dist/lib/orchestrator-state.js +332 -0
  180. package/dist/lib/orchestrator-state.js.map +1 -0
  181. package/dist/lib/realtime-cursor.d.ts +107 -0
  182. package/dist/lib/realtime-cursor.d.ts.map +1 -0
  183. package/dist/lib/realtime-cursor.js +260 -0
  184. package/dist/lib/realtime-cursor.js.map +1 -0
  185. package/dist/lib/rollback.d.ts +86 -0
  186. package/dist/lib/rollback.d.ts.map +1 -0
  187. package/dist/lib/rollback.js +405 -0
  188. package/dist/lib/rollback.js.map +1 -0
  189. package/dist/lib/sprint-loader.d.ts +39 -2
  190. package/dist/lib/sprint-loader.d.ts.map +1 -1
  191. package/dist/lib/sprint-loader.js +269 -5
  192. package/dist/lib/sprint-loader.js.map +1 -1
  193. package/dist/lib/stale-agent-detector.d.ts +102 -0
  194. package/dist/lib/stale-agent-detector.d.ts.map +1 -0
  195. package/dist/lib/stale-agent-detector.js +156 -0
  196. package/dist/lib/stale-agent-detector.js.map +1 -0
  197. package/dist/lib/task-dependencies.d.ts +143 -0
  198. package/dist/lib/task-dependencies.d.ts.map +1 -0
  199. package/dist/lib/task-dependencies.js +357 -0
  200. package/dist/lib/task-dependencies.js.map +1 -0
  201. package/dist/lib/task-timeout.d.ts +153 -0
  202. package/dist/lib/task-timeout.d.ts.map +1 -0
  203. package/dist/lib/task-timeout.js +505 -0
  204. package/dist/lib/task-timeout.js.map +1 -0
  205. package/dist/lib/verification/build-check.d.ts +55 -0
  206. package/dist/lib/verification/build-check.d.ts.map +1 -0
  207. package/dist/lib/verification/build-check.js +111 -0
  208. package/dist/lib/verification/build-check.js.map +1 -0
  209. package/dist/lib/verification/index.d.ts +19 -0
  210. package/dist/lib/verification/index.d.ts.map +1 -0
  211. package/dist/lib/verification/index.js +17 -0
  212. package/dist/lib/verification/index.js.map +1 -0
  213. package/dist/lib/verification/lint-check.d.ts +34 -0
  214. package/dist/lib/verification/lint-check.d.ts.map +1 -0
  215. package/dist/lib/verification/lint-check.js +215 -0
  216. package/dist/lib/verification/lint-check.js.map +1 -0
  217. package/dist/lib/verification/test-runner.d.ts +50 -0
  218. package/dist/lib/verification/test-runner.d.ts.map +1 -0
  219. package/dist/lib/verification/test-runner.js +225 -0
  220. package/dist/lib/verification/test-runner.js.map +1 -0
  221. package/dist/utils/command-helpers.d.ts.map +1 -1
  222. package/dist/utils/command-helpers.js +7 -0
  223. package/dist/utils/command-helpers.js.map +1 -1
  224. package/package.json +1 -1
@@ -0,0 +1,91 @@
1
+ /**
2
+ * @fileType: command
3
+ * @status: current
4
+ * @updated: 2025-12-07
5
+ * @tags: [checkpoint, cli, epic-004-sprint5, task-1, resilience]
6
+ * @related: [create.ts, list.ts, show.ts, checkpoint.ts]
7
+ * @priority: high
8
+ * @complexity: medium
9
+ * @dependencies: [commander, chalk]
10
+ */
11
+ /**
12
+ * Checkpoint Commands (EPIC-004 Sprint 5 TASK-1)
13
+ *
14
+ * CLI commands for creating, listing, and inspecting checkpoints
15
+ * Checkpoints enable rollback and recovery for multi-agent task execution
16
+ */
17
+ import { Command } from 'commander';
18
+ import chalk from 'chalk';
19
+ import { createCheckpointCommand } from './create.js';
20
+ import { listCheckpointsCommand } from './list.js';
21
+ import { showCheckpointCommand } from './show.js';
22
+ /**
23
+ * Main checkpoint command with subcommands
24
+ */
25
+ export function checkpointCommand() {
26
+ const checkpoint = new Command('checkpoint')
27
+ .description('Manage checkpoints for task rollback and recovery (EPIC-004)')
28
+ .showHelpAfterError('(use --help for additional information)')
29
+ .addHelpText('after', `
30
+ ${chalk.gray('Quick Start:')}
31
+ ${chalk.green('ginko checkpoint create')} --task TASK-1 --message "Before refactor" ${chalk.gray('# Create checkpoint')}
32
+ ${chalk.green('ginko checkpoint list')} --task TASK-1 ${chalk.gray('# List task checkpoints')}
33
+ ${chalk.green('ginko checkpoint show')} cp_xxx ${chalk.gray('# Show checkpoint details')}
34
+
35
+ ${chalk.gray('Usage Examples:')}
36
+ ${chalk.green('ginko checkpoint create')} --task TASK-1 --message "Completed authentication"
37
+ ${chalk.green('ginko checkpoint create')} --task TASK-2 ${chalk.dim('# Auto-generated message')}
38
+ ${chalk.green('ginko checkpoint list')} ${chalk.dim('# List all checkpoints')}
39
+ ${chalk.green('ginko checkpoint list')} --task TASK-1 ${chalk.dim('# Filter by task')}
40
+ ${chalk.green('ginko checkpoint show')} cp_1701234567_a1b2c3d4
41
+
42
+ ${chalk.gray('Features:')}
43
+ ${chalk.cyan('📸 Lightweight Snapshots')} - Captures git commit, files, event stream position
44
+ ${chalk.cyan('🔄 Quick Recovery')} - Roll back to any checkpoint using git operations
45
+ ${chalk.cyan('🔍 Task Filtering')} - List checkpoints for specific tasks
46
+ ${chalk.cyan('📊 Detailed Inspection')} - View checkpoint metadata and state
47
+
48
+ ${chalk.gray('Checkpoint Structure:')}
49
+ ${chalk.dim('Checkpoints store references to work state:')}
50
+ ${chalk.dim('- Git commit hash (current HEAD)')}
51
+ ${chalk.dim('- Modified files since task start')}
52
+ ${chalk.dim('- Event stream position (last event ID)')}
53
+ ${chalk.dim('- Optional message and metadata')}
54
+
55
+ ${chalk.gray('Learn More:')}
56
+ ${chalk.dim('https://docs.ginko.ai/checkpoints')}
57
+ `)
58
+ .action(() => {
59
+ // When called without subcommand, show help
60
+ checkpoint.help({ error: false });
61
+ });
62
+ // Create command
63
+ checkpoint
64
+ .command('create')
65
+ .description('Create a checkpoint for current work state')
66
+ .requiredOption('--task <taskId>', 'Task ID for this checkpoint (e.g., TASK-1)')
67
+ .option('--message <message>', 'Optional description of checkpoint')
68
+ .option('--agent <agentId>', 'Agent ID (auto-detected if not provided)')
69
+ .action(async (options) => {
70
+ await createCheckpointCommand(options);
71
+ });
72
+ // List command
73
+ checkpoint
74
+ .command('list')
75
+ .description('List checkpoints with optional task filtering')
76
+ .option('--task <taskId>', 'Filter by task ID')
77
+ .action(async (options) => {
78
+ await listCheckpointsCommand(options);
79
+ });
80
+ // Show command
81
+ checkpoint
82
+ .command('show <checkpointId>')
83
+ .description('Show detailed checkpoint information')
84
+ .action(async (checkpointId) => {
85
+ await showCheckpointCommand(checkpointId);
86
+ });
87
+ return checkpoint;
88
+ }
89
+ // Export for use in main CLI
90
+ export default checkpointCommand;
91
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/checkpoint/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,27 @@
1
+ /**
2
+ * @fileType: command
3
+ * @status: current
4
+ * @updated: 2025-12-07
5
+ * @tags: [checkpoint, list, cli, epic-004-sprint5, task-1]
6
+ * @related: [checkpoint.ts, create.ts, show.ts]
7
+ * @priority: high
8
+ * @complexity: medium
9
+ * @dependencies: [chalk, cli-table3, checkpoint]
10
+ */
11
+ interface ListCheckpointsOptions {
12
+ task?: string;
13
+ }
14
+ /**
15
+ * List checkpoints with optional task filtering
16
+ *
17
+ * Displays:
18
+ * - Checkpoint ID
19
+ * - Timestamp
20
+ * - Git commit (short hash)
21
+ * - Modified file count
22
+ * - Message (if provided)
23
+ * - Latest marker
24
+ */
25
+ export declare function listCheckpointsCommand(options: ListCheckpointsOptions): Promise<void>;
26
+ export {};
27
+ //# sourceMappingURL=list.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../../src/commands/checkpoint/list.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAMH,UAAU,sBAAsB;IAC9B,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,sBAAsB,CAAC,OAAO,EAAE,sBAAsB,GAAG,OAAO,CAAC,IAAI,CAAC,CAwG3F"}
@@ -0,0 +1,115 @@
1
+ /**
2
+ * @fileType: command
3
+ * @status: current
4
+ * @updated: 2025-12-07
5
+ * @tags: [checkpoint, list, cli, epic-004-sprint5, task-1]
6
+ * @related: [checkpoint.ts, create.ts, show.ts]
7
+ * @priority: high
8
+ * @complexity: medium
9
+ * @dependencies: [chalk, cli-table3, checkpoint]
10
+ */
11
+ import chalk from 'chalk';
12
+ import Table from 'cli-table3';
13
+ import { listCheckpoints, getLatestCheckpoint } from '../../lib/checkpoint.js';
14
+ /**
15
+ * List checkpoints with optional task filtering
16
+ *
17
+ * Displays:
18
+ * - Checkpoint ID
19
+ * - Timestamp
20
+ * - Git commit (short hash)
21
+ * - Modified file count
22
+ * - Message (if provided)
23
+ * - Latest marker
24
+ */
25
+ export async function listCheckpointsCommand(options) {
26
+ try {
27
+ // Get checkpoints (optionally filtered by task)
28
+ const checkpoints = await listCheckpoints(options.task);
29
+ if (checkpoints.length === 0) {
30
+ if (options.task) {
31
+ console.log(chalk.yellow(`\n⚠️ No checkpoints found for task ${chalk.bold(options.task)}`));
32
+ console.log(chalk.dim('Create one with: ginko checkpoint create --task ' + options.task));
33
+ }
34
+ else {
35
+ console.log(chalk.yellow('\n⚠️ No checkpoints found'));
36
+ console.log(chalk.dim('Create one with: ginko checkpoint create --task TASK-1'));
37
+ }
38
+ return;
39
+ }
40
+ // Get latest checkpoint for marking
41
+ const latestCheckpoint = options.task
42
+ ? await getLatestCheckpoint(options.task)
43
+ : checkpoints[0]; // Already sorted by timestamp desc
44
+ // Display header
45
+ console.log(chalk.green(`\n📸 Checkpoints ${options.task ? `for ${chalk.bold(options.task)}` : ''}`));
46
+ console.log(chalk.gray('─'.repeat(80)));
47
+ // Create table
48
+ const table = new Table({
49
+ head: ['ID', 'Timestamp', 'Commit', 'Files', 'Message'],
50
+ style: {
51
+ head: ['cyan'],
52
+ border: ['gray']
53
+ },
54
+ colWidths: [25, 20, 10, 8, 35],
55
+ wordWrap: true
56
+ });
57
+ // Add checkpoint rows
58
+ checkpoints.forEach((checkpoint) => {
59
+ const isLatest = latestCheckpoint?.id === checkpoint.id;
60
+ // Format ID with latest marker
61
+ const idText = isLatest
62
+ ? chalk.cyan(checkpoint.id) + chalk.yellow(' (latest)')
63
+ : chalk.dim(checkpoint.id);
64
+ // Format timestamp
65
+ const timestamp = checkpoint.timestamp.toLocaleString('en-US', {
66
+ month: 'short',
67
+ day: 'numeric',
68
+ hour: '2-digit',
69
+ minute: '2-digit'
70
+ });
71
+ // Format commit hash (short)
72
+ const commitShort = checkpoint.gitCommit.substring(0, 7);
73
+ const commitText = isLatest ? chalk.cyan(commitShort) : chalk.dim(commitShort);
74
+ // Format file count
75
+ const fileCount = checkpoint.filesModified.length;
76
+ const fileCountText = fileCount > 0
77
+ ? chalk.yellow(fileCount.toString())
78
+ : chalk.dim('0');
79
+ // Format message
80
+ const message = checkpoint.message || chalk.dim('(no message)');
81
+ const messageText = isLatest ? message : chalk.dim(message);
82
+ table.push([
83
+ idText,
84
+ chalk.dim(timestamp),
85
+ commitText,
86
+ fileCountText,
87
+ messageText
88
+ ]);
89
+ });
90
+ console.log(table.toString());
91
+ // Display summary
92
+ console.log(chalk.gray('\n' + '─'.repeat(80)));
93
+ console.log(chalk.dim(`Total: ${chalk.cyan(checkpoints.length)} checkpoint${checkpoints.length === 1 ? '' : 's'}`));
94
+ if (options.task) {
95
+ console.log(chalk.dim(`Task: ${chalk.cyan(options.task)}`));
96
+ }
97
+ console.log(chalk.dim('\nNext steps:'));
98
+ console.log(chalk.dim(` • View details: ${chalk.cyan('ginko checkpoint show <id>')}`));
99
+ console.log(chalk.dim(` • Create new: ${chalk.cyan('ginko checkpoint create --task ' + (options.task || 'TASK-ID'))}`));
100
+ if (latestCheckpoint) {
101
+ console.log(chalk.dim(` • Rollback to latest: ${chalk.cyan(`ginko rollback ${latestCheckpoint.id}`)} ${chalk.yellow('(future)')}`));
102
+ }
103
+ console.log();
104
+ }
105
+ catch (error) {
106
+ if (error instanceof Error) {
107
+ console.error(chalk.red(`\n✗ Error: ${error.message}`));
108
+ }
109
+ else {
110
+ console.error(chalk.red('\n✗ An unexpected error occurred'));
111
+ }
112
+ process.exit(1);
113
+ }
114
+ }
115
+ //# sourceMappingURL=list.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list.js","sourceRoot":"","sources":["../../../src/commands/checkpoint/list.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ /**
2
+ * @fileType: command
3
+ * @status: current
4
+ * @updated: 2025-12-07
5
+ * @tags: [checkpoint, show, cli, epic-004-sprint5, task-1]
6
+ * @related: [checkpoint.ts, create.ts, list.ts]
7
+ * @priority: high
8
+ * @complexity: low
9
+ * @dependencies: [chalk, checkpoint]
10
+ */
11
+ /**
12
+ * Show detailed checkpoint information
13
+ *
14
+ * Displays all checkpoint fields:
15
+ * - ID, task ID, agent ID
16
+ * - Timestamp
17
+ * - Git commit hash
18
+ * - Modified files list
19
+ * - Event stream position
20
+ * - Message and metadata
21
+ */
22
+ export declare function showCheckpointCommand(checkpointId: string): Promise<void>;
23
+ //# sourceMappingURL=show.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"show.d.ts","sourceRoot":"","sources":["../../../src/commands/checkpoint/show.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAKH;;;;;;;;;;GAUG;AACH,wBAAsB,qBAAqB,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAoF/E"}
@@ -0,0 +1,102 @@
1
+ /**
2
+ * @fileType: command
3
+ * @status: current
4
+ * @updated: 2025-12-07
5
+ * @tags: [checkpoint, show, cli, epic-004-sprint5, task-1]
6
+ * @related: [checkpoint.ts, create.ts, list.ts]
7
+ * @priority: high
8
+ * @complexity: low
9
+ * @dependencies: [chalk, checkpoint]
10
+ */
11
+ import chalk from 'chalk';
12
+ import { getCheckpoint } from '../../lib/checkpoint.js';
13
+ /**
14
+ * Show detailed checkpoint information
15
+ *
16
+ * Displays all checkpoint fields:
17
+ * - ID, task ID, agent ID
18
+ * - Timestamp
19
+ * - Git commit hash
20
+ * - Modified files list
21
+ * - Event stream position
22
+ * - Message and metadata
23
+ */
24
+ export async function showCheckpointCommand(checkpointId) {
25
+ try {
26
+ // Validate checkpoint ID
27
+ if (!checkpointId) {
28
+ console.log(chalk.red('\n✗ Checkpoint ID is required'));
29
+ console.log(chalk.dim('Usage: ginko checkpoint show <checkpointId>'));
30
+ process.exit(1);
31
+ }
32
+ // Get checkpoint
33
+ const checkpoint = await getCheckpoint(checkpointId);
34
+ if (!checkpoint) {
35
+ console.log(chalk.yellow(`\n⚠️ Checkpoint ${chalk.bold(checkpointId)} not found`));
36
+ console.log(chalk.dim('List checkpoints with: ginko checkpoint list'));
37
+ return;
38
+ }
39
+ // Display checkpoint details
40
+ console.log(chalk.green(`\n📸 Checkpoint Details`));
41
+ console.log(chalk.gray('═'.repeat(60)));
42
+ // Basic info
43
+ console.log(chalk.bold('\nIdentification:'));
44
+ console.log(` ${chalk.dim('ID:')} ${chalk.cyan(checkpoint.id)}`);
45
+ console.log(` ${chalk.dim('Task:')} ${chalk.cyan(checkpoint.taskId)}`);
46
+ console.log(` ${chalk.dim('Agent:')} ${chalk.dim(checkpoint.agentId)}`);
47
+ console.log(` ${chalk.dim('Created:')} ${chalk.dim(checkpoint.timestamp.toLocaleString())}`);
48
+ // Message
49
+ if (checkpoint.message) {
50
+ console.log(chalk.bold('\nMessage:'));
51
+ console.log(` ${checkpoint.message}`);
52
+ }
53
+ // Git state
54
+ console.log(chalk.bold('\nGit State:'));
55
+ console.log(` ${chalk.dim('Commit:')} ${chalk.cyan(checkpoint.gitCommit)}`);
56
+ console.log(` ${chalk.dim('Short:')} ${chalk.cyan(checkpoint.gitCommit.substring(0, 7))}`);
57
+ // Modified files
58
+ console.log(chalk.bold('\nModified Files:'));
59
+ if (checkpoint.filesModified.length === 0) {
60
+ console.log(chalk.dim(' (no modified files)'));
61
+ }
62
+ else {
63
+ console.log(` ${chalk.yellow(checkpoint.filesModified.length)} file${checkpoint.filesModified.length === 1 ? '' : 's'} modified:`);
64
+ checkpoint.filesModified.forEach((file, index) => {
65
+ // Show first 20 files, then truncate
66
+ if (index < 20) {
67
+ console.log(` ${chalk.dim(`${index + 1}.`)} ${file}`);
68
+ }
69
+ else if (index === 20) {
70
+ console.log(chalk.dim(` ... and ${checkpoint.filesModified.length - 20} more files`));
71
+ }
72
+ });
73
+ }
74
+ // Event stream position
75
+ console.log(chalk.bold('\nEvent Stream:'));
76
+ console.log(` ${chalk.dim('Last event:')} ${chalk.dim(checkpoint.eventsSince)}`);
77
+ // Metadata
78
+ if (checkpoint.metadata && Object.keys(checkpoint.metadata).length > 0) {
79
+ console.log(chalk.bold('\nMetadata:'));
80
+ Object.entries(checkpoint.metadata).forEach(([key, value]) => {
81
+ console.log(` ${chalk.dim(key + ':')} ${JSON.stringify(value)}`);
82
+ });
83
+ }
84
+ // Next steps
85
+ console.log(chalk.gray('\n' + '═'.repeat(60)));
86
+ console.log(chalk.dim('Next steps:'));
87
+ console.log(chalk.dim(` • View commit: ${chalk.cyan(`git show ${checkpoint.gitCommit.substring(0, 7)}`)}`));
88
+ console.log(chalk.dim(` • List task checkpoints: ${chalk.cyan(`ginko checkpoint list --task ${checkpoint.taskId}`)}`));
89
+ console.log(chalk.dim(` • Rollback to this checkpoint: ${chalk.cyan(`ginko rollback ${checkpoint.id}`)} ${chalk.yellow('(future)')}`));
90
+ console.log();
91
+ }
92
+ catch (error) {
93
+ if (error instanceof Error) {
94
+ console.error(chalk.red(`\n✗ Error: ${error.message}`));
95
+ }
96
+ else {
97
+ console.error(chalk.red('\n✗ An unexpected error occurred'));
98
+ }
99
+ process.exit(1);
100
+ }
101
+ }
102
+ //# sourceMappingURL=show.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"show.js","sourceRoot":"","sources":["../../../src/commands/checkpoint/show.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,24 @@
1
+ /**
2
+ * @fileType: command
3
+ * @status: current
4
+ * @updated: 2025-12-07
5
+ * @tags: [dead-letter-queue, dlq, cli-command, epic-004]
6
+ * @related: [../lib/dead-letter-queue.ts, log.ts]
7
+ * @priority: high
8
+ * @complexity: low
9
+ * @dependencies: [commander]
10
+ */
11
+ import { Command } from 'commander';
12
+ /**
13
+ * ginko dlq - Dead Letter Queue management
14
+ *
15
+ * Commands:
16
+ * - ginko dlq list [--status=pending]
17
+ * - ginko dlq show <id>
18
+ * - ginko dlq retry <id>
19
+ * - ginko dlq retry-all
20
+ * - ginko dlq stats
21
+ * - ginko dlq cleanup [--days=30]
22
+ */
23
+ export declare const dlqCommand: Command;
24
+ //# sourceMappingURL=dlq.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dlq.d.ts","sourceRoot":"","sources":["../../src/commands/dlq.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAUpC;;;;;;;;;;GAUG;AACH,eAAO,MAAM,UAAU,SAwKpB,CAAC"}
@@ -0,0 +1,172 @@
1
+ /**
2
+ * @fileType: command
3
+ * @status: current
4
+ * @updated: 2025-12-07
5
+ * @tags: [dead-letter-queue, dlq, cli-command, epic-004]
6
+ * @related: [../lib/dead-letter-queue.ts, log.ts]
7
+ * @priority: high
8
+ * @complexity: low
9
+ * @dependencies: [commander]
10
+ */
11
+ import { Command } from 'commander';
12
+ import { getDeadLetterEntries, getDeadLetterEntry, retryDeadLetter, autoRetryDeadLetters, getDeadLetterStats, cleanupDeadLetters } from '../lib/dead-letter-queue.js';
13
+ /**
14
+ * ginko dlq - Dead Letter Queue management
15
+ *
16
+ * Commands:
17
+ * - ginko dlq list [--status=pending]
18
+ * - ginko dlq show <id>
19
+ * - ginko dlq retry <id>
20
+ * - ginko dlq retry-all
21
+ * - ginko dlq stats
22
+ * - ginko dlq cleanup [--days=30]
23
+ */
24
+ export const dlqCommand = new Command('dlq')
25
+ .description('Manage Dead Letter Queue (failed events)')
26
+ .addCommand(new Command('list')
27
+ .description('List DLQ entries')
28
+ .option('-s, --status <status>', 'Filter by status (pending|retrying|resolved|abandoned)')
29
+ .option('-l, --limit <number>', 'Limit number of results', '20')
30
+ .action(async (options) => {
31
+ try {
32
+ const status = options.status;
33
+ const limit = parseInt(options.limit, 10);
34
+ const entries = await getDeadLetterEntries(status);
35
+ const displayEntries = entries.slice(0, limit);
36
+ if (displayEntries.length === 0) {
37
+ console.log('No DLQ entries found.');
38
+ return;
39
+ }
40
+ console.log(`\nDead Letter Queue Entries (${displayEntries.length}/${entries.length}):\n`);
41
+ for (const entry of displayEntries) {
42
+ const age = Math.floor((Date.now() - entry.failedAt.getTime()) / 1000 / 60);
43
+ const ageStr = age < 60 ? `${age}m` : `${Math.floor(age / 60)}h`;
44
+ console.log(` ${entry.id}`);
45
+ console.log(` Status: ${entry.status}`);
46
+ console.log(` Event: ${entry.originalEvent.id}`);
47
+ console.log(` Failed: ${ageStr} ago (${entry.retryCount} retries)`);
48
+ console.log(` Reason: ${entry.failureReason.split('\n')[0]}`);
49
+ console.log('');
50
+ }
51
+ if (entries.length > limit) {
52
+ console.log(` ... and ${entries.length - limit} more entries`);
53
+ }
54
+ }
55
+ catch (error) {
56
+ console.error('Error listing DLQ entries:', error instanceof Error ? error.message : String(error));
57
+ process.exit(1);
58
+ }
59
+ }))
60
+ .addCommand(new Command('show')
61
+ .description('Show details of a specific DLQ entry')
62
+ .argument('<id>', 'DLQ entry ID')
63
+ .action(async (id) => {
64
+ try {
65
+ const entry = await getDeadLetterEntry(id);
66
+ if (!entry) {
67
+ console.error(`DLQ entry not found: ${id}`);
68
+ process.exit(1);
69
+ }
70
+ console.log(`\nDLQ Entry: ${entry.id}\n`);
71
+ console.log(`Status: ${entry.status}`);
72
+ console.log(`Failed At: ${entry.failedAt.toISOString()}`);
73
+ console.log(`Retry Count: ${entry.retryCount}`);
74
+ if (entry.lastRetryAt) {
75
+ console.log(`Last Retry: ${entry.lastRetryAt.toISOString()}`);
76
+ }
77
+ console.log(`\nFailure Reason:`);
78
+ console.log(entry.failureReason.split('\n').map(line => ` ${line}`).join('\n'));
79
+ console.log(`\nOriginal Event:`);
80
+ console.log(` ID: ${entry.originalEvent.id}`);
81
+ console.log(` Category: ${entry.originalEvent.category}`);
82
+ console.log(` Description: ${entry.originalEvent.description}`);
83
+ console.log(` Timestamp: ${entry.originalEvent.timestamp}`);
84
+ }
85
+ catch (error) {
86
+ console.error('Error showing DLQ entry:', error instanceof Error ? error.message : String(error));
87
+ process.exit(1);
88
+ }
89
+ }))
90
+ .addCommand(new Command('retry')
91
+ .description('Retry a specific DLQ entry')
92
+ .argument('<id>', 'DLQ entry ID')
93
+ .action(async (id) => {
94
+ try {
95
+ console.log(`Retrying DLQ entry: ${id}...`);
96
+ const result = await retryDeadLetter(id);
97
+ if (result.success) {
98
+ console.log(`✓ Entry ${id} successfully retried and resolved`);
99
+ }
100
+ else {
101
+ console.error(`✗ Retry failed: ${result.error}`);
102
+ console.error(` Status: ${result.entry.status}`);
103
+ process.exit(1);
104
+ }
105
+ }
106
+ catch (error) {
107
+ console.error('Error retrying DLQ entry:', error instanceof Error ? error.message : String(error));
108
+ process.exit(1);
109
+ }
110
+ }))
111
+ .addCommand(new Command('retry-all')
112
+ .description('Auto-retry all eligible pending entries')
113
+ .action(async () => {
114
+ try {
115
+ console.log('Auto-retrying eligible DLQ entries...');
116
+ const retriedCount = await autoRetryDeadLetters();
117
+ if (retriedCount === 0) {
118
+ console.log('No entries eligible for retry at this time.');
119
+ }
120
+ else {
121
+ console.log(`✓ Successfully retried ${retriedCount} entries`);
122
+ }
123
+ }
124
+ catch (error) {
125
+ console.error('Error auto-retrying DLQ entries:', error instanceof Error ? error.message : String(error));
126
+ process.exit(1);
127
+ }
128
+ }))
129
+ .addCommand(new Command('stats')
130
+ .description('Show DLQ statistics')
131
+ .action(async () => {
132
+ try {
133
+ const stats = await getDeadLetterStats();
134
+ console.log('\nDead Letter Queue Statistics:\n');
135
+ console.log(` Total: ${stats.total}`);
136
+ console.log(` Pending: ${stats.pending}`);
137
+ console.log(` Retrying: ${stats.retrying}`);
138
+ console.log(` Resolved: ${stats.resolved}`);
139
+ console.log(` Abandoned: ${stats.abandoned}`);
140
+ if (stats.oldestPending) {
141
+ const age = Math.floor((Date.now() - stats.oldestPending.getTime()) / 1000 / 60);
142
+ const ageStr = age < 60 ? `${age} minutes` : `${Math.floor(age / 60)} hours`;
143
+ console.log(`\n Oldest pending: ${ageStr} ago`);
144
+ }
145
+ console.log('');
146
+ }
147
+ catch (error) {
148
+ console.error('Error getting DLQ stats:', error instanceof Error ? error.message : String(error));
149
+ process.exit(1);
150
+ }
151
+ }))
152
+ .addCommand(new Command('cleanup')
153
+ .description('Clean up old resolved/abandoned entries')
154
+ .option('-d, --days <number>', 'Delete entries older than N days', '30')
155
+ .action(async (options) => {
156
+ try {
157
+ const days = parseInt(options.days, 10);
158
+ console.log(`Cleaning up DLQ entries older than ${days} days...`);
159
+ const deletedCount = await cleanupDeadLetters(days);
160
+ if (deletedCount === 0) {
161
+ console.log('No old entries to clean up.');
162
+ }
163
+ else {
164
+ console.log(`✓ Deleted ${deletedCount} old entries`);
165
+ }
166
+ }
167
+ catch (error) {
168
+ console.error('Error cleaning up DLQ:', error instanceof Error ? error.message : String(error));
169
+ process.exit(1);
170
+ }
171
+ }));
172
+ //# sourceMappingURL=dlq.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dlq.js","sourceRoot":"","sources":["../../src/commands/dlq.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: [escalation, create, cli, epic-004, human-intervention]
6
+ * @related: [index.ts, escalation-client.ts]
7
+ * @priority: high
8
+ * @complexity: medium
9
+ * @dependencies: [commander, chalk, ora]
10
+ */
11
+ interface CreateOptions {
12
+ task: string;
13
+ reason: string;
14
+ severity: 'low' | 'medium' | 'high' | 'critical';
15
+ agent?: string;
16
+ }
17
+ /**
18
+ * Create a new escalation
19
+ */
20
+ export declare function createEscalationCommand(options: CreateOptions): Promise<void>;
21
+ export {};
22
+ //# sourceMappingURL=create.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create.d.ts","sourceRoot":"","sources":["../../../src/commands/escalation/create.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAeH,UAAU,aAAa;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,UAAU,CAAC;IACjD,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AA4BD;;GAEG;AACH,wBAAsB,uBAAuB,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAgFnF"}