mythos-router 1.3.2 → 1.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +13 -0
- package/README.md +5 -1
- package/dist/cli.js +18 -22
- package/dist/cli.js.map +1 -1
- package/dist/commands/chat.d.ts +1 -0
- package/dist/commands/chat.d.ts.map +1 -1
- package/dist/commands/chat.js +98 -12
- package/dist/commands/chat.js.map +1 -1
- package/dist/session.d.ts +20 -0
- package/dist/session.d.ts.map +1 -0
- package/dist/session.js +54 -0
- package/dist/session.js.map +1 -0
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -7,6 +7,19 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
7
7
|
|
|
8
8
|
---
|
|
9
9
|
|
|
10
|
+
## [1.4.0] — 2026-04-27
|
|
11
|
+
|
|
12
|
+
### Added
|
|
13
|
+
- **Session persistence & resume support** — Sessions are now atomically saved to `~/.mythos-router/sessions/latest.json` on exit. `mythos chat --resume` restores conversation history and budget state.
|
|
14
|
+
- **Context window guard** — Automatically compresses the oldest portion of conversation history when approaching token limits using a low-effort summarization step. Prevents context overflow crashes during long sessions.
|
|
15
|
+
|
|
16
|
+
### Fixed
|
|
17
|
+
- **CLI signal handling** — Improved handling of `SIGINT`, `SIGTERM`, and `uncaughtException`, ensuring terminal state is restored and sessions are safely persisted on exit or crash.
|
|
18
|
+
- **Commander.js lifecycle** — Switched to `program.parseAsync()` to properly handle async command execution and prevent unhandled promise issues.
|
|
19
|
+
- **Startup race condition** — Removed a dynamic import in the default help path that could cause banner inconsistencies in some environments.
|
|
20
|
+
|
|
21
|
+
---
|
|
22
|
+
|
|
10
23
|
## [1.3.1] — 2026-04-27
|
|
11
24
|
|
|
12
25
|
### Added
|
package/README.md
CHANGED
|
@@ -63,6 +63,7 @@ Zero slop. Zero hallucinated state. Full adaptive thinking.
|
|
|
63
63
|
| **Correction Turns** | Model gets 2 retries to match filesystem reality, then yields |
|
|
64
64
|
| **Integrity Gate** | `verify` command and startup hashing ensure zero drift |
|
|
65
65
|
| **Token Limiter** | Budget cap with graceful save — progress saved to MEMORY.md, never lose work |
|
|
66
|
+
| **Session Resume** | Pick up exactly where you left off after a crash or exit (`--resume`) |
|
|
66
67
|
| **Dry-Run Mode** | Preview every file operation before it executes — full transparency |
|
|
67
68
|
| **Verbose Tracing** | See exactly what the AI is parsing, thinking, and verifying |
|
|
68
69
|
| **Budget Analytics** | Persistent tracking of cost across sessions and projects via `stats` |
|
|
@@ -139,6 +140,7 @@ mythos chat -s react # Load the 'react' expert skill
|
|
|
139
140
|
mythos chat --test-cmd "npm test" # Enable autonomous test-driven self-healing
|
|
140
141
|
mythos chat --effort low # Budget mode (Haiku 3)
|
|
141
142
|
mythos chat --effort medium # Balanced (Sonnet 3.5)
|
|
143
|
+
mythos chat --resume # Resume your previous session exactly where you left off
|
|
142
144
|
mythos chat --dry-run # Preview all file changes before executing
|
|
143
145
|
mythos chat --verbose # See full SWD traces and thinking
|
|
144
146
|
mythos chat --branch refactor # Isolate session in a fresh git branch
|
|
@@ -390,11 +392,13 @@ When the budget is reached, mythos doesn't just kill your session — it perform
|
|
|
390
392
|
```
|
|
391
393
|
⏸ BUDGET REACHED — Graceful Save
|
|
392
394
|
498,231 tokens consumed across 25 turns (~$7.4200).
|
|
393
|
-
Progress saved to MEMORY.md. Resume with mythos chat to continue.
|
|
395
|
+
Progress saved to MEMORY.md. Resume with mythos chat --resume to continue.
|
|
394
396
|
Increase limits: mythos chat --max-tokens 1000000 --max-turns 50
|
|
395
397
|
Disable limits: mythos chat --no-budget
|
|
396
398
|
```
|
|
397
399
|
|
|
400
|
+
The system automatically saves your conversation history and budget state to `~/.mythos-router/sessions/latest.json`. You can instantly restore your exact context by running `mythos chat --resume`.
|
|
401
|
+
|
|
398
402
|
Token counts, estimated cost, and budget status are displayed after every chat response.
|
|
399
403
|
|
|
400
404
|
---
|
package/dist/cli.js
CHANGED
|
@@ -13,12 +13,20 @@ import { dreamCommand } from './commands/dream.js';
|
|
|
13
13
|
import { statsCommand } from './commands/stats.js';
|
|
14
14
|
import { providersCommand } from './commands/providers.js';
|
|
15
15
|
import { DEFAULT_MAX_TOKENS_PER_SESSION, DEFAULT_MAX_TURNS, } from './config.js';
|
|
16
|
+
import { BANNER } from './utils.js';
|
|
16
17
|
// ── Read version from package.json (single source of truth) ──
|
|
17
18
|
const __dirname = dirname(fileURLToPath(import.meta.url));
|
|
18
19
|
const pkg = JSON.parse(readFileSync(resolve(__dirname, '..', 'package.json'), 'utf-8'));
|
|
19
20
|
const program = new Command();
|
|
20
21
|
// ── Restore cursor on any exit (spinner crash safety) ────────
|
|
21
|
-
|
|
22
|
+
const restoreCursor = () => process.stdout.write('\x1b[?25h');
|
|
23
|
+
process.on('exit', restoreCursor);
|
|
24
|
+
process.on('SIGINT', () => { restoreCursor(); process.exit(0); });
|
|
25
|
+
process.on('uncaughtException', (err) => {
|
|
26
|
+
restoreCursor();
|
|
27
|
+
console.error(err);
|
|
28
|
+
process.exit(1);
|
|
29
|
+
});
|
|
22
30
|
program
|
|
23
31
|
.name('mythos')
|
|
24
32
|
.description('Capybara-tier CLI router — Claude Opus 4.7 with Adaptive Thinking, ' +
|
|
@@ -38,52 +46,40 @@ program
|
|
|
38
46
|
.option('-t, --test-cmd <cmd>', 'Command to run after successful SWD execution (WARNING: assumes a trusted environment and executes arbitrary shell commands)')
|
|
39
47
|
.option('--max-test-retries <n>', 'Maximum number of times Claude can attempt to fix failing tests', '3')
|
|
40
48
|
.option('-s, --skill <names...>', 'Inject specific expert skills (e.g., -s mcp -s react)')
|
|
41
|
-
.
|
|
42
|
-
|
|
43
|
-
});
|
|
49
|
+
.option('--resume', 'Resume the last saved session (history + budget state)')
|
|
50
|
+
.action(chatCommand);
|
|
44
51
|
// ── mythos verify ────────────────────────────────────────────
|
|
45
52
|
program
|
|
46
53
|
.command('verify')
|
|
47
54
|
.description('Scan codebase and sync with MEMORY.md for zero drift')
|
|
48
55
|
.option('--dry-run', 'Preview verification without writing to MEMORY.md')
|
|
49
|
-
.action(
|
|
50
|
-
await verifyCommand(options);
|
|
51
|
-
});
|
|
56
|
+
.action(verifyCommand);
|
|
52
57
|
// ── mythos dream ─────────────────────────────────────────────
|
|
53
58
|
program
|
|
54
59
|
.command('dream')
|
|
55
60
|
.description('Summarize and compress agentic memory for context optimization')
|
|
56
61
|
.option('-f, --force', 'Force dream even with few entries', false)
|
|
57
62
|
.option('--dry-run', 'Preview compression without writing to MEMORY.md')
|
|
58
|
-
.action(
|
|
59
|
-
await dreamCommand(options);
|
|
60
|
-
});
|
|
63
|
+
.action(dreamCommand);
|
|
61
64
|
// ── mythos stats ─────────────────────────────────────────────
|
|
62
65
|
program
|
|
63
66
|
.command('stats')
|
|
64
67
|
.description('Show budget analytics and token usage across sessions')
|
|
65
68
|
.option('-d, --days <n>', 'Filter metrics by the last N days')
|
|
66
|
-
.action(
|
|
67
|
-
await statsCommand(options);
|
|
68
|
-
});
|
|
69
|
+
.action(statsCommand);
|
|
69
70
|
// ── mythos providers ─────────────────────────────────────────
|
|
70
71
|
program
|
|
71
72
|
.command('providers')
|
|
72
73
|
.description('Live dashboard of provider health, EMA scoring, and routing decisions')
|
|
73
74
|
.option('-w, --watch', 'Auto-refresh the dashboard when metrics change')
|
|
74
75
|
.option('--verbose', 'Show full error stacks for recent failures')
|
|
75
|
-
.action(
|
|
76
|
-
await providersCommand(options);
|
|
77
|
-
});
|
|
76
|
+
.action(providersCommand);
|
|
78
77
|
// ── Default: show help ───────────────────────────────────────
|
|
79
78
|
if (process.argv.length <= 2) {
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
console.log(BANNER);
|
|
83
|
-
program.help();
|
|
84
|
-
});
|
|
79
|
+
console.log(BANNER);
|
|
80
|
+
program.help();
|
|
85
81
|
}
|
|
86
82
|
else {
|
|
87
|
-
program.
|
|
83
|
+
program.parseAsync();
|
|
88
84
|
}
|
|
89
85
|
//# sourceMappingURL=cli.js.map
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AACA,gEAAgE;AAChE,2BAA2B;AAC3B,+CAA+C;AAC/C,gEAAgE;AAEhE,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EACL,8BAA8B,EAC9B,iBAAiB,GAClB,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/chat.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chat.d.ts","sourceRoot":"","sources":["../../src/commands/chat.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"chat.d.ts","sourceRoot":"","sources":["../../src/commands/chat.ts"],"names":[],"mappings":"AAeA,MAAM,WAAW,MAAM;IACrB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,WAAW,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,KAAK,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,OAAO,IAAI,IAAI,CAAC;CACjB;AAmfD,UAAU,WAAW;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAC1B,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,wBAAsB,WAAW,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAwErE"}
|
package/dist/commands/chat.js
CHANGED
|
@@ -1,11 +1,6 @@
|
|
|
1
|
-
// ─────────────────────────────────────────────────────────────
|
|
2
|
-
// mythos-router :: commands/chat.ts
|
|
3
|
-
// Interactive REPL with Capybara thinking protocol
|
|
4
|
-
// + Budget Limiter + Dry-Run + Verbose modes
|
|
5
|
-
// ─────────────────────────────────────────────────────────────
|
|
6
1
|
import * as readline from 'node:readline';
|
|
7
2
|
import * as path from 'node:path';
|
|
8
|
-
import { formatTokenUsage } from '../client.js';
|
|
3
|
+
import { formatTokenUsage, getOrchestrator } from '../client.js';
|
|
9
4
|
import { SWDEngine, parseActions, summarizeActions } from '../swd.js';
|
|
10
5
|
import { printSWDResults, dryRunSWD, printVerboseParse } from '../swd-cli.js';
|
|
11
6
|
import { saveSessionMetric } from '../metrics.js';
|
|
@@ -13,9 +8,9 @@ import { appendEntry, appendMetadataBlock, needsDream, getMemoryContext, printMe
|
|
|
13
8
|
import { MAX_CORRECTION_RETRIES, MODELS, validateApiKey } from '../config.js';
|
|
14
9
|
import { c, Spinner, BANNER, hr, heading, error as logError, warn as logWarn, success as logSuccess, runTestCommand } from '../utils.js';
|
|
15
10
|
import { SessionBudget } from '../budget.js';
|
|
16
|
-
import { getOrchestrator } from '../client.js';
|
|
17
11
|
import { buildSkillPrompt } from '../skills.js';
|
|
18
12
|
import { isGitRepo, hasUncommittedChanges, getCurrentBranch, commitChanges, getLatestHash, createAndCheckoutBranch } from '../git.js';
|
|
13
|
+
import { saveSession, loadSession, formatResumeInfo } from '../session.js';
|
|
19
14
|
// ── Chat Session Manager ─────────────────────────────────────
|
|
20
15
|
class ChatSession {
|
|
21
16
|
history = [];
|
|
@@ -36,7 +31,7 @@ class ChatSession {
|
|
|
36
31
|
let budgetMultiplier = 1.0;
|
|
37
32
|
try {
|
|
38
33
|
const skills = typeof options.skill === 'string' ? [options.skill] : (options.skill || []);
|
|
39
|
-
const skillResult = buildSkillPrompt(
|
|
34
|
+
const skillResult = buildSkillPrompt('', skills);
|
|
40
35
|
this.finalSystemPrompt = skillResult.prompt;
|
|
41
36
|
this.maxOutputTokens = skillResult.maxOutputTokens;
|
|
42
37
|
this.forceProvider = skillResult.forceProvider;
|
|
@@ -100,7 +95,56 @@ class ChatSession {
|
|
|
100
95
|
createAndCheckoutBranch(branchName);
|
|
101
96
|
return branchName;
|
|
102
97
|
}
|
|
98
|
+
async enforceContextWindowGuard() {
|
|
99
|
+
let historyLength = 0;
|
|
100
|
+
for (const msg of this.history) {
|
|
101
|
+
historyLength += msg.content.length;
|
|
102
|
+
}
|
|
103
|
+
// 1. Token estimation with 1.2x safety multiplier
|
|
104
|
+
const historyTokens = Math.ceil((historyLength / 4) * 1.2);
|
|
105
|
+
const systemPromptTokens = Math.ceil(((this.finalSystemPrompt?.length ?? 0) / 4) * 1.2);
|
|
106
|
+
// 3. System prompt inclusion safety buffer
|
|
107
|
+
const RESPONSE_BUFFER = 8192;
|
|
108
|
+
const effectiveLimit = 150_000 - systemPromptTokens - RESPONSE_BUFFER;
|
|
109
|
+
// 2. Compression ceiling rule
|
|
110
|
+
const MAX_MESSAGES = 120;
|
|
111
|
+
const overTokenLimit = historyTokens > effectiveLimit;
|
|
112
|
+
const overMessageLimit = this.history.length > MAX_MESSAGES;
|
|
113
|
+
if (!overTokenLimit && !overMessageLimit)
|
|
114
|
+
return;
|
|
115
|
+
// At least 60%, or more if needed to get under the message cap
|
|
116
|
+
const messagesToCompress = Math.max(Math.floor(this.history.length * 0.6), this.history.length - (MAX_MESSAGES - 1));
|
|
117
|
+
if (messagesToCompress < 2)
|
|
118
|
+
return;
|
|
119
|
+
const toCompress = this.history.slice(0, messagesToCompress);
|
|
120
|
+
const toKeep = this.history.slice(messagesToCompress);
|
|
121
|
+
const reason = overMessageLimit ? `message cap (> ${MAX_MESSAGES})` : '150k token limit';
|
|
122
|
+
this.ui.warn(`\n${c.yellow}Context approaching ${reason}. Compressing oldest ${messagesToCompress} turns...${c.reset}`);
|
|
123
|
+
const prompt = `Please summarize the following older conversation context into a dense, factual summary. Preserve all technical decisions, constraints, paths, and context needed to continue the work.\n\n<history>\n${JSON.stringify(toCompress, null, 2)}\n</history>`;
|
|
124
|
+
try {
|
|
125
|
+
const orchestrator = getOrchestrator();
|
|
126
|
+
const response = await orchestrator.sendMessage([{ role: 'user', content: prompt }], {
|
|
127
|
+
systemPrompt: 'You are a core memory compression system. Be extremely dense and factual.',
|
|
128
|
+
effort: 'low',
|
|
129
|
+
maxTokens: 4096,
|
|
130
|
+
deterministic: !!this.forceProvider
|
|
131
|
+
});
|
|
132
|
+
this.budget.record(response.usage.inputTokens, response.usage.outputTokens);
|
|
133
|
+
this.history = [
|
|
134
|
+
{ role: 'user', content: `[CONTEXT SUMMARY OF PREVIOUS TURNS]\n${response.text}` },
|
|
135
|
+
{ role: 'assistant', content: 'Acknowledged. I have the compressed context and will continue from here.' },
|
|
136
|
+
...toKeep
|
|
137
|
+
];
|
|
138
|
+
appendEntry('Context Compression', `Summarized ${messagesToCompress} turns to prevent context overflow.`, this.options.dryRun);
|
|
139
|
+
}
|
|
140
|
+
catch (err) {
|
|
141
|
+
this.ui.warn(`\n${c.red}Summarization failed (${err.message}). Falling back to hard truncation.${c.reset}`);
|
|
142
|
+
this.history = toKeep;
|
|
143
|
+
appendEntry('Context Compression', `Hard truncation of ${messagesToCompress} turns due to summary failure.`, this.options.dryRun);
|
|
144
|
+
}
|
|
145
|
+
}
|
|
103
146
|
async processInput(input) {
|
|
147
|
+
await this.enforceContextWindowGuard();
|
|
104
148
|
this.history.push({ role: 'user', content: input });
|
|
105
149
|
this.ui.startLoading('Capybara is thinking...');
|
|
106
150
|
let thinkingTokens = 0;
|
|
@@ -356,6 +400,19 @@ class ChatSession {
|
|
|
356
400
|
timestamp: new Date().toISOString(),
|
|
357
401
|
});
|
|
358
402
|
}
|
|
403
|
+
// Persist session for --resume
|
|
404
|
+
if (this.history.length > 0 && !this.options.dryRun) {
|
|
405
|
+
try {
|
|
406
|
+
saveSession(this.history, {
|
|
407
|
+
inputTokens: snap.inputTokens,
|
|
408
|
+
outputTokens: snap.outputTokens,
|
|
409
|
+
turns: snap.turns,
|
|
410
|
+
}, path.basename(process.cwd()));
|
|
411
|
+
}
|
|
412
|
+
catch (err) {
|
|
413
|
+
logWarn(`Session save failed: ${err.message}`);
|
|
414
|
+
}
|
|
415
|
+
}
|
|
359
416
|
}
|
|
360
417
|
}
|
|
361
418
|
// ── Terminal Implementation of ChatUI ────────────────────────
|
|
@@ -382,6 +439,19 @@ export async function chatCommand(options) {
|
|
|
382
439
|
ui.log(heading(`CHAT SESSION :: ${MODELS.high.toUpperCase()}`));
|
|
383
440
|
if (options.dryRun)
|
|
384
441
|
ui.log(` ${c.bgYellow}${c.black}${c.bold} DRY-RUN MODE ACTIVE ${c.reset}\n`);
|
|
442
|
+
// ── Resume previous session if requested ────────────────
|
|
443
|
+
if (options.resume) {
|
|
444
|
+
const saved = loadSession();
|
|
445
|
+
if (saved) {
|
|
446
|
+
session.history = saved.history;
|
|
447
|
+
// Re-record previous budget usage so the limiter is aware
|
|
448
|
+
session.budget.record(saved.budget.inputTokens, saved.budget.outputTokens);
|
|
449
|
+
ui.success(formatResumeInfo(saved));
|
|
450
|
+
}
|
|
451
|
+
else {
|
|
452
|
+
ui.warn('No resumable session found. Starting fresh.');
|
|
453
|
+
}
|
|
454
|
+
}
|
|
385
455
|
let sandboxBranch = null;
|
|
386
456
|
try {
|
|
387
457
|
sandboxBranch = await session.setupSandbox();
|
|
@@ -398,6 +468,25 @@ export async function chatCommand(options) {
|
|
|
398
468
|
output: process.stdout,
|
|
399
469
|
prompt: `${c.magenta}${c.bold}mythos > ${c.reset}`,
|
|
400
470
|
});
|
|
471
|
+
let finalized = false;
|
|
472
|
+
const safeExit = async () => {
|
|
473
|
+
if (finalized)
|
|
474
|
+
return;
|
|
475
|
+
finalized = true;
|
|
476
|
+
try {
|
|
477
|
+
await session.finalize(sandboxBranch);
|
|
478
|
+
}
|
|
479
|
+
catch (err) {
|
|
480
|
+
logWarn(`Finalize failed: ${err.message}`);
|
|
481
|
+
}
|
|
482
|
+
process.exit(0);
|
|
483
|
+
};
|
|
484
|
+
process.on('SIGINT', () => safeExit());
|
|
485
|
+
process.on('SIGTERM', () => safeExit());
|
|
486
|
+
process.on('uncaughtException', async (err) => {
|
|
487
|
+
logError(`Unexpected error: ${err.stack || err.message}`);
|
|
488
|
+
await safeExit();
|
|
489
|
+
});
|
|
401
490
|
rl.prompt();
|
|
402
491
|
rl.on('line', async (line) => {
|
|
403
492
|
const input = line.trim();
|
|
@@ -413,9 +502,6 @@ export async function chatCommand(options) {
|
|
|
413
502
|
ui.divider();
|
|
414
503
|
rl.prompt();
|
|
415
504
|
});
|
|
416
|
-
rl.on('close',
|
|
417
|
-
await session.finalize(sandboxBranch);
|
|
418
|
-
process.exit(0);
|
|
419
|
-
});
|
|
505
|
+
rl.on('close', safeExit);
|
|
420
506
|
}
|
|
421
507
|
//# sourceMappingURL=chat.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chat.js","sourceRoot":"","sources":["../../src/commands/chat.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"chat.js","sourceRoot":"","sources":["../../src/commands/chat.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import type { Message } from './providers/types.js';
|
|
2
|
+
export interface SessionData {
|
|
3
|
+
version: number;
|
|
4
|
+
timestamp: string;
|
|
5
|
+
project: string;
|
|
6
|
+
history: Message[];
|
|
7
|
+
budget: {
|
|
8
|
+
inputTokens: number;
|
|
9
|
+
outputTokens: number;
|
|
10
|
+
turns: number;
|
|
11
|
+
};
|
|
12
|
+
}
|
|
13
|
+
export declare function saveSession(history: Message[], budget: {
|
|
14
|
+
inputTokens: number;
|
|
15
|
+
outputTokens: number;
|
|
16
|
+
turns: number;
|
|
17
|
+
}, project: string): void;
|
|
18
|
+
export declare function loadSession(): SessionData | null;
|
|
19
|
+
export declare function formatResumeInfo(session: SessionData): string;
|
|
20
|
+
//# sourceMappingURL=session.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../src/session.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAQpD,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,OAAO,EAAE,CAAC;IACnB,MAAM,EAAE;QACN,WAAW,EAAE,MAAM,CAAC;QACpB,YAAY,EAAE,MAAM,CAAC;QACrB,KAAK,EAAE,MAAM,CAAC;KACf,CAAC;CACH;AAGD,wBAAgB,WAAW,CACzB,OAAO,EAAE,OAAO,EAAE,EAClB,MAAM,EAAE;IAAE,WAAW,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,EACpE,OAAO,EAAE,MAAM,GACd,IAAI,CAcN;AAGD,wBAAgB,WAAW,IAAI,WAAW,GAAG,IAAI,CAiBhD;AAGD,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,WAAW,GAAG,MAAM,CAM7D"}
|
package/dist/session.js
ADDED
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
// ─────────────────────────────────────────────────────────────
|
|
2
|
+
// mythos-router :: session.ts
|
|
3
|
+
// Session persistence — save/resume conversation state
|
|
4
|
+
// Single JSON file, atomic writes, versioned format
|
|
5
|
+
// ─────────────────────────────────────────────────────────────
|
|
6
|
+
import { mkdirSync, writeFileSync, readFileSync, renameSync, existsSync } from 'node:fs';
|
|
7
|
+
import { join } from 'node:path';
|
|
8
|
+
import { homedir } from 'node:os';
|
|
9
|
+
const SESSION_VERSION = 1;
|
|
10
|
+
const SESSIONS_DIR = join(homedir(), '.mythos-router', 'sessions');
|
|
11
|
+
const SESSION_FILE = join(SESSIONS_DIR, 'latest.json');
|
|
12
|
+
const SESSION_TMP = join(SESSIONS_DIR, 'latest.tmp');
|
|
13
|
+
// ── Save Session (atomic write) ──────────────────────────────
|
|
14
|
+
export function saveSession(history, budget, project) {
|
|
15
|
+
const data = {
|
|
16
|
+
version: SESSION_VERSION,
|
|
17
|
+
timestamp: new Date().toISOString(),
|
|
18
|
+
project,
|
|
19
|
+
history,
|
|
20
|
+
budget,
|
|
21
|
+
};
|
|
22
|
+
mkdirSync(SESSIONS_DIR, { recursive: true });
|
|
23
|
+
// Write to tmp first, then atomic rename
|
|
24
|
+
writeFileSync(SESSION_TMP, JSON.stringify(data, null, 2), 'utf-8');
|
|
25
|
+
renameSync(SESSION_TMP, SESSION_FILE);
|
|
26
|
+
}
|
|
27
|
+
// ── Load Session ─────────────────────────────────────────────
|
|
28
|
+
export function loadSession() {
|
|
29
|
+
if (!existsSync(SESSION_FILE))
|
|
30
|
+
return null;
|
|
31
|
+
try {
|
|
32
|
+
const raw = readFileSync(SESSION_FILE, 'utf-8');
|
|
33
|
+
const data = JSON.parse(raw);
|
|
34
|
+
// Version guard — silently ignore incompatible sessions
|
|
35
|
+
if (data.version !== SESSION_VERSION)
|
|
36
|
+
return null;
|
|
37
|
+
// Basic shape validation
|
|
38
|
+
if (!Array.isArray(data.history) || !data.budget || !data.timestamp)
|
|
39
|
+
return null;
|
|
40
|
+
return data;
|
|
41
|
+
}
|
|
42
|
+
catch {
|
|
43
|
+
return null;
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
// ── Format resume info for terminal ──────────────────────────
|
|
47
|
+
export function formatResumeInfo(session) {
|
|
48
|
+
const date = new Date(session.timestamp);
|
|
49
|
+
const timeStr = date.toLocaleTimeString([], { hour: '2-digit', minute: '2-digit' });
|
|
50
|
+
const dateStr = date.toLocaleDateString();
|
|
51
|
+
const totalTokens = session.budget.inputTokens + session.budget.outputTokens;
|
|
52
|
+
return `Resuming session from ${dateStr} ${timeStr} (${session.history.length} messages, ${totalTokens.toLocaleString()} tokens, ${session.budget.turns} turns)`;
|
|
53
|
+
}
|
|
54
|
+
//# sourceMappingURL=session.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session.js","sourceRoot":"","sources":["../src/session.ts"],"names":[],"mappings":"AAAA,gEAAgE;AAChE,+BAA+B;AAC/B,wDAAwD;AACxD,qDAAqD;AACrD,gEAAgE;AAEhE,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,YAAY,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACzF,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAGlC,MAAM,eAAe,GAAG,CAAC,CAAC;AAC1B,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,gBAAgB,EAAE,UAAU,CAAC,CAAC;AACnE,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,EAAE,aAAa,CAAC,CAAC;AACvD,MAAM,WAAW,GAAG,IAAI,CAAC,YAAY,EAAE,YAAY,CAAC,CAAC;AAerD,gEAAgE;AAChE,MAAM,UAAU,WAAW,CACzB,OAAkB,EAClB,MAAoE,EACpE,OAAe;IAEf,MAAM,IAAI,GAAgB;QACxB,OAAO,EAAE,eAAe;QACxB,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QACnC,OAAO;QACP,OAAO;QACP,MAAM;KACP,CAAC;IAEF,SAAS,CAAC,YAAY,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAE7C,yCAAyC;IACzC,aAAa,CAAC,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;IACnE,UAAU,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC;AACxC,CAAC;AAED,gEAAgE;AAChE,MAAM,UAAU,WAAW;IACzB,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC;QAAE,OAAO,IAAI,CAAC;IAE3C,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,YAAY,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;QAChD,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAE7B,wDAAwD;QACxD,IAAI,IAAI,CAAC,OAAO,KAAK,eAAe;YAAE,OAAO,IAAI,CAAC;QAElD,yBAAyB;QACzB,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,SAAS;YAAE,OAAO,IAAI,CAAC;QAEjF,OAAO,IAAmB,CAAC;IAC7B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,gEAAgE;AAChE,MAAM,UAAU,gBAAgB,CAAC,OAAoB;IACnD,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IACzC,MAAM,OAAO,GAAG,IAAI,CAAC,kBAAkB,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC;IACpF,MAAM,OAAO,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAC;IAC1C,MAAM,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC,YAAY,CAAC;IAC7E,OAAO,yBAAyB,OAAO,IAAI,OAAO,KAAK,OAAO,CAAC,OAAO,CAAC,MAAM,cAAc,WAAW,CAAC,cAAc,EAAE,YAAY,OAAO,CAAC,MAAM,CAAC,KAAK,SAAS,CAAC;AACnK,CAAC"}
|
package/package.json
CHANGED