@ginkoai/cli 1.6.2 → 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.
- package/dist/commands/agent/agent-client.d.ts +150 -0
- package/dist/commands/agent/agent-client.d.ts.map +1 -0
- package/dist/commands/agent/agent-client.js +170 -0
- package/dist/commands/agent/agent-client.js.map +1 -0
- package/dist/commands/agent/index.d.ts +22 -0
- package/dist/commands/agent/index.d.ts.map +1 -0
- package/dist/commands/agent/index.js +121 -0
- package/dist/commands/agent/index.js.map +1 -0
- package/dist/commands/agent/list.d.ts +22 -0
- package/dist/commands/agent/list.d.ts.map +1 -0
- package/dist/commands/agent/list.js +119 -0
- package/dist/commands/agent/list.js.map +1 -0
- package/dist/commands/agent/register.d.ts +21 -0
- package/dist/commands/agent/register.d.ts.map +1 -0
- package/dist/commands/agent/register.js +97 -0
- package/dist/commands/agent/register.js.map +1 -0
- package/dist/commands/agent/status.d.ts +19 -0
- package/dist/commands/agent/status.d.ts.map +1 -0
- package/dist/commands/agent/status.js +271 -0
- package/dist/commands/agent/status.js.map +1 -0
- package/dist/commands/agent/work.d.ts +22 -0
- package/dist/commands/agent/work.d.ts.map +1 -0
- package/dist/commands/agent/work.js +459 -0
- package/dist/commands/agent/work.js.map +1 -0
- package/dist/commands/checkpoint/create.d.ts +27 -0
- package/dist/commands/checkpoint/create.d.ts.map +1 -0
- package/dist/commands/checkpoint/create.js +82 -0
- package/dist/commands/checkpoint/create.js.map +1 -0
- package/dist/commands/checkpoint/index.d.ts +23 -0
- package/dist/commands/checkpoint/index.d.ts.map +1 -0
- package/dist/commands/checkpoint/index.js +91 -0
- package/dist/commands/checkpoint/index.js.map +1 -0
- package/dist/commands/checkpoint/list.d.ts +27 -0
- package/dist/commands/checkpoint/list.d.ts.map +1 -0
- package/dist/commands/checkpoint/list.js +115 -0
- package/dist/commands/checkpoint/list.js.map +1 -0
- package/dist/commands/checkpoint/show.d.ts +23 -0
- package/dist/commands/checkpoint/show.d.ts.map +1 -0
- package/dist/commands/checkpoint/show.js +102 -0
- package/dist/commands/checkpoint/show.js.map +1 -0
- package/dist/commands/dlq.d.ts +24 -0
- package/dist/commands/dlq.d.ts.map +1 -0
- package/dist/commands/dlq.js +172 -0
- package/dist/commands/dlq.js.map +1 -0
- package/dist/commands/escalation/create.d.ts +22 -0
- package/dist/commands/escalation/create.d.ts.map +1 -0
- package/dist/commands/escalation/create.js +122 -0
- package/dist/commands/escalation/create.js.map +1 -0
- package/dist/commands/escalation/escalation-client.d.ts +101 -0
- package/dist/commands/escalation/escalation-client.d.ts.map +1 -0
- package/dist/commands/escalation/escalation-client.js +129 -0
- package/dist/commands/escalation/escalation-client.js.map +1 -0
- package/dist/commands/escalation/index.d.ts +22 -0
- package/dist/commands/escalation/index.d.ts.map +1 -0
- package/dist/commands/escalation/index.js +94 -0
- package/dist/commands/escalation/index.js.map +1 -0
- package/dist/commands/escalation/list.d.ts +24 -0
- package/dist/commands/escalation/list.d.ts.map +1 -0
- package/dist/commands/escalation/list.js +170 -0
- package/dist/commands/escalation/list.js.map +1 -0
- package/dist/commands/escalation/resolve.d.ts +20 -0
- package/dist/commands/escalation/resolve.d.ts.map +1 -0
- package/dist/commands/escalation/resolve.js +102 -0
- package/dist/commands/escalation/resolve.js.map +1 -0
- package/dist/commands/graph/api-client.d.ts +21 -1
- package/dist/commands/graph/api-client.d.ts.map +1 -1
- package/dist/commands/graph/api-client.js +23 -0
- package/dist/commands/graph/api-client.js.map +1 -1
- package/dist/commands/handoff.d.ts.map +1 -1
- package/dist/commands/handoff.js +9 -1
- package/dist/commands/handoff.js.map +1 -1
- package/dist/commands/log.d.ts +3 -0
- package/dist/commands/log.d.ts.map +1 -1
- package/dist/commands/log.js +73 -14
- package/dist/commands/log.js.map +1 -1
- package/dist/commands/notifications/history.d.ts +21 -0
- package/dist/commands/notifications/history.d.ts.map +1 -0
- package/dist/commands/notifications/history.js +160 -0
- package/dist/commands/notifications/history.js.map +1 -0
- package/dist/commands/notifications/index.d.ts +22 -0
- package/dist/commands/notifications/index.d.ts.map +1 -0
- package/dist/commands/notifications/index.js +87 -0
- package/dist/commands/notifications/index.js.map +1 -0
- package/dist/commands/notifications/list.d.ts +19 -0
- package/dist/commands/notifications/list.d.ts.map +1 -0
- package/dist/commands/notifications/list.js +132 -0
- package/dist/commands/notifications/list.js.map +1 -0
- package/dist/commands/notifications/test.d.ts +19 -0
- package/dist/commands/notifications/test.d.ts.map +1 -0
- package/dist/commands/notifications/test.js +217 -0
- package/dist/commands/notifications/test.js.map +1 -0
- package/dist/commands/orchestrate.d.ts +25 -0
- package/dist/commands/orchestrate.d.ts.map +1 -0
- package/dist/commands/orchestrate.js +858 -0
- package/dist/commands/orchestrate.js.map +1 -0
- package/dist/commands/sprint/deps.d.ts +29 -0
- package/dist/commands/sprint/deps.d.ts.map +1 -0
- package/dist/commands/sprint/deps.js +269 -0
- package/dist/commands/sprint/deps.js.map +1 -0
- package/dist/commands/sprint/index.d.ts +10 -5
- package/dist/commands/sprint/index.d.ts.map +1 -1
- package/dist/commands/sprint/index.js +26 -5
- package/dist/commands/sprint/index.js.map +1 -1
- package/dist/commands/start/index.d.ts.map +1 -1
- package/dist/commands/start/index.js +6 -0
- package/dist/commands/start/index.js.map +1 -1
- package/dist/commands/start/start-reflection.d.ts.map +1 -1
- package/dist/commands/start/start-reflection.js +8 -0
- package/dist/commands/start/start-reflection.js.map +1 -1
- package/dist/commands/verify.d.ts +17 -0
- package/dist/commands/verify.d.ts.map +1 -0
- package/dist/commands/verify.js +232 -0
- package/dist/commands/verify.js.map +1 -0
- package/dist/core/session-log-manager.d.ts +1 -1
- package/dist/core/session-log-manager.d.ts.map +1 -1
- package/dist/index.js +78 -1
- package/dist/index.js.map +1 -1
- package/dist/lib/__tests__/task-timeout.test.d.ts +12 -0
- package/dist/lib/__tests__/task-timeout.test.d.ts.map +1 -0
- package/dist/lib/__tests__/task-timeout.test.js +278 -0
- package/dist/lib/__tests__/task-timeout.test.js.map +1 -0
- package/dist/lib/agent-heartbeat.d.ts +68 -0
- package/dist/lib/agent-heartbeat.d.ts.map +1 -0
- package/dist/lib/agent-heartbeat.js +117 -0
- package/dist/lib/agent-heartbeat.js.map +1 -0
- package/dist/lib/checkpoint.d.ts +85 -0
- package/dist/lib/checkpoint.d.ts.map +1 -0
- package/dist/lib/checkpoint.js +323 -0
- package/dist/lib/checkpoint.js.map +1 -0
- package/dist/lib/context-metrics.d.ts +230 -0
- package/dist/lib/context-metrics.d.ts.map +1 -0
- package/dist/lib/context-metrics.js +372 -0
- package/dist/lib/context-metrics.js.map +1 -0
- package/dist/lib/dead-letter-queue.d.ts +108 -0
- package/dist/lib/dead-letter-queue.d.ts.map +1 -0
- package/dist/lib/dead-letter-queue.js +378 -0
- package/dist/lib/dead-letter-queue.js.map +1 -0
- package/dist/lib/event-logger.d.ts +9 -1
- package/dist/lib/event-logger.d.ts.map +1 -1
- package/dist/lib/event-logger.js +45 -3
- package/dist/lib/event-logger.js.map +1 -1
- package/dist/lib/event-queue.d.ts.map +1 -1
- package/dist/lib/event-queue.js +13 -2
- package/dist/lib/event-queue.js.map +1 -1
- package/dist/lib/examples/timeout-demo.d.ts +13 -0
- package/dist/lib/examples/timeout-demo.d.ts.map +1 -0
- package/dist/lib/examples/timeout-demo.js +102 -0
- package/dist/lib/examples/timeout-demo.js.map +1 -0
- package/dist/lib/examples/timeout-integration-example.d.ts +17 -0
- package/dist/lib/examples/timeout-integration-example.d.ts.map +1 -0
- package/dist/lib/examples/timeout-integration-example.js +223 -0
- package/dist/lib/examples/timeout-integration-example.js.map +1 -0
- package/dist/lib/notification-hooks.d.ts +103 -0
- package/dist/lib/notification-hooks.d.ts.map +1 -0
- package/dist/lib/notification-hooks.js +223 -0
- package/dist/lib/notification-hooks.js.map +1 -0
- package/dist/lib/notifications/discord.d.ts +20 -0
- package/dist/lib/notifications/discord.d.ts.map +1 -0
- package/dist/lib/notifications/discord.js +140 -0
- package/dist/lib/notifications/discord.js.map +1 -0
- package/dist/lib/notifications/index.d.ts +66 -0
- package/dist/lib/notifications/index.d.ts.map +1 -0
- package/dist/lib/notifications/index.js +120 -0
- package/dist/lib/notifications/index.js.map +1 -0
- package/dist/lib/notifications/slack.d.ts +20 -0
- package/dist/lib/notifications/slack.d.ts.map +1 -0
- package/dist/lib/notifications/slack.js +186 -0
- package/dist/lib/notifications/slack.js.map +1 -0
- package/dist/lib/notifications/teams.d.ts +20 -0
- package/dist/lib/notifications/teams.d.ts.map +1 -0
- package/dist/lib/notifications/teams.js +146 -0
- package/dist/lib/notifications/teams.js.map +1 -0
- package/dist/lib/notifications/webhook.d.ts +23 -0
- package/dist/lib/notifications/webhook.d.ts.map +1 -0
- package/dist/lib/notifications/webhook.js +65 -0
- package/dist/lib/notifications/webhook.js.map +1 -0
- package/dist/lib/orchestrator-state.d.ts +194 -0
- package/dist/lib/orchestrator-state.d.ts.map +1 -0
- package/dist/lib/orchestrator-state.js +332 -0
- package/dist/lib/orchestrator-state.js.map +1 -0
- package/dist/lib/realtime-cursor.d.ts +107 -0
- package/dist/lib/realtime-cursor.d.ts.map +1 -0
- package/dist/lib/realtime-cursor.js +260 -0
- package/dist/lib/realtime-cursor.js.map +1 -0
- package/dist/lib/rollback.d.ts +86 -0
- package/dist/lib/rollback.d.ts.map +1 -0
- package/dist/lib/rollback.js +405 -0
- package/dist/lib/rollback.js.map +1 -0
- package/dist/lib/sprint-loader.d.ts +39 -2
- package/dist/lib/sprint-loader.d.ts.map +1 -1
- package/dist/lib/sprint-loader.js +255 -4
- package/dist/lib/sprint-loader.js.map +1 -1
- package/dist/lib/stale-agent-detector.d.ts +102 -0
- package/dist/lib/stale-agent-detector.d.ts.map +1 -0
- package/dist/lib/stale-agent-detector.js +156 -0
- package/dist/lib/stale-agent-detector.js.map +1 -0
- package/dist/lib/task-dependencies.d.ts +143 -0
- package/dist/lib/task-dependencies.d.ts.map +1 -0
- package/dist/lib/task-dependencies.js +357 -0
- package/dist/lib/task-dependencies.js.map +1 -0
- package/dist/lib/task-timeout.d.ts +153 -0
- package/dist/lib/task-timeout.d.ts.map +1 -0
- package/dist/lib/task-timeout.js +505 -0
- package/dist/lib/task-timeout.js.map +1 -0
- package/dist/lib/verification/build-check.d.ts +55 -0
- package/dist/lib/verification/build-check.d.ts.map +1 -0
- package/dist/lib/verification/build-check.js +111 -0
- package/dist/lib/verification/build-check.js.map +1 -0
- package/dist/lib/verification/index.d.ts +19 -0
- package/dist/lib/verification/index.d.ts.map +1 -0
- package/dist/lib/verification/index.js +17 -0
- package/dist/lib/verification/index.js.map +1 -0
- package/dist/lib/verification/lint-check.d.ts +34 -0
- package/dist/lib/verification/lint-check.d.ts.map +1 -0
- package/dist/lib/verification/lint-check.js +215 -0
- package/dist/lib/verification/lint-check.js.map +1 -0
- package/dist/lib/verification/test-runner.d.ts +50 -0
- package/dist/lib/verification/test-runner.d.ts.map +1 -0
- package/dist/lib/verification/test-runner.js +225 -0
- package/dist/lib/verification/test-runner.js.map +1 -0
- package/dist/utils/command-helpers.d.ts.map +1 -1
- package/dist/utils/command-helpers.js +7 -0
- package/dist/utils/command-helpers.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,378 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileType: utility
|
|
3
|
+
* @status: current
|
|
4
|
+
* @updated: 2025-12-07
|
|
5
|
+
* @tags: [dead-letter-queue, dlq, resilience, event-retry, epic-004]
|
|
6
|
+
* @related: [event-queue.ts, event-logger.ts, api-client.ts]
|
|
7
|
+
* @priority: high
|
|
8
|
+
* @complexity: medium
|
|
9
|
+
* @dependencies: [fs-extra, uuid]
|
|
10
|
+
*/
|
|
11
|
+
import fs from 'fs-extra';
|
|
12
|
+
import path from 'path';
|
|
13
|
+
import { v4 as uuidv4 } from 'uuid';
|
|
14
|
+
import { getGinkoDir } from '../utils/helpers.js';
|
|
15
|
+
const DEFAULT_CONFIG = {
|
|
16
|
+
maxRetries: 3,
|
|
17
|
+
retryDelays: [
|
|
18
|
+
60 * 1000, // 1 minute
|
|
19
|
+
5 * 60 * 1000, // 5 minutes
|
|
20
|
+
30 * 60 * 1000 // 30 minutes
|
|
21
|
+
],
|
|
22
|
+
abandonedThreshold: 24 * 60 * 60 * 1000 // 24 hours
|
|
23
|
+
};
|
|
24
|
+
/**
|
|
25
|
+
* Get path to DLQ directory
|
|
26
|
+
*/
|
|
27
|
+
async function getDLQDirectory() {
|
|
28
|
+
const ginkoDir = await getGinkoDir();
|
|
29
|
+
const dlqDir = path.join(ginkoDir, 'dlq');
|
|
30
|
+
await fs.ensureDir(dlqDir);
|
|
31
|
+
return dlqDir;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Get path to DLQ entry file
|
|
35
|
+
*/
|
|
36
|
+
async function getDLQEntryPath(entryId) {
|
|
37
|
+
const dlqDir = await getDLQDirectory();
|
|
38
|
+
return path.join(dlqDir, `${entryId}.json`);
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Generate unique DLQ entry ID
|
|
42
|
+
*/
|
|
43
|
+
function generateDLQEntryId() {
|
|
44
|
+
const timestamp = Date.now();
|
|
45
|
+
const random = uuidv4().split('-')[0];
|
|
46
|
+
return `dlq_${timestamp}_${random}`;
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Add event to Dead Letter Queue
|
|
50
|
+
*
|
|
51
|
+
* Called when event sync fails after all retries in event-queue.ts
|
|
52
|
+
*
|
|
53
|
+
* @param event - Original event that failed to sync
|
|
54
|
+
* @param reason - Failure reason description
|
|
55
|
+
* @returns DLQ entry ID
|
|
56
|
+
*/
|
|
57
|
+
export async function addToDeadLetter(event, reason) {
|
|
58
|
+
const entryId = generateDLQEntryId();
|
|
59
|
+
const entry = {
|
|
60
|
+
id: entryId,
|
|
61
|
+
originalEvent: event,
|
|
62
|
+
failureReason: reason,
|
|
63
|
+
failedAt: new Date(),
|
|
64
|
+
retryCount: 0,
|
|
65
|
+
status: 'pending'
|
|
66
|
+
};
|
|
67
|
+
try {
|
|
68
|
+
const filePath = await getDLQEntryPath(entryId);
|
|
69
|
+
await fs.writeJson(filePath, entry, { spaces: 2 });
|
|
70
|
+
console.log(`[DLQ] Added event ${event.id} to dead letter queue: ${entryId}`);
|
|
71
|
+
return entryId;
|
|
72
|
+
}
|
|
73
|
+
catch (error) {
|
|
74
|
+
console.error('[DLQ] Failed to write DLQ entry:', error instanceof Error ? error.message : String(error));
|
|
75
|
+
throw error;
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Get all DLQ entries, optionally filtered by status
|
|
80
|
+
*
|
|
81
|
+
* @param status - Optional status filter
|
|
82
|
+
* @returns Array of DLQ entries
|
|
83
|
+
*/
|
|
84
|
+
export async function getDeadLetterEntries(status) {
|
|
85
|
+
try {
|
|
86
|
+
const dlqDir = await getDLQDirectory();
|
|
87
|
+
const files = await fs.readdir(dlqDir);
|
|
88
|
+
const entries = [];
|
|
89
|
+
for (const file of files) {
|
|
90
|
+
if (!file.endsWith('.json'))
|
|
91
|
+
continue;
|
|
92
|
+
try {
|
|
93
|
+
const filePath = path.join(dlqDir, file);
|
|
94
|
+
const entry = await fs.readJson(filePath);
|
|
95
|
+
// Convert date strings back to Date objects
|
|
96
|
+
entry.failedAt = new Date(entry.failedAt);
|
|
97
|
+
if (entry.lastRetryAt) {
|
|
98
|
+
entry.lastRetryAt = new Date(entry.lastRetryAt);
|
|
99
|
+
}
|
|
100
|
+
// Apply status filter if provided
|
|
101
|
+
if (!status || entry.status === status) {
|
|
102
|
+
entries.push(entry);
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
catch (error) {
|
|
106
|
+
console.warn(`[DLQ] Failed to read entry ${file}:`, error instanceof Error ? error.message : String(error));
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
// Sort by failedAt timestamp (oldest first)
|
|
110
|
+
entries.sort((a, b) => a.failedAt.getTime() - b.failedAt.getTime());
|
|
111
|
+
return entries;
|
|
112
|
+
}
|
|
113
|
+
catch (error) {
|
|
114
|
+
console.error('[DLQ] Failed to list DLQ entries:', error instanceof Error ? error.message : String(error));
|
|
115
|
+
return [];
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
/**
|
|
119
|
+
* Get a specific DLQ entry by ID
|
|
120
|
+
*
|
|
121
|
+
* @param entryId - DLQ entry ID
|
|
122
|
+
* @returns DLQ entry or null if not found
|
|
123
|
+
*/
|
|
124
|
+
export async function getDeadLetterEntry(entryId) {
|
|
125
|
+
try {
|
|
126
|
+
const filePath = await getDLQEntryPath(entryId);
|
|
127
|
+
if (!await fs.pathExists(filePath)) {
|
|
128
|
+
return null;
|
|
129
|
+
}
|
|
130
|
+
const entry = await fs.readJson(filePath);
|
|
131
|
+
// Convert date strings back to Date objects
|
|
132
|
+
entry.failedAt = new Date(entry.failedAt);
|
|
133
|
+
if (entry.lastRetryAt) {
|
|
134
|
+
entry.lastRetryAt = new Date(entry.lastRetryAt);
|
|
135
|
+
}
|
|
136
|
+
return entry;
|
|
137
|
+
}
|
|
138
|
+
catch (error) {
|
|
139
|
+
console.error(`[DLQ] Failed to get entry ${entryId}:`, error instanceof Error ? error.message : String(error));
|
|
140
|
+
return null;
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
/**
|
|
144
|
+
* Update DLQ entry status and metadata
|
|
145
|
+
*
|
|
146
|
+
* @param entryId - DLQ entry ID
|
|
147
|
+
* @param updates - Partial entry updates
|
|
148
|
+
*/
|
|
149
|
+
async function updateDeadLetterEntry(entryId, updates) {
|
|
150
|
+
const entry = await getDeadLetterEntry(entryId);
|
|
151
|
+
if (!entry) {
|
|
152
|
+
throw new Error(`DLQ entry not found: ${entryId}`);
|
|
153
|
+
}
|
|
154
|
+
const updatedEntry = { ...entry, ...updates };
|
|
155
|
+
const filePath = await getDLQEntryPath(entryId);
|
|
156
|
+
await fs.writeJson(filePath, updatedEntry, { spaces: 2 });
|
|
157
|
+
}
|
|
158
|
+
/**
|
|
159
|
+
* Retry a specific DLQ entry
|
|
160
|
+
*
|
|
161
|
+
* Attempts to sync the event again, respecting retry count and delays
|
|
162
|
+
*
|
|
163
|
+
* @param entryId - DLQ entry ID to retry
|
|
164
|
+
* @param config - Optional DLQ configuration
|
|
165
|
+
* @returns Success status and updated entry
|
|
166
|
+
*/
|
|
167
|
+
export async function retryDeadLetter(entryId, config = {}) {
|
|
168
|
+
const fullConfig = { ...DEFAULT_CONFIG, ...config };
|
|
169
|
+
const entry = await getDeadLetterEntry(entryId);
|
|
170
|
+
if (!entry) {
|
|
171
|
+
throw new Error(`DLQ entry not found: ${entryId}`);
|
|
172
|
+
}
|
|
173
|
+
// Check if entry has exceeded max retries
|
|
174
|
+
if (entry.retryCount >= fullConfig.maxRetries) {
|
|
175
|
+
console.warn(`[DLQ] Entry ${entryId} has exceeded max retries (${fullConfig.maxRetries})`);
|
|
176
|
+
await updateDeadLetterEntry(entryId, {
|
|
177
|
+
status: 'abandoned',
|
|
178
|
+
lastRetryAt: new Date()
|
|
179
|
+
});
|
|
180
|
+
const updatedEntry = await getDeadLetterEntry(entryId);
|
|
181
|
+
return {
|
|
182
|
+
success: false,
|
|
183
|
+
entry: updatedEntry,
|
|
184
|
+
error: 'Max retry attempts exceeded'
|
|
185
|
+
};
|
|
186
|
+
}
|
|
187
|
+
// Check retry delay
|
|
188
|
+
if (entry.lastRetryAt) {
|
|
189
|
+
const delayIndex = Math.min(entry.retryCount, fullConfig.retryDelays.length - 1);
|
|
190
|
+
const requiredDelay = fullConfig.retryDelays[delayIndex];
|
|
191
|
+
const timeSinceLastRetry = Date.now() - entry.lastRetryAt.getTime();
|
|
192
|
+
if (timeSinceLastRetry < requiredDelay) {
|
|
193
|
+
const remainingDelay = requiredDelay - timeSinceLastRetry;
|
|
194
|
+
console.warn(`[DLQ] Entry ${entryId} cannot retry yet. ${Math.ceil(remainingDelay / 1000)}s remaining.`);
|
|
195
|
+
return {
|
|
196
|
+
success: false,
|
|
197
|
+
entry,
|
|
198
|
+
error: `Retry delay not met. Wait ${Math.ceil(remainingDelay / 1000)}s`
|
|
199
|
+
};
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
// Update status to retrying
|
|
203
|
+
await updateDeadLetterEntry(entryId, {
|
|
204
|
+
status: 'retrying',
|
|
205
|
+
retryCount: entry.retryCount + 1,
|
|
206
|
+
lastRetryAt: new Date()
|
|
207
|
+
});
|
|
208
|
+
console.log(`[DLQ] Retrying entry ${entryId} (attempt ${entry.retryCount + 1}/${fullConfig.maxRetries})`);
|
|
209
|
+
try {
|
|
210
|
+
// Attempt to sync event to graph
|
|
211
|
+
const { createGraphEvents } = await import('../commands/graph/api-client.js');
|
|
212
|
+
const graphEvent = {
|
|
213
|
+
id: entry.originalEvent.id,
|
|
214
|
+
user_id: entry.originalEvent.user_id,
|
|
215
|
+
organization_id: entry.originalEvent.organization_id,
|
|
216
|
+
project_id: entry.originalEvent.project_id,
|
|
217
|
+
category: entry.originalEvent.category,
|
|
218
|
+
description: entry.originalEvent.description,
|
|
219
|
+
timestamp: entry.originalEvent.timestamp,
|
|
220
|
+
impact: entry.originalEvent.impact,
|
|
221
|
+
files: entry.originalEvent.files,
|
|
222
|
+
branch: entry.originalEvent.branch,
|
|
223
|
+
tags: entry.originalEvent.tags,
|
|
224
|
+
shared: entry.originalEvent.shared,
|
|
225
|
+
commit_hash: entry.originalEvent.commit_hash,
|
|
226
|
+
pressure: entry.originalEvent.pressure,
|
|
227
|
+
blocked_by: entry.originalEvent.blocked_by,
|
|
228
|
+
blocking_tasks: entry.originalEvent.blocking_tasks,
|
|
229
|
+
blocker_severity: entry.originalEvent.blocker_severity,
|
|
230
|
+
agent_id: entry.originalEvent.agent_id
|
|
231
|
+
};
|
|
232
|
+
await createGraphEvents([graphEvent]);
|
|
233
|
+
// Success - mark as resolved
|
|
234
|
+
await updateDeadLetterEntry(entryId, {
|
|
235
|
+
status: 'resolved'
|
|
236
|
+
});
|
|
237
|
+
console.log(`[DLQ] ✓ Entry ${entryId} successfully retried and resolved`);
|
|
238
|
+
const resolvedEntry = await getDeadLetterEntry(entryId);
|
|
239
|
+
return {
|
|
240
|
+
success: true,
|
|
241
|
+
entry: resolvedEntry
|
|
242
|
+
};
|
|
243
|
+
}
|
|
244
|
+
catch (error) {
|
|
245
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
246
|
+
console.error(`[DLQ] Retry attempt failed for ${entryId}:`, errorMessage);
|
|
247
|
+
// Update status back to pending (unless max retries reached)
|
|
248
|
+
const newRetryCount = entry.retryCount + 1;
|
|
249
|
+
const newStatus = newRetryCount >= fullConfig.maxRetries ? 'abandoned' : 'pending';
|
|
250
|
+
await updateDeadLetterEntry(entryId, {
|
|
251
|
+
status: newStatus,
|
|
252
|
+
failureReason: `${entry.failureReason}\nRetry ${newRetryCount} failed: ${errorMessage}`
|
|
253
|
+
});
|
|
254
|
+
const failedEntry = await getDeadLetterEntry(entryId);
|
|
255
|
+
return {
|
|
256
|
+
success: false,
|
|
257
|
+
entry: failedEntry,
|
|
258
|
+
error: errorMessage
|
|
259
|
+
};
|
|
260
|
+
}
|
|
261
|
+
}
|
|
262
|
+
/**
|
|
263
|
+
* Auto-retry eligible DLQ entries
|
|
264
|
+
*
|
|
265
|
+
* Called periodically to retry pending entries that meet delay requirements
|
|
266
|
+
*
|
|
267
|
+
* @param config - Optional DLQ configuration
|
|
268
|
+
* @returns Number of entries retried
|
|
269
|
+
*/
|
|
270
|
+
export async function autoRetryDeadLetters(config = {}) {
|
|
271
|
+
const fullConfig = { ...DEFAULT_CONFIG, ...config };
|
|
272
|
+
const pendingEntries = await getDeadLetterEntries('pending');
|
|
273
|
+
let retriedCount = 0;
|
|
274
|
+
for (const entry of pendingEntries) {
|
|
275
|
+
// Skip if max retries exceeded
|
|
276
|
+
if (entry.retryCount >= fullConfig.maxRetries) {
|
|
277
|
+
await updateDeadLetterEntry(entry.id, { status: 'abandoned' });
|
|
278
|
+
continue;
|
|
279
|
+
}
|
|
280
|
+
// Check if entry is old enough to abandon
|
|
281
|
+
const age = Date.now() - entry.failedAt.getTime();
|
|
282
|
+
if (age > fullConfig.abandonedThreshold) {
|
|
283
|
+
console.log(`[DLQ] Abandoning old entry ${entry.id} (age: ${Math.floor(age / 1000 / 60 / 60)}h)`);
|
|
284
|
+
await updateDeadLetterEntry(entry.id, { status: 'abandoned' });
|
|
285
|
+
continue;
|
|
286
|
+
}
|
|
287
|
+
// Check if retry delay has passed
|
|
288
|
+
if (entry.lastRetryAt) {
|
|
289
|
+
const delayIndex = Math.min(entry.retryCount, fullConfig.retryDelays.length - 1);
|
|
290
|
+
const requiredDelay = fullConfig.retryDelays[delayIndex];
|
|
291
|
+
const timeSinceLastRetry = Date.now() - entry.lastRetryAt.getTime();
|
|
292
|
+
if (timeSinceLastRetry < requiredDelay) {
|
|
293
|
+
continue; // Not ready to retry yet
|
|
294
|
+
}
|
|
295
|
+
}
|
|
296
|
+
// Attempt retry
|
|
297
|
+
const result = await retryDeadLetter(entry.id, fullConfig);
|
|
298
|
+
if (result.success) {
|
|
299
|
+
retriedCount++;
|
|
300
|
+
}
|
|
301
|
+
}
|
|
302
|
+
if (retriedCount > 0) {
|
|
303
|
+
console.log(`[DLQ] Auto-retry completed: ${retriedCount} entries retried`);
|
|
304
|
+
}
|
|
305
|
+
return retriedCount;
|
|
306
|
+
}
|
|
307
|
+
/**
|
|
308
|
+
* Delete a resolved or abandoned DLQ entry
|
|
309
|
+
*
|
|
310
|
+
* @param entryId - DLQ entry ID to delete
|
|
311
|
+
*/
|
|
312
|
+
export async function deleteDeadLetterEntry(entryId) {
|
|
313
|
+
const entry = await getDeadLetterEntry(entryId);
|
|
314
|
+
if (!entry) {
|
|
315
|
+
throw new Error(`DLQ entry not found: ${entryId}`);
|
|
316
|
+
}
|
|
317
|
+
// Only allow deletion of resolved or abandoned entries
|
|
318
|
+
if (entry.status !== 'resolved' && entry.status !== 'abandoned') {
|
|
319
|
+
throw new Error(`Cannot delete entry with status: ${entry.status}`);
|
|
320
|
+
}
|
|
321
|
+
const filePath = await getDLQEntryPath(entryId);
|
|
322
|
+
await fs.remove(filePath);
|
|
323
|
+
console.log(`[DLQ] Deleted entry ${entryId}`);
|
|
324
|
+
}
|
|
325
|
+
/**
|
|
326
|
+
* Clean up old resolved/abandoned entries
|
|
327
|
+
*
|
|
328
|
+
* @param olderThanDays - Delete entries older than N days (default 30)
|
|
329
|
+
* @returns Number of entries deleted
|
|
330
|
+
*/
|
|
331
|
+
export async function cleanupDeadLetters(olderThanDays = 30) {
|
|
332
|
+
const cutoffTime = Date.now() - (olderThanDays * 24 * 60 * 60 * 1000);
|
|
333
|
+
const resolvedEntries = await getDeadLetterEntries('resolved');
|
|
334
|
+
const abandonedEntries = await getDeadLetterEntries('abandoned');
|
|
335
|
+
let deletedCount = 0;
|
|
336
|
+
for (const entry of [...resolvedEntries, ...abandonedEntries]) {
|
|
337
|
+
const entryTime = entry.lastRetryAt?.getTime() || entry.failedAt.getTime();
|
|
338
|
+
if (entryTime < cutoffTime) {
|
|
339
|
+
try {
|
|
340
|
+
await deleteDeadLetterEntry(entry.id);
|
|
341
|
+
deletedCount++;
|
|
342
|
+
}
|
|
343
|
+
catch (error) {
|
|
344
|
+
console.warn(`[DLQ] Failed to delete entry ${entry.id}:`, error instanceof Error ? error.message : String(error));
|
|
345
|
+
}
|
|
346
|
+
}
|
|
347
|
+
}
|
|
348
|
+
if (deletedCount > 0) {
|
|
349
|
+
console.log(`[DLQ] Cleanup completed: ${deletedCount} old entries deleted`);
|
|
350
|
+
}
|
|
351
|
+
return deletedCount;
|
|
352
|
+
}
|
|
353
|
+
/**
|
|
354
|
+
* Get DLQ statistics
|
|
355
|
+
*
|
|
356
|
+
* @returns Summary of DLQ state
|
|
357
|
+
*/
|
|
358
|
+
export async function getDeadLetterStats() {
|
|
359
|
+
const allEntries = await getDeadLetterEntries();
|
|
360
|
+
const stats = {
|
|
361
|
+
pending: 0,
|
|
362
|
+
retrying: 0,
|
|
363
|
+
resolved: 0,
|
|
364
|
+
abandoned: 0,
|
|
365
|
+
total: allEntries.length,
|
|
366
|
+
oldestPending: undefined
|
|
367
|
+
};
|
|
368
|
+
let oldestPendingTime = Infinity;
|
|
369
|
+
for (const entry of allEntries) {
|
|
370
|
+
stats[entry.status]++;
|
|
371
|
+
if (entry.status === 'pending' && entry.failedAt.getTime() < oldestPendingTime) {
|
|
372
|
+
oldestPendingTime = entry.failedAt.getTime();
|
|
373
|
+
stats.oldestPending = entry.failedAt;
|
|
374
|
+
}
|
|
375
|
+
}
|
|
376
|
+
return stats;
|
|
377
|
+
}
|
|
378
|
+
//# sourceMappingURL=dead-letter-queue.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dead-letter-queue.js","sourceRoot":"","sources":["../../src/lib/dead-letter-queue.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,11 +8,15 @@
|
|
|
8
8
|
* @complexity: medium
|
|
9
9
|
* @dependencies: [fs-extra, uuid]
|
|
10
10
|
*/
|
|
11
|
+
/**
|
|
12
|
+
* Blocker severity levels for multi-agent coordination
|
|
13
|
+
*/
|
|
14
|
+
export type BlockerSeverity = 'low' | 'medium' | 'high' | 'critical';
|
|
11
15
|
/**
|
|
12
16
|
* Event entry structure (aligned with ADR-043)
|
|
13
17
|
*/
|
|
14
18
|
export interface EventEntry {
|
|
15
|
-
category: 'fix' | 'feature' | 'decision' | 'insight' | 'git' | 'achievement' | 'gotcha';
|
|
19
|
+
category: 'fix' | 'feature' | 'decision' | 'insight' | 'git' | 'achievement' | 'gotcha' | 'blocker';
|
|
16
20
|
description: string;
|
|
17
21
|
files?: string[];
|
|
18
22
|
impact?: 'high' | 'medium' | 'low';
|
|
@@ -20,6 +24,9 @@ export interface EventEntry {
|
|
|
20
24
|
tags?: string[];
|
|
21
25
|
shared?: boolean;
|
|
22
26
|
commit_hash?: string;
|
|
27
|
+
blocked_by?: string;
|
|
28
|
+
blocking_tasks?: string[];
|
|
29
|
+
blocker_severity?: BlockerSeverity;
|
|
23
30
|
}
|
|
24
31
|
/**
|
|
25
32
|
* Internal event structure with metadata
|
|
@@ -32,6 +39,7 @@ export interface Event extends EventEntry {
|
|
|
32
39
|
timestamp: string;
|
|
33
40
|
pressure?: number;
|
|
34
41
|
synced_to_graph?: boolean;
|
|
42
|
+
agent_id?: string;
|
|
35
43
|
}
|
|
36
44
|
/**
|
|
37
45
|
* Log an event with cloud-first pattern (TASK-012)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"event-logger.d.ts","sourceRoot":"","sources":["../../src/lib/event-logger.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAQH;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,QAAQ,EAAE,KAAK,GAAG,SAAS,GAAG,UAAU,GAAG,SAAS,GAAG,KAAK,GAAG,aAAa,GAAG,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"event-logger.d.ts","sourceRoot":"","sources":["../../src/lib/event-logger.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAQH;;GAEG;AACH,MAAM,MAAM,eAAe,GAAG,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,UAAU,CAAC;AAErE;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,QAAQ,EAAE,KAAK,GAAG,SAAS,GAAG,UAAU,GAAG,SAAS,GAAG,KAAK,GAAG,aAAa,GAAG,QAAQ,GAAG,SAAS,CAAC;IACpG,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAC;IACnC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,gBAAgB,CAAC,EAAE,eAAe,CAAC;CACpC;AAED;;GAEG;AACH,MAAM,WAAW,KAAM,SAAQ,UAAU;IACvC,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,eAAe,EAAE,MAAM,CAAC;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,eAAe,CAAC,EAAE,OAAO,CAAC;IAE1B,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAyHD;;;;;;;;;;;;;GAaG;AACH,wBAAsB,QAAQ,CAAC,KAAK,EAAE,UAAU,GAAG,OAAO,CAAC,KAAK,CAAC,CAgGhE;AAED;;GAEG;AACH,wBAAsB,UAAU,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC,CAgBnD;AAED;;GAEG;AACH,wBAAsB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAoBxE;AAED;;GAEG;AACH,wBAAsB,iBAAiB,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC,CAG1D;AAED;;GAEG;AACH,wBAAsB,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC,CAOjD"}
|
package/dist/lib/event-logger.js
CHANGED
|
@@ -13,6 +13,24 @@ import path from 'path';
|
|
|
13
13
|
import { v4 as uuidv4 } from 'uuid';
|
|
14
14
|
import { getGinkoDir, getUserEmail, getProjectRoot } from '../utils/helpers.js';
|
|
15
15
|
import { execSync } from 'child_process';
|
|
16
|
+
/**
|
|
17
|
+
* Get agent ID from local config if registered (EPIC-004 Sprint 2 TASK-7)
|
|
18
|
+
* Returns undefined for human users (no agent registered)
|
|
19
|
+
*/
|
|
20
|
+
async function getAgentId() {
|
|
21
|
+
try {
|
|
22
|
+
const ginkoDir = await getGinkoDir();
|
|
23
|
+
const agentConfigPath = path.join(ginkoDir, 'agent.json');
|
|
24
|
+
if (await fs.pathExists(agentConfigPath)) {
|
|
25
|
+
const config = await fs.readJson(agentConfigPath);
|
|
26
|
+
return config.agentId;
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
catch {
|
|
30
|
+
// No agent registered or config unreadable - this is expected for human users
|
|
31
|
+
}
|
|
32
|
+
return undefined;
|
|
33
|
+
}
|
|
16
34
|
/**
|
|
17
35
|
* Get current event context (user, org, project)
|
|
18
36
|
*/
|
|
@@ -34,11 +52,14 @@ async function getEventContext() {
|
|
|
34
52
|
// Organization ID: extract from project path or use default
|
|
35
53
|
// Example: /Users/cnorton/Development/ginko -> "watchhill-ai"
|
|
36
54
|
const orgId = 'watchhill-ai'; // Can be enhanced to read from config
|
|
55
|
+
// EPIC-004 Sprint 2 TASK-7: Get agent ID if registered
|
|
56
|
+
const agentId = await getAgentId();
|
|
37
57
|
return {
|
|
38
58
|
user_id: userEmail,
|
|
39
59
|
organization_id: orgId,
|
|
40
60
|
project_id: projectName,
|
|
41
|
-
branch
|
|
61
|
+
branch,
|
|
62
|
+
agent_id: agentId
|
|
42
63
|
};
|
|
43
64
|
}
|
|
44
65
|
/**
|
|
@@ -122,7 +143,13 @@ export async function logEvent(entry) {
|
|
|
122
143
|
tags: entry.tags,
|
|
123
144
|
shared: entry.shared || false,
|
|
124
145
|
commit_hash: entry.commit_hash,
|
|
125
|
-
synced_to_graph: false
|
|
146
|
+
synced_to_graph: false,
|
|
147
|
+
// Blocker-specific fields (EPIC-004 Sprint 2 TASK-4)
|
|
148
|
+
blocked_by: entry.blocked_by,
|
|
149
|
+
blocking_tasks: entry.blocking_tasks,
|
|
150
|
+
blocker_severity: entry.blocker_severity,
|
|
151
|
+
// Agent attribution (EPIC-004 Sprint 2 TASK-7)
|
|
152
|
+
agent_id: context.agent_id
|
|
126
153
|
};
|
|
127
154
|
// TASK-012: Check cloud-only mode
|
|
128
155
|
const cloudOnly = process.env.GINKO_CLOUD_ONLY === 'true';
|
|
@@ -146,7 +173,13 @@ export async function logEvent(entry) {
|
|
|
146
173
|
tags: event.tags,
|
|
147
174
|
shared: event.shared,
|
|
148
175
|
commit_hash: event.commit_hash,
|
|
149
|
-
pressure: event.pressure
|
|
176
|
+
pressure: event.pressure,
|
|
177
|
+
// Blocker-specific fields (EPIC-004 Sprint 2 TASK-4)
|
|
178
|
+
blocked_by: event.blocked_by,
|
|
179
|
+
blocking_tasks: event.blocking_tasks,
|
|
180
|
+
blocker_severity: event.blocker_severity,
|
|
181
|
+
// Agent attribution (EPIC-004 Sprint 2 TASK-7)
|
|
182
|
+
agent_id: event.agent_id
|
|
150
183
|
};
|
|
151
184
|
// Synchronous write to graph (fail loudly if it fails)
|
|
152
185
|
await createGraphEvents([graphEvent]);
|
|
@@ -172,6 +205,15 @@ export async function logEvent(entry) {
|
|
|
172
205
|
console.warn('[EventLogger] Failed to add to sync queue:', error instanceof Error ? error.message : String(error));
|
|
173
206
|
}
|
|
174
207
|
}
|
|
208
|
+
// EPIC-004: Real-time cursor update for multi-agent coordination
|
|
209
|
+
// Push cursor position to cloud so other agents see our progress
|
|
210
|
+
try {
|
|
211
|
+
const { onEventLogged } = await import('./realtime-cursor.js');
|
|
212
|
+
await onEventLogged(event.id);
|
|
213
|
+
}
|
|
214
|
+
catch {
|
|
215
|
+
// Cursor update is non-critical - don't block event logging
|
|
216
|
+
}
|
|
175
217
|
return event;
|
|
176
218
|
}
|
|
177
219
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"event-logger.js","sourceRoot":"","sources":["../../src/lib/event-logger.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,MAAM,UAAU,CAAC;AAC1B,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,EAAE,IAAI,MAAM,EAAE,MAAM,MAAM,CAAC;AACpC,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAChF,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"event-logger.js","sourceRoot":"","sources":["../../src/lib/event-logger.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,MAAM,UAAU,CAAC;AAC1B,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,EAAE,IAAI,MAAM,EAAE,MAAM,MAAM,CAAC;AACpC,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAChF,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAoDzC;;;GAGG;AACH,KAAK,UAAU,UAAU;IACvB,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,WAAW,EAAE,CAAC;QACrC,MAAM,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;QAE1D,IAAI,MAAM,EAAE,CAAC,UAAU,CAAC,eAAe,CAAC,EAAE,CAAC;YACzC,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC;YAClD,OAAO,MAAM,CAAC,OAAO,CAAC;QACxB,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,8EAA8E;IAChF,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,eAAe;IAC5B,MAAM,SAAS,GAAG,MAAM,YAAY,EAAE,CAAC;IACvC,MAAM,WAAW,GAAG,MAAM,cAAc,EAAE,CAAC;IAC3C,MAAM,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;IAE/C,qBAAqB;IACrB,IAAI,MAAM,GAAG,MAAM,CAAC;IACpB,IAAI,CAAC;QACH,MAAM,GAAG,QAAQ,CAAC,iCAAiC,EAAE;YACnD,QAAQ,EAAE,MAAM;YAChB,GAAG,EAAE,WAAW;SACjB,CAAC,CAAC,IAAI,EAAE,CAAC;IACZ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,yCAAyC;IAC3C,CAAC;IAED,4DAA4D;IAC5D,8DAA8D;IAC9D,MAAM,KAAK,GAAG,cAAc,CAAC,CAAC,sCAAsC;IAEpE,uDAAuD;IACvD,MAAM,OAAO,GAAG,MAAM,UAAU,EAAE,CAAC;IAEnC,OAAO;QACL,OAAO,EAAE,SAAS;QAClB,eAAe,EAAE,KAAK;QACtB,UAAU,EAAE,WAAW;QACvB,MAAM;QACN,QAAQ,EAAE,OAAO;KAClB,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,SAAS,eAAe;IACtB,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAC7B,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,4BAA4B;IACnE,OAAO,SAAS,SAAS,IAAI,MAAM,EAAE,CAAC;AACxC,CAAC;AAED;;GAEG;AACH,SAAS,sBAAsB;IAC7B,wDAAwD;IACxD,uCAAuC;IACvC,OAAO,GAAG,CAAC,CAAC,MAAM;AACpB,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,iBAAiB;IAC9B,MAAM,QAAQ,GAAG,MAAM,WAAW,EAAE,CAAC;IACrC,MAAM,SAAS,GAAG,MAAM,YAAY,EAAE,CAAC;IACvC,MAAM,QAAQ,GAAG,SAAS,CAAC,OAAO,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IACpE,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC;IAE7D,kCAAkC;IAClC,MAAM,EAAE,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;IAE/B,OAAO,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,sBAAsB,CAAC,CAAC;AACvD,CAAC;AAED;;;;;GAKG;AACH,KAAK,UAAU,iBAAiB,CAAC,KAAY;IAC3C,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,iBAAiB,EAAE,CAAC;QAC3C,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC;QAE/C,0BAA0B;QAC1B,MAAM,EAAE,CAAC,UAAU,CAAC,QAAQ,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;IACnD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,0DAA0D;QAC1D,OAAO,CAAC,KAAK,CAAC,8CAA8C,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QACtH,MAAM,KAAK,CAAC,CAAC,4CAA4C;IAC3D,CAAC;AACH,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,CAAC,KAAK,UAAU,QAAQ,CAAC,KAAiB;IAC9C,oBAAoB;IACpB,MAAM,OAAO,GAAG,MAAM,eAAe,EAAE,CAAC;IACxC,MAAM,QAAQ,GAAG,sBAAsB,EAAE,CAAC;IAE1C,gCAAgC;IAChC,MAAM,KAAK,GAAU;QACnB,EAAE,EAAE,eAAe,EAAE;QACrB,OAAO,EAAE,OAAO,CAAC,OAAO;QACxB,eAAe,EAAE,OAAO,CAAC,eAAe;QACxC,UAAU,EAAE,OAAO,CAAC,UAAU;QAC9B,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QACnC,QAAQ;QACR,MAAM,EAAE,KAAK,CAAC,MAAM,IAAI,OAAO,CAAC,MAAM;QACtC,QAAQ,EAAE,KAAK,CAAC,QAAQ;QACxB,WAAW,EAAE,KAAK,CAAC,WAAW;QAC9B,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,MAAM,EAAE,KAAK,CAAC,MAAM,IAAI,QAAQ;QAChC,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,MAAM,EAAE,KAAK,CAAC,MAAM,IAAI,KAAK;QAC7B,WAAW,EAAE,KAAK,CAAC,WAAW;QAC9B,eAAe,EAAE,KAAK;QACtB,qDAAqD;QACrD,UAAU,EAAE,KAAK,CAAC,UAAU;QAC5B,cAAc,EAAE,KAAK,CAAC,cAAc;QACpC,gBAAgB,EAAE,KAAK,CAAC,gBAAgB;QACxC,+CAA+C;QAC/C,QAAQ,EAAE,OAAO,CAAC,QAAQ;KAC3B,CAAC;IAEF,kCAAkC;IAClC,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,gBAAgB,KAAK,MAAM,CAAC;IAE1D,IAAI,SAAS,EAAE,CAAC;QACd,gEAAgE;QAChE,sEAAsE;QACtE,IAAI,CAAC;YACH,MAAM,EAAE,iBAAiB,EAAE,GAAG,MAAM,MAAM,CAAC,iCAAiC,CAAC,CAAC;YAE9E,8BAA8B;YAC9B,MAAM,UAAU,GAAG;gBACjB,EAAE,EAAE,KAAK,CAAC,EAAE;gBACZ,OAAO,EAAE,KAAK,CAAC,OAAO;gBACtB,eAAe,EAAE,KAAK,CAAC,eAAe;gBACtC,UAAU,EAAE,KAAK,CAAC,UAAU;gBAC5B,QAAQ,EAAE,KAAK,CAAC,QAAQ;gBACxB,WAAW,EAAE,KAAK,CAAC,WAAW;gBAC9B,SAAS,EAAE,KAAK,CAAC,SAAS;gBAC1B,MAAM,EAAE,KAAK,CAAC,MAAM;gBACpB,KAAK,EAAE,KAAK,CAAC,KAAK;gBAClB,MAAM,EAAE,KAAK,CAAC,MAAM;gBACpB,IAAI,EAAE,KAAK,CAAC,IAAI;gBAChB,MAAM,EAAE,KAAK,CAAC,MAAM;gBACpB,WAAW,EAAE,KAAK,CAAC,WAAW;gBAC9B,QAAQ,EAAE,KAAK,CAAC,QAAQ;gBACxB,qDAAqD;gBACrD,UAAU,EAAE,KAAK,CAAC,UAAU;gBAC5B,cAAc,EAAE,KAAK,CAAC,cAAc;gBACpC,gBAAgB,EAAE,KAAK,CAAC,gBAAgB;gBACxC,+CAA+C;gBAC/C,QAAQ,EAAE,KAAK,CAAC,QAAQ;aACzB,CAAC;YAEF,uDAAuD;YACvD,MAAM,iBAAiB,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC;YACtC,OAAO,CAAC,GAAG,CAAC,qDAAqD,CAAC,CAAC;QACrE,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,sDAAsD,CAAC,CAAC;YACtE,OAAO,CAAC,KAAK,CAAC,0DAA0D,CAAC,CAAC;YAC1E,MAAM,IAAI,KAAK,CAAC,wCAAwC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QACpH,CAAC;IACH,CAAC;SAAM,CAAC;QACN,oEAAoE;QACpE,oDAAoD;QACpD,MAAM,iBAAiB,CAAC,KAAK,CAAC,CAAC;QAE/B,+DAA+D;QAC/D,IAAI,CAAC;YACH,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,MAAM,CAAC,kBAAkB,CAAC,CAAC;YACxD,MAAM,UAAU,CAAC,KAAK,CAAC,CAAC;QAC1B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,6DAA6D;YAC7D,OAAO,CAAC,IAAI,CAAC,4CAA4C,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QACrH,CAAC;IACH,CAAC;IAED,iEAAiE;IACjE,iEAAiE;IACjE,IAAI,CAAC;QACH,MAAM,EAAE,aAAa,EAAE,GAAG,MAAM,MAAM,CAAC,sBAAsB,CAAC,CAAC;QAC/D,MAAM,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IAChC,CAAC;IAAC,MAAM,CAAC;QACP,4DAA4D;IAC9D,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU;IAC9B,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,iBAAiB,EAAE,CAAC;QAE3C,IAAI,CAAC,MAAM,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;YACnC,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QACpD,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QAEzE,OAAO,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAU,CAAC,CAAC;IACtD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,sCAAsC,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QAC9G,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,QAAkB;IACvD,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,UAAU,EAAE,CAAC;QAClC,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAC;QAErC,uBAAuB;QACvB,MAAM,aAAa,GAAG,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;YACvC,IAAI,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC;gBAC7B,OAAO,EAAE,GAAG,KAAK,EAAE,eAAe,EAAE,IAAI,EAAE,CAAC;YAC7C,CAAC;YACD,OAAO,KAAK,CAAC;QACf,CAAC,CAAC,CAAC;QAEH,mCAAmC;QACnC,MAAM,QAAQ,GAAG,MAAM,iBAAiB,EAAE,CAAC;QAC3C,MAAM,OAAO,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;QAC5E,MAAM,EAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;IAChD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,gDAAgD,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;IAC1H,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB;IACrC,MAAM,MAAM,GAAG,MAAM,UAAU,EAAE,CAAC;IAClC,OAAO,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;AACxD,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW;IAC/B,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,iBAAiB,EAAE,CAAC;QAC3C,MAAM,EAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,EAAE,EAAE,MAAM,CAAC,CAAC;IAC3C,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,uCAAuC,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;IACjH,CAAC;AACH,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"event-queue.d.ts","sourceRoot":"","sources":["../../src/lib/event-queue.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,KAAK,EAAuC,MAAM,mBAAmB,CAAC;AAE/E;;GAEG;AACH,UAAU,WAAW;IACnB,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;CACtB;AAUD;;GAEG;AACH,UAAU,UAAU;IAClB,YAAY,EAAE,IAAI,GAAG,IAAI,CAAC;IAC1B,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,SAAS,EAAE,OAAO,CAAC;CACpB;AAED;;;;;;;;GAQG;AACH,qBAAa,UAAU;IACrB,OAAO,CAAC,MAAM,CAAc;IAC5B,OAAO,CAAC,SAAS,CAA+B;IAChD,OAAO,CAAC,MAAM,CAMZ;IACF,OAAO,CAAC,cAAc,CAAS;gBAEnB,MAAM,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC;IAIzC;;OAEG;IACH,KAAK,IAAI,IAAI;IAyBb;;OAEG;IACH,IAAI,IAAI,IAAI;IAQZ;;OAEG;IACG,UAAU,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC;IAe7C;;;;;OAKG;IACG,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"event-queue.d.ts","sourceRoot":"","sources":["../../src/lib/event-queue.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,KAAK,EAAuC,MAAM,mBAAmB,CAAC;AAE/E;;GAEG;AACH,UAAU,WAAW;IACnB,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;CACtB;AAUD;;GAEG;AACH,UAAU,UAAU;IAClB,YAAY,EAAE,IAAI,GAAG,IAAI,CAAC;IAC1B,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,SAAS,EAAE,OAAO,CAAC;CACpB;AAED;;;;;;;;GAQG;AACH,qBAAa,UAAU;IACrB,OAAO,CAAC,MAAM,CAAc;IAC5B,OAAO,CAAC,SAAS,CAA+B;IAChD,OAAO,CAAC,MAAM,CAMZ;IACF,OAAO,CAAC,cAAc,CAAS;gBAEnB,MAAM,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC;IAIzC;;OAEG;IACH,KAAK,IAAI,IAAI;IAyBb;;OAEG;IACH,IAAI,IAAI,IAAI;IAQZ;;OAEG;IACG,UAAU,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC;IAe7C;;;;;OAKG;IACG,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC;IA2ElC;;OAEG;YACW,gBAAgB;IA+B9B;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAM5B;;OAEG;IACG,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAmB/B;;OAEG;IACH,SAAS,IAAI,UAAU;IAIvB;;OAEG;IACH,oBAAoB,IAAI,IAAI;CAI7B;AAOD;;GAEG;AACH,wBAAgB,eAAe,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC,GAAG,UAAU,CAsBzE;AAED;;GAEG;AACH,wBAAgB,QAAQ,IAAI,UAAU,CAKrC;AAED;;GAEG;AACH,wBAAsB,UAAU,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,CAO5D;AAED;;GAEG;AACH,wBAAgB,kBAAkB,IAAI,OAAO,CAE5C"}
|
package/dist/lib/event-queue.js
CHANGED
|
@@ -140,9 +140,20 @@ export class EventQueue {
|
|
|
140
140
|
}
|
|
141
141
|
}
|
|
142
142
|
}
|
|
143
|
-
// All retries failed
|
|
143
|
+
// All retries failed - add to Dead Letter Queue
|
|
144
144
|
this.status.lastError = lastError?.message || 'Unknown error';
|
|
145
|
-
console.error('[EventQueue] ⚠ Graph sync failed after all retries,
|
|
145
|
+
console.error('[EventQueue] ⚠ Graph sync failed after all retries, adding to Dead Letter Queue');
|
|
146
|
+
// Add each failed event to DLQ
|
|
147
|
+
try {
|
|
148
|
+
const { addToDeadLetter } = await import('./dead-letter-queue.js');
|
|
149
|
+
for (const event of batch) {
|
|
150
|
+
await addToDeadLetter(event, lastError?.message || 'Unknown sync error');
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
catch (dlqError) {
|
|
154
|
+
console.error('[EventQueue] Failed to add events to DLQ:', dlqError instanceof Error ? dlqError.message : String(dlqError));
|
|
155
|
+
// Events remain in local log as fallback
|
|
156
|
+
}
|
|
146
157
|
}
|
|
147
158
|
finally {
|
|
148
159
|
this.status.isRunning = false;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"event-queue.js","sourceRoot":"","sources":["../../src/lib/event-queue.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"event-queue.js","sourceRoot":"","sources":["../../src/lib/event-queue.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
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
|
+
export {};
|
|
13
|
+
//# sourceMappingURL=timeout-demo.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"timeout-demo.d.ts","sourceRoot":"","sources":["../../../src/lib/examples/timeout-demo.ts"],"names":[],"mappings":";AACA;;;;;;;;;GASG"}
|