@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,329 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* OpenSpec Specification Manager
|
|
4
|
+
*
|
|
5
|
+
* Manages OpenSpec specifications - creating, reading, validating, and archiving specs.
|
|
6
|
+
*/
|
|
7
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
8
|
+
if (k2 === undefined) k2 = k;
|
|
9
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
10
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
11
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
12
|
+
}
|
|
13
|
+
Object.defineProperty(o, k2, desc);
|
|
14
|
+
}) : (function(o, m, k, k2) {
|
|
15
|
+
if (k2 === undefined) k2 = k;
|
|
16
|
+
o[k2] = m[k];
|
|
17
|
+
}));
|
|
18
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
19
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
20
|
+
}) : function(o, v) {
|
|
21
|
+
o["default"] = v;
|
|
22
|
+
});
|
|
23
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
24
|
+
var ownKeys = function(o) {
|
|
25
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
26
|
+
var ar = [];
|
|
27
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
28
|
+
return ar;
|
|
29
|
+
};
|
|
30
|
+
return ownKeys(o);
|
|
31
|
+
};
|
|
32
|
+
return function (mod) {
|
|
33
|
+
if (mod && mod.__esModule) return mod;
|
|
34
|
+
var result = {};
|
|
35
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
36
|
+
__setModuleDefault(result, mod);
|
|
37
|
+
return result;
|
|
38
|
+
};
|
|
39
|
+
})();
|
|
40
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
41
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
42
|
+
};
|
|
43
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
44
|
+
exports.listSpecs = listSpecs;
|
|
45
|
+
exports.getSpec = getSpec;
|
|
46
|
+
exports.createSpec = createSpec;
|
|
47
|
+
exports.validateSpec = validateSpec;
|
|
48
|
+
exports.archiveSpec = archiveSpec;
|
|
49
|
+
exports.getSpecStats = getSpecStats;
|
|
50
|
+
const fs = __importStar(require("fs"));
|
|
51
|
+
const path = __importStar(require("path"));
|
|
52
|
+
const gray_matter_1 = __importDefault(require("gray-matter"));
|
|
53
|
+
const OPENSPEC_BASE = 'augment-extensions/openspec';
|
|
54
|
+
const SPECS_DIR = path.join(OPENSPEC_BASE, 'specs');
|
|
55
|
+
const ARCHIVE_DIR = path.join(OPENSPEC_BASE, 'archive');
|
|
56
|
+
/**
|
|
57
|
+
* List all specifications
|
|
58
|
+
*/
|
|
59
|
+
function listSpecs(options = {}) {
|
|
60
|
+
const specs = [];
|
|
61
|
+
function scanDirectory(dir, category = '') {
|
|
62
|
+
if (!fs.existsSync(dir))
|
|
63
|
+
return;
|
|
64
|
+
const entries = fs.readdirSync(dir, { withFileTypes: true });
|
|
65
|
+
for (const entry of entries) {
|
|
66
|
+
const fullPath = path.join(dir, entry.name);
|
|
67
|
+
if (entry.isDirectory()) {
|
|
68
|
+
const newCategory = category ? `${category}/${entry.name}` : entry.name;
|
|
69
|
+
scanDirectory(fullPath, newCategory);
|
|
70
|
+
}
|
|
71
|
+
else if (entry.isFile() && entry.name.endsWith('.md')) {
|
|
72
|
+
try {
|
|
73
|
+
const content = fs.readFileSync(fullPath, 'utf-8');
|
|
74
|
+
const parsed = (0, gray_matter_1.default)(content);
|
|
75
|
+
const metadata = parsed.data;
|
|
76
|
+
// Set category from directory structure if not in metadata
|
|
77
|
+
if (!metadata.category && category) {
|
|
78
|
+
metadata.category = category;
|
|
79
|
+
}
|
|
80
|
+
// Set ID from file path if not in metadata
|
|
81
|
+
if (!metadata.id) {
|
|
82
|
+
const relativePath = path.relative(SPECS_DIR, fullPath);
|
|
83
|
+
metadata.id = relativePath.replace(/\.md$/, '').replace(/\\/g, '/');
|
|
84
|
+
}
|
|
85
|
+
specs.push({
|
|
86
|
+
metadata,
|
|
87
|
+
content: parsed.content,
|
|
88
|
+
filePath: fullPath
|
|
89
|
+
});
|
|
90
|
+
}
|
|
91
|
+
catch (error) {
|
|
92
|
+
console.error(`Error reading spec ${fullPath}:`, error);
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
scanDirectory(SPECS_DIR);
|
|
98
|
+
// Apply filters
|
|
99
|
+
let filtered = specs;
|
|
100
|
+
if (options.status) {
|
|
101
|
+
filtered = filtered.filter(s => s.metadata.status === options.status);
|
|
102
|
+
}
|
|
103
|
+
if (options.category) {
|
|
104
|
+
filtered = filtered.filter(s => s.metadata.category === options.category ||
|
|
105
|
+
s.metadata.id.startsWith(options.category + '/'));
|
|
106
|
+
}
|
|
107
|
+
// Sort
|
|
108
|
+
if (options.sort) {
|
|
109
|
+
filtered.sort((a, b) => {
|
|
110
|
+
switch (options.sort) {
|
|
111
|
+
case 'name':
|
|
112
|
+
return a.metadata.id.localeCompare(b.metadata.id);
|
|
113
|
+
case 'created':
|
|
114
|
+
const aCreated = a.metadata.created ? new Date(a.metadata.created).getTime() : 0;
|
|
115
|
+
const bCreated = b.metadata.created ? new Date(b.metadata.created).getTime() : 0;
|
|
116
|
+
return bCreated - aCreated;
|
|
117
|
+
case 'updated':
|
|
118
|
+
const aUpdated = a.metadata.updated ? new Date(a.metadata.updated).getTime() : 0;
|
|
119
|
+
const bUpdated = b.metadata.updated ? new Date(b.metadata.updated).getTime() : 0;
|
|
120
|
+
return bUpdated - aUpdated;
|
|
121
|
+
default:
|
|
122
|
+
return 0;
|
|
123
|
+
}
|
|
124
|
+
});
|
|
125
|
+
}
|
|
126
|
+
return filtered;
|
|
127
|
+
}
|
|
128
|
+
/**
|
|
129
|
+
* Get a single specification by ID
|
|
130
|
+
*/
|
|
131
|
+
function getSpec(specId) {
|
|
132
|
+
const specPath = path.join(SPECS_DIR, `${specId}.md`);
|
|
133
|
+
if (!fs.existsSync(specPath)) {
|
|
134
|
+
return null;
|
|
135
|
+
}
|
|
136
|
+
try {
|
|
137
|
+
const content = fs.readFileSync(specPath, 'utf-8');
|
|
138
|
+
const parsed = (0, gray_matter_1.default)(content);
|
|
139
|
+
const metadata = parsed.data;
|
|
140
|
+
if (!metadata.id) {
|
|
141
|
+
metadata.id = specId;
|
|
142
|
+
}
|
|
143
|
+
return {
|
|
144
|
+
metadata,
|
|
145
|
+
content: parsed.content,
|
|
146
|
+
filePath: specPath
|
|
147
|
+
};
|
|
148
|
+
}
|
|
149
|
+
catch (error) {
|
|
150
|
+
console.error(`Error reading spec ${specId}:`, error);
|
|
151
|
+
return null;
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
/**
|
|
155
|
+
* Create a new specification
|
|
156
|
+
*/
|
|
157
|
+
function createSpec(specId, options = {}) {
|
|
158
|
+
const specPath = path.join(SPECS_DIR, `${specId}.md`);
|
|
159
|
+
// Check if spec already exists
|
|
160
|
+
if (fs.existsSync(specPath)) {
|
|
161
|
+
throw new Error(`Spec already exists: ${specId}`);
|
|
162
|
+
}
|
|
163
|
+
// Ensure directory exists
|
|
164
|
+
const specDir = path.dirname(specPath);
|
|
165
|
+
if (!fs.existsSync(specDir)) {
|
|
166
|
+
fs.mkdirSync(specDir, { recursive: true });
|
|
167
|
+
}
|
|
168
|
+
// Create metadata
|
|
169
|
+
const metadata = {
|
|
170
|
+
id: specId,
|
|
171
|
+
title: options.title || specId.split('/').pop() || specId,
|
|
172
|
+
status: options.status || 'draft',
|
|
173
|
+
created: new Date().toISOString(),
|
|
174
|
+
updated: new Date().toISOString()
|
|
175
|
+
};
|
|
176
|
+
if (options.description) {
|
|
177
|
+
metadata.description = options.description;
|
|
178
|
+
}
|
|
179
|
+
// Get template content
|
|
180
|
+
let content = getTemplate(options.template);
|
|
181
|
+
// Replace placeholders
|
|
182
|
+
content = content
|
|
183
|
+
.replace(/<title>/g, metadata.title || '')
|
|
184
|
+
.replace(/<description>/g, options.description || '')
|
|
185
|
+
.replace(/<date>/g, new Date().toISOString());
|
|
186
|
+
// Create file with frontmatter
|
|
187
|
+
const fileContent = gray_matter_1.default.stringify(content, metadata);
|
|
188
|
+
fs.writeFileSync(specPath, fileContent, 'utf-8');
|
|
189
|
+
return specPath;
|
|
190
|
+
}
|
|
191
|
+
/**
|
|
192
|
+
* Validate a specification
|
|
193
|
+
*/
|
|
194
|
+
function validateSpec(specId, options = {}) {
|
|
195
|
+
const errors = [];
|
|
196
|
+
const warnings = [];
|
|
197
|
+
const spec = getSpec(specId);
|
|
198
|
+
if (!spec) {
|
|
199
|
+
errors.push(`Spec not found: ${specId}`);
|
|
200
|
+
return { valid: false, errors, warnings };
|
|
201
|
+
}
|
|
202
|
+
// Check required metadata fields
|
|
203
|
+
if (!spec.metadata.id) {
|
|
204
|
+
errors.push('Missing required field: id');
|
|
205
|
+
}
|
|
206
|
+
if (!spec.metadata.title) {
|
|
207
|
+
warnings.push('Missing recommended field: title');
|
|
208
|
+
}
|
|
209
|
+
if (!spec.metadata.status) {
|
|
210
|
+
warnings.push('Missing recommended field: status');
|
|
211
|
+
}
|
|
212
|
+
// Check status value
|
|
213
|
+
if (spec.metadata.status && !['draft', 'active', 'deprecated', 'archived'].includes(spec.metadata.status)) {
|
|
214
|
+
errors.push(`Invalid status: ${spec.metadata.status}`);
|
|
215
|
+
}
|
|
216
|
+
// Check content
|
|
217
|
+
if (!spec.content || spec.content.trim().length === 0) {
|
|
218
|
+
warnings.push('Spec content is empty');
|
|
219
|
+
}
|
|
220
|
+
// Check for common sections
|
|
221
|
+
const hasOverview = spec.content.includes('## Overview') || spec.content.includes('## Purpose');
|
|
222
|
+
const hasSpec = spec.content.includes('## Specification') || spec.content.includes('## Requirements');
|
|
223
|
+
if (!hasOverview && options.strict) {
|
|
224
|
+
warnings.push('Missing Overview or Purpose section');
|
|
225
|
+
}
|
|
226
|
+
if (!hasSpec && options.strict) {
|
|
227
|
+
warnings.push('Missing Specification or Requirements section');
|
|
228
|
+
}
|
|
229
|
+
// Check related tasks exist (if beads integration is available)
|
|
230
|
+
if (spec.metadata.relatedTasks && spec.metadata.relatedTasks.length > 0) {
|
|
231
|
+
try {
|
|
232
|
+
const { readBeadsTasks } = require('./beads-integration');
|
|
233
|
+
const tasks = readBeadsTasks();
|
|
234
|
+
const taskIds = new Set(tasks.map((t) => t.id));
|
|
235
|
+
for (const taskId of spec.metadata.relatedTasks) {
|
|
236
|
+
if (!taskIds.has(taskId)) {
|
|
237
|
+
warnings.push(`Related task not found: ${taskId}`);
|
|
238
|
+
}
|
|
239
|
+
}
|
|
240
|
+
}
|
|
241
|
+
catch (error) {
|
|
242
|
+
// Beads integration not available, skip task validation
|
|
243
|
+
}
|
|
244
|
+
}
|
|
245
|
+
return {
|
|
246
|
+
valid: errors.length === 0,
|
|
247
|
+
errors,
|
|
248
|
+
warnings
|
|
249
|
+
};
|
|
250
|
+
}
|
|
251
|
+
/**
|
|
252
|
+
* Archive a specification
|
|
253
|
+
*/
|
|
254
|
+
function archiveSpec(specId, reason) {
|
|
255
|
+
const spec = getSpec(specId);
|
|
256
|
+
if (!spec) {
|
|
257
|
+
throw new Error(`Spec not found: ${specId}`);
|
|
258
|
+
}
|
|
259
|
+
// Create archive directory
|
|
260
|
+
const archiveDir = path.join(ARCHIVE_DIR, specId);
|
|
261
|
+
if (!fs.existsSync(archiveDir)) {
|
|
262
|
+
fs.mkdirSync(archiveDir, { recursive: true });
|
|
263
|
+
}
|
|
264
|
+
// Update metadata
|
|
265
|
+
spec.metadata.status = 'archived';
|
|
266
|
+
spec.metadata.updated = new Date().toISOString();
|
|
267
|
+
// Create archive file
|
|
268
|
+
const archivePath = path.join(archiveDir, 'spec.md');
|
|
269
|
+
const fileContent = gray_matter_1.default.stringify(spec.content, spec.metadata);
|
|
270
|
+
fs.writeFileSync(archivePath, fileContent, 'utf-8');
|
|
271
|
+
// Create archive metadata
|
|
272
|
+
const archiveMetadata = {
|
|
273
|
+
archivedAt: new Date().toISOString(),
|
|
274
|
+
reason: reason || 'Archived',
|
|
275
|
+
originalPath: spec.filePath
|
|
276
|
+
};
|
|
277
|
+
fs.writeFileSync(path.join(archiveDir, 'archive-info.json'), JSON.stringify(archiveMetadata, null, 2), 'utf-8');
|
|
278
|
+
// Remove original file
|
|
279
|
+
fs.unlinkSync(spec.filePath);
|
|
280
|
+
return archivePath;
|
|
281
|
+
}
|
|
282
|
+
/**
|
|
283
|
+
* Get spec template
|
|
284
|
+
*/
|
|
285
|
+
function getTemplate(templateName) {
|
|
286
|
+
if (!templateName) {
|
|
287
|
+
return `# <title>
|
|
288
|
+
|
|
289
|
+
## Overview
|
|
290
|
+
|
|
291
|
+
<description>
|
|
292
|
+
|
|
293
|
+
## Specification
|
|
294
|
+
|
|
295
|
+
### Requirements
|
|
296
|
+
|
|
297
|
+
### Examples
|
|
298
|
+
|
|
299
|
+
## Related
|
|
300
|
+
|
|
301
|
+
- Tasks:
|
|
302
|
+
- Rules:
|
|
303
|
+
`;
|
|
304
|
+
}
|
|
305
|
+
// Could load templates from a templates directory
|
|
306
|
+
// For now, return default template
|
|
307
|
+
return getTemplate();
|
|
308
|
+
}
|
|
309
|
+
/**
|
|
310
|
+
* Get spec statistics
|
|
311
|
+
*/
|
|
312
|
+
function getSpecStats() {
|
|
313
|
+
const specs = listSpecs();
|
|
314
|
+
const stats = {
|
|
315
|
+
total: specs.length,
|
|
316
|
+
byStatus: {},
|
|
317
|
+
byCategory: {}
|
|
318
|
+
};
|
|
319
|
+
for (const spec of specs) {
|
|
320
|
+
// Count by status
|
|
321
|
+
const status = spec.metadata.status || 'unknown';
|
|
322
|
+
stats.byStatus[status] = (stats.byStatus[status] || 0) + 1;
|
|
323
|
+
// Count by category
|
|
324
|
+
const category = spec.metadata.category || 'uncategorized';
|
|
325
|
+
stats.byCategory[category] = (stats.byCategory[category] || 0) + 1;
|
|
326
|
+
}
|
|
327
|
+
return stats;
|
|
328
|
+
}
|
|
329
|
+
//# sourceMappingURL=spec-manager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"spec-manager.js","sourceRoot":"","sources":["../../src/utils/spec-manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Stats Collector for Augment Extensions
|
|
3
|
+
* Collects AI context usage statistics
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* Usage statistics
|
|
7
|
+
*/
|
|
8
|
+
export interface UsageStats {
|
|
9
|
+
totalModules: number;
|
|
10
|
+
linkedModules: number;
|
|
11
|
+
totalCharacters: number;
|
|
12
|
+
estimatedTokens: number;
|
|
13
|
+
modulesByType: {
|
|
14
|
+
[type: string]: number;
|
|
15
|
+
};
|
|
16
|
+
mostUsedModules: Array<{
|
|
17
|
+
name: string;
|
|
18
|
+
usageCount: number;
|
|
19
|
+
}>;
|
|
20
|
+
lastUpdated: string;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Module usage entry
|
|
24
|
+
*/
|
|
25
|
+
export interface ModuleUsage {
|
|
26
|
+
moduleName: string;
|
|
27
|
+
usageCount: number;
|
|
28
|
+
lastUsed: string;
|
|
29
|
+
totalCharacters: number;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Stats Collector class
|
|
33
|
+
*/
|
|
34
|
+
export declare class StatsCollector {
|
|
35
|
+
private statsFile;
|
|
36
|
+
private usageFile;
|
|
37
|
+
constructor();
|
|
38
|
+
/**
|
|
39
|
+
* Collect current statistics
|
|
40
|
+
*/
|
|
41
|
+
collectStats(): Promise<UsageStats>;
|
|
42
|
+
/**
|
|
43
|
+
* Record module usage
|
|
44
|
+
*/
|
|
45
|
+
recordUsage(moduleName: string, characters: number): void;
|
|
46
|
+
/**
|
|
47
|
+
* Get most used modules
|
|
48
|
+
*/
|
|
49
|
+
getMostUsedModules(limit?: number): Array<{
|
|
50
|
+
name: string;
|
|
51
|
+
usageCount: number;
|
|
52
|
+
}>;
|
|
53
|
+
/**
|
|
54
|
+
* Get module usage
|
|
55
|
+
*/
|
|
56
|
+
getModuleUsage(moduleName: string): ModuleUsage | null;
|
|
57
|
+
/**
|
|
58
|
+
* Clear all statistics
|
|
59
|
+
*/
|
|
60
|
+
clearStats(): void;
|
|
61
|
+
/**
|
|
62
|
+
* Load usage data
|
|
63
|
+
*/
|
|
64
|
+
private loadUsage;
|
|
65
|
+
/**
|
|
66
|
+
* Save usage data
|
|
67
|
+
*/
|
|
68
|
+
private saveUsage;
|
|
69
|
+
/**
|
|
70
|
+
* Save statistics
|
|
71
|
+
*/
|
|
72
|
+
private saveStats;
|
|
73
|
+
}
|
|
74
|
+
//# sourceMappingURL=stats-collector.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stats-collector.d.ts","sourceRoot":"","sources":["../../src/utils/stats-collector.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,eAAe,EAAE,MAAM,CAAC;IACxB,eAAe,EAAE,MAAM,CAAC;IACxB,aAAa,EAAE;QAAE,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,CAAC;IAC1C,eAAe,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC7D,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,eAAe,EAAE,MAAM,CAAC;CACzB;AAED;;GAEG;AACH,qBAAa,cAAc;IACzB,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,SAAS,CAAS;;IAS1B;;OAEG;IACG,YAAY,IAAI,OAAO,CAAC,UAAU,CAAC;IA+CzC;;OAEG;IACH,WAAW,CAAC,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,IAAI;IAmBzD;;OAEG;IACH,kBAAkB,CAAC,KAAK,GAAE,MAAW,GAAG,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,CAAC;IAQnF;;OAEG;IACH,cAAc,CAAC,UAAU,EAAE,MAAM,GAAG,WAAW,GAAG,IAAI;IAKtD;;OAEG;IACH,UAAU,IAAI,IAAI;IASlB;;OAEG;IACH,OAAO,CAAC,SAAS;IAOjB;;OAEG;IACH,OAAO,CAAC,SAAS;IAIjB;;OAEG;IACH,OAAO,CAAC,SAAS;CAGlB"}
|
|
@@ -0,0 +1,164 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Stats Collector for Augment Extensions
|
|
4
|
+
* Collects AI context usage statistics
|
|
5
|
+
*/
|
|
6
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
7
|
+
if (k2 === undefined) k2 = k;
|
|
8
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
9
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
10
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
11
|
+
}
|
|
12
|
+
Object.defineProperty(o, k2, desc);
|
|
13
|
+
}) : (function(o, m, k, k2) {
|
|
14
|
+
if (k2 === undefined) k2 = k;
|
|
15
|
+
o[k2] = m[k];
|
|
16
|
+
}));
|
|
17
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
18
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
19
|
+
}) : function(o, v) {
|
|
20
|
+
o["default"] = v;
|
|
21
|
+
});
|
|
22
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
23
|
+
var ownKeys = function(o) {
|
|
24
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
25
|
+
var ar = [];
|
|
26
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
27
|
+
return ar;
|
|
28
|
+
};
|
|
29
|
+
return ownKeys(o);
|
|
30
|
+
};
|
|
31
|
+
return function (mod) {
|
|
32
|
+
if (mod && mod.__esModule) return mod;
|
|
33
|
+
var result = {};
|
|
34
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
35
|
+
__setModuleDefault(result, mod);
|
|
36
|
+
return result;
|
|
37
|
+
};
|
|
38
|
+
})();
|
|
39
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
40
|
+
exports.StatsCollector = void 0;
|
|
41
|
+
const fs = __importStar(require("fs"));
|
|
42
|
+
const path = __importStar(require("path"));
|
|
43
|
+
/**
|
|
44
|
+
* Stats Collector class
|
|
45
|
+
*/
|
|
46
|
+
class StatsCollector {
|
|
47
|
+
constructor() {
|
|
48
|
+
const statsDir = path.join(process.cwd(), '.augment', 'stats');
|
|
49
|
+
fs.mkdirSync(statsDir, { recursive: true });
|
|
50
|
+
this.statsFile = path.join(statsDir, 'usage-stats.json');
|
|
51
|
+
this.usageFile = path.join(statsDir, 'module-usage.json');
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Collect current statistics
|
|
55
|
+
*/
|
|
56
|
+
async collectStats() {
|
|
57
|
+
const stats = {
|
|
58
|
+
totalModules: 0,
|
|
59
|
+
linkedModules: 0,
|
|
60
|
+
totalCharacters: 0,
|
|
61
|
+
estimatedTokens: 0,
|
|
62
|
+
modulesByType: {},
|
|
63
|
+
mostUsedModules: [],
|
|
64
|
+
lastUpdated: new Date().toISOString()
|
|
65
|
+
};
|
|
66
|
+
// Count modules by type
|
|
67
|
+
const modulesDir = path.join(__dirname, '../../../augment-extensions');
|
|
68
|
+
if (fs.existsSync(modulesDir)) {
|
|
69
|
+
const categories = fs.readdirSync(modulesDir, { withFileTypes: true })
|
|
70
|
+
.filter(d => d.isDirectory())
|
|
71
|
+
.map(d => d.name);
|
|
72
|
+
for (const category of categories) {
|
|
73
|
+
const categoryPath = path.join(modulesDir, category);
|
|
74
|
+
const modules = fs.readdirSync(categoryPath, { withFileTypes: true })
|
|
75
|
+
.filter(d => d.isDirectory());
|
|
76
|
+
stats.modulesByType[category] = modules.length;
|
|
77
|
+
stats.totalModules += modules.length;
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
// Count linked modules
|
|
81
|
+
const linkedFile = path.join(process.cwd(), '.augment', 'linked-modules.json');
|
|
82
|
+
if (fs.existsSync(linkedFile)) {
|
|
83
|
+
const linked = JSON.parse(fs.readFileSync(linkedFile, 'utf-8'));
|
|
84
|
+
stats.linkedModules = (linked.modules || []).length;
|
|
85
|
+
}
|
|
86
|
+
// Get most used modules
|
|
87
|
+
stats.mostUsedModules = this.getMostUsedModules(10);
|
|
88
|
+
// Calculate total characters and tokens
|
|
89
|
+
const usage = this.loadUsage();
|
|
90
|
+
stats.totalCharacters = Object.values(usage).reduce((sum, u) => sum + u.totalCharacters, 0);
|
|
91
|
+
stats.estimatedTokens = Math.ceil(stats.totalCharacters / 4); // Rough estimate: 1 token ≈ 4 characters
|
|
92
|
+
this.saveStats(stats);
|
|
93
|
+
return stats;
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* Record module usage
|
|
97
|
+
*/
|
|
98
|
+
recordUsage(moduleName, characters) {
|
|
99
|
+
const usage = this.loadUsage();
|
|
100
|
+
if (!usage[moduleName]) {
|
|
101
|
+
usage[moduleName] = {
|
|
102
|
+
moduleName,
|
|
103
|
+
usageCount: 0,
|
|
104
|
+
lastUsed: new Date().toISOString(),
|
|
105
|
+
totalCharacters: 0
|
|
106
|
+
};
|
|
107
|
+
}
|
|
108
|
+
usage[moduleName].usageCount++;
|
|
109
|
+
usage[moduleName].lastUsed = new Date().toISOString();
|
|
110
|
+
usage[moduleName].totalCharacters += characters;
|
|
111
|
+
this.saveUsage(usage);
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* Get most used modules
|
|
115
|
+
*/
|
|
116
|
+
getMostUsedModules(limit = 10) {
|
|
117
|
+
const usage = this.loadUsage();
|
|
118
|
+
return Object.values(usage)
|
|
119
|
+
.sort((a, b) => b.usageCount - a.usageCount)
|
|
120
|
+
.slice(0, limit)
|
|
121
|
+
.map(u => ({ name: u.moduleName, usageCount: u.usageCount }));
|
|
122
|
+
}
|
|
123
|
+
/**
|
|
124
|
+
* Get module usage
|
|
125
|
+
*/
|
|
126
|
+
getModuleUsage(moduleName) {
|
|
127
|
+
const usage = this.loadUsage();
|
|
128
|
+
return usage[moduleName] || null;
|
|
129
|
+
}
|
|
130
|
+
/**
|
|
131
|
+
* Clear all statistics
|
|
132
|
+
*/
|
|
133
|
+
clearStats() {
|
|
134
|
+
if (fs.existsSync(this.statsFile)) {
|
|
135
|
+
fs.unlinkSync(this.statsFile);
|
|
136
|
+
}
|
|
137
|
+
if (fs.existsSync(this.usageFile)) {
|
|
138
|
+
fs.unlinkSync(this.usageFile);
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
/**
|
|
142
|
+
* Load usage data
|
|
143
|
+
*/
|
|
144
|
+
loadUsage() {
|
|
145
|
+
if (fs.existsSync(this.usageFile)) {
|
|
146
|
+
return JSON.parse(fs.readFileSync(this.usageFile, 'utf-8'));
|
|
147
|
+
}
|
|
148
|
+
return {};
|
|
149
|
+
}
|
|
150
|
+
/**
|
|
151
|
+
* Save usage data
|
|
152
|
+
*/
|
|
153
|
+
saveUsage(usage) {
|
|
154
|
+
fs.writeFileSync(this.usageFile, JSON.stringify(usage, null, 2));
|
|
155
|
+
}
|
|
156
|
+
/**
|
|
157
|
+
* Save statistics
|
|
158
|
+
*/
|
|
159
|
+
saveStats(stats) {
|
|
160
|
+
fs.writeFileSync(this.statsFile, JSON.stringify(stats, null, 2));
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
exports.StatsCollector = StatsCollector;
|
|
164
|
+
//# sourceMappingURL=stats-collector.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stats-collector.js","sourceRoot":"","sources":["../../src/utils/stats-collector.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Template Engine for Augment Extensions
|
|
3
|
+
* Creates new AI context module templates
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* Template options
|
|
7
|
+
*/
|
|
8
|
+
export interface TemplateOptions {
|
|
9
|
+
name: string;
|
|
10
|
+
type: 'coding-standards' | 'domain-rules' | 'workflows' | 'examples';
|
|
11
|
+
displayName?: string;
|
|
12
|
+
description?: string;
|
|
13
|
+
version?: string;
|
|
14
|
+
author?: string;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Template result
|
|
18
|
+
*/
|
|
19
|
+
export interface TemplateResult {
|
|
20
|
+
success: boolean;
|
|
21
|
+
modulePath?: string;
|
|
22
|
+
errors?: string[];
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Template Engine class
|
|
26
|
+
*/
|
|
27
|
+
export declare class TemplateEngine {
|
|
28
|
+
private modulesDir;
|
|
29
|
+
constructor();
|
|
30
|
+
/**
|
|
31
|
+
* Create module from template
|
|
32
|
+
*/
|
|
33
|
+
createFromTemplate(options: TemplateOptions): Promise<TemplateResult>;
|
|
34
|
+
/**
|
|
35
|
+
* Generate README content
|
|
36
|
+
*/
|
|
37
|
+
private generateReadme;
|
|
38
|
+
/**
|
|
39
|
+
* Generate sample rule content
|
|
40
|
+
*/
|
|
41
|
+
private generateSampleRule;
|
|
42
|
+
/**
|
|
43
|
+
* Generate sample example content
|
|
44
|
+
*/
|
|
45
|
+
private generateSampleExample;
|
|
46
|
+
}
|
|
47
|
+
//# sourceMappingURL=template-engine.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"template-engine.d.ts","sourceRoot":"","sources":["../../src/utils/template-engine.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,kBAAkB,GAAG,cAAc,GAAG,WAAW,GAAG,UAAU,CAAC;IACrE,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;CACnB;AAED;;GAEG;AACH,qBAAa,cAAc;IACzB,OAAO,CAAC,UAAU,CAAS;;IAM3B;;OAEG;IACG,kBAAkB,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,cAAc,CAAC;IA6D3E;;OAEG;IACH,OAAO,CAAC,cAAc;IAgCtB;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAmC1B;;OAEG;IACH,OAAO,CAAC,qBAAqB;CAyB9B"}
|