popeye-cli 1.0.0 → 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/index.d.ts.map +1 -1
- package/dist/cli/index.js +4 -7
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/interactive.d.ts +2 -2
- package/dist/cli/interactive.d.ts.map +1 -1
- package/dist/cli/interactive.js +1380 -183
- 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/index.ts +4 -7
- package/src/cli/interactive.ts +1641 -216
- 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/dist/auth/index.js
CHANGED
|
@@ -1,27 +1,32 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Authentication orchestration module
|
|
3
|
-
* Coordinates authentication for
|
|
3
|
+
* Coordinates authentication for Claude CLI, OpenAI API, and Gemini API
|
|
4
4
|
*/
|
|
5
5
|
import { checkClaudeCLIAuth, authenticateClaude, logoutClaude } from './claude.js';
|
|
6
6
|
import { checkOpenAIAuth, authenticateOpenAI, logoutOpenAI } from './openai.js';
|
|
7
|
+
import { checkGeminiAuth, authenticateGemini, logoutGemini } from './gemini.js';
|
|
7
8
|
import { clearAllCredentials } from './keychain.js';
|
|
8
9
|
// Re-export individual auth modules
|
|
9
10
|
export * from './claude.js';
|
|
10
11
|
export * from './openai.js';
|
|
12
|
+
export * from './gemini.js';
|
|
11
13
|
export * from './keychain.js';
|
|
12
14
|
export * from './server.js';
|
|
13
15
|
/**
|
|
14
|
-
* Get the authentication status for
|
|
16
|
+
* Get the authentication status for all services
|
|
15
17
|
*/
|
|
16
18
|
export async function getAuthStatus() {
|
|
17
|
-
const [claudeStatus, openaiStatus] = await Promise.all([
|
|
19
|
+
const [claudeStatus, openaiStatus, geminiStatus] = await Promise.all([
|
|
18
20
|
checkClaudeCLIAuth(),
|
|
19
21
|
checkOpenAIAuth(),
|
|
22
|
+
checkGeminiAuth(),
|
|
20
23
|
]);
|
|
21
24
|
return {
|
|
22
25
|
claude: claudeStatus,
|
|
23
26
|
openai: openaiStatus,
|
|
27
|
+
gemini: geminiStatus,
|
|
24
28
|
fullyAuthenticated: claudeStatus.authenticated && openaiStatus.authenticated,
|
|
29
|
+
hasArbitrator: geminiStatus.authenticated || openaiStatus.authenticated,
|
|
25
30
|
};
|
|
26
31
|
}
|
|
27
32
|
/**
|
|
@@ -40,6 +45,10 @@ export async function getAuthStatusForDisplay() {
|
|
|
40
45
|
keyLastFour: status.openai.keyLastFour,
|
|
41
46
|
modelAccess: status.openai.modelAccess,
|
|
42
47
|
},
|
|
48
|
+
gemini: {
|
|
49
|
+
authenticated: status.gemini.authenticated,
|
|
50
|
+
keyLastFour: status.gemini.keyLastFour,
|
|
51
|
+
},
|
|
43
52
|
};
|
|
44
53
|
}
|
|
45
54
|
/**
|
|
@@ -75,7 +84,7 @@ export async function ensureAuthenticated() {
|
|
|
75
84
|
/**
|
|
76
85
|
* Authenticate a specific service
|
|
77
86
|
*
|
|
78
|
-
* @param service - The service to authenticate ('claude', 'openai', or 'all')
|
|
87
|
+
* @param service - The service to authenticate ('claude', 'openai', 'gemini', or 'all')
|
|
79
88
|
* @returns True if authentication was successful
|
|
80
89
|
*/
|
|
81
90
|
export async function authenticateService(service) {
|
|
@@ -84,6 +93,8 @@ export async function authenticateService(service) {
|
|
|
84
93
|
return authenticateClaude();
|
|
85
94
|
case 'openai':
|
|
86
95
|
return authenticateOpenAI();
|
|
96
|
+
case 'gemini':
|
|
97
|
+
return authenticateGemini();
|
|
87
98
|
case 'all':
|
|
88
99
|
return ensureAuthenticated();
|
|
89
100
|
}
|
|
@@ -91,7 +102,7 @@ export async function authenticateService(service) {
|
|
|
91
102
|
/**
|
|
92
103
|
* Logout from a specific service or all services
|
|
93
104
|
*
|
|
94
|
-
* @param service - The service to logout from ('claude', 'openai', or 'all')
|
|
105
|
+
* @param service - The service to logout from ('claude', 'openai', 'gemini', or 'all')
|
|
95
106
|
*/
|
|
96
107
|
export async function logout(service) {
|
|
97
108
|
switch (service) {
|
|
@@ -101,6 +112,9 @@ export async function logout(service) {
|
|
|
101
112
|
case 'openai':
|
|
102
113
|
await logoutOpenAI();
|
|
103
114
|
break;
|
|
115
|
+
case 'gemini':
|
|
116
|
+
await logoutGemini();
|
|
117
|
+
break;
|
|
104
118
|
case 'all':
|
|
105
119
|
await clearAllCredentials();
|
|
106
120
|
console.log('All credentials removed.');
|
|
@@ -120,8 +134,12 @@ export async function isAuthenticated(service) {
|
|
|
120
134
|
return status.claude.authenticated;
|
|
121
135
|
case 'openai':
|
|
122
136
|
return status.openai.authenticated;
|
|
137
|
+
case 'gemini':
|
|
138
|
+
return status.gemini.authenticated;
|
|
123
139
|
case 'both':
|
|
124
140
|
return status.fullyAuthenticated;
|
|
141
|
+
case 'all':
|
|
142
|
+
return status.fullyAuthenticated && status.gemini.authenticated;
|
|
125
143
|
}
|
|
126
144
|
}
|
|
127
145
|
/**
|
package/dist/auth/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/auth/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,YAAY,EAAyB,MAAM,aAAa,CAAC;AAC1G,OAAO,EAAE,eAAe,EAAE,kBAAkB,EAAE,YAAY,EAAyB,MAAM,aAAa,CAAC;AACvG,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AAGpD,oCAAoC;AACpC,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/auth/index.ts"],"names":[],"mappings":"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"}
|
package/dist/auth/keychain.d.ts
CHANGED
|
@@ -1,31 +1,32 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
3
|
-
* Uses
|
|
2
|
+
* Credential storage module
|
|
3
|
+
* Uses file-based storage in ~/.popeye/ directory
|
|
4
|
+
* Falls back to environment variables
|
|
4
5
|
*/
|
|
5
6
|
/**
|
|
6
|
-
* Get a credential from
|
|
7
|
-
* Falls back to environment variable if
|
|
7
|
+
* Get a credential from storage
|
|
8
|
+
* Falls back to environment variable if not found
|
|
8
9
|
*
|
|
9
10
|
* @param account - The account name (e.g., 'claude-cli', 'openai-api')
|
|
10
11
|
* @returns The stored credential or null if not found
|
|
11
12
|
*/
|
|
12
13
|
export declare function getCredential(account: string): Promise<string | null>;
|
|
13
14
|
/**
|
|
14
|
-
* Store a credential
|
|
15
|
+
* Store a credential
|
|
15
16
|
*
|
|
16
17
|
* @param account - The account name
|
|
17
18
|
* @param password - The credential to store
|
|
18
19
|
*/
|
|
19
20
|
export declare function setCredential(account: string, password: string): Promise<void>;
|
|
20
21
|
/**
|
|
21
|
-
* Delete a credential from
|
|
22
|
+
* Delete a credential from storage
|
|
22
23
|
*
|
|
23
24
|
* @param account - The account name
|
|
24
25
|
* @returns True if the credential was deleted, false if it didn't exist
|
|
25
26
|
*/
|
|
26
27
|
export declare function deleteCredential(account: string): Promise<boolean>;
|
|
27
28
|
/**
|
|
28
|
-
* Check if a credential exists
|
|
29
|
+
* Check if a credential exists
|
|
29
30
|
*
|
|
30
31
|
* @param account - The account name
|
|
31
32
|
* @returns True if the credential exists
|
|
@@ -55,6 +56,18 @@ export declare function setOpenAICredential(apiKey: string): Promise<void>;
|
|
|
55
56
|
* Delete the OpenAI API credential
|
|
56
57
|
*/
|
|
57
58
|
export declare function deleteOpenAICredential(): Promise<boolean>;
|
|
59
|
+
/**
|
|
60
|
+
* Get the Gemini API credential
|
|
61
|
+
*/
|
|
62
|
+
export declare function getGeminiCredential(): Promise<string | null>;
|
|
63
|
+
/**
|
|
64
|
+
* Set the Gemini API credential
|
|
65
|
+
*/
|
|
66
|
+
export declare function setGeminiCredential(apiKey: string): Promise<void>;
|
|
67
|
+
/**
|
|
68
|
+
* Delete the Gemini API credential
|
|
69
|
+
*/
|
|
70
|
+
export declare function deleteGeminiCredential(): Promise<boolean>;
|
|
58
71
|
/**
|
|
59
72
|
* Clear all stored credentials
|
|
60
73
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"keychain.d.ts","sourceRoot":"","sources":["../../src/auth/keychain.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"keychain.d.ts","sourceRoot":"","sources":["../../src/auth/keychain.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AA+CH;;;;;;GAMG;AACH,wBAAsB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAqB3E;AAED;;;;;GAKG;AACH,wBAAsB,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAKpF;AAED;;;;;GAKG;AACH,wBAAsB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAWxE;AAED;;;;;GAKG;AACH,wBAAsB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAGrE;AAED;;GAEG;AACH,wBAAsB,mBAAmB,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAElE;AAED;;GAEG;AACH,wBAAsB,mBAAmB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAEtE;AAED;;GAEG;AACH,wBAAsB,sBAAsB,IAAI,OAAO,CAAC,OAAO,CAAC,CAE/D;AAED;;GAEG;AACH,wBAAsB,mBAAmB,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAElE;AAED;;GAEG;AACH,wBAAsB,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAEvE;AAED;;GAEG;AACH,wBAAsB,sBAAsB,IAAI,OAAO,CAAC,OAAO,CAAC,CAE/D;AAED;;GAEG;AACH,wBAAsB,mBAAmB,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAElE;AAED;;GAEG;AACH,wBAAsB,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAEvE;AAED;;GAEG;AACH,wBAAsB,sBAAsB,IAAI,OAAO,CAAC,OAAO,CAAC,CAE/D;AAED;;GAEG;AACH,wBAAsB,mBAAmB,IAAI,OAAO,CAAC,IAAI,CAAC,CAIzD;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAKzD"}
|
package/dist/auth/keychain.js
CHANGED
|
@@ -1,26 +1,61 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
3
|
-
* Uses
|
|
2
|
+
* Credential storage module
|
|
3
|
+
* Uses file-based storage in ~/.popeye/ directory
|
|
4
|
+
* Falls back to environment variables
|
|
4
5
|
*/
|
|
5
|
-
import * as
|
|
6
|
+
import * as fs from 'node:fs';
|
|
7
|
+
import * as path from 'node:path';
|
|
8
|
+
import * as os from 'node:os';
|
|
6
9
|
import { SERVICE_NAME, KEYCHAIN_ACCOUNTS, ENV_VARS } from '../config/defaults.js';
|
|
7
10
|
/**
|
|
8
|
-
* Get
|
|
9
|
-
* Falls back to environment variable if keychain is unavailable
|
|
10
|
-
*
|
|
11
|
-
* @param account - The account name (e.g., 'claude-cli', 'openai-api')
|
|
12
|
-
* @returns The stored credential or null if not found
|
|
11
|
+
* Get the credentials file path
|
|
13
12
|
*/
|
|
14
|
-
|
|
13
|
+
function getCredentialsPath() {
|
|
14
|
+
const popeyeDir = path.join(os.homedir(), '.popeye');
|
|
15
|
+
// Ensure directory exists
|
|
16
|
+
if (!fs.existsSync(popeyeDir)) {
|
|
17
|
+
fs.mkdirSync(popeyeDir, { mode: 0o700, recursive: true });
|
|
18
|
+
}
|
|
19
|
+
return path.join(popeyeDir, 'credentials.json');
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Load credentials from file
|
|
23
|
+
*/
|
|
24
|
+
function loadCredentials() {
|
|
15
25
|
try {
|
|
16
|
-
const
|
|
17
|
-
if (
|
|
18
|
-
|
|
26
|
+
const filePath = getCredentialsPath();
|
|
27
|
+
if (fs.existsSync(filePath)) {
|
|
28
|
+
const data = fs.readFileSync(filePath, 'utf-8');
|
|
29
|
+
return JSON.parse(data);
|
|
19
30
|
}
|
|
20
31
|
}
|
|
21
32
|
catch {
|
|
22
|
-
//
|
|
23
|
-
|
|
33
|
+
// Ignore errors, return empty
|
|
34
|
+
}
|
|
35
|
+
return {};
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Save credentials to file
|
|
39
|
+
*/
|
|
40
|
+
function saveCredentials(credentials) {
|
|
41
|
+
const filePath = getCredentialsPath();
|
|
42
|
+
fs.writeFileSync(filePath, JSON.stringify(credentials, null, 2), {
|
|
43
|
+
mode: 0o600, // Owner read/write only
|
|
44
|
+
});
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Get a credential from storage
|
|
48
|
+
* Falls back to environment variable if not found
|
|
49
|
+
*
|
|
50
|
+
* @param account - The account name (e.g., 'claude-cli', 'openai-api')
|
|
51
|
+
* @returns The stored credential or null if not found
|
|
52
|
+
*/
|
|
53
|
+
export async function getCredential(account) {
|
|
54
|
+
// First check file storage
|
|
55
|
+
const credentials = loadCredentials();
|
|
56
|
+
const key = `${SERVICE_NAME}:${account}`;
|
|
57
|
+
if (credentials[key]) {
|
|
58
|
+
return credentials[key];
|
|
24
59
|
}
|
|
25
60
|
// Fallback to environment variables
|
|
26
61
|
if (account === KEYCHAIN_ACCOUNTS.OPENAI) {
|
|
@@ -29,39 +64,41 @@ export async function getCredential(account) {
|
|
|
29
64
|
if (account === KEYCHAIN_ACCOUNTS.CLAUDE) {
|
|
30
65
|
return process.env[ENV_VARS.ANTHROPIC_KEY] || null;
|
|
31
66
|
}
|
|
67
|
+
if (account === KEYCHAIN_ACCOUNTS.GEMINI) {
|
|
68
|
+
return process.env[ENV_VARS.GEMINI_KEY] || null;
|
|
69
|
+
}
|
|
32
70
|
return null;
|
|
33
71
|
}
|
|
34
72
|
/**
|
|
35
|
-
* Store a credential
|
|
73
|
+
* Store a credential
|
|
36
74
|
*
|
|
37
75
|
* @param account - The account name
|
|
38
76
|
* @param password - The credential to store
|
|
39
77
|
*/
|
|
40
78
|
export async function setCredential(account, password) {
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
throw new Error(`Failed to store credential in keychain: ${error instanceof Error ? error.message : 'Unknown error'}`);
|
|
46
|
-
}
|
|
79
|
+
const credentials = loadCredentials();
|
|
80
|
+
const key = `${SERVICE_NAME}:${account}`;
|
|
81
|
+
credentials[key] = password;
|
|
82
|
+
saveCredentials(credentials);
|
|
47
83
|
}
|
|
48
84
|
/**
|
|
49
|
-
* Delete a credential from
|
|
85
|
+
* Delete a credential from storage
|
|
50
86
|
*
|
|
51
87
|
* @param account - The account name
|
|
52
88
|
* @returns True if the credential was deleted, false if it didn't exist
|
|
53
89
|
*/
|
|
54
90
|
export async function deleteCredential(account) {
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
return
|
|
91
|
+
const credentials = loadCredentials();
|
|
92
|
+
const key = `${SERVICE_NAME}:${account}`;
|
|
93
|
+
if (credentials[key]) {
|
|
94
|
+
delete credentials[key];
|
|
95
|
+
saveCredentials(credentials);
|
|
96
|
+
return true;
|
|
61
97
|
}
|
|
98
|
+
return false;
|
|
62
99
|
}
|
|
63
100
|
/**
|
|
64
|
-
* Check if a credential exists
|
|
101
|
+
* Check if a credential exists
|
|
65
102
|
*
|
|
66
103
|
* @param account - The account name
|
|
67
104
|
* @returns True if the credential exists
|
|
@@ -106,12 +143,31 @@ export async function setOpenAICredential(apiKey) {
|
|
|
106
143
|
export async function deleteOpenAICredential() {
|
|
107
144
|
return deleteCredential(KEYCHAIN_ACCOUNTS.OPENAI);
|
|
108
145
|
}
|
|
146
|
+
/**
|
|
147
|
+
* Get the Gemini API credential
|
|
148
|
+
*/
|
|
149
|
+
export async function getGeminiCredential() {
|
|
150
|
+
return getCredential(KEYCHAIN_ACCOUNTS.GEMINI);
|
|
151
|
+
}
|
|
152
|
+
/**
|
|
153
|
+
* Set the Gemini API credential
|
|
154
|
+
*/
|
|
155
|
+
export async function setGeminiCredential(apiKey) {
|
|
156
|
+
return setCredential(KEYCHAIN_ACCOUNTS.GEMINI, apiKey);
|
|
157
|
+
}
|
|
158
|
+
/**
|
|
159
|
+
* Delete the Gemini API credential
|
|
160
|
+
*/
|
|
161
|
+
export async function deleteGeminiCredential() {
|
|
162
|
+
return deleteCredential(KEYCHAIN_ACCOUNTS.GEMINI);
|
|
163
|
+
}
|
|
109
164
|
/**
|
|
110
165
|
* Clear all stored credentials
|
|
111
166
|
*/
|
|
112
167
|
export async function clearAllCredentials() {
|
|
113
168
|
await deleteClaudeCredential();
|
|
114
169
|
await deleteOpenAICredential();
|
|
170
|
+
await deleteGeminiCredential();
|
|
115
171
|
}
|
|
116
172
|
/**
|
|
117
173
|
* Get the last 4 characters of a credential for display purposes
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"keychain.js","sourceRoot":"","sources":["../../src/auth/keychain.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"keychain.js","sourceRoot":"","sources":["../../src/auth/keychain.ts"],"names":[],"mappings":"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"}
|
package/dist/auth/openai.d.ts
CHANGED
|
@@ -32,11 +32,11 @@ export declare function getAvailableModels(apiKey: string): Promise<string[]>;
|
|
|
32
32
|
*/
|
|
33
33
|
export declare function checkOpenAIAuth(): Promise<OpenAIAuthStatus>;
|
|
34
34
|
/**
|
|
35
|
-
*
|
|
35
|
+
* Prompt for API key in the terminal
|
|
36
36
|
*
|
|
37
37
|
* @returns The entered API key or null if cancelled
|
|
38
38
|
*/
|
|
39
|
-
export declare function
|
|
39
|
+
export declare function promptForAPIKey(): Promise<string | null>;
|
|
40
40
|
/**
|
|
41
41
|
* Authenticate with OpenAI API
|
|
42
42
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"openai.d.ts","sourceRoot":"","sources":["../../src/auth/openai.ts"],"names":[],"mappings":"AAAA;;;GAGG;
|
|
1
|
+
{"version":3,"file":"openai.d.ts","sourceRoot":"","sources":["../../src/auth/openai.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,MAAM,MAAM,QAAQ,CAAC;AAQ5B;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,aAAa,EAAE,OAAO,CAAC;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;;;;GAKG;AACH,wBAAsB,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAgB1E;AAED;;;;;GAKG;AACH,wBAAsB,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAkB1E;AAED;;;GAGG;AACH,wBAAsB,eAAe,IAAI,OAAO,CAAC,gBAAgB,CAAC,CAgCjE;AAED;;;;GAIG;AACH,wBAAsB,eAAe,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAsB9D;AAED;;;;GAIG;AACH,wBAAsB,kBAAkB,IAAI,OAAO,CAAC,OAAO,CAAC,CAqC3D;AAED;;;;;GAKG;AACH,wBAAsB,yBAAyB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAchF;AAED;;;GAGG;AACH,wBAAsB,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC,CAOlD;AAED;;GAEG;AACH,wBAAsB,cAAc,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAE7D;AAED;;;GAGG;AACH,wBAAsB,gBAAgB,IAAI,OAAO,CAAC,OAAO,CAAC,CAQzD;AAED;;GAEG;AACH,wBAAsB,kBAAkB,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAQjE"}
|
package/dist/auth/openai.js
CHANGED
|
@@ -2,10 +2,9 @@
|
|
|
2
2
|
* OpenAI API authentication module
|
|
3
3
|
* Handles API key validation and storage
|
|
4
4
|
*/
|
|
5
|
+
import * as readline from 'node:readline';
|
|
5
6
|
import OpenAI from 'openai';
|
|
6
|
-
import open from 'open';
|
|
7
7
|
import { getOpenAICredential, setOpenAICredential, deleteOpenAICredential, maskCredential, } from './keychain.js';
|
|
8
|
-
import { startAuthCallbackServer, findAvailablePort } from './server.js';
|
|
9
8
|
/**
|
|
10
9
|
* Validate an OpenAI API key by making a test API call
|
|
11
10
|
*
|
|
@@ -86,33 +85,32 @@ export async function checkOpenAIAuth() {
|
|
|
86
85
|
}
|
|
87
86
|
}
|
|
88
87
|
/**
|
|
89
|
-
*
|
|
88
|
+
* Prompt for API key in the terminal
|
|
90
89
|
*
|
|
91
90
|
* @returns The entered API key or null if cancelled
|
|
92
91
|
*/
|
|
93
|
-
export async function
|
|
94
|
-
|
|
95
|
-
const
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
const authPromise = startAuthCallbackServer({
|
|
99
|
-
port,
|
|
100
|
-
type: 'openai',
|
|
101
|
-
timeout: 300000, // 5 minutes
|
|
92
|
+
export async function promptForAPIKey() {
|
|
93
|
+
return new Promise((resolve) => {
|
|
94
|
+
const rl = readline.createInterface({
|
|
95
|
+
input: process.stdin,
|
|
96
|
+
output: process.stdout,
|
|
102
97
|
});
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
98
|
+
console.log('\nGet your API key from: https://platform.openai.com/api-keys\n');
|
|
99
|
+
rl.question('Enter your OpenAI API key (starts with sk-): ', (answer) => {
|
|
100
|
+
rl.close();
|
|
101
|
+
const key = answer.trim();
|
|
102
|
+
if (key && key.startsWith('sk-')) {
|
|
103
|
+
resolve(key);
|
|
104
|
+
}
|
|
105
|
+
else if (key) {
|
|
106
|
+
console.log('\nWarning: Key does not start with "sk-", but trying anyway...');
|
|
107
|
+
resolve(key);
|
|
108
|
+
}
|
|
109
|
+
else {
|
|
110
|
+
resolve(null);
|
|
111
|
+
}
|
|
112
|
+
});
|
|
113
|
+
});
|
|
116
114
|
}
|
|
117
115
|
/**
|
|
118
116
|
* Authenticate with OpenAI API
|
|
@@ -128,21 +126,21 @@ export async function authenticateOpenAI() {
|
|
|
128
126
|
}
|
|
129
127
|
console.log('OpenAI API key required.');
|
|
130
128
|
try {
|
|
131
|
-
//
|
|
132
|
-
const
|
|
133
|
-
if (!
|
|
134
|
-
console.error('
|
|
129
|
+
// Prompt for the API key
|
|
130
|
+
const apiKey = await promptForAPIKey();
|
|
131
|
+
if (!apiKey) {
|
|
132
|
+
console.error('\nNo API key provided');
|
|
135
133
|
return false;
|
|
136
134
|
}
|
|
137
135
|
// Validate the token
|
|
138
|
-
console.log('
|
|
139
|
-
const isValid = await validateOpenAIToken(
|
|
136
|
+
console.log('\nValidating API key...');
|
|
137
|
+
const isValid = await validateOpenAIToken(apiKey);
|
|
140
138
|
if (!isValid) {
|
|
141
139
|
console.error('Invalid OpenAI API key');
|
|
142
140
|
return false;
|
|
143
141
|
}
|
|
144
142
|
// Store the token
|
|
145
|
-
await setOpenAICredential(
|
|
143
|
+
await setOpenAICredential(apiKey);
|
|
146
144
|
console.log('OpenAI API authenticated successfully!\n');
|
|
147
145
|
return true;
|
|
148
146
|
}
|
package/dist/auth/openai.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"openai.js","sourceRoot":"","sources":["../../src/auth/openai.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,
|
|
1
|
+
{"version":3,"file":"openai.js","sourceRoot":"","sources":["../../src/auth/openai.ts"],"names":[],"mappings":"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"}
|
package/dist/cli/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAgBpC,cAAc,aAAa,CAAC;AAC5B,cAAc,kBAAkB,CAAC;AACjC,cAAc,qBAAqB,CAAC;AAOpC;;GAEG;AACH,wBAAgB,aAAa,IAAI,OAAO,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAgBpC,cAAc,aAAa,CAAC;AAC5B,cAAc,kBAAkB,CAAC;AACjC,cAAc,qBAAqB,CAAC;AAOpC;;GAEG;AACH,wBAAgB,aAAa,IAAI,OAAO,CAuCvC;AAED;;GAEG;AACH,wBAAsB,MAAM,CAAC,IAAI,GAAE,MAAM,EAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CASzE"}
|
package/dist/cli/index.js
CHANGED
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
import { Command } from 'commander';
|
|
6
6
|
import { createAuthCommand, createCreateCommand, createStatusCommand, createValidateCommand, createSummaryCommand, createResumeCommand, createResetCommand, createCancelCommand, createConfigCommand, } from './commands/index.js';
|
|
7
7
|
import { startInteractiveMode } from './interactive.js';
|
|
8
|
-
import {
|
|
8
|
+
import { printError } from './output.js';
|
|
9
9
|
// Re-export
|
|
10
10
|
export * from './output.js';
|
|
11
11
|
export * from './interactive.js';
|
|
@@ -43,14 +43,11 @@ export function createProgram() {
|
|
|
43
43
|
.action(async () => {
|
|
44
44
|
await startInteractiveMode();
|
|
45
45
|
});
|
|
46
|
-
// Default action (no command specified)
|
|
46
|
+
// Default action (no command specified) - start interactive mode
|
|
47
47
|
program.action(async (_options, command) => {
|
|
48
|
-
// If no command specified and no arguments, show help
|
|
49
48
|
if (command.args.length === 0) {
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
console.log();
|
|
53
|
-
program.outputHelp();
|
|
49
|
+
// No command specified - start interactive mode with auto-auth
|
|
50
|
+
await startInteractiveMode();
|
|
54
51
|
}
|
|
55
52
|
});
|
|
56
53
|
return program;
|
package/dist/cli/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EACL,iBAAiB,EACjB,mBAAmB,EACnB,mBAAmB,EACnB,qBAAqB,EACrB,oBAAoB,EACpB,mBAAmB,EACnB,kBAAkB,EAClB,mBAAmB,EACnB,mBAAmB,GACpB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AACxD,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EACL,iBAAiB,EACjB,mBAAmB,EACnB,mBAAmB,EACnB,qBAAqB,EACrB,oBAAoB,EACpB,mBAAmB,EACnB,kBAAkB,EAClB,mBAAmB,EACnB,mBAAmB,GACpB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AACxD,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC,YAAY;AACZ,cAAc,aAAa,CAAC;AAC5B,cAAc,kBAAkB,CAAC;AACjC,cAAc,qBAAqB,CAAC;AAEpC;;GAEG;AACH,MAAM,OAAO,GAAG,OAAO,CAAC;AAExB;;GAEG;AACH,MAAM,UAAU,aAAa;IAC3B,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;IAE9B,OAAO;SACJ,IAAI,CAAC,YAAY,CAAC;SAClB,WAAW,CAAC,6EAA6E,CAAC;SAC1F,OAAO,CAAC,OAAO,CAAC;SAChB,MAAM,CAAC,eAAe,EAAE,uBAAuB,CAAC;SAChD,MAAM,CAAC,YAAY,EAAE,wBAAwB,CAAC,CAAC;IAElD,eAAe;IACf,OAAO,CAAC,UAAU,CAAC,iBAAiB,EAAE,CAAC,CAAC;IACxC,OAAO,CAAC,UAAU,CAAC,mBAAmB,EAAE,CAAC,CAAC;IAC1C,OAAO,CAAC,UAAU,CAAC,mBAAmB,EAAE,CAAC,CAAC;IAC1C,OAAO,CAAC,UAAU,CAAC,qBAAqB,EAAE,CAAC,CAAC;IAC5C,OAAO,CAAC,UAAU,CAAC,oBAAoB,EAAE,CAAC,CAAC;IAC3C,OAAO,CAAC,UAAU,CAAC,mBAAmB,EAAE,CAAC,CAAC;IAC1C,OAAO,CAAC,UAAU,CAAC,kBAAkB,EAAE,CAAC,CAAC;IACzC,OAAO,CAAC,UAAU,CAAC,mBAAmB,EAAE,CAAC,CAAC;IAC1C,OAAO,CAAC,UAAU,CAAC,mBAAmB,EAAE,CAAC,CAAC;IAE1C,2BAA2B;IAC3B,OAAO;SACJ,OAAO,CAAC,aAAa,CAAC;SACtB,KAAK,CAAC,GAAG,CAAC;SACV,WAAW,CAAC,wBAAwB,CAAC;SACrC,MAAM,CAAC,KAAK,IAAI,EAAE;QACjB,MAAM,oBAAoB,EAAE,CAAC;IAC/B,CAAC,CAAC,CAAC;IAEL,iEAAiE;IACjE,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE;QACzC,IAAI,OAAO,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC9B,+DAA+D;YAC/D,MAAM,oBAAoB,EAAE,CAAC;QAC/B,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,MAAM,CAAC,OAAiB,OAAO,CAAC,IAAI;IACxD,MAAM,OAAO,GAAG,aAAa,EAAE,CAAC;IAEhC,IAAI,CAAC;QACH,MAAM,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;IACjC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,UAAU,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC;QACrE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC"}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Interactive mode
|
|
3
|
-
*
|
|
3
|
+
* Claude Code-style interface for Popeye CLI
|
|
4
4
|
*/
|
|
5
5
|
/**
|
|
6
|
-
* Start interactive mode
|
|
6
|
+
* Start interactive mode with auto-authentication
|
|
7
7
|
*/
|
|
8
8
|
export declare function startInteractiveMode(): Promise<void>;
|
|
9
9
|
//# sourceMappingURL=interactive.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"interactive.d.ts","sourceRoot":"","sources":["../../src/cli/interactive.ts"],"names":[],"mappings":"AAAA;;;GAGG;
|
|
1
|
+
{"version":3,"file":"interactive.d.ts","sourceRoot":"","sources":["../../src/cli/interactive.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAkuDH;;GAEG;AACH,wBAAsB,oBAAoB,IAAI,OAAO,CAAC,IAAI,CAAC,CA0E1D"}
|