@sylix/coworker 1.2.6 → 1.3.1

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.
Files changed (82) hide show
  1. package/dist/cli/index.d.ts.map +1 -1
  2. package/dist/cli/index.js +181 -106
  3. package/dist/cli/index.js.map +1 -1
  4. package/dist/commands/slash/advanced.d.ts +3 -0
  5. package/dist/commands/slash/advanced.d.ts.map +1 -0
  6. package/dist/commands/slash/advanced.js +225 -0
  7. package/dist/commands/slash/advanced.js.map +1 -0
  8. package/dist/commands/slash/config.d.ts +3 -0
  9. package/dist/commands/slash/config.d.ts.map +1 -0
  10. package/dist/commands/slash/config.js +161 -0
  11. package/dist/commands/slash/config.js.map +1 -0
  12. package/dist/commands/slash/context.d.ts +3 -0
  13. package/dist/commands/slash/context.d.ts.map +1 -0
  14. package/dist/commands/slash/context.js +127 -0
  15. package/dist/commands/slash/context.js.map +1 -0
  16. package/dist/commands/slash/core.d.ts +3 -0
  17. package/dist/commands/slash/core.d.ts.map +1 -0
  18. package/dist/commands/slash/core.js +112 -0
  19. package/dist/commands/slash/core.js.map +1 -0
  20. package/dist/commands/slash/developer.d.ts +3 -0
  21. package/dist/commands/slash/developer.d.ts.map +1 -0
  22. package/dist/commands/slash/developer.js +174 -0
  23. package/dist/commands/slash/developer.js.map +1 -0
  24. package/dist/commands/slash/files.d.ts +3 -0
  25. package/dist/commands/slash/files.d.ts.map +1 -0
  26. package/dist/commands/slash/files.js +216 -0
  27. package/dist/commands/slash/files.js.map +1 -0
  28. package/dist/commands/slash/registry.d.ts +36 -0
  29. package/dist/commands/slash/registry.d.ts.map +1 -0
  30. package/dist/commands/slash/registry.js +69 -0
  31. package/dist/commands/slash/registry.js.map +1 -0
  32. package/dist/commands/slash/session.d.ts +3 -0
  33. package/dist/commands/slash/session.d.ts.map +1 -0
  34. package/dist/commands/slash/session.js +144 -0
  35. package/dist/commands/slash/session.js.map +1 -0
  36. package/dist/core/CoWorkerAgent.d.ts +8 -2
  37. package/dist/core/CoWorkerAgent.d.ts.map +1 -1
  38. package/dist/core/CoWorkerAgent.js +179 -36
  39. package/dist/core/CoWorkerAgent.js.map +1 -1
  40. package/dist/review/CodeReviewEngine.d.ts +78 -0
  41. package/dist/review/CodeReviewEngine.d.ts.map +1 -0
  42. package/dist/review/CodeReviewEngine.js +449 -0
  43. package/dist/review/CodeReviewEngine.js.map +1 -0
  44. package/dist/session/SessionManager.js +10 -5
  45. package/dist/session/SessionManager.js.map +1 -1
  46. package/dist/skills/HookAndSkillManager.d.ts +29 -5
  47. package/dist/skills/HookAndSkillManager.d.ts.map +1 -1
  48. package/dist/skills/HookAndSkillManager.js +167 -12
  49. package/dist/skills/HookAndSkillManager.js.map +1 -1
  50. package/dist/todos/TodoManager.d.ts +19 -0
  51. package/dist/todos/TodoManager.d.ts.map +1 -0
  52. package/dist/todos/TodoManager.js +102 -0
  53. package/dist/todos/TodoManager.js.map +1 -0
  54. package/dist/tools/NativeTools.d.ts +98 -0
  55. package/dist/tools/NativeTools.d.ts.map +1 -1
  56. package/dist/tools/NativeTools.js +571 -0
  57. package/dist/tools/NativeTools.js.map +1 -1
  58. package/dist/tools/Schemas.d.ts +1199 -102
  59. package/dist/tools/Schemas.d.ts.map +1 -1
  60. package/dist/tools/Schemas.js +358 -40
  61. package/dist/tools/Schemas.js.map +1 -1
  62. package/dist/utils/conversations.d.ts +14 -0
  63. package/dist/utils/conversations.d.ts.map +1 -0
  64. package/dist/utils/conversations.js +100 -0
  65. package/dist/utils/conversations.js.map +1 -0
  66. package/dist/utils/inputbar.d.ts +87 -0
  67. package/dist/utils/inputbar.d.ts.map +1 -0
  68. package/dist/utils/inputbar.js +263 -0
  69. package/dist/utils/inputbar.js.map +1 -0
  70. package/dist/utils/output.d.ts +73 -48
  71. package/dist/utils/output.d.ts.map +1 -1
  72. package/dist/utils/output.js +349 -158
  73. package/dist/utils/output.js.map +1 -1
  74. package/dist/utils/palette.d.ts +25 -0
  75. package/dist/utils/palette.d.ts.map +1 -0
  76. package/dist/utils/palette.js +92 -0
  77. package/dist/utils/palette.js.map +1 -0
  78. package/dist/utils/welcome.d.ts +2 -0
  79. package/dist/utils/welcome.d.ts.map +1 -0
  80. package/dist/utils/welcome.js +130 -0
  81. package/dist/utils/welcome.js.map +1 -0
  82. package/package.json +1 -1
@@ -0,0 +1,100 @@
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.loadConversations = loadConversations;
37
+ exports.saveConversations = saveConversations;
38
+ exports.addConversation = addConversation;
39
+ exports.updateConversation = updateConversation;
40
+ exports.autoNameConversation = autoNameConversation;
41
+ const fs = __importStar(require("fs"));
42
+ const path = __importStar(require("path"));
43
+ const os = __importStar(require("os"));
44
+ /**
45
+ * Conversation persistence — ~/.coworker/conversations.json
46
+ * Keeps last 50 conversations with messages, timestamps, names.
47
+ */
48
+ const CONVERSATIONS_PATH = path.join(os.homedir(), '.coworker', 'conversations.json');
49
+ const MAX_CONVERSATIONS = 50;
50
+ function ensureDir() {
51
+ const dir = path.dirname(CONVERSATIONS_PATH);
52
+ if (!fs.existsSync(dir))
53
+ fs.mkdirSync(dir, { recursive: true });
54
+ }
55
+ function loadConversations() {
56
+ try {
57
+ if (fs.existsSync(CONVERSATIONS_PATH)) {
58
+ const data = JSON.parse(fs.readFileSync(CONVERSATIONS_PATH, 'utf8'));
59
+ return Array.isArray(data?.conversations) ? data.conversations : [];
60
+ }
61
+ }
62
+ catch { /* ignore */ }
63
+ return [];
64
+ }
65
+ function saveConversations(entries) {
66
+ try {
67
+ ensureDir();
68
+ const trimmed = entries.slice(-MAX_CONVERSATIONS);
69
+ fs.writeFileSync(CONVERSATIONS_PATH, JSON.stringify({ conversations: trimmed }, null, 2));
70
+ }
71
+ catch { /* ignore */ }
72
+ }
73
+ function addConversation(entry) {
74
+ const list = loadConversations();
75
+ const existing = list.findIndex(c => c.id === entry.id);
76
+ if (existing >= 0) {
77
+ list[existing] = entry;
78
+ }
79
+ else {
80
+ list.push(entry);
81
+ }
82
+ saveConversations(list);
83
+ }
84
+ function updateConversation(id, updates) {
85
+ const list = loadConversations();
86
+ const idx = list.findIndex(c => c.id === id);
87
+ if (idx >= 0) {
88
+ list[idx] = { ...list[idx], ...updates, lastActive: new Date().toISOString() };
89
+ saveConversations(list);
90
+ }
91
+ }
92
+ function autoNameConversation(firstMessage) {
93
+ const trimmed = firstMessage.trim().substring(0, 60);
94
+ if (trimmed.length <= 3) {
95
+ const now = new Date();
96
+ return `conversation · ${now.toLocaleTimeString([], { hour: '2-digit', minute: '2-digit' })}`;
97
+ }
98
+ return trimmed;
99
+ }
100
+ //# sourceMappingURL=conversations.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"conversations.js","sourceRoot":"","sources":["../../src/utils/conversations.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,87 @@
1
+ export type InputBarState = 'ready' | 'typing' | 'slash' | 'sending' | 'receiving' | 'success';
2
+ /**
3
+ * Draws the framed input bar. This is called:
4
+ * - Before readline prompt (draws the frame)
5
+ * - On state changes (thinking, receiving, etc.)
6
+ *
7
+ * The input bar uses a simple approach:
8
+ * readline handles the actual input on a bordered line.
9
+ * We print borders and status around it.
10
+ */
11
+ export declare function drawTopBorder(): void;
12
+ export declare function drawBottomBorder(): void;
13
+ export declare function drawStatusLine(state: InputBarState): void;
14
+ /**
15
+ * Get the readline prompt string (the ◆ prefix).
16
+ */
17
+ export declare function getPromptString(state?: InputBarState): string;
18
+ /**
19
+ * Draw the full input frame (top border, prompt placeholder, bottom border, status).
20
+ * Used when transitioning states.
21
+ */
22
+ export declare function drawInputFrame(state: InputBarState, inputText?: string): void;
23
+ /**
24
+ * Clear the input frame (4 lines: top border, input, bottom border, status).
25
+ * Move cursor up and clear each line.
26
+ */
27
+ export declare function clearInputFrame(lines?: number): void;
28
+ /**
29
+ * Show the locked state while AI is working.
30
+ * Replaces the input frame with a locked version.
31
+ */
32
+ export declare function lockInputBar(state: 'sending' | 'receiving', inputText?: string): void;
33
+ /**
34
+ * Show a brief success flash then return to ready.
35
+ */
36
+ export declare function flashSuccess(): void;
37
+ /**
38
+ * Manages the complete input bar lifecycle during the REPL.
39
+ *
40
+ * Usage in REPL:
41
+ * const bar = new InputBarManager();
42
+ * bar.drawReady(); // show empty input bar
43
+ * const input = await bar.ask() // get user input (readline inside frame)
44
+ * bar.showSending(input); // lock bar while thinking
45
+ * // ... AI response renders above ...
46
+ * bar.showReceiving(); // update status while streaming
47
+ * // ... response done ...
48
+ * bar.drawReady(); // unlock for next input
49
+ */
50
+ export declare class InputBarManager {
51
+ private rl;
52
+ private state;
53
+ private resizeHandler;
54
+ constructor();
55
+ /**
56
+ * Draw the ready input frame (borders + status).
57
+ * Does NOT start readline — that's done in ask().
58
+ */
59
+ drawReady(): void;
60
+ /**
61
+ * Ask for user input inside the framed bar.
62
+ * Returns the trimmed input string.
63
+ */
64
+ ask(history?: string[]): Promise<string>;
65
+ /**
66
+ * Lock the bar in "sending" state (user just hit Enter).
67
+ */
68
+ showSending(inputText: string): void;
69
+ /**
70
+ * Update to "receiving" state while AI streams response.
71
+ */
72
+ showReceiving(): void;
73
+ /**
74
+ * Show success flash briefly.
75
+ */
76
+ showSuccess(): void;
77
+ /**
78
+ * Reset to ready state for next input.
79
+ * Clears old status and draws fresh frame.
80
+ */
81
+ reset(): void;
82
+ /**
83
+ * Clean up on exit.
84
+ */
85
+ destroy(): void;
86
+ }
87
+ //# sourceMappingURL=inputbar.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"inputbar.d.ts","sourceRoot":"","sources":["../../src/utils/inputbar.ts"],"names":[],"mappings":"AAwBA,MAAM,MAAM,aAAa,GAAG,OAAO,GAAG,QAAQ,GAAG,OAAO,GAAG,SAAS,GAAG,WAAW,GAAG,SAAS,CAAC;AAW/F;;;;;;;;GAQG;AACH,wBAAgB,aAAa,IAAI,IAAI,CAGpC;AAED,wBAAgB,gBAAgB,IAAI,IAAI,CAGvC;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,aAAa,GAAG,IAAI,CAGzD;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,KAAK,GAAE,aAAuB,GAAG,MAAM,CAOtE;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,aAAa,EAAE,SAAS,GAAE,MAAW,GAAG,IAAI,CAMjF;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,KAAK,GAAE,MAAU,GAAG,IAAI,CAIvD;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,SAAS,GAAG,WAAW,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAKrF;AAED;;GAEG;AACH,wBAAgB,YAAY,IAAI,IAAI,CAKnC;AAED;;;;;;;;;;;;GAYG;AACH,qBAAa,eAAe;IAC1B,OAAO,CAAC,EAAE,CAAmC;IAC7C,OAAO,CAAC,KAAK,CAA0B;IACvC,OAAO,CAAC,aAAa,CAA6B;;IAUlD;;;OAGG;IACH,SAAS,IAAI,IAAI;IAMjB;;;OAGG;IACH,GAAG,CAAC,OAAO,GAAE,MAAM,EAAO,GAAG,OAAO,CAAC,MAAM,CAAC;IAkC5C;;OAEG;IACH,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IASpC;;OAEG;IACH,aAAa,IAAI,IAAI;IAOrB;;OAEG;IACH,WAAW,IAAI,IAAI;IAMnB;;;OAGG;IACH,KAAK,IAAI,IAAI;IAKb;;OAEG;IACH,OAAO,IAAI,IAAI;CAOhB"}
@@ -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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"}
@@ -1,39 +1,79 @@
1
+ /**
2
+ * ═══════════════════════════════════════════════════════════════════
3
+ * CoWorker v1.3.0 by Sylix — Premium Output System
4
+ * ═══════════════════════════════════════════════════════════════════
5
+ *
6
+ * Premium terminal rendering with true streaming support.
7
+ * All response text renders inside ╷│╵ borders as it arrives.
8
+ */
9
+ export declare const CW_VERSION = "1.3.1";
1
10
  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
+ brand: (s: string) => string;
12
+ accent: (s: string) => string;
13
+ success: (s: string) => string;
14
+ error: (s: string) => string;
15
+ warning: (s: string) => string;
16
+ ai: (s: string) => string;
17
+ dim: (s: string) => string;
18
+ border: (s: string) => string;
19
+ white: (s: string) => string;
20
+ code: (s: string) => string;
21
+ purple: (s: string) => string;
11
22
  };
12
23
  export declare function getTermWidth(): number;
13
- /**
14
- * Full animated startup banner.
15
- * Step 1: Char-by-char typewriter ASCII logo
16
- * Step 2: Tagline fade-in word by word
17
- * Step 3: Animated thin line draw
18
- * Step 4: User/model info in dim text
19
- */
20
24
  export declare function showBanner(version: string, userEmail?: string, model?: string): Promise<void>;
21
- /**
22
- * Static banner for non-TTY / piped / --no-banner mode.
23
- */
24
25
  export declare function showStaticBanner(version: string): void;
26
+ export declare function showSessionInfo(cwd: string, sessionId: string): Promise<void>;
25
27
  export declare class ThinkingAnimation {
26
28
  private interval;
27
29
  private frame;
28
30
  private message;
29
- constructor();
31
+ constructor(customMessage?: string);
30
32
  start(): void;
31
33
  stop(): void;
32
34
  }
33
- export declare function boxTop(label?: string): string;
34
- export declare function boxBottom(): string;
35
+ /**
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 │ "
53
+ */
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
+ }
35
74
  export declare function printResponseHeader(): void;
36
75
  export declare function printResponseFooter(elapsed: number, tokenEstimate?: number): void;
76
+ export declare function streamResponseChunk(chunk: string): void;
37
77
  export declare function printUserPrompt(input: string): void;
38
78
  export declare function printError(title: string, details?: string, hint?: string): void;
39
79
  export declare function printSuccess(message: string): void;
@@ -42,38 +82,22 @@ export declare function printExit(): void;
42
82
  export declare function printToolStart(toolName: string): void;
43
83
  export declare function printToolDone(toolName: string, elapsed: number): void;
44
84
  export declare function printToolError(toolName: string, error: string): void;
45
- /**
46
- * ┌─────────────────────────────────┐
47
- * │ Code Review · src/index.ts │
48
- * ├─────────────────────────────────┤
49
- * │ Quality ████████░░ 8/10 │
50
- * │ Security ██████████ 10/10 │
51
- * └─────────────────────────────────┘
52
- */
53
- export declare function printScoreCard(fileName: string, scores: {
85
+ export declare function printScoreCard(fileName: string, scores: Array<{
54
86
  label: string;
55
87
  score: number;
56
88
  max?: number;
57
- }[]): void;
58
- /**
59
- * ╭─ Suggested Commit ──────────────────╮
60
- * │ ✨ feat: add user auth middleware │
61
- * │ │
62
- * │ Use this commit message? (y/n) › │
63
- * ╰─────────────────────────────────────╯
64
- */
89
+ }>): void;
65
90
  export declare function printCommitBox(commitMessage: string): void;
66
- /**
67
- * ── Changes to src/api/sylix.ts ──────────
68
- * - const url = "old-endpoint" ← red
69
- * + const url = "new-endpoint" ← green
70
- * ─────────────────────────────────────────
71
- * Apply these changes? (y/n) ›
72
- */
73
- export declare function printDiff(fileName: string, changes: {
91
+ export declare function printDiff(fileName: string, changes: Array<{
74
92
  type: 'add' | 'remove' | 'context';
75
93
  line: string;
76
- }[]): void;
94
+ }>): void;
95
+ /**
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.
99
+ */
100
+ export declare function checkWorkspaceTrust(cwd: string): Promise<boolean>;
77
101
  export declare function printHelp(): void;
78
102
  export declare function printCompact(msgCount: number, tokenEst: number, sessionId: string): void;
79
103
  export declare function printBox(label: string, lines: string[]): void;
@@ -83,4 +107,5 @@ export declare class Timer {
83
107
  elapsed(): number;
84
108
  formatted(): string;
85
109
  }
110
+ export declare function renderMarkdown(text: string): string;
86
111
  //# sourceMappingURL=output.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"output.d.ts","sourceRoot":"","sources":["../../src/utils/output.ts"],"names":[],"mappings":"AA2BA,eAAO,MAAM,KAAK;;;;;;;;;;CAUjB,CAAC;AAMF,wBAAgB,YAAY,IAAI,MAAM,CAErC;AA+BD;;;;;;GAMG;AACH,wBAAsB,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,EAAE,KAAK,GAAE,MAAoB,iBA+ChG;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;CAQL;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,QAO1E;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,QAgBxE;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;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAA;CAAE,EAAE,QA2BxG;AAMD;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,aAAa,EAAE,MAAM,QAenD;AAMD;;;;;;GAMG;AACH,wBAAgB,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE;IAAE,IAAI,EAAE,KAAK,GAAG,QAAQ,GAAG,SAAS,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,EAAE,QAqB1G;AAMD,wBAAgB,SAAS,SASxB;AAED,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,QAUjF;AAMD,wBAAgB,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,QAUtD;AAMD,qBAAa,KAAK;IAChB,OAAO,CAAC,KAAK,CAAS;;IAItB,OAAO,IAAI,MAAM;IAGjB,SAAS,IAAI,MAAM;CAIpB"}
1
+ {"version":3,"file":"output.d.ts","sourceRoot":"","sources":["../../src/utils/output.ts"],"names":[],"mappings":"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"}