popeye-cli 1.0.1 → 1.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +521 -125
- package/dist/adapters/claude.d.ts +16 -4
- package/dist/adapters/claude.d.ts.map +1 -1
- package/dist/adapters/claude.js +679 -33
- package/dist/adapters/claude.js.map +1 -1
- package/dist/adapters/gemini.d.ts +55 -0
- package/dist/adapters/gemini.d.ts.map +1 -0
- package/dist/adapters/gemini.js +318 -0
- package/dist/adapters/gemini.js.map +1 -0
- package/dist/adapters/openai.d.ts.map +1 -1
- package/dist/adapters/openai.js +41 -7
- package/dist/adapters/openai.js.map +1 -1
- package/dist/auth/claude.d.ts +11 -9
- package/dist/auth/claude.d.ts.map +1 -1
- package/dist/auth/claude.js +107 -71
- package/dist/auth/claude.js.map +1 -1
- package/dist/auth/gemini.d.ts +58 -0
- package/dist/auth/gemini.d.ts.map +1 -0
- package/dist/auth/gemini.js +172 -0
- package/dist/auth/gemini.js.map +1 -0
- package/dist/auth/index.d.ts +11 -7
- package/dist/auth/index.d.ts.map +1 -1
- package/dist/auth/index.js +23 -5
- package/dist/auth/index.js.map +1 -1
- package/dist/auth/keychain.d.ts +20 -7
- package/dist/auth/keychain.d.ts.map +1 -1
- package/dist/auth/keychain.js +85 -29
- package/dist/auth/keychain.js.map +1 -1
- package/dist/auth/openai.d.ts +2 -2
- package/dist/auth/openai.d.ts.map +1 -1
- package/dist/auth/openai.js +30 -32
- package/dist/auth/openai.js.map +1 -1
- package/dist/cli/interactive.d.ts.map +1 -1
- package/dist/cli/interactive.js +1151 -110
- package/dist/cli/interactive.js.map +1 -1
- package/dist/config/defaults.d.ts +6 -1
- package/dist/config/defaults.d.ts.map +1 -1
- package/dist/config/defaults.js +10 -2
- package/dist/config/defaults.js.map +1 -1
- package/dist/config/index.d.ts +10 -0
- package/dist/config/index.d.ts.map +1 -1
- package/dist/config/index.js +19 -0
- package/dist/config/index.js.map +1 -1
- package/dist/config/schema.d.ts +20 -0
- package/dist/config/schema.d.ts.map +1 -1
- package/dist/config/schema.js +7 -0
- package/dist/config/schema.js.map +1 -1
- package/dist/generators/python.d.ts.map +1 -1
- package/dist/generators/python.js +1 -0
- package/dist/generators/python.js.map +1 -1
- package/dist/generators/typescript.d.ts.map +1 -1
- package/dist/generators/typescript.js +1 -0
- package/dist/generators/typescript.js.map +1 -1
- package/dist/state/index.d.ts +108 -0
- package/dist/state/index.d.ts.map +1 -1
- package/dist/state/index.js +551 -4
- package/dist/state/index.js.map +1 -1
- package/dist/state/registry.d.ts +52 -0
- package/dist/state/registry.d.ts.map +1 -0
- package/dist/state/registry.js +215 -0
- package/dist/state/registry.js.map +1 -0
- package/dist/types/cli.d.ts +4 -0
- package/dist/types/cli.d.ts.map +1 -1
- package/dist/types/cli.js.map +1 -1
- package/dist/types/consensus.d.ts +69 -4
- package/dist/types/consensus.d.ts.map +1 -1
- package/dist/types/consensus.js +24 -3
- package/dist/types/consensus.js.map +1 -1
- package/dist/types/workflow.d.ts +55 -0
- package/dist/types/workflow.d.ts.map +1 -1
- package/dist/types/workflow.js +16 -0
- package/dist/types/workflow.js.map +1 -1
- package/dist/workflow/auto-fix.d.ts +45 -0
- package/dist/workflow/auto-fix.d.ts.map +1 -0
- package/dist/workflow/auto-fix.js +274 -0
- package/dist/workflow/auto-fix.js.map +1 -0
- package/dist/workflow/consensus.d.ts +44 -2
- package/dist/workflow/consensus.d.ts.map +1 -1
- package/dist/workflow/consensus.js +565 -17
- package/dist/workflow/consensus.js.map +1 -1
- package/dist/workflow/execution-mode.d.ts +10 -4
- package/dist/workflow/execution-mode.d.ts.map +1 -1
- package/dist/workflow/execution-mode.js +547 -58
- package/dist/workflow/execution-mode.js.map +1 -1
- package/dist/workflow/index.d.ts +14 -2
- package/dist/workflow/index.d.ts.map +1 -1
- package/dist/workflow/index.js +69 -6
- package/dist/workflow/index.js.map +1 -1
- package/dist/workflow/milestone-workflow.d.ts +34 -0
- package/dist/workflow/milestone-workflow.d.ts.map +1 -0
- package/dist/workflow/milestone-workflow.js +414 -0
- package/dist/workflow/milestone-workflow.js.map +1 -0
- package/dist/workflow/plan-mode.d.ts +14 -1
- package/dist/workflow/plan-mode.d.ts.map +1 -1
- package/dist/workflow/plan-mode.js +589 -47
- package/dist/workflow/plan-mode.js.map +1 -1
- package/dist/workflow/plan-storage.d.ts +142 -0
- package/dist/workflow/plan-storage.d.ts.map +1 -0
- package/dist/workflow/plan-storage.js +331 -0
- package/dist/workflow/plan-storage.js.map +1 -0
- package/dist/workflow/project-verification.d.ts +37 -0
- package/dist/workflow/project-verification.d.ts.map +1 -0
- package/dist/workflow/project-verification.js +381 -0
- package/dist/workflow/project-verification.js.map +1 -0
- package/dist/workflow/task-workflow.d.ts +37 -0
- package/dist/workflow/task-workflow.d.ts.map +1 -0
- package/dist/workflow/task-workflow.js +383 -0
- package/dist/workflow/task-workflow.js.map +1 -0
- package/dist/workflow/test-runner.d.ts +1 -0
- package/dist/workflow/test-runner.d.ts.map +1 -1
- package/dist/workflow/test-runner.js +9 -5
- package/dist/workflow/test-runner.js.map +1 -1
- package/dist/workflow/ui-designer.d.ts +82 -0
- package/dist/workflow/ui-designer.d.ts.map +1 -0
- package/dist/workflow/ui-designer.js +234 -0
- package/dist/workflow/ui-designer.js.map +1 -0
- package/dist/workflow/ui-setup.d.ts +58 -0
- package/dist/workflow/ui-setup.d.ts.map +1 -0
- package/dist/workflow/ui-setup.js +685 -0
- package/dist/workflow/ui-setup.js.map +1 -0
- package/dist/workflow/ui-verification.d.ts +114 -0
- package/dist/workflow/ui-verification.d.ts.map +1 -0
- package/dist/workflow/ui-verification.js +258 -0
- package/dist/workflow/ui-verification.js.map +1 -0
- package/dist/workflow/workflow-logger.d.ts +110 -0
- package/dist/workflow/workflow-logger.d.ts.map +1 -0
- package/dist/workflow/workflow-logger.js +267 -0
- package/dist/workflow/workflow-logger.js.map +1 -0
- package/package.json +2 -2
- package/src/adapters/claude.ts +815 -34
- package/src/adapters/gemini.ts +373 -0
- package/src/adapters/openai.ts +40 -7
- package/src/auth/claude.ts +120 -78
- package/src/auth/gemini.ts +207 -0
- package/src/auth/index.ts +28 -8
- package/src/auth/keychain.ts +95 -28
- package/src/auth/openai.ts +29 -36
- package/src/cli/interactive.ts +1357 -115
- package/src/config/defaults.ts +10 -2
- package/src/config/index.ts +21 -0
- package/src/config/schema.ts +7 -0
- package/src/generators/python.ts +1 -0
- package/src/generators/typescript.ts +1 -0
- package/src/state/index.ts +713 -4
- package/src/state/registry.ts +278 -0
- package/src/types/cli.ts +4 -0
- package/src/types/consensus.ts +65 -6
- package/src/types/workflow.ts +35 -0
- package/src/workflow/auto-fix.ts +340 -0
- package/src/workflow/consensus.ts +750 -16
- package/src/workflow/execution-mode.ts +673 -74
- package/src/workflow/index.ts +95 -6
- package/src/workflow/milestone-workflow.ts +576 -0
- package/src/workflow/plan-mode.ts +696 -50
- package/src/workflow/plan-storage.ts +482 -0
- package/src/workflow/project-verification.ts +471 -0
- package/src/workflow/task-workflow.ts +525 -0
- package/src/workflow/test-runner.ts +10 -5
- package/src/workflow/ui-designer.ts +337 -0
- package/src/workflow/ui-setup.ts +797 -0
- package/src/workflow/ui-verification.ts +357 -0
- package/src/workflow/workflow-logger.ts +353 -0
- package/tests/config/config.test.ts +1 -1
- package/tests/types/consensus.test.ts +3 -3
- package/tests/workflow/plan-mode.test.ts +213 -0
- package/tests/workflow/test-runner.test.ts +5 -3
package/src/config/defaults.ts
CHANGED
|
@@ -11,8 +11,11 @@ import type { Config } from './schema.js';
|
|
|
11
11
|
export const DEFAULT_CONFIG: Config = {
|
|
12
12
|
consensus: {
|
|
13
13
|
threshold: 95,
|
|
14
|
-
max_disagreements:
|
|
14
|
+
max_disagreements: 10,
|
|
15
15
|
escalation_action: 'pause',
|
|
16
|
+
reviewer: 'openai',
|
|
17
|
+
arbitrator: 'off',
|
|
18
|
+
enable_arbitration: false,
|
|
16
19
|
},
|
|
17
20
|
apis: {
|
|
18
21
|
openai: {
|
|
@@ -88,6 +91,7 @@ export const SERVICE_NAME = 'popeye-cli';
|
|
|
88
91
|
export const KEYCHAIN_ACCOUNTS = {
|
|
89
92
|
CLAUDE: 'claude-cli',
|
|
90
93
|
OPENAI: 'openai-api',
|
|
94
|
+
GEMINI: 'gemini-api',
|
|
91
95
|
} as const;
|
|
92
96
|
|
|
93
97
|
/**
|
|
@@ -96,8 +100,12 @@ export const KEYCHAIN_ACCOUNTS = {
|
|
|
96
100
|
export const ENV_VARS = {
|
|
97
101
|
OPENAI_KEY: 'POPEYE_OPENAI_KEY',
|
|
98
102
|
ANTHROPIC_KEY: 'POPEYE_ANTHROPIC_KEY',
|
|
103
|
+
GEMINI_KEY: 'POPEYE_GEMINI_KEY',
|
|
99
104
|
DEFAULT_LANGUAGE: 'POPEYE_DEFAULT_LANGUAGE',
|
|
100
105
|
OPENAI_MODEL: 'POPEYE_OPENAI_MODEL',
|
|
106
|
+
GEMINI_MODEL: 'POPEYE_GEMINI_MODEL',
|
|
107
|
+
CONSENSUS_REVIEWER: 'POPEYE_CONSENSUS_REVIEWER',
|
|
108
|
+
CONSENSUS_ARBITRATOR: 'POPEYE_CONSENSUS_ARBITRATOR',
|
|
101
109
|
CONSENSUS_THRESHOLD: 'POPEYE_CONSENSUS_THRESHOLD',
|
|
102
110
|
MAX_DISAGREEMENTS: 'POPEYE_MAX_DISAGREEMENTS',
|
|
103
111
|
LOG_LEVEL: 'POPEYE_LOG_LEVEL',
|
|
@@ -106,7 +114,7 @@ export const ENV_VARS = {
|
|
|
106
114
|
/**
|
|
107
115
|
* CLI version
|
|
108
116
|
*/
|
|
109
|
-
export const CLI_VERSION = '1.0.
|
|
117
|
+
export const CLI_VERSION = '1.0.2';
|
|
110
118
|
|
|
111
119
|
/**
|
|
112
120
|
* State file version
|
package/src/config/index.ts
CHANGED
|
@@ -124,6 +124,27 @@ function loadEnvConfig(): Partial<Config> {
|
|
|
124
124
|
}
|
|
125
125
|
}
|
|
126
126
|
|
|
127
|
+
// Reviewer
|
|
128
|
+
const reviewer = process.env[ENV_VARS.CONSENSUS_REVIEWER];
|
|
129
|
+
if (reviewer && (reviewer === 'openai' || reviewer === 'gemini')) {
|
|
130
|
+
config.consensus = {
|
|
131
|
+
...DEFAULT_CONFIG.consensus,
|
|
132
|
+
...(config.consensus || {}),
|
|
133
|
+
reviewer,
|
|
134
|
+
};
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
// Arbitrator
|
|
138
|
+
const arbitrator = process.env[ENV_VARS.CONSENSUS_ARBITRATOR];
|
|
139
|
+
if (arbitrator && (arbitrator === 'openai' || arbitrator === 'gemini' || arbitrator === 'off')) {
|
|
140
|
+
config.consensus = {
|
|
141
|
+
...DEFAULT_CONFIG.consensus,
|
|
142
|
+
...(config.consensus || {}),
|
|
143
|
+
arbitrator,
|
|
144
|
+
enable_arbitration: arbitrator !== 'off',
|
|
145
|
+
};
|
|
146
|
+
}
|
|
147
|
+
|
|
127
148
|
// Verbose/log level
|
|
128
149
|
const logLevel = process.env[ENV_VARS.LOG_LEVEL];
|
|
129
150
|
if (logLevel === 'debug') {
|
package/src/config/schema.ts
CHANGED
|
@@ -12,6 +12,10 @@ export const ConsensusSettingsSchema = z.object({
|
|
|
12
12
|
threshold: z.number().min(0).max(100).default(95),
|
|
13
13
|
max_disagreements: z.number().min(1).max(10).default(5),
|
|
14
14
|
escalation_action: z.enum(['pause', 'continue', 'abort']).default('pause'),
|
|
15
|
+
// Reviewer and arbitrator settings (persisted across sessions)
|
|
16
|
+
reviewer: z.enum(['openai', 'gemini']).default('openai'),
|
|
17
|
+
arbitrator: z.enum(['openai', 'gemini', 'off']).default('off'),
|
|
18
|
+
enable_arbitration: z.boolean().default(false),
|
|
15
19
|
});
|
|
16
20
|
|
|
17
21
|
/**
|
|
@@ -112,6 +116,9 @@ export const ConfigSchema = z.object({
|
|
|
112
116
|
threshold: 95,
|
|
113
117
|
max_disagreements: 5,
|
|
114
118
|
escalation_action: 'pause',
|
|
119
|
+
reviewer: 'openai',
|
|
120
|
+
arbitrator: 'off',
|
|
121
|
+
enable_arbitration: false,
|
|
115
122
|
}),
|
|
116
123
|
apis: APISettingsSchema.default({
|
|
117
124
|
openai: {
|
package/src/generators/python.ts
CHANGED
|
@@ -74,6 +74,7 @@ export async function generatePythonProject(
|
|
|
74
74
|
await ensureDir(path.join(projectDir, 'src', packageName));
|
|
75
75
|
await ensureDir(path.join(projectDir, 'tests'));
|
|
76
76
|
await ensureDir(path.join(projectDir, 'data'));
|
|
77
|
+
await ensureDir(path.join(projectDir, 'docs'));
|
|
77
78
|
|
|
78
79
|
// Generate and write files
|
|
79
80
|
const files: Array<{ path: string; content: string }> = [
|
|
@@ -66,6 +66,7 @@ export async function generateTypeScriptProject(
|
|
|
66
66
|
await ensureDir(path.join(projectDir, 'src'));
|
|
67
67
|
await ensureDir(path.join(projectDir, 'tests'));
|
|
68
68
|
await ensureDir(path.join(projectDir, 'data'));
|
|
69
|
+
await ensureDir(path.join(projectDir, 'docs'));
|
|
69
70
|
|
|
70
71
|
// Generate and write files
|
|
71
72
|
const files: Array<{ path: string; content: string }> = [
|