billion-context 0.1.125-pr.996.859 → 0.1.125

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 (3) hide show
  1. package/README.md +96 -40
  2. package/README.zh-CN.md +37 -18
  3. package/package.json +1 -1
package/README.md CHANGED
@@ -179,9 +179,6 @@ Three ways to use it — pick one:
179
179
  - **URL change (persistent):** prefix your client's baseURL with the proxy
180
180
  origin + `/bili/`.
181
181
 
182
- Mechanism details behind these three options (plugin lifecycle, runtime-info
183
- protocol, injection priority) live in [TECHNICAL-NOTES.md](TECHNICAL-NOTES.md).
184
-
185
182
  ### Option 1 — Native plugin (`bili plugin install pi` / `omp` / `opencode` / `dsh` / `kimi`)
186
183
 
187
184
  The proxy lives inside the client: install once, then start the client
@@ -244,22 +241,52 @@ mixing *writers* is what the guard forbids. `bili plugin update [client]`
244
241
  is the one command that drives every lane through its own owner and prints
245
242
  the per-lane update path (`bili plugin list` shows the same per-lane channel).
246
243
 
247
- At load the plugin **spawns its own proxy** (attaches to a healthy running
248
- one if present; a parent-pid watchdog tears it down when the client exits),
244
+ At load the plugin **spawns its own proxy** (or attaches to a healthy
245
+ running one — a parent-pid watchdog tears it down when the client exits),
249
246
  rewrites model traffic to `<proxy>/bili/<upstream-url>`, registers
250
247
  `compress` / `decompress` / `acp_status` as native client tools (plugin
251
- mode), and reports the client's **own model config** to the proxy so
252
- compression budgets use the real window instead of a registry guess.
253
- Opt-out envs: `BILI_NATIVE_PI=0`, `BILI_NATIVE_OMP=0`,
254
- `BILI_NATIVE_OPENCODE=0`, `BILI_NATIVE_DSH=0`, `BILI_NATIVE_KIMI=0`. Full
255
- mechanics: [TECHNICAL-NOTES.md](TECHNICAL-NOTES.md).
256
-
257
- **Runtime-info protocol (#955).** A native plugin reads the model config
258
- the client itself will use and pushes it to the proxy (per-request headers
259
- + bootstrap report); the proxy prefers that truth over the models.dev
260
- registry / built-in table when resolving the context window. Protocol
261
- details, resolution order, and implementations:
262
- [TECHNICAL-NOTES.md](TECHNICAL-NOTES.md).
248
+ mode), and binds the `/acp` panel to the current session. It also reports
249
+ the client's **own model config** to the proxy (runtime-info protocol,
250
+ #955) so compression budgets use the real window instead of a registry
251
+ guess. Opt-out envs: `BILI_NATIVE_PI=0`, `BILI_NATIVE_OMP=0`,
252
+ `BILI_NATIVE_OPENCODE=0`, `BILI_NATIVE_DSH=0`, `BILI_NATIVE_KIMI=0`.
253
+
254
+ #### Runtime-info protocol (#955)
255
+
256
+ A native plugin lives inside the client process, so it can read the model
257
+ config the client itself will use. It pushes that truth to the proxy on two
258
+ channels, and the proxy prefers it over the models.dev registry / built-in
259
+ table in the context-window chain:
260
+
261
+ | Channel | When | Fields |
262
+ |---|---|---|
263
+ | Per-request headers (gated on `x-bili-plugin`) | every model request | `x-bili-plugin-context-window`, `x-bili-plugin-max-output`, `x-bili-plugin-model` |
264
+ | `POST /__bili/plugin/runtime-info` (loopback) | plugin bootstrap + model switch | `{agent, model, contextWindow?, maxOutput?, baseURL?, source}` |
265
+
266
+ Resolution order for the window: `anthropic-beta` negotiation > per-request
267
+ plugin header > runtime-info table (agent+model must match) > launcher
268
+ env > route config > models.dev registry > built-in table. A reported
269
+ `maxOutput` only stands in when the request body carries no output budget
270
+ of its own. Implementations: `src/agent/pi.ts` (covers pi and omp),
271
+ `src/agent/opencode-native.ts` (v1), `src/agent/opencode-v2.ts`,
272
+ `src/agent/dsh-native.ts`, `src/kimi/native-mcp.ts` (bootstrap-time report
273
+ only — kimi's provider `custom_headers` are static, so per-request headers
274
+ would go stale on model switch) — other client integrations should follow
275
+ the same protocol.
276
+
277
+ The launcher env tier covers pure-proxy clients (no in-process plugin):
278
+ `bili <client>` reads the client's own model config at launch
279
+ (`model_context_window` / `model_max_output_tokens` for codex,
280
+ `contextWindow` / `maxTokens` for pi / omp, `limit.context` / `limit.output`
281
+ for opencode, `maxInputTokens` / `maxOutputTokens` for codebuddy) and hands
282
+ it to the proxy via `BILI_LAUNCHER_MODEL_WINDOWS` / `BILI_LAUNCHER_MODEL_MAX_OUTPUTS`
283
+ (#971). A plugin report — when present — always outranks it.
284
+
285
+ Before the first model request there is no session yet, so the `/acp` panel
286
+ probes `GET /__bili/plugin/status?conversationId=<agent>&fallback=latest`,
287
+ which answers from the runtime table (`phase: "pre-first-request"`) instead
288
+ of 404ing — the reported config is visible immediately, and the real session
289
+ takes over once traffic lands.
263
290
 
264
291
  Notes:
265
292
 
@@ -275,12 +302,39 @@ Notes:
275
302
  mechanics in the "Kimi Code" section below.
276
303
  - `codex` has a companion install too (an MCP shell), but it needs a running
277
304
  proxy — it is not native mode.
278
- - `claude` also has a **native posture** (#964): `bili plugin install
279
- claude` writes a managed settings block (static `/bili/` URL +
280
- `SessionStart` hook) plus an MCP shell pinned to a stable port — the
281
- proxy lives and dies with the session. Opt out with
282
- `BILI_NATIVE_CLAUDE=0` (passthrough). Mechanics:
283
- [TECHNICAL-NOTES.md](TECHNICAL-NOTES.md).
305
+ - `claude` also has a **native posture** (#964, hybrid): Claude Code has no
306
+ in-process extension point, so `bili plugin install claude` writes a
307
+ managed block into `~/.claude/settings.json` (env
308
+ `ANTHROPIC_BASE_URL=http://127.0.0.1:48787/bili/<upstream>`,
309
+ `DISABLE_AUTO_COMPACT=1`, and a `SessionStart` hook) plus the same
310
+ user-scope MCP shell as before, now pinned to that stable port. The hook
311
+ (fired before claude's first model request) attaches to a healthy proxy
312
+ on the port or spawns one whose pid watchdog tracks claude itself, so the
313
+ proxy lives and dies with the session. Port override:
314
+ `BILI_CLAUDE_NATIVE_PORT` > config `claude.nativePort` > 48787; upstream
315
+ override: `BILI_CLAUDE_UPSTREAM` (or the existing `claude.anthropicBaseUrl`
316
+ config). Opt out with `BILI_NATIVE_CLAUDE=0` — the hook then brings up a
317
+ **passthrough** proxy on the same port (verbatim forward, compression
318
+ off) so claude keeps working. The block is pure JSON merge/strip: foreign
319
+ keys are never touched, `bili plugin remove claude` restores exactly.
320
+ `bili claude` still works on a machine with the native block installed —
321
+ it overrides the static URL with its own ephemeral proxy and the hook
322
+ stays dormant.
323
+
324
+ ### Injection priority — no files unless unavoidable (#535)
325
+
326
+ bili never owns user data: every launched client runs on its **real home**, so
327
+ runtime writes land where the user expects them. When pointing a client at the
328
+ proxy, the launcher picks by priority — **env vars first** (proxy/CA envs for
329
+ hermes/dsh/codex; the `BILI_PROVIDER_REWRITES` URL manifest for pi/omp,
330
+ consumed by their extension's `registerProvider` at load), then **CLI flags or
331
+ extension APIs** (codex `-c key=value`, opencode plugin), and **generated files
332
+ last** — today only opencode's temp `opencode.json` (deleted on exit) and dsh's
333
+ loopback exception: dsh's fetch stack bypasses proxy envs for loopback targets
334
+ unconditionally, so local upstreams keep the persistent `~/.dsh-bili` overlay
335
+ rewrite until dsh gains a settings-path env or an upstream loopback opt-out.
336
+ Overlay dirs created by older versions are left in place and never merged back
337
+ into the real home.
284
338
 
285
339
  ### Option 2 — Launcher (`bili pi` / `bili codex` / `bili claude` / `bili omp` / `bili opencode` / `bili hermes` / `bili dsh` / `bili codebuddy` / `bili qoder` / `bili trae` / `bili jcode` / `bili kimi`)
286
340
 
@@ -334,23 +388,6 @@ automatically.
334
388
  For per-client configuration examples (OpenCode, Codex, Pi, login-client
335
389
  MITM, …) see the web UI guide at [http://localhost:8787](http://localhost:8787).
336
390
 
337
- **Verify.** With the proxy running and your config saved, check it answers
338
- and that your first real request shows compression activity in the log:
339
-
340
- ```bash
341
- # Health check (proxy up + where it forwards)
342
- curl -s http://localhost:8787/__bili/health
343
- # → {"ok":true,"upstream":"https://api.anthropic.com"}
344
-
345
- # Live session stats (after a real request)
346
- curl -s http://localhost:8787/__bili/stats
347
- ```
348
-
349
- Then send one message from your client and watch the log
350
- (`~/.local/state/billion-context/bili.log`, also printed to stderr). You
351
- should see a `processTurn` line per request, and once the conversation grows,
352
- `[acp-usage] round N input=X cached=Y (cache hit Z%)` + a `compress` event.
353
-
354
391
  ### dsh (deepseek-harness)
355
392
 
356
393
  Two lanes, same plugin (#941):
@@ -449,6 +486,25 @@ small node scripts that do the work around the client:
449
486
  NOT pushed out — ACP compression simply fires first, as in launcher mode.
450
487
  Opt-out: `BILI_NATIVE_KIMI=0`.
451
488
 
489
+ ### Verify
490
+
491
+ With the proxy running and your config saved, check it answers and that your
492
+ first real request shows compression activity in the log:
493
+
494
+ ```bash
495
+ # Health check (proxy up + where it forwards)
496
+ curl -s http://localhost:8787/__bili/health
497
+ # → {"ok":true,"upstream":"https://api.anthropic.com"}
498
+
499
+ # Live session stats (after a real request)
500
+ curl -s http://localhost:8787/__bili/stats
501
+ ```
502
+
503
+ Then send one message from your client and watch the log
504
+ (`~/.local/state/billion-context/bili.log`, also printed to stderr). You
505
+ should see a `processTurn` line per request, and once the conversation grows,
506
+ `[acp-usage] round N input=X cached=Y (cache hit Z%)` + a `compress` event.
507
+
452
508
  ### Client uses `http.proxy` (CONNECT) but nothing compresses
453
509
 
454
510
  Some clients (VS Code-based IDEs: CodeBuddy, Cursor, Windsurf, …) only offer an HTTP **proxy** setting (`http.proxy`, `codingcopilot.httpProxyURL`, …) — no model base-URL to rewrite. Such clients send `CONNECT <model-host>:443` through the proxy instead of plain `/bili/…` requests. That path is only decrypted when the model host is on bili's **MITM whitelist**; otherwise bili blind-tunnels the TLS bytes (opaque relay) and can never see — or compress — the model requests (#897).
package/README.zh-CN.md CHANGED
@@ -104,8 +104,6 @@ npm install -g billion-context
104
104
  - **启动器(最省事):** `bili <client>` 一条命令拉起代理 + 客户端,不碰任何真实配置文件.
105
105
  - **改url(持久化):** 在客户端 baseURL 前面加上代理地址 + `/bili/`。
106
106
 
107
- 三种方式背后的机制细节(插件生命周期、runtime-info 协议、注入优先级)见 [TECHNICAL-NOTES.zh-CN.md](TECHNICAL-NOTES.zh-CN.md)。
108
-
109
107
 
110
108
 
111
109
  ### 方式 1 —— 原生插件(native,`bili plugin install pi` / `omp` / `opencode` / `dsh` / `kimi`)
@@ -128,18 +126,35 @@ bili plugin remove <client> # 卸载(dsh 经同一通道移除;配置快照
128
126
 
129
127
  pi / omp / kimi / claude 没有客户端侧通道 —— 它们的配置条目由 `bili plugin install <client>` 代写(kimi 的声明式 `kimi.plugin.json` + 注册记录、claude 的受管 settings 块等)。
130
128
 
131
- 插件加载时**自拉起自己的代理**(已有健康实例则直接复用;父进程 pid 看门狗在客户端退出时收掉它),把模型流量改写到 `<proxy>/bili/<上游URL>`,注册 `compress` / `decompress` / `acp_status` 为客户端原生工具(plugin 模式),并把客户端**自己的模型配置**上报给代理让压缩预算用真实窗口而不是注册表猜测。退出开关:`BILI_NATIVE_PI=0`、`BILI_NATIVE_OMP=0`、`BILI_NATIVE_OPENCODE=0`、`BILI_NATIVE_DSH=0`、`BILI_NATIVE_KIMI=0`。完整机制:[TECHNICAL-NOTES.zh-CN.md](TECHNICAL-NOTES.zh-CN.md)。
129
+ 插件加载时**自拉起自己的代理**(已有健康实例则直接复用 —— 父进程 pid 看门狗在客户端退出时收掉它),把模型流量改写到 `<proxy>/bili/<上游URL>`,并把 `compress` / `decompress` / `acp_status` 注册为客户端原生工具(plugin 模式),`/acp` 面板绑定当前会话。插件还会把客户端**自己的模型配置**上报给代理(runtime-info 协议,#955),压缩预算用真实窗口而不是注册表猜测。退出开关:`BILI_NATIVE_PI=0`、`BILI_NATIVE_OMP=0`、`BILI_NATIVE_OPENCODE=0`、`BILI_NATIVE_DSH=0`、`BILI_NATIVE_KIMI=0`。
130
+
131
+ #### Runtime-info 协议(#955)
132
+
133
+ 原生插件就在客户端进程里,因此能读到客户端自己将要使用的模型配置。它通过两个通道把真相推给代理,代理在上下文窗口解析链里优先采用它而不是 models.dev 注册表/内置表:
134
+
135
+ | 通道 | 时机 | 字段 |
136
+ |---|---|---|
137
+ | 逐请求头(门控在 `x-bili-plugin`) | 每次模型请求 | `x-bili-plugin-context-window`、`x-bili-plugin-max-output`、`x-bili-plugin-model` |
138
+ | `POST /__bili/plugin/runtime-info`(回环地址) | 插件自举 + 模型切换 | `{agent, model, contextWindow?, maxOutput?, baseURL?, source}` |
139
+
140
+ 窗口解析顺序:`anthropic-beta` 协商 > 逐请求 plugin 头 > runtime-info 表(agent+model 必须匹配) > launcher 环境变量 > 路由配置 > models.dev 注册表 > 内置表。上报的 `maxOutput` 仅在请求体自带输出预算缺席时兜底。现有实现:`src/agent/pi.ts`(覆盖 pi 与 omp)、`src/agent/opencode-native.ts`(v1)、`src/agent/opencode-v2.ts`、`src/agent/dsh-native.ts`、`src/kimi/native-mcp.ts`(仅自举时上报 —— kimi 的 provider `custom_headers` 是静态的,逐请求头会在模型切换后过期)—— 其他客户端接入请遵循同一协议。
132
141
 
133
- **Runtime-info 协议(#955)。** 原生插件读取客户端自己将要使用的模型配置并推给代理(逐请求头 + 自举上报);代理解析上下文窗口时优先采用这份真相,而不是 models.dev 注册表/内置表。协议细节、解析顺序与现有实现:[TECHNICAL-NOTES.zh-CN.md](TECHNICAL-NOTES.zh-CN.md)。
142
+ launcher 环境变量这档覆盖纯代理客户端(无进程内插件):`bili <client>` 启动时读客户端自己的模型配置(codex 的 `model_context_window` / `model_max_output_tokens`,pi / omp 的 `contextWindow` / `maxTokens`,opencode 的 `limit.context` / `limit.output`,codebuddy 的 `maxInputTokens` / `maxOutputTokens`),经 `BILI_LAUNCHER_MODEL_WINDOWS` / `BILI_LAUNCHER_MODEL_MAX_OUTPUTS` 交给代理(#971)。插件上报 —— 若存在 —— 永远优先于它。
143
+
144
+ 首次模型请求之前会话尚不存在,`/acp` 面板会探测 `GET /__bili/plugin/status?conversationId=<agent>&fallback=latest`,代理从 runtime-info 表应答(`phase: "pre-first-request"`)而不是返回 404 —— 上报的配置立即可见,流量落地后由真实会话接管。
134
145
 
135
146
  注意:
136
147
 
137
148
  - 原生模式与独立进程内扩展(`billion-context-pi`、`opencode-acp`)**互斥** —— 安装器负责换条目并把原配置快照(`.bili-bak`);迁移细节见上方客户端表(pi 需 `billion-context-pi` 0.1.72+ 才能干净退让)。
138
149
  - OpenCode:legacy `opencode-acp` 会话、V1/V2 插件形态与全部注意事项已并入 [OpenCode](#opencode) 一节。
139
150
  - `kimi` 仅在自举时上报 runtime-info(静态 `custom_headers` 无法承载逐请求的窗口/模型头,否则会在模型切换后过期),子代理会话按每次调用的 `conversation_id` 绑定 —— 完整机制见下文「Kimi Code」小节。
140
- - `claude` 有**原生姿态**(#964):`bili plugin install claude` 写入受管 settings 块(静态 `/bili/` URL + `SessionStart` hook)+ 指向稳定端口的 MCP shell —— 代理随会话生灭。`BILI_NATIVE_CLAUDE=0` 退出(passthrough)。机制细节:[TECHNICAL-NOTES.zh-CN.md](TECHNICAL-NOTES.zh-CN.md)。
151
+ - `claude` 有**原生姿态**(hybrid,#964):Claude Code 没有进程内扩展点,所以 `bili plugin install claude` 往 `~/.claude/settings.json` 写一个受管块(env `ANTHROPIC_BASE_URL=http://127.0.0.1:48787/bili/<upstream>`、`DISABLE_AUTO_COMPACT=1`、`SessionStart` hook),外加同样指向该稳定端口的用户级 MCP shell。hook 在首个模型请求前触发:附着到端口上健康的代理,或拉起一个 pid 看门狗追踪 claude 本身的代理 —— 代理随会话生灭。端口覆盖:`BILI_CLAUDE_NATIVE_PORT` > config `claude.nativePort` > 48787;上游覆盖:`BILI_CLAUDE_UPSTREAM`(或既有 `claude.anthropicBaseUrl`)。`BILI_NATIVE_CLAUDE=0` 退出 —— hook 改为拉起同端口的 **passthrough** 代理(原样转发、关闭压缩)。块是纯 JSON merge/strip:外部键从不触碰,`bili plugin remove claude` 精确还原。装有原生块的机器上 `bili claude` 仍可用 —— 它用自身临时代理覆盖静态 URL,hook 保持休眠。
141
152
  - `codex` / `omp` 也有配套安装(MCP shell 与轻量扩展),但它们需要一个在跑的代理 —— 不属于原生模式。
142
153
 
154
+ ### 注入优先级 —— 能不写文件就不写(#535)
155
+
156
+ bili 永不拥有用户数据:每个被启动的客户端都跑在**真实 home** 上,运行期写入落在用户预期的位置。把客户端指向代理时,启动器按优先级选择——**优先 env 变量**(hermes/dsh/codex 的代理/CA env;pi/omp 的 `BILI_PROVIDER_REWRITES` URL 清单,由扩展加载时经 `registerProvider` 消费),其次 **CLI 参数或扩展 API**(codex `-c key=value`、opencode 插件),最后才是**生成文件**——目前仅剩 opencode 的临时 `opencode.json`(退出即删)和 dsh 的回环例外:dsh 的 fetch 栈对回环目标无条件绕过代理 env,所以本地上游保留持久 `~/.dsh-bili` overlay 改写,直到 dsh 提供 settings-path env 或上游支持回环 opt-out。旧版本创建的 overlay 目录原地保留,绝不合并回真实 home。
157
+
143
158
  ### 方式 2 —— 启动器(`bili pi` / `bili codex` / `bili claude` / `bili omp` / `bili opencode` / `bili hermes` / `bili dsh` / `bili codebuddy` / `bili qoder` / `bili trae` / `bili jcode` / `bili kimi`)
144
159
 
145
160
  启动器把客户端包进一条命令:在独立端口拉起一个代理(总是全新实例,绝不复用端口),再按客户端支持的机制把它指向代理 —— 能吃代理/CA 环境变量的走**证书 MITM**,不吃的走隔离的**`/bili/` 配置重写**。真实配置文件从不被修改;客户端自己的配置只被**读取**,用来发现它实际连接的 HTTPS 上游主机,把这些主机加入 MITM 白名单 —— 代理只 TLS 终结它们,其余流量盲透传。
@@ -178,19 +193,6 @@ bili
178
193
 
179
194
  更多客户端配置参考网页引导: [http://localhost:8787](http://localhost:8787) .
180
195
 
181
- **验证。** 代理跑着、配置保存了之后,确认它能应答,并且第一个真实请求在日志里显示压缩活动:
182
-
183
- ```bash
184
- # 健康检查(代理是否在跑 + 转发到哪)
185
- curl -s http://localhost:8787/__bili/health
186
- # → {"ok":true,"upstream":"https://api.anthropic.com"}
187
-
188
- # 实时会话统计(发过真实请求后)
189
- curl -s http://localhost:8787/__bili/stats
190
- ```
191
-
192
- 然后从助手发一条消息,观察日志(`~/.local/state/billion-context/bili.log`,同时也打到 stderr)。每个请求应该看到一行 `processTurn`,等对话变长后会出现 `[acp-usage] round N input=X cached=Y (cache hit Z%)` + `compress` 事件。
193
-
194
196
  ### dsh(deepseek-harness)
195
197
 
196
198
  两条通道,同一个插件(#941):
@@ -211,6 +213,23 @@ curl -s http://localhost:8787/__bili/stats
211
213
  - **看门狗与生命周期:** MCP 子进程每 30 s 探测一次代理。attach 模式下永远等待(绝不碰用户自己的代理);spawn 模式下代理死亡则重新拉起并把路由改写到新 origin。恢复失败时移除受管块,让流量退回直连上游而不是打到死端口。会话结束时 kimi 杀掉 MCP 子进程,父进程 pid 看门狗随之收掉拉起的代理。多个并发 TUI 共享第一个拉起的代理;它消失后其余会话自动重新拉起并改路。
212
214
  - **已知局限:** 子代理会话各自得到独立的派生代理会话(kimi 不暴露稳定的会话 id;工具调用经每次调用的 `conversation_id` 参数绑定);kimi 的原生自动压缩**没有**被推后 —— ACP 压缩只是先触发,与启动器模式一致。退出开关:`BILI_NATIVE_KIMI=0`。
213
215
 
216
+ ### 验证
217
+
218
+ 代理跑着、配置保存了之后,确认它能应答,并且第一个真实请求在日志里显示压缩活动:
219
+
220
+ ```bash
221
+ # 健康检查(代理是否在跑 + 转发到哪)
222
+ curl -s http://localhost:8787/__bili/health
223
+ # → {"ok":true,"upstream":"https://api.anthropic.com"}
224
+
225
+ # 实时会话统计(发过真实请求后)
226
+ curl -s http://localhost:8787/__bili/stats
227
+ ```
228
+
229
+ 然后从助手发一条消息,观察日志(`~/.local/state/billion-context/bili.log`,
230
+ 同时也打到 stderr)。每个请求应该看到一行 `processTurn`,等对话变长后
231
+ 会出现 `[acp-usage] round N input=X cached=Y (cache hit Z%)` + `compress` 事件。
232
+
214
233
  ### 客户端用 `http.proxy`(CONNECT)接入但从不压缩
215
234
 
216
235
  部分客户端(VS Code 系 IDE:CodeBuddy、Cursor、Windsurf……)只提供一个 HTTP **代理**设置(`http.proxy`、`codingcopilot.httpProxyURL` 等),没有可改写的模型 base-URL。这类客户端不走普通的 `/bili/…` 请求,而是把 `CONNECT <模型域名>:443` 发给代理。只有当模型域名在 bili 的 **MITM 白名单**里时这条路径才会被解密;否则 bili 只做盲隧道(不透明转发),永远看不到——也就无法压缩——模型请求(#897)。
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "billion-context",
3
- "version": "0.1.125-pr.996.859",
3
+ "version": "0.1.125",
4
4
  "description": "Context-compression proxy that lets AI coding agents run for days — billions of tokens through one context window. Sits between any agent (Claude Code, Codex, Cursor, Aider, …) and its model API, folding consumed conversation into reversible, prefix-cache-friendly summaries. Zero per-agent code: just point your base URL at the proxy.",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",