@sylix/coworker 1.2.0 → 1.2.2
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/dist/cli/index.d.ts +0 -4
- package/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/index.js +276 -96
- package/dist/cli/index.js.map +1 -1
- package/dist/config/AuthManager.d.ts +37 -0
- package/dist/config/AuthManager.d.ts.map +1 -0
- package/dist/config/AuthManager.js +187 -0
- package/dist/config/AuthManager.js.map +1 -0
- package/dist/utils/output.d.ts +40 -0
- package/dist/utils/output.d.ts.map +1 -0
- package/dist/utils/output.js +302 -0
- package/dist/utils/output.js.map +1 -0
- package/package.json +1 -1
package/dist/cli/index.d.ts
CHANGED
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":";
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":";AAsMA,wBAAsB,iBAAiB,kBA+HtC"}
|
package/dist/cli/index.js
CHANGED
|
@@ -35,119 +35,128 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
35
35
|
})();
|
|
36
36
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
37
37
|
exports.bootstrapCoWorker = bootstrapCoWorker;
|
|
38
|
-
const commander_1 = require("commander");
|
|
39
38
|
const CoWorkerAgent_1 = require("../core/CoWorkerAgent");
|
|
39
|
+
const AuthManager_1 = require("../config/AuthManager");
|
|
40
40
|
const child_process_1 = require("child_process");
|
|
41
41
|
const http = __importStar(require("http"));
|
|
42
42
|
const ws_1 = require("ws");
|
|
43
|
+
const readline = __importStar(require("readline"));
|
|
44
|
+
const output_1 = require("../utils/output");
|
|
43
45
|
/**
|
|
44
|
-
*
|
|
45
|
-
*
|
|
46
|
+
* CoWorker CLI — Interactive Agentic Coding Assistant.
|
|
47
|
+
* Default behavior: launches an interactive chat REPL (like Claude Code).
|
|
46
48
|
*/
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
}
|
|
57
|
-
const program = new commander_1.Command();
|
|
58
|
-
program.allowUnknownOption();
|
|
59
|
-
program.passThroughOptions();
|
|
60
|
-
program
|
|
61
|
-
.name('coworker')
|
|
62
|
-
.description('Autonomous Agentic Parity to Claude Code')
|
|
63
|
-
.version('1.0.0')
|
|
64
|
-
.option('-p, --print', 'One-shot mode, process and exit')
|
|
65
|
-
.option('-c, --continue', 'Resume most recent session')
|
|
66
|
-
.option('-r, --resume <id>', 'Resume specific session UUID')
|
|
67
|
-
.option('-w, --worktree', 'Run in an isolated git worktree branch')
|
|
68
|
-
.option('--output-format <format>', 'text | json', 'text')
|
|
69
|
-
.option('--model <name>', 'Override default model', 'helix-1.2')
|
|
70
|
-
.option('--dangerously-skip-permissions', 'Bypass all security policies')
|
|
71
|
-
.option('--remote-control <port>', 'Start REST/WebSocket server for IDE access');
|
|
72
|
-
program
|
|
73
|
-
.command('update')
|
|
74
|
-
.description('Auto-update the CoWorker CLI')
|
|
75
|
-
.action(() => {
|
|
76
|
-
console.log('Downloading latest release...');
|
|
77
|
-
(0, child_process_1.spawnSync)('npm', ['install', '-g', 'coworker'], { stdio: 'inherit' });
|
|
78
|
-
process.exit(0);
|
|
49
|
+
const VERSION = '1.2.2';
|
|
50
|
+
// ============================================================================
|
|
51
|
+
// INTERACTIVE CHAT REPL
|
|
52
|
+
// ============================================================================
|
|
53
|
+
async function runInteractiveChat(agent, opts) {
|
|
54
|
+
const rl = readline.createInterface({
|
|
55
|
+
input: process.stdin,
|
|
56
|
+
output: process.stdout,
|
|
57
|
+
terminal: true
|
|
79
58
|
});
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
.
|
|
84
|
-
console.log(`Authentication ${action} is active.`);
|
|
59
|
+
// Graceful exit
|
|
60
|
+
process.on('SIGINT', () => {
|
|
61
|
+
(0, output_1.printExit)();
|
|
62
|
+
rl.close();
|
|
85
63
|
process.exit(0);
|
|
86
64
|
});
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
65
|
+
// Animated startup banner
|
|
66
|
+
if (!opts.skipBanner) {
|
|
67
|
+
const token = await AuthManager_1.AuthManager.getToken();
|
|
68
|
+
const authData = token ? await AuthManager_1.AuthManager.loadAuthPublic() : null;
|
|
69
|
+
await (0, output_1.showBanner)(VERSION, authData?.user?.email, opts.model);
|
|
70
|
+
}
|
|
71
|
+
// Session info
|
|
72
|
+
console.log(output_1.theme.dim(` cwd: ${process.cwd()}`));
|
|
73
|
+
console.log(output_1.theme.dim(` session: ${agent.sessions.currentSessionId.substring(0, 8)}...`));
|
|
74
|
+
console.log(output_1.theme.dim(` tips: /help for commands, Ctrl+C to exit`));
|
|
75
|
+
console.log('');
|
|
76
|
+
const askPrompt = () => {
|
|
77
|
+
return new Promise((resolve) => {
|
|
78
|
+
rl.question(` ${output_1.theme.white('You')} ${output_1.theme.dim('›')} `, (answer) => {
|
|
79
|
+
resolve(answer.trim());
|
|
80
|
+
});
|
|
81
|
+
});
|
|
82
|
+
};
|
|
83
|
+
// Main REPL loop
|
|
84
|
+
while (true) {
|
|
85
|
+
const input = await askPrompt();
|
|
86
|
+
if (!input)
|
|
87
|
+
continue;
|
|
88
|
+
// ── Slash commands ──
|
|
89
|
+
if (input === '/exit' || input === '/quit') {
|
|
90
|
+
(0, output_1.printExit)();
|
|
91
|
+
break;
|
|
92
|
+
}
|
|
93
|
+
if (input === '/clear') {
|
|
94
|
+
console.clear();
|
|
95
|
+
(0, output_1.showStaticBanner)(VERSION);
|
|
96
|
+
continue;
|
|
97
|
+
}
|
|
98
|
+
if (input === '/status') {
|
|
99
|
+
await AuthManager_1.AuthManager.status();
|
|
100
|
+
continue;
|
|
101
|
+
}
|
|
102
|
+
if (input === '/help') {
|
|
103
|
+
(0, output_1.printHelp)();
|
|
104
|
+
continue;
|
|
105
|
+
}
|
|
106
|
+
if (input === '/compact') {
|
|
107
|
+
const msgCount = agent.sessions.state.messages.length;
|
|
108
|
+
const totalChars = agent.sessions.state.messages.reduce((a, m) => a + (m.content?.length || 0), 0);
|
|
109
|
+
(0, output_1.printCompact)(msgCount, Math.ceil(totalChars / 4), agent.sessions.currentSessionId);
|
|
110
|
+
continue;
|
|
111
|
+
}
|
|
112
|
+
// ── Run the agentic loop ──
|
|
113
|
+
console.log('');
|
|
114
|
+
// Thinking animation
|
|
115
|
+
const thinking = new output_1.ThinkingAnimation();
|
|
116
|
+
thinking.start();
|
|
117
|
+
const startTime = Date.now();
|
|
118
|
+
let responseText = '';
|
|
119
|
+
let headerPrinted = false;
|
|
92
120
|
try {
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
121
|
+
for await (const chunk of agent.chat(input)) {
|
|
122
|
+
// First chunk? Stop thinking, show response box
|
|
123
|
+
if (!headerPrinted) {
|
|
124
|
+
thinking.stop();
|
|
125
|
+
(0, output_1.printResponseHeader)();
|
|
126
|
+
headerPrinted = true;
|
|
127
|
+
}
|
|
128
|
+
// Stream into the box
|
|
129
|
+
process.stdout.write(output_1.theme.ai(` │ ${chunk.replace(/\n/g, '\n │ ')}`));
|
|
130
|
+
responseText += chunk;
|
|
131
|
+
}
|
|
96
132
|
}
|
|
97
|
-
catch {
|
|
98
|
-
|
|
99
|
-
|
|
133
|
+
catch (err) {
|
|
134
|
+
thinking.stop();
|
|
135
|
+
(0, output_1.printError)(`Error: ${err.message}`, undefined, 'Check your network connection or try again');
|
|
136
|
+
continue;
|
|
100
137
|
}
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
const port = parseInt(options.remoteControl, 10);
|
|
104
|
-
startHeadlessServer(port);
|
|
105
|
-
return;
|
|
106
|
-
}
|
|
107
|
-
// Determine resuming logic
|
|
108
|
-
let sessionId = undefined;
|
|
109
|
-
if (options.resume)
|
|
110
|
-
sessionId = options.resume;
|
|
111
|
-
else if (options.continue)
|
|
112
|
-
sessionId = 'latest';
|
|
113
|
-
const agent = new CoWorkerAgent_1.CoWorkerAgent({ model: options.model, role: 'General' });
|
|
114
|
-
if (sessionId) {
|
|
115
|
-
agent.sessions.currentSessionId = sessionId;
|
|
116
|
-
}
|
|
117
|
-
// Boot async subsystems (Settings, MCP servers, Skills)
|
|
118
|
-
await agent.boot();
|
|
119
|
-
// Apply --dangerously-skip-permissions if provided
|
|
120
|
-
if (options.dangerouslySkipPermissions) {
|
|
121
|
-
console.log('\x1b[31m⚠️ WARNING: All permission checks are DISABLED.\x1b[0m');
|
|
122
|
-
agent.permissions = { intercept: async () => true };
|
|
123
|
-
}
|
|
124
|
-
// One shot processing mode
|
|
125
|
-
if (options.print && program.args.length > 0) {
|
|
126
|
-
runOneShot(agent, program.args.join(' '), options.outputFormat);
|
|
127
|
-
}
|
|
128
|
-
else if (renderCoWorkerUI) {
|
|
129
|
-
// Launch the React Ink Terminal UI for interactive mode
|
|
130
|
-
const prompt = program.args.length > 0 ? program.args.join(' ') : undefined;
|
|
131
|
-
renderCoWorkerUI(agent, prompt);
|
|
132
|
-
}
|
|
133
|
-
else {
|
|
134
|
-
// Fallback: use one-shot mode for prompts
|
|
135
|
-
const prompt = program.args.length > 0 ? program.args.join(' ') : undefined;
|
|
136
|
-
if (prompt) {
|
|
137
|
-
runOneShot(agent, prompt, options.outputFormat);
|
|
138
|
+
if (!headerPrinted) {
|
|
139
|
+
thinking.stop();
|
|
138
140
|
}
|
|
139
|
-
|
|
140
|
-
|
|
141
|
+
const elapsed = Date.now() - startTime;
|
|
142
|
+
const tokenEst = Math.ceil(responseText.length / 4);
|
|
143
|
+
if (headerPrinted) {
|
|
144
|
+
console.log(''); // newline after streamed content
|
|
145
|
+
(0, output_1.printResponseFooter)(elapsed, tokenEst);
|
|
141
146
|
}
|
|
147
|
+
console.log('');
|
|
142
148
|
}
|
|
149
|
+
rl.close();
|
|
150
|
+
process.exit(0);
|
|
143
151
|
}
|
|
152
|
+
// ============================================================================
|
|
153
|
+
// ONE-SHOT MODE
|
|
154
|
+
// ============================================================================
|
|
144
155
|
async function runOneShot(agent, prompt, format) {
|
|
145
156
|
let outputText = '';
|
|
146
|
-
// Stream the generator
|
|
147
157
|
for await (const chunk of agent.chat(prompt)) {
|
|
148
|
-
if (format === 'text')
|
|
158
|
+
if (format === 'text')
|
|
149
159
|
process.stdout.write(chunk);
|
|
150
|
-
}
|
|
151
160
|
outputText += chunk;
|
|
152
161
|
}
|
|
153
162
|
if (format === 'json') {
|
|
@@ -155,12 +164,14 @@ async function runOneShot(agent, prompt, format) {
|
|
|
155
164
|
}
|
|
156
165
|
process.exit(0);
|
|
157
166
|
}
|
|
167
|
+
// ============================================================================
|
|
168
|
+
// HEADLESS / REMOTE CONTROL SERVER
|
|
169
|
+
// ============================================================================
|
|
158
170
|
function startHeadlessServer(port) {
|
|
159
171
|
const server = http.createServer();
|
|
160
172
|
const wss = new ws_1.WebSocketServer({ server });
|
|
161
173
|
wss.on('connection', (ws) => {
|
|
162
174
|
console.log('[Remote-Control] IDE Connected via WebSocket');
|
|
163
|
-
// Each IDE window instance gets its own agent session tracking
|
|
164
175
|
const remoteAgent = new CoWorkerAgent_1.CoWorkerAgent({ model: 'helix-1.2', role: 'General' });
|
|
165
176
|
ws.on('message', async (data) => {
|
|
166
177
|
const { prompt, sessionId } = JSON.parse(data.toString());
|
|
@@ -173,10 +184,179 @@ function startHeadlessServer(port) {
|
|
|
173
184
|
});
|
|
174
185
|
});
|
|
175
186
|
server.listen(port, () => {
|
|
176
|
-
console.log(`[Remote-Control] Listening
|
|
187
|
+
console.log(`[Remote-Control] Listening on port ${port}...`);
|
|
177
188
|
});
|
|
178
189
|
}
|
|
179
|
-
//
|
|
190
|
+
// ============================================================================
|
|
191
|
+
// CLI MAIN — Manual arg parsing (Commander.js overrides default behavior)
|
|
192
|
+
// ============================================================================
|
|
193
|
+
async function bootstrapCoWorker() {
|
|
194
|
+
const args = process.argv.slice(2);
|
|
195
|
+
const command = args[0];
|
|
196
|
+
// ── Subcommands ──
|
|
197
|
+
if (command === 'login') {
|
|
198
|
+
await AuthManager_1.AuthManager.login();
|
|
199
|
+
return;
|
|
200
|
+
}
|
|
201
|
+
if (command === 'logout') {
|
|
202
|
+
await AuthManager_1.AuthManager.logout();
|
|
203
|
+
return;
|
|
204
|
+
}
|
|
205
|
+
if (command === 'status') {
|
|
206
|
+
await AuthManager_1.AuthManager.status();
|
|
207
|
+
return;
|
|
208
|
+
}
|
|
209
|
+
if (command === 'update') {
|
|
210
|
+
console.log(output_1.theme.dim(' Downloading latest release...'));
|
|
211
|
+
(0, child_process_1.spawnSync)('npm', ['install', '-g', '@sylix/coworker'], { stdio: 'inherit', shell: true });
|
|
212
|
+
(0, output_1.printSuccess)('CoWorker updated');
|
|
213
|
+
return;
|
|
214
|
+
}
|
|
215
|
+
if (command === '-V' || command === '--version') {
|
|
216
|
+
console.log(VERSION);
|
|
217
|
+
return;
|
|
218
|
+
}
|
|
219
|
+
if (command === '-h' || command === '--help' || command === 'help') {
|
|
220
|
+
(0, output_1.showStaticBanner)(VERSION);
|
|
221
|
+
console.log(` ${output_1.theme.white('Usage:')} coworker [prompt] [options]\n`);
|
|
222
|
+
console.log(` ${output_1.theme.brand('Commands:')}`);
|
|
223
|
+
console.log(` ${output_1.theme.code('login')} ${output_1.theme.dim('Authenticate with your Sylix account')}`);
|
|
224
|
+
console.log(` ${output_1.theme.code('logout')} ${output_1.theme.dim('Remove saved credentials')}`);
|
|
225
|
+
console.log(` ${output_1.theme.code('status')} ${output_1.theme.dim('Show auth & account status')}`);
|
|
226
|
+
console.log(` ${output_1.theme.code('update')} ${output_1.theme.dim('Auto-update the CoWorker CLI')}\n`);
|
|
227
|
+
console.log(` ${output_1.theme.brand('Options:')}`);
|
|
228
|
+
console.log(` ${output_1.theme.code('-p, --print')} ${output_1.theme.dim('One-shot mode (process and exit)')}`);
|
|
229
|
+
console.log(` ${output_1.theme.code('-c, --continue')} ${output_1.theme.dim('Resume most recent session')}`);
|
|
230
|
+
console.log(` ${output_1.theme.code('-r, --resume <id>')} ${output_1.theme.dim('Resume specific session UUID')}`);
|
|
231
|
+
console.log(` ${output_1.theme.code('-w, --worktree')} ${output_1.theme.dim('Run in an isolated git worktree')}`);
|
|
232
|
+
console.log(` ${output_1.theme.code('--model <name>')} ${output_1.theme.dim('Override model (default: helix-1.2)')}`);
|
|
233
|
+
console.log(` ${output_1.theme.code('--dangerously-skip-permissions')} ${output_1.theme.dim('Bypass all security policies')}`);
|
|
234
|
+
console.log(` ${output_1.theme.code('--remote-control <port>')} ${output_1.theme.dim('Start WebSocket server for IDE')}`);
|
|
235
|
+
console.log(` ${output_1.theme.code('--no-banner')} ${output_1.theme.dim('Skip the animated startup banner')}`);
|
|
236
|
+
console.log(` ${output_1.theme.code('-V, --version')} ${output_1.theme.dim('Output version number')}`);
|
|
237
|
+
console.log(` ${output_1.theme.code('-h, --help')} ${output_1.theme.dim('Display help')}\n`);
|
|
238
|
+
return;
|
|
239
|
+
}
|
|
240
|
+
// ── Parse flags ──
|
|
241
|
+
let model = 'helix-1.2';
|
|
242
|
+
let outputFormat = 'text';
|
|
243
|
+
let resumeSession;
|
|
244
|
+
let printMode = false;
|
|
245
|
+
let skipPermissions = false;
|
|
246
|
+
let worktree = false;
|
|
247
|
+
let noBanner = false;
|
|
248
|
+
let remotePort;
|
|
249
|
+
const promptParts = [];
|
|
250
|
+
for (let i = 0; i < args.length; i++) {
|
|
251
|
+
const arg = args[i];
|
|
252
|
+
if (arg === '-p' || arg === '--print') {
|
|
253
|
+
printMode = true;
|
|
254
|
+
continue;
|
|
255
|
+
}
|
|
256
|
+
if (arg === '-c' || arg === '--continue') {
|
|
257
|
+
resumeSession = 'latest';
|
|
258
|
+
continue;
|
|
259
|
+
}
|
|
260
|
+
if (arg === '-r' || arg === '--resume') {
|
|
261
|
+
resumeSession = args[++i];
|
|
262
|
+
continue;
|
|
263
|
+
}
|
|
264
|
+
if (arg === '-w' || arg === '--worktree') {
|
|
265
|
+
worktree = true;
|
|
266
|
+
continue;
|
|
267
|
+
}
|
|
268
|
+
if (arg === '--output-format') {
|
|
269
|
+
outputFormat = args[++i] || 'text';
|
|
270
|
+
continue;
|
|
271
|
+
}
|
|
272
|
+
if (arg === '--model') {
|
|
273
|
+
model = args[++i] || 'helix-1.2';
|
|
274
|
+
continue;
|
|
275
|
+
}
|
|
276
|
+
if (arg === '--dangerously-skip-permissions') {
|
|
277
|
+
skipPermissions = true;
|
|
278
|
+
continue;
|
|
279
|
+
}
|
|
280
|
+
if (arg === '--remote-control') {
|
|
281
|
+
remotePort = parseInt(args[++i], 10);
|
|
282
|
+
continue;
|
|
283
|
+
}
|
|
284
|
+
if (arg === '--no-banner') {
|
|
285
|
+
noBanner = true;
|
|
286
|
+
continue;
|
|
287
|
+
}
|
|
288
|
+
promptParts.push(arg);
|
|
289
|
+
}
|
|
290
|
+
// ── Worktree isolation ──
|
|
291
|
+
if (worktree) {
|
|
292
|
+
console.log(output_1.theme.dim(' [Isolating Agent...] Creating Git Worktree'));
|
|
293
|
+
try {
|
|
294
|
+
(0, child_process_1.spawnSync)('git', ['worktree', 'add', '../coworker-task', '-b', `coworker/temp-${Date.now()}`]);
|
|
295
|
+
process.chdir('../coworker-task');
|
|
296
|
+
(0, output_1.printSuccess)('Isolated to git worktree');
|
|
297
|
+
}
|
|
298
|
+
catch {
|
|
299
|
+
(0, output_1.printError)('Failed to create Git worktree', 'Ensure repo is clean and you are in a git directory');
|
|
300
|
+
process.exit(1);
|
|
301
|
+
}
|
|
302
|
+
}
|
|
303
|
+
// ── Remote control mode ──
|
|
304
|
+
if (remotePort) {
|
|
305
|
+
startHeadlessServer(remotePort);
|
|
306
|
+
return;
|
|
307
|
+
}
|
|
308
|
+
// ── Boot agent ──
|
|
309
|
+
const agent = new CoWorkerAgent_1.CoWorkerAgent({ model, role: 'General' });
|
|
310
|
+
if (resumeSession) {
|
|
311
|
+
agent.sessions.currentSessionId = resumeSession;
|
|
312
|
+
}
|
|
313
|
+
await agent.boot();
|
|
314
|
+
if (skipPermissions) {
|
|
315
|
+
console.log(output_1.theme.error(' ⚠️ WARNING: All permission checks are DISABLED.'));
|
|
316
|
+
agent.permissions = { intercept: async () => true };
|
|
317
|
+
}
|
|
318
|
+
// ── Execute ──
|
|
319
|
+
const initialPrompt = promptParts.join(' ').trim();
|
|
320
|
+
if (printMode && initialPrompt) {
|
|
321
|
+
await runOneShot(agent, initialPrompt, outputFormat);
|
|
322
|
+
}
|
|
323
|
+
else if (initialPrompt) {
|
|
324
|
+
// Run prompt inline, then drop into REPL
|
|
325
|
+
if (!noBanner) {
|
|
326
|
+
const token = await AuthManager_1.AuthManager.getToken();
|
|
327
|
+
const authData = token ? await AuthManager_1.AuthManager.loadAuthPublic() : null;
|
|
328
|
+
await (0, output_1.showBanner)(VERSION, authData?.user?.email, model);
|
|
329
|
+
}
|
|
330
|
+
const thinking = new output_1.ThinkingAnimation();
|
|
331
|
+
thinking.start();
|
|
332
|
+
const startTime = Date.now();
|
|
333
|
+
let responseText = '';
|
|
334
|
+
let headerPrinted = false;
|
|
335
|
+
for await (const chunk of agent.chat(initialPrompt)) {
|
|
336
|
+
if (!headerPrinted) {
|
|
337
|
+
thinking.stop();
|
|
338
|
+
(0, output_1.printResponseHeader)();
|
|
339
|
+
headerPrinted = true;
|
|
340
|
+
}
|
|
341
|
+
process.stdout.write(output_1.theme.ai(` │ ${chunk.replace(/\n/g, '\n │ ')}`));
|
|
342
|
+
responseText += chunk;
|
|
343
|
+
}
|
|
344
|
+
if (!headerPrinted)
|
|
345
|
+
thinking.stop();
|
|
346
|
+
const elapsed = Date.now() - startTime;
|
|
347
|
+
if (headerPrinted) {
|
|
348
|
+
console.log('');
|
|
349
|
+
(0, output_1.printResponseFooter)(elapsed, Math.ceil(responseText.length / 4));
|
|
350
|
+
}
|
|
351
|
+
console.log('');
|
|
352
|
+
await runInteractiveChat(agent, { model, skipBanner: true });
|
|
353
|
+
}
|
|
354
|
+
else {
|
|
355
|
+
// DEFAULT: No args → interactive chat REPL
|
|
356
|
+
await runInteractiveChat(agent, { model, skipBanner: noBanner });
|
|
357
|
+
}
|
|
358
|
+
}
|
|
359
|
+
// Self-execute
|
|
180
360
|
if (require.main === module) {
|
|
181
361
|
bootstrapCoWorker();
|
|
182
362
|
}
|
package/dist/cli/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAsMA,8CA+HC;AApUD,yDAAsD;AACtD,uDAAoD;AACpD,iDAA0C;AAC1C,2CAA6B;AAC7B,2BAAqC;AACrC,mDAAqC;AACrC,4CAayB;AAEzB;;;GAGG;AAEH,MAAM,OAAO,GAAG,OAAO,CAAC;AAExB,+EAA+E;AAC/E,wBAAwB;AACxB,+EAA+E;AAE/E,KAAK,UAAU,kBAAkB,CAAC,KAAoB,EAAE,IAA6C;IACnG,MAAM,EAAE,GAAG,QAAQ,CAAC,eAAe,CAAC;QAClC,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,QAAQ,EAAE,IAAI;KACf,CAAC,CAAC;IAEH,gBAAgB;IAChB,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAG,EAAE;QACxB,IAAA,kBAAS,GAAE,CAAC;QACZ,EAAE,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC,CAAC,CAAC;IAEH,0BAA0B;IAC1B,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;QACrB,MAAM,KAAK,GAAG,MAAM,yBAAW,CAAC,QAAQ,EAAE,CAAC;QAC3C,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,CAAC,MAAM,yBAAW,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;QACnE,MAAM,IAAA,mBAAU,EAAC,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;IAC/D,CAAC;IAED,eAAe;IACf,OAAO,CAAC,GAAG,CAAC,cAAK,CAAC,GAAG,CAAC,cAAc,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC;IACtD,OAAO,CAAC,GAAG,CAAC,cAAK,CAAC,GAAG,CAAC,cAAc,KAAK,CAAC,QAAQ,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;IAC3F,OAAO,CAAC,GAAG,CAAC,cAAK,CAAC,GAAG,CAAC,+CAA+C,CAAC,CAAC,CAAC;IACxE,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAEhB,MAAM,SAAS,GAAG,GAAoB,EAAE;QACtC,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;YAC7B,EAAE,CAAC,QAAQ,CAAC,KAAK,cAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,cAAK,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,MAAc,EAAE,EAAE;gBAC7E,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;YACzB,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC,CAAC;IAEF,iBAAiB;IACjB,OAAO,IAAI,EAAE,CAAC;QACZ,MAAM,KAAK,GAAG,MAAM,SAAS,EAAE,CAAC;QAEhC,IAAI,CAAC,KAAK;YAAE,SAAS;QAErB,uBAAuB;QACvB,IAAI,KAAK,KAAK,OAAO,IAAI,KAAK,KAAK,OAAO,EAAE,CAAC;YAC3C,IAAA,kBAAS,GAAE,CAAC;YACZ,MAAM;QACR,CAAC;QACD,IAAI,KAAK,KAAK,QAAQ,EAAE,CAAC;YACvB,OAAO,CAAC,KAAK,EAAE,CAAC;YAChB,IAAA,yBAAgB,EAAC,OAAO,CAAC,CAAC;YAC1B,SAAS;QACX,CAAC;QACD,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACxB,MAAM,yBAAW,CAAC,MAAM,EAAE,CAAC;YAC3B,SAAS;QACX,CAAC;QACD,IAAI,KAAK,KAAK,OAAO,EAAE,CAAC;YACtB,IAAA,kBAAS,GAAE,CAAC;YACZ,SAAS;QACX,CAAC;QACD,IAAI,KAAK,KAAK,UAAU,EAAE,CAAC;YACzB,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC;YACtD,MAAM,UAAU,GAAG,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAS,EAAE,CAAM,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,EAAE,MAAM,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YAChH,IAAA,qBAAY,EAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC;YACnF,SAAS;QACX,CAAC;QAED,6BAA6B;QAC7B,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAEhB,qBAAqB;QACrB,MAAM,QAAQ,GAAG,IAAI,0BAAiB,EAAE,CAAC;QACzC,QAAQ,CAAC,KAAK,EAAE,CAAC;QAEjB,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAC7B,IAAI,YAAY,GAAG,EAAE,CAAC;QACtB,IAAI,aAAa,GAAG,KAAK,CAAC;QAE1B,IAAI,CAAC;YACH,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC5C,gDAAgD;gBAChD,IAAI,CAAC,aAAa,EAAE,CAAC;oBACnB,QAAQ,CAAC,IAAI,EAAE,CAAC;oBAChB,IAAA,4BAAmB,GAAE,CAAC;oBACtB,aAAa,GAAG,IAAI,CAAC;gBACvB,CAAC;gBAED,sBAAsB;gBACtB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,cAAK,CAAC,EAAE,CAAC,QAAQ,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC;gBAC1E,YAAY,IAAI,KAAK,CAAC;YACxB,CAAC;QACH,CAAC;QAAC,OAAO,GAAQ,EAAE,CAAC;YAClB,QAAQ,CAAC,IAAI,EAAE,CAAC;YAChB,IAAA,mBAAU,EACR,UAAU,GAAG,CAAC,OAAO,EAAE,EACvB,SAAS,EACT,4CAA4C,CAC7C,CAAC;YACF,SAAS;QACX,CAAC;QAED,IAAI,CAAC,aAAa,EAAE,CAAC;YACnB,QAAQ,CAAC,IAAI,EAAE,CAAC;QAClB,CAAC;QAED,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;QACvC,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QAEpD,IAAI,aAAa,EAAE,CAAC;YAClB,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,iCAAiC;YAClD,IAAA,4BAAmB,EAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;QACzC,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAClB,CAAC;IAED,EAAE,CAAC,KAAK,EAAE,CAAC;IACX,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC;AAED,+EAA+E;AAC/E,gBAAgB;AAChB,+EAA+E;AAE/E,KAAK,UAAU,UAAU,CAAC,KAAoB,EAAE,MAAc,EAAE,MAAc;IAC5E,IAAI,UAAU,GAAG,EAAE,CAAC;IACpB,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;QAC7C,IAAI,MAAM,KAAK,MAAM;YAAE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACnD,UAAU,IAAI,KAAK,CAAC;IACtB,CAAC;IACD,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;QACtB,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,QAAQ,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC;IACxD,CAAC;IACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC;AAED,+EAA+E;AAC/E,mCAAmC;AACnC,+EAA+E;AAE/E,SAAS,mBAAmB,CAAC,IAAY;IACvC,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;IACnC,MAAM,GAAG,GAAG,IAAI,oBAAe,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;IAE5C,GAAG,CAAC,EAAE,CAAC,YAAY,EAAE,CAAC,EAAE,EAAE,EAAE;QAC1B,OAAO,CAAC,GAAG,CAAC,8CAA8C,CAAC,CAAC;QAC5D,MAAM,WAAW,GAAG,IAAI,6BAAa,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC;QAE/E,EAAE,CAAC,EAAE,CAAC,SAAS,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;YAC9B,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;YAC1D,IAAI,SAAS;gBAAE,WAAW,CAAC,QAAQ,CAAC,gBAAgB,GAAG,SAAS,CAAC;YACjE,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;gBACnD,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;YACrD,CAAC;YACD,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;QAC5C,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,GAAG,EAAE;QACvB,OAAO,CAAC,GAAG,CAAC,sCAAsC,IAAI,KAAK,CAAC,CAAC;IAC/D,CAAC,CAAC,CAAC;AACL,CAAC;AAED,+EAA+E;AAC/E,0EAA0E;AAC1E,+EAA+E;AAExE,KAAK,UAAU,iBAAiB;IACrC,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACnC,MAAM,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;IAExB,oBAAoB;IACpB,IAAI,OAAO,KAAK,OAAO,EAAE,CAAC;QAAC,MAAM,yBAAW,CAAC,KAAK,EAAE,CAAC;QAAC,OAAO;IAAC,CAAC;IAC/D,IAAI,OAAO,KAAK,QAAQ,EAAE,CAAC;QAAC,MAAM,yBAAW,CAAC,MAAM,EAAE,CAAC;QAAC,OAAO;IAAC,CAAC;IACjE,IAAI,OAAO,KAAK,QAAQ,EAAE,CAAC;QAAC,MAAM,yBAAW,CAAC,MAAM,EAAE,CAAC;QAAC,OAAO;IAAC,CAAC;IACjE,IAAI,OAAO,KAAK,QAAQ,EAAE,CAAC;QACzB,OAAO,CAAC,GAAG,CAAC,cAAK,CAAC,GAAG,CAAC,iCAAiC,CAAC,CAAC,CAAC;QAC1D,IAAA,yBAAS,EAAC,KAAK,EAAE,CAAC,SAAS,EAAE,IAAI,EAAE,iBAAiB,CAAC,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QAC1F,IAAA,qBAAY,EAAC,kBAAkB,CAAC,CAAC;QACjC,OAAO;IACT,CAAC;IACD,IAAI,OAAO,KAAK,IAAI,IAAI,OAAO,KAAK,WAAW,EAAE,CAAC;QAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAAC,OAAO;IAAC,CAAC;IAClF,IAAI,OAAO,KAAK,IAAI,IAAI,OAAO,KAAK,QAAQ,IAAI,OAAO,KAAK,MAAM,EAAE,CAAC;QACnE,IAAA,yBAAgB,EAAC,OAAO,CAAC,CAAC;QAC1B,OAAO,CAAC,GAAG,CAAC,KAAK,cAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,gCAAgC,CAAC,CAAC;QACxE,OAAO,CAAC,GAAG,CAAC,KAAK,cAAK,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;QAC7C,OAAO,CAAC,GAAG,CAAC,OAAO,cAAK,CAAC,IAAI,CAAC,OAAO,CAAC,8BAA8B,cAAK,CAAC,GAAG,CAAC,sCAAsC,CAAC,EAAE,CAAC,CAAC;QACzH,OAAO,CAAC,GAAG,CAAC,OAAO,cAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,6BAA6B,cAAK,CAAC,GAAG,CAAC,0BAA0B,CAAC,EAAE,CAAC,CAAC;QAC7G,OAAO,CAAC,GAAG,CAAC,OAAO,cAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,6BAA6B,cAAK,CAAC,GAAG,CAAC,4BAA4B,CAAC,EAAE,CAAC,CAAC;QAC/G,OAAO,CAAC,GAAG,CAAC,OAAO,cAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,6BAA6B,cAAK,CAAC,GAAG,CAAC,8BAA8B,CAAC,IAAI,CAAC,CAAC;QACnH,OAAO,CAAC,GAAG,CAAC,KAAK,cAAK,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;QAC5C,OAAO,CAAC,GAAG,CAAC,OAAO,cAAK,CAAC,IAAI,CAAC,aAAa,CAAC,wBAAwB,cAAK,CAAC,GAAG,CAAC,kCAAkC,CAAC,EAAE,CAAC,CAAC;QACrH,OAAO,CAAC,GAAG,CAAC,OAAO,cAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,qBAAqB,cAAK,CAAC,GAAG,CAAC,4BAA4B,CAAC,EAAE,CAAC,CAAC;QAC/G,OAAO,CAAC,GAAG,CAAC,OAAO,cAAK,CAAC,IAAI,CAAC,mBAAmB,CAAC,kBAAkB,cAAK,CAAC,GAAG,CAAC,8BAA8B,CAAC,EAAE,CAAC,CAAC;QACjH,OAAO,CAAC,GAAG,CAAC,OAAO,cAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,qBAAqB,cAAK,CAAC,GAAG,CAAC,iCAAiC,CAAC,EAAE,CAAC,CAAC;QACpH,OAAO,CAAC,GAAG,CAAC,OAAO,cAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,qBAAqB,cAAK,CAAC,GAAG,CAAC,qCAAqC,CAAC,EAAE,CAAC,CAAC;QACxH,OAAO,CAAC,GAAG,CAAC,OAAO,cAAK,CAAC,IAAI,CAAC,gCAAgC,CAAC,KAAK,cAAK,CAAC,GAAG,CAAC,8BAA8B,CAAC,EAAE,CAAC,CAAC;QACjH,OAAO,CAAC,GAAG,CAAC,OAAO,cAAK,CAAC,IAAI,CAAC,yBAAyB,CAAC,YAAY,cAAK,CAAC,GAAG,CAAC,gCAAgC,CAAC,EAAE,CAAC,CAAC;QACnH,OAAO,CAAC,GAAG,CAAC,OAAO,cAAK,CAAC,IAAI,CAAC,aAAa,CAAC,wBAAwB,cAAK,CAAC,GAAG,CAAC,kCAAkC,CAAC,EAAE,CAAC,CAAC;QACrH,OAAO,CAAC,GAAG,CAAC,OAAO,cAAK,CAAC,IAAI,CAAC,eAAe,CAAC,sBAAsB,cAAK,CAAC,GAAG,CAAC,uBAAuB,CAAC,EAAE,CAAC,CAAC;QAC1G,OAAO,CAAC,GAAG,CAAC,OAAO,cAAK,CAAC,IAAI,CAAC,YAAY,CAAC,yBAAyB,cAAK,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;QACnG,OAAO;IACT,CAAC;IAED,oBAAoB;IACpB,IAAI,KAAK,GAAG,WAAW,CAAC;IACxB,IAAI,YAAY,GAAG,MAAM,CAAC;IAC1B,IAAI,aAAiC,CAAC;IACtC,IAAI,SAAS,GAAG,KAAK,CAAC;IACtB,IAAI,eAAe,GAAG,KAAK,CAAC;IAC5B,IAAI,QAAQ,GAAG,KAAK,CAAC;IACrB,IAAI,QAAQ,GAAG,KAAK,CAAC;IACrB,IAAI,UAA8B,CAAC;IACnC,MAAM,WAAW,GAAa,EAAE,CAAC;IAEjC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACrC,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QACpB,IAAI,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;YAAC,SAAS,GAAG,IAAI,CAAC;YAAC,SAAS;QAAC,CAAC;QACtE,IAAI,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,YAAY,EAAE,CAAC;YAAC,aAAa,GAAG,QAAQ,CAAC;YAAC,SAAS;QAAC,CAAC;QACjF,IAAI,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,UAAU,EAAE,CAAC;YAAC,aAAa,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;YAAC,SAAS;QAAC,CAAC;QAChF,IAAI,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,YAAY,EAAE,CAAC;YAAC,QAAQ,GAAG,IAAI,CAAC;YAAC,SAAS;QAAC,CAAC;QACxE,IAAI,GAAG,KAAK,iBAAiB,EAAE,CAAC;YAAC,YAAY,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC;YAAC,SAAS;QAAC,CAAC;QAChF,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;YAAC,KAAK,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,WAAW,CAAC;YAAC,SAAS;QAAC,CAAC;QACtE,IAAI,GAAG,KAAK,gCAAgC,EAAE,CAAC;YAAC,eAAe,GAAG,IAAI,CAAC;YAAC,SAAS;QAAC,CAAC;QACnF,IAAI,GAAG,KAAK,kBAAkB,EAAE,CAAC;YAAC,UAAU,GAAG,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YAAC,SAAS;QAAC,CAAC;QACnF,IAAI,GAAG,KAAK,aAAa,EAAE,CAAC;YAAC,QAAQ,GAAG,IAAI,CAAC;YAAC,SAAS;QAAC,CAAC;QACzD,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACxB,CAAC;IAED,2BAA2B;IAC3B,IAAI,QAAQ,EAAE,CAAC;QACb,OAAO,CAAC,GAAG,CAAC,cAAK,CAAC,GAAG,CAAC,8CAA8C,CAAC,CAAC,CAAC;QACvE,IAAI,CAAC;YACH,IAAA,yBAAS,EAAC,KAAK,EAAE,CAAC,UAAU,EAAE,KAAK,EAAE,kBAAkB,EAAE,IAAI,EAAE,iBAAiB,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC;YAC/F,OAAO,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC;YAClC,IAAA,qBAAY,EAAC,0BAA0B,CAAC,CAAC;QAC3C,CAAC;QAAC,MAAM,CAAC;YACP,IAAA,mBAAU,EAAC,+BAA+B,EAAE,qDAAqD,CAAC,CAAC;YACnG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC;IAED,4BAA4B;IAC5B,IAAI,UAAU,EAAE,CAAC;QACf,mBAAmB,CAAC,UAAU,CAAC,CAAC;QAChC,OAAO;IACT,CAAC;IAED,mBAAmB;IACnB,MAAM,KAAK,GAAG,IAAI,6BAAa,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC;IAC5D,IAAI,aAAa,EAAE,CAAC;QAClB,KAAK,CAAC,QAAQ,CAAC,gBAAgB,GAAG,aAAa,CAAC;IAClD,CAAC;IACD,MAAM,KAAK,CAAC,IAAI,EAAE,CAAC;IAEnB,IAAI,eAAe,EAAE,CAAC;QACpB,OAAO,CAAC,GAAG,CAAC,cAAK,CAAC,KAAK,CAAC,oDAAoD,CAAC,CAAC,CAAC;QAC/E,KAAK,CAAC,WAAW,GAAG,EAAE,SAAS,EAAE,KAAK,IAAI,EAAE,CAAC,IAAI,EAAS,CAAC;IAC7D,CAAC;IAED,gBAAgB;IAChB,MAAM,aAAa,GAAG,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;IAEnD,IAAI,SAAS,IAAI,aAAa,EAAE,CAAC;QAC/B,MAAM,UAAU,CAAC,KAAK,EAAE,aAAa,EAAE,YAAY,CAAC,CAAC;IACvD,CAAC;SAAM,IAAI,aAAa,EAAE,CAAC;QACzB,yCAAyC;QACzC,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,MAAM,KAAK,GAAG,MAAM,yBAAW,CAAC,QAAQ,EAAE,CAAC;YAC3C,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,CAAC,MAAM,yBAAW,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;YACnE,MAAM,IAAA,mBAAU,EAAC,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;QAC1D,CAAC;QACD,MAAM,QAAQ,GAAG,IAAI,0BAAiB,EAAE,CAAC;QACzC,QAAQ,CAAC,KAAK,EAAE,CAAC;QACjB,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAC7B,IAAI,YAAY,GAAG,EAAE,CAAC;QACtB,IAAI,aAAa,GAAG,KAAK,CAAC;QAC1B,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC;YACpD,IAAI,CAAC,aAAa,EAAE,CAAC;gBAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;gBAAC,IAAA,4BAAmB,GAAE,CAAC;gBAAC,aAAa,GAAG,IAAI,CAAC;YAAC,CAAC;YACrF,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,cAAK,CAAC,EAAE,CAAC,QAAQ,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC;YAC1E,YAAY,IAAI,KAAK,CAAC;QACxB,CAAC;QACD,IAAI,CAAC,aAAa;YAAE,QAAQ,CAAC,IAAI,EAAE,CAAC;QACpC,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;QACvC,IAAI,aAAa,EAAE,CAAC;YAClB,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAChB,IAAA,4BAAmB,EAAC,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;QACnE,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,MAAM,kBAAkB,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC;IAC/D,CAAC;SAAM,CAAC;QACN,2CAA2C;QAC3C,MAAM,kBAAkB,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,CAAC,CAAC;IACnE,CAAC;AACH,CAAC;AAED,eAAe;AACf,IAAI,OAAO,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;IAC5B,iBAAiB,EAAE,CAAC;AACtB,CAAC"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
export interface AuthData {
|
|
2
|
+
access_token: string;
|
|
3
|
+
refresh_token: string;
|
|
4
|
+
user: {
|
|
5
|
+
id: string;
|
|
6
|
+
email: string;
|
|
7
|
+
};
|
|
8
|
+
expires_at: number;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Manages Device Code OAuth authentication for the CoWorker CLI.
|
|
12
|
+
* Flow: CLI requests device code → user authorizes on website → CLI polls for token.
|
|
13
|
+
*/
|
|
14
|
+
export declare class AuthManager {
|
|
15
|
+
/**
|
|
16
|
+
* Device Code login flow — opens browser, polls for authorization.
|
|
17
|
+
*/
|
|
18
|
+
static login(): Promise<void>;
|
|
19
|
+
/**
|
|
20
|
+
* Removes saved credentials.
|
|
21
|
+
*/
|
|
22
|
+
static logout(): Promise<void>;
|
|
23
|
+
/**
|
|
24
|
+
* Shows current authentication status.
|
|
25
|
+
*/
|
|
26
|
+
static status(): Promise<void>;
|
|
27
|
+
/**
|
|
28
|
+
* Returns the stored access token, or null if not logged in.
|
|
29
|
+
*/
|
|
30
|
+
static getToken(): Promise<string | null>;
|
|
31
|
+
private static loadAuth;
|
|
32
|
+
/**
|
|
33
|
+
* Public access to auth data for display purposes (e.g. banner).
|
|
34
|
+
*/
|
|
35
|
+
static loadAuthPublic(): Promise<AuthData | null>;
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=AuthManager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AuthManager.d.ts","sourceRoot":"","sources":["../../src/config/AuthManager.ts"],"names":[],"mappings":"AAQA,MAAM,WAAW,QAAQ;IACvB,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,IAAI,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IACpC,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;;GAGG;AACH,qBAAa,WAAW;IAEtB;;OAEG;WACU,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAyFnC;;OAEG;WACU,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IASpC;;OAEG;WACU,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IAiBpC;;OAEG;WACU,QAAQ,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;mBAO1B,QAAQ;IAS7B;;OAEG;WACU,cAAc,IAAI,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC;CAGxD"}
|
|
@@ -0,0 +1,187 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
36
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
37
|
+
};
|
|
38
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
+
exports.AuthManager = void 0;
|
|
40
|
+
const fs = __importStar(require("fs/promises"));
|
|
41
|
+
const path = __importStar(require("path"));
|
|
42
|
+
const os = __importStar(require("os"));
|
|
43
|
+
const node_fetch_1 = __importDefault(require("node-fetch"));
|
|
44
|
+
const AUTH_FILE = path.join(os.homedir(), '.coworker', 'auth.json');
|
|
45
|
+
const API_BASE = 'https://api.sylixide.com/v1/auth';
|
|
46
|
+
/**
|
|
47
|
+
* Manages Device Code OAuth authentication for the CoWorker CLI.
|
|
48
|
+
* Flow: CLI requests device code → user authorizes on website → CLI polls for token.
|
|
49
|
+
*/
|
|
50
|
+
class AuthManager {
|
|
51
|
+
/**
|
|
52
|
+
* Device Code login flow — opens browser, polls for authorization.
|
|
53
|
+
*/
|
|
54
|
+
static async login() {
|
|
55
|
+
const deviceId = `coworker-cli-${os.hostname()}-${Date.now().toString(36)}`;
|
|
56
|
+
console.log('\n\x1b[36m🔐 CoWorker Login\x1b[0m\n');
|
|
57
|
+
console.log('Requesting device code...');
|
|
58
|
+
// Step 1: Request device code
|
|
59
|
+
let codeResponse;
|
|
60
|
+
try {
|
|
61
|
+
const res = await (0, node_fetch_1.default)(`${API_BASE}/device/code`, {
|
|
62
|
+
method: 'POST',
|
|
63
|
+
headers: { 'Content-Type': 'application/json' },
|
|
64
|
+
body: JSON.stringify({ device_id: deviceId, device_name: 'CoWorker CLI' })
|
|
65
|
+
});
|
|
66
|
+
codeResponse = await res.json();
|
|
67
|
+
if (!codeResponse.success) {
|
|
68
|
+
console.error(`\x1b[31m✗ Failed to get device code: ${codeResponse.error_description || codeResponse.error}\x1b[0m`);
|
|
69
|
+
process.exit(1);
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
catch (err) {
|
|
73
|
+
console.error(`\x1b[31m✗ Could not connect to Sylix servers: ${err.message}\x1b[0m`);
|
|
74
|
+
process.exit(1);
|
|
75
|
+
}
|
|
76
|
+
const { device_code, user_code, verification_uri_complete } = codeResponse;
|
|
77
|
+
// Step 2: Show code and open browser
|
|
78
|
+
console.log(`\n Your one-time code: \x1b[1m\x1b[33m${user_code}\x1b[0m\n`);
|
|
79
|
+
console.log(` Open this URL to authorize:\n \x1b[4m${verification_uri_complete}\x1b[0m\n`);
|
|
80
|
+
// Try to open browser
|
|
81
|
+
try {
|
|
82
|
+
const open = (await Promise.resolve().then(() => __importStar(require('open')))).default;
|
|
83
|
+
await open(verification_uri_complete);
|
|
84
|
+
console.log(' \x1b[32m✓ Browser opened automatically\x1b[0m');
|
|
85
|
+
}
|
|
86
|
+
catch {
|
|
87
|
+
console.log(' (Open the URL above manually in your browser)');
|
|
88
|
+
}
|
|
89
|
+
console.log('\n Waiting for authorization...\n');
|
|
90
|
+
// Step 3: Poll for token
|
|
91
|
+
const maxAttempts = 360; // 30 minutes at 5s intervals
|
|
92
|
+
for (let attempt = 0; attempt < maxAttempts; attempt++) {
|
|
93
|
+
await new Promise(r => setTimeout(r, 5000)); // 5 second interval
|
|
94
|
+
try {
|
|
95
|
+
const res = await (0, node_fetch_1.default)(`${API_BASE}/device/token`, {
|
|
96
|
+
method: 'POST',
|
|
97
|
+
headers: { 'Content-Type': 'application/json' },
|
|
98
|
+
body: JSON.stringify({ device_code })
|
|
99
|
+
});
|
|
100
|
+
const tokenData = await res.json();
|
|
101
|
+
if (tokenData.success) {
|
|
102
|
+
// Save token
|
|
103
|
+
const authData = {
|
|
104
|
+
access_token: tokenData.access_token,
|
|
105
|
+
refresh_token: tokenData.refresh_token,
|
|
106
|
+
user: tokenData.user,
|
|
107
|
+
expires_at: Math.floor(Date.now() / 1000) + tokenData.expires_in
|
|
108
|
+
};
|
|
109
|
+
await fs.mkdir(path.dirname(AUTH_FILE), { recursive: true });
|
|
110
|
+
await fs.writeFile(AUTH_FILE, JSON.stringify(authData, null, 2), 'utf8');
|
|
111
|
+
console.log(` \x1b[32m✓ Logged in as \x1b[1m${tokenData.user.email}\x1b[0m\n`);
|
|
112
|
+
process.exit(0);
|
|
113
|
+
}
|
|
114
|
+
if (tokenData.error === 'authorization_pending') {
|
|
115
|
+
process.stdout.write('.');
|
|
116
|
+
continue;
|
|
117
|
+
}
|
|
118
|
+
// Any other error is terminal
|
|
119
|
+
console.error(`\n\x1b[31m✗ ${tokenData.error_description || tokenData.error}\x1b[0m`);
|
|
120
|
+
process.exit(1);
|
|
121
|
+
}
|
|
122
|
+
catch (err) {
|
|
123
|
+
// Network error during poll — retry
|
|
124
|
+
continue;
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
console.error('\n\x1b[31m✗ Login timed out. Please try again.\x1b[0m');
|
|
128
|
+
process.exit(1);
|
|
129
|
+
}
|
|
130
|
+
/**
|
|
131
|
+
* Removes saved credentials.
|
|
132
|
+
*/
|
|
133
|
+
static async logout() {
|
|
134
|
+
try {
|
|
135
|
+
await fs.unlink(AUTH_FILE);
|
|
136
|
+
console.log('\x1b[32m✓ Logged out successfully.\x1b[0m');
|
|
137
|
+
}
|
|
138
|
+
catch {
|
|
139
|
+
console.log('Already logged out (no saved credentials).');
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
/**
|
|
143
|
+
* Shows current authentication status.
|
|
144
|
+
*/
|
|
145
|
+
static async status() {
|
|
146
|
+
const authData = await this.loadAuth();
|
|
147
|
+
if (!authData) {
|
|
148
|
+
console.log('\x1b[33m⚠ Not logged in.\x1b[0m Run \x1b[1mcoworker login\x1b[0m to authenticate.');
|
|
149
|
+
return;
|
|
150
|
+
}
|
|
151
|
+
const expiresDate = new Date(authData.expires_at * 1000);
|
|
152
|
+
const isExpired = Date.now() > authData.expires_at * 1000;
|
|
153
|
+
console.log(`\n\x1b[36m🔐 CoWorker Auth Status\x1b[0m\n`);
|
|
154
|
+
console.log(` Account: \x1b[1m${authData.user.email}\x1b[0m`);
|
|
155
|
+
console.log(` User ID: ${authData.user.id}`);
|
|
156
|
+
console.log(` Expires: ${expiresDate.toLocaleDateString()} ${expiresDate.toLocaleTimeString()}`);
|
|
157
|
+
console.log(` Status: ${isExpired ? '\x1b[31mExpired\x1b[0m — run \x1b[1mcoworker login\x1b[0m' : '\x1b[32mActive\x1b[0m'}\n`);
|
|
158
|
+
}
|
|
159
|
+
/**
|
|
160
|
+
* Returns the stored access token, or null if not logged in.
|
|
161
|
+
*/
|
|
162
|
+
static async getToken() {
|
|
163
|
+
const authData = await this.loadAuth();
|
|
164
|
+
if (!authData)
|
|
165
|
+
return null;
|
|
166
|
+
if (Date.now() > authData.expires_at * 1000)
|
|
167
|
+
return null;
|
|
168
|
+
return authData.access_token;
|
|
169
|
+
}
|
|
170
|
+
static async loadAuth() {
|
|
171
|
+
try {
|
|
172
|
+
const content = await fs.readFile(AUTH_FILE, 'utf8');
|
|
173
|
+
return JSON.parse(content);
|
|
174
|
+
}
|
|
175
|
+
catch {
|
|
176
|
+
return null;
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
/**
|
|
180
|
+
* Public access to auth data for display purposes (e.g. banner).
|
|
181
|
+
*/
|
|
182
|
+
static async loadAuthPublic() {
|
|
183
|
+
return this.loadAuth();
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
exports.AuthManager = AuthManager;
|
|
187
|
+
//# sourceMappingURL=AuthManager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AuthManager.js","sourceRoot":"","sources":["../../src/config/AuthManager.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
export declare const theme: {
|
|
2
|
+
brand: any;
|
|
3
|
+
accent: any;
|
|
4
|
+
success: any;
|
|
5
|
+
error: any;
|
|
6
|
+
warning: any;
|
|
7
|
+
ai: any;
|
|
8
|
+
dim: any;
|
|
9
|
+
white: any;
|
|
10
|
+
code: any;
|
|
11
|
+
};
|
|
12
|
+
export declare function getTermWidth(): number;
|
|
13
|
+
export declare function showBanner(version: string, userEmail?: string, model?: string): Promise<void>;
|
|
14
|
+
/**
|
|
15
|
+
* Static banner for non-TTY or --no-banner mode.
|
|
16
|
+
*/
|
|
17
|
+
export declare function showStaticBanner(version: string): void;
|
|
18
|
+
export declare class ThinkingAnimation {
|
|
19
|
+
private interval;
|
|
20
|
+
private frame;
|
|
21
|
+
private message;
|
|
22
|
+
constructor();
|
|
23
|
+
start(): void;
|
|
24
|
+
stop(): void;
|
|
25
|
+
}
|
|
26
|
+
export declare function boxTop(label?: string): string;
|
|
27
|
+
export declare function boxBottom(): string;
|
|
28
|
+
export declare function printResponseHeader(): void;
|
|
29
|
+
export declare function printResponseFooter(elapsed: number, tokenEstimate?: number): void;
|
|
30
|
+
export declare function printUserPrompt(input: string): void;
|
|
31
|
+
export declare function printError(title: string, details?: string, hint?: string): void;
|
|
32
|
+
export declare function printSuccess(message: string): void;
|
|
33
|
+
export declare function printWarning(message: string): void;
|
|
34
|
+
export declare function printExit(): void;
|
|
35
|
+
export declare function printToolStart(toolName: string): void;
|
|
36
|
+
export declare function printToolDone(toolName: string, elapsed: number): void;
|
|
37
|
+
export declare function printToolError(toolName: string, error: string): void;
|
|
38
|
+
export declare function printHelp(): void;
|
|
39
|
+
export declare function printCompact(msgCount: number, tokenEst: number, sessionId: string): void;
|
|
40
|
+
//# sourceMappingURL=output.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"output.d.ts","sourceRoot":"","sources":["../../src/utils/output.ts"],"names":[],"mappings":"AAuBA,eAAO,MAAM,KAAK;;;;;;;;;;CAUjB,CAAC;AAMF,wBAAgB,YAAY,IAAI,MAAM,CAErC;AA+BD,wBAAsB,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,EAAE,KAAK,GAAE,MAAoB,iBAqChG;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,QAM/C;AAeD,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,QAAQ,CAA+C;IAC/D,OAAO,CAAC,KAAK,CAAK;IAClB,OAAO,CAAC,OAAO,CAAS;;IAMxB,KAAK;IAWL,IAAI;CASL;AAMD,wBAAgB,MAAM,CAAC,KAAK,GAAE,MAAmB,GAAG,MAAM,CAKzD;AAED,wBAAgB,SAAS,IAAI,MAAM,CAIlC;AAED,wBAAgB,mBAAmB,SAGlC;AAED,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,MAAM,QAQ1E;AAMD,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,QAG5C;AAMD,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,QAcxE;AAED,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,QAE3C;AAED,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,QAE3C;AAMD,wBAAgB,SAAS,SAKxB;AAMD,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,QAE9C;AAED,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,QAG9D;AAED,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,QAE7D;AAMD,wBAAgB,SAAS,SASxB;AAED,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,QASjF"}
|
|
@@ -0,0 +1,302 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.ThinkingAnimation = exports.theme = void 0;
|
|
37
|
+
exports.getTermWidth = getTermWidth;
|
|
38
|
+
exports.showBanner = showBanner;
|
|
39
|
+
exports.showStaticBanner = showStaticBanner;
|
|
40
|
+
exports.boxTop = boxTop;
|
|
41
|
+
exports.boxBottom = boxBottom;
|
|
42
|
+
exports.printResponseHeader = printResponseHeader;
|
|
43
|
+
exports.printResponseFooter = printResponseFooter;
|
|
44
|
+
exports.printUserPrompt = printUserPrompt;
|
|
45
|
+
exports.printError = printError;
|
|
46
|
+
exports.printSuccess = printSuccess;
|
|
47
|
+
exports.printWarning = printWarning;
|
|
48
|
+
exports.printExit = printExit;
|
|
49
|
+
exports.printToolStart = printToolStart;
|
|
50
|
+
exports.printToolDone = printToolDone;
|
|
51
|
+
exports.printToolError = printToolError;
|
|
52
|
+
exports.printHelp = printHelp;
|
|
53
|
+
exports.printCompact = printCompact;
|
|
54
|
+
const chalk = __importStar(require("chalk"));
|
|
55
|
+
/**
|
|
56
|
+
* CoWorker Premium Output System
|
|
57
|
+
* Handles all terminal rendering — animations, themes, boxes, and streaming output.
|
|
58
|
+
*/
|
|
59
|
+
// ============================================================================
|
|
60
|
+
// THEME SYSTEM
|
|
61
|
+
// ============================================================================
|
|
62
|
+
const NO_COLOR = !!process.env.NO_COLOR;
|
|
63
|
+
const IS_PIPE = !process.stdout.isTTY;
|
|
64
|
+
function hex(color) {
|
|
65
|
+
if (NO_COLOR || IS_PIPE)
|
|
66
|
+
return chalk.default;
|
|
67
|
+
try {
|
|
68
|
+
return chalk.hex ? chalk.hex(color) : chalk.default;
|
|
69
|
+
}
|
|
70
|
+
catch {
|
|
71
|
+
return chalk.default;
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
exports.theme = {
|
|
75
|
+
brand: hex('#00D4FF'), // Electric cyan — Sylix brand
|
|
76
|
+
accent: hex('#7C3AED'), // Deep purple — highlights
|
|
77
|
+
success: hex('#10B981'), // Emerald green
|
|
78
|
+
error: hex('#EF4444'), // Clean red
|
|
79
|
+
warning: hex('#F59E0B'), // Amber
|
|
80
|
+
ai: hex('#A78BFA'), // Soft purple — AI responses
|
|
81
|
+
dim: hex('#6B7280'), // Gray — secondary info
|
|
82
|
+
white: hex('#F9FAFB'), // Off white
|
|
83
|
+
code: hex('#FCD34D'), // Yellow — code and commands
|
|
84
|
+
};
|
|
85
|
+
// ============================================================================
|
|
86
|
+
// TERMINAL UTILS
|
|
87
|
+
// ============================================================================
|
|
88
|
+
function getTermWidth() {
|
|
89
|
+
return process.stdout.columns || 80;
|
|
90
|
+
}
|
|
91
|
+
function isNarrow() {
|
|
92
|
+
return getTermWidth() < 60;
|
|
93
|
+
}
|
|
94
|
+
function sleep(ms) {
|
|
95
|
+
return new Promise(r => setTimeout(r, ms));
|
|
96
|
+
}
|
|
97
|
+
function hideCursor() {
|
|
98
|
+
if (!IS_PIPE)
|
|
99
|
+
process.stdout.write('\x1b[?25l');
|
|
100
|
+
}
|
|
101
|
+
function showCursor() {
|
|
102
|
+
if (!IS_PIPE)
|
|
103
|
+
process.stdout.write('\x1b[?25h');
|
|
104
|
+
}
|
|
105
|
+
// ============================================================================
|
|
106
|
+
// STARTUP BANNER (Typewriter Animation)
|
|
107
|
+
// ============================================================================
|
|
108
|
+
const LOGO_LINES = [
|
|
109
|
+
' ██████╗ ██████╗ ██╗ ██╗ ██████╗ ██████╗ ██╗ ██╗███████╗██████╗ ',
|
|
110
|
+
'██╔════╝██╔═══██╗██║ ██║██╔═══██╗██╔══██╗██║ ██╔╝██╔════╝██╔══██╗',
|
|
111
|
+
'██║ ██║ ██║██║ █╗ ██║██║ ██║██████╔╝█████╔╝ █████╗ ██████╔╝',
|
|
112
|
+
'██║ ██║ ██║██║███╗██║██║ ██║██╔══██╗██╔═██╗ ██╔══╝ ██╔══██╗',
|
|
113
|
+
'╚██████╗╚██████╔╝╚███╔███╔╝╚██████╔╝██║ ██║██║ ██╗███████╗██║ ██║',
|
|
114
|
+
' ╚═════╝ ╚═════╝ ╚══╝╚══╝ ╚═════╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝',
|
|
115
|
+
];
|
|
116
|
+
async function showBanner(version, userEmail, model = 'helix-1.2') {
|
|
117
|
+
if (IS_PIPE)
|
|
118
|
+
return;
|
|
119
|
+
hideCursor();
|
|
120
|
+
console.log('');
|
|
121
|
+
// Step 1: Typewriter ASCII art (line by line, fast)
|
|
122
|
+
for (const line of LOGO_LINES) {
|
|
123
|
+
process.stdout.write(exports.theme.brand(line) + '\n');
|
|
124
|
+
await sleep(40);
|
|
125
|
+
}
|
|
126
|
+
// Step 2: Fade in tagline word by word
|
|
127
|
+
console.log('');
|
|
128
|
+
const taglineWords = [' by', 'Sylix', ' ·', ' Your', 'AI', 'Coding', 'Partner'];
|
|
129
|
+
for (const word of taglineWords) {
|
|
130
|
+
process.stdout.write(exports.theme.dim(word + ' '));
|
|
131
|
+
await sleep(60);
|
|
132
|
+
}
|
|
133
|
+
console.log('');
|
|
134
|
+
// Step 3: Animated line draw
|
|
135
|
+
console.log('');
|
|
136
|
+
const lineWidth = Math.min(getTermWidth() - 4, 60);
|
|
137
|
+
for (let i = 0; i < lineWidth; i += 3) {
|
|
138
|
+
process.stdout.write(exports.theme.dim('━'));
|
|
139
|
+
await sleep(5);
|
|
140
|
+
}
|
|
141
|
+
console.log('');
|
|
142
|
+
// Step 4: User + model info
|
|
143
|
+
console.log('');
|
|
144
|
+
const userStr = userEmail ? `Signed in as ${userEmail}` : 'Not signed in';
|
|
145
|
+
console.log(exports.theme.dim(` ◆ ${userStr} · Model: ${model} · v${version}`));
|
|
146
|
+
console.log('');
|
|
147
|
+
showCursor();
|
|
148
|
+
}
|
|
149
|
+
/**
|
|
150
|
+
* Static banner for non-TTY or --no-banner mode.
|
|
151
|
+
*/
|
|
152
|
+
function showStaticBanner(version) {
|
|
153
|
+
console.log('');
|
|
154
|
+
for (const line of LOGO_LINES) {
|
|
155
|
+
console.log(exports.theme.brand(line));
|
|
156
|
+
}
|
|
157
|
+
console.log(exports.theme.dim(`\n by Sylix · v${version}\n`));
|
|
158
|
+
}
|
|
159
|
+
// ============================================================================
|
|
160
|
+
// THINKING / LOADING ANIMATION
|
|
161
|
+
// ============================================================================
|
|
162
|
+
const LOADING_MESSAGES = [
|
|
163
|
+
'◆ Sylix brain activated...',
|
|
164
|
+
'◆ Reading your codebase...',
|
|
165
|
+
'◆ Thinking really hard...',
|
|
166
|
+
'◆ Consulting the AI oracle...',
|
|
167
|
+
'◆ Crafting something brilliant...',
|
|
168
|
+
'◆ CoWorker is on it...',
|
|
169
|
+
];
|
|
170
|
+
class ThinkingAnimation {
|
|
171
|
+
constructor() {
|
|
172
|
+
this.interval = null;
|
|
173
|
+
this.frame = 0;
|
|
174
|
+
this.message = LOADING_MESSAGES[Math.floor(Math.random() * LOADING_MESSAGES.length)];
|
|
175
|
+
}
|
|
176
|
+
start() {
|
|
177
|
+
if (IS_PIPE)
|
|
178
|
+
return;
|
|
179
|
+
hideCursor();
|
|
180
|
+
const dots = ['◉ ○ ○', '○ ◉ ○', '○ ○ ◉'];
|
|
181
|
+
this.interval = setInterval(() => {
|
|
182
|
+
const dot = dots[this.frame % dots.length];
|
|
183
|
+
process.stdout.write(`\r ${exports.theme.brand(dot)} ${exports.theme.dim(this.message)}`);
|
|
184
|
+
this.frame++;
|
|
185
|
+
}, 300);
|
|
186
|
+
}
|
|
187
|
+
stop() {
|
|
188
|
+
if (this.interval) {
|
|
189
|
+
clearInterval(this.interval);
|
|
190
|
+
this.interval = null;
|
|
191
|
+
}
|
|
192
|
+
// Clear the loading line
|
|
193
|
+
process.stdout.write('\r' + ' '.repeat(getTermWidth()) + '\r');
|
|
194
|
+
showCursor();
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
exports.ThinkingAnimation = ThinkingAnimation;
|
|
198
|
+
// ============================================================================
|
|
199
|
+
// BOXED OUTPUT (AI RESPONSES)
|
|
200
|
+
// ============================================================================
|
|
201
|
+
function boxTop(label = 'CoWorker') {
|
|
202
|
+
const w = Math.min(getTermWidth() - 2, 70);
|
|
203
|
+
if (isNarrow())
|
|
204
|
+
return exports.theme.brand(`─ ${label} ─`);
|
|
205
|
+
const inner = w - 6 - label.length;
|
|
206
|
+
return exports.theme.brand(` ╭─ ${label} ${'─'.repeat(Math.max(0, inner))}╮`);
|
|
207
|
+
}
|
|
208
|
+
function boxBottom() {
|
|
209
|
+
const w = Math.min(getTermWidth() - 2, 70);
|
|
210
|
+
if (isNarrow())
|
|
211
|
+
return exports.theme.brand('─'.repeat(20));
|
|
212
|
+
return exports.theme.brand(` ╰${'─'.repeat(w - 4)}╯`);
|
|
213
|
+
}
|
|
214
|
+
function printResponseHeader() {
|
|
215
|
+
console.log(boxTop('CoWorker'));
|
|
216
|
+
console.log(exports.theme.brand(' │'));
|
|
217
|
+
}
|
|
218
|
+
function printResponseFooter(elapsed, tokenEstimate) {
|
|
219
|
+
console.log(exports.theme.brand(' │'));
|
|
220
|
+
console.log(boxBottom());
|
|
221
|
+
// Stats line
|
|
222
|
+
const elapsedStr = elapsed < 1000 ? `${elapsed}ms` : `${(elapsed / 1000).toFixed(1)}s`;
|
|
223
|
+
const tokenStr = tokenEstimate ? ` · tokens: ~${tokenEstimate}` : '';
|
|
224
|
+
console.log(exports.theme.dim(` ✦ Done · sylix.ai · ${elapsedStr}${tokenStr}`));
|
|
225
|
+
}
|
|
226
|
+
// ============================================================================
|
|
227
|
+
// PROMPT RENDERING
|
|
228
|
+
// ============================================================================
|
|
229
|
+
function printUserPrompt(input) {
|
|
230
|
+
console.log(` ${exports.theme.white('You')} ${exports.theme.dim('›')} ${input}`);
|
|
231
|
+
console.log('');
|
|
232
|
+
}
|
|
233
|
+
// ============================================================================
|
|
234
|
+
// ERROR / SUCCESS / WARNING STYLING
|
|
235
|
+
// ============================================================================
|
|
236
|
+
function printError(title, details, hint) {
|
|
237
|
+
console.log('');
|
|
238
|
+
console.log(exports.theme.error(' ╷'));
|
|
239
|
+
console.log(exports.theme.error(` │ ✗ ${title}`));
|
|
240
|
+
if (details) {
|
|
241
|
+
console.log(exports.theme.error(' │'));
|
|
242
|
+
console.log(exports.theme.error(` │ ${details}`));
|
|
243
|
+
}
|
|
244
|
+
if (hint) {
|
|
245
|
+
console.log(exports.theme.error(' │'));
|
|
246
|
+
console.log(exports.theme.dim(` │ → ${hint}`));
|
|
247
|
+
}
|
|
248
|
+
console.log(exports.theme.error(' ╵'));
|
|
249
|
+
console.log('');
|
|
250
|
+
}
|
|
251
|
+
function printSuccess(message) {
|
|
252
|
+
console.log(exports.theme.success(` ✓ ${message}`));
|
|
253
|
+
}
|
|
254
|
+
function printWarning(message) {
|
|
255
|
+
console.log(exports.theme.warning(` ⚠ ${message}`));
|
|
256
|
+
}
|
|
257
|
+
// ============================================================================
|
|
258
|
+
// EXIT MESSAGE
|
|
259
|
+
// ============================================================================
|
|
260
|
+
function printExit() {
|
|
261
|
+
if (IS_PIPE)
|
|
262
|
+
return;
|
|
263
|
+
console.log('');
|
|
264
|
+
console.log(exports.theme.dim(' ◆ CoWorker session ended · Thanks for using Sylix'));
|
|
265
|
+
console.log('');
|
|
266
|
+
}
|
|
267
|
+
// ============================================================================
|
|
268
|
+
// TOOL EXECUTION DISPLAY
|
|
269
|
+
// ============================================================================
|
|
270
|
+
function printToolStart(toolName) {
|
|
271
|
+
process.stdout.write(exports.theme.brand(` ⟡ `) + exports.theme.code(toolName) + exports.theme.dim(' running...'));
|
|
272
|
+
}
|
|
273
|
+
function printToolDone(toolName, elapsed) {
|
|
274
|
+
const elapsedStr = elapsed < 1000 ? `${elapsed}ms` : `${(elapsed / 1000).toFixed(1)}s`;
|
|
275
|
+
process.stdout.write(`\r ${exports.theme.success('✓')} ${exports.theme.code(toolName)} ${exports.theme.dim(elapsedStr)}` + ' '.repeat(20) + '\n');
|
|
276
|
+
}
|
|
277
|
+
function printToolError(toolName, error) {
|
|
278
|
+
process.stdout.write(`\r ${exports.theme.error('✗')} ${exports.theme.code(toolName)} ${exports.theme.dim(error.substring(0, 60))}` + ' '.repeat(10) + '\n');
|
|
279
|
+
}
|
|
280
|
+
// ============================================================================
|
|
281
|
+
// INTERACTIVE HELP
|
|
282
|
+
// ============================================================================
|
|
283
|
+
function printHelp() {
|
|
284
|
+
console.log(`
|
|
285
|
+
${exports.theme.brand(' Slash Commands:')}
|
|
286
|
+
${exports.theme.code('/help')} ${exports.theme.dim('Show this help')}
|
|
287
|
+
${exports.theme.code('/clear')} ${exports.theme.dim('Clear the screen')}
|
|
288
|
+
${exports.theme.code('/status')} ${exports.theme.dim('Show auth & session status')}
|
|
289
|
+
${exports.theme.code('/compact')} ${exports.theme.dim('Show context window usage')}
|
|
290
|
+
${exports.theme.code('/exit')} ${exports.theme.dim('Exit CoWorker')}
|
|
291
|
+
`);
|
|
292
|
+
}
|
|
293
|
+
function printCompact(msgCount, tokenEst, sessionId) {
|
|
294
|
+
const usage = Math.round((tokenEst / 12000) * 100);
|
|
295
|
+
const barWidth = 20;
|
|
296
|
+
const filled = Math.round((usage / 100) * barWidth);
|
|
297
|
+
const bar = '█'.repeat(filled) + '░'.repeat(barWidth - filled);
|
|
298
|
+
const color = usage > 80 ? exports.theme.error : usage > 50 ? exports.theme.warning : exports.theme.success;
|
|
299
|
+
console.log(exports.theme.dim(` Messages: ${msgCount} | Context: `) + color(`[${bar}] ${usage}%`) + exports.theme.dim(` | Session: ${sessionId.substring(0, 8)}`));
|
|
300
|
+
console.log('');
|
|
301
|
+
}
|
|
302
|
+
//# sourceMappingURL=output.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"output.js","sourceRoot":"","sources":["../../src/utils/output.ts"],"names":[],"mappings":"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"}
|