popeye-cli 1.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 (209) hide show
  1. package/.env.example +25 -0
  2. package/.prettierrc +8 -0
  3. package/README.md +320 -0
  4. package/dist/adapters/claude.d.ts +82 -0
  5. package/dist/adapters/claude.d.ts.map +1 -0
  6. package/dist/adapters/claude.js +230 -0
  7. package/dist/adapters/claude.js.map +1 -0
  8. package/dist/adapters/openai.d.ts +48 -0
  9. package/dist/adapters/openai.d.ts.map +1 -0
  10. package/dist/adapters/openai.js +257 -0
  11. package/dist/adapters/openai.js.map +1 -0
  12. package/dist/auth/claude.d.ts +44 -0
  13. package/dist/auth/claude.d.ts.map +1 -0
  14. package/dist/auth/claude.js +139 -0
  15. package/dist/auth/claude.js.map +1 -0
  16. package/dist/auth/index.d.ts +61 -0
  17. package/dist/auth/index.d.ts.map +1 -0
  18. package/dist/auth/index.js +141 -0
  19. package/dist/auth/index.js.map +1 -0
  20. package/dist/auth/keychain.d.ts +66 -0
  21. package/dist/auth/keychain.d.ts.map +1 -0
  22. package/dist/auth/keychain.js +125 -0
  23. package/dist/auth/keychain.js.map +1 -0
  24. package/dist/auth/openai-entry.d.ts +9 -0
  25. package/dist/auth/openai-entry.d.ts.map +1 -0
  26. package/dist/auth/openai-entry.js +410 -0
  27. package/dist/auth/openai-entry.js.map +1 -0
  28. package/dist/auth/openai.d.ts +71 -0
  29. package/dist/auth/openai.d.ts.map +1 -0
  30. package/dist/auth/openai.js +212 -0
  31. package/dist/auth/openai.js.map +1 -0
  32. package/dist/auth/server.d.ts +32 -0
  33. package/dist/auth/server.d.ts.map +1 -0
  34. package/dist/auth/server.js +213 -0
  35. package/dist/auth/server.js.map +1 -0
  36. package/dist/cli/commands/auth.d.ts +10 -0
  37. package/dist/cli/commands/auth.d.ts.map +1 -0
  38. package/dist/cli/commands/auth.js +162 -0
  39. package/dist/cli/commands/auth.js.map +1 -0
  40. package/dist/cli/commands/config.d.ts +10 -0
  41. package/dist/cli/commands/config.d.ts.map +1 -0
  42. package/dist/cli/commands/config.js +215 -0
  43. package/dist/cli/commands/config.js.map +1 -0
  44. package/dist/cli/commands/create.d.ts +10 -0
  45. package/dist/cli/commands/create.d.ts.map +1 -0
  46. package/dist/cli/commands/create.js +240 -0
  47. package/dist/cli/commands/create.js.map +1 -0
  48. package/dist/cli/commands/index.d.ts +10 -0
  49. package/dist/cli/commands/index.d.ts.map +1 -0
  50. package/dist/cli/commands/index.js +10 -0
  51. package/dist/cli/commands/index.js.map +1 -0
  52. package/dist/cli/commands/resume.d.ts +18 -0
  53. package/dist/cli/commands/resume.d.ts.map +1 -0
  54. package/dist/cli/commands/resume.js +241 -0
  55. package/dist/cli/commands/resume.js.map +1 -0
  56. package/dist/cli/commands/status.d.ts +18 -0
  57. package/dist/cli/commands/status.d.ts.map +1 -0
  58. package/dist/cli/commands/status.js +154 -0
  59. package/dist/cli/commands/status.js.map +1 -0
  60. package/dist/cli/index.d.ts +17 -0
  61. package/dist/cli/index.d.ts.map +1 -0
  62. package/dist/cli/index.js +71 -0
  63. package/dist/cli/index.js.map +1 -0
  64. package/dist/cli/interactive.d.ts +9 -0
  65. package/dist/cli/interactive.d.ts.map +1 -0
  66. package/dist/cli/interactive.js +330 -0
  67. package/dist/cli/interactive.js.map +1 -0
  68. package/dist/cli/output.d.ts +182 -0
  69. package/dist/cli/output.d.ts.map +1 -0
  70. package/dist/cli/output.js +355 -0
  71. package/dist/cli/output.js.map +1 -0
  72. package/dist/config/defaults.d.ts +57 -0
  73. package/dist/config/defaults.d.ts.map +1 -0
  74. package/dist/config/defaults.js +103 -0
  75. package/dist/config/defaults.js.map +1 -0
  76. package/dist/config/index.d.ts +138 -0
  77. package/dist/config/index.d.ts.map +1 -0
  78. package/dist/config/index.js +244 -0
  79. package/dist/config/index.js.map +1 -0
  80. package/dist/config/schema.d.ts +220 -0
  81. package/dist/config/schema.d.ts.map +1 -0
  82. package/dist/config/schema.js +141 -0
  83. package/dist/config/schema.js.map +1 -0
  84. package/dist/generators/index.d.ts +101 -0
  85. package/dist/generators/index.d.ts.map +1 -0
  86. package/dist/generators/index.js +200 -0
  87. package/dist/generators/index.js.map +1 -0
  88. package/dist/generators/python.d.ts +48 -0
  89. package/dist/generators/python.d.ts.map +1 -0
  90. package/dist/generators/python.js +262 -0
  91. package/dist/generators/python.js.map +1 -0
  92. package/dist/generators/templates/index.d.ts +6 -0
  93. package/dist/generators/templates/index.d.ts.map +1 -0
  94. package/dist/generators/templates/index.js +6 -0
  95. package/dist/generators/templates/index.js.map +1 -0
  96. package/dist/generators/templates/python.d.ts +53 -0
  97. package/dist/generators/templates/python.d.ts.map +1 -0
  98. package/dist/generators/templates/python.js +454 -0
  99. package/dist/generators/templates/python.js.map +1 -0
  100. package/dist/generators/templates/typescript.d.ts +53 -0
  101. package/dist/generators/templates/typescript.d.ts.map +1 -0
  102. package/dist/generators/templates/typescript.js +394 -0
  103. package/dist/generators/templates/typescript.js.map +1 -0
  104. package/dist/generators/typescript.d.ts +64 -0
  105. package/dist/generators/typescript.d.ts.map +1 -0
  106. package/dist/generators/typescript.js +271 -0
  107. package/dist/generators/typescript.js.map +1 -0
  108. package/dist/index.d.ts +7 -0
  109. package/dist/index.d.ts.map +1 -0
  110. package/dist/index.js +12 -0
  111. package/dist/index.js.map +1 -0
  112. package/dist/state/index.d.ts +168 -0
  113. package/dist/state/index.d.ts.map +1 -0
  114. package/dist/state/index.js +338 -0
  115. package/dist/state/index.js.map +1 -0
  116. package/dist/state/persistence.d.ts +91 -0
  117. package/dist/state/persistence.d.ts.map +1 -0
  118. package/dist/state/persistence.js +201 -0
  119. package/dist/state/persistence.js.map +1 -0
  120. package/dist/types/cli.d.ts +132 -0
  121. package/dist/types/cli.d.ts.map +1 -0
  122. package/dist/types/cli.js +17 -0
  123. package/dist/types/cli.js.map +1 -0
  124. package/dist/types/consensus.d.ts +111 -0
  125. package/dist/types/consensus.d.ts.map +1 -0
  126. package/dist/types/consensus.js +29 -0
  127. package/dist/types/consensus.js.map +1 -0
  128. package/dist/types/index.d.ts +9 -0
  129. package/dist/types/index.d.ts.map +1 -0
  130. package/dist/types/index.js +13 -0
  131. package/dist/types/index.js.map +1 -0
  132. package/dist/types/project.d.ts +73 -0
  133. package/dist/types/project.d.ts.map +1 -0
  134. package/dist/types/project.js +55 -0
  135. package/dist/types/project.js.map +1 -0
  136. package/dist/types/workflow.d.ts +236 -0
  137. package/dist/types/workflow.d.ts.map +1 -0
  138. package/dist/types/workflow.js +74 -0
  139. package/dist/types/workflow.js.map +1 -0
  140. package/dist/workflow/consensus.d.ts +89 -0
  141. package/dist/workflow/consensus.d.ts.map +1 -0
  142. package/dist/workflow/consensus.js +220 -0
  143. package/dist/workflow/consensus.js.map +1 -0
  144. package/dist/workflow/execution-mode.d.ts +82 -0
  145. package/dist/workflow/execution-mode.d.ts.map +1 -0
  146. package/dist/workflow/execution-mode.js +346 -0
  147. package/dist/workflow/execution-mode.js.map +1 -0
  148. package/dist/workflow/index.d.ts +110 -0
  149. package/dist/workflow/index.d.ts.map +1 -0
  150. package/dist/workflow/index.js +283 -0
  151. package/dist/workflow/index.js.map +1 -0
  152. package/dist/workflow/plan-mode.d.ts +83 -0
  153. package/dist/workflow/plan-mode.d.ts.map +1 -0
  154. package/dist/workflow/plan-mode.js +241 -0
  155. package/dist/workflow/plan-mode.js.map +1 -0
  156. package/dist/workflow/test-runner.d.ts +87 -0
  157. package/dist/workflow/test-runner.d.ts.map +1 -0
  158. package/dist/workflow/test-runner.js +273 -0
  159. package/dist/workflow/test-runner.js.map +1 -0
  160. package/eslint.config.js +25 -0
  161. package/package.json +66 -0
  162. package/src/adapters/claude.ts +298 -0
  163. package/src/adapters/openai.ts +300 -0
  164. package/src/auth/claude.ts +166 -0
  165. package/src/auth/index.ts +171 -0
  166. package/src/auth/keychain.ts +138 -0
  167. package/src/auth/openai-entry.ts +410 -0
  168. package/src/auth/openai.ts +260 -0
  169. package/src/auth/server.ts +252 -0
  170. package/src/cli/commands/auth.ts +194 -0
  171. package/src/cli/commands/config.ts +241 -0
  172. package/src/cli/commands/create.ts +308 -0
  173. package/src/cli/commands/index.ts +10 -0
  174. package/src/cli/commands/resume.ts +304 -0
  175. package/src/cli/commands/status.ts +189 -0
  176. package/src/cli/index.ts +90 -0
  177. package/src/cli/interactive.ts +418 -0
  178. package/src/cli/output.ts +410 -0
  179. package/src/config/defaults.ts +114 -0
  180. package/src/config/index.ts +315 -0
  181. package/src/config/schema.ts +164 -0
  182. package/src/generators/index.ts +251 -0
  183. package/src/generators/python.ts +318 -0
  184. package/src/generators/templates/index.ts +6 -0
  185. package/src/generators/templates/python.ts +465 -0
  186. package/src/generators/templates/typescript.ts +417 -0
  187. package/src/generators/typescript.ts +340 -0
  188. package/src/index.ts +13 -0
  189. package/src/state/index.ts +454 -0
  190. package/src/state/persistence.ts +230 -0
  191. package/src/types/cli.ts +146 -0
  192. package/src/types/consensus.ts +116 -0
  193. package/src/types/index.ts +64 -0
  194. package/src/types/project.ts +85 -0
  195. package/src/types/workflow.ts +149 -0
  196. package/src/workflow/consensus.ts +299 -0
  197. package/src/workflow/execution-mode.ts +517 -0
  198. package/src/workflow/index.ts +396 -0
  199. package/src/workflow/plan-mode.ts +356 -0
  200. package/src/workflow/test-runner.ts +345 -0
  201. package/tests/adapters/openai.test.ts +145 -0
  202. package/tests/config/config.test.ts +208 -0
  203. package/tests/generators/generators.test.ts +185 -0
  204. package/tests/types/consensus.test.ts +152 -0
  205. package/tests/types/project.test.ts +134 -0
  206. package/tests/workflow/consensus.test.ts +221 -0
  207. package/tests/workflow/test-runner.test.ts +214 -0
  208. package/tsconfig.json +25 -0
  209. package/vitest.config.ts +22 -0
@@ -0,0 +1,271 @@
1
+ /**
2
+ * TypeScript project generator
3
+ * Creates complete TypeScript project scaffolding
4
+ */
5
+ import { promises as fs } from 'node:fs';
6
+ import path from 'node:path';
7
+ import { generatePackageJson, generateTsconfig, generateVitestConfig, generateEslintConfig, generatePrettierrc, generateIndexTs, generateTestFile, generateDockerfile, generateDockerCompose, generateGitignore, generateEnvExample, generateReadme, } from './templates/typescript.js';
8
+ /**
9
+ * Create a directory if it doesn't exist
10
+ */
11
+ async function ensureDir(dirPath) {
12
+ await fs.mkdir(dirPath, { recursive: true });
13
+ }
14
+ /**
15
+ * Write a file with content
16
+ */
17
+ async function writeFile(filePath, content) {
18
+ await fs.writeFile(filePath, content, 'utf-8');
19
+ }
20
+ /**
21
+ * Generate a complete TypeScript project
22
+ *
23
+ * @param spec - Project specification
24
+ * @param outputDir - Output directory
25
+ * @returns Generation result
26
+ */
27
+ export async function generateTypeScriptProject(spec, outputDir) {
28
+ const projectName = spec.name || 'my-project';
29
+ const projectDir = path.join(outputDir, projectName);
30
+ const filesCreated = [];
31
+ try {
32
+ // Create project directory structure
33
+ await ensureDir(projectDir);
34
+ await ensureDir(path.join(projectDir, 'src'));
35
+ await ensureDir(path.join(projectDir, 'tests'));
36
+ await ensureDir(path.join(projectDir, 'data'));
37
+ // Generate and write files
38
+ const files = [
39
+ // Root files
40
+ {
41
+ path: path.join(projectDir, 'package.json'),
42
+ content: generatePackageJson(projectName, spec.idea),
43
+ },
44
+ {
45
+ path: path.join(projectDir, 'tsconfig.json'),
46
+ content: generateTsconfig(),
47
+ },
48
+ {
49
+ path: path.join(projectDir, 'vitest.config.ts'),
50
+ content: generateVitestConfig(),
51
+ },
52
+ {
53
+ path: path.join(projectDir, 'eslint.config.js'),
54
+ content: generateEslintConfig(),
55
+ },
56
+ {
57
+ path: path.join(projectDir, '.prettierrc'),
58
+ content: generatePrettierrc(),
59
+ },
60
+ {
61
+ path: path.join(projectDir, '.gitignore'),
62
+ content: generateGitignore(),
63
+ },
64
+ {
65
+ path: path.join(projectDir, '.env.example'),
66
+ content: generateEnvExample(),
67
+ },
68
+ {
69
+ path: path.join(projectDir, 'README.md'),
70
+ content: generateReadme(projectName, spec.idea),
71
+ },
72
+ {
73
+ path: path.join(projectDir, 'Dockerfile'),
74
+ content: generateDockerfile(projectName),
75
+ },
76
+ {
77
+ path: path.join(projectDir, 'docker-compose.yml'),
78
+ content: generateDockerCompose(projectName),
79
+ },
80
+ // Source files
81
+ {
82
+ path: path.join(projectDir, 'src', 'index.ts'),
83
+ content: generateIndexTs(projectName),
84
+ },
85
+ // Test files
86
+ {
87
+ path: path.join(projectDir, 'tests', 'index.test.ts'),
88
+ content: generateTestFile(projectName),
89
+ },
90
+ // Data placeholder
91
+ {
92
+ path: path.join(projectDir, 'data', '.gitkeep'),
93
+ content: '',
94
+ },
95
+ ];
96
+ // Write all files
97
+ for (const file of files) {
98
+ await writeFile(file.path, file.content);
99
+ filesCreated.push(file.path);
100
+ }
101
+ return {
102
+ success: true,
103
+ projectDir,
104
+ filesCreated,
105
+ };
106
+ }
107
+ catch (error) {
108
+ return {
109
+ success: false,
110
+ projectDir,
111
+ filesCreated,
112
+ error: error instanceof Error ? error.message : 'Unknown error',
113
+ };
114
+ }
115
+ }
116
+ /**
117
+ * Get the list of files that would be generated
118
+ *
119
+ * @param projectName - Project name
120
+ * @returns List of relative file paths
121
+ */
122
+ export function getTypeScriptProjectFiles(_projectName) {
123
+ return [
124
+ 'package.json',
125
+ 'tsconfig.json',
126
+ 'vitest.config.ts',
127
+ 'eslint.config.js',
128
+ '.prettierrc',
129
+ '.gitignore',
130
+ '.env.example',
131
+ 'README.md',
132
+ 'Dockerfile',
133
+ 'docker-compose.yml',
134
+ 'src/index.ts',
135
+ 'tests/index.test.ts',
136
+ 'data/.gitkeep',
137
+ ];
138
+ }
139
+ /**
140
+ * Validate a TypeScript project structure
141
+ *
142
+ * @param projectDir - Project directory
143
+ * @returns Validation result
144
+ */
145
+ export async function validateTypeScriptProject(projectDir) {
146
+ const missingFiles = [];
147
+ const requiredFiles = [
148
+ 'package.json',
149
+ 'tsconfig.json',
150
+ 'README.md',
151
+ 'src',
152
+ 'tests',
153
+ ];
154
+ for (const file of requiredFiles) {
155
+ const filePath = path.join(projectDir, file);
156
+ try {
157
+ await fs.access(filePath);
158
+ }
159
+ catch {
160
+ missingFiles.push(file);
161
+ }
162
+ }
163
+ return {
164
+ valid: missingFiles.length === 0,
165
+ missingFiles,
166
+ };
167
+ }
168
+ /**
169
+ * Add a new TypeScript module to an existing project
170
+ *
171
+ * @param projectDir - Project directory
172
+ * @param moduleName - Module name
173
+ * @returns Files created
174
+ */
175
+ export async function addTypeScriptModule(projectDir, moduleName) {
176
+ const filesCreated = [];
177
+ const srcDir = path.join(projectDir, 'src');
178
+ const moduleDir = path.join(srcDir, moduleName);
179
+ await ensureDir(moduleDir);
180
+ // Create module files
181
+ const indexContent = `/**
182
+ * ${moduleName} module
183
+ */
184
+
185
+ export * from './${moduleName}.js';
186
+ `;
187
+ await writeFile(path.join(moduleDir, 'index.ts'), indexContent);
188
+ filesCreated.push(path.join(moduleDir, 'index.ts'));
189
+ const className = moduleName.charAt(0).toUpperCase() + moduleName.slice(1).replace(/-/g, '');
190
+ const moduleContent = `/**
191
+ * ${moduleName} implementation
192
+ */
193
+
194
+ /**
195
+ * ${className} class
196
+ */
197
+ export class ${className} {
198
+ /**
199
+ * Create a new ${className} instance
200
+ */
201
+ constructor() {
202
+ console.log(\`Initializing \${this.constructor.name}\`);
203
+ }
204
+
205
+ /**
206
+ * Run the ${moduleName} logic
207
+ */
208
+ run(): void {
209
+ throw new Error('Not implemented');
210
+ }
211
+ }
212
+ `;
213
+ await writeFile(path.join(moduleDir, `${moduleName}.ts`), moduleContent);
214
+ filesCreated.push(path.join(moduleDir, `${moduleName}.ts`));
215
+ // Create test file
216
+ const testDir = path.join(projectDir, 'tests');
217
+ const testContent = `import { describe, it, expect } from 'vitest';
218
+ import { ${className} } from '../src/${moduleName}/index.js';
219
+
220
+ describe('${className}', () => {
221
+ it('should create an instance', () => {
222
+ const instance = new ${className}();
223
+ expect(instance).toBeDefined();
224
+ });
225
+
226
+ it('should throw on run (placeholder)', () => {
227
+ const instance = new ${className}();
228
+ expect(() => instance.run()).toThrow('Not implemented');
229
+ });
230
+ });
231
+ `;
232
+ await writeFile(path.join(testDir, `${moduleName}.test.ts`), testContent);
233
+ filesCreated.push(path.join(testDir, `${moduleName}.test.ts`));
234
+ return filesCreated;
235
+ }
236
+ /**
237
+ * Add a dependency to package.json
238
+ *
239
+ * @param projectDir - Project directory
240
+ * @param packageName - Package name
241
+ * @param version - Package version
242
+ * @param dev - Whether it's a dev dependency
243
+ */
244
+ export async function addDependency(projectDir, packageName, version, dev = false) {
245
+ const packageJsonPath = path.join(projectDir, 'package.json');
246
+ const content = await fs.readFile(packageJsonPath, 'utf-8');
247
+ const packageJson = JSON.parse(content);
248
+ const key = dev ? 'devDependencies' : 'dependencies';
249
+ packageJson[key] = packageJson[key] || {};
250
+ packageJson[key][packageName] = version;
251
+ // Sort dependencies
252
+ packageJson[key] = Object.fromEntries(Object.entries(packageJson[key]).sort(([a], [b]) => a.localeCompare(b)));
253
+ await writeFile(packageJsonPath, JSON.stringify(packageJson, null, 2));
254
+ }
255
+ /**
256
+ * Update package.json scripts
257
+ *
258
+ * @param projectDir - Project directory
259
+ * @param scripts - Scripts to add/update
260
+ */
261
+ export async function updateScripts(projectDir, scripts) {
262
+ const packageJsonPath = path.join(projectDir, 'package.json');
263
+ const content = await fs.readFile(packageJsonPath, 'utf-8');
264
+ const packageJson = JSON.parse(content);
265
+ packageJson.scripts = {
266
+ ...packageJson.scripts,
267
+ ...scripts,
268
+ };
269
+ await writeFile(packageJsonPath, JSON.stringify(packageJson, null, 2));
270
+ }
271
+ //# sourceMappingURL=typescript.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"typescript.js","sourceRoot":"","sources":["../../src/generators/typescript.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * Popeye CLI
4
+ * Fully autonomous code generation powered by Claude CLI and OpenAI consensus
5
+ */
6
+ export {};
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA;;;GAGG"}
package/dist/index.js ADDED
@@ -0,0 +1,12 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * Popeye CLI
4
+ * Fully autonomous code generation powered by Claude CLI and OpenAI consensus
5
+ */
6
+ import { runCLI } from './cli/index.js';
7
+ // Run the CLI
8
+ runCLI().catch((error) => {
9
+ console.error('Fatal error:', error);
10
+ process.exit(1);
11
+ });
12
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA;;;GAGG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAExC,cAAc;AACd,MAAM,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;IACvB,OAAO,CAAC,KAAK,CAAC,cAAc,EAAE,KAAK,CAAC,CAAC;IACrC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
@@ -0,0 +1,168 @@
1
+ /**
2
+ * State management module
3
+ * Provides high-level API for managing project state
4
+ */
5
+ import type { ProjectState, Task, Milestone, TaskStatus, WorkflowPhase } from '../types/workflow.js';
6
+ import type { ConsensusIteration } from '../types/consensus.js';
7
+ import type { ProjectSpec } from '../types/project.js';
8
+ export * from './persistence.js';
9
+ /**
10
+ * Create a new project state
11
+ *
12
+ * @param spec - The project specification
13
+ * @param projectDir - The project root directory
14
+ * @returns The newly created project state
15
+ */
16
+ export declare function createProject(spec: ProjectSpec, projectDir: string): Promise<ProjectState>;
17
+ /**
18
+ * Load an existing project
19
+ *
20
+ * @param projectDir - The project root directory
21
+ * @returns The project state
22
+ * @throws Error if project doesn't exist
23
+ */
24
+ export declare function loadProject(projectDir: string): Promise<ProjectState>;
25
+ /**
26
+ * Check if a project exists at the given directory
27
+ *
28
+ * @param projectDir - The project root directory
29
+ * @returns True if project exists
30
+ */
31
+ export declare function projectExists(projectDir: string): Promise<boolean>;
32
+ /**
33
+ * Update project state with partial updates
34
+ *
35
+ * @param projectDir - The project root directory
36
+ * @param updates - Partial state updates
37
+ * @returns The updated state
38
+ */
39
+ export declare function updateState(projectDir: string, updates: Partial<ProjectState>): Promise<ProjectState>;
40
+ /**
41
+ * Set the current workflow phase
42
+ *
43
+ * @param projectDir - The project root directory
44
+ * @param phase - The new phase
45
+ * @returns The updated state
46
+ */
47
+ export declare function setPhase(projectDir: string, phase: WorkflowPhase): Promise<ProjectState>;
48
+ /**
49
+ * Add milestones to the project
50
+ *
51
+ * @param projectDir - The project root directory
52
+ * @param milestones - Milestones to add
53
+ * @returns The updated state
54
+ */
55
+ export declare function addMilestones(projectDir: string, milestones: Omit<Milestone, 'id'>[]): Promise<ProjectState>;
56
+ /**
57
+ * Add tasks to a milestone
58
+ *
59
+ * @param projectDir - The project root directory
60
+ * @param milestoneId - The milestone ID
61
+ * @param tasks - Tasks to add
62
+ * @returns The updated state
63
+ */
64
+ export declare function addTasks(projectDir: string, milestoneId: string, tasks: Omit<Task, 'id' | 'status' | 'testsPassed'>[]): Promise<ProjectState>;
65
+ /**
66
+ * Update a task's status
67
+ *
68
+ * @param projectDir - The project root directory
69
+ * @param taskId - The task ID
70
+ * @param status - The new status
71
+ * @param additionalUpdates - Additional task updates
72
+ * @returns The updated state
73
+ */
74
+ export declare function updateTaskStatus(projectDir: string, taskId: string, status: TaskStatus, additionalUpdates?: Partial<Task>): Promise<ProjectState>;
75
+ /**
76
+ * Set the current milestone being worked on
77
+ *
78
+ * @param projectDir - The project root directory
79
+ * @param milestoneId - The milestone ID (or null)
80
+ * @returns The updated state
81
+ */
82
+ export declare function setCurrentMilestone(projectDir: string, milestoneId: string | null): Promise<ProjectState>;
83
+ /**
84
+ * Set the current task being worked on
85
+ *
86
+ * @param projectDir - The project root directory
87
+ * @param taskId - The task ID (or null)
88
+ * @returns The updated state
89
+ */
90
+ export declare function setCurrentTask(projectDir: string, taskId: string | null): Promise<ProjectState>;
91
+ /**
92
+ * Record a consensus iteration
93
+ *
94
+ * @param projectDir - The project root directory
95
+ * @param iteration - The consensus iteration to record
96
+ * @returns The updated state
97
+ */
98
+ export declare function recordConsensusIteration(projectDir: string, iteration: ConsensusIteration): Promise<ProjectState>;
99
+ /**
100
+ * Store the approved plan
101
+ *
102
+ * @param projectDir - The project root directory
103
+ * @param plan - The approved plan content
104
+ * @returns The updated state
105
+ */
106
+ export declare function storePlan(projectDir: string, plan: string): Promise<ProjectState>;
107
+ /**
108
+ * Store the expanded specification
109
+ *
110
+ * @param projectDir - The project root directory
111
+ * @param specification - The expanded specification
112
+ * @returns The updated state
113
+ */
114
+ export declare function storeSpecification(projectDir: string, specification: string): Promise<ProjectState>;
115
+ /**
116
+ * Mark the project as complete
117
+ *
118
+ * @param projectDir - The project root directory
119
+ * @returns The updated state
120
+ */
121
+ export declare function completeProject(projectDir: string): Promise<ProjectState>;
122
+ /**
123
+ * Mark the project as failed
124
+ *
125
+ * @param projectDir - The project root directory
126
+ * @param error - The error message
127
+ * @returns The updated state
128
+ */
129
+ export declare function failProject(projectDir: string, error: string): Promise<ProjectState>;
130
+ /**
131
+ * Get project progress summary
132
+ *
133
+ * @param projectDir - The project root directory
134
+ * @returns Progress summary
135
+ */
136
+ export declare function getProgress(projectDir: string): Promise<{
137
+ totalMilestones: number;
138
+ completedMilestones: number;
139
+ totalTasks: number;
140
+ completedTasks: number;
141
+ percentComplete: number;
142
+ }>;
143
+ /**
144
+ * Get the next pending task
145
+ *
146
+ * @param projectDir - The project root directory
147
+ * @returns The next task to work on, or null if none
148
+ */
149
+ export declare function getNextTask(projectDir: string): Promise<{
150
+ milestone: Milestone;
151
+ task: Task;
152
+ } | null>;
153
+ /**
154
+ * Reset project to a specific phase
155
+ *
156
+ * @param projectDir - The project root directory
157
+ * @param phase - The phase to reset to
158
+ * @returns The updated state
159
+ */
160
+ export declare function resetToPhase(projectDir: string, phase: WorkflowPhase): Promise<ProjectState>;
161
+ /**
162
+ * Delete a project
163
+ *
164
+ * @param projectDir - The project root directory
165
+ * @returns True if project was deleted
166
+ */
167
+ export declare function deleteProject(projectDir: string): Promise<boolean>;
168
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/state/index.ts"],"names":[],"mappings":"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"}