@sylix/coworker 1.3.0 → 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.
- package/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/index.js +145 -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 -3
- package/dist/core/CoWorkerAgent.d.ts.map +1 -1
- package/dist/core/CoWorkerAgent.js +99 -32
- 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.js +2 -1
- package/dist/skills/HookAndSkillManager.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 +233 -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 +1 -1
|
@@ -0,0 +1,216 @@
|
|
|
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.fileCommands = 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 readline = __importStar(require("readline"));
|
|
42
|
+
exports.fileCommands = [
|
|
43
|
+
{
|
|
44
|
+
name: 'review',
|
|
45
|
+
description: 'Code review current file or branch',
|
|
46
|
+
group: 'files & code',
|
|
47
|
+
handler: async (agent, arg) => {
|
|
48
|
+
if (arg) {
|
|
49
|
+
const filePath = path.resolve(arg);
|
|
50
|
+
if (!fs.existsSync(filePath)) {
|
|
51
|
+
(0, output_1.printError)('File not found', filePath);
|
|
52
|
+
return;
|
|
53
|
+
}
|
|
54
|
+
const content = fs.readFileSync(filePath, 'utf8');
|
|
55
|
+
const prompt = `Thorough code review of this file. Score quality, security, performance, readability each /10. List bugs and improvements.\n\nFile: ${arg}\n\`\`\`\n${content.substring(0, 8000)}\n\`\`\``;
|
|
56
|
+
const thinking = new output_1.ThinkingAnimation('reviewing');
|
|
57
|
+
thinking.start();
|
|
58
|
+
const renderer = new output_1.StreamRenderer();
|
|
59
|
+
let hasContent = false;
|
|
60
|
+
for await (const chunk of agent.chat(prompt)) {
|
|
61
|
+
if (!hasContent) {
|
|
62
|
+
thinking.stop();
|
|
63
|
+
hasContent = true;
|
|
64
|
+
}
|
|
65
|
+
renderer.write(chunk);
|
|
66
|
+
}
|
|
67
|
+
thinking.stop();
|
|
68
|
+
renderer.finish();
|
|
69
|
+
}
|
|
70
|
+
else {
|
|
71
|
+
try {
|
|
72
|
+
const { CodeReviewEngine } = await Promise.resolve().then(() => __importStar(require('../../review/CodeReviewEngine')));
|
|
73
|
+
const engine = new CodeReviewEngine();
|
|
74
|
+
const result = await engine.review();
|
|
75
|
+
console.log(CodeReviewEngine.formatForTerminal(result));
|
|
76
|
+
}
|
|
77
|
+
catch (e) {
|
|
78
|
+
(0, output_1.printError)('Review failed', e.message);
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
},
|
|
82
|
+
},
|
|
83
|
+
{
|
|
84
|
+
name: 'commit',
|
|
85
|
+
description: 'Generate commit message from diff',
|
|
86
|
+
group: 'files & code',
|
|
87
|
+
handler: async (agent) => {
|
|
88
|
+
const thinking = new output_1.ThinkingAnimation('analyzing changes');
|
|
89
|
+
thinking.start();
|
|
90
|
+
let diff = '';
|
|
91
|
+
try {
|
|
92
|
+
diff = (0, child_process_1.execSync)('git diff --staged', { encoding: 'utf8', maxBuffer: 5 * 1024 * 1024 }).trim();
|
|
93
|
+
}
|
|
94
|
+
catch { }
|
|
95
|
+
if (!diff)
|
|
96
|
+
try {
|
|
97
|
+
diff = (0, child_process_1.execSync)('git diff HEAD', { encoding: 'utf8', maxBuffer: 5 * 1024 * 1024 }).trim();
|
|
98
|
+
}
|
|
99
|
+
catch { }
|
|
100
|
+
if (!diff) {
|
|
101
|
+
thinking.stop();
|
|
102
|
+
(0, output_1.printError)('No changes', 'Stage files or make changes first.');
|
|
103
|
+
return;
|
|
104
|
+
}
|
|
105
|
+
const prompt = `Generate a conventional commit message. Format: type(scope): description. Types: feat/fix/refactor/docs/style/test/chore. One line only.\n\nDiff:\n${diff.substring(0, 6000)}`;
|
|
106
|
+
let msg = '';
|
|
107
|
+
for await (const chunk of agent.chat(prompt)) {
|
|
108
|
+
if (!msg)
|
|
109
|
+
thinking.stop();
|
|
110
|
+
msg += chunk;
|
|
111
|
+
}
|
|
112
|
+
thinking.stop();
|
|
113
|
+
msg = msg.split('\n').find(l => /^(feat|fix|refactor|docs|style|test|chore|build|ci|perf)\(/.test(l.trim())) || msg.split('\n')[0];
|
|
114
|
+
msg = msg.replace(/^[`'"]+|[`'"]+$/g, '').trim();
|
|
115
|
+
(0, output_1.printCommitBox)(msg);
|
|
116
|
+
const rl = readline.createInterface({ input: process.stdin, output: process.stdout });
|
|
117
|
+
const answer = await new Promise(r => rl.question(` ${output_1.theme.dim('use this?')} ${output_1.theme.brand('›')} `, a => { r(a.trim().toLowerCase()); rl.close(); }));
|
|
118
|
+
if (answer === 'y' || answer === 'yes' || answer === '') {
|
|
119
|
+
try {
|
|
120
|
+
try {
|
|
121
|
+
if (!(0, child_process_1.execSync)('git diff --staged --name-only', { encoding: 'utf8' }).trim())
|
|
122
|
+
(0, child_process_1.execSync)('git add -A');
|
|
123
|
+
}
|
|
124
|
+
catch { }
|
|
125
|
+
(0, child_process_1.execSync)(`git commit -m "${msg.replace(/"/g, '\\"')}"`, { encoding: 'utf8' });
|
|
126
|
+
(0, output_1.printSuccess)('Committed successfully');
|
|
127
|
+
}
|
|
128
|
+
catch (e) {
|
|
129
|
+
(0, output_1.printError)('Commit failed', e.stderr?.toString() || e.message);
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
},
|
|
133
|
+
},
|
|
134
|
+
{
|
|
135
|
+
name: 'diff',
|
|
136
|
+
description: 'View uncommitted changes',
|
|
137
|
+
group: 'files & code',
|
|
138
|
+
handler: async () => {
|
|
139
|
+
try {
|
|
140
|
+
const diff = (0, child_process_1.execSync)('git diff --stat', { encoding: 'utf8' }).trim();
|
|
141
|
+
if (!diff) {
|
|
142
|
+
console.log(output_1.theme.dim(' No uncommitted changes.'));
|
|
143
|
+
return;
|
|
144
|
+
}
|
|
145
|
+
console.log('');
|
|
146
|
+
console.log(output_1.theme.border(' ╷'));
|
|
147
|
+
for (const line of diff.split('\n')) {
|
|
148
|
+
if (line.includes('|')) {
|
|
149
|
+
const [file, rest] = line.split('|').map(s => s.trim());
|
|
150
|
+
console.log(output_1.theme.border(' │') + ` ${output_1.theme.white(file)} ${output_1.theme.dim('│')} ${rest.replace(/\+/g, output_1.theme.success('+'))}`);
|
|
151
|
+
}
|
|
152
|
+
else {
|
|
153
|
+
console.log(output_1.theme.border(' │') + ` ${output_1.theme.dim(line)}`);
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
console.log(output_1.theme.border(' ╵'));
|
|
157
|
+
console.log('');
|
|
158
|
+
}
|
|
159
|
+
catch (e) {
|
|
160
|
+
(0, output_1.printError)('Git diff failed', e.message);
|
|
161
|
+
}
|
|
162
|
+
},
|
|
163
|
+
},
|
|
164
|
+
{
|
|
165
|
+
name: 'init',
|
|
166
|
+
description: 'Create .coworker.md project config',
|
|
167
|
+
group: 'files & code',
|
|
168
|
+
handler: async () => {
|
|
169
|
+
const cwFile = path.resolve(process.cwd(), '.coworker.md');
|
|
170
|
+
if (fs.existsSync(cwFile)) {
|
|
171
|
+
console.log(output_1.theme.dim(' .coworker.md already exists.'));
|
|
172
|
+
return;
|
|
173
|
+
}
|
|
174
|
+
const pkgPath = path.resolve(process.cwd(), 'package.json');
|
|
175
|
+
let projectName = path.basename(process.cwd());
|
|
176
|
+
let language = 'Unknown';
|
|
177
|
+
let framework = 'Unknown';
|
|
178
|
+
if (fs.existsSync(pkgPath)) {
|
|
179
|
+
try {
|
|
180
|
+
const pkg = JSON.parse(fs.readFileSync(pkgPath, 'utf8'));
|
|
181
|
+
projectName = pkg.name || projectName;
|
|
182
|
+
language = 'TypeScript/JavaScript';
|
|
183
|
+
if (pkg.dependencies?.react)
|
|
184
|
+
framework = 'React';
|
|
185
|
+
else if (pkg.dependencies?.next)
|
|
186
|
+
framework = 'Next.js';
|
|
187
|
+
else if (pkg.dependencies?.express)
|
|
188
|
+
framework = 'Express';
|
|
189
|
+
else
|
|
190
|
+
framework = 'Node.js';
|
|
191
|
+
}
|
|
192
|
+
catch { }
|
|
193
|
+
}
|
|
194
|
+
const content = `# CoWorker Instructions
|
|
195
|
+
|
|
196
|
+
## Project
|
|
197
|
+
Name: ${projectName}
|
|
198
|
+
Language: ${language}
|
|
199
|
+
Framework: ${framework}
|
|
200
|
+
|
|
201
|
+
## Context
|
|
202
|
+
This file provides project-specific context to CoWorker.
|
|
203
|
+
Add any important architectural decisions, coding conventions,
|
|
204
|
+
or domain knowledge that CoWorker should know about.
|
|
205
|
+
|
|
206
|
+
## Preferences
|
|
207
|
+
- Follow existing code style
|
|
208
|
+
- Write comprehensive error handling
|
|
209
|
+
- Prefer descriptive variable names
|
|
210
|
+
`;
|
|
211
|
+
fs.writeFileSync(cwFile, content, 'utf8');
|
|
212
|
+
(0, output_1.printSuccess)('created .coworker.md');
|
|
213
|
+
},
|
|
214
|
+
},
|
|
215
|
+
];
|
|
216
|
+
//# sourceMappingURL=files.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"files.js","sourceRoot":"","sources":["../../../src/commands/slash/files.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { CoWorkerAgent } from '../../core/CoWorkerAgent';
|
|
2
|
+
/**
|
|
3
|
+
* SlashCommand interface — every command implements this.
|
|
4
|
+
* Adding new commands = just add to the COMMANDS array.
|
|
5
|
+
*/
|
|
6
|
+
export interface SlashCommand {
|
|
7
|
+
name: string;
|
|
8
|
+
description: string;
|
|
9
|
+
group: string;
|
|
10
|
+
handler: (agent: CoWorkerAgent, args?: string) => Promise<void>;
|
|
11
|
+
aliases?: string[];
|
|
12
|
+
}
|
|
13
|
+
export interface CommandContext {
|
|
14
|
+
agent: CoWorkerAgent;
|
|
15
|
+
startTime: number;
|
|
16
|
+
}
|
|
17
|
+
export declare function setCommandContext(ctx: CommandContext): void;
|
|
18
|
+
export declare function getCommandContext(): CommandContext | null;
|
|
19
|
+
export declare const COMMANDS: SlashCommand[];
|
|
20
|
+
/**
|
|
21
|
+
* Resolve a slash command by name or alias.
|
|
22
|
+
*/
|
|
23
|
+
export declare function resolveCommand(input: string): SlashCommand | undefined;
|
|
24
|
+
/**
|
|
25
|
+
* Filter commands by partial name (for autocomplete).
|
|
26
|
+
*/
|
|
27
|
+
export declare function filterCommands(partial: string): SlashCommand[];
|
|
28
|
+
/**
|
|
29
|
+
* Get unique group names in order.
|
|
30
|
+
*/
|
|
31
|
+
export declare function getGroups(): string[];
|
|
32
|
+
/**
|
|
33
|
+
* Get commands in a specific group.
|
|
34
|
+
*/
|
|
35
|
+
export declare function getGroupCommands(group: string): SlashCommand[];
|
|
36
|
+
//# sourceMappingURL=registry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../../src/commands/slash/registry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAEzD;;;GAGG;AACH,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,CAAC,KAAK,EAAE,aAAa,EAAE,IAAI,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAChE,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,aAAa,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;CACnB;AAID,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,cAAc,GAAG,IAAI,CAAgB;AAC5E,wBAAgB,iBAAiB,IAAI,cAAc,GAAG,IAAI,CAAiB;AAc3E,eAAO,MAAM,QAAQ,EAAE,YAAY,EAQlC,CAAC;AAEF;;GAEG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS,CAGtE;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,YAAY,EAAE,CAM9D;AAED;;GAEG;AACH,wBAAgB,SAAS,IAAI,MAAM,EAAE,CAUpC;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,YAAY,EAAE,CAE9D"}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.COMMANDS = void 0;
|
|
4
|
+
exports.setCommandContext = setCommandContext;
|
|
5
|
+
exports.getCommandContext = getCommandContext;
|
|
6
|
+
exports.resolveCommand = resolveCommand;
|
|
7
|
+
exports.filterCommands = filterCommands;
|
|
8
|
+
exports.getGroups = getGroups;
|
|
9
|
+
exports.getGroupCommands = getGroupCommands;
|
|
10
|
+
// Global context set at CLI boot
|
|
11
|
+
let _ctx = null;
|
|
12
|
+
function setCommandContext(ctx) { _ctx = ctx; }
|
|
13
|
+
function getCommandContext() { return _ctx; }
|
|
14
|
+
// ============================================================================
|
|
15
|
+
// COMMAND REGISTRY — import all groups and merge
|
|
16
|
+
// ============================================================================
|
|
17
|
+
const core_1 = require("./core");
|
|
18
|
+
const files_1 = require("./files");
|
|
19
|
+
const context_1 = require("./context");
|
|
20
|
+
const session_1 = require("./session");
|
|
21
|
+
const config_1 = require("./config");
|
|
22
|
+
const developer_1 = require("./developer");
|
|
23
|
+
const advanced_1 = require("./advanced");
|
|
24
|
+
exports.COMMANDS = [
|
|
25
|
+
...core_1.coreCommands,
|
|
26
|
+
...files_1.fileCommands,
|
|
27
|
+
...context_1.contextCommands,
|
|
28
|
+
...session_1.sessionCommands,
|
|
29
|
+
...config_1.configCommands,
|
|
30
|
+
...developer_1.developerCommands,
|
|
31
|
+
...advanced_1.advancedCommands,
|
|
32
|
+
];
|
|
33
|
+
/**
|
|
34
|
+
* Resolve a slash command by name or alias.
|
|
35
|
+
*/
|
|
36
|
+
function resolveCommand(input) {
|
|
37
|
+
const name = input.startsWith('/') ? input.slice(1).split(' ')[0] : input.split(' ')[0];
|
|
38
|
+
return exports.COMMANDS.find(c => c.name === name || c.aliases?.includes(name));
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Filter commands by partial name (for autocomplete).
|
|
42
|
+
*/
|
|
43
|
+
function filterCommands(partial) {
|
|
44
|
+
const q = partial.toLowerCase().replace(/^\//, '');
|
|
45
|
+
if (!q)
|
|
46
|
+
return exports.COMMANDS;
|
|
47
|
+
return exports.COMMANDS.filter(c => c.name.includes(q) || c.description.toLowerCase().includes(q));
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Get unique group names in order.
|
|
51
|
+
*/
|
|
52
|
+
function getGroups() {
|
|
53
|
+
const seen = new Set();
|
|
54
|
+
const groups = [];
|
|
55
|
+
for (const c of exports.COMMANDS) {
|
|
56
|
+
if (!seen.has(c.group)) {
|
|
57
|
+
seen.add(c.group);
|
|
58
|
+
groups.push(c.group);
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
return groups;
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Get commands in a specific group.
|
|
65
|
+
*/
|
|
66
|
+
function getGroupCommands(group) {
|
|
67
|
+
return exports.COMMANDS.filter(c => c.group === group);
|
|
68
|
+
}
|
|
69
|
+
//# sourceMappingURL=registry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../../src/commands/slash/registry.ts"],"names":[],"mappings":";;;AAqBA,8CAA4E;AAC5E,8CAA2E;AA2B3E,wCAGC;AAKD,wCAMC;AAKD,8BAUC;AAKD,4CAEC;AAlED,iCAAiC;AACjC,IAAI,IAAI,GAA0B,IAAI,CAAC;AACvC,SAAgB,iBAAiB,CAAC,GAAmB,IAAU,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC;AAC5E,SAAgB,iBAAiB,KAA4B,OAAO,IAAI,CAAC,CAAC,CAAC;AAE3E,+EAA+E;AAC/E,iDAAiD;AACjD,+EAA+E;AAE/E,iCAAsC;AACtC,mCAAuC;AACvC,uCAA4C;AAC5C,uCAA4C;AAC5C,qCAA0C;AAC1C,2CAAgD;AAChD,yCAA8C;AAEjC,QAAA,QAAQ,GAAmB;IACtC,GAAG,mBAAY;IACf,GAAG,oBAAY;IACf,GAAG,yBAAe;IAClB,GAAG,yBAAe;IAClB,GAAG,uBAAc;IACjB,GAAG,6BAAiB;IACpB,GAAG,2BAAgB;CACpB,CAAC;AAEF;;GAEG;AACH,SAAgB,cAAc,CAAC,KAAa;IAC1C,MAAM,IAAI,GAAG,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IACxF,OAAO,gBAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,IAAI,CAAC,CAAC,OAAO,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;AAC1E,CAAC;AAED;;GAEG;AACH,SAAgB,cAAc,CAAC,OAAe;IAC5C,MAAM,CAAC,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IACnD,IAAI,CAAC,CAAC;QAAE,OAAO,gBAAQ,CAAC;IACxB,OAAO,gBAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CACzB,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,WAAW,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAC9D,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,SAAgB,SAAS;IACvB,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,KAAK,MAAM,CAAC,IAAI,gBAAQ,EAAE,CAAC;QACzB,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC;YACvB,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;YAClB,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;QACvB,CAAC;IACH,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;GAEG;AACH,SAAgB,gBAAgB,CAAC,KAAa;IAC5C,OAAO,gBAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC;AACjD,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../../src/commands/slash/session.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAK1C,eAAO,MAAM,eAAe,EAAE,YAAY,EAmGzC,CAAC"}
|
|
@@ -0,0 +1,144 @@
|
|
|
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.sessionCommands = void 0;
|
|
37
|
+
const output_1 = require("../../utils/output");
|
|
38
|
+
const conversations_1 = require("../../utils/conversations");
|
|
39
|
+
const readline = __importStar(require("readline"));
|
|
40
|
+
exports.sessionCommands = [
|
|
41
|
+
{
|
|
42
|
+
name: 'resume',
|
|
43
|
+
description: 'Resume a previous conversation',
|
|
44
|
+
group: 'session',
|
|
45
|
+
handler: async (agent) => {
|
|
46
|
+
const convos = (0, conversations_1.loadConversations)();
|
|
47
|
+
if (convos.length === 0) {
|
|
48
|
+
console.log(output_1.theme.dim(' No previous conversations.'));
|
|
49
|
+
return;
|
|
50
|
+
}
|
|
51
|
+
console.log('');
|
|
52
|
+
console.log(output_1.theme.dim(' Recent conversations:'));
|
|
53
|
+
console.log('');
|
|
54
|
+
const recent = convos.slice(-5).reverse();
|
|
55
|
+
for (let i = 0; i < recent.length; i++) {
|
|
56
|
+
const c = recent[i];
|
|
57
|
+
const ago = getTimeAgo(c.lastActive);
|
|
58
|
+
const selected = i === 0 ? output_1.theme.brand('›') : ' ';
|
|
59
|
+
console.log(` ${selected} ${output_1.theme.white(`${i + 1}. ${c.name}`)} ${output_1.theme.dim(`· ${ago} · ${c.messageCount} msgs`)}`);
|
|
60
|
+
}
|
|
61
|
+
console.log('');
|
|
62
|
+
const rl = readline.createInterface({ input: process.stdin, output: process.stdout });
|
|
63
|
+
const answer = await new Promise(r => {
|
|
64
|
+
rl.question(` ${output_1.theme.dim('select (1-5)?')} ${output_1.theme.brand('›')} `, a => { r(a.trim()); rl.close(); });
|
|
65
|
+
});
|
|
66
|
+
const idx = parseInt(answer, 10) - 1;
|
|
67
|
+
if (idx >= 0 && idx < recent.length) {
|
|
68
|
+
agent.sessions.currentSessionId = recent[idx].id;
|
|
69
|
+
await agent.sessions.loadCheckpoint();
|
|
70
|
+
(0, output_1.printSuccess)(`resumed: ${recent[idx].name}`);
|
|
71
|
+
}
|
|
72
|
+
},
|
|
73
|
+
},
|
|
74
|
+
{
|
|
75
|
+
name: 'rename',
|
|
76
|
+
description: 'Rename current conversation',
|
|
77
|
+
group: 'session',
|
|
78
|
+
handler: async (agent) => {
|
|
79
|
+
const rl = readline.createInterface({ input: process.stdin, output: process.stdout });
|
|
80
|
+
const name = await new Promise(r => {
|
|
81
|
+
rl.question(` ${output_1.theme.dim('new name?')} ${output_1.theme.brand('›')} `, a => { r(a.trim()); rl.close(); });
|
|
82
|
+
});
|
|
83
|
+
if (name) {
|
|
84
|
+
(0, conversations_1.updateConversation)(agent.sessions.currentSessionId, { name });
|
|
85
|
+
(0, output_1.printSuccess)(`renamed to: ${name}`);
|
|
86
|
+
}
|
|
87
|
+
},
|
|
88
|
+
},
|
|
89
|
+
{
|
|
90
|
+
name: 'rewind',
|
|
91
|
+
description: 'Rewind to a previous point',
|
|
92
|
+
group: 'session',
|
|
93
|
+
handler: async (agent) => {
|
|
94
|
+
const msgs = agent.sessions.state.messages;
|
|
95
|
+
const userMsgs = msgs.filter((m) => m.role === 'user');
|
|
96
|
+
if (userMsgs.length < 2) {
|
|
97
|
+
console.log(output_1.theme.dim(' Not enough turns to rewind.'));
|
|
98
|
+
return;
|
|
99
|
+
}
|
|
100
|
+
console.log('');
|
|
101
|
+
console.log(output_1.theme.dim(' Conversation turns:'));
|
|
102
|
+
console.log('');
|
|
103
|
+
for (let i = 0; i < userMsgs.length; i++) {
|
|
104
|
+
const preview = userMsgs[i].content.substring(0, 50);
|
|
105
|
+
console.log(` ${output_1.theme.dim(`${i + 1}.`)} ${output_1.theme.white(`"${preview}${preview.length >= 50 ? '...' : ''}"`)}`);
|
|
106
|
+
}
|
|
107
|
+
console.log('');
|
|
108
|
+
const rl = readline.createInterface({ input: process.stdin, output: process.stdout });
|
|
109
|
+
const answer = await new Promise(r => {
|
|
110
|
+
rl.question(` ${output_1.theme.dim('rewind to turn?')} ${output_1.theme.brand('›')} `, a => { r(a.trim()); rl.close(); });
|
|
111
|
+
});
|
|
112
|
+
const turn = parseInt(answer, 10);
|
|
113
|
+
if (turn > 0 && turn <= userMsgs.length) {
|
|
114
|
+
// Find the index of the nth user message and truncate after it
|
|
115
|
+
let count = 0;
|
|
116
|
+
let cutIdx = 0;
|
|
117
|
+
for (let i = 0; i < msgs.length; i++) {
|
|
118
|
+
if (msgs[i].role === 'user') {
|
|
119
|
+
count++;
|
|
120
|
+
if (count === turn) {
|
|
121
|
+
cutIdx = i + 1;
|
|
122
|
+
break;
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
agent.sessions.state.messages = msgs.slice(0, cutIdx);
|
|
127
|
+
await agent.sessions.saveCheckpoint();
|
|
128
|
+
(0, output_1.printSuccess)(`rewound to turn ${turn}`);
|
|
129
|
+
}
|
|
130
|
+
},
|
|
131
|
+
},
|
|
132
|
+
];
|
|
133
|
+
function getTimeAgo(dateStr) {
|
|
134
|
+
const ms = Date.now() - new Date(dateStr).getTime();
|
|
135
|
+
const mins = Math.floor(ms / 60000);
|
|
136
|
+
if (mins < 60)
|
|
137
|
+
return `${mins}m ago`;
|
|
138
|
+
const hours = Math.floor(mins / 60);
|
|
139
|
+
if (hours < 24)
|
|
140
|
+
return `${hours}h ago`;
|
|
141
|
+
const days = Math.floor(hours / 24);
|
|
142
|
+
return `${days}d ago`;
|
|
143
|
+
}
|
|
144
|
+
//# sourceMappingURL=session.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session.js","sourceRoot":"","sources":["../../../src/commands/slash/session.ts"],"names":[],"mappings":"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"}
|
|
@@ -36,13 +36,18 @@ export declare class CoWorkerAgent {
|
|
|
36
36
|
*/
|
|
37
37
|
chat(prompt: string): AsyncGenerator<string, void, unknown>;
|
|
38
38
|
/**
|
|
39
|
-
*
|
|
39
|
+
* Non-streaming LLM call — used to check for tool_calls.
|
|
40
40
|
*/
|
|
41
|
-
private
|
|
41
|
+
private callLLMFull;
|
|
42
|
+
/**
|
|
43
|
+
* TRUE SSE STREAMING — yields text chunks as they arrive from the network.
|
|
44
|
+
* This is what makes the response feel natural and alive.
|
|
45
|
+
*/
|
|
46
|
+
private callLLMStream;
|
|
42
47
|
/**
|
|
43
48
|
* Local tool dispatcher. Maps tool names to NativeTools methods.
|
|
44
49
|
* This is what makes CoWorker actually create files on the user's machine.
|
|
45
|
-
* ALL
|
|
50
|
+
* ALL 35 tools are wired here.
|
|
46
51
|
*/
|
|
47
52
|
private executeToolLocally;
|
|
48
53
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CoWorkerAgent.d.ts","sourceRoot":"","sources":["../../src/core/CoWorkerAgent.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,sCAAsC,CAAC;AAE7E,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAC3D,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AACpE,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAQ5D,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,SAAS,GAAG,WAAW,GAAG,cAAc,GAAG,YAAY,CAAC;IAC9D,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,iFAAiF;IACjF,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;
|
|
1
|
+
{"version":3,"file":"CoWorkerAgent.d.ts","sourceRoot":"","sources":["../../src/core/CoWorkerAgent.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,sCAAsC,CAAC;AAE7E,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAC3D,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AACpE,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAQ5D,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,SAAS,GAAG,WAAW,GAAG,cAAc,GAAG,YAAY,CAAC;IAC9D,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,iFAAiF;IACjF,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAmFD;;;;GAIG;AACH,qBAAa,aAAa;IACjB,KAAK,EAAE,UAAU,CAAC;IAClB,WAAW,EAAE,qBAAqB,CAAC;IACnC,QAAQ,EAAE,cAAc,CAAC;IACzB,GAAG,EAAE,gBAAgB,CAAC;IACtB,KAAK,EAAE,mBAAmB,CAAC;IAC3B,QAAQ,EAAE,eAAe,CAAC;IAEjC,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,GAAG,CAAS;IACpB,OAAO,CAAC,YAAY,CAAkC;gBAE1C,OAAO,EAAE,eAAe;IAcvB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAkBlC;;;OAGG;IACW,IAAI,CAAC,MAAM,EAAE,MAAM,GAAG,cAAc,CAAC,MAAM,EAAE,IAAI,EAAE,OAAO,CAAC;IAyGzE;;OAEG;YACW,WAAW;IA+BzB;;;OAGG;YACY,aAAa;IAoE5B;;;;OAIG;YACW,kBAAkB;IA+GhC;;OAEG;IACU,cAAc,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;CAQnF"}
|