mythos-router 1.5.3 → 1.6.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 +21 -0
- package/README.md +5 -3
- package/dist/budget.js +8 -8
- package/dist/budget.js.map +1 -1
- package/dist/cache.d.ts.map +1 -1
- package/dist/cache.js +3 -0
- package/dist/cache.js.map +1 -1
- package/dist/cli.js +7 -9
- package/dist/cli.js.map +1 -1
- package/dist/client.js +6 -6
- package/dist/client.js.map +1 -1
- package/dist/commands/chat.d.ts.map +1 -1
- package/dist/commands/chat.js +149 -14
- package/dist/commands/chat.js.map +1 -1
- package/dist/commands/stats.js +8 -8
- package/dist/commands/stats.js.map +1 -1
- package/dist/commands/verify.d.ts.map +1 -1
- package/dist/commands/verify.js +73 -20
- package/dist/commands/verify.js.map +1 -1
- package/dist/diff.d.ts +3 -1
- package/dist/diff.d.ts.map +1 -1
- package/dist/diff.js +59 -7
- package/dist/diff.js.map +1 -1
- package/dist/memory.d.ts +1 -1
- package/dist/memory.d.ts.map +1 -1
- package/dist/memory.js +7 -7
- package/dist/memory.js.map +1 -1
- package/dist/swd-cli.d.ts.map +1 -1
- package/dist/swd-cli.js +7 -6
- package/dist/swd-cli.js.map +1 -1
- package/dist/swd.d.ts.map +1 -1
- package/dist/swd.js +12 -2
- package/dist/swd.js.map +1 -1
- package/dist/utils.d.ts +60 -0
- package/dist/utils.d.ts.map +1 -1
- package/dist/utils.js +144 -10
- package/dist/utils.js.map +1 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -7,6 +7,25 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
7
7
|
|
|
8
8
|
---
|
|
9
9
|
|
|
10
|
+
## [1.6.0] — 2026-05-03
|
|
11
|
+
|
|
12
|
+
### Added
|
|
13
|
+
- **Cryptographic Drift Detection** — `mythos verify` now supports SHA-256 hash comparison for SWD-managed files. Hidden `mythos:file` metadata blocks in `MEMORY.md` store file state, allowing the verifier to detect manual edits, missing files, and unexpected content changes.
|
|
14
|
+
- **CLI Smoke Tests** — Added `test/cli.test.ts` to validate the build lifecycle, built CLI execution, and `verify --dry-run` behavior in isolated temporary directories.
|
|
15
|
+
- **Defensive Parser Limits** — Added a 250,000-character SWD block limit and stricter rejection of unsafe paths, including absolute paths, null bytes, traversal attempts, and oversized path values.
|
|
16
|
+
|
|
17
|
+
### Changed
|
|
18
|
+
- **Terminal Visual System** — Added semantic `theme` and `icon` constants, improved mode badges, updated session/help/exit cards, and standardized success/warning/error/info colors across CLI output.
|
|
19
|
+
- **Signal Handling** — Refined shutdown behavior so graceful exits return code `0`, while uncaught exceptions finalize safely and return code `1`.
|
|
20
|
+
- **Mutation-Safe Cache Behavior** — Updated `ResponseCache` to bypass responses containing `[FILE_ACTION:]`, preventing file-mutating responses from being cached or replayed.
|
|
21
|
+
- **Explicit `/clear` Confirmation** — Replaced interactive confirmation with `/clear confirm` to avoid nested readline conflicts in the chat REPL.
|
|
22
|
+
|
|
23
|
+
### Fixed
|
|
24
|
+
- **SWD Parser Resilience** — Fixed handling of truncated or malformed `[FILE_ACTION:]` blocks to prevent parser stalls on incomplete model output.
|
|
25
|
+
- **Verify Path Normalization** — Improved path normalization in `verify` to reduce false-positive drift results across relative path formats.
|
|
26
|
+
|
|
27
|
+
---
|
|
28
|
+
|
|
10
29
|
## [1.5.3] — 2026-05-01
|
|
11
30
|
|
|
12
31
|
### Fixed
|
|
@@ -220,6 +239,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
220
239
|
- **Dream/Verify Commands** — memory compression and drift detection.
|
|
221
240
|
|
|
222
241
|
|
|
242
|
+
[1.6.0]: https://github.com/thewaltero/mythos-router/releases/tag/v1.6.0
|
|
243
|
+
[1.5.3]: https://github.com/thewaltero/mythos-router/releases/tag/v1.5.3
|
|
223
244
|
[1.2.1]: https://github.com/thewaltero/mythos-router/releases/tag/v1.2.1
|
|
224
245
|
[1.2.0]: https://github.com/thewaltero/mythos-router/releases/tag/v1.2.0
|
|
225
246
|
[1.1.9]: https://github.com/thewaltero/mythos-router/releases/tag/v1.1.9
|
package/README.md
CHANGED
|
@@ -51,16 +51,18 @@ Zero slop. Zero hallucinated state. Full adaptive thinking.
|
|
|
51
51
|
|
|
52
52
|
## Features
|
|
53
53
|
|
|
54
|
-
|
|
|
54
|
+
| Feature | Description |
|
|
55
|
+
|---------|-------------|
|
|
56
|
+
| **mythos init** | Single-command project onboarding with environment validation and scaffolding |
|
|
55
57
|
| **Multi-Provider Fallback** | Auto-routes between Anthropic, DeepSeek, and OpenAI with circuit breakers |
|
|
56
58
|
| **Skills Protocol** | Inject modular expert plugins via YAML frontmatter (`-s mcp`, `-s react`) |
|
|
57
|
-
| **Deterministic Caching** |
|
|
59
|
+
| **Deterministic Caching** | SQLite-backed caching for reasoning (SDK only) *(Node 22+)* |
|
|
58
60
|
| **Adaptive Thinking** | Opus 4.7 with configurable effort levels (high/medium/low) |
|
|
59
61
|
| **Strict Write Discipline** | Pre/post filesystem snapshots verify every model claim |
|
|
60
62
|
| **Self-Healing Memory** | Authority-based logging with a rebuildable SQLite FTS5 search index *(Node 22+)* |
|
|
61
63
|
| **Auto-Healing TDD** | Pass `--test-cmd` for bounded, error-driven autonomous repair loops |
|
|
62
64
|
| **Correction Turns** | Model gets 2 retries to match filesystem reality, then yields |
|
|
63
|
-
| **Integrity Gate** | `verify`
|
|
65
|
+
| **Integrity Gate** | `verify` command ensures referenced memory files still exist |
|
|
64
66
|
| **Token Limiter** | Budget cap with graceful save — progress saved to MEMORY.md, never lose work |
|
|
65
67
|
| **Session Resume** | Pick up exactly where you left off after a crash or exit (`--resume`) |
|
|
66
68
|
| **Dry-Run Mode** | Preview every file operation before it executes — full transparency |
|
package/dist/budget.js
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
// Session Budget Limiter — Financial safety switch
|
|
4
4
|
// ─────────────────────────────────────────────────────────────
|
|
5
5
|
import { DEFAULT_MAX_TOKENS_PER_SESSION, DEFAULT_MAX_TURNS, BUDGET_WARN_PERCENT, COST_PER_INPUT_TOKEN, COST_PER_OUTPUT_TOKEN, } from './config.js';
|
|
6
|
-
import { c, progressBar } from './utils.js';
|
|
6
|
+
import { c, progressBar, theme } from './utils.js';
|
|
7
7
|
// ── Session Budget Class ─────────────────────────────────────
|
|
8
8
|
export class SessionBudget {
|
|
9
9
|
config;
|
|
@@ -95,22 +95,22 @@ export class SessionBudget {
|
|
|
95
95
|
// ── Format a visual budget bar for the terminal ──────────
|
|
96
96
|
formatBar(width = 20) {
|
|
97
97
|
if (!this.enabled) {
|
|
98
|
-
return `${
|
|
98
|
+
return `${theme.muted}Budget: ${theme.warning}disabled${theme.muted} (expert mode)${c.reset}`;
|
|
99
99
|
}
|
|
100
100
|
const snap = this.status();
|
|
101
101
|
const tokPct = Math.min((snap.totalTokens / snap.maxTokens) * 100, 100);
|
|
102
102
|
const turnPct = Math.min((snap.turns / snap.maxTurns) * 100, 100);
|
|
103
103
|
const tokBar = progressBar(tokPct, width);
|
|
104
104
|
const turnBar = progressBar(turnPct, Math.floor(width / 2));
|
|
105
|
-
const tokColor = tokPct >= 90 ?
|
|
106
|
-
const turnColor = turnPct >= 90 ?
|
|
105
|
+
const tokColor = tokPct >= 90 ? theme.error : tokPct >= this.config.warnAtPercent ? theme.warning : theme.success;
|
|
106
|
+
const turnColor = turnPct >= 90 ? theme.error : turnPct >= this.config.warnAtPercent ? theme.warning : theme.success;
|
|
107
107
|
const elapsed = formatElapsed(snap.elapsedMs);
|
|
108
|
-
return (`${
|
|
108
|
+
return (`${theme.muted}Budget:${c.reset} ` +
|
|
109
109
|
`${tokColor}${tokBar}${c.reset} ` +
|
|
110
|
-
`${tokColor}${snap.totalTokens.toLocaleString()}${
|
|
110
|
+
`${tokColor}${snap.totalTokens.toLocaleString()}${theme.muted}/${snap.maxTokens.toLocaleString()} tokens${c.reset} · ` +
|
|
111
111
|
`${turnColor}${turnBar}${c.reset} ` +
|
|
112
|
-
`${turnColor}${snap.turns}${
|
|
113
|
-
`${
|
|
112
|
+
`${turnColor}${snap.turns}${theme.muted}/${snap.maxTurns} turns${c.reset} · ` +
|
|
113
|
+
`${theme.muted}~$${snap.estimatedCostUSD.toFixed(4)} · ${elapsed}${c.reset}`);
|
|
114
114
|
}
|
|
115
115
|
// ── Format warning message if at threshold ───────────────
|
|
116
116
|
formatWarning() {
|
package/dist/budget.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"budget.js","sourceRoot":"","sources":["../src/budget.ts"],"names":[],"mappings":"AAAA,gEAAgE;AAChE,8BAA8B;AAC9B,oDAAoD;AACpD,gEAAgE;AAEhE,OAAO,EACL,8BAA8B,EAC9B,iBAAiB,EACjB,mBAAmB,EACnB,oBAAoB,EACpB,qBAAqB,GACtB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,CAAC,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"budget.js","sourceRoot":"","sources":["../src/budget.ts"],"names":[],"mappings":"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"}
|
package/dist/cache.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cache.d.ts","sourceRoot":"","sources":["../src/cache.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AA6B5D,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACpD;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,aAAa,GAAG,MAAM,CAG7D;AAGD,qBAAa,aAAa;IACxB,OAAO,CAAC,EAAE,CAAiE;IAC3E,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,OAAO,CAAU;gBAEb,KAAK,GAAE,MAAuB,EAAE,OAAO,GAAE,OAAc;IAMnE,OAAO,CAAC,QAAQ;IA+BhB,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,eAAe,GAAG,IAAI;IA0BxC,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,eAAe,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;
|
|
1
|
+
{"version":3,"file":"cache.d.ts","sourceRoot":"","sources":["../src/cache.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AA6B5D,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACpD;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,aAAa,GAAG,MAAM,CAG7D;AAGD,qBAAa,aAAa;IACxB,OAAO,CAAC,EAAE,CAAiE;IAC3E,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,OAAO,CAAU;gBAEb,KAAK,GAAE,MAAuB,EAAE,OAAO,GAAE,OAAc;IAMnE,OAAO,CAAC,QAAQ;IA+BhB,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,eAAe,GAAG,IAAI;IA0BxC,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,eAAe,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAsBhE,YAAY,IAAI,MAAM;IActB,KAAK,IAAI,IAAI;IAYb,KAAK,IAAI;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE;IAoBjE,KAAK,IAAI,IAAI;CAMd"}
|
package/dist/cache.js
CHANGED
|
@@ -104,6 +104,9 @@ export class ResponseCache {
|
|
|
104
104
|
// Tool Invocation Bypass — never cache responses with tool calls
|
|
105
105
|
if (response.toolCalls.length > 0)
|
|
106
106
|
return;
|
|
107
|
+
// SWD Mutation Bypass — never cache responses attempting to write files
|
|
108
|
+
if (response.text.includes('[FILE_ACTION:'))
|
|
109
|
+
return;
|
|
107
110
|
try {
|
|
108
111
|
const db = this.ensureDb();
|
|
109
112
|
const serialized = JSON.stringify(response);
|
package/dist/cache.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cache.js","sourceRoot":"","sources":["../src/cache.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"cache.js","sourceRoot":"","sources":["../src/cache.ts"],"names":[],"mappings":"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"}
|
package/dist/cli.js
CHANGED
|
@@ -30,17 +30,15 @@ const __dirname = dirname(fileURLToPath(import.meta.url));
|
|
|
30
30
|
const pkg = JSON.parse(readFileSync(resolve(__dirname, '..', 'package.json'), 'utf-8'));
|
|
31
31
|
const program = new Command();
|
|
32
32
|
// ── Restore cursor on any exit (spinner crash safety) ────────
|
|
33
|
+
// IMPORTANT: Only use 'exit' and 'uncaughtExceptionMonitor' here.
|
|
34
|
+
// - 'exit' fires on every process termination, guaranteed cursor restore.
|
|
35
|
+
// - Adding a 'SIGINT' listener suppresses Node's default Ctrl+C exit,
|
|
36
|
+
// which breaks non-chat commands (e.g. providers --watch).
|
|
37
|
+
// - 'uncaughtExceptionMonitor' observes crashes without preempting
|
|
38
|
+
// command-level shutdown (chat.ts has its own finalize/save logic).
|
|
33
39
|
const restoreCursor = () => process.stdout.write('\x1b[?25h');
|
|
34
40
|
process.on('exit', restoreCursor);
|
|
35
|
-
|
|
36
|
-
// own SIGINT handler that runs finalize/session-save before exiting.
|
|
37
|
-
// Calling exit() here would preempt that graceful shutdown.
|
|
38
|
-
process.on('SIGINT', restoreCursor);
|
|
39
|
-
process.on('uncaughtException', (err) => {
|
|
40
|
-
restoreCursor();
|
|
41
|
-
console.error(err);
|
|
42
|
-
process.exit(1);
|
|
43
|
-
});
|
|
41
|
+
process.on('uncaughtExceptionMonitor', restoreCursor);
|
|
44
42
|
program
|
|
45
43
|
.name('mythos')
|
|
46
44
|
.description('Capybara-tier CLI router — Claude Opus 4.7 with Adaptive Thinking, ' +
|
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;AAEjD,+DAA+D;AAC/D,+DAA+D;AAC/D,MAAM,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AAChD,uDAAuD;AACvD,OAAO,CAAC,IAAI,GAAG,UAAU,KAAa,EAAE,GAAG,IAAe;IACxD,IAAI,KAAK,KAAK,SAAS,IAAK,IAAI,CAAC,CAAC,CAAuB,EAAE,IAAI,KAAK,qBAAqB,EAAE,CAAC;QAC1F,OAAO,KAAK,CAAC;IACf,CAAC;IACD,OAAO,YAAY,CAAC,KAAK,EAAE,GAAG,IAAI,CAAC,CAAC;AACtC,CAAC,CAAC;AACF,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,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EACL,8BAA8B,EAC9B,iBAAiB,GAClB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAEpC,gEAAgE;AAChE,MAAM,SAAS,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAC1D,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI,EAAE,cAAc,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC;AAExF,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAE9B,gEAAgE;AAChE,MAAM,aAAa,GAAG,GAAG,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;AAC9D,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;AAClC,
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
package/dist/client.js
CHANGED
|
@@ -11,7 +11,7 @@ import { AnthropicProvider } from './providers/anthropic.js';
|
|
|
11
11
|
import { OpenAIProvider } from './providers/openai.js';
|
|
12
12
|
import { ProviderOrchestrator } from './providers/orchestrator.js';
|
|
13
13
|
import { CAPYBARA_SYSTEM_PROMPT, validateApiKey, getOpenAIKey, getDeepSeekKey, MAX_OUTPUT_TOKENS_STREAM, MAX_OUTPUT_TOKENS_SEND, } from './config.js';
|
|
14
|
-
import { c } from './utils.js';
|
|
14
|
+
import { c, theme } from './utils.js';
|
|
15
15
|
// ── Singleton Orchestrator ───────────────────────────────────
|
|
16
16
|
let _orchestrator = null;
|
|
17
17
|
export function getOrchestrator() {
|
|
@@ -94,14 +94,14 @@ export async function sendMessage(messages, effort = 'low', systemOverride, maxT
|
|
|
94
94
|
export function formatTokenUsage(resp) {
|
|
95
95
|
const total = resp.inputTokens + resp.outputTokens;
|
|
96
96
|
const providerInfo = resp._orchestration
|
|
97
|
-
? ` ${
|
|
97
|
+
? ` ${theme.muted}via ${theme.info}${resp._orchestration.providerId}${theme.muted}/${resp._orchestration.modelId}${c.reset}`
|
|
98
98
|
: '';
|
|
99
99
|
const fallbackInfo = resp._orchestration?.fallbackTriggered
|
|
100
|
-
? ` ${
|
|
100
|
+
? ` ${theme.warning}(fallback)${c.reset}`
|
|
101
101
|
: '';
|
|
102
|
-
return (`${
|
|
103
|
-
`${
|
|
104
|
-
`${
|
|
102
|
+
return (`${theme.muted}Tokens: ${theme.info}${resp.inputTokens.toLocaleString()}${theme.muted} in · ` +
|
|
103
|
+
`${theme.info}${resp.outputTokens.toLocaleString()}${theme.muted} out · ` +
|
|
104
|
+
`${theme.warning}${total.toLocaleString()}${theme.muted} total${c.reset}` +
|
|
105
105
|
providerInfo + fallbackInfo);
|
|
106
106
|
}
|
|
107
107
|
//# sourceMappingURL=client.js.map
|
package/dist/client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,gEAAgE;AAChE,8BAA8B;AAC9B,6DAA6D;AAC7D,EAAE;AACF,iEAAiE;AACjE,gEAAgE;AAChE,gEAAgE;AAChE,0DAA0D;AAC1D,gEAAgE;AAEhE,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AAEnE,OAAO,EACL,sBAAsB,EAEtB,cAAc,EACd,YAAY,EACZ,cAAc,EACd,wBAAwB,EACxB,sBAAsB,GAEvB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,CAAC,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
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;
|
|
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;AAkjBD,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,CAiLrE"}
|
package/dist/commands/chat.js
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import * as readline from 'node:readline';
|
|
2
2
|
import * as path from 'node:path';
|
|
3
3
|
import { formatTokenUsage, getOrchestrator } from '../client.js';
|
|
4
|
-
import { SWDEngine, parseActions, summarizeActions } from '../swd.js';
|
|
4
|
+
import { SWDEngine, parseActions, summarizeActions, snapshotFile, resolveSafePath } from '../swd.js';
|
|
5
5
|
import { printSWDResults, dryRunSWD, printVerboseParse } from '../swd-cli.js';
|
|
6
6
|
import { saveSessionMetric } from '../metrics.js';
|
|
7
|
-
import { appendEntry, appendMetadataBlock, needsDream, getMemoryContext, printMemoryStatus } from '../memory.js';
|
|
7
|
+
import { appendEntry, appendMetadataBlock, needsDream, getMemoryContext, printMemoryStatus, getEntryCount } from '../memory.js';
|
|
8
8
|
import { MAX_CORRECTION_RETRIES, MODELS, CAPYBARA_SYSTEM_PROMPT, validateApiKey } from '../config.js';
|
|
9
|
-
import { c, Spinner, BANNER, hr,
|
|
9
|
+
import { c, Spinner, BANNER, hr, error as logError, warn as logWarn, success as logSuccess, runTestCommand, renderSessionCard, renderBadgeRow, renderHelpScreen, renderExitSummary, theme } from '../utils.js';
|
|
10
10
|
import { SessionBudget } from '../budget.js';
|
|
11
11
|
import { buildSkillPrompt } from '../skills.js';
|
|
12
12
|
import { isGitRepo, hasUncommittedChanges, getCurrentBranch, commitChanges, getLatestHash, createAndCheckoutBranch } from '../git.js';
|
|
@@ -251,6 +251,33 @@ class ChatSession {
|
|
|
251
251
|
}
|
|
252
252
|
const status = finalResult.success ? '✅ verified' : `⚠️ ${finalResult.results.filter(r => r.status !== 'verified').length} issues`;
|
|
253
253
|
appendEntry(summarizeActions(responseText, userInput), status, false);
|
|
254
|
+
// Append file metadata blocks for drift detection
|
|
255
|
+
if (!this.options.dryRun) {
|
|
256
|
+
for (const res of finalResult.results) {
|
|
257
|
+
if (res.status === 'verified' || res.status === 'noop') {
|
|
258
|
+
const op = res.action.operation;
|
|
259
|
+
if (op === 'READ')
|
|
260
|
+
continue;
|
|
261
|
+
try {
|
|
262
|
+
const absPath = resolveSafePath(res.action.path);
|
|
263
|
+
const snap = snapshotFile(absPath);
|
|
264
|
+
const meta = {
|
|
265
|
+
op,
|
|
266
|
+
path: res.action.path,
|
|
267
|
+
exists: snap.exists ? 'true' : 'false'
|
|
268
|
+
};
|
|
269
|
+
if (snap.exists) {
|
|
270
|
+
meta.sha256 = snap.hash;
|
|
271
|
+
meta.size = snap.size.toString();
|
|
272
|
+
}
|
|
273
|
+
appendMetadataBlock(meta, 'file', false);
|
|
274
|
+
}
|
|
275
|
+
catch (err) {
|
|
276
|
+
// Ignore path resolution errors for deleted files or weird paths
|
|
277
|
+
}
|
|
278
|
+
}
|
|
279
|
+
}
|
|
280
|
+
}
|
|
254
281
|
}
|
|
255
282
|
async runCorrectionLoop(lastResult) {
|
|
256
283
|
for (let attempt = 1; attempt <= MAX_CORRECTION_RETRIES; attempt++) {
|
|
@@ -420,7 +447,7 @@ class ChatSession {
|
|
|
420
447
|
}
|
|
421
448
|
}
|
|
422
449
|
const metadata = { commit: commitHash, branch: sandboxBranch || (repo ? getCurrentBranch() : 'none'), timestamp_end: new Date().toISOString() };
|
|
423
|
-
appendMetadataBlock(metadata, this.options.dryRun || false);
|
|
450
|
+
appendMetadataBlock(metadata, 'meta', this.options.dryRun || false);
|
|
424
451
|
const snap = this.budget.status();
|
|
425
452
|
if (snap.totalTokens > 0) {
|
|
426
453
|
saveSessionMetric({
|
|
@@ -470,9 +497,6 @@ export async function chatCommand(options) {
|
|
|
470
497
|
const ui = new TerminalUI(new Spinner());
|
|
471
498
|
const session = new ChatSession(options, ui);
|
|
472
499
|
ui.log(BANNER);
|
|
473
|
-
ui.log(heading(`CHAT SESSION :: ${MODELS.high.toUpperCase()}`));
|
|
474
|
-
if (options.dryRun)
|
|
475
|
-
ui.log(` ${c.bgYellow}${c.black}${c.bold} DRY-RUN MODE ACTIVE ${c.reset}\n`);
|
|
476
500
|
// ── Resume previous session if requested ────────────────
|
|
477
501
|
if (options.resume) {
|
|
478
502
|
const saved = loadSession();
|
|
@@ -495,15 +519,45 @@ export async function chatCommand(options) {
|
|
|
495
519
|
ui.error(err.message);
|
|
496
520
|
process.exit(1);
|
|
497
521
|
}
|
|
498
|
-
|
|
522
|
+
// ── Session Card ────────────────────────────────────────
|
|
523
|
+
const repo = isGitRepo();
|
|
524
|
+
const snap = session.budget.status();
|
|
525
|
+
const cardConfig = {
|
|
526
|
+
provider: session.forceProvider ?? 'auto',
|
|
527
|
+
model: MODELS[options.effort ?? 'high'] || MODELS.high,
|
|
528
|
+
dryRun: options.dryRun === true,
|
|
529
|
+
budgetEnabled: options.budget !== false,
|
|
530
|
+
branch: sandboxBranch || (repo ? getCurrentBranch() : 'none'),
|
|
531
|
+
memoryEntries: getEntryCount(),
|
|
532
|
+
memoryActive: getEntryCount() > 0,
|
|
533
|
+
tokensUsed: snap.totalTokens,
|
|
534
|
+
maxTokens: snap.maxTokens,
|
|
535
|
+
turnsUsed: snap.turns,
|
|
536
|
+
maxTurns: snap.maxTurns,
|
|
537
|
+
};
|
|
538
|
+
ui.log(renderSessionCard(cardConfig));
|
|
539
|
+
// ── Badge Row ──────────────────────────────────────────
|
|
540
|
+
const badges = renderBadgeRow({
|
|
541
|
+
dryRun: options.dryRun,
|
|
542
|
+
verbose: options.verbose,
|
|
543
|
+
branch: sandboxBranch || undefined,
|
|
544
|
+
resume: options.resume,
|
|
545
|
+
noBudget: options.budget === false,
|
|
546
|
+
});
|
|
547
|
+
if (badges)
|
|
548
|
+
ui.log(badges);
|
|
549
|
+
ui.log(`${theme.muted} Type /help for commands. Press Ctrl+C to save and exit.${c.reset}`);
|
|
499
550
|
ui.divider();
|
|
500
551
|
const rl = readline.createInterface({
|
|
501
552
|
input: process.stdin,
|
|
502
553
|
output: process.stdout,
|
|
503
554
|
prompt: `${c.magenta}${c.bold}mythos > ${c.reset}`,
|
|
504
555
|
});
|
|
556
|
+
// Track starting memory count for exit summary delta
|
|
557
|
+
const startMemoryEntries = getEntryCount();
|
|
558
|
+
const startTime = Date.now();
|
|
505
559
|
let finalized = false;
|
|
506
|
-
const safeExit = async () => {
|
|
560
|
+
const safeExit = async (code = 0) => {
|
|
507
561
|
if (finalized)
|
|
508
562
|
return;
|
|
509
563
|
finalized = true;
|
|
@@ -513,13 +567,28 @@ export async function chatCommand(options) {
|
|
|
513
567
|
catch (err) {
|
|
514
568
|
logWarn(`Finalize failed: ${err.message}`);
|
|
515
569
|
}
|
|
516
|
-
|
|
570
|
+
// ── Exit Summary ──────────────────────────────────────
|
|
571
|
+
const snap = session.budget.status();
|
|
572
|
+
const exitConfig = {
|
|
573
|
+
duration: formatElapsedMs(Date.now() - startTime),
|
|
574
|
+
turns: snap.turns,
|
|
575
|
+
maxTurns: snap.maxTurns,
|
|
576
|
+
tokens: snap.totalTokens,
|
|
577
|
+
maxTokens: snap.maxTokens,
|
|
578
|
+
cost: snap.estimatedCostUSD,
|
|
579
|
+
memoryEntriesAdded: Math.max(0, getEntryCount() - startMemoryEntries),
|
|
580
|
+
saved: !options.dryRun && session.history.length > 0,
|
|
581
|
+
};
|
|
582
|
+
if (snap.totalTokens > 0) {
|
|
583
|
+
ui.log('\n' + renderExitSummary(exitConfig));
|
|
584
|
+
}
|
|
585
|
+
process.exit(code);
|
|
517
586
|
};
|
|
518
|
-
process.on('SIGINT', () => safeExit());
|
|
519
|
-
process.on('SIGTERM', () => safeExit());
|
|
587
|
+
process.on('SIGINT', () => safeExit(0));
|
|
588
|
+
process.on('SIGTERM', () => safeExit(0));
|
|
520
589
|
process.on('uncaughtException', async (err) => {
|
|
521
590
|
logError(`Unexpected error: ${err.stack || err.message}`);
|
|
522
|
-
await safeExit();
|
|
591
|
+
await safeExit(1);
|
|
523
592
|
});
|
|
524
593
|
rl.prompt();
|
|
525
594
|
rl.on('line', async (line) => {
|
|
@@ -528,14 +597,80 @@ export async function chatCommand(options) {
|
|
|
528
597
|
rl.prompt();
|
|
529
598
|
return;
|
|
530
599
|
}
|
|
531
|
-
|
|
600
|
+
const cmd = input.toLowerCase();
|
|
601
|
+
// ── Exit commands ───────────────────────────────────
|
|
602
|
+
if (['exit', 'quit', '/q'].includes(cmd)) {
|
|
532
603
|
rl.close();
|
|
533
604
|
return;
|
|
534
605
|
}
|
|
606
|
+
// ── Slash commands ──────────────────────────────────
|
|
607
|
+
if (cmd === '/help') {
|
|
608
|
+
ui.log('\n' + renderHelpScreen());
|
|
609
|
+
rl.prompt();
|
|
610
|
+
return;
|
|
611
|
+
}
|
|
612
|
+
if (cmd === '/status') {
|
|
613
|
+
const currentRepo = isGitRepo();
|
|
614
|
+
const currentSnap = session.budget.status();
|
|
615
|
+
const statusCard = {
|
|
616
|
+
provider: session.forceProvider ?? 'auto',
|
|
617
|
+
model: MODELS[options.effort ?? 'high'] || MODELS.high,
|
|
618
|
+
dryRun: options.dryRun === true,
|
|
619
|
+
budgetEnabled: options.budget !== false,
|
|
620
|
+
branch: sandboxBranch || (currentRepo ? getCurrentBranch() : 'none'),
|
|
621
|
+
memoryEntries: getEntryCount(),
|
|
622
|
+
memoryActive: getEntryCount() > 0,
|
|
623
|
+
tokensUsed: currentSnap.totalTokens,
|
|
624
|
+
maxTokens: currentSnap.maxTokens,
|
|
625
|
+
turnsUsed: currentSnap.turns,
|
|
626
|
+
maxTurns: currentSnap.maxTurns,
|
|
627
|
+
};
|
|
628
|
+
ui.log('\n' + renderSessionCard(statusCard));
|
|
629
|
+
rl.prompt();
|
|
630
|
+
return;
|
|
631
|
+
}
|
|
632
|
+
if (cmd === '/budget') {
|
|
633
|
+
ui.log('\n' + session.budget.formatBar());
|
|
634
|
+
const warning = session.budget.formatWarning();
|
|
635
|
+
if (warning)
|
|
636
|
+
ui.warn(warning);
|
|
637
|
+
rl.prompt();
|
|
638
|
+
return;
|
|
639
|
+
}
|
|
640
|
+
if (cmd === '/memory') {
|
|
641
|
+
printMemoryStatus();
|
|
642
|
+
rl.prompt();
|
|
643
|
+
return;
|
|
644
|
+
}
|
|
645
|
+
if (cmd.startsWith('/clear')) {
|
|
646
|
+
if (cmd === '/clear confirm') {
|
|
647
|
+
const prevLen = session.history.length;
|
|
648
|
+
session.history = [];
|
|
649
|
+
ui.success(`Cleared ${prevLen} messages from conversation history.`);
|
|
650
|
+
}
|
|
651
|
+
else {
|
|
652
|
+
ui.warn(`To clear conversation history, type: ${c.cyan}/clear confirm${c.reset}`);
|
|
653
|
+
}
|
|
654
|
+
rl.prompt();
|
|
655
|
+
return;
|
|
656
|
+
}
|
|
535
657
|
await session.processInput(input);
|
|
536
658
|
ui.divider();
|
|
537
659
|
rl.prompt();
|
|
538
660
|
});
|
|
539
661
|
rl.on('close', safeExit);
|
|
540
662
|
}
|
|
663
|
+
// ── Local Helpers ────────────────────────────────────────────
|
|
664
|
+
function formatElapsedMs(ms) {
|
|
665
|
+
const seconds = Math.floor(ms / 1000);
|
|
666
|
+
if (seconds < 60)
|
|
667
|
+
return `${seconds}s`;
|
|
668
|
+
const minutes = Math.floor(seconds / 60);
|
|
669
|
+
const secs = seconds % 60;
|
|
670
|
+
if (minutes < 60)
|
|
671
|
+
return `${minutes}m ${secs}s`;
|
|
672
|
+
const hours = Math.floor(minutes / 60);
|
|
673
|
+
const mins = minutes % 60;
|
|
674
|
+
return `${hours}h ${mins}m`;
|
|
675
|
+
}
|
|
541
676
|
//# sourceMappingURL=chat.js.map
|