@cyanautomation/kaseki-agent 1.5.4 ā 1.6.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.
|
@@ -4,20 +4,11 @@
|
|
|
4
4
|
*/
|
|
5
5
|
import { BaseCommand } from '../BaseCommand';
|
|
6
6
|
export declare class SetupCommand extends BaseCommand {
|
|
7
|
-
private rl;
|
|
8
7
|
execute(_args: string[]): Promise<number>;
|
|
9
8
|
/**
|
|
10
|
-
* Prompt user for configuration answers
|
|
9
|
+
* Prompt user for configuration answers using enquirer
|
|
11
10
|
*/
|
|
12
11
|
private promptForAnswers;
|
|
13
|
-
/**
|
|
14
|
-
* Prompt for single answer with optional masking
|
|
15
|
-
*/
|
|
16
|
-
private prompt;
|
|
17
|
-
/**
|
|
18
|
-
* Prompt for choice from list
|
|
19
|
-
*/
|
|
20
|
-
private promptChoice;
|
|
21
12
|
/**
|
|
22
13
|
* Save configuration to file and secrets
|
|
23
14
|
*/
|
|
@@ -34,9 +25,5 @@ export declare class SetupCommand extends BaseCommand {
|
|
|
34
25
|
* Check if Node.js version is v24+
|
|
35
26
|
*/
|
|
36
27
|
private isNodeVersionValid;
|
|
37
|
-
/**
|
|
38
|
-
* Close readline interface
|
|
39
|
-
*/
|
|
40
|
-
private closeReadline;
|
|
41
28
|
}
|
|
42
29
|
//# sourceMappingURL=SetupCommand.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SetupCommand.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/SetupCommand.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAQH,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAY7C,qBAAa,YAAa,SAAQ,WAAW;
|
|
1
|
+
{"version":3,"file":"SetupCommand.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/SetupCommand.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAQH,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAY7C,qBAAa,YAAa,SAAQ,WAAW;IACrC,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC;IAoE/C;;OAEG;YACW,gBAAgB;IAwD9B;;OAEG;YACW,iBAAiB;IA2B/B;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAWzB;;OAEG;IACH,OAAO,CAAC,cAAc;IAStB;;OAEG;IACH,OAAO,CAAC,kBAAkB;CAI3B"}
|
|
@@ -2,17 +2,16 @@
|
|
|
2
2
|
* Setup Command
|
|
3
3
|
* Interactive setup wizard for first-time configuration
|
|
4
4
|
*/
|
|
5
|
-
import readline from 'readline';
|
|
6
5
|
import { execSync } from 'child_process';
|
|
7
6
|
import path from 'path';
|
|
8
7
|
import os from 'os';
|
|
8
|
+
import Enquirer from 'enquirer';
|
|
9
9
|
import { SecretsManager } from '../../secrets/SecretsManager.js';
|
|
10
10
|
import { DoctorCommand } from './DoctorCommand.js';
|
|
11
11
|
import { BaseCommand } from '../BaseCommand.js';
|
|
12
12
|
import { createLogger } from '../../logger.js';
|
|
13
13
|
const logger = createLogger('setup-cmd');
|
|
14
14
|
export class SetupCommand extends BaseCommand {
|
|
15
|
-
rl = null;
|
|
16
15
|
async execute(_args) {
|
|
17
16
|
try {
|
|
18
17
|
console.log('\nš§ Kaseki Agent Setup Wizard\n');
|
|
@@ -67,120 +66,63 @@ export class SetupCommand extends BaseCommand {
|
|
|
67
66
|
logger.error(`Setup failed: ${error}`);
|
|
68
67
|
return 1;
|
|
69
68
|
}
|
|
70
|
-
finally {
|
|
71
|
-
this.closeReadline();
|
|
72
|
-
}
|
|
73
69
|
}
|
|
74
70
|
/**
|
|
75
|
-
* Prompt user for configuration answers
|
|
71
|
+
* Prompt user for configuration answers using enquirer
|
|
76
72
|
*/
|
|
77
73
|
async promptForAnswers() {
|
|
78
74
|
try {
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
{
|
|
96
|
-
|
|
75
|
+
const enquirer = new Enquirer();
|
|
76
|
+
const answers = await enquirer.prompt([
|
|
77
|
+
{
|
|
78
|
+
type: 'password',
|
|
79
|
+
name: 'apiKey',
|
|
80
|
+
message: 'š Enter your OpenRouter API key (sk-or-...)',
|
|
81
|
+
validate: (value) => {
|
|
82
|
+
if (!value) {
|
|
83
|
+
return 'API key is required.';
|
|
84
|
+
}
|
|
85
|
+
if (!value.startsWith('sk-or-')) {
|
|
86
|
+
return 'API key should start with "sk-or-"';
|
|
87
|
+
}
|
|
88
|
+
return true;
|
|
89
|
+
},
|
|
90
|
+
},
|
|
91
|
+
{
|
|
92
|
+
type: 'select',
|
|
93
|
+
name: 'configLocation',
|
|
94
|
+
message: 'Where should config be stored?',
|
|
95
|
+
choices: [
|
|
96
|
+
{ name: 'project', message: 'Project-local (./kaseki-agent.json)' },
|
|
97
|
+
{ name: 'global', message: 'User home (~/.kaseki/config.json)' },
|
|
98
|
+
],
|
|
99
|
+
},
|
|
100
|
+
{
|
|
101
|
+
type: 'input',
|
|
102
|
+
name: 'modelName',
|
|
103
|
+
message: 'Model identifier (default: openrouter/free): ',
|
|
104
|
+
initial: 'openrouter/free',
|
|
105
|
+
},
|
|
97
106
|
]);
|
|
98
|
-
if (!
|
|
107
|
+
if (!answers) {
|
|
99
108
|
return null;
|
|
100
109
|
}
|
|
101
|
-
// Prompt for model
|
|
102
|
-
const modelName = await this.prompt('Model identifier (default: openrouter/free): ', false);
|
|
103
110
|
return {
|
|
104
|
-
apiKey,
|
|
105
|
-
configLocation: configLocation,
|
|
111
|
+
apiKey: answers.apiKey,
|
|
112
|
+
configLocation: answers.configLocation,
|
|
106
113
|
validationCommands: [
|
|
107
114
|
'npm run check',
|
|
108
115
|
'npm run test',
|
|
109
116
|
'npm run build',
|
|
110
117
|
],
|
|
111
|
-
modelName: modelName || 'openrouter/free',
|
|
118
|
+
modelName: answers.modelName || 'openrouter/free',
|
|
112
119
|
};
|
|
113
120
|
}
|
|
114
|
-
|
|
115
|
-
|
|
121
|
+
catch (error) {
|
|
122
|
+
logger.error(`Failed to prompt for answers: ${error}`);
|
|
123
|
+
return null;
|
|
116
124
|
}
|
|
117
125
|
}
|
|
118
|
-
/**
|
|
119
|
-
* Prompt for single answer with optional masking
|
|
120
|
-
*/
|
|
121
|
-
prompt(question, mask = false) {
|
|
122
|
-
return new Promise((resolve) => {
|
|
123
|
-
if (!this.rl) {
|
|
124
|
-
resolve(null);
|
|
125
|
-
return;
|
|
126
|
-
}
|
|
127
|
-
if (mask) {
|
|
128
|
-
// Mask password input
|
|
129
|
-
process.stdout.write(question);
|
|
130
|
-
const stdin = process.stdin;
|
|
131
|
-
stdin.resume();
|
|
132
|
-
stdin.setRawMode(true);
|
|
133
|
-
let password = '';
|
|
134
|
-
stdin.on('data', (char) => {
|
|
135
|
-
const charStr = char.toString('utf-8');
|
|
136
|
-
if (charStr === '\n' || charStr === '\r' || charStr === '\u0004') {
|
|
137
|
-
// Enter key or Ctrl-D
|
|
138
|
-
stdin.setRawMode(false);
|
|
139
|
-
stdin.pause();
|
|
140
|
-
console.log(); // Newline for cleanliness
|
|
141
|
-
resolve(password);
|
|
142
|
-
}
|
|
143
|
-
else if (charStr === '\u0003') {
|
|
144
|
-
// Ctrl-C
|
|
145
|
-
process.exit();
|
|
146
|
-
}
|
|
147
|
-
else {
|
|
148
|
-
password += charStr;
|
|
149
|
-
process.stdout.write('*');
|
|
150
|
-
}
|
|
151
|
-
});
|
|
152
|
-
}
|
|
153
|
-
else {
|
|
154
|
-
this.rl.question(question, (answer) => {
|
|
155
|
-
resolve(answer || null);
|
|
156
|
-
});
|
|
157
|
-
}
|
|
158
|
-
});
|
|
159
|
-
}
|
|
160
|
-
/**
|
|
161
|
-
* Prompt for choice from list
|
|
162
|
-
*/
|
|
163
|
-
async promptChoice(question, choices) {
|
|
164
|
-
return new Promise((resolve) => {
|
|
165
|
-
if (!this.rl) {
|
|
166
|
-
resolve(null);
|
|
167
|
-
return;
|
|
168
|
-
}
|
|
169
|
-
console.log(`\n${question}`);
|
|
170
|
-
choices.forEach((choice, index) => {
|
|
171
|
-
console.log(` ${index + 1}) ${choice.label}`);
|
|
172
|
-
});
|
|
173
|
-
this.rl.question('Enter number (1-' + choices.length + '): ', (answer) => {
|
|
174
|
-
const index = parseInt(answer, 10) - 1;
|
|
175
|
-
if (index >= 0 && index < choices.length) {
|
|
176
|
-
resolve(choices[index].value);
|
|
177
|
-
}
|
|
178
|
-
else {
|
|
179
|
-
resolve(null);
|
|
180
|
-
}
|
|
181
|
-
});
|
|
182
|
-
});
|
|
183
|
-
}
|
|
184
126
|
/**
|
|
185
127
|
* Save configuration to file and secrets
|
|
186
128
|
*/
|
|
@@ -236,14 +178,5 @@ export class SetupCommand extends BaseCommand {
|
|
|
236
178
|
const major = parseInt(version.split('.')[0], 10);
|
|
237
179
|
return major >= 24;
|
|
238
180
|
}
|
|
239
|
-
/**
|
|
240
|
-
* Close readline interface
|
|
241
|
-
*/
|
|
242
|
-
closeReadline() {
|
|
243
|
-
if (this.rl) {
|
|
244
|
-
this.rl.close();
|
|
245
|
-
this.rl = null;
|
|
246
|
-
}
|
|
247
|
-
}
|
|
248
181
|
}
|
|
249
182
|
//# sourceMappingURL=SetupCommand.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SetupCommand.js","sourceRoot":"","sources":["../../../src/cli/commands/SetupCommand.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,
|
|
1
|
+
{"version":3,"file":"SetupCommand.js","sourceRoot":"","sources":["../../../src/cli/commands/SetupCommand.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cyanautomation/kaseki-agent",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.6.0",
|
|
4
4
|
"description": "Ephemeral coding-agent runner: orchestrates Pi CLI via Docker for automated code modifications with validation",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "MIT",
|
|
@@ -72,6 +72,7 @@
|
|
|
72
72
|
"test:pack-artifact": "bash scripts/check-packed-artifact.sh"
|
|
73
73
|
},
|
|
74
74
|
"dependencies": {
|
|
75
|
+
"enquirer": "^2.4.1",
|
|
75
76
|
"express": "^4.18.2",
|
|
76
77
|
"zod": "^3.22.4"
|
|
77
78
|
},
|