@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,102 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * @fileType: example
4
+ * @status: current
5
+ * @updated: 2025-12-07
6
+ * @tags: [demo, timeout, verification]
7
+ * @related: [../task-timeout.ts]
8
+ * @priority: low
9
+ * @complexity: low
10
+ * @dependencies: []
11
+ */
12
+ /**
13
+ * Quick Demo: Task Timeout Module
14
+ *
15
+ * Demonstrates timeout creation, warning detection, and timeout handling.
16
+ * Run with: node dist/lib/examples/timeout-demo.js
17
+ */
18
+ import { startTaskTimeout, checkTimeouts, getActiveTimeouts, clearTaskTimeout } from '../task-timeout.js';
19
+ async function sleep(ms) {
20
+ return new Promise(resolve => setTimeout(resolve, ms));
21
+ }
22
+ async function demo() {
23
+ console.log('=== Task Timeout Module Demo ===\n');
24
+ try {
25
+ // Create a timeout with very short duration for demo
26
+ console.log('1. Creating timeout for DEMO-TASK (500ms max duration, 50% warning threshold)...');
27
+ const timeout = await startTaskTimeout('DEMO-TASK', 500, // 500ms total
28
+ 'demo-agent', { warningThreshold: 0.5 } // Warn at 50% (250ms)
29
+ );
30
+ console.log(` ✓ Timeout created`);
31
+ console.log(` Task: ${timeout.taskId}`);
32
+ console.log(` Agent: ${timeout.agentId}`);
33
+ console.log(` Max Duration: ${timeout.maxDuration}ms`);
34
+ console.log(` Status: ${timeout.status}`);
35
+ console.log(` Warning At: ${timeout.warningAt?.toISOString()}`);
36
+ console.log(` Timeout At: ${timeout.timeoutAt.toISOString()}\n`);
37
+ // Wait for warning threshold
38
+ console.log('2. Waiting 300ms for warning threshold...');
39
+ await sleep(300);
40
+ console.log('3. Checking for warnings...');
41
+ await checkTimeouts();
42
+ const activeTimeouts = await getActiveTimeouts();
43
+ const demoTimeout = activeTimeouts.find(t => t.taskId === 'DEMO-TASK');
44
+ if (demoTimeout) {
45
+ console.log(` ✓ Timeout status updated: ${demoTimeout.status}`);
46
+ if (demoTimeout.status === 'warning') {
47
+ console.log(` ⚠️ Task is at ${((300 / 500) * 100).toFixed(0)}% of max duration\n`);
48
+ }
49
+ }
50
+ // Wait for timeout
51
+ console.log('4. Waiting 250ms more for timeout...');
52
+ await sleep(250);
53
+ console.log('5. Checking for timeouts...');
54
+ const timedOut = await checkTimeouts();
55
+ const demoTimedOut = timedOut.find(t => t.taskId === 'DEMO-TASK');
56
+ if (demoTimedOut) {
57
+ console.log(` ✓ Task timed out!`);
58
+ console.log(` Duration: ${demoTimedOut.duration}ms`);
59
+ console.log(` Checkpoint: ${demoTimedOut.checkpointId}`);
60
+ console.log(` Escalation: ${demoTimedOut.escalationEventId}\n`);
61
+ }
62
+ else {
63
+ console.log(` ✗ Timeout not detected\n`);
64
+ }
65
+ console.log('6. Demonstrating successful task completion...');
66
+ // Create another timeout
67
+ const successTimeout = await startTaskTimeout('SUCCESS-TASK', 60000, // 1 minute
68
+ 'success-agent');
69
+ console.log(` ✓ Created timeout for ${successTimeout.taskId}`);
70
+ // Complete it immediately
71
+ await clearTaskTimeout('SUCCESS-TASK');
72
+ console.log(` ✓ Task completed and timeout cleared\n`);
73
+ console.log('7. Checking active timeouts...');
74
+ const finalActive = await getActiveTimeouts();
75
+ const ourTasks = finalActive.filter(t => t.taskId === 'DEMO-TASK' || t.taskId === 'SUCCESS-TASK');
76
+ console.log(` Active timeouts: ${ourTasks.length}`);
77
+ for (const t of ourTasks) {
78
+ console.log(` - ${t.taskId}: ${t.status}`);
79
+ }
80
+ console.log('\n=== Demo Complete ===\n');
81
+ console.log('Summary:');
82
+ console.log('✓ Timeout creation working');
83
+ console.log('✓ Warning threshold detection working');
84
+ console.log('✓ Timeout detection working');
85
+ console.log('✓ Checkpoint creation working');
86
+ console.log('✓ Escalation event creation working');
87
+ console.log('✓ Task completion working\n');
88
+ }
89
+ catch (error) {
90
+ console.error('\n❌ Demo failed:', error);
91
+ if (error instanceof Error) {
92
+ console.error(error.stack);
93
+ }
94
+ process.exit(1);
95
+ }
96
+ }
97
+ // Run demo
98
+ demo().catch(error => {
99
+ console.error('Fatal error:', error);
100
+ process.exit(1);
101
+ });
102
+ //# sourceMappingURL=timeout-demo.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"timeout-demo.js","sourceRoot":"","sources":["../../../src/lib/examples/timeout-demo.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * @fileType: example
3
+ * @status: current
4
+ * @updated: 2025-12-07
5
+ * @tags: [example, timeout, orchestrator, integration]
6
+ * @related: [../task-timeout.ts, ../orchestrator-state.ts]
7
+ * @priority: low
8
+ * @complexity: low
9
+ * @dependencies: []
10
+ */
11
+ declare function exampleBasicTimeout(): Promise<void>;
12
+ declare function exampleOrchestrationLoop(): Promise<void>;
13
+ declare function exampleCustomConfiguration(): Promise<void>;
14
+ declare function exampleTimeoutHandling(): Promise<void>;
15
+ declare function exampleOrchestratorIntegration(): Promise<void>;
16
+ export { exampleBasicTimeout, exampleOrchestrationLoop, exampleCustomConfiguration, exampleTimeoutHandling, exampleOrchestratorIntegration };
17
+ //# sourceMappingURL=timeout-integration-example.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"timeout-integration-example.d.ts","sourceRoot":"","sources":["../../../src/lib/examples/timeout-integration-example.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAsBH,iBAAe,mBAAmB,kBAuBjC;AAMD,iBAAe,wBAAwB,kBAqDtC;AAMD,iBAAe,0BAA0B,kBAsCxC;AAMD,iBAAe,sBAAsB,kBAsCpC;AAaD,iBAAe,8BAA8B,kBA4E5C;AAuBD,OAAO,EACL,mBAAmB,EACnB,wBAAwB,EACxB,0BAA0B,EAC1B,sBAAsB,EACtB,8BAA8B,EAC/B,CAAC"}
@@ -0,0 +1,223 @@
1
+ /**
2
+ * @fileType: example
3
+ * @status: current
4
+ * @updated: 2025-12-07
5
+ * @tags: [example, timeout, orchestrator, integration]
6
+ * @related: [../task-timeout.ts, ../orchestrator-state.ts]
7
+ * @priority: low
8
+ * @complexity: low
9
+ * @dependencies: []
10
+ */
11
+ /**
12
+ * Example: Task Timeout Integration with Orchestrator
13
+ *
14
+ * This example shows how to integrate the task timeout module
15
+ * into the orchestrator workflow.
16
+ */
17
+ import { startTaskTimeout, checkTimeouts, clearTaskTimeout, getActiveTimeouts, TimeoutMonitor } from '../task-timeout.js';
18
+ // ============================================================
19
+ // Example 1: Basic Timeout Tracking
20
+ // ============================================================
21
+ async function exampleBasicTimeout() {
22
+ console.log('=== Example 1: Basic Timeout Tracking ===\n');
23
+ // When assigning a task to an agent
24
+ const taskId = 'TASK-1';
25
+ const agentId = 'agent-001';
26
+ const maxDuration = 30 * 60 * 1000; // 30 minutes
27
+ console.log(`Assigning ${taskId} to ${agentId} with ${maxDuration / 1000}s timeout`);
28
+ const timeout = await startTaskTimeout(taskId, maxDuration, agentId);
29
+ console.log(`Timeout started: ${timeout.taskId}`);
30
+ console.log(` Warning at: ${timeout.warningAt?.toISOString()}`);
31
+ console.log(` Timeout at: ${timeout.timeoutAt.toISOString()}`);
32
+ // ... agent works on task ...
33
+ // When task completes successfully
34
+ console.log(`\nTask ${taskId} completed successfully`);
35
+ await clearTaskTimeout(taskId);
36
+ console.log('Timeout cleared\n');
37
+ }
38
+ // ============================================================
39
+ // Example 2: Timeout Monitoring in Orchestration Loop
40
+ // ============================================================
41
+ async function exampleOrchestrationLoop() {
42
+ console.log('=== Example 2: Orchestration Loop with Timeout Checks ===\n');
43
+ // Start background monitor
44
+ const monitor = new TimeoutMonitor({
45
+ checkInterval: 30000 // Check every 30 seconds
46
+ });
47
+ monitor.start();
48
+ console.log('Timeout monitor started\n');
49
+ // Simulate orchestration loop
50
+ for (let cycle = 1; cycle <= 3; cycle++) {
51
+ console.log(`--- Orchestration Cycle ${cycle} ---`);
52
+ // Check for timed out tasks
53
+ const timedOutTasks = await checkTimeouts();
54
+ if (timedOutTasks.length > 0) {
55
+ console.log(`Found ${timedOutTasks.length} timed out tasks:`);
56
+ for (const task of timedOutTasks) {
57
+ console.log(` ${task.taskId}:`);
58
+ console.log(` Agent: ${task.agentId}`);
59
+ console.log(` Duration: ${task.duration / 1000}s`);
60
+ console.log(` Checkpoint: ${task.checkpointId}`);
61
+ console.log(` Escalation: ${task.escalationEventId}`);
62
+ // Reassign task to different agent
63
+ console.log(` → Reassigning to different agent`);
64
+ }
65
+ }
66
+ else {
67
+ console.log('No timeouts detected');
68
+ }
69
+ // Check active timeouts
70
+ const activeTimeouts = await getActiveTimeouts();
71
+ console.log(`Active timeouts: ${activeTimeouts.length}`);
72
+ for (const timeout of activeTimeouts) {
73
+ const remaining = timeout.timeoutAt.getTime() - Date.now();
74
+ console.log(` ${timeout.taskId}: ${remaining / 1000}s remaining (${timeout.status})`);
75
+ }
76
+ console.log();
77
+ // Wait before next cycle
78
+ await new Promise(resolve => setTimeout(resolve, 1000));
79
+ }
80
+ // Stop monitor
81
+ monitor.stop();
82
+ console.log('Timeout monitor stopped\n');
83
+ }
84
+ // ============================================================
85
+ // Example 3: Custom Timeout Configuration
86
+ // ============================================================
87
+ async function exampleCustomConfiguration() {
88
+ console.log('=== Example 3: Custom Timeout Configuration ===\n');
89
+ const config = {
90
+ defaultTimeout: 15 * 60 * 1000, // 15 minutes
91
+ warningThreshold: 0.75, // Warn at 75%
92
+ checkInterval: 15000 // Check every 15 seconds
93
+ };
94
+ // Short timeout for testing tasks
95
+ const testTimeout = await startTaskTimeout('TEST-1', 5 * 60 * 1000, // 5 minutes
96
+ 'agent-test', config);
97
+ console.log(`Test task timeout started:`);
98
+ console.log(` Max duration: ${testTimeout.maxDuration / 1000}s`);
99
+ console.log(` Warning at: ${testTimeout.warningAt?.toISOString()}`);
100
+ // Long timeout for complex tasks
101
+ const complexTimeout = await startTaskTimeout('COMPLEX-1', 2 * 60 * 60 * 1000, // 2 hours
102
+ 'agent-senior', { warningThreshold: 0.9 } // Warn at 90%
103
+ );
104
+ console.log(`\nComplex task timeout started:`);
105
+ console.log(` Max duration: ${complexTimeout.maxDuration / 1000}s`);
106
+ console.log(` Warning at: ${complexTimeout.warningAt?.toISOString()}`);
107
+ // Clean up
108
+ await clearTaskTimeout('TEST-1');
109
+ await clearTaskTimeout('COMPLEX-1');
110
+ console.log('\nTimeouts cleared\n');
111
+ }
112
+ // ============================================================
113
+ // Example 4: Handling Timeout Events
114
+ // ============================================================
115
+ async function exampleTimeoutHandling() {
116
+ console.log('=== Example 4: Handling Timeout Events ===\n');
117
+ // Create a timeout with very short duration for demonstration
118
+ const timeout = await startTaskTimeout('DEMO-1', 200, // 200ms (very short for demo)
119
+ 'agent-demo', { warningThreshold: 0.5 } // 50% for demo
120
+ );
121
+ console.log(`Created demo timeout: ${timeout.taskId}`);
122
+ // Wait for warning threshold
123
+ await new Promise(resolve => setTimeout(resolve, 120));
124
+ console.log('\nChecking for warnings...');
125
+ await checkTimeouts();
126
+ let currentTimeout = await getActiveTimeouts();
127
+ const warningTimeout = currentTimeout.find(t => t.taskId === 'DEMO-1');
128
+ if (warningTimeout) {
129
+ console.log(`Status: ${warningTimeout.status}`);
130
+ }
131
+ // Wait for timeout
132
+ await new Promise(resolve => setTimeout(resolve, 100));
133
+ console.log('\nChecking for timeouts...');
134
+ const timedOut = await checkTimeouts();
135
+ const demoTimeout = timedOut.find(t => t.taskId === 'DEMO-1');
136
+ if (demoTimeout) {
137
+ console.log('\nTask timed out!');
138
+ console.log(` Checkpoint created: ${demoTimeout.checkpointId}`);
139
+ console.log(` Escalation created: ${demoTimeout.escalationEventId}`);
140
+ console.log(` Duration: ${demoTimeout.duration}ms`);
141
+ }
142
+ console.log();
143
+ }
144
+ async function exampleOrchestratorIntegration() {
145
+ console.log('=== Example 5: Orchestrator Integration ===\n');
146
+ const tasks = [
147
+ { id: 'TASK-1', status: 'pending', max_duration: 30 * 60 * 1000 },
148
+ { id: 'TASK-2', status: 'pending', max_duration: 15 * 60 * 1000 },
149
+ { id: 'TASK-3', status: 'pending', max_duration: 45 * 60 * 1000 }
150
+ ];
151
+ console.log('Assigning tasks to agents...\n');
152
+ // Assign tasks to agents
153
+ for (const task of tasks) {
154
+ const agentId = `agent-${Math.floor(Math.random() * 100)}`;
155
+ task.agentId = agentId;
156
+ task.status = 'assigned';
157
+ // Start timeout tracking
158
+ await startTaskTimeout(task.id, task.max_duration || 30 * 60 * 1000, agentId);
159
+ console.log(`${task.id} assigned to ${agentId} (${task.max_duration / 1000}s timeout)`);
160
+ }
161
+ console.log('\nMonitoring tasks...\n');
162
+ // Simulate orchestration loop
163
+ for (let i = 0; i < 3; i++) {
164
+ console.log(`--- Check ${i + 1} ---`);
165
+ // Check for timeouts
166
+ const timedOut = await checkTimeouts();
167
+ // Update task status for timed out tasks
168
+ for (const timeout of timedOut) {
169
+ const task = tasks.find(t => t.id === timeout.taskId);
170
+ if (task) {
171
+ task.status = 'timed_out';
172
+ console.log(`${task.id} timed out - checkpoint: ${timeout.checkpointId}`);
173
+ }
174
+ }
175
+ // Simulate some tasks completing
176
+ if (i === 1 && tasks[0].status === 'assigned') {
177
+ tasks[0].status = 'completed';
178
+ await clearTaskTimeout(tasks[0].id);
179
+ console.log(`${tasks[0].id} completed successfully`);
180
+ }
181
+ // Show active timeouts
182
+ const active = await getActiveTimeouts();
183
+ const myActiveTimeouts = active.filter(t => tasks.some(task => task.id === t.taskId));
184
+ console.log(`Active timeouts: ${myActiveTimeouts.length}`);
185
+ for (const timeout of myActiveTimeouts) {
186
+ const remaining = Math.floor((timeout.timeoutAt.getTime() - Date.now()) / 1000);
187
+ console.log(` ${timeout.taskId}: ${remaining}s remaining`);
188
+ }
189
+ console.log();
190
+ await new Promise(resolve => setTimeout(resolve, 500));
191
+ }
192
+ // Clean up remaining tasks
193
+ for (const task of tasks) {
194
+ if (task.status === 'assigned') {
195
+ await clearTaskTimeout(task.id);
196
+ }
197
+ }
198
+ console.log('Example complete\n');
199
+ }
200
+ // ============================================================
201
+ // Run Examples
202
+ // ============================================================
203
+ async function runExamples() {
204
+ try {
205
+ // Uncomment to run specific examples:
206
+ // await exampleBasicTimeout();
207
+ // await exampleOrchestrationLoop();
208
+ // await exampleCustomConfiguration();
209
+ // await exampleTimeoutHandling();
210
+ // await exampleOrchestratorIntegration();
211
+ console.log('All examples completed!');
212
+ }
213
+ catch (error) {
214
+ console.error('Example failed:', error);
215
+ }
216
+ }
217
+ // Export for use in other modules
218
+ export { exampleBasicTimeout, exampleOrchestrationLoop, exampleCustomConfiguration, exampleTimeoutHandling, exampleOrchestratorIntegration };
219
+ // Run if called directly
220
+ if (import.meta.url === `file://${process.argv[1]}`) {
221
+ runExamples();
222
+ }
223
+ //# sourceMappingURL=timeout-integration-example.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"timeout-integration-example.js","sourceRoot":"","sources":["../../../src/lib/examples/timeout-integration-example.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,103 @@
1
+ /**
2
+ * @fileType: utility
3
+ * @status: current
4
+ * @updated: 2025-12-07
5
+ * @tags: [notifications, hooks, epic-004, resilience, alerts]
6
+ * @related: [notifications/index.ts, event-logger.ts, orchestrator-state.ts]
7
+ * @priority: high
8
+ * @complexity: medium
9
+ * @dependencies: [fs-extra, minimatch]
10
+ */
11
+ /**
12
+ * Notification event types
13
+ */
14
+ export type NotificationEvent = 'escalation' | 'blocker' | 'failure' | 'milestone' | 'completion' | 'stale_agent' | 'human_required';
15
+ /**
16
+ * Severity levels for filtering
17
+ */
18
+ export type NotificationSeverity = 'low' | 'medium' | 'high' | 'critical';
19
+ /**
20
+ * Notification destination configuration
21
+ */
22
+ export interface NotificationDestination {
23
+ type: 'slack' | 'discord' | 'teams' | 'webhook' | 'email';
24
+ config: Record<string, string>;
25
+ }
26
+ /**
27
+ * Notification filter configuration
28
+ */
29
+ export interface NotificationFilter {
30
+ severity?: NotificationSeverity[];
31
+ epicId?: string;
32
+ taskPattern?: string;
33
+ }
34
+ /**
35
+ * Notification hook configuration
36
+ */
37
+ export interface NotificationHook {
38
+ id: string;
39
+ events: NotificationEvent[];
40
+ destination: NotificationDestination;
41
+ filter?: NotificationFilter;
42
+ enabled?: boolean;
43
+ }
44
+ /**
45
+ * Notification payload structure
46
+ */
47
+ export interface NotificationPayload {
48
+ event: NotificationEvent;
49
+ severity: NotificationSeverity;
50
+ timestamp: string;
51
+ title: string;
52
+ description: string;
53
+ taskId?: string;
54
+ epicId?: string;
55
+ agentId?: string;
56
+ metadata?: Record<string, any>;
57
+ }
58
+ /**
59
+ * Notification configuration (from ginko.config.json)
60
+ */
61
+ export interface NotificationConfig {
62
+ hooks: NotificationHook[];
63
+ }
64
+ /**
65
+ * Load notification hooks from ginko.config.json
66
+ *
67
+ * @returns Array of notification hooks
68
+ */
69
+ export declare function loadNotificationHooks(): Promise<NotificationHook[]>;
70
+ /**
71
+ * Check if a hook matches the given payload based on filters
72
+ *
73
+ * @param hook - Notification hook to check
74
+ * @param payload - Notification payload to match against
75
+ * @returns True if hook matches filters
76
+ */
77
+ export declare function matchesFilter(hook: NotificationHook, payload: NotificationPayload): boolean;
78
+ /**
79
+ * Trigger a notification to all matching hooks
80
+ *
81
+ * @param event - Notification event type
82
+ * @param payload - Notification payload
83
+ */
84
+ export declare function triggerNotification(event: NotificationEvent, payload: NotificationPayload): Promise<void>;
85
+ /**
86
+ * Dispatch a notification to a specific destination
87
+ *
88
+ * @param destination - Notification destination config
89
+ * @param payload - Notification payload
90
+ * @returns Promise<boolean> - True if dispatch succeeded
91
+ */
92
+ export declare function dispatchToDestination(destination: NotificationDestination, payload: NotificationPayload): Promise<boolean>;
93
+ /**
94
+ * Validate notification hook configuration
95
+ *
96
+ * @param hook - Hook configuration to validate
97
+ * @returns Validation result with errors
98
+ */
99
+ export declare function validateHook(hook: NotificationHook): {
100
+ valid: boolean;
101
+ errors: string[];
102
+ };
103
+ //# sourceMappingURL=notification-hooks.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"notification-hooks.d.ts","sourceRoot":"","sources":["../../src/lib/notification-hooks.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAOH;;GAEG;AACH,MAAM,MAAM,iBAAiB,GACzB,YAAY,GACZ,SAAS,GACT,SAAS,GACT,WAAW,GACX,YAAY,GACZ,aAAa,GACb,gBAAgB,CAAC;AAErB;;GAEG;AACH,MAAM,MAAM,oBAAoB,GAAG,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,UAAU,CAAC;AAE1E;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACtC,IAAI,EAAE,OAAO,GAAG,SAAS,GAAG,OAAO,GAAG,SAAS,GAAG,OAAO,CAAC;IAC1D,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAChC;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,EAAE,oBAAoB,EAAE,CAAC;IAClC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,iBAAiB,EAAE,CAAC;IAC5B,WAAW,EAAE,uBAAuB,CAAC;IACrC,MAAM,CAAC,EAAE,kBAAkB,CAAC;IAC5B,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,KAAK,EAAE,iBAAiB,CAAC;IACzB,QAAQ,EAAE,oBAAoB,CAAC;IAC/B,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CAChC;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,gBAAgB,EAAE,CAAC;CAC3B;AAED;;;;GAIG;AACH,wBAAsB,qBAAqB,IAAI,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAmDzE;AAED;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,mBAAmB,GAAG,OAAO,CA8B3F;AAED;;;;;GAKG;AACH,wBAAsB,mBAAmB,CAAC,KAAK,EAAE,iBAAiB,EAAE,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC,CAiD/G;AAED;;;;;;GAMG;AACH,wBAAsB,qBAAqB,CAAC,WAAW,EAAE,uBAAuB,EAAE,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,OAAO,CAAC,CAiBhI;AAED;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,gBAAgB,GAAG;IAAE,KAAK,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,MAAM,EAAE,CAAA;CAAE,CAmDzF"}