@mytechtoday/augment-extensions 1.3.1 → 1.4.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/README.md +105 -6
- package/cli/dist/commands/agent.d.ts +37 -0
- package/cli/dist/commands/agent.d.ts.map +1 -0
- package/cli/dist/commands/agent.js +222 -0
- package/cli/dist/commands/agent.js.map +1 -0
- package/cli/dist/commands/beads.d.ts +64 -0
- package/cli/dist/commands/beads.d.ts.map +1 -0
- package/cli/dist/commands/beads.js +377 -0
- package/cli/dist/commands/beads.js.map +1 -0
- package/cli/dist/commands/change.d.ts +54 -0
- package/cli/dist/commands/change.d.ts.map +1 -0
- package/cli/dist/commands/change.js +243 -0
- package/cli/dist/commands/change.js.map +1 -0
- package/cli/dist/commands/clean.d.ts +15 -0
- package/cli/dist/commands/clean.d.ts.map +1 -0
- package/cli/dist/commands/clean.js +63 -0
- package/cli/dist/commands/clean.js.map +1 -0
- package/cli/dist/commands/clone.d.ts +15 -0
- package/cli/dist/commands/clone.d.ts.map +1 -0
- package/cli/dist/commands/clone.js +49 -0
- package/cli/dist/commands/clone.js.map +1 -0
- package/cli/dist/commands/config.d.ts +33 -0
- package/cli/dist/commands/config.d.ts.map +1 -0
- package/cli/dist/commands/config.js +166 -0
- package/cli/dist/commands/config.js.map +1 -0
- package/cli/dist/commands/context.d.ts +38 -0
- package/cli/dist/commands/context.d.ts.map +1 -0
- package/cli/dist/commands/context.js +205 -0
- package/cli/dist/commands/context.js.map +1 -0
- package/cli/dist/commands/create.d.ts +18 -0
- package/cli/dist/commands/create.d.ts.map +1 -0
- package/cli/dist/commands/create.js +178 -0
- package/cli/dist/commands/create.js.map +1 -0
- package/cli/dist/commands/diff.d.ts +19 -0
- package/cli/dist/commands/diff.d.ts.map +1 -0
- package/cli/dist/commands/diff.js +104 -0
- package/cli/dist/commands/diff.js.map +1 -0
- package/cli/dist/commands/doctor.d.ts +14 -0
- package/cli/dist/commands/doctor.d.ts.map +1 -0
- package/cli/dist/commands/doctor.js +62 -0
- package/cli/dist/commands/doctor.js.map +1 -0
- package/cli/dist/commands/export.d.ts +28 -0
- package/cli/dist/commands/export.d.ts.map +1 -0
- package/cli/dist/commands/export.js +135 -0
- package/cli/dist/commands/export.js.map +1 -0
- package/cli/dist/commands/import.d.ts +23 -0
- package/cli/dist/commands/import.d.ts.map +1 -0
- package/cli/dist/commands/import.js +118 -0
- package/cli/dist/commands/import.js.map +1 -0
- package/cli/dist/commands/prompt.d.ts +45 -0
- package/cli/dist/commands/prompt.d.ts.map +1 -0
- package/cli/dist/commands/prompt.js +223 -0
- package/cli/dist/commands/prompt.js.map +1 -0
- package/cli/dist/commands/spec.d.ts +57 -0
- package/cli/dist/commands/spec.d.ts.map +1 -0
- package/cli/dist/commands/spec.js +279 -0
- package/cli/dist/commands/spec.js.map +1 -0
- package/cli/dist/commands/stats.d.ts +18 -0
- package/cli/dist/commands/stats.d.ts.map +1 -0
- package/cli/dist/commands/stats.js +85 -0
- package/cli/dist/commands/stats.js.map +1 -0
- package/cli/dist/commands/task.d.ts +65 -0
- package/cli/dist/commands/task.d.ts.map +1 -0
- package/cli/dist/commands/task.js +282 -0
- package/cli/dist/commands/task.js.map +1 -0
- package/cli/dist/commands/template.d.ts +17 -0
- package/cli/dist/commands/template.d.ts.map +1 -0
- package/cli/dist/commands/template.js +55 -0
- package/cli/dist/commands/template.js.map +1 -0
- package/cli/dist/utils/agent-config.d.ts +129 -0
- package/cli/dist/utils/agent-config.d.ts.map +1 -0
- package/cli/dist/utils/agent-config.js +297 -0
- package/cli/dist/utils/agent-config.js.map +1 -0
- package/cli/dist/utils/beads-graph.d.ts +17 -0
- package/cli/dist/utils/beads-graph.d.ts.map +1 -0
- package/cli/dist/utils/beads-graph.js +150 -0
- package/cli/dist/utils/beads-graph.js.map +1 -0
- package/cli/dist/utils/beads-integration.d.ts +112 -0
- package/cli/dist/utils/beads-integration.d.ts.map +1 -0
- package/cli/dist/utils/beads-integration.js +312 -0
- package/cli/dist/utils/beads-integration.js.map +1 -0
- package/cli/dist/utils/beads-reporter.d.ts +17 -0
- package/cli/dist/utils/beads-reporter.d.ts.map +1 -0
- package/cli/dist/utils/beads-reporter.js +160 -0
- package/cli/dist/utils/beads-reporter.js.map +1 -0
- package/cli/dist/utils/cache-manager.d.ts +55 -0
- package/cli/dist/utils/cache-manager.d.ts.map +1 -0
- package/cli/dist/utils/cache-manager.js +150 -0
- package/cli/dist/utils/cache-manager.js.map +1 -0
- package/cli/dist/utils/change-manager.d.ts +70 -0
- package/cli/dist/utils/change-manager.d.ts.map +1 -0
- package/cli/dist/utils/change-manager.js +412 -0
- package/cli/dist/utils/change-manager.js.map +1 -0
- package/cli/dist/utils/config-manager-enhanced.d.ts +66 -0
- package/cli/dist/utils/config-manager-enhanced.d.ts.map +1 -0
- package/cli/dist/utils/config-manager-enhanced.js +77 -0
- package/cli/dist/utils/config-manager-enhanced.js.map +1 -0
- package/cli/dist/utils/context-manager.d.ts +96 -0
- package/cli/dist/utils/context-manager.d.ts.map +1 -0
- package/cli/dist/utils/context-manager.js +258 -0
- package/cli/dist/utils/context-manager.js.map +1 -0
- package/cli/dist/utils/diff-engine.d.ts +78 -0
- package/cli/dist/utils/diff-engine.d.ts.map +1 -0
- package/cli/dist/utils/diff-engine.js +233 -0
- package/cli/dist/utils/diff-engine.js.map +1 -0
- package/cli/dist/utils/export-system.d.ts +101 -0
- package/cli/dist/utils/export-system.d.ts.map +1 -0
- package/cli/dist/utils/export-system.js +289 -0
- package/cli/dist/utils/export-system.js.map +1 -0
- package/cli/dist/utils/health-checker.d.ts +66 -0
- package/cli/dist/utils/health-checker.d.ts.map +1 -0
- package/cli/dist/utils/health-checker.js +285 -0
- package/cli/dist/utils/health-checker.js.map +1 -0
- package/cli/dist/utils/import-system.d.ts +74 -0
- package/cli/dist/utils/import-system.d.ts.map +1 -0
- package/cli/dist/utils/import-system.js +317 -0
- package/cli/dist/utils/import-system.js.map +1 -0
- package/cli/dist/utils/module-cloner.d.ts +40 -0
- package/cli/dist/utils/module-cloner.d.ts.map +1 -0
- package/cli/dist/utils/module-cloner.js +136 -0
- package/cli/dist/utils/module-cloner.js.map +1 -0
- package/cli/dist/utils/prompt-manager.d.ts +90 -0
- package/cli/dist/utils/prompt-manager.d.ts.map +1 -0
- package/cli/dist/utils/prompt-manager.js +302 -0
- package/cli/dist/utils/prompt-manager.js.map +1 -0
- package/cli/dist/utils/spec-manager.d.ts +65 -0
- package/cli/dist/utils/spec-manager.d.ts.map +1 -0
- package/cli/dist/utils/spec-manager.js +329 -0
- package/cli/dist/utils/spec-manager.js.map +1 -0
- package/cli/dist/utils/stats-collector.d.ts +74 -0
- package/cli/dist/utils/stats-collector.d.ts.map +1 -0
- package/cli/dist/utils/stats-collector.js +164 -0
- package/cli/dist/utils/stats-collector.js.map +1 -0
- package/cli/dist/utils/template-engine.d.ts +47 -0
- package/cli/dist/utils/template-engine.d.ts.map +1 -0
- package/cli/dist/utils/template-engine.js +204 -0
- package/cli/dist/utils/template-engine.js.map +1 -0
- package/package.json +8 -1
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Beads Integration Utility
|
|
3
|
+
*
|
|
4
|
+
* Core Beads integration utility for task tracking and management.
|
|
5
|
+
* Provides functions for reading, validating, filtering, and managing Beads tasks.
|
|
6
|
+
*/
|
|
7
|
+
export interface BeadsTask {
|
|
8
|
+
id: string;
|
|
9
|
+
title: string;
|
|
10
|
+
description?: string;
|
|
11
|
+
status: 'open' | 'in_progress' | 'blocked' | 'closed';
|
|
12
|
+
priority?: number;
|
|
13
|
+
issue_type?: string;
|
|
14
|
+
owner?: string;
|
|
15
|
+
created_at?: string;
|
|
16
|
+
created_by?: string;
|
|
17
|
+
updated_at?: string;
|
|
18
|
+
closed_at?: string;
|
|
19
|
+
close_reason?: string;
|
|
20
|
+
labels?: string[];
|
|
21
|
+
dependencies?: Array<{
|
|
22
|
+
issue_id: string;
|
|
23
|
+
depends_on_id: string;
|
|
24
|
+
type: string;
|
|
25
|
+
created_at?: string;
|
|
26
|
+
created_by?: string;
|
|
27
|
+
}>;
|
|
28
|
+
blocks?: string[];
|
|
29
|
+
blocked_by?: string[];
|
|
30
|
+
comments?: Array<{
|
|
31
|
+
id: number;
|
|
32
|
+
issue_id: string;
|
|
33
|
+
author: string;
|
|
34
|
+
text: string;
|
|
35
|
+
created_at: string;
|
|
36
|
+
}>;
|
|
37
|
+
}
|
|
38
|
+
export interface BeadsStats {
|
|
39
|
+
total: number;
|
|
40
|
+
open: number;
|
|
41
|
+
in_progress: number;
|
|
42
|
+
blocked: number;
|
|
43
|
+
closed: number;
|
|
44
|
+
by_priority: Record<number, number>;
|
|
45
|
+
by_type: Record<string, number>;
|
|
46
|
+
by_owner: Record<string, number>;
|
|
47
|
+
avg_time_to_close?: number;
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Read all tasks from .beads/issues.jsonl
|
|
51
|
+
*/
|
|
52
|
+
export declare function readBeadsTasks(beadsPath?: string): BeadsTask[];
|
|
53
|
+
/**
|
|
54
|
+
* Get a single task by ID
|
|
55
|
+
*/
|
|
56
|
+
export declare function getTask(taskId: string, beadsPath?: string): BeadsTask | null;
|
|
57
|
+
/**
|
|
58
|
+
* Filter tasks by status
|
|
59
|
+
*/
|
|
60
|
+
export declare function filterByStatus(tasks: BeadsTask[], status: string | string[]): BeadsTask[];
|
|
61
|
+
/**
|
|
62
|
+
* Filter tasks by priority
|
|
63
|
+
*/
|
|
64
|
+
export declare function filterByPriority(tasks: BeadsTask[], priority: number | number[]): BeadsTask[];
|
|
65
|
+
/**
|
|
66
|
+
* Filter tasks by labels/tags
|
|
67
|
+
*/
|
|
68
|
+
export declare function filterByLabels(tasks: BeadsTask[], labels: string | string[]): BeadsTask[];
|
|
69
|
+
/**
|
|
70
|
+
* Filter tasks by owner
|
|
71
|
+
*/
|
|
72
|
+
export declare function filterByOwner(tasks: BeadsTask[], owner: string): BeadsTask[];
|
|
73
|
+
/**
|
|
74
|
+
* Get tasks that are ready to work on (open and not blocked)
|
|
75
|
+
*/
|
|
76
|
+
export declare function getReadyTasks(tasks: BeadsTask[]): BeadsTask[];
|
|
77
|
+
/**
|
|
78
|
+
* Calculate statistics for tasks
|
|
79
|
+
*/
|
|
80
|
+
export declare function calculateStats(tasks: BeadsTask[]): BeadsStats;
|
|
81
|
+
/**
|
|
82
|
+
* Validate task ID format
|
|
83
|
+
*/
|
|
84
|
+
export declare function validateTaskId(taskId: string): boolean;
|
|
85
|
+
/**
|
|
86
|
+
* Validate task structure
|
|
87
|
+
*/
|
|
88
|
+
export declare function validateTask(task: any): {
|
|
89
|
+
valid: boolean;
|
|
90
|
+
errors: string[];
|
|
91
|
+
};
|
|
92
|
+
/**
|
|
93
|
+
* Sort tasks by field
|
|
94
|
+
*/
|
|
95
|
+
export declare function sortTasks(tasks: BeadsTask[], field: 'priority' | 'created' | 'updated' | 'title', order?: 'asc' | 'desc'): BeadsTask[];
|
|
96
|
+
/**
|
|
97
|
+
* Search tasks by text
|
|
98
|
+
*/
|
|
99
|
+
export declare function searchTasks(tasks: BeadsTask[], query: string): BeadsTask[];
|
|
100
|
+
/**
|
|
101
|
+
* Get dependency chain for a task
|
|
102
|
+
*/
|
|
103
|
+
export declare function getDependencyChain(taskId: string, tasks: BeadsTask[]): string[];
|
|
104
|
+
/**
|
|
105
|
+
* Append a task to issues.jsonl
|
|
106
|
+
*/
|
|
107
|
+
export declare function appendTask(task: BeadsTask, beadsPath?: string): void;
|
|
108
|
+
/**
|
|
109
|
+
* Update a task (appends update to JSONL)
|
|
110
|
+
*/
|
|
111
|
+
export declare function updateTask(taskId: string, updates: Partial<BeadsTask>, beadsPath?: string): void;
|
|
112
|
+
//# sourceMappingURL=beads-integration.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"beads-integration.d.ts","sourceRoot":"","sources":["../../src/utils/beads-integration.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,312 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Beads Integration Utility
|
|
4
|
+
*
|
|
5
|
+
* Core Beads integration utility for task tracking and management.
|
|
6
|
+
* Provides functions for reading, validating, filtering, and managing Beads tasks.
|
|
7
|
+
*/
|
|
8
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
9
|
+
if (k2 === undefined) k2 = k;
|
|
10
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
11
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
12
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
13
|
+
}
|
|
14
|
+
Object.defineProperty(o, k2, desc);
|
|
15
|
+
}) : (function(o, m, k, k2) {
|
|
16
|
+
if (k2 === undefined) k2 = k;
|
|
17
|
+
o[k2] = m[k];
|
|
18
|
+
}));
|
|
19
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
20
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
21
|
+
}) : function(o, v) {
|
|
22
|
+
o["default"] = v;
|
|
23
|
+
});
|
|
24
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
25
|
+
var ownKeys = function(o) {
|
|
26
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
27
|
+
var ar = [];
|
|
28
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
29
|
+
return ar;
|
|
30
|
+
};
|
|
31
|
+
return ownKeys(o);
|
|
32
|
+
};
|
|
33
|
+
return function (mod) {
|
|
34
|
+
if (mod && mod.__esModule) return mod;
|
|
35
|
+
var result = {};
|
|
36
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
37
|
+
__setModuleDefault(result, mod);
|
|
38
|
+
return result;
|
|
39
|
+
};
|
|
40
|
+
})();
|
|
41
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
42
|
+
exports.readBeadsTasks = readBeadsTasks;
|
|
43
|
+
exports.getTask = getTask;
|
|
44
|
+
exports.filterByStatus = filterByStatus;
|
|
45
|
+
exports.filterByPriority = filterByPriority;
|
|
46
|
+
exports.filterByLabels = filterByLabels;
|
|
47
|
+
exports.filterByOwner = filterByOwner;
|
|
48
|
+
exports.getReadyTasks = getReadyTasks;
|
|
49
|
+
exports.calculateStats = calculateStats;
|
|
50
|
+
exports.validateTaskId = validateTaskId;
|
|
51
|
+
exports.validateTask = validateTask;
|
|
52
|
+
exports.sortTasks = sortTasks;
|
|
53
|
+
exports.searchTasks = searchTasks;
|
|
54
|
+
exports.getDependencyChain = getDependencyChain;
|
|
55
|
+
exports.appendTask = appendTask;
|
|
56
|
+
exports.updateTask = updateTask;
|
|
57
|
+
const fs = __importStar(require("fs"));
|
|
58
|
+
/**
|
|
59
|
+
* Read all tasks from .beads/issues.jsonl
|
|
60
|
+
*/
|
|
61
|
+
function readBeadsTasks(beadsPath = 'augment-extensions/.beads/issues.jsonl') {
|
|
62
|
+
if (!fs.existsSync(beadsPath)) {
|
|
63
|
+
return [];
|
|
64
|
+
}
|
|
65
|
+
const content = fs.readFileSync(beadsPath, 'utf-8');
|
|
66
|
+
const lines = content.split('\n').filter(line => line.trim());
|
|
67
|
+
const tasksMap = new Map();
|
|
68
|
+
for (const line of lines) {
|
|
69
|
+
try {
|
|
70
|
+
const entry = JSON.parse(line);
|
|
71
|
+
if (entry.id) {
|
|
72
|
+
// Merge updates into existing task
|
|
73
|
+
if (tasksMap.has(entry.id)) {
|
|
74
|
+
const existing = tasksMap.get(entry.id);
|
|
75
|
+
tasksMap.set(entry.id, { ...existing, ...entry });
|
|
76
|
+
}
|
|
77
|
+
else {
|
|
78
|
+
tasksMap.set(entry.id, entry);
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
catch (error) {
|
|
83
|
+
console.error(`Failed to parse line: ${line}`, error);
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
return Array.from(tasksMap.values());
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* Get a single task by ID
|
|
90
|
+
*/
|
|
91
|
+
function getTask(taskId, beadsPath) {
|
|
92
|
+
const tasks = readBeadsTasks(beadsPath);
|
|
93
|
+
return tasks.find(t => t.id === taskId) || null;
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* Filter tasks by status
|
|
97
|
+
*/
|
|
98
|
+
function filterByStatus(tasks, status) {
|
|
99
|
+
const statuses = Array.isArray(status) ? status : [status];
|
|
100
|
+
return tasks.filter(t => statuses.includes(t.status));
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* Filter tasks by priority
|
|
104
|
+
*/
|
|
105
|
+
function filterByPriority(tasks, priority) {
|
|
106
|
+
const priorities = Array.isArray(priority) ? priority : [priority];
|
|
107
|
+
return tasks.filter(t => t.priority !== undefined && priorities.includes(t.priority));
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* Filter tasks by labels/tags
|
|
111
|
+
*/
|
|
112
|
+
function filterByLabels(tasks, labels) {
|
|
113
|
+
const labelList = Array.isArray(labels) ? labels : [labels];
|
|
114
|
+
return tasks.filter(t => t.labels && t.labels.some(label => labelList.includes(label)));
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* Filter tasks by owner
|
|
118
|
+
*/
|
|
119
|
+
function filterByOwner(tasks, owner) {
|
|
120
|
+
return tasks.filter(t => t.owner === owner);
|
|
121
|
+
}
|
|
122
|
+
/**
|
|
123
|
+
* Get tasks that are ready to work on (open and not blocked)
|
|
124
|
+
*/
|
|
125
|
+
function getReadyTasks(tasks) {
|
|
126
|
+
return tasks.filter(t => {
|
|
127
|
+
if (t.status !== 'open')
|
|
128
|
+
return false;
|
|
129
|
+
if (!t.blocked_by || t.blocked_by.length === 0)
|
|
130
|
+
return true;
|
|
131
|
+
// Check if all blockers are closed
|
|
132
|
+
const blockerIds = t.blocked_by;
|
|
133
|
+
const blockers = tasks.filter(task => blockerIds.includes(task.id));
|
|
134
|
+
return blockers.every(blocker => blocker.status === 'closed');
|
|
135
|
+
});
|
|
136
|
+
}
|
|
137
|
+
/**
|
|
138
|
+
* Calculate statistics for tasks
|
|
139
|
+
*/
|
|
140
|
+
function calculateStats(tasks) {
|
|
141
|
+
const stats = {
|
|
142
|
+
total: tasks.length,
|
|
143
|
+
open: 0,
|
|
144
|
+
in_progress: 0,
|
|
145
|
+
blocked: 0,
|
|
146
|
+
closed: 0,
|
|
147
|
+
by_priority: {},
|
|
148
|
+
by_type: {},
|
|
149
|
+
by_owner: {}
|
|
150
|
+
};
|
|
151
|
+
let totalTimeToClose = 0;
|
|
152
|
+
let closedCount = 0;
|
|
153
|
+
for (const task of tasks) {
|
|
154
|
+
// Count by status
|
|
155
|
+
if (task.status === 'open')
|
|
156
|
+
stats.open++;
|
|
157
|
+
else if (task.status === 'in_progress')
|
|
158
|
+
stats.in_progress++;
|
|
159
|
+
else if (task.status === 'blocked')
|
|
160
|
+
stats.blocked++;
|
|
161
|
+
else if (task.status === 'closed')
|
|
162
|
+
stats.closed++;
|
|
163
|
+
// Count by priority
|
|
164
|
+
if (task.priority !== undefined) {
|
|
165
|
+
stats.by_priority[task.priority] = (stats.by_priority[task.priority] || 0) + 1;
|
|
166
|
+
}
|
|
167
|
+
// Count by type
|
|
168
|
+
if (task.issue_type) {
|
|
169
|
+
stats.by_type[task.issue_type] = (stats.by_type[task.issue_type] || 0) + 1;
|
|
170
|
+
}
|
|
171
|
+
// Count by owner
|
|
172
|
+
if (task.owner) {
|
|
173
|
+
stats.by_owner[task.owner] = (stats.by_owner[task.owner] || 0) + 1;
|
|
174
|
+
}
|
|
175
|
+
// Calculate average time to close
|
|
176
|
+
if (task.status === 'closed' && task.created_at && task.closed_at) {
|
|
177
|
+
const created = new Date(task.created_at).getTime();
|
|
178
|
+
const closed = new Date(task.closed_at).getTime();
|
|
179
|
+
totalTimeToClose += (closed - created);
|
|
180
|
+
closedCount++;
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
if (closedCount > 0) {
|
|
184
|
+
stats.avg_time_to_close = totalTimeToClose / closedCount;
|
|
185
|
+
}
|
|
186
|
+
return stats;
|
|
187
|
+
}
|
|
188
|
+
/**
|
|
189
|
+
* Validate task ID format
|
|
190
|
+
*/
|
|
191
|
+
function validateTaskId(taskId) {
|
|
192
|
+
const pattern = /^bd-[a-z0-9]+([.-][a-z0-9]+)*$/;
|
|
193
|
+
return pattern.test(taskId);
|
|
194
|
+
}
|
|
195
|
+
/**
|
|
196
|
+
* Validate task structure
|
|
197
|
+
*/
|
|
198
|
+
function validateTask(task) {
|
|
199
|
+
const errors = [];
|
|
200
|
+
if (!task.id) {
|
|
201
|
+
errors.push('Missing required field: id');
|
|
202
|
+
}
|
|
203
|
+
else if (!validateTaskId(task.id)) {
|
|
204
|
+
errors.push(`Invalid task ID format: ${task.id}`);
|
|
205
|
+
}
|
|
206
|
+
if (!task.title) {
|
|
207
|
+
errors.push('Missing required field: title');
|
|
208
|
+
}
|
|
209
|
+
if (!task.status) {
|
|
210
|
+
errors.push('Missing required field: status');
|
|
211
|
+
}
|
|
212
|
+
else if (!['open', 'in_progress', 'blocked', 'closed'].includes(task.status)) {
|
|
213
|
+
errors.push(`Invalid status: ${task.status}`);
|
|
214
|
+
}
|
|
215
|
+
return {
|
|
216
|
+
valid: errors.length === 0,
|
|
217
|
+
errors
|
|
218
|
+
};
|
|
219
|
+
}
|
|
220
|
+
/**
|
|
221
|
+
* Sort tasks by field
|
|
222
|
+
*/
|
|
223
|
+
function sortTasks(tasks, field, order = 'asc') {
|
|
224
|
+
const sorted = [...tasks].sort((a, b) => {
|
|
225
|
+
let aVal;
|
|
226
|
+
let bVal;
|
|
227
|
+
switch (field) {
|
|
228
|
+
case 'priority':
|
|
229
|
+
aVal = a.priority ?? 999;
|
|
230
|
+
bVal = b.priority ?? 999;
|
|
231
|
+
break;
|
|
232
|
+
case 'created':
|
|
233
|
+
aVal = a.created_at ? new Date(a.created_at).getTime() : 0;
|
|
234
|
+
bVal = b.created_at ? new Date(b.created_at).getTime() : 0;
|
|
235
|
+
break;
|
|
236
|
+
case 'updated':
|
|
237
|
+
aVal = a.updated_at ? new Date(a.updated_at).getTime() : 0;
|
|
238
|
+
bVal = b.updated_at ? new Date(b.updated_at).getTime() : 0;
|
|
239
|
+
break;
|
|
240
|
+
case 'title':
|
|
241
|
+
aVal = a.title.toLowerCase();
|
|
242
|
+
bVal = b.title.toLowerCase();
|
|
243
|
+
break;
|
|
244
|
+
}
|
|
245
|
+
if (aVal < bVal)
|
|
246
|
+
return order === 'asc' ? -1 : 1;
|
|
247
|
+
if (aVal > bVal)
|
|
248
|
+
return order === 'asc' ? 1 : -1;
|
|
249
|
+
return 0;
|
|
250
|
+
});
|
|
251
|
+
return sorted;
|
|
252
|
+
}
|
|
253
|
+
/**
|
|
254
|
+
* Search tasks by text
|
|
255
|
+
*/
|
|
256
|
+
function searchTasks(tasks, query) {
|
|
257
|
+
const lowerQuery = query.toLowerCase();
|
|
258
|
+
return tasks.filter(t => t.id.toLowerCase().includes(lowerQuery) ||
|
|
259
|
+
t.title.toLowerCase().includes(lowerQuery) ||
|
|
260
|
+
(t.description && t.description.toLowerCase().includes(lowerQuery)));
|
|
261
|
+
}
|
|
262
|
+
/**
|
|
263
|
+
* Get dependency chain for a task
|
|
264
|
+
*/
|
|
265
|
+
function getDependencyChain(taskId, tasks) {
|
|
266
|
+
const chain = [];
|
|
267
|
+
const visited = new Set();
|
|
268
|
+
function traverse(id) {
|
|
269
|
+
if (visited.has(id))
|
|
270
|
+
return;
|
|
271
|
+
visited.add(id);
|
|
272
|
+
const task = tasks.find(t => t.id === id);
|
|
273
|
+
if (!task)
|
|
274
|
+
return;
|
|
275
|
+
chain.push(id);
|
|
276
|
+
if (task.blocked_by) {
|
|
277
|
+
for (const blockerId of task.blocked_by) {
|
|
278
|
+
traverse(blockerId);
|
|
279
|
+
}
|
|
280
|
+
}
|
|
281
|
+
}
|
|
282
|
+
traverse(taskId);
|
|
283
|
+
return chain;
|
|
284
|
+
}
|
|
285
|
+
/**
|
|
286
|
+
* Append a task to issues.jsonl
|
|
287
|
+
*/
|
|
288
|
+
function appendTask(task, beadsPath = 'augment-extensions/.beads/issues.jsonl') {
|
|
289
|
+
const validation = validateTask(task);
|
|
290
|
+
if (!validation.valid) {
|
|
291
|
+
throw new Error(`Invalid task: ${validation.errors.join(', ')}`);
|
|
292
|
+
}
|
|
293
|
+
const line = JSON.stringify(task) + '\n';
|
|
294
|
+
fs.appendFileSync(beadsPath, line, 'utf-8');
|
|
295
|
+
}
|
|
296
|
+
/**
|
|
297
|
+
* Update a task (appends update to JSONL)
|
|
298
|
+
*/
|
|
299
|
+
function updateTask(taskId, updates, beadsPath) {
|
|
300
|
+
const task = getTask(taskId, beadsPath);
|
|
301
|
+
if (!task) {
|
|
302
|
+
throw new Error(`Task not found: ${taskId}`);
|
|
303
|
+
}
|
|
304
|
+
const updatedTask = {
|
|
305
|
+
...task,
|
|
306
|
+
...updates,
|
|
307
|
+
id: taskId, // Ensure ID doesn't change
|
|
308
|
+
updated_at: new Date().toISOString()
|
|
309
|
+
};
|
|
310
|
+
appendTask(updatedTask, beadsPath);
|
|
311
|
+
}
|
|
312
|
+
//# sourceMappingURL=beads-integration.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"beads-integration.js","sourceRoot":"","sources":["../../src/utils/beads-integration.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Beads Reporter Utility
|
|
3
|
+
*
|
|
4
|
+
* Generates reports, statistics, and analytics for Beads tasks.
|
|
5
|
+
*/
|
|
6
|
+
import { BeadsTask } from './beads-integration';
|
|
7
|
+
export interface ReportOptions {
|
|
8
|
+
format?: 'markdown' | 'html' | 'json' | 'csv';
|
|
9
|
+
period?: 'day' | 'week' | 'month' | 'all';
|
|
10
|
+
includeSections?: string[];
|
|
11
|
+
outputPath?: string;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Generate a comprehensive report
|
|
15
|
+
*/
|
|
16
|
+
export declare function generateReport(tasks: BeadsTask[], options?: ReportOptions): string;
|
|
17
|
+
//# sourceMappingURL=beads-reporter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"beads-reporter.d.ts","sourceRoot":"","sources":["../../src/utils/beads-reporter.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,SAAS,EAA8D,MAAM,qBAAqB,CAAC;AAE5G,MAAM,WAAW,aAAa;IAC5B,MAAM,CAAC,EAAE,UAAU,GAAG,MAAM,GAAG,MAAM,GAAG,KAAK,CAAC;IAC9C,MAAM,CAAC,EAAE,KAAK,GAAG,MAAM,GAAG,OAAO,GAAG,KAAK,CAAC;IAC1C,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAC3B,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,SAAS,EAAE,EAAE,OAAO,GAAE,aAAkB,GAAG,MAAM,CAgBtF"}
|
|
@@ -0,0 +1,160 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Beads Reporter Utility
|
|
4
|
+
*
|
|
5
|
+
* Generates reports, statistics, and analytics for Beads tasks.
|
|
6
|
+
*/
|
|
7
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
8
|
+
exports.generateReport = generateReport;
|
|
9
|
+
const beads_integration_1 = require("./beads-integration");
|
|
10
|
+
/**
|
|
11
|
+
* Generate a comprehensive report
|
|
12
|
+
*/
|
|
13
|
+
function generateReport(tasks, options = {}) {
|
|
14
|
+
const format = options.format || 'markdown';
|
|
15
|
+
const sections = options.includeSections || ['summary', 'stats', 'timeline'];
|
|
16
|
+
switch (format) {
|
|
17
|
+
case 'markdown':
|
|
18
|
+
return generateMarkdownReport(tasks, sections);
|
|
19
|
+
case 'html':
|
|
20
|
+
return generateHTMLReport(tasks, sections);
|
|
21
|
+
case 'json':
|
|
22
|
+
return generateJSONReport(tasks, sections);
|
|
23
|
+
case 'csv':
|
|
24
|
+
return generateCSVReport(tasks);
|
|
25
|
+
default:
|
|
26
|
+
throw new Error(`Unsupported format: ${format}`);
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Generate Markdown report
|
|
31
|
+
*/
|
|
32
|
+
function generateMarkdownReport(tasks, sections) {
|
|
33
|
+
const stats = (0, beads_integration_1.calculateStats)(tasks);
|
|
34
|
+
let report = '# Beads Task Report\n\n';
|
|
35
|
+
report += `Generated: ${new Date().toISOString()}\n\n`;
|
|
36
|
+
if (sections.includes('summary')) {
|
|
37
|
+
report += '## Summary\n\n';
|
|
38
|
+
report += `- **Total Tasks:** ${stats.total}\n`;
|
|
39
|
+
report += `- **Open:** ${stats.open}\n`;
|
|
40
|
+
report += `- **In Progress:** ${stats.in_progress}\n`;
|
|
41
|
+
report += `- **Blocked:** ${stats.blocked}\n`;
|
|
42
|
+
report += `- **Closed:** ${stats.closed}\n`;
|
|
43
|
+
report += `- **Completion Rate:** ${((stats.closed / stats.total) * 100).toFixed(1)}%\n\n`;
|
|
44
|
+
}
|
|
45
|
+
if (sections.includes('stats')) {
|
|
46
|
+
report += '## Statistics\n\n';
|
|
47
|
+
report += '### By Priority\n\n';
|
|
48
|
+
report += '| Priority | Count |\n';
|
|
49
|
+
report += '|----------|-------|\n';
|
|
50
|
+
for (const [priority, count] of Object.entries(stats.by_priority).sort()) {
|
|
51
|
+
report += `| ${priority} | ${count} |\n`;
|
|
52
|
+
}
|
|
53
|
+
report += '\n';
|
|
54
|
+
report += '### By Type\n\n';
|
|
55
|
+
report += '| Type | Count |\n';
|
|
56
|
+
report += '|------|-------|\n';
|
|
57
|
+
for (const [type, count] of Object.entries(stats.by_type).sort()) {
|
|
58
|
+
report += `| ${type} | ${count} |\n`;
|
|
59
|
+
}
|
|
60
|
+
report += '\n';
|
|
61
|
+
if (stats.avg_time_to_close) {
|
|
62
|
+
const days = Math.round(stats.avg_time_to_close / (1000 * 60 * 60 * 24));
|
|
63
|
+
report += `### Average Time to Close\n\n${days} days\n\n`;
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
if (sections.includes('timeline')) {
|
|
67
|
+
report += '## Recent Activity\n\n';
|
|
68
|
+
const recentTasks = tasks
|
|
69
|
+
.filter(t => t.updated_at)
|
|
70
|
+
.sort((a, b) => {
|
|
71
|
+
const aTime = new Date(a.updated_at).getTime();
|
|
72
|
+
const bTime = new Date(b.updated_at).getTime();
|
|
73
|
+
return bTime - aTime;
|
|
74
|
+
})
|
|
75
|
+
.slice(0, 10);
|
|
76
|
+
for (const task of recentTasks) {
|
|
77
|
+
const date = new Date(task.updated_at).toLocaleDateString();
|
|
78
|
+
report += `- **${task.id}**: ${task.title} (${task.status}) - ${date}\n`;
|
|
79
|
+
}
|
|
80
|
+
report += '\n';
|
|
81
|
+
}
|
|
82
|
+
return report;
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Generate HTML report
|
|
86
|
+
*/
|
|
87
|
+
function generateHTMLReport(tasks, sections) {
|
|
88
|
+
const stats = (0, beads_integration_1.calculateStats)(tasks);
|
|
89
|
+
let html = '<!DOCTYPE html>\n<html>\n<head>\n';
|
|
90
|
+
html += '<title>Beads Task Report</title>\n';
|
|
91
|
+
html += '<style>\n';
|
|
92
|
+
html += 'body { font-family: Arial, sans-serif; margin: 20px; }\n';
|
|
93
|
+
html += 'table { border-collapse: collapse; width: 100%; margin: 20px 0; }\n';
|
|
94
|
+
html += 'th, td { border: 1px solid #ddd; padding: 8px; text-align: left; }\n';
|
|
95
|
+
html += 'th { background-color: #4CAF50; color: white; }\n';
|
|
96
|
+
html += '.stat { display: inline-block; margin: 10px; padding: 15px; background: #f0f0f0; border-radius: 5px; }\n';
|
|
97
|
+
html += '</style>\n</head>\n<body>\n';
|
|
98
|
+
html += '<h1>Beads Task Report</h1>\n';
|
|
99
|
+
html += `<p>Generated: ${new Date().toISOString()}</p>\n`;
|
|
100
|
+
if (sections.includes('summary')) {
|
|
101
|
+
html += '<h2>Summary</h2>\n';
|
|
102
|
+
html += `<div class="stat"><strong>Total:</strong> ${stats.total}</div>\n`;
|
|
103
|
+
html += `<div class="stat"><strong>Open:</strong> ${stats.open}</div>\n`;
|
|
104
|
+
html += `<div class="stat"><strong>In Progress:</strong> ${stats.in_progress}</div>\n`;
|
|
105
|
+
html += `<div class="stat"><strong>Blocked:</strong> ${stats.blocked}</div>\n`;
|
|
106
|
+
html += `<div class="stat"><strong>Closed:</strong> ${stats.closed}</div>\n`;
|
|
107
|
+
html += `<div class="stat"><strong>Completion:</strong> ${((stats.closed / stats.total) * 100).toFixed(1)}%</div>\n`;
|
|
108
|
+
}
|
|
109
|
+
if (sections.includes('stats')) {
|
|
110
|
+
html += '<h2>Statistics</h2>\n';
|
|
111
|
+
html += '<h3>By Priority</h3>\n<table>\n<tr><th>Priority</th><th>Count</th></tr>\n';
|
|
112
|
+
for (const [priority, count] of Object.entries(stats.by_priority).sort()) {
|
|
113
|
+
html += `<tr><td>${priority}</td><td>${count}</td></tr>\n`;
|
|
114
|
+
}
|
|
115
|
+
html += '</table>\n';
|
|
116
|
+
}
|
|
117
|
+
html += '</body>\n</html>';
|
|
118
|
+
return html;
|
|
119
|
+
}
|
|
120
|
+
/**
|
|
121
|
+
* Generate JSON report
|
|
122
|
+
*/
|
|
123
|
+
function generateJSONReport(tasks, sections) {
|
|
124
|
+
const stats = (0, beads_integration_1.calculateStats)(tasks);
|
|
125
|
+
const report = {
|
|
126
|
+
generated: new Date().toISOString(),
|
|
127
|
+
stats,
|
|
128
|
+
tasks: tasks.map(t => ({
|
|
129
|
+
id: t.id,
|
|
130
|
+
title: t.title,
|
|
131
|
+
status: t.status,
|
|
132
|
+
priority: t.priority,
|
|
133
|
+
created_at: t.created_at,
|
|
134
|
+
updated_at: t.updated_at
|
|
135
|
+
}))
|
|
136
|
+
};
|
|
137
|
+
return JSON.stringify(report, null, 2);
|
|
138
|
+
}
|
|
139
|
+
/**
|
|
140
|
+
* Generate CSV report
|
|
141
|
+
*/
|
|
142
|
+
function generateCSVReport(tasks) {
|
|
143
|
+
let csv = 'ID,Title,Status,Priority,Type,Owner,Created,Updated,Closed\n';
|
|
144
|
+
for (const task of tasks) {
|
|
145
|
+
const row = [
|
|
146
|
+
task.id,
|
|
147
|
+
`"${task.title.replace(/"/g, '""')}"`,
|
|
148
|
+
task.status,
|
|
149
|
+
task.priority || '',
|
|
150
|
+
task.issue_type || '',
|
|
151
|
+
task.owner || '',
|
|
152
|
+
task.created_at || '',
|
|
153
|
+
task.updated_at || '',
|
|
154
|
+
task.closed_at || ''
|
|
155
|
+
];
|
|
156
|
+
csv += row.join(',') + '\n';
|
|
157
|
+
}
|
|
158
|
+
return csv;
|
|
159
|
+
}
|
|
160
|
+
//# sourceMappingURL=beads-reporter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"beads-reporter.js","sourceRoot":"","sources":["../../src/utils/beads-reporter.ts"],"names":[],"mappings":"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"}
|