@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
|
@@ -38,6 +38,29 @@ async function findGitRoot() {
|
|
|
38
38
|
return process.cwd();
|
|
39
39
|
}
|
|
40
40
|
}
|
|
41
|
+
/**
|
|
42
|
+
* Parse YAML frontmatter from markdown content
|
|
43
|
+
*
|
|
44
|
+
* @param content - Markdown content with optional frontmatter
|
|
45
|
+
* @returns Parsed frontmatter object or empty object
|
|
46
|
+
*/
|
|
47
|
+
function parseFrontmatter(content) {
|
|
48
|
+
const frontmatterMatch = content.match(/^---\n([\s\S]*?)\n---/);
|
|
49
|
+
if (!frontmatterMatch) {
|
|
50
|
+
return {};
|
|
51
|
+
}
|
|
52
|
+
const frontmatter = {};
|
|
53
|
+
const lines = frontmatterMatch[1].split('\n');
|
|
54
|
+
for (const line of lines) {
|
|
55
|
+
const colonIndex = line.indexOf(':');
|
|
56
|
+
if (colonIndex > 0) {
|
|
57
|
+
const key = line.slice(0, colonIndex).trim();
|
|
58
|
+
const value = line.slice(colonIndex + 1).trim();
|
|
59
|
+
frontmatter[key] = value;
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
return frontmatter;
|
|
63
|
+
}
|
|
41
64
|
/**
|
|
42
65
|
* Find active sprint file
|
|
43
66
|
*
|
|
@@ -45,6 +68,15 @@ async function findGitRoot() {
|
|
|
45
68
|
* 1. Check CURRENT-SPRINT.md for "Between Sprints" status → return null
|
|
46
69
|
* 2. Check CURRENT-SPRINT.md for sprint reference → return that file
|
|
47
70
|
* 3. Fall back to scanning SPRINT-*.md files for first incomplete one
|
|
71
|
+
* - Respects frontmatter `status` field: active > not_started > (skip paused/complete)
|
|
72
|
+
*
|
|
73
|
+
* Valid status values:
|
|
74
|
+
* - active: Currently being worked on
|
|
75
|
+
* - not_started: Planned but not yet started
|
|
76
|
+
* - paused: Temporarily on hold (skipped by auto-detection)
|
|
77
|
+
* - complete: Finished (skipped by auto-detection)
|
|
78
|
+
* - proposed: Not yet approved (skipped by auto-detection)
|
|
79
|
+
* - abandoned: Cancelled (skipped by auto-detection)
|
|
48
80
|
*
|
|
49
81
|
* @param projectRoot - Project root directory
|
|
50
82
|
* @returns Path to active sprint file or null (if between sprints)
|
|
@@ -85,9 +117,18 @@ export async function findActiveSprint(projectRoot) {
|
|
|
85
117
|
.sort()
|
|
86
118
|
.reverse();
|
|
87
119
|
const candidates = [];
|
|
120
|
+
// Status values that should be skipped during auto-detection
|
|
121
|
+
const skipStatuses = ['paused', 'complete', 'proposed', 'abandoned'];
|
|
88
122
|
for (const file of sprintFiles) {
|
|
89
123
|
const filePath = path.join(sprintsDir, file);
|
|
90
124
|
const content = await fs.readFile(filePath, 'utf-8');
|
|
125
|
+
// Parse frontmatter for status field
|
|
126
|
+
const frontmatter = parseFrontmatter(content);
|
|
127
|
+
const frontmatterStatus = frontmatter.status?.toLowerCase();
|
|
128
|
+
// Skip sprints with paused/complete/proposed/abandoned status in frontmatter
|
|
129
|
+
if (frontmatterStatus && skipStatuses.includes(frontmatterStatus)) {
|
|
130
|
+
continue;
|
|
131
|
+
}
|
|
91
132
|
// Check if sprint is marked complete
|
|
92
133
|
// Note: Support both **Progress:** and **Progress**: formats
|
|
93
134
|
const statusMatch = content.match(/\*\*Sprint Status:?\*\*:?\s*(.+)/);
|
|
@@ -103,7 +144,15 @@ export async function findActiveSprint(projectRoot) {
|
|
|
103
144
|
}
|
|
104
145
|
// Check for in-progress tasks ([@] markers)
|
|
105
146
|
const hasInProgress = content.includes('[@]') || (progress > 0 && progress < 100);
|
|
106
|
-
candidates.push({ file: filePath, progress, hasInProgress });
|
|
147
|
+
candidates.push({ file: filePath, progress, hasInProgress, frontmatterStatus });
|
|
148
|
+
}
|
|
149
|
+
// Prioritize by frontmatter status first, then by progress
|
|
150
|
+
// Priority: active > in-progress work > not_started
|
|
151
|
+
const activeSprints = candidates.filter(c => c.frontmatterStatus === 'active');
|
|
152
|
+
if (activeSprints.length > 0) {
|
|
153
|
+
// Return the active sprint with highest progress
|
|
154
|
+
activeSprints.sort((a, b) => b.progress - a.progress);
|
|
155
|
+
return activeSprints[0].file;
|
|
107
156
|
}
|
|
108
157
|
// Prioritize in-progress sprints over not-started ones
|
|
109
158
|
const inProgressSprints = candidates.filter(c => c.hasInProgress);
|
|
@@ -127,7 +176,7 @@ export async function findActiveSprint(projectRoot) {
|
|
|
127
176
|
/**
|
|
128
177
|
* Parse task state from checkbox symbol
|
|
129
178
|
*
|
|
130
|
-
* @param symbol - Checkbox content: ' ', '@', or 'x'
|
|
179
|
+
* @param symbol - Checkbox content: ' ', '@', 'Z', or 'x'
|
|
131
180
|
* @returns Task state enum
|
|
132
181
|
*/
|
|
133
182
|
function parseTaskState(symbol) {
|
|
@@ -136,15 +185,139 @@ function parseTaskState(symbol) {
|
|
|
136
185
|
return 'complete';
|
|
137
186
|
if (trimmed === '@')
|
|
138
187
|
return 'in_progress';
|
|
188
|
+
if (trimmed === 'Z' || trimmed === 'z')
|
|
189
|
+
return 'paused';
|
|
139
190
|
return 'todo';
|
|
140
191
|
}
|
|
192
|
+
/**
|
|
193
|
+
* Detect acceptance criterion type from description (EPIC-004 Sprint 3 TASK-1)
|
|
194
|
+
*
|
|
195
|
+
* Pattern matching based on keywords:
|
|
196
|
+
* - test: "test", "spec", "unit", "integration"
|
|
197
|
+
* - build: "build", "compile", "tsc"
|
|
198
|
+
* - lint: "lint", "eslint", "prettier", "format"
|
|
199
|
+
* - performance: "response", "latency", "ms", "seconds", "<", ">"
|
|
200
|
+
* - manual: "review", "approve", "verify manually"
|
|
201
|
+
* - custom: anything else
|
|
202
|
+
*
|
|
203
|
+
* @param description - Criterion description text
|
|
204
|
+
* @returns Detected criterion type
|
|
205
|
+
*/
|
|
206
|
+
function detectCriterionType(description) {
|
|
207
|
+
const lower = description.toLowerCase();
|
|
208
|
+
// Test criteria
|
|
209
|
+
if (/\b(test|spec|unit|integration|e2e|coverage)\b/.test(lower)) {
|
|
210
|
+
return 'test';
|
|
211
|
+
}
|
|
212
|
+
// Build criteria
|
|
213
|
+
if (/\b(build|compile|tsc|typescript|compilation)\b/.test(lower)) {
|
|
214
|
+
return 'build';
|
|
215
|
+
}
|
|
216
|
+
// Lint criteria
|
|
217
|
+
if (/\b(lint|eslint|prettier|format|style)\b/.test(lower)) {
|
|
218
|
+
return 'lint';
|
|
219
|
+
}
|
|
220
|
+
// Performance criteria (contains time thresholds)
|
|
221
|
+
if (/\b(response|latency|performance|load\s+time)\b/.test(lower) ||
|
|
222
|
+
/[<>]\s*\d+\s*(ms|seconds?|s\b)/.test(lower) ||
|
|
223
|
+
/under\s+\d+\s*(ms|seconds?)/.test(lower)) {
|
|
224
|
+
return 'performance';
|
|
225
|
+
}
|
|
226
|
+
// Manual criteria
|
|
227
|
+
if (/\b(review|approve|manual|verify\s+manually|human)\b/.test(lower)) {
|
|
228
|
+
return 'manual';
|
|
229
|
+
}
|
|
230
|
+
return 'custom';
|
|
231
|
+
}
|
|
232
|
+
/**
|
|
233
|
+
* Parse performance threshold from description (EPIC-004 Sprint 3 TASK-1)
|
|
234
|
+
*
|
|
235
|
+
* Examples:
|
|
236
|
+
* - "API response < 200ms" → 200
|
|
237
|
+
* - "Load time under 3 seconds" → 3000
|
|
238
|
+
* - "Latency below 50 ms" → 50
|
|
239
|
+
*
|
|
240
|
+
* @param description - Criterion description
|
|
241
|
+
* @returns Threshold in milliseconds, or undefined if not found
|
|
242
|
+
*/
|
|
243
|
+
function parsePerformanceThreshold(description) {
|
|
244
|
+
// Match patterns like "< 200ms", "> 100ms", "under 3 seconds"
|
|
245
|
+
const patterns = [
|
|
246
|
+
/[<>]\s*(\d+)\s*ms\b/i, // < 200ms, > 100ms
|
|
247
|
+
/[<>]\s*(\d+)\s*seconds?\b/i, // < 3 seconds
|
|
248
|
+
/under\s+(\d+)\s*ms\b/i, // under 200ms
|
|
249
|
+
/under\s+(\d+)\s*seconds?\b/i, // under 3 seconds
|
|
250
|
+
/below\s+(\d+)\s*ms\b/i, // below 200ms
|
|
251
|
+
/below\s+(\d+)\s*seconds?\b/i, // below 3 seconds
|
|
252
|
+
/within\s+(\d+)\s*ms\b/i, // within 200ms
|
|
253
|
+
/within\s+(\d+)\s*seconds?\b/i, // within 3 seconds
|
|
254
|
+
];
|
|
255
|
+
for (const pattern of patterns) {
|
|
256
|
+
const match = description.match(pattern);
|
|
257
|
+
if (match) {
|
|
258
|
+
const value = parseInt(match[1], 10);
|
|
259
|
+
// Convert seconds to milliseconds if needed
|
|
260
|
+
if (/seconds?/i.test(match[0])) {
|
|
261
|
+
return value * 1000;
|
|
262
|
+
}
|
|
263
|
+
return value;
|
|
264
|
+
}
|
|
265
|
+
}
|
|
266
|
+
return undefined;
|
|
267
|
+
}
|
|
268
|
+
/**
|
|
269
|
+
* Parse acceptance criteria from task section (EPIC-004 Sprint 3 TASK-1)
|
|
270
|
+
*
|
|
271
|
+
* Looks for:
|
|
272
|
+
* ```
|
|
273
|
+
* **Acceptance:**
|
|
274
|
+
* - [ ] Unit tests pass
|
|
275
|
+
* - [ ] Build succeeds
|
|
276
|
+
* ```
|
|
277
|
+
*
|
|
278
|
+
* @param lines - Lines from the task section
|
|
279
|
+
* @param startIndex - Starting line index
|
|
280
|
+
* @returns Array of parsed acceptance criteria
|
|
281
|
+
*/
|
|
282
|
+
function parseAcceptanceCriteria(lines, startIndex) {
|
|
283
|
+
const criteria = [];
|
|
284
|
+
let criterionIndex = 1;
|
|
285
|
+
for (let i = startIndex; i < lines.length; i++) {
|
|
286
|
+
const line = lines[i];
|
|
287
|
+
// Stop at next section (### or **Heading:**)
|
|
288
|
+
if (line.match(/^###\s+/) || (line.match(/^\*\*[A-Z]/) && !line.startsWith('**Acceptance'))) {
|
|
289
|
+
break;
|
|
290
|
+
}
|
|
291
|
+
// Match criterion lines: - [ ] Description or - [x] Description
|
|
292
|
+
const criterionMatch = line.match(/^-\s+\[[x\s]\]\s+(.+)/i);
|
|
293
|
+
if (criterionMatch) {
|
|
294
|
+
const description = criterionMatch[1].trim();
|
|
295
|
+
const type = detectCriterionType(description);
|
|
296
|
+
const criterion = {
|
|
297
|
+
id: `AC-${criterionIndex}`,
|
|
298
|
+
description,
|
|
299
|
+
type,
|
|
300
|
+
};
|
|
301
|
+
// Add threshold for performance criteria
|
|
302
|
+
if (type === 'performance') {
|
|
303
|
+
const threshold = parsePerformanceThreshold(description);
|
|
304
|
+
if (threshold !== undefined) {
|
|
305
|
+
criterion.threshold = threshold;
|
|
306
|
+
}
|
|
307
|
+
}
|
|
308
|
+
criteria.push(criterion);
|
|
309
|
+
criterionIndex++;
|
|
310
|
+
}
|
|
311
|
+
}
|
|
312
|
+
return criteria;
|
|
313
|
+
}
|
|
141
314
|
/**
|
|
142
315
|
* Parse sprint markdown into task checklist
|
|
143
316
|
*
|
|
144
317
|
* Looks for:
|
|
145
318
|
* - Sprint name from title (# SPRINT: ...)
|
|
146
319
|
* - Tasks from ## Sprint Tasks or ### TASK-N sections
|
|
147
|
-
* - Checkbox states: [ ], [@], [x]
|
|
320
|
+
* - Checkbox states: [ ], [@], [Z], [x]
|
|
148
321
|
* - Task metadata (files, priority, effort)
|
|
149
322
|
*
|
|
150
323
|
* @param markdown - Sprint markdown content
|
|
@@ -189,6 +362,20 @@ export function parseSprintChecklist(markdown, filePath) {
|
|
|
189
362
|
parsingTask.priority = priorityMatch[1].trim();
|
|
190
363
|
continue;
|
|
191
364
|
}
|
|
365
|
+
// Match task dependencies: **Depends:** TASK-1, TASK-2 (EPIC-004 Sprint 4)
|
|
366
|
+
const dependsMatch = line.match(/\*\*Depends:\*\*\s*(.+)/i);
|
|
367
|
+
if (dependsMatch && parsingTask) {
|
|
368
|
+
const depsString = dependsMatch[1].trim();
|
|
369
|
+
// Parse comma-separated task IDs
|
|
370
|
+
const deps = depsString.split(/[,\s]+/)
|
|
371
|
+
.map(d => d.trim())
|
|
372
|
+
.filter(d => /^TASK-\d+$/i.test(d))
|
|
373
|
+
.map(d => d.toUpperCase());
|
|
374
|
+
if (deps.length > 0) {
|
|
375
|
+
parsingTask.dependsOn = deps;
|
|
376
|
+
}
|
|
377
|
+
continue;
|
|
378
|
+
}
|
|
192
379
|
// Match files section
|
|
193
380
|
if (line.match(/^\*\*Files:\*\*/) && parsingTask) {
|
|
194
381
|
// Look ahead for file list
|
|
@@ -203,6 +390,14 @@ export function parseSprintChecklist(markdown, filePath) {
|
|
|
203
390
|
}
|
|
204
391
|
continue;
|
|
205
392
|
}
|
|
393
|
+
// Match acceptance criteria section (EPIC-004 Sprint 3 TASK-1)
|
|
394
|
+
if (line.match(/^\*\*Acceptance:\*\*/) && parsingTask) {
|
|
395
|
+
const criteria = parseAcceptanceCriteria(lines, i + 1);
|
|
396
|
+
if (criteria.length > 0) {
|
|
397
|
+
parsingTask.acceptanceCriteria = criteria;
|
|
398
|
+
}
|
|
399
|
+
continue;
|
|
400
|
+
}
|
|
206
401
|
// Extract ADR references from any line in task section (EPIC-002 Sprint 1)
|
|
207
402
|
if (parsingTask) {
|
|
208
403
|
const adrMatches = line.matchAll(/ADR-(\d+)/gi);
|
|
@@ -274,6 +469,7 @@ export function parseSprintChecklist(markdown, filePath) {
|
|
|
274
469
|
// Calculate progress
|
|
275
470
|
const complete = tasks.filter(t => t.state === 'complete').length;
|
|
276
471
|
const inProgress = tasks.filter(t => t.state === 'in_progress').length;
|
|
472
|
+
const paused = tasks.filter(t => t.state === 'paused').length;
|
|
277
473
|
const todo = tasks.filter(t => t.state === 'todo').length;
|
|
278
474
|
// Find current task: first [@], or first [ ] if no [@] exists
|
|
279
475
|
const firstInProgress = tasks.find(t => t.state === 'in_progress');
|
|
@@ -282,18 +478,69 @@ export function parseSprintChecklist(markdown, filePath) {
|
|
|
282
478
|
// Recent completions: last 3 completed tasks
|
|
283
479
|
const completedTasks = tasks.filter(t => t.state === 'complete');
|
|
284
480
|
const recentCompletions = completedTasks.slice(-3).reverse();
|
|
481
|
+
// Validate dependencies (EPIC-004 Sprint 4)
|
|
482
|
+
const dependencyWarnings = [];
|
|
483
|
+
const taskIds = new Set(tasks.map(t => t.id));
|
|
484
|
+
// Check for missing dependencies
|
|
485
|
+
for (const task of tasks) {
|
|
486
|
+
if (task.dependsOn) {
|
|
487
|
+
for (const depId of task.dependsOn) {
|
|
488
|
+
if (!taskIds.has(depId)) {
|
|
489
|
+
dependencyWarnings.push(`${task.id} depends on non-existent task: ${depId}`);
|
|
490
|
+
}
|
|
491
|
+
}
|
|
492
|
+
}
|
|
493
|
+
}
|
|
494
|
+
// Check for circular dependencies using DFS
|
|
495
|
+
const visited = new Set();
|
|
496
|
+
const inStack = new Set();
|
|
497
|
+
function detectCycle(taskId, path) {
|
|
498
|
+
if (inStack.has(taskId)) {
|
|
499
|
+
const cycleStart = path.indexOf(taskId);
|
|
500
|
+
return [...path.slice(cycleStart), taskId];
|
|
501
|
+
}
|
|
502
|
+
if (visited.has(taskId))
|
|
503
|
+
return null;
|
|
504
|
+
visited.add(taskId);
|
|
505
|
+
inStack.add(taskId);
|
|
506
|
+
path.push(taskId);
|
|
507
|
+
const task = tasks.find(t => t.id === taskId);
|
|
508
|
+
if (task?.dependsOn) {
|
|
509
|
+
for (const depId of task.dependsOn) {
|
|
510
|
+
if (taskIds.has(depId)) {
|
|
511
|
+
const cycle = detectCycle(depId, path);
|
|
512
|
+
if (cycle)
|
|
513
|
+
return cycle;
|
|
514
|
+
}
|
|
515
|
+
}
|
|
516
|
+
}
|
|
517
|
+
path.pop();
|
|
518
|
+
inStack.delete(taskId);
|
|
519
|
+
return null;
|
|
520
|
+
}
|
|
521
|
+
for (const task of tasks) {
|
|
522
|
+
if (!visited.has(task.id)) {
|
|
523
|
+
const cycle = detectCycle(task.id, []);
|
|
524
|
+
if (cycle) {
|
|
525
|
+
dependencyWarnings.push(`Circular dependency: ${cycle.join(' → ')}`);
|
|
526
|
+
break; // Only report first cycle
|
|
527
|
+
}
|
|
528
|
+
}
|
|
529
|
+
}
|
|
285
530
|
return {
|
|
286
531
|
name: sprintName,
|
|
287
532
|
file: filePath,
|
|
288
533
|
progress: {
|
|
289
534
|
complete,
|
|
290
535
|
inProgress,
|
|
536
|
+
paused,
|
|
291
537
|
todo,
|
|
292
538
|
total: tasks.length,
|
|
293
539
|
},
|
|
294
540
|
tasks,
|
|
295
541
|
currentTask,
|
|
296
542
|
recentCompletions,
|
|
543
|
+
dependencyWarnings: dependencyWarnings.length > 0 ? dependencyWarnings : undefined,
|
|
297
544
|
};
|
|
298
545
|
}
|
|
299
546
|
/**
|
|
@@ -337,6 +584,9 @@ export function formatSprintChecklist(checklist, maxTasks = 7) {
|
|
|
337
584
|
if (progress.inProgress > 0) {
|
|
338
585
|
progressLine += `, ${progress.inProgress} in progress`;
|
|
339
586
|
}
|
|
587
|
+
if (progress.paused > 0) {
|
|
588
|
+
progressLine += `, ${progress.paused} paused`;
|
|
589
|
+
}
|
|
340
590
|
progressLine += ` (${progressPercent}%)`;
|
|
341
591
|
output += progressLine + '\n\n';
|
|
342
592
|
// Sprint complete celebration
|
|
@@ -349,7 +599,8 @@ export function formatSprintChecklist(checklist, maxTasks = 7) {
|
|
|
349
599
|
const displayTasks = tasks.slice(0, maxTasks);
|
|
350
600
|
for (const task of displayTasks) {
|
|
351
601
|
const symbol = task.state === 'complete' ? '[x]' :
|
|
352
|
-
task.state === 'in_progress' ? '[@]' :
|
|
602
|
+
task.state === 'in_progress' ? '[@]' :
|
|
603
|
+
task.state === 'paused' ? '[Z]' : '[ ]';
|
|
353
604
|
const marker = currentTask && task.id === currentTask.id ? ' ← RESUME HERE' : '';
|
|
354
605
|
output += ` ${symbol} ${task.id}: ${task.title}${marker}\n`;
|
|
355
606
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sprint-loader.js","sourceRoot":"","sources":["../../src/lib/sprint-loader.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"sprint-loader.js","sourceRoot":"","sources":["../../src/lib/sprint-loader.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileType: utility
|
|
3
|
+
* @status: current
|
|
4
|
+
* @updated: 2025-12-07
|
|
5
|
+
* @tags: [agent, stale-detection, epic-004, multi-agent, resilience]
|
|
6
|
+
* @related: [agent-heartbeat.ts, ../commands/graph/api-client.ts]
|
|
7
|
+
* @priority: high
|
|
8
|
+
* @complexity: medium
|
|
9
|
+
* @dependencies: []
|
|
10
|
+
*/
|
|
11
|
+
/**
|
|
12
|
+
* Stale Agent Detector
|
|
13
|
+
*
|
|
14
|
+
* Detects agents that have stopped sending heartbeats and releases their claimed tasks.
|
|
15
|
+
*
|
|
16
|
+
* Pattern:
|
|
17
|
+
* - Agents stale if no heartbeat for grace period (default 5 minutes)
|
|
18
|
+
* - Stale agents marked offline
|
|
19
|
+
* - Tasks claimed by stale agents released for re-claiming
|
|
20
|
+
* - Events logged for audit trail
|
|
21
|
+
*
|
|
22
|
+
* Usage:
|
|
23
|
+
* ```typescript
|
|
24
|
+
* const { detectStaleAgents, releaseStaleAgentTasks } = require('./stale-agent-detector');
|
|
25
|
+
*
|
|
26
|
+
* // Detect and handle stale agents (typically in periodic job)
|
|
27
|
+
* const staleAgents = await detectStaleAgents();
|
|
28
|
+
* for (const agent of staleAgents) {
|
|
29
|
+
* await releaseStaleAgentTasks(agent.agentId);
|
|
30
|
+
* }
|
|
31
|
+
*
|
|
32
|
+
* // Check specific agent heartbeat
|
|
33
|
+
* const lastHeartbeat = await getAgentLastHeartbeat('agent_123456_abc');
|
|
34
|
+
* ```
|
|
35
|
+
*/
|
|
36
|
+
/**
|
|
37
|
+
* Stale agent information
|
|
38
|
+
*/
|
|
39
|
+
export interface StaleAgent {
|
|
40
|
+
agentId: string;
|
|
41
|
+
lastHeartbeat: Date;
|
|
42
|
+
staleSince: Date;
|
|
43
|
+
claimedTasks: string[];
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Released task information
|
|
47
|
+
*/
|
|
48
|
+
export interface ReleasedTask {
|
|
49
|
+
taskId: string;
|
|
50
|
+
previousAgent: string;
|
|
51
|
+
releasedAt: Date;
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Configuration for stale detection
|
|
55
|
+
*/
|
|
56
|
+
export interface StaleDetectionConfig {
|
|
57
|
+
gracePeriodMinutes?: number;
|
|
58
|
+
graphId?: string;
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Detect stale agents
|
|
62
|
+
*
|
|
63
|
+
* Identifies agents that haven't sent a heartbeat within the grace period
|
|
64
|
+
* and are not already marked as offline.
|
|
65
|
+
*
|
|
66
|
+
* @param config - Optional configuration overrides
|
|
67
|
+
* @returns Array of stale agents with their claimed tasks
|
|
68
|
+
*/
|
|
69
|
+
export declare function detectStaleAgents(config?: StaleDetectionConfig): Promise<StaleAgent[]>;
|
|
70
|
+
/**
|
|
71
|
+
* Release tasks claimed by a stale agent
|
|
72
|
+
*
|
|
73
|
+
* Marks agent as offline and releases all tasks it has claimed,
|
|
74
|
+
* making them available for other agents to claim.
|
|
75
|
+
*
|
|
76
|
+
* @param agentId - Agent ID to release tasks for
|
|
77
|
+
* @param config - Optional configuration overrides
|
|
78
|
+
* @returns Array of released tasks
|
|
79
|
+
*/
|
|
80
|
+
export declare function releaseStaleAgentTasks(agentId: string, config?: StaleDetectionConfig): Promise<ReleasedTask[]>;
|
|
81
|
+
/**
|
|
82
|
+
* Get last heartbeat timestamp for an agent
|
|
83
|
+
*
|
|
84
|
+
* @param agentId - Agent ID to check
|
|
85
|
+
* @param config - Optional configuration overrides
|
|
86
|
+
* @returns Last heartbeat timestamp or null if not found
|
|
87
|
+
*/
|
|
88
|
+
export declare function getAgentLastHeartbeat(agentId: string, config?: StaleDetectionConfig): Promise<Date | null>;
|
|
89
|
+
/**
|
|
90
|
+
* Detect and release all stale agents
|
|
91
|
+
*
|
|
92
|
+
* Convenience method that detects stale agents and releases their tasks.
|
|
93
|
+
* Typically used in periodic cleanup jobs.
|
|
94
|
+
*
|
|
95
|
+
* @param config - Optional configuration overrides
|
|
96
|
+
* @returns Summary of stale agents and released tasks
|
|
97
|
+
*/
|
|
98
|
+
export declare function detectAndReleaseStaleAgents(config?: StaleDetectionConfig): Promise<{
|
|
99
|
+
staleAgents: StaleAgent[];
|
|
100
|
+
releasedTasks: ReleasedTask[];
|
|
101
|
+
}>;
|
|
102
|
+
//# sourceMappingURL=stale-agent-detector.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stale-agent-detector.d.ts","sourceRoot":"","sources":["../../src/lib/stale-agent-detector.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAEH;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,EAAE,IAAI,CAAC;IACpB,UAAU,EAAE,IAAI,CAAC;IACjB,YAAY,EAAE,MAAM,EAAE,CAAC;CACxB;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,IAAI,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAUD;;;;;;;;GAQG;AACH,wBAAsB,iBAAiB,CACrC,MAAM,CAAC,EAAE,oBAAoB,GAC5B,OAAO,CAAC,UAAU,EAAE,CAAC,CAsCvB;AAED;;;;;;;;;GASG;AACH,wBAAsB,sBAAsB,CAC1C,OAAO,EAAE,MAAM,EACf,MAAM,CAAC,EAAE,oBAAoB,GAC5B,OAAO,CAAC,YAAY,EAAE,CAAC,CA0CzB;AAED;;;;;;GAMG;AACH,wBAAsB,qBAAqB,CACzC,OAAO,EAAE,MAAM,EACf,MAAM,CAAC,EAAE,oBAAoB,GAC5B,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC,CAwCtB;AAED;;;;;;;;GAQG;AACH,wBAAsB,2BAA2B,CAC/C,MAAM,CAAC,EAAE,oBAAoB,GAC5B,OAAO,CAAC;IACT,WAAW,EAAE,UAAU,EAAE,CAAC;IAC1B,aAAa,EAAE,YAAY,EAAE,CAAC;CAC/B,CAAC,CAgCD"}
|