myuru 2.0.0-alpha.4 → 2.0.0-alpha.6
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/commands/chat.d.ts.map +1 -1
- package/dist/cli/commands/chat.js +396 -76
- package/dist/cli/commands/chat.js.map +1 -1
- package/dist/cli/commands/init.d.ts.map +1 -1
- package/dist/cli/commands/init.js +42 -9
- package/dist/cli/commands/init.js.map +1 -1
- package/dist/cli/index.js +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chat.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/chat.ts"],"names":[],"mappings":"AAQA,KAAK,QAAQ,GAAG;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC;
|
|
1
|
+
{"version":3,"file":"chat.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/chat.ts"],"names":[],"mappings":"AAQA,KAAK,QAAQ,GAAG;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC;AAmSF,wBAAsB,WAAW,CAAC,IAAI,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CAkR/D"}
|
|
@@ -4,25 +4,267 @@ import * as path from 'node:path';
|
|
|
4
4
|
import { Agent } from '../../core/agent.js';
|
|
5
5
|
import { builtinTools } from '../../tools/index.js';
|
|
6
6
|
import { detectProviders, resolveModel, defaultModelName } from '../resolve-model.js';
|
|
7
|
+
// ── .myuru.md project context (like CLAUDE.md, .goosehints) ──
|
|
8
|
+
function findProjectContext(cwd) {
|
|
9
|
+
const found = [];
|
|
10
|
+
let dir = cwd;
|
|
11
|
+
while (true) {
|
|
12
|
+
const candidate = path.join(dir, '.myuru.md');
|
|
13
|
+
if (fs.existsSync(candidate)) {
|
|
14
|
+
try {
|
|
15
|
+
const content = fs.readFileSync(candidate, 'utf-8').trim();
|
|
16
|
+
if (content)
|
|
17
|
+
found.push({ file: candidate, content });
|
|
18
|
+
}
|
|
19
|
+
catch { /* permission errors */ }
|
|
20
|
+
}
|
|
21
|
+
const parent = path.dirname(dir);
|
|
22
|
+
if (parent === dir)
|
|
23
|
+
break;
|
|
24
|
+
dir = parent;
|
|
25
|
+
}
|
|
26
|
+
if (found.length === 0)
|
|
27
|
+
return undefined;
|
|
28
|
+
// Root-first ordering (reverse since we walked cwd → root)
|
|
29
|
+
found.reverse();
|
|
30
|
+
return {
|
|
31
|
+
content: found.map(f => f.content).join('\n\n---\n\n'),
|
|
32
|
+
files: found.map(f => f.file),
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
// ── Last session context ──
|
|
36
|
+
function loadLastSession(cwd) {
|
|
37
|
+
const sessionFile = path.join(cwd, '.myuru', 'last-session.md');
|
|
38
|
+
if (!fs.existsSync(sessionFile))
|
|
39
|
+
return undefined;
|
|
40
|
+
try {
|
|
41
|
+
const content = fs.readFileSync(sessionFile, 'utf-8').trim();
|
|
42
|
+
return content || undefined;
|
|
43
|
+
}
|
|
44
|
+
catch {
|
|
45
|
+
return undefined;
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
function saveLastSession(cwd, messages, usage) {
|
|
49
|
+
if (messages.length === 0)
|
|
50
|
+
return;
|
|
51
|
+
const dir = path.join(cwd, '.myuru');
|
|
52
|
+
fs.mkdirSync(dir, { recursive: true });
|
|
53
|
+
const userMessages = messages
|
|
54
|
+
.filter(m => m.role === 'user')
|
|
55
|
+
.map(m => typeof m.content === 'string' ? m.content : '');
|
|
56
|
+
const lines = [
|
|
57
|
+
'# Last Session',
|
|
58
|
+
`**Date**: ${new Date().toISOString()}`,
|
|
59
|
+
`**Tokens**: ${usage.totalTokens} | **Cost**: $${usage.estimatedCostUsd.toFixed(4)} | **Steps**: ${usage.stepCount}`,
|
|
60
|
+
'',
|
|
61
|
+
'## Topics Discussed',
|
|
62
|
+
...userMessages.slice(-10).map((m, i) => `${i + 1}. ${m.length > 120 ? m.slice(0, 120) + '...' : m}`),
|
|
63
|
+
];
|
|
64
|
+
fs.writeFileSync(path.join(dir, 'last-session.md'), lines.join('\n'), 'utf-8');
|
|
65
|
+
}
|
|
66
|
+
// ── Session memory (structured logs saved at compact time) ──
|
|
67
|
+
function getSessionsDir(cwd) {
|
|
68
|
+
const dir = path.join(cwd, '.myuru', 'sessions');
|
|
69
|
+
fs.mkdirSync(dir, { recursive: true });
|
|
70
|
+
return dir;
|
|
71
|
+
}
|
|
72
|
+
function makeTimestamp() {
|
|
73
|
+
const d = new Date();
|
|
74
|
+
const pad = (n) => n.toString().padStart(2, '0');
|
|
75
|
+
return `${d.getFullYear()}-${pad(d.getMonth() + 1)}-${pad(d.getDate())}-${pad(d.getHours())}-${pad(d.getMinutes())}`;
|
|
76
|
+
}
|
|
77
|
+
function saveSessionLog(cwd, structuredSummary, msgCount, usage) {
|
|
78
|
+
const sessionsDir = getSessionsDir(cwd);
|
|
79
|
+
const timestamp = makeTimestamp();
|
|
80
|
+
const filename = `${timestamp}.md`;
|
|
81
|
+
const header = [
|
|
82
|
+
`# Session Log — ${new Date().toISOString()}`,
|
|
83
|
+
`**Messages**: ${msgCount} | **Tokens**: ${usage.totalTokens} | **Cost**: $${usage.estimatedCostUsd.toFixed(4)}`,
|
|
84
|
+
'',
|
|
85
|
+
].join('\n');
|
|
86
|
+
fs.writeFileSync(path.join(sessionsDir, filename), header + structuredSummary, 'utf-8');
|
|
87
|
+
// Update index — one-line summary per compaction for cheap scanning
|
|
88
|
+
updateSessionIndex(cwd, timestamp, msgCount, structuredSummary);
|
|
89
|
+
return filename;
|
|
90
|
+
}
|
|
91
|
+
function updateSessionIndex(cwd, timestamp, msgCount, summary) {
|
|
92
|
+
const indexPath = path.join(getSessionsDir(cwd), 'index.md');
|
|
93
|
+
// Extract first meaningful line from summary as a topic hint
|
|
94
|
+
const topicLine = summary
|
|
95
|
+
.split('\n')
|
|
96
|
+
.find(l => l.startsWith('- ') || (l.length > 5 && !l.startsWith('#') && !l.startsWith('*')));
|
|
97
|
+
const topic = topicLine
|
|
98
|
+
? topicLine.replace(/^-\s*/, '').slice(0, 80)
|
|
99
|
+
: 'session';
|
|
100
|
+
const entry = `${timestamp} | ${msgCount} msgs | ${topic}\n`;
|
|
101
|
+
// Create or append
|
|
102
|
+
if (fs.existsSync(indexPath)) {
|
|
103
|
+
fs.appendFileSync(indexPath, entry, 'utf-8');
|
|
104
|
+
}
|
|
105
|
+
else {
|
|
106
|
+
fs.writeFileSync(indexPath, '# Session Log Index\n\n' + entry, 'utf-8');
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
function loadSessionIndex(cwd) {
|
|
110
|
+
const indexPath = path.join(cwd, '.myuru', 'sessions', 'index.md');
|
|
111
|
+
if (!fs.existsSync(indexPath))
|
|
112
|
+
return undefined;
|
|
113
|
+
try {
|
|
114
|
+
const content = fs.readFileSync(indexPath, 'utf-8').trim();
|
|
115
|
+
return content || undefined;
|
|
116
|
+
}
|
|
117
|
+
catch {
|
|
118
|
+
return undefined;
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
// ── Context size estimation ──
|
|
122
|
+
function getContextLimit(modelName) {
|
|
123
|
+
const name = modelName.toLowerCase();
|
|
124
|
+
if (name.includes('claude'))
|
|
125
|
+
return 200000;
|
|
126
|
+
if (name.includes('gpt-4o-mini'))
|
|
127
|
+
return 128000;
|
|
128
|
+
if (name.includes('gpt-4o'))
|
|
129
|
+
return 128000;
|
|
130
|
+
if (name.includes('gpt-4'))
|
|
131
|
+
return 128000;
|
|
132
|
+
if (name.includes('gemini'))
|
|
133
|
+
return 1000000;
|
|
134
|
+
return 128000;
|
|
135
|
+
}
|
|
136
|
+
function estimateContextTokens(messages, systemPromptLength) {
|
|
137
|
+
let totalChars = systemPromptLength;
|
|
138
|
+
for (const msg of messages) {
|
|
139
|
+
const m = msg;
|
|
140
|
+
if (typeof m.content === 'string') {
|
|
141
|
+
totalChars += m.content.length;
|
|
142
|
+
}
|
|
143
|
+
else if (Array.isArray(m.content)) {
|
|
144
|
+
for (const part of m.content) {
|
|
145
|
+
if (typeof part === 'string')
|
|
146
|
+
totalChars += part.length;
|
|
147
|
+
else if (part && typeof part === 'object' && 'text' in part) {
|
|
148
|
+
totalChars += String(part.text).length;
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
return Math.ceil(totalChars / 4); // ~4 chars per token rough estimate
|
|
154
|
+
}
|
|
155
|
+
// ── Compact extraction prompt ──
|
|
156
|
+
const EXTRACTION_PROMPT = `Analyze our entire conversation and produce a structured session log. Use this exact format:
|
|
157
|
+
|
|
158
|
+
## Files Modified
|
|
159
|
+
- path/to/file (what was changed)
|
|
160
|
+
|
|
161
|
+
## Decisions Made
|
|
162
|
+
- Decision description
|
|
163
|
+
|
|
164
|
+
## Key Facts Learned
|
|
165
|
+
- Important facts about the project, codebase, or requirements
|
|
166
|
+
|
|
167
|
+
## Current State
|
|
168
|
+
- What we're currently working on
|
|
169
|
+
- What's been completed
|
|
170
|
+
- What's pending/next
|
|
171
|
+
|
|
172
|
+
Omit any section that has no entries. Be concise — bullet points only, no prose. This log will be saved for future reference and will also replace our conversation to free up context space.`;
|
|
173
|
+
// ── System prompt builder ──
|
|
174
|
+
function buildSystemPrompt(cwd, fileTree, projectContext, lastSession, sessionIndex) {
|
|
175
|
+
const parts = [
|
|
176
|
+
'You are a helpful coding assistant with full access to the file system and shell.',
|
|
177
|
+
'You can read, write, and edit files, search for files and content, and run shell commands.',
|
|
178
|
+
'Always use your tools to accomplish tasks. Do not ask the user to do things you can do yourself.',
|
|
179
|
+
'When editing files, read them first to understand the current content.',
|
|
180
|
+
'Be concise in your responses. Show what you did, not lengthy explanations of what you plan to do.',
|
|
181
|
+
];
|
|
182
|
+
if (projectContext) {
|
|
183
|
+
parts.push('', '--- Project Instructions ---', projectContext);
|
|
184
|
+
}
|
|
185
|
+
if (lastSession) {
|
|
186
|
+
parts.push('', '--- Previous Session ---', lastSession);
|
|
187
|
+
}
|
|
188
|
+
if (sessionIndex) {
|
|
189
|
+
parts.push('', '--- Session Memory ---', 'Previous session logs are saved in .myuru/sessions/. If the user references something', 'you don\'t have context for, use search_content or read_file on .myuru/sessions/ to find it.', 'Session index:', sessionIndex);
|
|
190
|
+
}
|
|
191
|
+
parts.push('', `Working directory: ${cwd}`, '', 'Project files:', fileTree);
|
|
192
|
+
return parts.join('\n');
|
|
193
|
+
}
|
|
194
|
+
// ── Directory scanner ──
|
|
195
|
+
function scanDirectory(dir, maxDepth, depth = 0, prefix = '') {
|
|
196
|
+
if (depth >= maxDepth)
|
|
197
|
+
return '';
|
|
198
|
+
const lines = [];
|
|
199
|
+
try {
|
|
200
|
+
const entries = fs.readdirSync(dir, { withFileTypes: true })
|
|
201
|
+
.filter(e => !e.name.startsWith('.') && e.name !== 'node_modules' && e.name !== 'dist')
|
|
202
|
+
.sort((a, b) => {
|
|
203
|
+
if (a.isDirectory() !== b.isDirectory())
|
|
204
|
+
return a.isDirectory() ? -1 : 1;
|
|
205
|
+
return a.name.localeCompare(b.name);
|
|
206
|
+
});
|
|
207
|
+
for (const entry of entries.slice(0, 30)) {
|
|
208
|
+
const name = entry.isDirectory() ? `${entry.name}/` : entry.name;
|
|
209
|
+
lines.push(`${prefix}${name}`);
|
|
210
|
+
if (entry.isDirectory()) {
|
|
211
|
+
const sub = scanDirectory(path.join(dir, entry.name), maxDepth, depth + 1, prefix + ' ');
|
|
212
|
+
if (sub)
|
|
213
|
+
lines.push(sub);
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
catch { /* permission errors */ }
|
|
218
|
+
return lines.filter(Boolean).join('\n');
|
|
219
|
+
}
|
|
220
|
+
// ── Session summary ──
|
|
221
|
+
function printSessionSummary(usage) {
|
|
222
|
+
console.log(`\n\x1b[90m Session: ${usage.totalTokens} tokens | ${usage.stepCount} steps | $${usage.estimatedCostUsd.toFixed(4)}\x1b[0m\n`);
|
|
223
|
+
}
|
|
224
|
+
// ── Compact logic (shared between /compact and auto-compact) ──
|
|
225
|
+
async function performCompact(agent, messages, sessionUsage, cwd) {
|
|
226
|
+
const prevCount = messages.length;
|
|
227
|
+
const summaryMessages = [
|
|
228
|
+
...messages,
|
|
229
|
+
{ role: 'user', content: EXTRACTION_PROMPT },
|
|
230
|
+
];
|
|
231
|
+
const result = await agent.chat(summaryMessages);
|
|
232
|
+
const structuredSummary = result.text;
|
|
233
|
+
// Save full structured log to .myuru/sessions/
|
|
234
|
+
const filename = saveSessionLog(cwd, structuredSummary, prevCount, sessionUsage);
|
|
235
|
+
// Replace conversation with the compacted summary
|
|
236
|
+
messages.length = 0;
|
|
237
|
+
messages.push({ role: 'user', content: 'Here is a summary of our conversation so far (full log saved to .myuru/sessions/):' }, { role: 'assistant', content: structuredSummary });
|
|
238
|
+
// Track the compact call's own usage
|
|
239
|
+
if (result.usage) {
|
|
240
|
+
sessionUsage.totalInputTokens += result.usage.totalInputTokens;
|
|
241
|
+
sessionUsage.totalOutputTokens += result.usage.totalOutputTokens;
|
|
242
|
+
sessionUsage.totalTokens += result.usage.totalTokens;
|
|
243
|
+
sessionUsage.estimatedCostUsd += result.usage.estimatedCostUsd;
|
|
244
|
+
sessionUsage.stepCount += result.usage.stepCount;
|
|
245
|
+
}
|
|
246
|
+
return { success: true, prevCount, filename };
|
|
247
|
+
}
|
|
248
|
+
// ── Main command ──
|
|
7
249
|
export async function chatCommand(opts) {
|
|
8
|
-
// Detect available providers
|
|
9
250
|
const available = detectProviders();
|
|
10
251
|
if (available.length === 0 && !opts.provider) {
|
|
11
252
|
console.error('\n No API key found. Set one of:');
|
|
12
253
|
console.error(' ANTHROPIC_API_KEY, OPENAI_API_KEY, GOOGLE_API_KEY\n');
|
|
13
254
|
process.exit(1);
|
|
14
255
|
}
|
|
15
|
-
// Resolve which provider/model to use
|
|
16
256
|
const provider = opts.provider ?? available[0].name;
|
|
17
257
|
const modelName = opts.model ?? defaultModelName(provider);
|
|
18
258
|
const model = await resolveModel(provider, opts.model);
|
|
19
259
|
const maxSteps = parseInt(opts.maxSteps ?? '25', 10);
|
|
20
260
|
const budget = opts.budget ? parseFloat(opts.budget) : undefined;
|
|
21
|
-
// Build system prompt with working directory context
|
|
22
261
|
const cwd = process.cwd();
|
|
23
262
|
const fileTree = scanDirectory(cwd, 2);
|
|
24
|
-
const
|
|
25
|
-
|
|
263
|
+
const projectCtx = findProjectContext(cwd);
|
|
264
|
+
const lastSession = loadLastSession(cwd);
|
|
265
|
+
const sessionIndex = loadSessionIndex(cwd);
|
|
266
|
+
const contextLimit = getContextLimit(modelName);
|
|
267
|
+
const systemPrompt = buildSystemPrompt(cwd, fileTree, projectCtx?.content, lastSession, sessionIndex);
|
|
26
268
|
const agent = Agent.create({
|
|
27
269
|
name: 'myuru',
|
|
28
270
|
model,
|
|
@@ -31,7 +273,7 @@ export async function chatCommand(opts) {
|
|
|
31
273
|
maxSteps,
|
|
32
274
|
budgetPerRun: budget,
|
|
33
275
|
});
|
|
34
|
-
//
|
|
276
|
+
// ── Banner ──
|
|
35
277
|
console.log('');
|
|
36
278
|
console.log(' \x1b[36mmyuru\x1b[0m interactive agent');
|
|
37
279
|
console.log(` Provider: ${provider} | Model: ${modelName}`);
|
|
@@ -39,9 +281,23 @@ export async function chatCommand(opts) {
|
|
|
39
281
|
console.log(` Available: ${available.map(p => p.name).join(', ')}`);
|
|
40
282
|
}
|
|
41
283
|
console.log(` Directory: ${cwd}`);
|
|
284
|
+
if (projectCtx) {
|
|
285
|
+
console.log(` \x1b[32mLoaded .myuru.md\x1b[0m (${projectCtx.files.length} file${projectCtx.files.length > 1 ? 's' : ''})`);
|
|
286
|
+
}
|
|
287
|
+
if (lastSession) {
|
|
288
|
+
console.log(' \x1b[32mLoaded last session context\x1b[0m');
|
|
289
|
+
}
|
|
290
|
+
if (sessionIndex) {
|
|
291
|
+
console.log(' \x1b[32mLoaded session memory index\x1b[0m');
|
|
292
|
+
}
|
|
42
293
|
console.log(` Tools: ${builtinTools.map(t => t.toolName).join(', ')}`);
|
|
43
|
-
console.log('
|
|
44
|
-
|
|
294
|
+
console.log('');
|
|
295
|
+
console.log(' \x1b[90mTry: "list all TODO comments in this project"');
|
|
296
|
+
console.log(' "explain what src/index.ts does"');
|
|
297
|
+
console.log(' "find and fix any TypeScript errors"');
|
|
298
|
+
console.log(' Commands: /help /clear /compact /history /cost /exit\x1b[0m');
|
|
299
|
+
console.log('');
|
|
300
|
+
// ── Session state ──
|
|
45
301
|
const messages = [];
|
|
46
302
|
const sessionUsage = {
|
|
47
303
|
totalInputTokens: 0,
|
|
@@ -50,42 +306,133 @@ export async function chatCommand(opts) {
|
|
|
50
306
|
estimatedCostUsd: 0,
|
|
51
307
|
stepCount: 0,
|
|
52
308
|
};
|
|
53
|
-
//
|
|
309
|
+
// Streaming state for Ctrl+C cancellation
|
|
310
|
+
let currentAbort = null;
|
|
311
|
+
let isStreaming = false;
|
|
312
|
+
let autoCompactWarned = false;
|
|
313
|
+
// ── REPL ──
|
|
54
314
|
const rl = readline.createInterface({
|
|
55
315
|
input: process.stdin,
|
|
56
316
|
output: process.stdout,
|
|
57
317
|
prompt: '\x1b[36m> \x1b[0m',
|
|
58
318
|
});
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
319
|
+
// Ctrl+C: cancel streaming if active, otherwise exit
|
|
320
|
+
process.on('SIGINT', () => {
|
|
321
|
+
if (isStreaming && currentAbort) {
|
|
322
|
+
currentAbort.abort();
|
|
323
|
+
currentAbort = null;
|
|
324
|
+
isStreaming = false;
|
|
325
|
+
process.stdout.write('\n\x1b[33m (cancelled)\x1b[0m\n\n');
|
|
63
326
|
rl.prompt();
|
|
64
|
-
return;
|
|
65
327
|
}
|
|
66
|
-
|
|
67
|
-
|
|
328
|
+
else {
|
|
329
|
+
saveLastSession(cwd, messages, sessionUsage);
|
|
68
330
|
printSessionSummary(sessionUsage);
|
|
69
|
-
|
|
70
|
-
return;
|
|
331
|
+
process.exit(0);
|
|
71
332
|
}
|
|
72
|
-
|
|
73
|
-
|
|
333
|
+
});
|
|
334
|
+
rl.prompt();
|
|
335
|
+
rl.on('line', async (line) => {
|
|
336
|
+
const input = line.trim();
|
|
337
|
+
if (!input) {
|
|
74
338
|
rl.prompt();
|
|
75
339
|
return;
|
|
76
340
|
}
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
341
|
+
// ── Slash commands ──
|
|
342
|
+
if (input.startsWith('/')) {
|
|
343
|
+
const cmd = input.toLowerCase();
|
|
344
|
+
if (cmd === '/exit' || cmd === '/quit') {
|
|
345
|
+
saveLastSession(cwd, messages, sessionUsage);
|
|
346
|
+
printSessionSummary(sessionUsage);
|
|
347
|
+
rl.close();
|
|
348
|
+
return;
|
|
349
|
+
}
|
|
350
|
+
if (cmd === '/cost') {
|
|
351
|
+
const estTokens = estimateContextTokens(messages, systemPrompt.length);
|
|
352
|
+
const pct = Math.round((estTokens / contextLimit) * 100);
|
|
353
|
+
console.log(`\n\x1b[90m Session: ${sessionUsage.totalTokens} tokens | ${sessionUsage.stepCount} steps | $${sessionUsage.estimatedCostUsd.toFixed(4)}`);
|
|
354
|
+
console.log(` Context: ~${estTokens.toLocaleString()} / ${contextLimit.toLocaleString()} tokens (~${pct}%)\x1b[0m\n`);
|
|
355
|
+
rl.prompt();
|
|
356
|
+
return;
|
|
357
|
+
}
|
|
358
|
+
if (cmd === '/models') {
|
|
359
|
+
console.log(`\n Current: ${provider}/${modelName}`);
|
|
360
|
+
console.log(` Available providers: ${available.map(p => p.name).join(', ')}\n`);
|
|
361
|
+
rl.prompt();
|
|
362
|
+
return;
|
|
363
|
+
}
|
|
364
|
+
if (cmd === '/clear') {
|
|
365
|
+
messages.length = 0;
|
|
366
|
+
autoCompactWarned = false;
|
|
367
|
+
console.log('\n \x1b[33mConversation cleared.\x1b[0m\n');
|
|
368
|
+
rl.prompt();
|
|
369
|
+
return;
|
|
370
|
+
}
|
|
371
|
+
if (cmd === '/help') {
|
|
372
|
+
console.log('');
|
|
373
|
+
console.log(' \x1b[36mCommands:\x1b[0m');
|
|
374
|
+
console.log(' /help Show this help');
|
|
375
|
+
console.log(' /clear Clear conversation history');
|
|
376
|
+
console.log(' /compact Save & compress conversation (preserves to .myuru/sessions/)');
|
|
377
|
+
console.log(' /history Show session memory index');
|
|
378
|
+
console.log(' /cost Show session cost, token usage, and context fill');
|
|
379
|
+
console.log(' /models Show current model and available providers');
|
|
380
|
+
console.log(' /exit Exit (also: /quit, Ctrl+D)');
|
|
381
|
+
console.log('');
|
|
382
|
+
console.log(' \x1b[36mKeys:\x1b[0m');
|
|
383
|
+
console.log(' Ctrl+C Cancel current response');
|
|
384
|
+
console.log(' Ctrl+D Exit');
|
|
385
|
+
console.log('');
|
|
386
|
+
console.log(' \x1b[36mMemory:\x1b[0m');
|
|
387
|
+
console.log(' .myuru.md Project context (loaded every session)');
|
|
388
|
+
console.log(' .myuru/last-session.md Auto-saved at exit, loaded at start');
|
|
389
|
+
console.log(' .myuru/sessions/ Structured logs from /compact (searchable)');
|
|
390
|
+
console.log('');
|
|
391
|
+
rl.prompt();
|
|
392
|
+
return;
|
|
393
|
+
}
|
|
394
|
+
if (cmd === '/history') {
|
|
395
|
+
const index = loadSessionIndex(cwd);
|
|
396
|
+
if (!index) {
|
|
397
|
+
console.log('\n \x1b[90mNo session logs yet. Use /compact to save one.\x1b[0m\n');
|
|
398
|
+
}
|
|
399
|
+
else {
|
|
400
|
+
console.log(`\n${index}\n`);
|
|
401
|
+
}
|
|
402
|
+
rl.prompt();
|
|
403
|
+
return;
|
|
404
|
+
}
|
|
405
|
+
if (cmd === '/compact') {
|
|
406
|
+
if (messages.length < 4) {
|
|
407
|
+
console.log('\n \x1b[90mNothing to compact yet.\x1b[0m\n');
|
|
408
|
+
rl.prompt();
|
|
409
|
+
return;
|
|
410
|
+
}
|
|
411
|
+
console.log('\n \x1b[33mCompacting — extracting structured log and saving...\x1b[0m');
|
|
412
|
+
try {
|
|
413
|
+
const result = await performCompact(agent, messages, sessionUsage, cwd);
|
|
414
|
+
autoCompactWarned = false;
|
|
415
|
+
console.log(` \x1b[32mSaved to .myuru/sessions/${result.filename}\x1b[0m`);
|
|
416
|
+
console.log(` \x1b[32mCompacted: ${result.prevCount} messages → 2\x1b[0m\n`);
|
|
417
|
+
}
|
|
418
|
+
catch (err) {
|
|
419
|
+
console.error(`\n\x1b[31m Compact failed: ${err.message}\x1b[0m\n`);
|
|
420
|
+
}
|
|
421
|
+
rl.prompt();
|
|
422
|
+
return;
|
|
423
|
+
}
|
|
424
|
+
console.log(`\n \x1b[33mUnknown command: ${input}. Type /help for commands.\x1b[0m\n`);
|
|
80
425
|
rl.prompt();
|
|
81
426
|
return;
|
|
82
427
|
}
|
|
83
|
-
//
|
|
428
|
+
// ── User message ──
|
|
84
429
|
messages.push({ role: 'user', content: input });
|
|
85
|
-
// Stream the response
|
|
86
430
|
try {
|
|
87
431
|
process.stdout.write('\n');
|
|
432
|
+
currentAbort = new AbortController();
|
|
433
|
+
isStreaming = true;
|
|
88
434
|
const stream = agent.chatStream(messages, {
|
|
435
|
+
signal: currentAbort.signal,
|
|
89
436
|
onStep: (step) => {
|
|
90
437
|
if (step.toolCalls?.length) {
|
|
91
438
|
for (const tc of step.toolCalls) {
|
|
@@ -94,7 +441,6 @@ export async function chatCommand(opts) {
|
|
|
94
441
|
}
|
|
95
442
|
},
|
|
96
443
|
});
|
|
97
|
-
// Manual loop to capture the generator return value
|
|
98
444
|
let chatResult;
|
|
99
445
|
let next = await stream.next();
|
|
100
446
|
while (!next.done) {
|
|
@@ -102,11 +448,11 @@ export async function chatCommand(opts) {
|
|
|
102
448
|
next = await stream.next();
|
|
103
449
|
}
|
|
104
450
|
chatResult = next.value;
|
|
105
|
-
|
|
451
|
+
isStreaming = false;
|
|
452
|
+
currentAbort = null;
|
|
106
453
|
if (chatResult?.responseMessages) {
|
|
107
454
|
messages.push(...chatResult.responseMessages);
|
|
108
455
|
}
|
|
109
|
-
// Update session usage
|
|
110
456
|
if (chatResult?.usage) {
|
|
111
457
|
sessionUsage.totalInputTokens += chatResult.usage.totalInputTokens;
|
|
112
458
|
sessionUsage.totalOutputTokens += chatResult.usage.totalOutputTokens;
|
|
@@ -114,66 +460,40 @@ export async function chatCommand(opts) {
|
|
|
114
460
|
sessionUsage.estimatedCostUsd += chatResult.usage.estimatedCostUsd;
|
|
115
461
|
sessionUsage.stepCount += chatResult.usage.stepCount;
|
|
116
462
|
}
|
|
117
|
-
// Print cost line
|
|
118
463
|
const tokens = chatResult?.usage.totalTokens ?? 0;
|
|
119
464
|
const cost = (chatResult?.usage.estimatedCostUsd ?? 0).toFixed(4);
|
|
120
465
|
const session = sessionUsage.estimatedCostUsd.toFixed(4);
|
|
121
466
|
process.stdout.write(`\n\n\x1b[90m ${tokens} tokens | $${cost} | session: $${session}\x1b[0m\n\n`);
|
|
467
|
+
// ── Auto-compact warning ──
|
|
468
|
+
if (!autoCompactWarned) {
|
|
469
|
+
const estTokens = estimateContextTokens(messages, systemPrompt.length);
|
|
470
|
+
const fillPct = estTokens / contextLimit;
|
|
471
|
+
if (fillPct >= 0.75) {
|
|
472
|
+
const pct = Math.round(fillPct * 100);
|
|
473
|
+
console.log(` \x1b[33m⚠ Context is ~${pct}% full (~${estTokens.toLocaleString()} tokens).`);
|
|
474
|
+
console.log(` Run /compact to save and compress. Your session log will be preserved.\x1b[0m\n`);
|
|
475
|
+
autoCompactWarned = true;
|
|
476
|
+
}
|
|
477
|
+
}
|
|
122
478
|
}
|
|
123
479
|
catch (err) {
|
|
124
|
-
|
|
480
|
+
isStreaming = false;
|
|
481
|
+
currentAbort = null;
|
|
482
|
+
if (err.name === 'AbortError') {
|
|
483
|
+
if (messages.length > 0 && messages[messages.length - 1].role === 'user') {
|
|
484
|
+
messages.pop();
|
|
485
|
+
}
|
|
486
|
+
}
|
|
487
|
+
else {
|
|
488
|
+
console.error(`\n\x1b[31m Error: ${err.message}\x1b[0m\n`);
|
|
489
|
+
}
|
|
125
490
|
}
|
|
126
491
|
rl.prompt();
|
|
127
492
|
});
|
|
128
493
|
rl.on('close', () => {
|
|
494
|
+
saveLastSession(cwd, messages, sessionUsage);
|
|
129
495
|
printSessionSummary(sessionUsage);
|
|
130
496
|
process.exit(0);
|
|
131
497
|
});
|
|
132
|
-
process.on('SIGINT', () => {
|
|
133
|
-
printSessionSummary(sessionUsage);
|
|
134
|
-
process.exit(0);
|
|
135
|
-
});
|
|
136
|
-
}
|
|
137
|
-
function printSessionSummary(usage) {
|
|
138
|
-
console.log(`\n\x1b[90m Session: ${usage.totalTokens} tokens | ${usage.stepCount} steps | $${usage.estimatedCostUsd.toFixed(4)}\x1b[0m\n`);
|
|
139
|
-
}
|
|
140
|
-
function buildSystemPrompt(cwd, fileTree) {
|
|
141
|
-
return [
|
|
142
|
-
'You are a helpful coding assistant with full access to the file system and shell.',
|
|
143
|
-
'You can read, write, and edit files, search for files and content, and run shell commands.',
|
|
144
|
-
'Always use your tools to accomplish tasks. Do not ask the user to do things you can do yourself.',
|
|
145
|
-
'When editing files, read them first to understand the current content.',
|
|
146
|
-
'Be concise in your responses. Show what you did, not lengthy explanations of what you plan to do.',
|
|
147
|
-
'',
|
|
148
|
-
`Working directory: ${cwd}`,
|
|
149
|
-
'',
|
|
150
|
-
'Project files:',
|
|
151
|
-
fileTree,
|
|
152
|
-
].join('\n');
|
|
153
|
-
}
|
|
154
|
-
function scanDirectory(dir, maxDepth, depth = 0, prefix = '') {
|
|
155
|
-
if (depth >= maxDepth)
|
|
156
|
-
return '';
|
|
157
|
-
const lines = [];
|
|
158
|
-
try {
|
|
159
|
-
const entries = fs.readdirSync(dir, { withFileTypes: true })
|
|
160
|
-
.filter(e => !e.name.startsWith('.') && e.name !== 'node_modules' && e.name !== 'dist')
|
|
161
|
-
.sort((a, b) => {
|
|
162
|
-
if (a.isDirectory() !== b.isDirectory())
|
|
163
|
-
return a.isDirectory() ? -1 : 1;
|
|
164
|
-
return a.name.localeCompare(b.name);
|
|
165
|
-
});
|
|
166
|
-
for (const entry of entries.slice(0, 30)) {
|
|
167
|
-
const name = entry.isDirectory() ? `${entry.name}/` : entry.name;
|
|
168
|
-
lines.push(`${prefix}${name}`);
|
|
169
|
-
if (entry.isDirectory()) {
|
|
170
|
-
const sub = scanDirectory(path.join(dir, entry.name), maxDepth, depth + 1, prefix + ' ');
|
|
171
|
-
if (sub)
|
|
172
|
-
lines.push(sub);
|
|
173
|
-
}
|
|
174
|
-
}
|
|
175
|
-
}
|
|
176
|
-
catch { /* permission errors */ }
|
|
177
|
-
return lines.filter(Boolean).join('\n');
|
|
178
498
|
}
|
|
179
499
|
//# sourceMappingURL=chat.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chat.js","sourceRoot":"","sources":["../../../src/cli/commands/chat.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"chat.js","sourceRoot":"","sources":["../../../src/cli/commands/chat.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/init.ts"],"names":[],"mappings":"AAGA,wBAAsB,WAAW,CAAC,IAAI,EAAE;IAAE,GAAG,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/init.ts"],"names":[],"mappings":"AAGA,wBAAsB,WAAW,CAAC,IAAI,EAAE;IAAE,GAAG,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAqDtE"}
|
|
@@ -2,7 +2,20 @@ import * as fs from 'node:fs';
|
|
|
2
2
|
import * as path from 'node:path';
|
|
3
3
|
export async function initCommand(opts) {
|
|
4
4
|
const dir = path.resolve(opts.dir);
|
|
5
|
-
console.log(`\nMyUru
|
|
5
|
+
console.log(`\nMyUru — Initializing project in ${dir}\n`);
|
|
6
|
+
// Create .myuru.md project context file
|
|
7
|
+
const contextPath = path.join(dir, '.myuru.md');
|
|
8
|
+
if (!fs.existsSync(contextPath)) {
|
|
9
|
+
fs.writeFileSync(contextPath, PROJECT_CONTEXT_TEMPLATE);
|
|
10
|
+
console.log(' Created .myuru.md (project context — loaded every session)');
|
|
11
|
+
}
|
|
12
|
+
else {
|
|
13
|
+
console.log(' .myuru.md already exists, skipping');
|
|
14
|
+
}
|
|
15
|
+
// Create .myuru/ state directory
|
|
16
|
+
const stateDir = path.join(dir, '.myuru');
|
|
17
|
+
fs.mkdirSync(stateDir, { recursive: true });
|
|
18
|
+
console.log(' Created .myuru/ (state directory)');
|
|
6
19
|
// Create config file
|
|
7
20
|
const configPath = path.join(dir, 'myuru.config.ts');
|
|
8
21
|
if (!fs.existsSync(configPath)) {
|
|
@@ -19,24 +32,44 @@ export async function initCommand(opts) {
|
|
|
19
32
|
fs.writeFileSync(path.join(agentsDir, 'researcher.ts'), AGENT_TEMPLATE);
|
|
20
33
|
console.log(' Created agents/researcher.ts');
|
|
21
34
|
}
|
|
22
|
-
// Create .myuru directory for state
|
|
23
|
-
const stateDir = path.join(dir, '.myuru');
|
|
24
|
-
fs.mkdirSync(stateDir, { recursive: true });
|
|
25
|
-
console.log(' Created .myuru/ (state directory)');
|
|
26
35
|
// Add to .gitignore if it exists
|
|
27
36
|
const gitignorePath = path.join(dir, '.gitignore');
|
|
28
37
|
if (fs.existsSync(gitignorePath)) {
|
|
29
38
|
const content = fs.readFileSync(gitignorePath, 'utf-8');
|
|
30
|
-
if (!content.includes('.myuru')) {
|
|
39
|
+
if (!content.includes('.myuru/')) {
|
|
31
40
|
fs.appendFileSync(gitignorePath, '\n# MyUru state\n.myuru/\n');
|
|
32
41
|
console.log(' Added .myuru/ to .gitignore');
|
|
33
42
|
}
|
|
34
43
|
}
|
|
35
44
|
console.log('\nDone! Next steps:');
|
|
36
|
-
console.log(' 1.
|
|
37
|
-
console.log(' 2.
|
|
38
|
-
console.log(' 3. Run: myuru
|
|
45
|
+
console.log(' 1. Edit .myuru.md to describe your project');
|
|
46
|
+
console.log(' 2. Set your API key: export ANTHROPIC_API_KEY=sk-ant-...');
|
|
47
|
+
console.log(' 3. Run: myuru\n');
|
|
39
48
|
}
|
|
49
|
+
const PROJECT_CONTEXT_TEMPLATE = `# Project Context
|
|
50
|
+
|
|
51
|
+
<!-- MyUru loads this file into every session automatically. -->
|
|
52
|
+
<!-- Describe your project so the agent understands your codebase. -->
|
|
53
|
+
|
|
54
|
+
## About This Project
|
|
55
|
+
|
|
56
|
+
<!-- What is this project? What does it do? -->
|
|
57
|
+
|
|
58
|
+
## Tech Stack
|
|
59
|
+
|
|
60
|
+
<!-- e.g. Next.js 15, Prisma, Tailwind CSS, PostgreSQL -->
|
|
61
|
+
|
|
62
|
+
## Important Rules
|
|
63
|
+
|
|
64
|
+
<!-- Things the agent should always or never do. Examples: -->
|
|
65
|
+
<!-- - Never modify package.json without asking -->
|
|
66
|
+
<!-- - Use the existing logger in src/lib/logger.ts -->
|
|
67
|
+
<!-- - All API routes go in src/app/api/ -->
|
|
68
|
+
|
|
69
|
+
## Key Files
|
|
70
|
+
|
|
71
|
+
<!-- Important files the agent should know about -->
|
|
72
|
+
`;
|
|
40
73
|
const CONFIG_TEMPLATE = `import { type AgentConfig } from 'myuru';
|
|
41
74
|
|
|
42
75
|
// MyUru Configuration
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../../src/cli/commands/init.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAElC,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,IAAqB;IACrD,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAEnC,OAAO,CAAC,GAAG,CAAC,
|
|
1
|
+
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../../src/cli/commands/init.ts"],"names":[],"mappings":"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"}
|
package/dist/cli/index.js
CHANGED
|
@@ -7,7 +7,7 @@ const program = new Command();
|
|
|
7
7
|
program
|
|
8
8
|
.name('myuru')
|
|
9
9
|
.description('AI agent with file system and shell access. Works with any provider.')
|
|
10
|
-
.version('2.0.0-alpha.
|
|
10
|
+
.version('2.0.0-alpha.6');
|
|
11
11
|
program
|
|
12
12
|
.command('chat', { isDefault: true })
|
|
13
13
|
.description('Start an interactive chat session (default)')
|
package/package.json
CHANGED