token-harness 0.1.3 → 0.1.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (4) hide show
  1. package/README.md +250 -49
  2. package/package.json +2 -2
  3. package/sbom.json +4 -3
  4. package/token-harness.mjs +17072 -7611
package/README.md CHANGED
@@ -1,51 +1,81 @@
1
1
  # Token Harness
2
2
 
3
- Token Harness has one objective: **reduce the tokens consumed by coding agents without hiding
4
- useful information or overstating the result**.
3
+ Token Harness has one objective: **maximize the useful coding work you can get from Claude Code
4
+ and Codex usage limits, without hiding quality regressions or pretending that opaque subscription
5
+ quota is exactly equivalent to a token count**.
5
6
 
6
- Coding sessions repeatedly send test logs, command output, repository context, MCP schemas,
7
- tool results, and conversation history back to the model. Specialized tools can reduce each of
8
- those sources, but installing them independently creates a second problem: overlapping hooks,
9
- double reduction, incompatible configurations, and savings counted more than once.
7
+ The scarce resource is no longer just model context. Subscription users are constrained by rolling
8
+ usage windows, weekly limits, model-dependent burn, long-session context growth, MCP/tool schema
9
+ overhead, noisy tool output, and repeated work after poor model or effort choices. Token Harness is
10
+ evolving from a token-reduction control plane into a **quota-aware efficiency layer** for coding
11
+ harnesses.
10
12
 
11
- Token Harness is the control plane for that optimization stack. It finds the coding agents and
12
- token-saving tools on the machine, selects a compatible owner for each interception point, shows
13
- every proposed change before applying it, verifies whether the integration is genuinely being
14
- used, and reports how many tokens or characters were saved.
13
+ The product therefore optimizes two related budgets:
15
14
 
16
- The reduction still happens inside specialized providers such as RTK and HarnessTrim. Token
17
- Harness makes those providers safe to combine, observable, reversible, and comparable.
15
+ 1. **subscription headroom** — observe the usage windows the harness itself exposes, pace work
16
+ against reset time, and choose native model/effort settings that fit the task and remaining
17
+ budget;
18
+ 2. **context sent to the model** — keep instructions, MCP schemas, conversation history, repository
19
+ context, and tool output as small as possible without removing information needed to finish the
20
+ task correctly.
21
+
22
+ RTK and HarnessTrim remain useful providers, but reducers are now one layer of the system rather
23
+ than the product definition. Native harness controls come first because choosing the right model,
24
+ effort, context shape, and enabled tools can avoid an expensive turn entirely.
25
+
26
+ ## What Token Harness should optimize
27
+
28
+ | Layer | Target behavior |
29
+ | --- | --- |
30
+ | Usage-window observability | Read five-hour, weekly, model-specific, or credit-backed limits only from surfaces the harness can actually prove; show reset time, headroom, and burn rate |
31
+ | Native model policy | Prefer economical models/effort for routine work, escalate only for tasks whose expected quality benefit justifies the extra quota |
32
+ | Session hygiene | Detect task boundaries, oversized conversations, and stale context; recommend clear/compact/new-session actions before history dominates each turn |
33
+ | Instruction budget | Keep `CLAUDE.md` / `AGENTS.md` concise and hierarchical instead of injecting one large global instruction file everywhere |
34
+ | MCP/tool budget | Disable irrelevant MCP servers, defer schemas where the harness supports it, and expose only the tools required by the current task |
35
+ | Tool-output budget | Reduce logs, diffs, test output, and repeated command results before they re-enter model context |
36
+ | Cross-harness scheduling | When Claude Code and Codex have independent headroom, recommend the harness that can do the task with the best expected quality per remaining quota |
37
+ | Measurement | Correlate quota delta, model/effort, context size, tool traffic, and task outcome; never convert local token savings into an unproven subscription-quota claim |
18
38
 
19
39
  ## Optimization ecosystem
20
40
 
21
- The long-term goal is to coordinate token savings across the whole coding-agent pipeline. Only
22
- tools marked **active** are integrated in this release; every other row is a candidate and is
23
- neither installed nor configured by Token Harness.
41
+ The priority order below is deliberately different from the original Token Harness roadmap. A tool
42
+ is high priority only when it helps **included Claude Code/Codex capacity**, not merely API cost,
43
+ provider routing, or benchmark token counts.
24
44
 
25
- | Tool | Optimization layer | Token Harness status |
45
+ | Tool or surface | Optimization layer | Token Harness direction |
26
46
  | --- | --- | --- |
27
- | [RTK](https://github.com/rtk-ai/rtk) | Shell-command rewriting and command-output reduction | **Active — integrated** |
28
- | [HarnessTrim](https://github.com/giuliastro/HarnessTrim) | Deterministic reducers, harness adapters, skills, pipes, and MCP reduction | **Active — integrated** |
29
- | [Dejavu](https://github.com/Salnika/dejavu) | Emit only the delta when command output repeats | Not active — candidate |
30
- | [Lazy MCP](https://github.com/voicetreelab/lazy-mcp) | Load MCP tool schemas only when needed | Not active — candidate |
31
- | [repowise](https://github.com/repowise-dev/repowise) | Retrieve task-specific repository context | Not active — candidate |
32
- | [LiteLLM](https://github.com/BerriAI/litellm) | Model routing, fallbacks, budgets, and usage telemetry | Not active — candidate |
33
- | [RouteLLM](https://github.com/lm-sys/RouteLLM) | Route simpler requests to less expensive models | Not active — candidate |
34
- | [vLLM Semantic Router](https://github.com/vllm-project/semantic-router) | Route by task, complexity, tools, and deployment locality | Not active — candidate |
35
- | [Claude Code Router](https://github.com/musistudio/claude-code-router) | Route coding-agent requests across models and providers with effort-based rules and fallback chains | Not active — candidate · high priority |
36
- | [LLMRouter](https://github.com/ulab-uiuc/LLMRouter) | Select the model by task complexity, cost, and quality across routing strategies | Not active — candidate · high priority |
37
- | [Headroom](https://github.com/headroomlabs-ai/headroom) | Compress tool, MCP, file, and RAG payloads | Not active — candidate |
38
- | [Context Mode](https://github.com/mksglu/context-mode) | Keep raw tool results outside model context | Not active — candidate |
39
- | [LLMLingua](https://github.com/microsoft/LLMLingua) | Compress long prompts and context | Not active — candidate |
40
- | [Caveman](https://github.com/JuliusBrussee/caveman) | Reduce visible model-output verbosity | Not active — candidate |
41
-
42
- Candidate status means only that the project has identified a useful optimization layer. A tool
43
- becomes active only after its installation, conflicts, rollback behavior, verification, and
44
- metrics attribution have been implemented and tested. Token Harness never installs a candidate
45
- merely because it is present on the machine. Rows marked `high priority` are the next intended
46
- intake; the admission gates each one carries are recorded in
47
+ | **Claude Code native controls** | Usage status, model/effort choice, context inspection, clear/compact lifecycle | **P0 — build into core**. Prefer native surfaces over third-party credential scraping; discover available models dynamically |
48
+ | **Codex native app-server + profiles** | Structured rate-limit telemetry; model, reasoning effort, verbosity, tool-output and MCP/context controls | **P0 — build into core**. `account/rateLimits/read` is the preferred live quota source when available |
49
+ | [cclimits](https://github.com/cruzanstx/cclimits) | Live/local quota companion across coding tools | **P0 — optional observational companion for Claude**. Token Harness uses only cacheless Claude JSON mode, never reads its credentials, and labels the result `reported` or `cached`. Codex keeps its native app-server reader |
50
+ | [ccusage](https://github.com/ccusage/ccusage) | Local historical token/session/cost analytics for Claude Code and Codex | **P0 — high-priority read-only companion**. Useful for history and baselines; not a substitute for live subscription-limit telemetry |
51
+ | [RTK](https://github.com/rtk-ai/rtk) | Shell-command rewriting and command-output reduction | **P1 — active, keep**. Reduces context that would otherwise be resent on later turns |
52
+ | [HarnessTrim](https://github.com/giuliastro/HarnessTrim) | Deterministic reducers, harness adapters, skills, pipes, and MCP reduction | **P1 — active, keep**. Continue only on proven non-overlapping surfaces |
53
+ | [Lazy MCP](https://gitlab.com/gitlab-org/ai/lazy-mcp) | Load MCP tool schemas only when needed | **P1 — high priority**. Directly attacks schema/context overhead; benchmark against native Codex tool deferral before installing another owner |
54
+ | [Context Mode](https://github.com/mksglu/context-mode) | Keep raw tool/MCP results outside model context | **P2 — alternative broad context owner**. Evaluate against Headroom, not alongside overlapping reducers by default |
55
+ | [Headroom](https://github.com/headroomlabs-ai/headroom) | Compress tool, MCP, file, and RAG payloads | **P2 — alternative broad context owner**. Admit only after pair-specific quality and attribution fixtures |
56
+ | [Dejavu](https://github.com/Salnika/dejavu) | Emit only the delta when command output repeats | **P2 — useful for test/rerun loops** after the normal output-reduction path is measured |
57
+ | [repowise](https://github.com/repowise-dev/repowise) | Retrieve task-specific repository context | **P2 — conditional**. Its MCP overhead must be lower than the repository context it avoids |
58
+ | LiteLLM, Claude Code Router, RouteLLM, LLMRouter, vLLM Semantic Router | Route requests across models/providers | **P3 — overflow/API routing only**. Useful after included quota is exhausted or for explicit external-provider policy; not a core subscription-quota optimizer |
59
+ | [LLMLingua](https://github.com/microsoft/LLMLingua) | Generic prompt compression | **Research only** until a harness-aware lifecycle proves must-keep recall and quality |
60
+ | [Caveman](https://github.com/JuliusBrussee/caveman) | Reduce visible model-output verbosity | **De-prioritized**. Use native verbosity/effort controls first and measure their effect before adding another instruction owner |
61
+
62
+ Candidate status still means that Token Harness neither installs nor configures the tool until its
63
+ installation, conflicts, rollback behavior, verification, quality gates, and metrics attribution are
64
+ implemented and tested. The intake evidence lives in
47
65
  [docs/provider-landscape.md](docs/provider-landscape.md).
48
66
 
67
+ ### Why generic routers moved down
68
+
69
+ The original roadmap treated model routers as high priority. For the new objective that is backwards:
70
+ a router can reduce API cost by sending work to another provider while consuming **none of the
71
+ included Claude Code or Codex allowance**, or it can bypass subscription authentication entirely.
72
+ That can be valuable as explicit overflow, but it does not demonstrate better use of the allowance
73
+ the user already paid for.
74
+
75
+ Token Harness should first exploit the harness-native choices that are actually inside the plan:
76
+ model tier, reasoning effort, verbosity, session lifecycle, instruction size, MCP exposure, and tool
77
+ output. External routing becomes an opt-in second budget, never an invisible shortcut.
78
+
49
79
  ## Quick start
50
80
 
51
81
  Install the CLI:
@@ -61,15 +91,24 @@ Then run the complete workflow from the project in which you use your coding age
61
91
  # 1. Inspect the machine. This does not change agent configuration.
62
92
  token-harness doctor
63
93
 
64
- # 2. Preview every proposed change.
94
+ # 2. Inspect subscription headroom and avoidable context. Still read-only.
95
+ token-harness budget
96
+ token-harness context
97
+ token-harness history --since 7d
98
+ token-harness optimize
99
+
100
+ # Optional: Claude live quota can use an already-installed cclimits build that
101
+ # supports --no-cache-write. Token Harness never installs it automatically.
102
+
103
+ # 3. Preview every proposed configuration change.
65
104
  token-harness plan
66
105
 
67
- # 3. Apply the reviewed plan. This is the first configuration-changing step.
106
+ # 4. Apply the reviewed plan. This is the first configuration-changing step.
68
107
  token-harness apply --yes
69
108
 
70
- # 4. Restart the coding agent, then run a normal shell command through it.
109
+ # 5. Restart the coding agent, then run a normal shell command through it.
71
110
 
72
- # 5. Check configuration, real interception evidence, and savings.
111
+ # 6. Check configuration, real interception evidence, and savings.
73
112
  token-harness status
74
113
  token-harness verify
75
114
  token-harness metrics --since 7d
@@ -78,6 +117,144 @@ token-harness metrics --since 7d
78
117
  `doctor` ends with a `NEXT` section. If you are unsure what to do, run the command shown
79
118
  there.
80
119
 
120
+ ### Codex: quota-aware optimization example
121
+
122
+ For a concrete Codex workflow, keep observation and mutation separate:
123
+
124
+ ```sh
125
+ # Read-only: inspect live subscription windows.
126
+ token-harness budget --harness codex
127
+
128
+ # Read-only: inspect the effective model, reasoning effort, project instructions,
129
+ # MCP servers, and visible tool inventory.
130
+ token-harness context --harness codex
131
+
132
+ # Read-only: combine quota pacing and context pressure into task-specific advice.
133
+ token-harness optimize --harness codex --task standard --profile balanced
134
+
135
+ # Dry run: preview supported Codex-native policy changes.
136
+ token-harness plan --harness codex --native-policy
137
+ ```
138
+
139
+ A typical optimization can recommend lowering reasoning effort for routine work when quota is
140
+ under-pace, while keeping the current model until empirical model-tier evidence exists. A plan may
141
+ also include reviewed provider actions such as a HarnessTrim skill install.
142
+
143
+ Apply the exact stored plan only after reviewing it:
144
+
145
+ ```sh
146
+ token-harness apply --plan <plan-id> --yes
147
+ token-harness context --harness codex
148
+ token-harness verify --harness codex
149
+ ```
150
+
151
+ On supported recent Codex builds, Token Harness uses Codex's native app-server for authoritative
152
+ rate-limit windows, effective configuration, model catalog, MCP inventory, and reviewed native
153
+ configuration writes. It does not infer quota from local token counts.
154
+
155
+ Useful variants:
156
+
157
+ ```sh
158
+ # More conservative reasoning for routine work.
159
+ token-harness optimize --harness codex --task mechanical --profile economy
160
+
161
+ # Preserve more quality headroom for difficult work.
162
+ token-harness optimize --harness codex --task hard --profile quality
163
+
164
+ # Inspect MCP exposure directly.
165
+ token-harness mcp --harness codex
166
+
167
+ # Compare recent local history when available.
168
+ token-harness history --harness codex --since 7d
169
+ ```
170
+
171
+ ### Cross-harness scheduling and compact handoff
172
+
173
+ `token-harness schedule` is a read-only recommendation, not an automatic router. In the normal
174
+ installed CLI, unknown five-hour and weekly pace fields are hydrated from the same live budget
175
+ observer used by `token-harness budget`. Candidate quality and transfer benefit are hydrated only
176
+ from attributable project-local benchmark evidence. Missing or conflicting evidence returns
177
+ `insufficient-evidence` instead of guessing.
178
+
179
+ Start with the minimal command:
180
+
181
+ ```sh
182
+ token-harness schedule \
183
+ --current claude \
184
+ --candidate codex \
185
+ --task-class hard \
186
+ --handoff-bytes 900
187
+ ```
188
+
189
+ If the task is already in progress, generate a bounded handoff rather than copying the transcript:
190
+
191
+ ```sh
192
+ token-harness handoff \
193
+ --objective "Finish the scheduler change without weakening quota evidence" \
194
+ --decision "Keep Claude and Codex quota observations provider-local" \
195
+ --changed-file apps/cli/src/schedule-main.ts \
196
+ --validation "pnpm test passes" \
197
+ --unresolved "Need one empirical Codex comparison" \
198
+ --next-action "Run the candidate benchmark in Codex" \
199
+ --max-bytes 2048 > handoff.md
200
+ ```
201
+
202
+ To teach future recommendations whether that handoff was actually worth the switch, capture one
203
+ paired experiment. The baseline and optimized variants use the same benchmark id and task class,
204
+ but different harnesses:
205
+
206
+ ```sh
207
+ # 1. Before doing the task in the current harness.
208
+ token-harness benchmark-start \
209
+ --benchmark-id scheduler-hard-01 \
210
+ --variant baseline \
211
+ --task hard \
212
+ --harness claude
213
+
214
+ # Run the baseline task in Claude Code, then record its observed outcome.
215
+ token-harness benchmark-finish \
216
+ --benchmark-id scheduler-hard-01 \
217
+ --variant baseline \
218
+ --quality passed \
219
+ --attempts 1 \
220
+ --failed-attempts 0
221
+
222
+ # 2. Before the candidate run, start the optimized variant.
223
+ token-harness benchmark-start \
224
+ --benchmark-id scheduler-hard-01 \
225
+ --variant optimized \
226
+ --task hard \
227
+ --harness codex
228
+
229
+ # Give handoff.md to Codex, run the equivalent task, then close the capture.
230
+ token-harness benchmark-finish \
231
+ --benchmark-id scheduler-hard-01 \
232
+ --variant optimized \
233
+ --quality passed \
234
+ --attempts 1 \
235
+ --failed-attempts 0
236
+
237
+ # 3. Evaluate the exact handoff used by the candidate run.
238
+ token-harness transfer \
239
+ --benchmark-id scheduler-hard-01 \
240
+ --handoff-file handoff.md
241
+
242
+ # 4. Persist the immutable transfer verdict for future schedule calls.
243
+ token-harness transfer-record \
244
+ --benchmark-id scheduler-hard-01 \
245
+ --handoff-file handoff.md
246
+ ```
247
+
248
+ `transfer-record` re-validates the project-scoped pair, hashes the exact handoff and writes one
249
+ immutable receipt. Future `schedule` calls consume receipts only for the exact route and task class.
250
+ Every attributable receipt must agree on the same non-unknown transfer verdict; one `unknown` or a
251
+ positive/non-positive conflict keeps the recommendation unresolved. Historical receipt sizes never
252
+ replace the current `--handoff-bytes` value.
253
+
254
+ Manual evidence flags remain available for controlled experiments and debugging. Explicit values,
255
+ including an explicit `unknown`, always override automatic hydration. Run
256
+ `token-harness schedule --help` for the full list.
257
+
81
258
  To try the read-only diagnosis without installing Token Harness globally:
82
259
 
83
260
  ```sh
@@ -90,7 +267,7 @@ HarnessTrim, or a coding agent.
90
267
  ### Managed compatibility rows
91
268
 
92
269
  Token Harness changes a harness configuration only when a reviewed compatibility row covers the
93
- exact provider version, harness version, platform, and configuration schema. Three rows ship, and each
270
+ exact provider version, harness version, platform, and configuration schema. Four rows ship, and each
94
271
  names the recording it stands on:
95
272
 
96
273
  | Provider | Harness | Platform | Tested versions | Tier |
@@ -98,16 +275,22 @@ names the recording it stands on:
98
275
  | RTK | Claude Code | Windows | rtk 0.44.0, Claude Code 2.1.220 | `canary` |
99
276
  | HarnessTrim | Claude Code | Windows | harnesstrim 0.1.0, Claude Code 2.1.220 | `config-only` |
100
277
  | HarnessTrim | Codex | Windows | harnesstrim 0.1.0, Codex 0.146.0 | `config-only` |
278
+ | HarnessTrim | Codex | Linux (non-WSL) | harnesstrim 0.2.1, Codex 0.152.1 | `config-only` |
101
279
 
102
280
  Everything else is refused, and that is the design rather than a gap: `doctor` detects and reports on
103
281
  every supported platform, and only the *mutation* is narrower. An uncovered combination exits 9 and
104
282
  the diagnostic names what is missing — the reviewed fixture, or the nearest row it does have.
105
283
 
284
+ A live Linux recording on 2026-09-02 promoted exactly one combination to managed mutation:
285
+ Codex 0.152.1 + HarnessTrim 0.2.1 on non-WSL Linux. The fixture covers an empty state, brownfield
286
+ user-owned files, skills-only apply, drift, verified rollback, and surgical uninstall. Nearby Codex
287
+ or HarnessTrim versions and WSL remain refused.
288
+
106
289
  What is not covered today, and why:
107
290
 
108
- - **macOS and Linux.** No row on either. The recordings a row needs are states of a real machine, and
109
- a fixture cannot be written from a machine nobody ran. On those platforms `plan` and `apply` refuse;
110
- install the provider with its own installer and Token Harness will detect, verify, and measure it.
291
+ - **macOS, WSL, and other Linux version combinations.** The recordings a row needs are states of a
292
+ real machine. Only the exact Linux combination above has been reviewed, so all other combinations
293
+ continue to refuse managed mutation while detection, verification, and measurement still work.
111
294
  - **OpenCode, and permanently rather than pending.** Both providers are detected, adopted, verified
112
295
  and measured there, and neither is written. RTK reaches OpenCode through a plugin module its own
113
296
  installer places globally, which this build has no action for. HarnessTrim's OpenCode installer
@@ -475,12 +658,25 @@ Neither command removes user-owned RTK or HarnessTrim configuration.
475
658
 
476
659
  | Command | Purpose | Changes agent/project configuration? |
477
660
  | --- | --- | --- |
478
- | `doctor` | Detect agents, providers, ownership, and problems | No |
479
- | `plan` | Resolve ownership and preview exact actions | No; stores the plan in private state |
480
- | `apply` | Apply a plan transactionally | Yes, only with `--yes` |
661
+ | `doctor` | Detect agents, providers, ownership, versions, and problems | No |
662
+ | `budget` | Read live quota/headroom windows where the harness exposes them | No |
663
+ | `context` | Inspect effective model/config, instructions, MCP exposure, and tool inventory | No |
664
+ | `mcp` | Inspect MCP servers and tool-schema exposure | No |
665
+ | `history` | Summarize attributable local usage history | No |
666
+ | `optimize` | Combine quota pacing, context pressure, and task/profile policy into advice | No |
667
+ | `schedule` | Recommend Claude Code or Codex from independently attributable evidence | No |
668
+ | `handoff` | Build a bounded compact handoff for an in-progress cross-harness move | No |
669
+ | `plan` | Resolve ownership and preview exact actions; use `--native-policy` for supported harness-native changes | No; stores the plan in private state |
670
+ | `apply` | Apply a reviewed plan transactionally | Yes, only with `--yes` |
481
671
  | `status` | Detect drift and competing hooks | No |
482
672
  | `verify` | Check the declared verification tier | No |
483
673
  | `metrics` | Import provider records and report savings | No; updates only Token Harness state |
674
+ | `benchmark` | Compare an explicit baseline/optimized receipt pair | No |
675
+ | `benchmark-start` | Start an empirical task capture | No agent/project config change; records Token Harness benchmark state |
676
+ | `benchmark-finish` | Finish an empirical task capture and record the outcome | No agent/project config change; records Token Harness benchmark state |
677
+ | `benchmark-matrix` | Aggregate complete project-scoped benchmark pairs by task class and evidence | No |
678
+ | `transfer` | Evaluate one empirical cross-harness benchmark pair and exact handoff | No |
679
+ | `transfer-record` | Persist one immutable project-scoped transfer evidence receipt | No agent/project config change; records Token Harness benchmark state |
484
680
  | `update` | Query channels and update installed providers | Yes, only with `--yes` |
485
681
  | `rollback` | Restore files from the latest committed transaction | Yes, only with `--yes` |
486
682
  | `uninstall` | Remove owned integration entries | Yes, only with `--yes` |
@@ -488,9 +684,14 @@ Neither command removes user-owned RTK or HarnessTrim configuration.
488
684
  Every command supports `--help`. Common filters are:
489
685
 
490
686
  ```text
491
- --harness claude|codex|opencode
492
- --provider rtk|harnesstrim
687
+ --harness <id>
688
+ --provider <id>
493
689
  --project <directory>
690
+ --task mechanical|standard|hard|critical
691
+ --profile economy|balanced|quality|custom
692
+ --reserve <percent>
693
+ --native-policy
694
+ --plan <plan-id>
494
695
  --json
495
696
  ```
496
697
 
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "token-harness",
3
- "version": "0.1.3",
4
- "description": "One control plane for token-efficient coding agents.",
3
+ "version": "0.1.6",
4
+ "description": "Quota-aware efficiency layer for Claude Code and Codex subscription limits.",
5
5
  "license": "Apache-2.0",
6
6
  "type": "module",
7
7
  "engines": {
package/sbom.json CHANGED
@@ -1,14 +1,15 @@
1
1
  {
2
2
  "bomFormat": "CycloneDX",
3
3
  "specVersion": "1.5",
4
+ "serialNumber": "urn:uuid:f6a37c3c-4b64-1136-564f-ab6db227d91a",
4
5
  "version": 1,
5
6
  "metadata": {
6
7
  "component": {
7
8
  "type": "application",
8
9
  "bom-ref": "token-harness",
9
10
  "name": "token-harness",
10
- "version": "0.1.3",
11
- "description": "One control plane for token-efficient coding agents.",
11
+ "version": "0.1.6",
12
+ "description": "Quota-aware efficiency layer for Claude Code and Codex subscription limits.",
12
13
  "licenses": [
13
14
  {
14
15
  "license": {
@@ -19,7 +20,7 @@
19
20
  "hashes": [
20
21
  {
21
22
  "alg": "SHA-256",
22
- "content": "d28d7044c0215e3471e990732b14275cca61e57a823e7a04a505748be73613c8"
23
+ "content": "f6a37c3c4b641136564fab6db227d91af645507cf96ea033321bc57cf567756a"
23
24
  }
24
25
  ]
25
26
  },