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,132 @@
1
+ /**
2
+ * CLI-related type definitions
3
+ * Defines command options, interactive mode state, and output formats
4
+ */
5
+ import type { OutputLanguage, OpenAIModel } from './project.js';
6
+ /**
7
+ * Global CLI options available on all commands
8
+ */
9
+ export interface GlobalOptions {
10
+ verbose: boolean;
11
+ quiet: boolean;
12
+ noColor: boolean;
13
+ }
14
+ /**
15
+ * Options for the `create` command
16
+ */
17
+ export interface CreateOptions extends GlobalOptions {
18
+ language: OutputLanguage;
19
+ openaiModel: OpenAIModel;
20
+ output?: string;
21
+ name?: string;
22
+ }
23
+ /**
24
+ * Options for the `resume` command
25
+ */
26
+ export interface ResumeOptions extends GlobalOptions {
27
+ projectPath: string;
28
+ }
29
+ /**
30
+ * Options for the `status` command
31
+ */
32
+ export interface StatusOptions extends GlobalOptions {
33
+ projectPath?: string;
34
+ json: boolean;
35
+ }
36
+ /**
37
+ * Options for the `auth` command
38
+ */
39
+ export interface AuthOptions extends GlobalOptions {
40
+ service?: 'claude' | 'openai' | 'all';
41
+ }
42
+ /**
43
+ * Options for the `config` command
44
+ */
45
+ export interface ConfigOptions extends GlobalOptions {
46
+ global: boolean;
47
+ }
48
+ /**
49
+ * Authentication status for display
50
+ */
51
+ export interface AuthStatus {
52
+ claude: {
53
+ authenticated: boolean;
54
+ user?: string;
55
+ expires?: string;
56
+ };
57
+ openai: {
58
+ authenticated: boolean;
59
+ keyLastFour?: string;
60
+ modelAccess?: string[];
61
+ };
62
+ }
63
+ /**
64
+ * Interactive mode session state
65
+ */
66
+ export interface InteractiveSession {
67
+ connected: boolean;
68
+ language: OutputLanguage;
69
+ openaiModel: OpenAIModel;
70
+ currentProject?: string;
71
+ history: string[];
72
+ }
73
+ /**
74
+ * Slash command definition for interactive mode
75
+ */
76
+ export interface SlashCommand {
77
+ name: string;
78
+ aliases: string[];
79
+ description: string;
80
+ usage: string;
81
+ handler: (args: string[], session: InteractiveSession) => Promise<void>;
82
+ }
83
+ /**
84
+ * Progress display information
85
+ */
86
+ export interface ProgressInfo {
87
+ phase: string;
88
+ milestone?: number;
89
+ totalMilestones?: number;
90
+ task?: number;
91
+ totalTasks?: number;
92
+ consensusIteration?: number;
93
+ consensusScore?: number;
94
+ status: 'pending' | 'running' | 'success' | 'error';
95
+ message: string;
96
+ }
97
+ /**
98
+ * Console output styles/colors
99
+ */
100
+ export interface OutputStyles {
101
+ primary: string;
102
+ secondary: string;
103
+ success: string;
104
+ warning: string;
105
+ error: string;
106
+ info: string;
107
+ dim: string;
108
+ bold: string;
109
+ }
110
+ /**
111
+ * Banner configuration
112
+ */
113
+ export interface BannerConfig {
114
+ version: string;
115
+ language: OutputLanguage;
116
+ openaiModel: OpenAIModel;
117
+ sessionId?: string;
118
+ }
119
+ /**
120
+ * CLI exit codes
121
+ */
122
+ export declare const EXIT_CODES: {
123
+ readonly SUCCESS: 0;
124
+ readonly ERROR: 1;
125
+ readonly AUTH_REQUIRED: 2;
126
+ readonly INVALID_INPUT: 3;
127
+ readonly CONSENSUS_FAILED: 4;
128
+ readonly TEST_FAILED: 5;
129
+ readonly INTERRUPTED: 130;
130
+ };
131
+ export type ExitCode = (typeof EXIT_CODES)[keyof typeof EXIT_CODES];
132
+ //# sourceMappingURL=cli.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../../src/types/cli.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * CLI-related type definitions
3
+ * Defines command options, interactive mode state, and output formats
4
+ */
5
+ /**
6
+ * CLI exit codes
7
+ */
8
+ export const EXIT_CODES = {
9
+ SUCCESS: 0,
10
+ ERROR: 1,
11
+ AUTH_REQUIRED: 2,
12
+ INVALID_INPUT: 3,
13
+ CONSENSUS_FAILED: 4,
14
+ TEST_FAILED: 5,
15
+ INTERRUPTED: 130,
16
+ };
17
+ //# sourceMappingURL=cli.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/types/cli.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAiIH;;GAEG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG;IACxB,OAAO,EAAE,CAAC;IACV,KAAK,EAAE,CAAC;IACR,aAAa,EAAE,CAAC;IAChB,aAAa,EAAE,CAAC;IAChB,gBAAgB,EAAE,CAAC;IACnB,WAAW,EAAE,CAAC;IACd,WAAW,EAAE,GAAG;CACR,CAAC"}
@@ -0,0 +1,111 @@
1
+ /**
2
+ * Consensus-related type definitions
3
+ * Defines consensus results, iterations, and configuration
4
+ */
5
+ import { z } from 'zod';
6
+ import type { OpenAIModel } from './project.js';
7
+ /**
8
+ * Result of a consensus review from OpenAI
9
+ */
10
+ export interface ConsensusResult {
11
+ score: number;
12
+ analysis: string;
13
+ strengths: string[];
14
+ concerns: string[];
15
+ recommendations: string[];
16
+ approved: boolean;
17
+ rawResponse: string;
18
+ }
19
+ /**
20
+ * Single consensus iteration record
21
+ */
22
+ export interface ConsensusIteration {
23
+ iteration: number;
24
+ plan: string;
25
+ result: ConsensusResult;
26
+ timestamp: string;
27
+ }
28
+ /**
29
+ * Configuration for consensus process
30
+ */
31
+ export interface ConsensusConfig {
32
+ threshold: number;
33
+ maxIterations: number;
34
+ openaiKey: string;
35
+ openaiModel: OpenAIModel;
36
+ escalationAction: 'pause' | 'continue' | 'abort';
37
+ temperature: number;
38
+ maxTokens: number;
39
+ }
40
+ /**
41
+ * Default consensus configuration
42
+ */
43
+ export declare const DEFAULT_CONSENSUS_CONFIG: Omit<ConsensusConfig, 'openaiKey'>;
44
+ /**
45
+ * Zod schema for consensus config validation
46
+ */
47
+ export declare const ConsensusConfigSchema: z.ZodObject<{
48
+ threshold: z.ZodDefault<z.ZodNumber>;
49
+ maxIterations: z.ZodDefault<z.ZodNumber>;
50
+ openaiKey: z.ZodString;
51
+ openaiModel: z.ZodEnum<{
52
+ "gpt-4o": "gpt-4o";
53
+ "gpt-4o-mini": "gpt-4o-mini";
54
+ "gpt-4-turbo": "gpt-4-turbo";
55
+ "o1-preview": "o1-preview";
56
+ "o1-mini": "o1-mini";
57
+ }>;
58
+ escalationAction: z.ZodDefault<z.ZodEnum<{
59
+ abort: "abort";
60
+ pause: "pause";
61
+ continue: "continue";
62
+ }>>;
63
+ temperature: z.ZodDefault<z.ZodNumber>;
64
+ maxTokens: z.ZodDefault<z.ZodNumber>;
65
+ }, z.core.$strip>;
66
+ /**
67
+ * Plan document structure for consensus review
68
+ */
69
+ export interface PlanDocument {
70
+ milestone: number;
71
+ title: string;
72
+ background: string;
73
+ goals: string[];
74
+ useCases: string[];
75
+ risks: string[];
76
+ tasks: {
77
+ id: string;
78
+ description: string;
79
+ acceptanceCriteria: string[];
80
+ dependencies: string[];
81
+ }[];
82
+ testPlan: {
83
+ id: string;
84
+ type: 'unit' | 'integration' | 'e2e';
85
+ description: string;
86
+ setup: string;
87
+ steps: string[];
88
+ expectedResult: string;
89
+ }[];
90
+ summary: string;
91
+ }
92
+ /**
93
+ * Consensus request payload
94
+ */
95
+ export interface ConsensusRequest {
96
+ plan: string;
97
+ context: string;
98
+ previousFeedback?: string;
99
+ iteration: number;
100
+ }
101
+ /**
102
+ * Escalation details when consensus cannot be reached
103
+ */
104
+ export interface EscalationDetails {
105
+ reason: string;
106
+ iterations: ConsensusIteration[];
107
+ lastScore: number;
108
+ unresolvable_concerns: string[];
109
+ suggestedActions: string[];
110
+ }
111
+ //# sourceMappingURL=consensus.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"consensus.d.ts","sourceRoot":"","sources":["../../src/types/consensus.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAEhD;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,QAAQ,EAAE,OAAO,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,eAAe,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,WAAW,CAAC;IACzB,gBAAgB,EAAE,OAAO,GAAG,UAAU,GAAG,OAAO,CAAC;IACjD,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,eAAO,MAAM,wBAAwB,EAAE,IAAI,CAAC,eAAe,EAAE,WAAW,CAOvE,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;iBAQhC,CAAC;AAEH;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,KAAK,EAAE;QACL,EAAE,EAAE,MAAM,CAAC;QACX,WAAW,EAAE,MAAM,CAAC;QACpB,kBAAkB,EAAE,MAAM,EAAE,CAAC;QAC7B,YAAY,EAAE,MAAM,EAAE,CAAC;KACxB,EAAE,CAAC;IACJ,QAAQ,EAAE;QACR,EAAE,EAAE,MAAM,CAAC;QACX,IAAI,EAAE,MAAM,GAAG,aAAa,GAAG,KAAK,CAAC;QACrC,WAAW,EAAE,MAAM,CAAC;QACpB,KAAK,EAAE,MAAM,CAAC;QACd,KAAK,EAAE,MAAM,EAAE,CAAC;QAChB,cAAc,EAAE,MAAM,CAAC;KACxB,EAAE,CAAC;IACJ,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,kBAAkB,EAAE,CAAC;IACjC,SAAS,EAAE,MAAM,CAAC;IAClB,qBAAqB,EAAE,MAAM,EAAE,CAAC;IAChC,gBAAgB,EAAE,MAAM,EAAE,CAAC;CAC5B"}
@@ -0,0 +1,29 @@
1
+ /**
2
+ * Consensus-related type definitions
3
+ * Defines consensus results, iterations, and configuration
4
+ */
5
+ import { z } from 'zod';
6
+ /**
7
+ * Default consensus configuration
8
+ */
9
+ export const DEFAULT_CONSENSUS_CONFIG = {
10
+ threshold: 95,
11
+ maxIterations: 5,
12
+ openaiModel: 'gpt-4o',
13
+ escalationAction: 'pause',
14
+ temperature: 0.3,
15
+ maxTokens: 4096,
16
+ };
17
+ /**
18
+ * Zod schema for consensus config validation
19
+ */
20
+ export const ConsensusConfigSchema = z.object({
21
+ threshold: z.number().min(0).max(100).default(95),
22
+ maxIterations: z.number().min(1).max(10).default(5),
23
+ openaiKey: z.string().min(1),
24
+ openaiModel: z.enum(['gpt-4o', 'gpt-4o-mini', 'gpt-4-turbo', 'o1-preview', 'o1-mini']),
25
+ escalationAction: z.enum(['pause', 'continue', 'abort']).default('pause'),
26
+ temperature: z.number().min(0).max(2).default(0.3),
27
+ maxTokens: z.number().min(100).max(32000).default(4096),
28
+ });
29
+ //# sourceMappingURL=consensus.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"consensus.js","sourceRoot":"","sources":["../../src/types/consensus.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAuCxB;;GAEG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAuC;IAC1E,SAAS,EAAE,EAAE;IACb,aAAa,EAAE,CAAC;IAChB,WAAW,EAAE,QAAQ;IACrB,gBAAgB,EAAE,OAAO;IACzB,WAAW,EAAE,GAAG;IAChB,SAAS,EAAE,IAAI;CAChB,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC5C,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;IACjD,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;IACnD,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC5B,WAAW,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,aAAa,EAAE,aAAa,EAAE,YAAY,EAAE,SAAS,CAAC,CAAC;IACtF,gBAAgB,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC;IACzE,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC;IAClD,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC;CACxD,CAAC,CAAC"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Central type exports for Popeye CLI
3
+ * Re-exports all types from subdirectories for easy importing
4
+ */
5
+ export { OutputLanguageSchema, OpenAIModelSchema, ProjectSpecSchema, OPENAI_MODELS, type OutputLanguage, type OpenAIModel, type ProjectSpec, type GeneratedProject, type GenerationOptions, } from './project.js';
6
+ export { WorkflowPhaseSchema, TaskStatusSchema, ProjectStateSchema, ProjectStatusSchema, TaskSchema, MilestoneSchema, type WorkflowPhase, type ProjectStatus, type TaskStatus, type Task, type Milestone, type ProjectState, type WorkflowEvent, } from './workflow.js';
7
+ export { ConsensusConfigSchema, DEFAULT_CONSENSUS_CONFIG, type ConsensusResult, type ConsensusIteration, type ConsensusConfig, type PlanDocument, type ConsensusRequest, type EscalationDetails, } from './consensus.js';
8
+ export { EXIT_CODES, type GlobalOptions, type CreateOptions, type ResumeOptions, type StatusOptions, type AuthOptions, type ConfigOptions, type AuthStatus, type InteractiveSession, type SlashCommand, type ProgressInfo, type OutputStyles, type BannerConfig, type ExitCode, } from './cli.js';
9
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EACL,oBAAoB,EACpB,iBAAiB,EACjB,iBAAiB,EACjB,aAAa,EACb,KAAK,cAAc,EACnB,KAAK,WAAW,EAChB,KAAK,WAAW,EAChB,KAAK,gBAAgB,EACrB,KAAK,iBAAiB,GACvB,MAAM,cAAc,CAAC;AAGtB,OAAO,EACL,mBAAmB,EACnB,gBAAgB,EAChB,kBAAkB,EAClB,mBAAmB,EACnB,UAAU,EACV,eAAe,EACf,KAAK,aAAa,EAClB,KAAK,aAAa,EAClB,KAAK,UAAU,EACf,KAAK,IAAI,EACT,KAAK,SAAS,EACd,KAAK,YAAY,EACjB,KAAK,aAAa,GACnB,MAAM,eAAe,CAAC;AAGvB,OAAO,EACL,qBAAqB,EACrB,wBAAwB,EACxB,KAAK,eAAe,EACpB,KAAK,kBAAkB,EACvB,KAAK,eAAe,EACpB,KAAK,YAAY,EACjB,KAAK,gBAAgB,EACrB,KAAK,iBAAiB,GACvB,MAAM,gBAAgB,CAAC;AAGxB,OAAO,EACL,UAAU,EACV,KAAK,aAAa,EAClB,KAAK,aAAa,EAClB,KAAK,aAAa,EAClB,KAAK,aAAa,EAClB,KAAK,WAAW,EAChB,KAAK,aAAa,EAClB,KAAK,UAAU,EACf,KAAK,kBAAkB,EACvB,KAAK,YAAY,EACjB,KAAK,YAAY,EACjB,KAAK,YAAY,EACjB,KAAK,YAAY,EACjB,KAAK,QAAQ,GACd,MAAM,UAAU,CAAC"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Central type exports for Popeye CLI
3
+ * Re-exports all types from subdirectories for easy importing
4
+ */
5
+ // Project types
6
+ export { OutputLanguageSchema, OpenAIModelSchema, ProjectSpecSchema, OPENAI_MODELS, } from './project.js';
7
+ // Workflow types
8
+ export { WorkflowPhaseSchema, TaskStatusSchema, ProjectStateSchema, ProjectStatusSchema, TaskSchema, MilestoneSchema, } from './workflow.js';
9
+ // Consensus types
10
+ export { ConsensusConfigSchema, DEFAULT_CONSENSUS_CONFIG, } from './consensus.js';
11
+ // CLI types
12
+ export { EXIT_CODES, } from './cli.js';
13
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,gBAAgB;AAChB,OAAO,EACL,oBAAoB,EACpB,iBAAiB,EACjB,iBAAiB,EACjB,aAAa,GAMd,MAAM,cAAc,CAAC;AAEtB,iBAAiB;AACjB,OAAO,EACL,mBAAmB,EACnB,gBAAgB,EAChB,kBAAkB,EAClB,mBAAmB,EACnB,UAAU,EACV,eAAe,GAQhB,MAAM,eAAe,CAAC;AAEvB,kBAAkB;AAClB,OAAO,EACL,qBAAqB,EACrB,wBAAwB,GAOzB,MAAM,gBAAgB,CAAC;AAExB,YAAY;AACZ,OAAO,EACL,UAAU,GAcX,MAAM,UAAU,CAAC"}
@@ -0,0 +1,73 @@
1
+ /**
2
+ * Project-related type definitions
3
+ * Defines output languages, models, and project specifications
4
+ */
5
+ import { z } from 'zod';
6
+ /**
7
+ * Supported output languages for generated projects
8
+ */
9
+ export declare const OutputLanguageSchema: z.ZodEnum<{
10
+ python: "python";
11
+ typescript: "typescript";
12
+ }>;
13
+ export type OutputLanguage = z.infer<typeof OutputLanguageSchema>;
14
+ /**
15
+ * Supported OpenAI models for consensus reviews
16
+ */
17
+ export declare const OpenAIModelSchema: z.ZodEnum<{
18
+ "gpt-4o": "gpt-4o";
19
+ "gpt-4o-mini": "gpt-4o-mini";
20
+ "gpt-4-turbo": "gpt-4-turbo";
21
+ "o1-preview": "o1-preview";
22
+ "o1-mini": "o1-mini";
23
+ }>;
24
+ export type OpenAIModel = z.infer<typeof OpenAIModelSchema>;
25
+ /**
26
+ * Project specification provided by user
27
+ */
28
+ export declare const ProjectSpecSchema: z.ZodObject<{
29
+ idea: z.ZodString;
30
+ name: z.ZodOptional<z.ZodString>;
31
+ language: z.ZodEnum<{
32
+ python: "python";
33
+ typescript: "typescript";
34
+ }>;
35
+ openaiModel: z.ZodEnum<{
36
+ "gpt-4o": "gpt-4o";
37
+ "gpt-4o-mini": "gpt-4o-mini";
38
+ "gpt-4-turbo": "gpt-4-turbo";
39
+ "o1-preview": "o1-preview";
40
+ "o1-mini": "o1-mini";
41
+ }>;
42
+ outputDir: z.ZodOptional<z.ZodString>;
43
+ }, z.core.$strip>;
44
+ export type ProjectSpec = z.infer<typeof ProjectSpecSchema>;
45
+ /**
46
+ * Generated project information
47
+ */
48
+ export interface GeneratedProject {
49
+ name: string;
50
+ path: string;
51
+ language: OutputLanguage;
52
+ files: string[];
53
+ testsPath: string;
54
+ dockerComposePath: string;
55
+ }
56
+ /**
57
+ * Project generation options
58
+ */
59
+ export interface GenerationOptions {
60
+ includeDocker: boolean;
61
+ includeTests: boolean;
62
+ includeDocs: boolean;
63
+ packageManager: 'pip' | 'poetry' | 'npm' | 'pnpm';
64
+ testFramework: 'pytest' | 'jest' | 'vitest';
65
+ }
66
+ /**
67
+ * Available OpenAI models with descriptions
68
+ */
69
+ export declare const OPENAI_MODELS: Record<OpenAIModel, {
70
+ description: string;
71
+ recommended: string;
72
+ }>;
73
+ //# sourceMappingURL=project.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"project.d.ts","sourceRoot":"","sources":["../../src/types/project.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;GAEG;AACH,eAAO,MAAM,oBAAoB;;;EAAmC,CAAC;AACrE,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAElE;;GAEG;AACH,eAAO,MAAM,iBAAiB;;;;;;EAM5B,CAAC;AACH,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAE5D;;GAEG;AACH,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;iBAM5B,CAAC;AACH,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAE5D;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,cAAc,CAAC;IACzB,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,iBAAiB,EAAE,MAAM,CAAC;CAC3B;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,aAAa,EAAE,OAAO,CAAC;IACvB,YAAY,EAAE,OAAO,CAAC;IACtB,WAAW,EAAE,OAAO,CAAC;IACrB,cAAc,EAAE,KAAK,GAAG,QAAQ,GAAG,KAAK,GAAG,MAAM,CAAC;IAClD,aAAa,EAAE,QAAQ,GAAG,MAAM,GAAG,QAAQ,CAAC;CAC7C;AAED;;GAEG;AACH,eAAO,MAAM,aAAa,EAAE,MAAM,CAAC,WAAW,EAAE;IAAE,WAAW,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,CAqB3F,CAAC"}
@@ -0,0 +1,55 @@
1
+ /**
2
+ * Project-related type definitions
3
+ * Defines output languages, models, and project specifications
4
+ */
5
+ import { z } from 'zod';
6
+ /**
7
+ * Supported output languages for generated projects
8
+ */
9
+ export const OutputLanguageSchema = z.enum(['python', 'typescript']);
10
+ /**
11
+ * Supported OpenAI models for consensus reviews
12
+ */
13
+ export const OpenAIModelSchema = z.enum([
14
+ 'gpt-4o',
15
+ 'gpt-4o-mini',
16
+ 'gpt-4-turbo',
17
+ 'o1-preview',
18
+ 'o1-mini',
19
+ ]);
20
+ /**
21
+ * Project specification provided by user
22
+ */
23
+ export const ProjectSpecSchema = z.object({
24
+ idea: z.string().min(10, 'Idea must be at least 10 characters'),
25
+ name: z.string().optional(),
26
+ language: OutputLanguageSchema,
27
+ openaiModel: OpenAIModelSchema,
28
+ outputDir: z.string().optional(),
29
+ });
30
+ /**
31
+ * Available OpenAI models with descriptions
32
+ */
33
+ export const OPENAI_MODELS = {
34
+ 'gpt-4o': {
35
+ description: 'Most capable, best reasoning',
36
+ recommended: 'Complex projects',
37
+ },
38
+ 'gpt-4o-mini': {
39
+ description: 'Fast, cost-effective',
40
+ recommended: 'Simple projects',
41
+ },
42
+ 'gpt-4-turbo': {
43
+ description: 'High capability, faster',
44
+ recommended: 'Medium complexity',
45
+ },
46
+ 'o1-preview': {
47
+ description: 'Advanced reasoning',
48
+ recommended: 'Architectural decisions',
49
+ },
50
+ 'o1-mini': {
51
+ description: 'Efficient reasoning',
52
+ recommended: 'Code review',
53
+ },
54
+ };
55
+ //# sourceMappingURL=project.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"project.js","sourceRoot":"","sources":["../../src/types/project.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;GAEG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC,CAAC;AAGrE;;GAEG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAC,IAAI,CAAC;IACtC,QAAQ;IACR,aAAa;IACb,aAAa;IACb,YAAY;IACZ,SAAS;CACV,CAAC,CAAC;AAGH;;GAEG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAC,MAAM,CAAC;IACxC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,qCAAqC,CAAC;IAC/D,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC3B,QAAQ,EAAE,oBAAoB;IAC9B,WAAW,EAAE,iBAAiB;IAC9B,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CACjC,CAAC,CAAC;AA0BH;;GAEG;AACH,MAAM,CAAC,MAAM,aAAa,GAAsE;IAC9F,QAAQ,EAAE;QACR,WAAW,EAAE,8BAA8B;QAC3C,WAAW,EAAE,kBAAkB;KAChC;IACD,aAAa,EAAE;QACb,WAAW,EAAE,sBAAsB;QACnC,WAAW,EAAE,iBAAiB;KAC/B;IACD,aAAa,EAAE;QACb,WAAW,EAAE,yBAAyB;QACtC,WAAW,EAAE,mBAAmB;KACjC;IACD,YAAY,EAAE;QACZ,WAAW,EAAE,oBAAoB;QACjC,WAAW,EAAE,yBAAyB;KACvC;IACD,SAAS,EAAE;QACT,WAAW,EAAE,qBAAqB;QAClC,WAAW,EAAE,aAAa;KAC3B;CACF,CAAC"}