@sylix/coworker 1.3.0 → 1.4.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/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/index.js +184 -292
- package/dist/cli/index.js.map +1 -1
- package/dist/commands/slash/advanced.d.ts +3 -0
- package/dist/commands/slash/advanced.d.ts.map +1 -0
- package/dist/commands/slash/advanced.js +225 -0
- package/dist/commands/slash/advanced.js.map +1 -0
- package/dist/commands/slash/config.d.ts +3 -0
- package/dist/commands/slash/config.d.ts.map +1 -0
- package/dist/commands/slash/config.js +161 -0
- package/dist/commands/slash/config.js.map +1 -0
- package/dist/commands/slash/context.d.ts +3 -0
- package/dist/commands/slash/context.d.ts.map +1 -0
- package/dist/commands/slash/context.js +127 -0
- package/dist/commands/slash/context.js.map +1 -0
- package/dist/commands/slash/core.d.ts +3 -0
- package/dist/commands/slash/core.d.ts.map +1 -0
- package/dist/commands/slash/core.js +112 -0
- package/dist/commands/slash/core.js.map +1 -0
- package/dist/commands/slash/developer.d.ts +3 -0
- package/dist/commands/slash/developer.d.ts.map +1 -0
- package/dist/commands/slash/developer.js +174 -0
- package/dist/commands/slash/developer.js.map +1 -0
- package/dist/commands/slash/files.d.ts +3 -0
- package/dist/commands/slash/files.d.ts.map +1 -0
- package/dist/commands/slash/files.js +216 -0
- package/dist/commands/slash/files.js.map +1 -0
- package/dist/commands/slash/registry.d.ts +36 -0
- package/dist/commands/slash/registry.d.ts.map +1 -0
- package/dist/commands/slash/registry.js +69 -0
- package/dist/commands/slash/registry.js.map +1 -0
- package/dist/commands/slash/session.d.ts +3 -0
- package/dist/commands/slash/session.d.ts.map +1 -0
- package/dist/commands/slash/session.js +144 -0
- package/dist/commands/slash/session.js.map +1 -0
- package/dist/core/CoWorkerAgent.d.ts +8 -5
- package/dist/core/CoWorkerAgent.d.ts.map +1 -1
- package/dist/core/CoWorkerAgent.js +171 -52
- package/dist/core/CoWorkerAgent.js.map +1 -1
- package/dist/session/SessionManager.js +10 -5
- package/dist/session/SessionManager.js.map +1 -1
- package/dist/skills/HookAndSkillManager.d.ts +7 -2
- package/dist/skills/HookAndSkillManager.d.ts.map +1 -1
- package/dist/skills/HookAndSkillManager.js +35 -8
- package/dist/skills/HookAndSkillManager.js.map +1 -1
- package/dist/skills/defaults/brainstorming.md +43 -0
- package/dist/skills/defaults/commit.md +37 -0
- package/dist/skills/defaults/executing-plans.md +41 -0
- package/dist/skills/defaults/finishing-a-development-branch.md +35 -0
- package/dist/skills/defaults/receiving-code-review.md +40 -0
- package/dist/skills/defaults/requesting-code-review.md +43 -0
- package/dist/skills/defaults/review.md +50 -0
- package/dist/skills/defaults/subagent-driven-development.md +55 -0
- package/dist/skills/defaults/systematic-debugging.md +93 -0
- package/dist/skills/defaults/test-driven-development.md +97 -0
- package/dist/skills/defaults/using-git-worktrees.md +36 -0
- package/dist/skills/defaults/verification-before-completion.md +47 -0
- package/dist/skills/defaults/writing-plans.md +84 -0
- package/dist/skills/defaults/writing-skills.md +46 -0
- package/dist/tools/NativeTools.d.ts +0 -4
- package/dist/tools/NativeTools.d.ts.map +1 -1
- package/dist/tools/NativeTools.js +50 -10
- package/dist/tools/NativeTools.js.map +1 -1
- package/dist/utils/conversations.d.ts +14 -0
- package/dist/utils/conversations.d.ts.map +1 -0
- package/dist/utils/conversations.js +100 -0
- package/dist/utils/conversations.js.map +1 -0
- package/dist/utils/inputbar.d.ts +87 -0
- package/dist/utils/inputbar.d.ts.map +1 -0
- package/dist/utils/inputbar.js +263 -0
- package/dist/utils/inputbar.js.map +1 -0
- package/dist/utils/output.d.ts +48 -42
- package/dist/utils/output.d.ts.map +1 -1
- package/dist/utils/output.js +245 -186
- package/dist/utils/output.js.map +1 -1
- package/dist/utils/palette.d.ts +25 -0
- package/dist/utils/palette.d.ts.map +1 -0
- package/dist/utils/palette.js +92 -0
- package/dist/utils/palette.js.map +1 -0
- package/dist/utils/welcome.d.ts +2 -0
- package/dist/utils/welcome.d.ts.map +1 -0
- package/dist/utils/welcome.js +130 -0
- package/dist/utils/welcome.js.map +1 -0
- package/package.json +2 -2
|
@@ -0,0 +1,263 @@
|
|
|
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.InputBarManager = void 0;
|
|
37
|
+
exports.drawTopBorder = drawTopBorder;
|
|
38
|
+
exports.drawBottomBorder = drawBottomBorder;
|
|
39
|
+
exports.drawStatusLine = drawStatusLine;
|
|
40
|
+
exports.getPromptString = getPromptString;
|
|
41
|
+
exports.drawInputFrame = drawInputFrame;
|
|
42
|
+
exports.clearInputFrame = clearInputFrame;
|
|
43
|
+
exports.lockInputBar = lockInputBar;
|
|
44
|
+
exports.flashSuccess = flashSuccess;
|
|
45
|
+
const readline = __importStar(require("readline"));
|
|
46
|
+
const output_1 = require("./output");
|
|
47
|
+
/**
|
|
48
|
+
* ═══════════════════════════════════════════════════════════════════
|
|
49
|
+
* Premium Input Bar — Fixed-bottom framed input zone
|
|
50
|
+
* ═══════════════════════════════════════════════════════════════════
|
|
51
|
+
*
|
|
52
|
+
* Design:
|
|
53
|
+
* ────────────────────────────────────────────────────────────────
|
|
54
|
+
* ◆ [user input text here]█
|
|
55
|
+
* ────────────────────────────────────────────────────────────────
|
|
56
|
+
* ? /help for commands · Ctrl+C to exit
|
|
57
|
+
*
|
|
58
|
+
* States: ready, typing, slash, sending, receiving, success
|
|
59
|
+
*/
|
|
60
|
+
// Colors
|
|
61
|
+
const borderColor = (s) => output_1.theme.dim(s);
|
|
62
|
+
const prefixReady = () => output_1.theme.brand(' ◆ ');
|
|
63
|
+
const prefixLocked = () => output_1.theme.dim(' ◆ ');
|
|
64
|
+
const prefixSuccess = () => output_1.theme.success(' ✓ ');
|
|
65
|
+
const inputColor = (s) => output_1.theme.white(s);
|
|
66
|
+
const STATUS_MESSAGES = {
|
|
67
|
+
ready: ' ? /help for commands · Ctrl+C to exit',
|
|
68
|
+
typing: ' ? /help for commands · Ctrl+C to exit',
|
|
69
|
+
slash: ' ↑↓ navigate · Enter select · Esc dismiss',
|
|
70
|
+
sending: ' ◆ thinking...',
|
|
71
|
+
receiving: ' ◆ CoWorker is responding...',
|
|
72
|
+
success: ' ✓ done',
|
|
73
|
+
};
|
|
74
|
+
/**
|
|
75
|
+
* Draws the framed input bar. This is called:
|
|
76
|
+
* - Before readline prompt (draws the frame)
|
|
77
|
+
* - On state changes (thinking, receiving, etc.)
|
|
78
|
+
*
|
|
79
|
+
* The input bar uses a simple approach:
|
|
80
|
+
* readline handles the actual input on a bordered line.
|
|
81
|
+
* We print borders and status around it.
|
|
82
|
+
*/
|
|
83
|
+
function drawTopBorder() {
|
|
84
|
+
const cols = (0, output_1.getTermWidth)();
|
|
85
|
+
console.log(borderColor('─'.repeat(cols)));
|
|
86
|
+
}
|
|
87
|
+
function drawBottomBorder() {
|
|
88
|
+
const cols = (0, output_1.getTermWidth)();
|
|
89
|
+
console.log(borderColor('─'.repeat(cols)));
|
|
90
|
+
}
|
|
91
|
+
function drawStatusLine(state) {
|
|
92
|
+
const msg = STATUS_MESSAGES[state] || STATUS_MESSAGES.ready;
|
|
93
|
+
console.log(output_1.theme.dim(msg));
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* Get the readline prompt string (the ◆ prefix).
|
|
97
|
+
*/
|
|
98
|
+
function getPromptString(state = 'ready') {
|
|
99
|
+
switch (state) {
|
|
100
|
+
case 'success': return prefixSuccess();
|
|
101
|
+
case 'sending':
|
|
102
|
+
case 'receiving': return prefixLocked();
|
|
103
|
+
default: return prefixReady();
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* Draw the full input frame (top border, prompt placeholder, bottom border, status).
|
|
108
|
+
* Used when transitioning states.
|
|
109
|
+
*/
|
|
110
|
+
function drawInputFrame(state, inputText = '') {
|
|
111
|
+
drawTopBorder();
|
|
112
|
+
const prefix = getPromptString(state);
|
|
113
|
+
console.log(prefix + inputColor(inputText));
|
|
114
|
+
drawBottomBorder();
|
|
115
|
+
drawStatusLine(state);
|
|
116
|
+
}
|
|
117
|
+
/**
|
|
118
|
+
* Clear the input frame (4 lines: top border, input, bottom border, status).
|
|
119
|
+
* Move cursor up and clear each line.
|
|
120
|
+
*/
|
|
121
|
+
function clearInputFrame(lines = 4) {
|
|
122
|
+
for (let i = 0; i < lines; i++) {
|
|
123
|
+
process.stdout.write('\x1b[1A\x1b[2K'); // move up, clear line
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
/**
|
|
127
|
+
* Show the locked state while AI is working.
|
|
128
|
+
* Replaces the input frame with a locked version.
|
|
129
|
+
*/
|
|
130
|
+
function lockInputBar(state, inputText) {
|
|
131
|
+
drawTopBorder();
|
|
132
|
+
console.log(getPromptString(state) + (inputText ? output_1.theme.dim(inputText) : ''));
|
|
133
|
+
drawBottomBorder();
|
|
134
|
+
drawStatusLine(state);
|
|
135
|
+
}
|
|
136
|
+
/**
|
|
137
|
+
* Show a brief success flash then return to ready.
|
|
138
|
+
*/
|
|
139
|
+
function flashSuccess() {
|
|
140
|
+
drawTopBorder();
|
|
141
|
+
console.log(prefixSuccess());
|
|
142
|
+
drawBottomBorder();
|
|
143
|
+
drawStatusLine('success');
|
|
144
|
+
}
|
|
145
|
+
/**
|
|
146
|
+
* Manages the complete input bar lifecycle during the REPL.
|
|
147
|
+
*
|
|
148
|
+
* Usage in REPL:
|
|
149
|
+
* const bar = new InputBarManager();
|
|
150
|
+
* bar.drawReady(); // show empty input bar
|
|
151
|
+
* const input = await bar.ask() // get user input (readline inside frame)
|
|
152
|
+
* bar.showSending(input); // lock bar while thinking
|
|
153
|
+
* // ... AI response renders above ...
|
|
154
|
+
* bar.showReceiving(); // update status while streaming
|
|
155
|
+
* // ... response done ...
|
|
156
|
+
* bar.drawReady(); // unlock for next input
|
|
157
|
+
*/
|
|
158
|
+
class InputBarManager {
|
|
159
|
+
constructor() {
|
|
160
|
+
this.rl = null;
|
|
161
|
+
this.state = 'ready';
|
|
162
|
+
this.resizeHandler = null;
|
|
163
|
+
// Handle terminal resize
|
|
164
|
+
this.resizeHandler = () => {
|
|
165
|
+
// On resize, we don't need to redraw mid-input since readline handles it
|
|
166
|
+
};
|
|
167
|
+
process.stdout.on('resize', this.resizeHandler);
|
|
168
|
+
}
|
|
169
|
+
/**
|
|
170
|
+
* Draw the ready input frame (borders + status).
|
|
171
|
+
* Does NOT start readline — that's done in ask().
|
|
172
|
+
*/
|
|
173
|
+
drawReady() {
|
|
174
|
+
this.state = 'ready';
|
|
175
|
+
drawTopBorder();
|
|
176
|
+
// The readline prompt will fill this line
|
|
177
|
+
}
|
|
178
|
+
/**
|
|
179
|
+
* Ask for user input inside the framed bar.
|
|
180
|
+
* Returns the trimmed input string.
|
|
181
|
+
*/
|
|
182
|
+
ask(history = []) {
|
|
183
|
+
return new Promise((resolve) => {
|
|
184
|
+
this.rl = readline.createInterface({
|
|
185
|
+
input: process.stdin,
|
|
186
|
+
output: process.stdout,
|
|
187
|
+
terminal: true,
|
|
188
|
+
history: history,
|
|
189
|
+
historySize: 100,
|
|
190
|
+
});
|
|
191
|
+
const prompt = getPromptString('ready');
|
|
192
|
+
this.rl.question(prompt, (answer) => {
|
|
193
|
+
const trimmed = answer.trim();
|
|
194
|
+
// After user hits Enter, draw bottom border and status
|
|
195
|
+
drawBottomBorder();
|
|
196
|
+
// Determine which status to show based on input
|
|
197
|
+
if (trimmed.startsWith('/')) {
|
|
198
|
+
drawStatusLine('ready');
|
|
199
|
+
}
|
|
200
|
+
else if (trimmed) {
|
|
201
|
+
drawStatusLine('sending');
|
|
202
|
+
}
|
|
203
|
+
else {
|
|
204
|
+
drawStatusLine('ready');
|
|
205
|
+
}
|
|
206
|
+
this.rl?.close();
|
|
207
|
+
this.rl = null;
|
|
208
|
+
resolve(trimmed);
|
|
209
|
+
});
|
|
210
|
+
});
|
|
211
|
+
}
|
|
212
|
+
/**
|
|
213
|
+
* Lock the bar in "sending" state (user just hit Enter).
|
|
214
|
+
*/
|
|
215
|
+
showSending(inputText) {
|
|
216
|
+
this.state = 'sending';
|
|
217
|
+
// Clear the bottom border + status that ask() drew
|
|
218
|
+
process.stdout.write('\x1b[1A\x1b[2K'); // clear status
|
|
219
|
+
process.stdout.write('\x1b[1A\x1b[2K'); // clear bottom border
|
|
220
|
+
drawBottomBorder();
|
|
221
|
+
drawStatusLine('sending');
|
|
222
|
+
}
|
|
223
|
+
/**
|
|
224
|
+
* Update to "receiving" state while AI streams response.
|
|
225
|
+
*/
|
|
226
|
+
showReceiving() {
|
|
227
|
+
this.state = 'receiving';
|
|
228
|
+
// Overwrite the status line
|
|
229
|
+
process.stdout.write('\x1b[1A\x1b[2K'); // clear current status
|
|
230
|
+
drawStatusLine('receiving');
|
|
231
|
+
}
|
|
232
|
+
/**
|
|
233
|
+
* Show success flash briefly.
|
|
234
|
+
*/
|
|
235
|
+
showSuccess() {
|
|
236
|
+
this.state = 'success';
|
|
237
|
+
process.stdout.write('\x1b[1A\x1b[2K');
|
|
238
|
+
drawStatusLine('success');
|
|
239
|
+
}
|
|
240
|
+
/**
|
|
241
|
+
* Reset to ready state for next input.
|
|
242
|
+
* Clears old status and draws fresh frame.
|
|
243
|
+
*/
|
|
244
|
+
reset() {
|
|
245
|
+
this.state = 'ready';
|
|
246
|
+
console.log(''); // blank line after response
|
|
247
|
+
}
|
|
248
|
+
/**
|
|
249
|
+
* Clean up on exit.
|
|
250
|
+
*/
|
|
251
|
+
destroy() {
|
|
252
|
+
if (this.rl) {
|
|
253
|
+
this.rl.close();
|
|
254
|
+
this.rl = null;
|
|
255
|
+
}
|
|
256
|
+
if (this.resizeHandler) {
|
|
257
|
+
process.stdout.removeListener('resize', this.resizeHandler);
|
|
258
|
+
this.resizeHandler = null;
|
|
259
|
+
}
|
|
260
|
+
}
|
|
261
|
+
}
|
|
262
|
+
exports.InputBarManager = InputBarManager;
|
|
263
|
+
//# sourceMappingURL=inputbar.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"inputbar.js","sourceRoot":"","sources":["../../src/utils/inputbar.ts"],"names":[],"mappings":"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"}
|
package/dist/utils/output.d.ts
CHANGED
|
@@ -3,13 +3,10 @@
|
|
|
3
3
|
* CoWorker v1.3.0 by Sylix — Premium Output System
|
|
4
4
|
* ═══════════════════════════════════════════════════════════════════
|
|
5
5
|
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
* - Thinking animation with rotating messages
|
|
9
|
-
* - Markdown-aware response rendering (code blocks, bold, inline code)
|
|
10
|
-
* - Score cards, commit boxes, diff previews
|
|
6
|
+
* Premium terminal rendering with true streaming support.
|
|
7
|
+
* All response text renders inside ╷│╵ borders as it arrives.
|
|
11
8
|
*/
|
|
12
|
-
export declare const CW_VERSION = "1.
|
|
9
|
+
export declare const CW_VERSION = "1.4.0";
|
|
13
10
|
export declare const theme: {
|
|
14
11
|
brand: (s: string) => string;
|
|
15
12
|
accent: (s: string) => string;
|
|
@@ -18,29 +15,14 @@ export declare const theme: {
|
|
|
18
15
|
warning: (s: string) => string;
|
|
19
16
|
ai: (s: string) => string;
|
|
20
17
|
dim: (s: string) => string;
|
|
18
|
+
border: (s: string) => string;
|
|
21
19
|
white: (s: string) => string;
|
|
22
20
|
code: (s: string) => string;
|
|
23
21
|
purple: (s: string) => string;
|
|
24
22
|
};
|
|
25
23
|
export declare function getTermWidth(): number;
|
|
26
|
-
/**
|
|
27
|
-
* Full animated startup banner for CoWorker v1.3.0.
|
|
28
|
-
*
|
|
29
|
-
* 1. Logo slides in line-by-line (60ms between lines)
|
|
30
|
-
* 2. Tagline fades in word-by-word with semantic coloring
|
|
31
|
-
* 3. Divider draws left-to-right (3ms/char)
|
|
32
|
-
* 4. Info line fades in
|
|
33
|
-
* 5. Session info appears with 50ms delay between lines
|
|
34
|
-
* Total: under 1.5 seconds
|
|
35
|
-
*/
|
|
36
24
|
export declare function showBanner(version: string, userEmail?: string, model?: string): Promise<void>;
|
|
37
|
-
/**
|
|
38
|
-
* Static banner for non-TTY / piped / quick modes.
|
|
39
|
-
*/
|
|
40
25
|
export declare function showStaticBanner(version: string): void;
|
|
41
|
-
/**
|
|
42
|
-
* Session info lines — appear with delay between each.
|
|
43
|
-
*/
|
|
44
26
|
export declare function showSessionInfo(cwd: string, sessionId: string): Promise<void>;
|
|
45
27
|
export declare class ThinkingAnimation {
|
|
46
28
|
private interval;
|
|
@@ -51,17 +33,46 @@ export declare class ThinkingAnimation {
|
|
|
51
33
|
stop(): void;
|
|
52
34
|
}
|
|
53
35
|
/**
|
|
54
|
-
*
|
|
55
|
-
*
|
|
36
|
+
* Manages the response box state during streaming.
|
|
37
|
+
*
|
|
38
|
+
* Correct output:
|
|
39
|
+
* ╷
|
|
40
|
+
* │ Hi! I'm CoWorker, your AI coding assistant.
|
|
41
|
+
* │
|
|
42
|
+
* │ I can help you with:
|
|
43
|
+
* │ · Writing and debugging code
|
|
44
|
+
* │
|
|
45
|
+
* ╵ ✦ 1.2s · 34 tokens
|
|
46
|
+
*
|
|
47
|
+
* Rules:
|
|
48
|
+
* - ALL text inside ╷│╵ border
|
|
49
|
+
* - Border chars (╷ │ ╵) in dim gray #4B5563
|
|
50
|
+
* - Response text in purple #A78BFA
|
|
51
|
+
* - Code blocks switch to yellow #FCD34D
|
|
52
|
+
* - On every \n → print "\n │ "
|
|
56
53
|
*/
|
|
57
|
-
export declare
|
|
54
|
+
export declare class StreamRenderer {
|
|
55
|
+
private started;
|
|
56
|
+
private inCodeBlock;
|
|
57
|
+
private startTime;
|
|
58
|
+
private charCount;
|
|
59
|
+
constructor();
|
|
60
|
+
/**
|
|
61
|
+
* Call this for EACH chunk as it arrives from the SSE stream.
|
|
62
|
+
* Renders immediately — no buffering.
|
|
63
|
+
*/
|
|
64
|
+
write(chunk: string): void;
|
|
65
|
+
/**
|
|
66
|
+
* Close the response box and print footer.
|
|
67
|
+
*/
|
|
68
|
+
finish(): void;
|
|
69
|
+
/** Returns the estimated token count. */
|
|
70
|
+
getTokenEstimate(): number;
|
|
71
|
+
/** Returns elapsed ms. */
|
|
72
|
+
getElapsed(): number;
|
|
73
|
+
}
|
|
58
74
|
export declare function printResponseHeader(): void;
|
|
59
|
-
export declare function printResponseLine(text: string): void;
|
|
60
75
|
export declare function printResponseFooter(elapsed: number, tokenEstimate?: number): void;
|
|
61
|
-
/**
|
|
62
|
-
* Streams AI response text into the response box with markdown rendering.
|
|
63
|
-
* Call printResponseHeader() first, then stream chunks, then printResponseFooter().
|
|
64
|
-
*/
|
|
65
76
|
export declare function streamResponseChunk(chunk: string): void;
|
|
66
77
|
export declare function printUserPrompt(input: string): void;
|
|
67
78
|
export declare function printError(title: string, details?: string, hint?: string): void;
|
|
@@ -81,20 +92,14 @@ export declare function printDiff(fileName: string, changes: Array<{
|
|
|
81
92
|
type: 'add' | 'remove' | 'context';
|
|
82
93
|
line: string;
|
|
83
94
|
}>): void;
|
|
84
|
-
export declare function printHelp(): void;
|
|
85
|
-
export declare function printCompact(msgCount: number, tokenEst: number, sessionId: string): void;
|
|
86
|
-
export interface SlashCommand {
|
|
87
|
-
name: string;
|
|
88
|
-
desc: string;
|
|
89
|
-
}
|
|
90
95
|
/**
|
|
91
|
-
*
|
|
96
|
+
* Shows the CoWorker branded workspace trust prompt.
|
|
97
|
+
* Returns true if user trusts, false if they want to exit.
|
|
98
|
+
* Skips silently if the directory is already trusted.
|
|
92
99
|
*/
|
|
93
|
-
export declare function
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
*/
|
|
97
|
-
export declare function renderSlashMenu(matches: SlashCommand[]): string;
|
|
100
|
+
export declare function checkWorkspaceTrust(cwd: string): Promise<boolean>;
|
|
101
|
+
export declare function printHelp(): void;
|
|
102
|
+
export declare function printCompact(msgCount: number, tokenEst: number, sessionId: string): void;
|
|
98
103
|
export declare function printBox(label: string, lines: string[]): void;
|
|
99
104
|
export declare class Timer {
|
|
100
105
|
private start;
|
|
@@ -102,4 +107,5 @@ export declare class Timer {
|
|
|
102
107
|
elapsed(): number;
|
|
103
108
|
formatted(): string;
|
|
104
109
|
}
|
|
110
|
+
export declare function renderMarkdown(text: string): string;
|
|
105
111
|
//# sourceMappingURL=output.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"output.d.ts","sourceRoot":"","sources":["../../src/utils/output.ts"],"names":[],"mappings":"AAEA
|
|
1
|
+
{"version":3,"file":"output.d.ts","sourceRoot":"","sources":["../../src/utils/output.ts"],"names":[],"mappings":"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"}
|