@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,225 @@
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.advancedCommands = void 0;
37
+ const output_1 = require("../../utils/output");
38
+ const child_process_1 = require("child_process");
39
+ const fs = __importStar(require("fs"));
40
+ const path = __importStar(require("path"));
41
+ const NativeTools_1 = require("../../tools/NativeTools");
42
+ exports.advancedCommands = [
43
+ {
44
+ name: 'plan',
45
+ description: 'Enable plan mode for complex tasks',
46
+ group: 'workspace',
47
+ handler: async () => {
48
+ (0, output_1.printSuccess)('plan mode enabled');
49
+ console.log(output_1.theme.dim(' CoWorker will outline steps before executing.'));
50
+ console.log(output_1.theme.dim(' Each step requires your approval.'));
51
+ console.log('');
52
+ },
53
+ },
54
+ {
55
+ name: 'tasks',
56
+ description: 'List active tasks',
57
+ group: 'workspace',
58
+ handler: async () => {
59
+ console.log(output_1.theme.dim(' No active tasks.'));
60
+ console.log(output_1.theme.dim(' Tasks will appear here when CoWorker runs background operations.'));
61
+ console.log('');
62
+ },
63
+ },
64
+ {
65
+ name: 'add-dir',
66
+ description: 'Add another working directory',
67
+ group: 'workspace',
68
+ handler: async () => {
69
+ const readline = await Promise.resolve().then(() => __importStar(require('readline')));
70
+ const rl = readline.createInterface({ input: process.stdin, output: process.stdout });
71
+ const dirPath = await new Promise(r => {
72
+ rl.question(` ${output_1.theme.dim('directory path?')} ${output_1.theme.brand('›')} `, a => { r(a.trim()); rl.close(); });
73
+ });
74
+ if (dirPath && fs.existsSync(dirPath)) {
75
+ (0, output_1.printSuccess)(`added directory: ${dirPath}`);
76
+ }
77
+ else {
78
+ (0, output_1.printError)('Directory not found', dirPath || 'empty path');
79
+ }
80
+ },
81
+ },
82
+ {
83
+ name: 'batch',
84
+ description: 'Run prompt across multiple files',
85
+ group: 'advanced',
86
+ handler: async (agent, arg) => {
87
+ const readline = await Promise.resolve().then(() => __importStar(require('readline')));
88
+ if (!arg) {
89
+ const rl = readline.createInterface({ input: process.stdin, output: process.stdout });
90
+ arg = await new Promise(r => {
91
+ rl.question(` ${output_1.theme.dim('prompt to run?')} ${output_1.theme.brand('›')} `, a => { r(a.trim()); rl.close(); });
92
+ });
93
+ }
94
+ if (!arg)
95
+ return;
96
+ const rl2 = readline.createInterface({ input: process.stdin, output: process.stdout });
97
+ const pattern = await new Promise(r => {
98
+ rl2.question(` ${output_1.theme.dim('file glob?')} ${output_1.theme.brand('›')} `, a => { r(a.trim()); rl2.close(); });
99
+ });
100
+ if (!pattern)
101
+ return;
102
+ let files = [];
103
+ try {
104
+ files = await NativeTools_1.NativeTools.executeGlob(pattern, process.cwd());
105
+ }
106
+ catch { /* ignore */ }
107
+ if (files.length === 0) {
108
+ (0, output_1.printError)('No files matched', pattern);
109
+ return;
110
+ }
111
+ console.log(output_1.theme.dim(` Found ${files.length} files. Processing...`));
112
+ console.log('');
113
+ for (const file of files.slice(0, 10)) {
114
+ console.log(output_1.theme.brand(` ── ${file} ──`));
115
+ const content = fs.readFileSync(path.resolve(process.cwd(), file), 'utf8');
116
+ const prompt = `${arg}\n\nFile: ${file}\n\`\`\`\n${content.substring(0, 4000)}\n\`\`\``;
117
+ const renderer = new output_1.StreamRenderer();
118
+ for await (const chunk of agent.chat(prompt)) {
119
+ renderer.write(chunk);
120
+ }
121
+ renderer.finish();
122
+ }
123
+ if (files.length > 10) {
124
+ console.log(output_1.theme.dim(` ... and ${files.length - 10} more files (capped at 10 per batch)`));
125
+ }
126
+ },
127
+ },
128
+ {
129
+ name: 'loop',
130
+ description: 'Run command on recurring interval',
131
+ group: 'advanced',
132
+ handler: async (_agent, arg) => {
133
+ if (arg === 'stop') {
134
+ (0, output_1.printSuccess)('all loops stopped');
135
+ return;
136
+ }
137
+ if (!arg) {
138
+ console.log(output_1.theme.dim(' Usage: /loop <interval> <command>'));
139
+ console.log(output_1.theme.dim(' Example: /loop 5m /review'));
140
+ console.log(output_1.theme.dim(' /loop stop to cancel all'));
141
+ return;
142
+ }
143
+ const parts = arg.split(' ');
144
+ const interval = parts[0];
145
+ const command = parts.slice(1).join(' ');
146
+ console.log(output_1.theme.dim(` ⏱ Would loop "${command}" every ${interval}`));
147
+ console.log(output_1.theme.dim(' (loop scheduling is a future feature)'));
148
+ },
149
+ },
150
+ {
151
+ name: 'security-review',
152
+ description: 'Security audit of branch changes',
153
+ group: 'advanced',
154
+ handler: async (agent) => {
155
+ const thinking = new output_1.ThinkingAnimation('auditing security');
156
+ thinking.start();
157
+ try {
158
+ let diff = '';
159
+ try {
160
+ diff = (0, child_process_1.execSync)('git diff HEAD', { encoding: 'utf8', maxBuffer: 5 * 1024 * 1024 }).trim();
161
+ }
162
+ catch { }
163
+ if (!diff) {
164
+ thinking.stop();
165
+ (0, output_1.printError)('No changes', 'No diff to audit.');
166
+ return;
167
+ }
168
+ const prompt = `Perform a security audit of these code changes. Look for:\n- Exposed secrets/API keys\n- SQL injection / command injection\n- XSS vulnerabilities\n- Unsafe deserialization\n- Hardcoded credentials\n- Auth/authz issues\n- Unsafe file operations\n\nDiff:\n${diff.substring(0, 8000)}`;
169
+ const renderer = new output_1.StreamRenderer();
170
+ let hasContent = false;
171
+ for await (const chunk of agent.chat(prompt)) {
172
+ if (!hasContent) {
173
+ thinking.stop();
174
+ hasContent = true;
175
+ }
176
+ renderer.write(chunk);
177
+ }
178
+ thinking.stop();
179
+ renderer.finish();
180
+ }
181
+ catch (e) {
182
+ thinking.stop();
183
+ (0, output_1.printError)('Security review failed', e.message);
184
+ }
185
+ },
186
+ },
187
+ {
188
+ name: 'simplify',
189
+ description: 'Review and simplify changed code',
190
+ group: 'advanced',
191
+ handler: async (agent) => {
192
+ const thinking = new output_1.ThinkingAnimation('analyzing code');
193
+ thinking.start();
194
+ try {
195
+ let diff = '';
196
+ try {
197
+ diff = (0, child_process_1.execSync)('git diff HEAD', { encoding: 'utf8', maxBuffer: 5 * 1024 * 1024 }).trim();
198
+ }
199
+ catch { }
200
+ if (!diff) {
201
+ thinking.stop();
202
+ (0, output_1.printError)('No changes', 'No diff to simplify.');
203
+ return;
204
+ }
205
+ const prompt = `Review these code changes and suggest simplifications. Focus on:\n- Reducing complexity\n- Removing redundant code\n- Better naming\n- Using built-in functions\n- Cleaner control flow\n\nDiff:\n${diff.substring(0, 8000)}`;
206
+ const renderer = new output_1.StreamRenderer();
207
+ let hasContent = false;
208
+ for await (const chunk of agent.chat(prompt)) {
209
+ if (!hasContent) {
210
+ thinking.stop();
211
+ hasContent = true;
212
+ }
213
+ renderer.write(chunk);
214
+ }
215
+ thinking.stop();
216
+ renderer.finish();
217
+ }
218
+ catch (e) {
219
+ thinking.stop();
220
+ (0, output_1.printError)('Simplify failed', e.message);
221
+ }
222
+ },
223
+ },
224
+ ];
225
+ //# sourceMappingURL=advanced.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"advanced.js","sourceRoot":"","sources":["../../../src/commands/slash/advanced.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { SlashCommand } from './registry';
2
+ export declare const configCommands: SlashCommand[];
3
+ //# sourceMappingURL=config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../src/commands/slash/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAuB1C,eAAO,MAAM,cAAc,EAAE,YAAY,EA8GxC,CAAC"}
@@ -0,0 +1,161 @@
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.configCommands = void 0;
37
+ const output_1 = require("../../utils/output");
38
+ const fs = __importStar(require("fs"));
39
+ const path = __importStar(require("path"));
40
+ const os = __importStar(require("os"));
41
+ const CONFIG_PATH = path.join(os.homedir(), '.coworker', 'config.json');
42
+ function loadConfig() {
43
+ try {
44
+ if (fs.existsSync(CONFIG_PATH))
45
+ return JSON.parse(fs.readFileSync(CONFIG_PATH, 'utf8'));
46
+ }
47
+ catch { }
48
+ return {};
49
+ }
50
+ function saveConfig(config) {
51
+ try {
52
+ const dir = path.dirname(CONFIG_PATH);
53
+ if (!fs.existsSync(dir))
54
+ fs.mkdirSync(dir, { recursive: true });
55
+ fs.writeFileSync(CONFIG_PATH, JSON.stringify(config, null, 2));
56
+ }
57
+ catch { }
58
+ }
59
+ exports.configCommands = [
60
+ {
61
+ name: 'model',
62
+ description: 'Show or switch current model',
63
+ group: 'model & config',
64
+ handler: async () => {
65
+ const config = loadConfig();
66
+ const current = config.model || 'helix-1.2';
67
+ const models = [
68
+ { name: 'helix-1.2', desc: 'balanced (default)', current: current === 'helix-1.2' },
69
+ { name: 'helix-2.0', desc: 'faster responses', current: current === 'helix-2.0' },
70
+ { name: 'helix-pro', desc: 'most capable', current: current === 'helix-pro' },
71
+ ];
72
+ console.log('');
73
+ console.log(output_1.theme.dim(` current: ${output_1.theme.white(current)}`));
74
+ console.log('');
75
+ console.log(output_1.theme.dim(' available:'));
76
+ for (const m of models) {
77
+ const indicator = m.current ? output_1.theme.brand('›') : ' ';
78
+ const tag = m.current ? output_1.theme.dim(' (current)') : '';
79
+ console.log(` ${indicator} ${output_1.theme.white(m.name)} ${output_1.theme.dim(m.desc)}${tag}`);
80
+ }
81
+ console.log('');
82
+ },
83
+ },
84
+ {
85
+ name: 'theme',
86
+ description: 'Switch color theme',
87
+ group: 'model & config',
88
+ handler: async () => {
89
+ const config = loadConfig();
90
+ const current = config.theme || 'dark';
91
+ const themes = [
92
+ { name: 'dark', desc: 'default color scheme' },
93
+ { name: 'hacker', desc: 'all green, matrix style' },
94
+ { name: 'minimal', desc: 'no colors, plain text' },
95
+ ];
96
+ console.log('');
97
+ for (const t of themes) {
98
+ const indicator = t.name === current ? output_1.theme.brand('›') : ' ';
99
+ const tag = t.name === current ? output_1.theme.dim(' (active)') : '';
100
+ console.log(` ${indicator} ${output_1.theme.white(t.name)} ${output_1.theme.dim(t.desc)}${tag}`);
101
+ }
102
+ console.log('');
103
+ const readline = await Promise.resolve().then(() => __importStar(require('readline')));
104
+ const rl = readline.createInterface({ input: process.stdin, output: process.stdout });
105
+ const answer = await new Promise(r => {
106
+ rl.question(` ${output_1.theme.dim('switch to?')} ${output_1.theme.brand('›')} `, a => { r(a.trim()); rl.close(); });
107
+ });
108
+ if (themes.some(t => t.name === answer)) {
109
+ config.theme = answer;
110
+ saveConfig(config);
111
+ (0, output_1.printSuccess)(`theme switched to ${answer}`);
112
+ }
113
+ },
114
+ },
115
+ {
116
+ name: 'effort',
117
+ description: 'Set response effort level',
118
+ group: 'model & config',
119
+ handler: async () => {
120
+ const config = loadConfig();
121
+ const current = config.effort || 'balanced';
122
+ const levels = [
123
+ { name: 'fast', desc: 'shorter, quicker responses' },
124
+ { name: 'balanced', desc: 'normal responses (default)' },
125
+ { name: 'deep', desc: 'thorough, detailed analysis' },
126
+ ];
127
+ console.log('');
128
+ for (const l of levels) {
129
+ const indicator = l.name === current ? output_1.theme.brand('›') : ' ';
130
+ console.log(` ${indicator} ${output_1.theme.white(l.name)} ${output_1.theme.dim(l.desc)}`);
131
+ }
132
+ console.log('');
133
+ const readline = await Promise.resolve().then(() => __importStar(require('readline')));
134
+ const rl = readline.createInterface({ input: process.stdin, output: process.stdout });
135
+ const answer = await new Promise(r => {
136
+ rl.question(` ${output_1.theme.dim('set effort?')} ${output_1.theme.brand('›')} `, a => { r(a.trim()); rl.close(); });
137
+ });
138
+ if (levels.some(l => l.name === answer)) {
139
+ config.effort = answer;
140
+ saveConfig(config);
141
+ (0, output_1.printSuccess)(`effort set to ${answer}`);
142
+ }
143
+ },
144
+ },
145
+ {
146
+ name: 'debug',
147
+ description: 'Toggle verbose debug logging',
148
+ group: 'model & config',
149
+ handler: async () => {
150
+ if (process.env.CW_VERBOSE === '1') {
151
+ delete process.env.CW_VERBOSE;
152
+ (0, output_1.printSuccess)('debug logging disabled');
153
+ }
154
+ else {
155
+ process.env.CW_VERBOSE = '1';
156
+ (0, output_1.printSuccess)('debug logging enabled');
157
+ }
158
+ },
159
+ },
160
+ ];
161
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/commands/slash/config.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { SlashCommand } from './registry';
2
+ export declare const contextCommands: SlashCommand[];
3
+ //# sourceMappingURL=context.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../../src/commands/slash/context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAK1C,eAAO,MAAM,eAAe,EAAE,YAAY,EAiGzC,CAAC"}
@@ -0,0 +1,127 @@
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.contextCommands = void 0;
37
+ const output_1 = require("../../utils/output");
38
+ const fs = __importStar(require("fs"));
39
+ const path = __importStar(require("path"));
40
+ exports.contextCommands = [
41
+ {
42
+ name: 'compact',
43
+ description: 'Compress conversation context',
44
+ group: 'context',
45
+ handler: async (agent) => {
46
+ const msgs = agent.sessions.state.messages;
47
+ const beforeTokens = Math.ceil(msgs.reduce((a, m) => a + (m.content?.length || 0), 0) / 4);
48
+ if (msgs.length < 4) {
49
+ console.log(output_1.theme.dim(' Not enough context to compress.'));
50
+ return;
51
+ }
52
+ // Keep system and last 3 messages, summarize the rest
53
+ const toSummarize = msgs.slice(0, -3);
54
+ const toKeep = msgs.slice(-3);
55
+ const summaryPrompt = `Summarize this conversation concisely, preserving all key decisions, code changes, and context:\n\n${toSummarize.map((m) => `${m.role}: ${m.content?.substring(0, 500)}`).join('\n')}`;
56
+ let summary = '';
57
+ for await (const chunk of agent.chat(summaryPrompt)) {
58
+ summary += chunk;
59
+ }
60
+ agent.sessions.state.messages = [
61
+ { role: 'system', content: `[COMPRESSED CONTEXT]\n${summary}` },
62
+ ...toKeep,
63
+ ];
64
+ await agent.sessions.saveCheckpoint();
65
+ const afterTokens = Math.ceil(agent.sessions.state.messages.reduce((a, m) => a + (m.content?.length || 0), 0) / 4);
66
+ const saved = beforeTokens - afterTokens;
67
+ (0, output_1.printSuccess)(`context compressed · saved ~${saved} tokens`);
68
+ },
69
+ },
70
+ {
71
+ name: 'context',
72
+ description: 'Show context window usage',
73
+ group: 'context',
74
+ handler: async (agent) => {
75
+ const msgs = agent.sessions.state.messages;
76
+ const totalChars = msgs.reduce((a, m) => a + (m.content?.length || 0), 0);
77
+ const tokens = Math.ceil(totalChars / 4);
78
+ const maxTokens = 10000;
79
+ const usage = Math.min(100, Math.round((tokens / maxTokens) * 100));
80
+ const barWidth = 30;
81
+ const filled = Math.round((usage / 100) * barWidth);
82
+ const bar = '█'.repeat(filled) + '░'.repeat(barWidth - filled);
83
+ const barColor = usage > 80 ? output_1.theme.error : usage > 50 ? output_1.theme.warning : output_1.theme.success;
84
+ console.log('');
85
+ console.log(output_1.theme.dim(' context window'));
86
+ console.log(` ${barColor(bar)} ${output_1.theme.white(`${usage}%`)} ${output_1.theme.dim('used')}`);
87
+ console.log(output_1.theme.dim(` ${tokens.toLocaleString()} / ${maxTokens.toLocaleString()} tokens · ${msgs.length} messages`));
88
+ console.log('');
89
+ },
90
+ },
91
+ {
92
+ name: 'memory',
93
+ description: 'View and edit CoWorker memory',
94
+ group: 'context',
95
+ handler: async () => {
96
+ const memPath = path.resolve(process.cwd(), 'COWORKER.md');
97
+ const cwPath = path.resolve(process.cwd(), '.coworker.md');
98
+ let content = '';
99
+ let source = '';
100
+ if (fs.existsSync(memPath)) {
101
+ content = fs.readFileSync(memPath, 'utf8');
102
+ source = 'COWORKER.md';
103
+ }
104
+ else if (fs.existsSync(cwPath)) {
105
+ content = fs.readFileSync(cwPath, 'utf8');
106
+ source = '.coworker.md';
107
+ }
108
+ if (!content) {
109
+ console.log(output_1.theme.dim(' No memory files found. Use /init to create .coworker.md'));
110
+ return;
111
+ }
112
+ console.log('');
113
+ console.log(output_1.theme.border(' ╷'));
114
+ console.log(output_1.theme.border(' │') + ` ${output_1.theme.brand('Memory')} ${output_1.theme.dim(`· from ${source}`)}`);
115
+ console.log(output_1.theme.border(' │'));
116
+ for (const line of content.split('\n').slice(0, 20)) {
117
+ console.log(output_1.theme.border(' │') + ` ${output_1.theme.dim(line)}`);
118
+ }
119
+ if (content.split('\n').length > 20) {
120
+ console.log(output_1.theme.border(' │') + ` ${output_1.theme.dim(`... ${content.split('\n').length - 20} more lines`)}`);
121
+ }
122
+ console.log(output_1.theme.border(' ╵'));
123
+ console.log('');
124
+ },
125
+ },
126
+ ];
127
+ //# sourceMappingURL=context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context.js","sourceRoot":"","sources":["../../../src/commands/slash/context.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { SlashCommand } from './registry';
2
+ export declare const coreCommands: SlashCommand[];
3
+ //# sourceMappingURL=core.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"core.d.ts","sourceRoot":"","sources":["../../../src/commands/slash/core.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAK1C,eAAO,MAAM,YAAY,EAAE,YAAY,EAyEtC,CAAC"}