@hivehub/rulebook 3.3.1 โ†’ 4.0.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 (162) hide show
  1. package/.claude/commands/continue.md +33 -0
  2. package/.claude-plugin/marketplace.json +28 -29
  3. package/.claude-plugin/plugin.json +8 -8
  4. package/README.md +32 -144
  5. package/dist/agents/ralph-parser.d.ts +44 -5
  6. package/dist/agents/ralph-parser.d.ts.map +1 -1
  7. package/dist/agents/ralph-parser.js +218 -26
  8. package/dist/agents/ralph-parser.js.map +1 -1
  9. package/dist/cli/commands.d.ts +65 -0
  10. package/dist/cli/commands.d.ts.map +1 -1
  11. package/dist/cli/commands.js +841 -175
  12. package/dist/cli/commands.js.map +1 -1
  13. package/dist/core/agent-manager.d.ts +12 -32
  14. package/dist/core/agent-manager.d.ts.map +1 -1
  15. package/dist/core/agent-manager.js +150 -220
  16. package/dist/core/agent-manager.js.map +1 -1
  17. package/dist/core/claude-mcp.d.ts +17 -0
  18. package/dist/core/claude-mcp.d.ts.map +1 -1
  19. package/dist/core/claude-mcp.js +90 -6
  20. package/dist/core/claude-mcp.js.map +1 -1
  21. package/dist/core/cli-bridge.js +1 -1
  22. package/dist/core/cli-bridge.js.map +1 -1
  23. package/dist/core/config-manager.d.ts.map +1 -1
  24. package/dist/core/config-manager.js +40 -0
  25. package/dist/core/config-manager.js.map +1 -1
  26. package/dist/core/cursor-mdc-generator.d.ts +30 -0
  27. package/dist/core/cursor-mdc-generator.d.ts.map +1 -0
  28. package/dist/core/cursor-mdc-generator.js +98 -0
  29. package/dist/core/cursor-mdc-generator.js.map +1 -0
  30. package/dist/core/detector.d.ts +25 -1
  31. package/dist/core/detector.d.ts.map +1 -1
  32. package/dist/core/detector.js +321 -1
  33. package/dist/core/detector.js.map +1 -1
  34. package/dist/core/generator.d.ts +10 -0
  35. package/dist/core/generator.d.ts.map +1 -1
  36. package/dist/core/generator.js +182 -9
  37. package/dist/core/generator.js.map +1 -1
  38. package/dist/core/github-issues-importer.d.ts +82 -0
  39. package/dist/core/github-issues-importer.d.ts.map +1 -0
  40. package/dist/core/github-issues-importer.js +161 -0
  41. package/dist/core/github-issues-importer.js.map +1 -0
  42. package/dist/core/health-scorer.d.ts +39 -0
  43. package/dist/core/health-scorer.d.ts.map +1 -1
  44. package/dist/core/health-scorer.js +256 -13
  45. package/dist/core/health-scorer.js.map +1 -1
  46. package/dist/core/iteration-tracker.d.ts +28 -0
  47. package/dist/core/iteration-tracker.d.ts.map +1 -1
  48. package/dist/core/iteration-tracker.js +86 -0
  49. package/dist/core/iteration-tracker.js.map +1 -1
  50. package/dist/core/logger.js +1 -1
  51. package/dist/core/logger.js.map +1 -1
  52. package/dist/core/migrator.js +1 -1
  53. package/dist/core/migrator.js.map +1 -1
  54. package/dist/core/modern-console.d.ts +1 -2
  55. package/dist/core/modern-console.d.ts.map +1 -1
  56. package/dist/core/modern-console.js +6 -18
  57. package/dist/core/modern-console.js.map +1 -1
  58. package/dist/core/multi-tool-generator.d.ts +59 -0
  59. package/dist/core/multi-tool-generator.d.ts.map +1 -0
  60. package/dist/core/multi-tool-generator.js +157 -0
  61. package/dist/core/multi-tool-generator.js.map +1 -0
  62. package/dist/core/override-manager.d.ts +23 -0
  63. package/dist/core/override-manager.d.ts.map +1 -0
  64. package/dist/core/override-manager.js +82 -0
  65. package/dist/core/override-manager.js.map +1 -0
  66. package/dist/core/plans-manager.d.ts +46 -0
  67. package/dist/core/plans-manager.d.ts.map +1 -0
  68. package/dist/core/plans-manager.js +158 -0
  69. package/dist/core/plans-manager.js.map +1 -0
  70. package/dist/core/prd-generator.d.ts +12 -0
  71. package/dist/core/prd-generator.d.ts.map +1 -1
  72. package/dist/core/prd-generator.js +91 -2
  73. package/dist/core/prd-generator.js.map +1 -1
  74. package/dist/core/ralph-manager.d.ts +81 -1
  75. package/dist/core/ralph-manager.d.ts.map +1 -1
  76. package/dist/core/ralph-manager.js +214 -4
  77. package/dist/core/ralph-manager.js.map +1 -1
  78. package/dist/core/ralph-parallel.d.ts +55 -0
  79. package/dist/core/ralph-parallel.d.ts.map +1 -0
  80. package/dist/core/ralph-parallel.js +201 -0
  81. package/dist/core/ralph-parallel.js.map +1 -0
  82. package/dist/core/ralph-plan-checkpoint.d.ts +58 -0
  83. package/dist/core/ralph-plan-checkpoint.d.ts.map +1 -0
  84. package/dist/core/ralph-plan-checkpoint.js +154 -0
  85. package/dist/core/ralph-plan-checkpoint.js.map +1 -0
  86. package/dist/core/ralph-scripts.d.ts +12 -0
  87. package/dist/core/ralph-scripts.d.ts.map +1 -0
  88. package/dist/core/ralph-scripts.js +49 -0
  89. package/dist/core/ralph-scripts.js.map +1 -0
  90. package/dist/core/review-manager.d.ts +74 -0
  91. package/dist/core/review-manager.d.ts.map +1 -0
  92. package/dist/core/review-manager.js +371 -0
  93. package/dist/core/review-manager.js.map +1 -0
  94. package/dist/core/task-manager.d.ts +1 -1
  95. package/dist/core/task-manager.js +1 -1
  96. package/dist/core/workflow-generator.js +1 -1
  97. package/dist/core/workflow-generator.js.map +1 -1
  98. package/dist/index.js +96 -4
  99. package/dist/index.js.map +1 -1
  100. package/dist/mcp/rulebook-server.d.ts.map +1 -1
  101. package/dist/mcp/rulebook-server.js +300 -164
  102. package/dist/mcp/rulebook-server.js.map +1 -1
  103. package/dist/memory/memory-store.d.ts.map +1 -1
  104. package/dist/memory/memory-store.js +4 -0
  105. package/dist/memory/memory-store.js.map +1 -1
  106. package/dist/types.d.ts +55 -34
  107. package/dist/types.d.ts.map +1 -1
  108. package/package.json +1 -1
  109. package/templates/agents/implementer.md +35 -0
  110. package/templates/agents/researcher.md +34 -0
  111. package/templates/agents/team-lead.md +34 -0
  112. package/templates/agents/tester.md +42 -0
  113. package/templates/ci/rulebook-review.yml +26 -0
  114. package/templates/core/AGENTS_LEAN.md +25 -0
  115. package/templates/core/AGENTS_OVERRIDE.md +16 -0
  116. package/templates/core/MULTI_AGENT.md +74 -0
  117. package/templates/core/PLANS.md +28 -0
  118. package/templates/core/RALPH.md +45 -4
  119. package/templates/ides/CONTINUE_RULES.md +16 -0
  120. package/templates/ides/COPILOT_INSTRUCTIONS.md +23 -0
  121. package/templates/ides/GEMINI_RULES.md +17 -0
  122. package/templates/ides/WINDSURF_RULES.md +14 -0
  123. package/templates/ides/cursor-mdc/go.mdc +24 -0
  124. package/templates/ides/cursor-mdc/python.mdc +24 -0
  125. package/templates/ides/cursor-mdc/quality.mdc +25 -0
  126. package/templates/ides/cursor-mdc/ralph.mdc +39 -0
  127. package/templates/ides/cursor-mdc/rulebook.mdc +38 -0
  128. package/templates/ides/cursor-mdc/rust.mdc +24 -0
  129. package/templates/ides/cursor-mdc/typescript.mdc +25 -0
  130. package/templates/modules/sequential-thinking.md +42 -0
  131. package/templates/ralph/ralph-history.bat +4 -0
  132. package/templates/ralph/ralph-history.sh +5 -0
  133. package/templates/ralph/ralph-init.bat +5 -0
  134. package/templates/ralph/ralph-init.sh +5 -0
  135. package/templates/ralph/ralph-pause.bat +5 -0
  136. package/templates/ralph/ralph-pause.sh +5 -0
  137. package/templates/ralph/ralph-run.bat +5 -0
  138. package/templates/ralph/ralph-run.sh +5 -0
  139. package/templates/ralph/ralph-status.bat +4 -0
  140. package/templates/ralph/ralph-status.sh +5 -0
  141. package/templates/services/DATADOG.md +26 -0
  142. package/templates/services/DOCKER.md +124 -0
  143. package/templates/services/DOCKER_COMPOSE.md +168 -0
  144. package/templates/services/HELM.md +194 -0
  145. package/templates/services/KUBERNETES.md +208 -0
  146. package/templates/services/OPENTELEMETRY.md +25 -0
  147. package/templates/services/PINO.md +24 -0
  148. package/templates/services/PROMETHEUS.md +33 -0
  149. package/templates/services/SENTRY.md +23 -0
  150. package/templates/services/WINSTON.md +30 -0
  151. package/dist/core/openspec-manager.d.ts +0 -133
  152. package/dist/core/openspec-manager.d.ts.map +0 -1
  153. package/dist/core/openspec-manager.js +0 -596
  154. package/dist/core/openspec-manager.js.map +0 -1
  155. package/dist/core/openspec-migrator.d.ts +0 -27
  156. package/dist/core/openspec-migrator.d.ts.map +0 -1
  157. package/dist/core/openspec-migrator.js +0 -262
  158. package/dist/core/openspec-migrator.js.map +0 -1
  159. package/dist/core/test-task-manager.d.ts +0 -49
  160. package/dist/core/test-task-manager.d.ts.map +0 -1
  161. package/dist/core/test-task-manager.js +0 -121
  162. package/dist/core/test-task-manager.js.map +0 -1
@@ -1,262 +0,0 @@
1
- import { existsSync, readdirSync, mkdirSync } from 'fs';
2
- import { join } from 'path';
3
- import { fileExists, readFile, writeFile } from '../utils/file-system.js';
4
- import { createTaskManager } from './task-manager.js';
5
- const OPENSPEC_DIR = 'openspec';
6
- const CHANGES_DIR = 'changes';
7
- const SPECS_DIR = 'specs';
8
- const TASKS_FILE = 'tasks.md';
9
- const PROPOSAL_FILE = 'proposal.md';
10
- const DESIGN_FILE = 'design.md';
11
- /**
12
- * Migrate OpenSpec tasks to Rulebook format
13
- */
14
- export async function migrateOpenSpecToRulebook(projectRoot, rulebookDir = '.rulebook') {
15
- const result = {
16
- migrated: 0,
17
- skipped: 0,
18
- errors: [],
19
- migratedTasks: [],
20
- };
21
- const openspecPath = join(projectRoot, OPENSPEC_DIR);
22
- const changesPath = join(openspecPath, CHANGES_DIR);
23
- // Check if OpenSpec directory exists
24
- if (!existsSync(changesPath)) {
25
- return result; // No OpenSpec tasks to migrate
26
- }
27
- // Get all change directories
28
- let changeDirs = [];
29
- try {
30
- changeDirs = readdirSync(changesPath, { withFileTypes: true })
31
- .filter((dirent) => dirent.isDirectory())
32
- .map((dirent) => dirent.name);
33
- }
34
- catch (error) {
35
- result.errors.push(`Failed to read OpenSpec changes directory: ${error.message}`);
36
- return result;
37
- }
38
- if (changeDirs.length === 0) {
39
- return result; // No tasks to migrate
40
- }
41
- // Initialize TaskManager
42
- const taskManager = createTaskManager(projectRoot, rulebookDir);
43
- await taskManager.initialize();
44
- // Migrate each task
45
- for (const changeDir of changeDirs) {
46
- const taskId = changeDir; // Use directory name as task ID
47
- const sourceTaskPath = join(changesPath, changeDir);
48
- const targetTaskPath = join(projectRoot, rulebookDir, 'tasks', taskId);
49
- try {
50
- // Check if task already exists in Rulebook
51
- if (existsSync(targetTaskPath)) {
52
- result.skipped++;
53
- continue;
54
- }
55
- // Create target directory
56
- mkdirSync(targetTaskPath, { recursive: true });
57
- mkdirSync(join(targetTaskPath, SPECS_DIR), { recursive: true });
58
- // Migrate proposal.md
59
- const proposalSource = join(sourceTaskPath, PROPOSAL_FILE);
60
- if (await fileExists(proposalSource)) {
61
- const proposalContent = await readFile(proposalSource);
62
- await writeFile(join(targetTaskPath, PROPOSAL_FILE), proposalContent);
63
- }
64
- // Migrate tasks.md
65
- const tasksSource = join(sourceTaskPath, TASKS_FILE);
66
- if (await fileExists(tasksSource)) {
67
- const tasksContent = await readFile(tasksSource);
68
- await writeFile(join(targetTaskPath, TASKS_FILE), tasksContent);
69
- }
70
- // Migrate design.md (if exists)
71
- const designSource = join(sourceTaskPath, DESIGN_FILE);
72
- if (await fileExists(designSource)) {
73
- const designContent = await readFile(designSource);
74
- await writeFile(join(targetTaskPath, DESIGN_FILE), designContent);
75
- }
76
- // Migrate specs
77
- const specsSource = join(sourceTaskPath, SPECS_DIR);
78
- if (existsSync(specsSource)) {
79
- const specDirs = readdirSync(specsSource, { withFileTypes: true })
80
- .filter((dirent) => dirent.isDirectory())
81
- .map((dirent) => dirent.name);
82
- for (const specDir of specDirs) {
83
- const specSource = join(specsSource, specDir, 'spec.md');
84
- if (await fileExists(specSource)) {
85
- const specContent = await readFile(specSource);
86
- const targetSpecDir = join(targetTaskPath, SPECS_DIR, specDir);
87
- mkdirSync(targetSpecDir, { recursive: true });
88
- await writeFile(join(targetSpecDir, 'spec.md'), specContent);
89
- }
90
- }
91
- }
92
- result.migrated++;
93
- result.migratedTasks.push(taskId);
94
- }
95
- catch (error) {
96
- result.errors.push(`Failed to migrate task ${taskId}: ${error.message}`);
97
- result.skipped++;
98
- }
99
- }
100
- return result;
101
- }
102
- /**
103
- * Migrate OpenSpec archived tasks to Rulebook format
104
- */
105
- export async function migrateOpenSpecArchives(projectRoot, rulebookDir = '.rulebook') {
106
- const result = {
107
- migrated: 0,
108
- skipped: 0,
109
- errors: [],
110
- migratedTasks: [],
111
- };
112
- const openspecPath = join(projectRoot, OPENSPEC_DIR);
113
- const archivePath = join(openspecPath, CHANGES_DIR, 'archive');
114
- // Check if OpenSpec archive directory exists
115
- if (!existsSync(archivePath)) {
116
- return result; // No archived tasks to migrate
117
- }
118
- // Get all archived task directories
119
- let archiveDirs = [];
120
- try {
121
- archiveDirs = readdirSync(archivePath, { withFileTypes: true })
122
- .filter((dirent) => dirent.isDirectory())
123
- .map((dirent) => dirent.name);
124
- }
125
- catch (error) {
126
- result.errors.push(`Failed to read OpenSpec archive directory: ${error.message}`);
127
- return result;
128
- }
129
- if (archiveDirs.length === 0) {
130
- return result; // No archived tasks to migrate
131
- }
132
- // Initialize TaskManager
133
- const taskManager = createTaskManager(projectRoot, rulebookDir);
134
- await taskManager.initialize();
135
- // Migrate each archived task
136
- for (const archiveDir of archiveDirs) {
137
- const sourceArchivePath = join(archivePath, archiveDir);
138
- // Preserve archive date prefix (YYYY-MM-DD-task-id format)
139
- const archiveName = archiveDir; // Keep original name with date prefix
140
- const targetArchivePath = join(projectRoot, rulebookDir, 'tasks', 'archive', archiveName);
141
- try {
142
- // Check if archive already exists in Rulebook
143
- if (existsSync(targetArchivePath)) {
144
- result.skipped++;
145
- continue;
146
- }
147
- // Create target archive directory
148
- mkdirSync(targetArchivePath, { recursive: true });
149
- mkdirSync(join(targetArchivePath, SPECS_DIR), { recursive: true });
150
- // Migrate proposal.md
151
- const proposalSource = join(sourceArchivePath, PROPOSAL_FILE);
152
- if (await fileExists(proposalSource)) {
153
- const proposalContent = await readFile(proposalSource);
154
- await writeFile(join(targetArchivePath, PROPOSAL_FILE), proposalContent);
155
- }
156
- // Migrate tasks.md
157
- const tasksSource = join(sourceArchivePath, TASKS_FILE);
158
- if (await fileExists(tasksSource)) {
159
- const tasksContent = await readFile(tasksSource);
160
- await writeFile(join(targetArchivePath, TASKS_FILE), tasksContent);
161
- }
162
- // Migrate design.md (if exists)
163
- const designSource = join(sourceArchivePath, DESIGN_FILE);
164
- if (await fileExists(designSource)) {
165
- const designContent = await readFile(designSource);
166
- await writeFile(join(targetArchivePath, DESIGN_FILE), designContent);
167
- }
168
- // Migrate specs
169
- const specsSource = join(sourceArchivePath, SPECS_DIR);
170
- if (existsSync(specsSource)) {
171
- const specDirs = readdirSync(specsSource, { withFileTypes: true })
172
- .filter((dirent) => dirent.isDirectory())
173
- .map((dirent) => dirent.name);
174
- for (const specDir of specDirs) {
175
- const specSource = join(specsSource, specDir, 'spec.md');
176
- if (await fileExists(specSource)) {
177
- const specContent = await readFile(specSource);
178
- const targetSpecDir = join(targetArchivePath, SPECS_DIR, specDir);
179
- mkdirSync(targetSpecDir, { recursive: true });
180
- await writeFile(join(targetSpecDir, 'spec.md'), specContent);
181
- }
182
- }
183
- }
184
- result.migrated++;
185
- result.migratedTasks.push(archiveName);
186
- }
187
- catch (error) {
188
- result.errors.push(`Failed to migrate archived task ${archiveName}: ${error.message}`);
189
- result.skipped++;
190
- }
191
- }
192
- return result;
193
- }
194
- /**
195
- * Remove /rulebook/specs/OPENSPEC.md if it exists
196
- */
197
- export async function removeOpenSpecRulebookFile(projectRoot, rulebookDir = '.rulebook') {
198
- const { unlink } = await import('fs/promises');
199
- // Check both new specs/ path and legacy flat path
200
- const specsPath = join(projectRoot, rulebookDir, 'specs', 'OPENSPEC.md');
201
- const legacyPath = join(projectRoot, rulebookDir, 'OPENSPEC.md');
202
- let removed = false;
203
- if (await fileExists(specsPath)) {
204
- await unlink(specsPath);
205
- removed = true;
206
- }
207
- if (await fileExists(legacyPath)) {
208
- await unlink(legacyPath);
209
- removed = true;
210
- }
211
- return removed;
212
- }
213
- /**
214
- * Remove OpenSpec commands from .cursor/commands/
215
- */
216
- export async function removeOpenSpecCommands(projectRoot) {
217
- const commandsDir = join(projectRoot, '.cursor', 'commands');
218
- if (!existsSync(commandsDir)) {
219
- return 0;
220
- }
221
- const openspecCommands = ['openspec-proposal.md', 'openspec-archive.md', 'openspec-apply.md'];
222
- let removed = 0;
223
- for (const command of openspecCommands) {
224
- const commandPath = join(commandsDir, command);
225
- if (await fileExists(commandPath)) {
226
- const { unlink } = await import('fs/promises');
227
- await unlink(commandPath);
228
- removed++;
229
- }
230
- }
231
- return removed;
232
- }
233
- /**
234
- * Archive OpenSpec directory (move to archive)
235
- */
236
- export async function archiveOpenSpecDirectory(projectRoot) {
237
- const openspecPath = join(projectRoot, OPENSPEC_DIR);
238
- if (!existsSync(openspecPath)) {
239
- return false;
240
- }
241
- const archiveDate = new Date().toISOString().split('T')[0];
242
- const archivePath = join(projectRoot, `openspec-archive-${archiveDate}`);
243
- try {
244
- // Use mv command to move directory
245
- const { execSync } = await import('child_process');
246
- execSync(`mv "${openspecPath}" "${archivePath}"`, { cwd: projectRoot });
247
- return true;
248
- }
249
- catch {
250
- // Fallback: copy and remove
251
- const { cpSync, rmSync } = await import('fs');
252
- try {
253
- cpSync(openspecPath, archivePath, { recursive: true });
254
- rmSync(openspecPath, { recursive: true, force: true });
255
- return true;
256
- }
257
- catch {
258
- return false;
259
- }
260
- }
261
- }
262
- //# sourceMappingURL=openspec-migrator.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"openspec-migrator.js","sourceRoot":"","sources":["../../src/core/openspec-migrator.ts"],"names":[],"mappings":"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"}
@@ -1,49 +0,0 @@
1
- import { OpenSpecManager } from './openspec-manager.js';
2
- import type { OpenSpecTask } from '../types.js';
3
- /**
4
- * Test Task Manager
5
- * Handles creation and execution of test tasks
6
- */
7
- export declare class TestTaskManager {
8
- private openspecManager;
9
- constructor(openspecManager: OpenSpecManager);
10
- /**
11
- * Create a test task with the given title and description
12
- */
13
- createTestTask(title: string, description: string): Promise<string>;
14
- /**
15
- * Execute a test task
16
- */
17
- executeTestTask(taskId: string): Promise<boolean>;
18
- /**
19
- * Get all test tasks
20
- */
21
- getTestTasks(): Promise<OpenSpecTask[]>;
22
- /**
23
- * Get test task statistics
24
- */
25
- getTestTaskStats(): Promise<{
26
- total: number;
27
- pending: number;
28
- inProgress: number;
29
- completed: number;
30
- failed: number;
31
- }>;
32
- /**
33
- * Run all pending test tasks
34
- */
35
- runAllTestTasks(): Promise<{
36
- passed: number;
37
- failed: number;
38
- total: number;
39
- }>;
40
- /**
41
- * Utility method for delays
42
- */
43
- private delay;
44
- }
45
- /**
46
- * Factory function to create TestTaskManager
47
- */
48
- export declare function createTestTaskManager(openspecManager: OpenSpecManager): TestTaskManager;
49
- //# sourceMappingURL=test-task-manager.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"test-task-manager.d.ts","sourceRoot":"","sources":["../../src/core/test-task-manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAEhD;;;GAGG;AACH,qBAAa,eAAe;IAC1B,OAAO,CAAC,eAAe,CAAkB;gBAE7B,eAAe,EAAE,eAAe;IAI5C;;OAEG;IACG,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAkBzE;;OAEG;IACG,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAoCvD;;OAEG;IACG,YAAY,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;IAO7C;;OAEG;IACG,gBAAgB,IAAI,OAAO,CAAC;QAChC,KAAK,EAAE,MAAM,CAAC;QACd,OAAO,EAAE,MAAM,CAAC;QAChB,UAAU,EAAE,MAAM,CAAC;QACnB,SAAS,EAAE,MAAM,CAAC;QAClB,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC;IAYF;;OAEG;IACG,eAAe,IAAI,OAAO,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IAyBnF;;OAEG;IACH,OAAO,CAAC,KAAK;CAGd;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,eAAe,EAAE,eAAe,GAAG,eAAe,CAEvF"}
@@ -1,121 +0,0 @@
1
- /**
2
- * Test Task Manager
3
- * Handles creation and execution of test tasks
4
- */
5
- export class TestTaskManager {
6
- openspecManager;
7
- constructor(openspecManager) {
8
- this.openspecManager = openspecManager;
9
- }
10
- /**
11
- * Create a test task with the given title and description
12
- */
13
- async createTestTask(title, description) {
14
- const task = {
15
- title,
16
- description,
17
- priority: 1,
18
- status: 'pending',
19
- dependencies: [],
20
- estimatedTime: 30, // 30 minutes estimated
21
- tags: ['test', 'automated'],
22
- metadata: {
23
- type: 'test-task',
24
- createdBy: 'test-task-manager',
25
- },
26
- };
27
- return await this.openspecManager.addTask(task);
28
- }
29
- /**
30
- * Execute a test task
31
- */
32
- async executeTestTask(taskId) {
33
- try {
34
- const task = await this.openspecManager.getTask(taskId);
35
- if (!task) {
36
- throw new Error(`Task ${taskId} not found`);
37
- }
38
- // Update task status to in-progress
39
- await this.openspecManager.updateTaskStatus(taskId, 'in-progress');
40
- // Simulate test execution
41
- console.log(`๐Ÿงช Executing test task: ${task.title}`);
42
- console.log(`๐Ÿ“ Description: ${task.description}`);
43
- // Simulate some work
44
- await this.delay(1000);
45
- // Simulate test results (randomly pass/fail for demo)
46
- const testPassed = Math.random() > 0.3; // 70% success rate
47
- if (testPassed) {
48
- console.log('โœ… Test task completed successfully');
49
- await this.openspecManager.markTaskComplete(taskId);
50
- return true;
51
- }
52
- else {
53
- console.log('โŒ Test task failed');
54
- await this.openspecManager.updateTaskStatus(taskId, 'failed');
55
- return false;
56
- }
57
- }
58
- catch (error) {
59
- console.error('Error executing test task:', error);
60
- await this.openspecManager.updateTaskStatus(taskId, 'failed');
61
- return false;
62
- }
63
- }
64
- /**
65
- * Get all test tasks
66
- */
67
- async getTestTasks() {
68
- const data = await this.openspecManager.loadOpenSpec();
69
- return data.tasks.filter((task) => task.tags.includes('test') || task.metadata?.type === 'test-task');
70
- }
71
- /**
72
- * Get test task statistics
73
- */
74
- async getTestTaskStats() {
75
- const testTasks = await this.getTestTasks();
76
- return {
77
- total: testTasks.length,
78
- pending: testTasks.filter((t) => t.status === 'pending').length,
79
- inProgress: testTasks.filter((t) => t.status === 'in-progress').length,
80
- completed: testTasks.filter((t) => t.status === 'completed').length,
81
- failed: testTasks.filter((t) => t.status === 'failed').length,
82
- };
83
- }
84
- /**
85
- * Run all pending test tasks
86
- */
87
- async runAllTestTasks() {
88
- const testTasks = await this.getTestTasks();
89
- const pendingTasks = testTasks.filter((t) => t.status === 'pending');
90
- let passed = 0;
91
- let failed = 0;
92
- console.log(`๐Ÿš€ Running ${pendingTasks.length} test tasks...`);
93
- for (const task of pendingTasks) {
94
- const success = await this.executeTestTask(task.id);
95
- if (success) {
96
- passed++;
97
- }
98
- else {
99
- failed++;
100
- }
101
- }
102
- return {
103
- passed,
104
- failed,
105
- total: pendingTasks.length,
106
- };
107
- }
108
- /**
109
- * Utility method for delays
110
- */
111
- delay(ms) {
112
- return new Promise((resolve) => setTimeout(resolve, ms));
113
- }
114
- }
115
- /**
116
- * Factory function to create TestTaskManager
117
- */
118
- export function createTestTaskManager(openspecManager) {
119
- return new TestTaskManager(openspecManager);
120
- }
121
- //# sourceMappingURL=test-task-manager.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"test-task-manager.js","sourceRoot":"","sources":["../../src/core/test-task-manager.ts"],"names":[],"mappings":"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"}