mythos-router 1.5.2 → 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 +36 -7
- package/README.md +22 -24
- package/dist/budget.d.ts +1 -0
- package/dist/budget.d.ts.map +1 -1
- package/dist/budget.js +14 -8
- package/dist/budget.js.map +1 -1
- package/dist/cache.d.ts.map +1 -1
- package/dist/cache.js +5 -2
- package/dist/cache.js.map +1 -1
- package/dist/cli.js +8 -7
- 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 +194 -25
- package/dist/commands/chat.js.map +1 -1
- package/dist/commands/dream.js +1 -1
- package/dist/commands/dream.js.map +1 -1
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +4 -3
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/providers.d.ts.map +1 -1
- package/dist/commands/providers.js +10 -1
- package/dist/commands/providers.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 +78 -28
- package/dist/commands/verify.js.map +1 -1
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +4 -4
- package/dist/config.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/git.d.ts +2 -1
- package/dist/git.d.ts.map +1 -1
- package/dist/git.js +36 -9
- package/dist/git.js.map +1 -1
- package/dist/memory.d.ts +4 -2
- package/dist/memory.d.ts.map +1 -1
- package/dist/memory.js +27 -9
- package/dist/memory.js.map +1 -1
- package/dist/providers/anthropic.d.ts.map +1 -1
- package/dist/providers/anthropic.js +4 -2
- package/dist/providers/anthropic.js.map +1 -1
- package/dist/providers/orchestrator.d.ts.map +1 -1
- package/dist/providers/orchestrator.js +41 -7
- package/dist/providers/orchestrator.js.map +1 -1
- package/dist/providers/pricing.d.ts.map +1 -1
- package/dist/providers/pricing.js +4 -3
- package/dist/providers/pricing.js.map +1 -1
- package/dist/providers/telemetry.d.ts.map +1 -1
- package/dist/providers/telemetry.js +12 -4
- package/dist/providers/telemetry.js.map +1 -1
- package/dist/providers/types.d.ts +4 -0
- package/dist/providers/types.d.ts.map +1 -1
- package/dist/skills.d.ts +2 -0
- package/dist/skills.d.ts.map +1 -1
- package/dist/skills.js +4 -0
- package/dist/skills.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 +16 -3
- 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,10 +7,37 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
7
7
|
|
|
8
8
|
---
|
|
9
9
|
|
|
10
|
-
## [1.
|
|
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
|
+
|
|
29
|
+
## [1.5.3] — 2026-05-01
|
|
11
30
|
|
|
12
31
|
### Fixed
|
|
13
|
-
|
|
32
|
+
|
|
33
|
+
- **Graceful Shutdown** — Removed competing `process.exit(0)` calls from `cli.ts` and `telemetry.ts` SIGINT handlers. Chat's `safeExit()` now fully owns the exit lifecycle, ensuring session save, metrics, and finalization always complete on Ctrl+C.
|
|
34
|
+
- **SWD Content Preservation** — Replaced `.trim()` with precise boundary-newline removal in `parseActions()` so file content whitespace (leading spaces, trailing newlines, blank lines) is preserved exactly.
|
|
35
|
+
- **Verify False Positives** — Fixed regex in `extractMentionedPaths()` that was including `chat:` entries and trailing semicolons as file paths, causing phantom "missing file" reports.
|
|
36
|
+
- **Session Resume Turn Count** — Added `SessionBudget.restore()` so resumed sessions correctly hydrate token and turn counts instead of resetting to 1.
|
|
37
|
+
- **Retry Metrics Double-Count** — Removed duplicate `recordFailure()` call from `retryWithBackoff()` that was inflating provider failure rates.
|
|
38
|
+
|
|
39
|
+
### Security
|
|
40
|
+
- **Shell Safety** — `git.ts` uses `execFileSync` with argument arrays instead of string interpolation.
|
|
14
41
|
|
|
15
42
|
---
|
|
16
43
|
|
|
@@ -67,7 +94,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
67
94
|
- **Multi-Provider Orchestration Engine** — Decoupled the core application from the Anthropic SDK. The system now supports fallback routing, adaptive watchdogs, circuit breakers, and EMA-based performance scoring across multiple providers.
|
|
68
95
|
- **OpenAI & DeepSeek Support** — Added a native, zero-dependency `fetch`-based provider (`OpenAIProvider`) to seamlessly support OpenAI and DeepSeek endpoints (including streaming reasoning content for `o1` and `DeepSeek-R1`).
|
|
69
96
|
- **Skills Protocol** — Modular expert plugins via zero-dependency YAML frontmatter parsing. Skills (`-s <skill>`) can inject customized instructions, modify budget multipliers, and enforce deterministic provider selection.
|
|
70
|
-
- **Deterministic Response Caching** — SQLite-backed response caching for pure-reasoning requests
|
|
97
|
+
- **Deterministic Response Caching** — SDK utility for SQLite-backed response caching for pure-reasoning requests. Bypass rule strictly ensures file-mutating responses are never cached.
|
|
71
98
|
- **Centralized Pricing Registry** — Unified token cost calculator across different providers, feeding exact financial data into the budget metrics.
|
|
72
99
|
- **Auto-Healing TDD Loop** — Bounded, error-driven autonomy. Passing `--test-cmd` will automatically execute tests after a successful SWD mutation. If tests fail, the CLI intercepts `stderr`, truncates it, identifies TS/Runtime issues, and feeds it back to Claude for a self-healing iteration.
|
|
73
100
|
- **TDD Anti-Thrashing Guards** — The orchestrator will automatically abort the healing loop if Claude attempts the exact same fix or if output remains identically broken, preventing runaway API costs.
|
|
@@ -175,7 +202,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
175
202
|
## [1.1.2] — 2026-04-17
|
|
176
203
|
|
|
177
204
|
### Added
|
|
178
|
-
- **Multi-Model Orchestration** — Dynamic routing engine delegating tasks by effort (Opus 4.7 for Thinking, Sonnet
|
|
205
|
+
- **Multi-Model Orchestration** — Dynamic routing engine delegating tasks by effort (Opus 4.7 for Thinking, Sonnet 4.6 for Writing, Haiku 4.5 for Verifying).
|
|
179
206
|
- **Dynamic CLI Badging** — Terminal now explicitly displays the exact model assigned to the current session.
|
|
180
207
|
- **Protocol Tokenomics** — Added the official `TOKENOMICS.md`, formalizing the $MYTHOS Reasoning Tier Matrix.
|
|
181
208
|
|
|
@@ -184,7 +211,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
184
211
|
## [1.1.1] — 2026-04-12
|
|
185
212
|
|
|
186
213
|
### Fixed
|
|
187
|
-
- **
|
|
214
|
+
- **File Existence Accuracy** — Filesystem scanner recursively checks file existence for basic drift detection.
|
|
188
215
|
- **True Dry-Run** — Fixed an issue where `MEMORY.md` was being created on disk even with the `--dry-run` flag.
|
|
189
216
|
- **Memory Example** — Enriched the default `MEMORY.md` to reflect real sessions with file modifications.
|
|
190
217
|
- **Codebase Polish** — Removed unused imports and obsolete Git-status checks.
|
|
@@ -194,10 +221,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
194
221
|
## [1.1.0] — 2026-03-31
|
|
195
222
|
|
|
196
223
|
### Added
|
|
197
|
-
- **Financial Safety** —
|
|
224
|
+
- **Financial Safety** — Budget limits and token tracker to help prevent bill-shock.
|
|
198
225
|
- **Dry-Run Mode** — Preview all file operations with `[Y/n]` prompts before execution.
|
|
199
226
|
- **Strict Write Discipline** — Enhanced verification logic for cleaner code.
|
|
200
|
-
- **
|
|
227
|
+
- **Codebase Verification** — Initial `verify` command implementation.
|
|
201
228
|
|
|
202
229
|
---
|
|
203
230
|
|
|
@@ -212,6 +239,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
212
239
|
- **Dream/Verify Commands** — memory compression and drift detection.
|
|
213
240
|
|
|
214
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
|
|
215
244
|
[1.2.1]: https://github.com/thewaltero/mythos-router/releases/tag/v1.2.1
|
|
216
245
|
[1.2.0]: https://github.com/thewaltero/mythos-router/releases/tag/v1.2.0
|
|
217
246
|
[1.1.9]: https://github.com/thewaltero/mythos-router/releases/tag/v1.1.9
|
package/README.md
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
[](https://github.com/thewaltero/mythos-router/actions/workflows/github-code-scanning/codeql)
|
|
5
5
|
[](https://www.npmjs.com/package/mythos-router)
|
|
6
6
|
[](https://nodejs.org)
|
|
7
|
-
[](https://typescriptlang.org)
|
|
8
8
|
[](https://anthropic.com)
|
|
9
9
|
[](./LICENSE)
|
|
10
10
|
[](https://github.com/thewaltero/mythos-router)
|
|
@@ -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** | SQLite-backed caching for
|
|
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` command
|
|
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 |
|
|
@@ -79,23 +81,23 @@ Choose the right model for the job via the `--effort` flag:
|
|
|
79
81
|
| Effort | Model | Best For |
|
|
80
82
|
|--------|-------|----------|
|
|
81
83
|
| `high` (default) | Claude Opus 4.7 | Architecture, deep reasoning, complex refactors |
|
|
82
|
-
| `medium` | Claude Sonnet
|
|
83
|
-
| `low` | Claude Haiku
|
|
84
|
+
| `medium` | Claude Sonnet 4.6 | Balanced code generation, everyday tasks |
|
|
85
|
+
| `low` | Claude Haiku 4.5 | Quick answers, memory compression, verification |
|
|
84
86
|
|
|
85
|
-
The `dream` command automatically uses `low` effort (Haiku) for cost-efficient memory compression, and `verify` uses lightweight scanning — so you only burn Opus tokens when you need deep reasoning.
|
|
87
|
+
The `dream` command automatically uses `low` effort (Haiku 4.5) for cost-efficient memory compression, and `verify` uses lightweight scanning — so you only burn Opus tokens when you need deep reasoning.
|
|
86
88
|
|
|
87
89
|
### 2. Authority-Based "Self-Healing" Memory
|
|
88
90
|
Most agentic systems stored state in opaque databases or messy JSON files. Mythos Router treats `MEMORY.md` as the **Sole Authority**.
|
|
89
91
|
|
|
90
92
|
Every action is logged in Markdown first. On startup, the system verifies the integrity of the log via SHA-256 manifest hashing and reconstructs a high-performance **Derivative SQLite Index** (FTS5). If the index drifts or the database is deleted, the system self-heals by rebuilding from the authoritative Markdown source.
|
|
91
93
|
|
|
92
|
-
As memory approaches capacity, the `dream` command delegates a compression phase to a low-cost model (Haiku
|
|
94
|
+
As memory approaches capacity, the `dream` command delegates a compression phase to a low-cost model (Haiku 4.5), ensuring your "Sacred Log" is always lean and relevant.
|
|
93
95
|
|
|
94
96
|
---
|
|
95
97
|
|
|
96
98
|
## Installation
|
|
97
99
|
|
|
98
|
-
> **Node.js Version Requirement:** The core CLI runs perfectly on **Node 20+**. However, the advanced SQLite-backed features (Telemetry Dashboard, Deterministic Caching, and High-Performance Memory Index) require **Node.js 22.
|
|
100
|
+
> **Node.js Version Requirement:** The core CLI runs perfectly on **Node 20+**. However, the advanced SQLite-backed features (Telemetry Dashboard, Deterministic Caching, and High-Performance Memory Index) require **Node.js 22.5.0+**. If you run the tool on an older version, these features safely degrade with a warning without crashing the router.
|
|
99
101
|
|
|
100
102
|
### Quick Start (npm)
|
|
101
103
|
|
|
@@ -145,8 +147,8 @@ mythos init --force # Re-scaffold files even if they already exist
|
|
|
145
147
|
mythos chat # Full power (high effort, Opus 4.7)
|
|
146
148
|
mythos chat -s react # Load the 'react' expert skill
|
|
147
149
|
mythos chat --test-cmd "npm test" # Enable autonomous test-driven self-healing
|
|
148
|
-
mythos chat --effort low # Budget mode (Haiku
|
|
149
|
-
mythos chat --effort medium # Balanced (Sonnet
|
|
150
|
+
mythos chat --effort low # Budget mode (Haiku 4.5)
|
|
151
|
+
mythos chat --effort medium # Balanced (Sonnet 4.6)
|
|
150
152
|
mythos chat --resume # Resume your previous session exactly where you left off
|
|
151
153
|
mythos chat --dry-run # Preview all file changes before executing
|
|
152
154
|
mythos chat --verbose # See full SWD traces and thinking
|
|
@@ -154,7 +156,7 @@ mythos chat --branch refactor # Isolate session in a fresh git branch
|
|
|
154
156
|
mythos chat --dry-run --verbose # Maximum transparency
|
|
155
157
|
```
|
|
156
158
|
|
|
157
|
-
#### Financial Safety —
|
|
159
|
+
#### Financial Safety — Budget Limiter
|
|
158
160
|
|
|
159
161
|
```bash
|
|
160
162
|
mythos chat # Default: 500K tokens, 25 turns
|
|
@@ -170,7 +172,7 @@ The budget limiter tracks every token, turn, and estimated cost in real-time:
|
|
|
170
172
|
budget: [████████░░░░░░░░░░░░] 78,342/500,000 tokens · [██████░░░░] 12/25 turns · ~$1.2340 · 4m 32s
|
|
171
173
|
```
|
|
172
174
|
|
|
173
|
-
At 80%, you get a yellow warning. At 100%, the session performs a **graceful save** — current progress is written to `MEMORY.md` so you can resume context in your next session. No work lost. Use `--no-budget` to disable (at your own risk).
|
|
175
|
+
At 80%, you get a yellow warning. At 100%, the session performs a **graceful save** — current progress is written to `MEMORY.md` so you can resume context in your next session. No work lost. Use `--no-budget` to disable (at your own risk). *Note: The limiter checks token usage between API calls, so a single large response may overshoot the configured limit.*
|
|
174
176
|
|
|
175
177
|
#### Dry-Run Mode — The Trust Builder
|
|
176
178
|
|
|
@@ -198,21 +200,17 @@ In dry-run mode, every file operation is previewed before execution:
|
|
|
198
200
|
```
|
|
199
201
|
|
|
200
202
|
In-session commands:
|
|
201
|
-
- `/exit` — End session (shows final budget summary)
|
|
202
|
-
- `/memory` — Show memory status
|
|
203
|
-
- `/budget` — Show current budget consumption
|
|
204
|
-
- `/clear` — Clear conversation (memory persists)
|
|
203
|
+
- `/exit`, `/q` or `quit` — End session (shows final budget summary)
|
|
205
204
|
|
|
206
|
-
### `mythos verify` —
|
|
205
|
+
### `mythos verify` — Codebase ↔ Memory Existence Scan
|
|
207
206
|
|
|
208
207
|
```bash
|
|
209
208
|
mythos verify # Scan and log results to MEMORY.md
|
|
210
209
|
mythos verify --dry-run # Scan without writing to MEMORY.md
|
|
211
210
|
```
|
|
212
211
|
|
|
213
|
-
Scans
|
|
214
|
-
- ✅ **Verified** —
|
|
215
|
-
- ⚠️ **Drift** — File changed but memory doesn't reflect it
|
|
212
|
+
Scans your project and cross-references against `MEMORY.md`:
|
|
213
|
+
- ✅ **Verified** — Memory logs are present and up to date
|
|
216
214
|
- ❌ **Missing** — Memory references a file that doesn't exist
|
|
217
215
|
|
|
218
216
|
### `mythos dream` — Memory Compression
|
|
@@ -360,12 +358,12 @@ If you prefer to keep it private, add `MEMORY.md` to your `.gitignore`.
|
|
|
360
358
|
|
|
361
359
|
## Token Usage & Budget
|
|
362
360
|
|
|
363
|
-
### Opus 4.7 Pricing (as of 2026-
|
|
361
|
+
### Opus 4.7 Pricing (as of 2026-05)
|
|
364
362
|
|
|
365
363
|
| Rate | USD |
|
|
366
364
|
|------|-----|
|
|
367
|
-
| Input tokens | $
|
|
368
|
-
| Output tokens | $
|
|
365
|
+
| Input tokens | $5.00 / 1M tokens |
|
|
366
|
+
| Output tokens | $25.00 / 1M tokens |
|
|
369
367
|
|
|
370
368
|
> ** Tokenizer Cost Inflation Alert**
|
|
371
369
|
> While the per-token price remains identical to Opus 4.6, **Opus 4.7 uses a new tokenizer that is significantly less efficient for Latin scripts**.
|
package/dist/budget.d.ts
CHANGED
|
@@ -37,6 +37,7 @@ export declare class SessionBudget {
|
|
|
37
37
|
private enabled;
|
|
38
38
|
constructor(config?: Partial<BudgetConfig>, enabled?: boolean);
|
|
39
39
|
record(inputTokens: number, outputTokens: number): void;
|
|
40
|
+
restore(inputTokens: number, outputTokens: number, turns: number): void;
|
|
40
41
|
check(): BudgetCheck;
|
|
41
42
|
status(): BudgetSnapshot;
|
|
42
43
|
isEnabled(): boolean;
|
package/dist/budget.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"budget.d.ts","sourceRoot":"","sources":["../src/budget.ts"],"names":[],"mappings":"AAeA,MAAM,WAAW,YAAY;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,EAAE,MAAM,CAAC;IACtB,0EAA0E;IAC1E,iBAAiB,EAAE,MAAM,CAAC;IAC1B,2EAA2E;IAC3E,kBAAkB,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,OAAO,CAAC;IACZ,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,OAAO,CAAC;IACjB,oFAAoF;IACpF,SAAS,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,cAAc;IAC7B,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,8DAA8D;IAC9D,gBAAgB,EAAE,MAAM,CAAC;CAC1B;AAGD,qBAAa,aAAa;IACxB,OAAO,CAAC,MAAM,CAAe;IAC7B,OAAO,CAAC,UAAU,CAAK;IACvB,OAAO,CAAC,WAAW,CAAK;IACxB,OAAO,CAAC,SAAS,CAAK;IACtB,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,OAAO,CAAU;gBAEb,MAAM,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC,EAAE,OAAO,UAAO;IAa1D,MAAM,CAAC,WAAW,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,IAAI;IAOvD,KAAK,IAAI,WAAW;IA6CpB,MAAM,IAAI,cAAc;IAkBxB,SAAS,IAAI,OAAO;IAKpB,SAAS,CAAC,KAAK,SAAK,GAAG,MAAM;IAkC7B,aAAa,IAAI,MAAM,GAAG,IAAI;IA6B9B,oBAAoB,IAAI,MAAM;CAQ/B"}
|
|
1
|
+
{"version":3,"file":"budget.d.ts","sourceRoot":"","sources":["../src/budget.ts"],"names":[],"mappings":"AAeA,MAAM,WAAW,YAAY;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,EAAE,MAAM,CAAC;IACtB,0EAA0E;IAC1E,iBAAiB,EAAE,MAAM,CAAC;IAC1B,2EAA2E;IAC3E,kBAAkB,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,OAAO,CAAC;IACZ,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,OAAO,CAAC;IACjB,oFAAoF;IACpF,SAAS,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,cAAc;IAC7B,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,8DAA8D;IAC9D,gBAAgB,EAAE,MAAM,CAAC;CAC1B;AAGD,qBAAa,aAAa;IACxB,OAAO,CAAC,MAAM,CAAe;IAC7B,OAAO,CAAC,UAAU,CAAK;IACvB,OAAO,CAAC,WAAW,CAAK;IACxB,OAAO,CAAC,SAAS,CAAK;IACtB,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,OAAO,CAAU;gBAEb,MAAM,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC,EAAE,OAAO,UAAO;IAa1D,MAAM,CAAC,WAAW,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,IAAI;IAOvD,OAAO,CAAC,WAAW,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAOvE,KAAK,IAAI,WAAW;IA6CpB,MAAM,IAAI,cAAc;IAkBxB,SAAS,IAAI,OAAO;IAKpB,SAAS,CAAC,KAAK,SAAK,GAAG,MAAM;IAkC7B,aAAa,IAAI,MAAM,GAAG,IAAI;IA6B9B,oBAAoB,IAAI,MAAM;CAQ/B"}
|
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;
|
|
@@ -29,6 +29,12 @@ export class SessionBudget {
|
|
|
29
29
|
this.totalOutput += outputTokens;
|
|
30
30
|
this.turnCount++;
|
|
31
31
|
}
|
|
32
|
+
// ── Restore state from a saved session ───────────────────
|
|
33
|
+
restore(inputTokens, outputTokens, turns) {
|
|
34
|
+
this.totalInput = inputTokens;
|
|
35
|
+
this.totalOutput = outputTokens;
|
|
36
|
+
this.turnCount = turns;
|
|
37
|
+
}
|
|
32
38
|
// ── Check if budget is still ok ──────────────────────────
|
|
33
39
|
check() {
|
|
34
40
|
if (!this.enabled) {
|
|
@@ -89,22 +95,22 @@ export class SessionBudget {
|
|
|
89
95
|
// ── Format a visual budget bar for the terminal ──────────
|
|
90
96
|
formatBar(width = 20) {
|
|
91
97
|
if (!this.enabled) {
|
|
92
|
-
return `${
|
|
98
|
+
return `${theme.muted}Budget: ${theme.warning}disabled${theme.muted} (expert mode)${c.reset}`;
|
|
93
99
|
}
|
|
94
100
|
const snap = this.status();
|
|
95
101
|
const tokPct = Math.min((snap.totalTokens / snap.maxTokens) * 100, 100);
|
|
96
102
|
const turnPct = Math.min((snap.turns / snap.maxTurns) * 100, 100);
|
|
97
103
|
const tokBar = progressBar(tokPct, width);
|
|
98
104
|
const turnBar = progressBar(turnPct, Math.floor(width / 2));
|
|
99
|
-
const tokColor = tokPct >= 90 ?
|
|
100
|
-
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;
|
|
101
107
|
const elapsed = formatElapsed(snap.elapsedMs);
|
|
102
|
-
return (`${
|
|
108
|
+
return (`${theme.muted}Budget:${c.reset} ` +
|
|
103
109
|
`${tokColor}${tokBar}${c.reset} ` +
|
|
104
|
-
`${tokColor}${snap.totalTokens.toLocaleString()}${
|
|
110
|
+
`${tokColor}${snap.totalTokens.toLocaleString()}${theme.muted}/${snap.maxTokens.toLocaleString()} tokens${c.reset} · ` +
|
|
105
111
|
`${turnColor}${turnBar}${c.reset} ` +
|
|
106
|
-
`${turnColor}${snap.turns}${
|
|
107
|
-
`${
|
|
112
|
+
`${turnColor}${snap.turns}${theme.muted}/${snap.maxTurns} turns${c.reset} · ` +
|
|
113
|
+
`${theme.muted}~$${snap.estimatedCostUSD.toFixed(4)} · ${elapsed}${c.reset}`);
|
|
108
114
|
}
|
|
109
115
|
// ── Format warning message if at threshold ───────────────
|
|
110
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
|
@@ -3,8 +3,8 @@
|
|
|
3
3
|
// Deterministic Response Cache — SQLite-backed
|
|
4
4
|
//
|
|
5
5
|
// Rules:
|
|
6
|
-
// -
|
|
7
|
-
// -
|
|
6
|
+
// - SDK utility only. Not actively wired into CLI commands by default.
|
|
7
|
+
// - Use for pure reasoning tasks with deterministic inputs.
|
|
8
8
|
// - Tool invocations BYPASS the cache entirely
|
|
9
9
|
// - Keys use canonical JSON (sorted keys) + SHA-256
|
|
10
10
|
// - TTL-based expiration (default: 1 hour)
|
|
@@ -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":"AAAA,gEAAgE;AAChE,6BAA6B;AAC7B,gDAAgD;AAChD,EAAE;AACF,UAAU;AACV,
|
|
1
|
+
{"version":3,"file":"cache.js","sourceRoot":"","sources":["../src/cache.ts"],"names":[],"mappings":"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"}
|
package/dist/cli.js
CHANGED
|
@@ -30,14 +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
|
-
process.on('
|
|
36
|
-
process.on('uncaughtException', (err) => {
|
|
37
|
-
restoreCursor();
|
|
38
|
-
console.error(err);
|
|
39
|
-
process.exit(1);
|
|
40
|
-
});
|
|
41
|
+
process.on('uncaughtExceptionMonitor', restoreCursor);
|
|
41
42
|
program
|
|
42
43
|
.name('mythos')
|
|
43
44
|
.description('Capybara-tier CLI router — Claude Opus 4.7 with Adaptive Thinking, ' +
|
|
@@ -62,7 +63,7 @@ program
|
|
|
62
63
|
// ── mythos verify ────────────────────────────────────────────
|
|
63
64
|
program
|
|
64
65
|
.command('verify')
|
|
65
|
-
.description('Scan codebase and
|
|
66
|
+
.description('Scan codebase and verify file existence against MEMORY.md')
|
|
66
67
|
.option('--dry-run', 'Preview verification without writing to MEMORY.md')
|
|
67
68
|
.action(verifyCommand);
|
|
68
69
|
// ── mythos dream ─────────────────────────────────────────────
|
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,OAAO,CAAC,EAAE,CAAC,
|
|
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,kEAAkE;AAClE,0EAA0E;AAC1E,sEAAsE;AACtE,6DAA6D;AAC7D,mEAAmE;AACnE,sEAAsE;AACtE,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,OAAO,CAAC,EAAE,CAAC,0BAA0B,EAAE,aAAa,CAAC,CAAC;AAEtD,OAAO;KACJ,IAAI,CAAC,QAAQ,CAAC;KACd,WAAW,CACV,qEAAqE;IACrE,mDAAmD,CACpD;KACA,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;AAExB,gEAAgE;AAChE,OAAO;KACJ,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,sDAAsD,CAAC;KACnE,MAAM,CACL,sBAAsB,EACtB,8CAA8C,EAC9C,MAAM,CACP;KACA,MAAM,CACL,kBAAkB,EAClB,oCAAoC,8BAA8B,CAAC,cAAc,EAAE,GAAG,EACtF,MAAM,CAAC,8BAA8B,CAAC,CACvC;KACA,MAAM,CACL,iBAAiB,EACjB,mCAAmC,iBAAiB,GAAG,EACvD,MAAM,CAAC,iBAAiB,CAAC,CAC1B;KACA,MAAM,CACL,aAAa,EACb,4DAA4D,CAC7D;KACA,MAAM,CACL,WAAW,EACX,oDAAoD,CACrD;KACA,MAAM,CACL,WAAW,EACX,gDAAgD,CACjD;KACA,MAAM,CACL,qBAAqB,EACrB,yDAAyD,CAC1D;KACA,MAAM,CACL,sBAAsB,EACtB,8HAA8H,CAC/H;KACA,MAAM,CACL,wBAAwB,EACxB,iEAAiE,EACjE,GAAG,CACJ;KACA,MAAM,CACL,wBAAwB,EACxB,uDAAuD,CACxD;KACA,MAAM,CACL,UAAU,EACV,wDAAwD,CACzD;KACA,MAAM,CAAC,WAAW,CAAC,CAAC;AAEvB,gEAAgE;AAChE,OAAO;KACJ,OAAO,CAAC,QAAQ,CAAC;KACjB,WAAW,CAAC,2DAA2D,CAAC;KACxE,MAAM,CACL,WAAW,EACX,mDAAmD,CACpD;KACA,MAAM,CAAC,aAAa,CAAC,CAAC;AAEzB,gEAAgE;AAChE,OAAO;KACJ,OAAO,CAAC,OAAO,CAAC;KAChB,WAAW,CAAC,gEAAgE,CAAC;KAC7E,MAAM,CAAC,aAAa,EAAE,mCAAmC,EAAE,KAAK,CAAC;KACjE,MAAM,CACL,WAAW,EACX,kDAAkD,CACnD;KACA,MAAM,CAAC,YAAY,CAAC,CAAC;AAExB,gEAAgE;AAChE,OAAO;KACJ,OAAO,CAAC,OAAO,CAAC;KAChB,WAAW,CAAC,uDAAuD,CAAC;KACpE,MAAM,CAAC,gBAAgB,EAAE,mCAAmC,CAAC;KAC7D,MAAM,CAAC,YAAY,CAAC,CAAC;AAExB,gEAAgE;AAChE,OAAO;KACJ,OAAO,CAAC,WAAW,CAAC;KACpB,WAAW,CAAC,uEAAuE,CAAC;KACpF,MAAM,CAAC,aAAa,EAAE,gDAAgD,CAAC;KACvE,MAAM,CAAC,WAAW,EAAE,4CAA4C,CAAC;KACjE,MAAM,CAAC,gBAAgB,CAAC,CAAC;AAE5B,gEAAgE;AAChE,OAAO;KACJ,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,iDAAiD,CAAC;KAC9D,MAAM,CAAC,aAAa,EAAE,8CAA8C,CAAC;KACrE,MAAM,CAAC,WAAW,CAAC,CAAC;AAEvB,gEAAgE;AAChE,IAAI,OAAO,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;IAC7B,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IACpB,OAAO,CAAC,IAAI,EAAE,CAAC;AACjB,CAAC;KAAM,CAAC;IACN,OAAO,CAAC,UAAU,EAAE,CAAC;AACvB,CAAC"}
|
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"}
|