@mytechtoday/augment-extensions 1.3.0 → 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.
Files changed (232) hide show
  1. package/LICENSE +22 -22
  2. package/README.md +105 -6
  3. package/augment-extensions/domain-rules/software-architecture/README.md +143 -143
  4. package/augment-extensions/domain-rules/software-architecture/examples/banking-layered.md +961 -961
  5. package/augment-extensions/domain-rules/software-architecture/examples/ecommerce-microservices.md +990 -990
  6. package/augment-extensions/domain-rules/software-architecture/examples/iot-eventdriven.md +882 -882
  7. package/augment-extensions/domain-rules/software-architecture/examples/monolith-to-microservices-migration.md +703 -703
  8. package/augment-extensions/domain-rules/software-architecture/examples/serverless-imageprocessing.md +957 -957
  9. package/augment-extensions/domain-rules/software-architecture/examples/trading-eventdriven.md +747 -747
  10. package/augment-extensions/domain-rules/software-architecture/module.json +119 -119
  11. package/augment-extensions/domain-rules/software-architecture/rules/challenges-solutions.md +763 -763
  12. package/augment-extensions/domain-rules/software-architecture/rules/definitions-terminology.md +409 -409
  13. package/augment-extensions/domain-rules/software-architecture/rules/design-principles.md +684 -684
  14. package/augment-extensions/domain-rules/software-architecture/rules/evaluation-testing.md +1381 -1381
  15. package/augment-extensions/domain-rules/software-architecture/rules/event-driven-architecture.md +616 -616
  16. package/augment-extensions/domain-rules/software-architecture/rules/fundamentals.md +306 -306
  17. package/augment-extensions/domain-rules/software-architecture/rules/industry-architectures.md +554 -554
  18. package/augment-extensions/domain-rules/software-architecture/rules/layered-architecture.md +776 -776
  19. package/augment-extensions/domain-rules/software-architecture/rules/microservices-architecture.md +503 -503
  20. package/augment-extensions/domain-rules/software-architecture/rules/modeling-documentation.md +1199 -1199
  21. package/augment-extensions/domain-rules/software-architecture/rules/monolithic-architecture.md +351 -351
  22. package/augment-extensions/domain-rules/software-architecture/rules/principles.md +556 -556
  23. package/augment-extensions/domain-rules/software-architecture/rules/quality-attributes.md +797 -797
  24. package/augment-extensions/domain-rules/software-architecture/rules/scalability-performance.md +1345 -1345
  25. package/augment-extensions/domain-rules/software-architecture/rules/security-architecture.md +1039 -1039
  26. package/augment-extensions/domain-rules/software-architecture/rules/serverless-architecture.md +711 -711
  27. package/augment-extensions/domain-rules/software-architecture/rules/skills-development.md +568 -568
  28. package/augment-extensions/domain-rules/software-architecture/rules/tools-methodologies.md +961 -961
  29. package/augment-extensions/visual-design/CHANGELOG.md +132 -132
  30. package/augment-extensions/visual-design/README.md +255 -255
  31. package/augment-extensions/visual-design/__tests__/README.md +119 -119
  32. package/augment-extensions/visual-design/__tests__/style-selector.test.ts +172 -172
  33. package/augment-extensions/visual-design/__tests__/vendor-styles.test.ts +214 -214
  34. package/augment-extensions/visual-design/domains/other/ai-prompt-helper.ts +157 -157
  35. package/augment-extensions/visual-design/domains/other/dotnet-application.ts +156 -156
  36. package/augment-extensions/visual-design/domains/other/linux-platform.ts +156 -156
  37. package/augment-extensions/visual-design/domains/other/mobile-application.ts +157 -157
  38. package/augment-extensions/visual-design/domains/other/motion-picture.ts +156 -156
  39. package/augment-extensions/visual-design/domains/other/os-application.ts +156 -156
  40. package/augment-extensions/visual-design/domains/other/print-campaigns.ts +158 -158
  41. package/augment-extensions/visual-design/domains/other/web-app.ts +157 -157
  42. package/augment-extensions/visual-design/domains/other/website.ts +161 -161
  43. package/augment-extensions/visual-design/domains/other/windows-platform.ts +156 -156
  44. package/augment-extensions/visual-design/domains/web-page-styles/amazon-cloudscape.ts +506 -506
  45. package/augment-extensions/visual-design/domains/web-page-styles/google-modern.ts +615 -615
  46. package/augment-extensions/visual-design/domains/web-page-styles/microsoft-fluent.ts +531 -531
  47. package/augment-extensions/visual-design/examples/README.md +97 -97
  48. package/augment-extensions/visual-design/examples/ai-prompt-generation.md +233 -233
  49. package/augment-extensions/visual-design/examples/basic-usage.md +216 -216
  50. package/augment-extensions/visual-design/examples/domain-workflows.md +257 -257
  51. package/augment-extensions/visual-design/examples/vendor-comparison.md +247 -247
  52. package/augment-extensions/visual-design/module.json +78 -78
  53. package/augment-extensions/visual-design/style-selector.ts +177 -177
  54. package/augment-extensions/visual-design/types.ts +302 -302
  55. package/augment-extensions/visual-design/visual-design-core.ts +469 -469
  56. package/augment-extensions/workflows/adr-support/README.md +227 -227
  57. package/augment-extensions/workflows/adr-support/__tests__/adr-validator.test.ts +203 -203
  58. package/augment-extensions/workflows/adr-support/adr-validator.ts +162 -162
  59. package/augment-extensions/workflows/adr-support/examples/complete-lifecycle-example.md +449 -449
  60. package/augment-extensions/workflows/adr-support/examples/integration-example.md +580 -580
  61. package/augment-extensions/workflows/adr-support/examples/superseding-example.md +436 -436
  62. package/augment-extensions/workflows/adr-support/module.json +112 -112
  63. package/augment-extensions/workflows/adr-support/rules/adr-creation.md +372 -372
  64. package/augment-extensions/workflows/adr-support/rules/beads-integration.md +443 -443
  65. package/augment-extensions/workflows/adr-support/rules/conflict-detection.md +486 -486
  66. package/augment-extensions/workflows/adr-support/rules/decision-detection.md +362 -362
  67. package/augment-extensions/workflows/adr-support/rules/lifecycle-management.md +427 -427
  68. package/augment-extensions/workflows/adr-support/rules/openspec-integration.md +465 -465
  69. package/augment-extensions/workflows/adr-support/rules/template-selection.md +405 -405
  70. package/augment-extensions/workflows/adr-support/rules/validation-rules.md +543 -543
  71. package/augment-extensions/workflows/adr-support/schemas/adr-config.json +191 -191
  72. package/augment-extensions/workflows/adr-support/schemas/adr-metadata.json +172 -172
  73. package/augment-extensions/workflows/adr-support/templates/business-case.md +235 -235
  74. package/augment-extensions/workflows/adr-support/templates/madr-elaborate.md +197 -197
  75. package/augment-extensions/workflows/adr-support/templates/madr-simple.md +68 -68
  76. package/augment-extensions/workflows/adr-support/templates/nygard.md +84 -84
  77. package/augment-extensions/writing-standards/screenplay/rules/file-organization.md +213 -213
  78. package/augment-extensions/writing-standards/screenplay/utils/__tests__/file-organization.test.ts +169 -169
  79. package/augment-extensions/writing-standards/screenplay/utils/file-organization.ts +165 -165
  80. package/cli/dist/commands/agent.d.ts +37 -0
  81. package/cli/dist/commands/agent.d.ts.map +1 -0
  82. package/cli/dist/commands/agent.js +222 -0
  83. package/cli/dist/commands/agent.js.map +1 -0
  84. package/cli/dist/commands/beads.d.ts +64 -0
  85. package/cli/dist/commands/beads.d.ts.map +1 -0
  86. package/cli/dist/commands/beads.js +377 -0
  87. package/cli/dist/commands/beads.js.map +1 -0
  88. package/cli/dist/commands/change.d.ts +54 -0
  89. package/cli/dist/commands/change.d.ts.map +1 -0
  90. package/cli/dist/commands/change.js +243 -0
  91. package/cli/dist/commands/change.js.map +1 -0
  92. package/cli/dist/commands/clean.d.ts +15 -0
  93. package/cli/dist/commands/clean.d.ts.map +1 -0
  94. package/cli/dist/commands/clean.js +63 -0
  95. package/cli/dist/commands/clean.js.map +1 -0
  96. package/cli/dist/commands/clone.d.ts +15 -0
  97. package/cli/dist/commands/clone.d.ts.map +1 -0
  98. package/cli/dist/commands/clone.js +49 -0
  99. package/cli/dist/commands/clone.js.map +1 -0
  100. package/cli/dist/commands/config.d.ts +33 -0
  101. package/cli/dist/commands/config.d.ts.map +1 -0
  102. package/cli/dist/commands/config.js +166 -0
  103. package/cli/dist/commands/config.js.map +1 -0
  104. package/cli/dist/commands/context.d.ts +38 -0
  105. package/cli/dist/commands/context.d.ts.map +1 -0
  106. package/cli/dist/commands/context.js +205 -0
  107. package/cli/dist/commands/context.js.map +1 -0
  108. package/cli/dist/commands/create.d.ts +18 -0
  109. package/cli/dist/commands/create.d.ts.map +1 -0
  110. package/cli/dist/commands/create.js +178 -0
  111. package/cli/dist/commands/create.js.map +1 -0
  112. package/cli/dist/commands/diff.d.ts +19 -0
  113. package/cli/dist/commands/diff.d.ts.map +1 -0
  114. package/cli/dist/commands/diff.js +104 -0
  115. package/cli/dist/commands/diff.js.map +1 -0
  116. package/cli/dist/commands/doctor.d.ts +14 -0
  117. package/cli/dist/commands/doctor.d.ts.map +1 -0
  118. package/cli/dist/commands/doctor.js +62 -0
  119. package/cli/dist/commands/doctor.js.map +1 -0
  120. package/cli/dist/commands/export.d.ts +28 -0
  121. package/cli/dist/commands/export.d.ts.map +1 -0
  122. package/cli/dist/commands/export.js +135 -0
  123. package/cli/dist/commands/export.js.map +1 -0
  124. package/cli/dist/commands/import.d.ts +23 -0
  125. package/cli/dist/commands/import.d.ts.map +1 -0
  126. package/cli/dist/commands/import.js +118 -0
  127. package/cli/dist/commands/import.js.map +1 -0
  128. package/cli/dist/commands/prompt.d.ts +45 -0
  129. package/cli/dist/commands/prompt.d.ts.map +1 -0
  130. package/cli/dist/commands/prompt.js +223 -0
  131. package/cli/dist/commands/prompt.js.map +1 -0
  132. package/cli/dist/commands/spec.d.ts +57 -0
  133. package/cli/dist/commands/spec.d.ts.map +1 -0
  134. package/cli/dist/commands/spec.js +279 -0
  135. package/cli/dist/commands/spec.js.map +1 -0
  136. package/cli/dist/commands/stats.d.ts +18 -0
  137. package/cli/dist/commands/stats.d.ts.map +1 -0
  138. package/cli/dist/commands/stats.js +85 -0
  139. package/cli/dist/commands/stats.js.map +1 -0
  140. package/cli/dist/commands/task.d.ts +65 -0
  141. package/cli/dist/commands/task.d.ts.map +1 -0
  142. package/cli/dist/commands/task.js +282 -0
  143. package/cli/dist/commands/task.js.map +1 -0
  144. package/cli/dist/commands/template.d.ts +17 -0
  145. package/cli/dist/commands/template.d.ts.map +1 -0
  146. package/cli/dist/commands/template.js +55 -0
  147. package/cli/dist/commands/template.js.map +1 -0
  148. package/cli/dist/utils/agent-config.d.ts +129 -0
  149. package/cli/dist/utils/agent-config.d.ts.map +1 -0
  150. package/cli/dist/utils/agent-config.js +297 -0
  151. package/cli/dist/utils/agent-config.js.map +1 -0
  152. package/cli/dist/utils/auto-sync.js +19 -19
  153. package/cli/dist/utils/beads-graph.d.ts +17 -0
  154. package/cli/dist/utils/beads-graph.d.ts.map +1 -0
  155. package/cli/dist/utils/beads-graph.js +150 -0
  156. package/cli/dist/utils/beads-graph.js.map +1 -0
  157. package/cli/dist/utils/beads-integration.d.ts +112 -0
  158. package/cli/dist/utils/beads-integration.d.ts.map +1 -0
  159. package/cli/dist/utils/beads-integration.js +312 -0
  160. package/cli/dist/utils/beads-integration.js.map +1 -0
  161. package/cli/dist/utils/beads-reporter.d.ts +17 -0
  162. package/cli/dist/utils/beads-reporter.d.ts.map +1 -0
  163. package/cli/dist/utils/beads-reporter.js +160 -0
  164. package/cli/dist/utils/beads-reporter.js.map +1 -0
  165. package/cli/dist/utils/cache-manager.d.ts +55 -0
  166. package/cli/dist/utils/cache-manager.d.ts.map +1 -0
  167. package/cli/dist/utils/cache-manager.js +150 -0
  168. package/cli/dist/utils/cache-manager.js.map +1 -0
  169. package/cli/dist/utils/change-manager.d.ts +70 -0
  170. package/cli/dist/utils/change-manager.d.ts.map +1 -0
  171. package/cli/dist/utils/change-manager.js +412 -0
  172. package/cli/dist/utils/change-manager.js.map +1 -0
  173. package/cli/dist/utils/config-manager-enhanced.d.ts +66 -0
  174. package/cli/dist/utils/config-manager-enhanced.d.ts.map +1 -0
  175. package/cli/dist/utils/config-manager-enhanced.js +77 -0
  176. package/cli/dist/utils/config-manager-enhanced.js.map +1 -0
  177. package/cli/dist/utils/context-manager.d.ts +96 -0
  178. package/cli/dist/utils/context-manager.d.ts.map +1 -0
  179. package/cli/dist/utils/context-manager.js +258 -0
  180. package/cli/dist/utils/context-manager.js.map +1 -0
  181. package/cli/dist/utils/diff-engine.d.ts +78 -0
  182. package/cli/dist/utils/diff-engine.d.ts.map +1 -0
  183. package/cli/dist/utils/diff-engine.js +233 -0
  184. package/cli/dist/utils/diff-engine.js.map +1 -0
  185. package/cli/dist/utils/export-system.d.ts +101 -0
  186. package/cli/dist/utils/export-system.d.ts.map +1 -0
  187. package/cli/dist/utils/export-system.js +289 -0
  188. package/cli/dist/utils/export-system.js.map +1 -0
  189. package/cli/dist/utils/health-checker.d.ts +66 -0
  190. package/cli/dist/utils/health-checker.d.ts.map +1 -0
  191. package/cli/dist/utils/health-checker.js +285 -0
  192. package/cli/dist/utils/health-checker.js.map +1 -0
  193. package/cli/dist/utils/import-system.d.ts +74 -0
  194. package/cli/dist/utils/import-system.d.ts.map +1 -0
  195. package/cli/dist/utils/import-system.js +317 -0
  196. package/cli/dist/utils/import-system.js.map +1 -0
  197. package/cli/dist/utils/module-cloner.d.ts +40 -0
  198. package/cli/dist/utils/module-cloner.d.ts.map +1 -0
  199. package/cli/dist/utils/module-cloner.js +136 -0
  200. package/cli/dist/utils/module-cloner.js.map +1 -0
  201. package/cli/dist/utils/prompt-manager.d.ts +90 -0
  202. package/cli/dist/utils/prompt-manager.d.ts.map +1 -0
  203. package/cli/dist/utils/prompt-manager.js +302 -0
  204. package/cli/dist/utils/prompt-manager.js.map +1 -0
  205. package/cli/dist/utils/spec-manager.d.ts +65 -0
  206. package/cli/dist/utils/spec-manager.d.ts.map +1 -0
  207. package/cli/dist/utils/spec-manager.js +329 -0
  208. package/cli/dist/utils/spec-manager.js.map +1 -0
  209. package/cli/dist/utils/stats-collector.d.ts +74 -0
  210. package/cli/dist/utils/stats-collector.d.ts.map +1 -0
  211. package/cli/dist/utils/stats-collector.js +164 -0
  212. package/cli/dist/utils/stats-collector.js.map +1 -0
  213. package/cli/dist/utils/template-engine.d.ts +47 -0
  214. package/cli/dist/utils/template-engine.d.ts.map +1 -0
  215. package/cli/dist/utils/template-engine.js +204 -0
  216. package/cli/dist/utils/template-engine.js.map +1 -0
  217. package/package.json +12 -3
  218. package/augment-extensions/workflows/openspec/README.md +0 -96
  219. package/augment-extensions/workflows/openspec/examples/complete-change-example.md +0 -244
  220. package/augment-extensions/workflows/openspec/module.json +0 -54
  221. package/augment-extensions/workflows/openspec/rules/best-practices.md +0 -272
  222. package/augment-extensions/workflows/openspec/rules/manual-setup.md +0 -231
  223. package/augment-extensions/workflows/openspec/rules/spec-format.md +0 -236
  224. package/augment-extensions/workflows/openspec/rules/workflow.md +0 -214
  225. package/cli/dist/utils/__tests__/adr-validator.example.d.ts +0 -6
  226. package/cli/dist/utils/__tests__/adr-validator.example.d.ts.map +0 -1
  227. package/cli/dist/utils/__tests__/adr-validator.example.js +0 -148
  228. package/cli/dist/utils/__tests__/adr-validator.example.js.map +0 -1
  229. package/cli/dist/utils/adr-validator.d.ts +0 -65
  230. package/cli/dist/utils/adr-validator.d.ts.map +0 -1
  231. package/cli/dist/utils/adr-validator.js +0 -203
  232. package/cli/dist/utils/adr-validator.js.map +0 -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":";AAAA;;;;GAIG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA+BH,8BAoFC;AAKD,0BAyBC;AAKD,gCAiDC;AAKD,oCAqEC;AAKD,kCAsCC;AAkCD,oCAwBC;AApXD,uCAAyB;AACzB,2CAA6B;AAC7B,8DAAiC;AAoBjC,MAAM,aAAa,GAAG,6BAA6B,CAAC;AACpD,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;AACpD,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,SAAS,CAAC,CAAC;AAExD;;GAEG;AACH,SAAgB,SAAS,CAAC,UAItB,EAAE;IACJ,MAAM,KAAK,GAAW,EAAE,CAAC;IAEzB,SAAS,aAAa,CAAC,GAAW,EAAE,WAAmB,EAAE;QACvD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC;YAAE,OAAO;QAEhC,MAAM,OAAO,GAAG,EAAE,CAAC,WAAW,CAAC,GAAG,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;QAE7D,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;YAC5B,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;YAE5C,IAAI,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;gBACxB,MAAM,WAAW,GAAG,QAAQ,CAAC,CAAC,CAAC,GAAG,QAAQ,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC;gBACxE,aAAa,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;YACvC,CAAC;iBAAM,IAAI,KAAK,CAAC,MAAM,EAAE,IAAI,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;gBACxD,IAAI,CAAC;oBACH,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;oBACnD,MAAM,MAAM,GAAG,IAAA,qBAAM,EAAC,OAAO,CAAC,CAAC;oBAC/B,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAoB,CAAC;oBAE7C,2DAA2D;oBAC3D,IAAI,CAAC,QAAQ,CAAC,QAAQ,IAAI,QAAQ,EAAE,CAAC;wBACnC,QAAQ,CAAC,QAAQ,GAAG,QAAQ,CAAC;oBAC/B,CAAC;oBAED,2CAA2C;oBAC3C,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;wBACjB,MAAM,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;wBACxD,QAAQ,CAAC,EAAE,GAAG,YAAY,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;oBACtE,CAAC;oBAED,KAAK,CAAC,IAAI,CAAC;wBACT,QAAQ;wBACR,OAAO,EAAE,MAAM,CAAC,OAAO;wBACvB,QAAQ,EAAE,QAAQ;qBACnB,CAAC,CAAC;gBACL,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,OAAO,CAAC,KAAK,CAAC,sBAAsB,QAAQ,GAAG,EAAE,KAAK,CAAC,CAAC;gBAC1D,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,aAAa,CAAC,SAAS,CAAC,CAAC;IAEzB,gBAAgB;IAChB,IAAI,QAAQ,GAAG,KAAK,CAAC;IAErB,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;QACnB,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IACxE,CAAC;IAED,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;QACrB,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAC7B,CAAC,CAAC,QAAQ,CAAC,QAAQ,KAAK,OAAO,CAAC,QAAQ;YACxC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,QAAQ,GAAG,GAAG,CAAC,CACjD,CAAC;IACJ,CAAC;IAED,OAAO;IACP,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;QACjB,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;YACrB,QAAQ,OAAO,CAAC,IAAI,EAAE,CAAC;gBACrB,KAAK,MAAM;oBACT,OAAO,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;gBACpD,KAAK,SAAS;oBACZ,MAAM,QAAQ,GAAG,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;oBACjF,MAAM,QAAQ,GAAG,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;oBACjF,OAAO,QAAQ,GAAG,QAAQ,CAAC;gBAC7B,KAAK,SAAS;oBACZ,MAAM,QAAQ,GAAG,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;oBACjF,MAAM,QAAQ,GAAG,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;oBACjF,OAAO,QAAQ,GAAG,QAAQ,CAAC;gBAC7B;oBACE,OAAO,CAAC,CAAC;YACb,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED;;GAEG;AACH,SAAgB,OAAO,CAAC,MAAc;IACpC,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,MAAM,KAAK,CAAC,CAAC;IAEtD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC7B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QACnD,MAAM,MAAM,GAAG,IAAA,qBAAM,EAAC,OAAO,CAAC,CAAC;QAC/B,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAoB,CAAC;QAE7C,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,QAAQ,CAAC,EAAE,GAAG,MAAM,CAAC;QACvB,CAAC;QAED,OAAO;YACL,QAAQ;YACR,OAAO,EAAE,MAAM,CAAC,OAAO;YACvB,QAAQ,EAAE,QAAQ;SACnB,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,sBAAsB,MAAM,GAAG,EAAE,KAAK,CAAC,CAAC;QACtD,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED;;GAEG;AACH,SAAgB,UAAU,CACxB,MAAc,EACd,UAKI,EAAE;IAEN,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,MAAM,KAAK,CAAC,CAAC;IAEtD,+BAA+B;IAC/B,IAAI,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC5B,MAAM,IAAI,KAAK,CAAC,wBAAwB,MAAM,EAAE,CAAC,CAAC;IACpD,CAAC;IAED,0BAA0B;IAC1B,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IACvC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;QAC5B,EAAE,CAAC,SAAS,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC7C,CAAC;IAED,kBAAkB;IAClB,MAAM,QAAQ,GAAiB;QAC7B,EAAE,EAAE,MAAM;QACV,KAAK,EAAE,OAAO,CAAC,KAAK,IAAI,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,IAAI,MAAM;QACzD,MAAM,EAAE,OAAO,CAAC,MAAM,IAAI,OAAO;QACjC,OAAO,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QACjC,OAAO,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;KAClC,CAAC;IAEF,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;QACxB,QAAQ,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;IAC7C,CAAC;IAED,uBAAuB;IACvB,IAAI,OAAO,GAAG,WAAW,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IAE5C,uBAAuB;IACvB,OAAO,GAAG,OAAO;SACd,OAAO,CAAC,UAAU,EAAE,QAAQ,CAAC,KAAK,IAAI,EAAE,CAAC;SACzC,OAAO,CAAC,gBAAgB,EAAE,OAAO,CAAC,WAAW,IAAI,EAAE,CAAC;SACpD,OAAO,CAAC,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC;IAEhD,+BAA+B;IAC/B,MAAM,WAAW,GAAG,qBAAM,CAAC,SAAS,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IACxD,EAAE,CAAC,aAAa,CAAC,QAAQ,EAAE,WAAW,EAAE,OAAO,CAAC,CAAC;IAEjD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED;;GAEG;AACH,SAAgB,YAAY,CAAC,MAAc,EAAE,UAAgC,EAAE;IAK7E,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,MAAM,QAAQ,GAAa,EAAE,CAAC;IAE9B,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAE7B,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,MAAM,CAAC,IAAI,CAAC,mBAAmB,MAAM,EAAE,CAAC,CAAC;QACzC,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;IAC5C,CAAC;IAED,iCAAiC;IACjC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;QACtB,MAAM,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC;IAC5C,CAAC;IACD,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;QACzB,QAAQ,CAAC,IAAI,CAAC,kCAAkC,CAAC,CAAC;IACpD,CAAC;IACD,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;QAC1B,QAAQ,CAAC,IAAI,CAAC,mCAAmC,CAAC,CAAC;IACrD,CAAC;IAED,qBAAqB;IACrB,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,IAAI,CAAC,CAAC,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,UAAU,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;QAC1G,MAAM,CAAC,IAAI,CAAC,mBAAmB,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;IACzD,CAAC;IAED,gBAAgB;IAChB,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACtD,QAAQ,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;IACzC,CAAC;IAED,4BAA4B;IAC5B,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;IAChG,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAAC;IAEtG,IAAI,CAAC,WAAW,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;QACnC,QAAQ,CAAC,IAAI,CAAC,qCAAqC,CAAC,CAAC;IACvD,CAAC;IACD,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;QAC/B,QAAQ,CAAC,IAAI,CAAC,+CAA+C,CAAC,CAAC;IACjE,CAAC;IAED,gEAAgE;IAChE,IAAI,IAAI,CAAC,QAAQ,CAAC,YAAY,IAAI,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACxE,IAAI,CAAC;YACH,MAAM,EAAE,cAAc,EAAE,GAAG,OAAO,CAAC,qBAAqB,CAAC,CAAC;YAC1D,MAAM,KAAK,GAAG,cAAc,EAAE,CAAC;YAC/B,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YAErD,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,QAAQ,CAAC,YAAY,EAAE,CAAC;gBAChD,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;oBACzB,QAAQ,CAAC,IAAI,CAAC,2BAA2B,MAAM,EAAE,CAAC,CAAC;gBACrD,CAAC;YACH,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,wDAAwD;QAC1D,CAAC;IACH,CAAC;IAED,OAAO;QACL,KAAK,EAAE,MAAM,CAAC,MAAM,KAAK,CAAC;QAC1B,MAAM;QACN,QAAQ;KACT,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,SAAgB,WAAW,CAAC,MAAc,EAAE,MAAe;IACzD,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAE7B,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,MAAM,IAAI,KAAK,CAAC,mBAAmB,MAAM,EAAE,CAAC,CAAC;IAC/C,CAAC;IAED,2BAA2B;IAC3B,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;IAClD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC/B,EAAE,CAAC,SAAS,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAChD,CAAC;IAED,kBAAkB;IAClB,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,UAAU,CAAC;IAClC,IAAI,CAAC,QAAQ,CAAC,OAAO,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAEjD,sBAAsB;IACtB,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;IACrD,MAAM,WAAW,GAAG,qBAAM,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;IAClE,EAAE,CAAC,aAAa,CAAC,WAAW,EAAE,WAAW,EAAE,OAAO,CAAC,CAAC;IAEpD,0BAA0B;IAC1B,MAAM,eAAe,GAAG;QACtB,UAAU,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QACpC,MAAM,EAAE,MAAM,IAAI,UAAU;QAC5B,YAAY,EAAE,IAAI,CAAC,QAAQ;KAC5B,CAAC;IACF,EAAE,CAAC,aAAa,CACd,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,mBAAmB,CAAC,EAC1C,IAAI,CAAC,SAAS,CAAC,eAAe,EAAE,IAAI,EAAE,CAAC,CAAC,EACxC,OAAO,CACR,CAAC;IAEF,uBAAuB;IACvB,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAE7B,OAAO,WAAW,CAAC;AACrB,CAAC;AAED;;GAEG;AACH,SAAS,WAAW,CAAC,YAAqB;IACxC,IAAI,CAAC,YAAY,EAAE,CAAC;QAClB,OAAO;;;;;;;;;;;;;;;;CAgBV,CAAC;IACA,CAAC;IAED,kDAAkD;IAClD,mCAAmC;IACnC,OAAO,WAAW,EAAE,CAAC;AACvB,CAAC;AAED;;GAEG;AACH,SAAgB,YAAY;IAK1B,MAAM,KAAK,GAAG,SAAS,EAAE,CAAC;IAE1B,MAAM,KAAK,GAAG;QACZ,KAAK,EAAE,KAAK,CAAC,MAAM;QACnB,QAAQ,EAAE,EAA4B;QACtC,UAAU,EAAE,EAA4B;KACzC,CAAC;IAEF,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,kBAAkB;QAClB,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,IAAI,SAAS,CAAC;QACjD,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;QAE3D,oBAAoB;QACpB,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,IAAI,eAAe,CAAC;QAC3D,KAAK,CAAC,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;IACrE,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC"}
@@ -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":";AAAA;;;GAGG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEH,uCAAyB;AACzB,2CAA6B;AAyB7B;;GAEG;AACH,MAAa,cAAc;IAIzB;QACE,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;QAC/D,EAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC5C,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,kBAAkB,CAAC,CAAC;QACzD,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,mBAAmB,CAAC,CAAC;IAC5D,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,YAAY;QAChB,MAAM,KAAK,GAAe;YACxB,YAAY,EAAE,CAAC;YACf,aAAa,EAAE,CAAC;YAChB,eAAe,EAAE,CAAC;YAClB,eAAe,EAAE,CAAC;YAClB,aAAa,EAAE,EAAE;YACjB,eAAe,EAAE,EAAE;YACnB,WAAW,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;SACtC,CAAC;QAEF,wBAAwB;QACxB,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,6BAA6B,CAAC,CAAC;QACvE,IAAI,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;YAC9B,MAAM,UAAU,GAAG,EAAE,CAAC,WAAW,CAAC,UAAU,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC;iBACnE,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;iBAC5B,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YAEpB,KAAK,MAAM,QAAQ,IAAI,UAAU,EAAE,CAAC;gBAClC,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;gBACrD,MAAM,OAAO,GAAG,EAAE,CAAC,WAAW,CAAC,YAAY,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC;qBAClE,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;gBAEhC,KAAK,CAAC,aAAa,CAAC,QAAQ,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC;gBAC/C,KAAK,CAAC,YAAY,IAAI,OAAO,CAAC,MAAM,CAAC;YACvC,CAAC;QACH,CAAC;QAED,uBAAuB;QACvB,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,UAAU,EAAE,qBAAqB,CAAC,CAAC;QAC/E,IAAI,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;YAC9B,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC,CAAC;YAChE,KAAK,CAAC,aAAa,GAAG,CAAC,MAAM,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC;QACtD,CAAC;QAED,wBAAwB;QACxB,KAAK,CAAC,eAAe,GAAG,IAAI,CAAC,kBAAkB,CAAC,EAAE,CAAC,CAAC;QAEpD,wCAAwC;QACxC,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;QAC/B,KAAK,CAAC,eAAe,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC;QAC5F,KAAK,CAAC,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,eAAe,GAAG,CAAC,CAAC,CAAC,CAAC,yCAAyC;QAEvG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QACtB,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;OAEG;IACH,WAAW,CAAC,UAAkB,EAAE,UAAkB;QAChD,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;QAE/B,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,CAAC;YACvB,KAAK,CAAC,UAAU,CAAC,GAAG;gBAClB,UAAU;gBACV,UAAU,EAAE,CAAC;gBACb,QAAQ,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;gBAClC,eAAe,EAAE,CAAC;aACnB,CAAC;QACJ,CAAC;QAED,KAAK,CAAC,UAAU,CAAC,CAAC,UAAU,EAAE,CAAC;QAC/B,KAAK,CAAC,UAAU,CAAC,CAAC,QAAQ,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QACtD,KAAK,CAAC,UAAU,CAAC,CAAC,eAAe,IAAI,UAAU,CAAC;QAEhD,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IACxB,CAAC;IAED;;OAEG;IACH,kBAAkB,CAAC,QAAgB,EAAE;QACnC,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;QAC/B,OAAO,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC;aACxB,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,GAAG,CAAC,CAAC,UAAU,CAAC;aAC3C,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC;aACf,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,UAAU,EAAE,UAAU,EAAE,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;IAClE,CAAC;IAED;;OAEG;IACH,cAAc,CAAC,UAAkB;QAC/B,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;QAC/B,OAAO,KAAK,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC;IACnC,CAAC;IAED;;OAEG;IACH,UAAU;QACR,IAAI,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;YAClC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAChC,CAAC;QACD,IAAI,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;YAClC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAChC,CAAC;IACH,CAAC;IAED;;OAEG;IACK,SAAS;QACf,IAAI,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;YAClC,OAAO,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC,CAAC;QAC9D,CAAC;QACD,OAAO,EAAE,CAAC;IACZ,CAAC;IAED;;OAEG;IACK,SAAS,CAAC,KAA4C;QAC5D,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IACnE,CAAC;IAED;;OAEG;IACK,SAAS,CAAC,KAAiB;QACjC,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IACnE,CAAC;CACF;AAzID,wCAyIC"}
@@ -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"}