chivgent 0.7.1 → 0.9.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.
Files changed (53) hide show
  1. package/README.md +95 -3
  2. package/README.zh-CN.md +87 -3
  3. package/dist/agent.d.ts +14 -0
  4. package/dist/agent.d.ts.map +1 -1
  5. package/dist/agent.js +33 -1
  6. package/dist/agent.js.map +1 -1
  7. package/dist/auth/credentials.d.ts +26 -0
  8. package/dist/auth/credentials.d.ts.map +1 -0
  9. package/dist/auth/credentials.js +29 -0
  10. package/dist/auth/credentials.js.map +1 -0
  11. package/dist/auth/env-credentials.d.ts +10 -0
  12. package/dist/auth/env-credentials.d.ts.map +1 -0
  13. package/dist/auth/env-credentials.js +18 -0
  14. package/dist/auth/env-credentials.js.map +1 -0
  15. package/dist/auth/file-credentials.d.ts +25 -0
  16. package/dist/auth/file-credentials.d.ts.map +1 -0
  17. package/dist/auth/file-credentials.js +94 -0
  18. package/dist/auth/file-credentials.js.map +1 -0
  19. package/dist/auth/runtime-credentials.d.ts +10 -0
  20. package/dist/auth/runtime-credentials.d.ts.map +1 -0
  21. package/dist/auth/runtime-credentials.js +15 -0
  22. package/dist/auth/runtime-credentials.js.map +1 -0
  23. package/dist/cli-options.d.ts +16 -9
  24. package/dist/cli-options.d.ts.map +1 -1
  25. package/dist/cli-options.js +72 -26
  26. package/dist/cli-options.js.map +1 -1
  27. package/dist/cli.js +14 -42
  28. package/dist/cli.js.map +1 -1
  29. package/dist/context/compaction.d.ts +39 -0
  30. package/dist/context/compaction.d.ts.map +1 -0
  31. package/dist/context/compaction.js +141 -0
  32. package/dist/context/compaction.js.map +1 -0
  33. package/dist/context/context-manager.d.ts +72 -0
  34. package/dist/context/context-manager.d.ts.map +1 -0
  35. package/dist/context/context-manager.js +129 -0
  36. package/dist/context/context-manager.js.map +1 -0
  37. package/dist/context/token-estimator.d.ts +22 -0
  38. package/dist/context/token-estimator.d.ts.map +1 -0
  39. package/dist/context/token-estimator.js +43 -0
  40. package/dist/context/token-estimator.js.map +1 -0
  41. package/dist/providers/client.d.ts +7 -0
  42. package/dist/providers/client.d.ts.map +1 -0
  43. package/dist/providers/client.js +48 -0
  44. package/dist/providers/client.js.map +1 -0
  45. package/dist/providers/definitions.d.ts +25 -0
  46. package/dist/providers/definitions.d.ts.map +1 -0
  47. package/dist/providers/definitions.js +97 -0
  48. package/dist/providers/definitions.js.map +1 -0
  49. package/dist/providers/registry.d.ts +15 -0
  50. package/dist/providers/registry.d.ts.map +1 -0
  51. package/dist/providers/registry.js +34 -0
  52. package/dist/providers/registry.js.map +1 -0
  53. package/package.json +1 -1
package/README.md CHANGED
@@ -24,11 +24,14 @@ to study before adding production-harness complexity.
24
24
 
25
25
  - A real multi-turn agent loop: model -> tool call -> tool result -> model.
26
26
  - Provider-independent runtime messages and tool contracts.
27
+ - A Provider registry: adding a Provider is a declaration, not a CLI change.
28
+ - API keys resolved from `--api-key`, the environment, then an optional file.
27
29
  - OpenAI support through the Responses API.
28
30
  - DeepSeek support through a reusable OpenAI-compatible Chat Completions client.
29
31
  - Custom OpenAI-compatible endpoints through environment-only configuration.
30
32
  - An interactive session with slash commands, or a single-shot question.
31
33
  - Sessions that persist as JSON lines and can be resumed in a later process.
34
+ - A context manager that summarises old turns to stay inside the window.
32
35
  - A `--json` event stream for scripting and other front ends.
33
36
  - Streamed answers rendered from a typed runtime event stream.
34
37
  - Interruptible runs: Ctrl+C ends the current run without losing the transcript.
@@ -131,8 +134,11 @@ Options:
131
134
  --json Write the run as JSON lines instead of rendered text
132
135
  -c, --continue Resume the most recent session for this workspace
133
136
  --resume ID Resume a specific session
137
+ --api-key KEY API key for this run; prefer an environment variable
134
138
  --sessions List recorded sessions and exit
135
139
  --allow-writes Let the agent create and change files (default: read-only)
140
+ --context-window N Token budget for the context (default: 128000)
141
+ --no-compaction Send the whole transcript instead of summarising old turns
136
142
  --no-session Do not record this run
137
143
  -h, --help Show help
138
144
  -v, --version Show version
@@ -152,12 +158,45 @@ reached, `130` interrupted with Ctrl+C.
152
158
  | OpenAI | `OPENAI_API_KEY` | `OPENAI_MODEL` | `gpt-5.6` | Responses API |
153
159
  | DeepSeek | `DEEPSEEK_API_KEY` | `DEEPSEEK_MODEL` | `deepseek-v4-flash` | OpenAI-compatible Chat Completions |
154
160
  | Custom compatible | `OPENAI_API_KEY` | `OPENAI_MODEL` | Required | OpenAI-compatible Chat Completions |
161
+ | OpenRouter | `OPENROUTER_API_KEY` | `OPENROUTER_MODEL` | Required | OpenAI-compatible Chat Completions |
162
+ | Groq | `GROQ_API_KEY` | `GROQ_MODEL` | Required | OpenAI-compatible Chat Completions |
163
+ | xAI | `XAI_API_KEY` | `XAI_MODEL` | Required | OpenAI-compatible Chat Completions |
164
+ | Moonshot | `MOONSHOT_API_KEY` | `MOONSHOT_MODEL` | Required | OpenAI-compatible Chat Completions |
155
165
 
156
166
  An explicit `--model` value takes precedence over the Provider-specific model
157
167
  environment variable. Custom compatible Providers also require
158
168
  `OPENAI_BASE_URL`. Sessions are written under `CHIVGENT_HOME` (default
159
169
  `~/.chivgent`).
160
170
 
171
+ Providers are declared in a registry rather than branched on in the CLI, so
172
+ `--help` and `--provider` validation are generated from the same list that
173
+ creates the client.
174
+
175
+ #### API key resolution
176
+
177
+ Keys are resolved in this order, first match wins:
178
+
179
+ 1. `--api-key` for a single run
180
+ 2. the Provider's environment variable
181
+ 3. `<CHIVGENT_HOME>/auth.json`
182
+
183
+ An environment variable deliberately beats the stored file, matching the
184
+ convention other CLIs use, so a stored key can be overridden for one run
185
+ without editing anything.
186
+
187
+ `auth.json` is optional and holds literal keys only:
188
+
189
+ ```json
190
+ {
191
+ "openai": { "type": "api_key", "key": "sk-..." },
192
+ "deepseek": "sk-..."
193
+ }
194
+ ```
195
+
196
+ Neither `$VAR` expansion nor `!command` substitution is supported: letting a
197
+ config file spawn a process is a large attack surface for a small convenience.
198
+ chivgent warns when the file is readable by other users; keep it at `chmod 600`.
199
+
161
200
  ```bash
162
201
  chivgent --provider openai --model gpt-5.6 "Explain package.json"
163
202
  chivgent --provider deepseek --model deepseek-v4-pro "Explain package.json"
@@ -187,6 +226,42 @@ AssistantMessage <- normalized result
187
226
  This prevents the Agent, tools, and CLI from depending on one vendor's message
188
227
  format.
189
228
 
229
+ ### Context management
230
+
231
+ A session records everything that happened. The context manager decides what
232
+ is worth sending for one request. Keeping those apart is what lets a long
233
+ session stay inside a fixed context window.
234
+
235
+ ```text
236
+ Full transcript ──────────────→ Session store (what happened)
237
+
238
+
239
+ ContextManager
240
+ │ token estimate vs. contextWindow - reserveTokens
241
+
242
+ summary + recent messages ────→ Provider (what the model sees)
243
+ ```
244
+
245
+ When the estimate exceeds the budget, older messages are summarised into a
246
+ single message and recent turns are kept verbatim. Three details matter:
247
+
248
+ - **File lists are derived from tool calls, not from the summary.** A summary
249
+ can forget or invent a path. For a coding agent, "which files did I read and
250
+ change" is the part that most needs to survive intact, so it is collected
251
+ from the `read_file`, `write_file`, and `edit_file` calls themselves.
252
+ - **Tool calls are never separated from their results.** A split point that
253
+ would orphan a tool result moves forward past the whole group.
254
+ - **Compaction discards the Provider continuation.** A Provider that chains
255
+ history server-side replays its own copy and ignores the messages sent with
256
+ it, so keeping the continuation would send back the history just removed.
257
+
258
+ Token counts are estimated from character length rather than with a real
259
+ tokenizer, which would be model-specific and a large dependency for a number
260
+ that only decides *when* to compact. The reserve budget absorbs the error.
261
+
262
+ A single tool result larger than the whole budget cannot be compacted away;
263
+ bound tool output instead. Compaction is disabled with `--no-compaction`.
264
+
190
265
  ### Runtime events
191
266
 
192
267
  The Agent Loop reports what it is doing through a typed event stream instead of
@@ -252,6 +327,11 @@ inside thin Provider adapters rather than leaking them into the Agent loop.
252
327
  src/
253
328
  cli.ts CLI entry point and process boundary
254
329
  cli-options.ts Argument and Provider configuration
330
+ auth/
331
+ credentials.ts Credential contract and resolution order
332
+ runtime-credentials.ts --api-key override
333
+ env-credentials.ts Environment variable lookup
334
+ file-credentials.ts Optional auth.json store
255
335
  agent.ts Agent loop and run state
256
336
  events.ts Runtime event model
257
337
  render.ts Terminal renderer for runtime events
@@ -261,6 +341,10 @@ src/
261
341
  session.ts Conversation state and event fan-out
262
342
  session-store.ts JSONL session log and resume support
263
343
  repl.ts Interactive prompt and slash commands
344
+ context/
345
+ context-manager.ts Builds the messages for one request
346
+ compaction.ts Summarises old history and tracks files
347
+ token-estimator.ts Character-based token approximation
264
348
  workspace.ts Workspace configuration and the read-only default
265
349
  workspace/
266
350
  types.ts Limits, errors, and the Workspace contract
@@ -272,6 +356,9 @@ src/
272
356
  search.ts Literal text search
273
357
  write.ts Atomic whole-file writes and exact edits
274
358
  providers/
359
+ registry.ts Provider registry
360
+ definitions.ts Built-in Provider declarations
361
+ client.ts Credential resolution into an LLM client
275
362
  openai.ts OpenAI Responses adapter
276
363
  openai-compatible-chat.ts Shared Chat Completions adapter
277
364
  deepseek.ts DeepSeek configuration wrapper
@@ -314,7 +401,12 @@ manual so the default test suite never consumes credits.
314
401
 
315
402
  ## Security model
316
403
 
317
- - API keys are read from environment variables and must never be committed.
404
+ - API keys come from `--api-key`, an environment variable, or an optional
405
+ `auth.json`, in that order, and must never be committed.
406
+ - `auth.json` stores keys in plain text. It is opt-in for that reason, and
407
+ chivgent warns when its permissions let other users read it.
408
+ - The auth file accepts literal keys only; it cannot expand environment
409
+ variables or run shell commands.
318
410
  - A custom `OPENAI_BASE_URL` receives the configured API key and prompts; use
319
411
  only endpoints you trust.
320
412
  - Workspace tools are read-only unless `--allow-writes` is passed; `write_file`
@@ -353,11 +445,11 @@ a sensitive project.
353
445
  - [x] Project discovery tools: `list_files`, `search_text`, and ranged `read_file`
354
446
  - [x] Streaming output and runtime events
355
447
  - [x] Persistent multi-turn sessions
356
- - [ ] Context-window management and compaction
448
+ - [x] Context-window management and compaction
357
449
  - [x] Opt-in `write_file` and `edit_file` behind `--allow-writes`
358
450
  - [ ] Per-edit confirmation prompts and an undo log
359
451
  - [ ] Permission-gated shell tools
360
- - [ ] Provider registry and user configuration file
452
+ - [x] Provider registry and credential resolution chain
361
453
  - [ ] TUI, extensions, telemetry, and evals
362
454
 
363
455
  ## Documentation
package/README.zh-CN.md CHANGED
@@ -21,6 +21,8 @@
21
21
 
22
22
  - 完整的多轮 Agent Loop:模型 -> Tool Call -> Tool Result -> 模型。
23
23
  - Provider 无关的运行时消息和工具契约。
24
+ - Provider 注册表:新增 Provider 只是一条声明,不需要改 CLI。
25
+ - API Key 依次从 `--api-key`、环境变量、可选文件解析。
24
26
  - 通过 Responses API 支持 OpenAI。
25
27
  - 通过通用 OpenAI-compatible Chat Completions 客户端支持 DeepSeek。
26
28
  - 无需修改代码即可配置自定义 OpenAI-compatible API。
@@ -28,6 +30,7 @@
28
30
  - Session 以 JSON Lines 持久化,可以在之后的进程中恢复。
29
31
  - 提供 `--json` 事件流,便于脚本和其他前端消费。
30
32
  - 基于类型化运行时事件流的流式输出。
33
+ - 上下文管理器:压缩较早的轮次以待在窗口内。
31
34
  - 可中断的运行:Ctrl+C 结束当前运行,且不会丢失已产生的 transcript。
32
35
  - Provider 调用具备单次超时和有上限的指数退避重试。
33
36
  - 通过 `list_files` 和字面量 `search_text` 确定性地发现项目内容。
@@ -127,8 +130,11 @@ chivgent [选项] 进入交互式会话
127
130
  --json 以 JSON Lines 输出整次运行,而不是渲染文本
128
131
  -c, --continue 恢复当前工作区最近的一次 Session
129
132
  --resume ID 恢复指定 Session
133
+ --api-key KEY 本次运行使用的 API Key;更推荐用环境变量
130
134
  --sessions 列出已记录的 Session 并退出
131
135
  --allow-writes 允许 Agent 创建和修改文件(默认只读)
136
+ --context-window N 上下文的 Token 预算(默认:128000)
137
+ --no-compaction 发送完整 transcript,不压缩较早的轮次
132
138
  --no-session 不记录本次运行
133
139
  -h, --help 显示帮助
134
140
  -v, --version 显示版本
@@ -147,10 +153,41 @@ Ctrl+C 中断。
147
153
  | OpenAI | `OPENAI_API_KEY` | `OPENAI_MODEL` | `gpt-5.6` | Responses API |
148
154
  | DeepSeek | `DEEPSEEK_API_KEY` | `DEEPSEEK_MODEL` | `deepseek-v4-flash` | OpenAI-compatible Chat Completions |
149
155
  | 自定义兼容供应商 | `OPENAI_API_KEY` | `OPENAI_MODEL` | 必填 | OpenAI-compatible Chat Completions |
156
+ | OpenRouter | `OPENROUTER_API_KEY` | `OPENROUTER_MODEL` | 必填 | OpenAI-compatible Chat Completions |
157
+ | Groq | `GROQ_API_KEY` | `GROQ_MODEL` | 必填 | OpenAI-compatible Chat Completions |
158
+ | xAI | `XAI_API_KEY` | `XAI_MODEL` | 必填 | OpenAI-compatible Chat Completions |
159
+ | Moonshot | `MOONSHOT_API_KEY` | `MOONSHOT_MODEL` | 必填 | OpenAI-compatible Chat Completions |
150
160
 
151
161
  显式传入的 `--model` 优先于 Provider 对应的模型环境变量。自定义兼容供应商还必须
152
162
  配置 `OPENAI_BASE_URL`。Session 记录在 `CHIVGENT_HOME`(默认 `~/.chivgent`)下。
153
163
 
164
+ Provider 通过注册表声明,而不是在 CLI 里分支判断,因此 `--help` 的内容、
165
+ `--provider` 的校验和实际创建 Client 用的是同一份清单。
166
+
167
+ #### API Key 解析顺序
168
+
169
+ 按以下顺序解析,命中即停:
170
+
171
+ 1. `--api-key`(仅本次运行)
172
+ 2. Provider 对应的环境变量
173
+ 3. `<CHIVGENT_HOME>/auth.json`
174
+
175
+ 环境变量刻意排在文件之前,与其他 CLI 的惯例一致,这样已存储的 Key 可以被
176
+ 一次性的环境变量临时覆盖,而不必改文件。
177
+
178
+ `auth.json` 是可选的,只接受字面量 Key:
179
+
180
+ ```json
181
+ {
182
+ "openai": { "type": "api_key", "key": "sk-..." },
183
+ "deepseek": "sk-..."
184
+ }
185
+ ```
186
+
187
+ 不支持 `$VAR` 展开,也不支持 `!command` 替换:让配置文件能够启动进程,
188
+ 是用很小的便利换很大的攻击面。当该文件可被其他用户读取时 chivgent 会告警,
189
+ 请保持 `chmod 600`。
190
+
154
191
  ```bash
155
192
  chivgent --provider openai --model gpt-5.6 "解释 package.json"
156
193
  chivgent --provider deepseek --model deepseek-v4-pro "解释 package.json"
@@ -179,6 +216,39 @@ AssistantMessage <- Normalized Result
179
216
 
180
217
  因此 Agent、工具和 CLI 不会依赖任何单一供应商的消息格式。
181
218
 
219
+ ### 上下文管理
220
+
221
+ Session 记录发生过的一切;Context Manager 决定这一次请求值得发送什么。把两者
222
+ 分开,才能让长会话待在固定的上下文窗口内。
223
+
224
+ ```text
225
+ 完整 transcript ──────────────→ Session Store(发生了什么)
226
+
227
+
228
+ ContextManager
229
+ │ token 估算 vs. contextWindow - reserveTokens
230
+
231
+ 摘要 + 最近消息 ──────────────→ Provider(模型看到什么)
232
+ ```
233
+
234
+ 当估算超出预算时,较早的消息会被压缩成一条摘要消息,最近若干轮原样保留。
235
+ 有三个细节值得注意:
236
+
237
+ - **文件清单从工具调用推导,而不是从摘要里提取。** 摘要可能遗漏或者编造路径。
238
+ 对 Coding Agent 来说,「我读过和改过哪些文件」是最需要完整存活的信息,因此
239
+ 它直接从 `read_file`、`write_file`、`edit_file` 的调用参数收集。
240
+ - **工具调用永远不会和它的结果被切开。** 会把 tool result 孤立的切点会向前
241
+ 移动,越过整组消息。
242
+ - **压缩会丢弃 Provider continuation。** 在服务端串联历史的 Provider 会重放
243
+ 它自己那份历史、忽略请求里带的消息,保留 continuation 等于把刚压缩掉的历史
244
+ 又送了回去。
245
+
246
+ Token 数量按字符长度估算,而不是用真正的 tokenizer:后者与模型强相关,为一个
247
+ 只用来决定「何时压缩」的数字引入大依赖并不划算,估算误差由 reserve 预算吸收。
248
+
249
+ 单条超过整个预算的工具结果无法被压缩掉,这种情况应该去限制工具输出本身。
250
+ 用 `--no-compaction` 可以关闭压缩。
251
+
182
252
  ### 运行时事件
183
253
 
184
254
  Agent Loop 自己不打印任何内容,而是通过类型化的事件流对外汇报。一次运行会产生:
@@ -240,6 +310,11 @@ const client = new OpenAICompatibleChatClient({
240
310
  src/
241
311
  cli.ts CLI 入口与进程边界
242
312
  cli-options.ts 参数和 Provider 配置
313
+ auth/
314
+ credentials.ts 凭据契约与解析顺序
315
+ runtime-credentials.ts --api-key 覆盖层
316
+ env-credentials.ts 环境变量查找
317
+ file-credentials.ts 可选的 auth.json 存储
243
318
  agent.ts Agent Loop 与运行状态
244
319
  events.ts 运行时事件模型
245
320
  render.ts 运行时事件的终端渲染
@@ -249,6 +324,10 @@ src/
249
324
  session.ts 会话状态与事件分发
250
325
  session-store.ts JSONL 会话日志与恢复
251
326
  repl.ts 交互式输入与斜杠命令
327
+ context/
328
+ context-manager.ts 构造单次请求的消息
329
+ compaction.ts 压缩历史并跟踪文件
330
+ token-estimator.ts 基于字符的 Token 估算
252
331
  workspace.ts 工作区配置与只读默认值
253
332
  workspace/
254
333
  types.ts 上限、错误类型与 Workspace 契约
@@ -260,6 +339,9 @@ src/
260
339
  search.ts 字面量文本搜索
261
340
  write.ts 原子整文件写入与精确编辑
262
341
  providers/
342
+ registry.ts Provider 注册表
343
+ definitions.ts 内置 Provider 声明
344
+ client.ts 凭据解析并构造 LLM Client
263
345
  openai.ts OpenAI Responses Adapter
264
346
  openai-compatible-chat.ts 通用 Chat Completions Adapter
265
347
  deepseek.ts DeepSeek 配置包装器
@@ -302,7 +384,9 @@ npm install -g ./chivgent-0.6.0.tgz
302
384
 
303
385
  ## 安全模型
304
386
 
305
- - API Key 只从环境变量读取,绝不能提交到仓库。
387
+ - API Key 依次从 `--api-key`、环境变量、可选的 `auth.json` 解析,绝不能提交到仓库。
388
+ - `auth.json` 以明文保存 Key,因此它是可选的;当文件权限允许其他用户读取时会告警。
389
+ - 该文件只接受字面量 Key,无法展开环境变量或执行 Shell 命令。
306
390
  - 自定义 `OPENAI_BASE_URL` 会收到配置的 API Key 和提示词,只能使用可信端点。
307
391
  - 不传 `--allow-writes` 时工作区工具全部只读,`write_file` 和 `edit_file` 根本
308
392
  不会被注册。
@@ -336,11 +420,11 @@ npm install -g ./chivgent-0.6.0.tgz
336
420
  - [x] 项目发现工具:`list_files`、`search_text` 和分段 `read_file`
337
421
  - [x] 流式输出和运行时事件
338
422
  - [x] 持久化多轮 Session
339
- - [ ] Context Window 管理和压缩
423
+ - [x] Context Window 管理和压缩
340
424
  - [x] 通过 `--allow-writes` 选择性开启的 `write_file` 和 `edit_file`
341
425
  - [ ] 逐次修改确认与撤销日志
342
426
  - [ ] 需要权限确认的 Shell 工具
343
- - [ ] Provider Registry 和用户配置文件
427
+ - [x] Provider Registry 与凭据解析链
344
428
  - [ ] TUI、Extensions、Telemetry 和 Evals
345
429
 
346
430
  ## 文档
package/dist/agent.d.ts CHANGED
@@ -3,6 +3,7 @@ import { type LLMClient } from "./llm.js";
3
3
  import type { AssistantMessage, Message } from "./messages.js";
4
4
  import type { Tool } from "./tools/tool.js";
5
5
  import type { Workspace } from "./workspace.js";
6
+ import type { ContextManager } from "./context/context-manager.js";
6
7
  export interface AgentOptions {
7
8
  readonly systemPrompt: string;
8
9
  readonly maxTurns: number;
@@ -13,6 +14,10 @@ export interface AgentOptions {
13
14
  readonly onEvent?: AgentEventListener;
14
15
  /** Use the Provider's streaming API when it offers one. Defaults to true. */
15
16
  readonly streaming?: boolean;
17
+ /**
18
+ * Decides what the model sees each turn. Omit to send the whole transcript.
19
+ */
20
+ readonly contextManager?: ContextManager;
16
21
  }
17
22
  export interface AgentRunOptions {
18
23
  /** Cancels the run between turns, during a Provider call, and between tools. */
@@ -45,10 +50,19 @@ export declare class Agent {
45
50
  private readonly workspace;
46
51
  private readonly onEvent?;
47
52
  private readonly streaming;
53
+ private readonly contextManager?;
48
54
  constructor(options: AgentOptions);
49
55
  get toolNames(): readonly string[];
50
56
  run(userInput: string, options?: AgentRunOptions): Promise<AgentRunResult>;
51
57
  private loop;
58
+ /**
59
+ * Produces the messages for one request and records any compaction.
60
+ *
61
+ * A Provider holding a continuation replays its own history and ignores the
62
+ * messages sent with it, so a fresh compaction has to drop the continuation
63
+ * to take effect at all.
64
+ */
65
+ private buildContext;
52
66
  private requestAssistantMessage;
53
67
  private assertUniqueToolCallIds;
54
68
  private executeToolCall;
@@ -1 +1 @@
1
- {"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../src/agent.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,kBAAkB,EAExB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAgB,KAAK,SAAS,EAAwB,MAAM,UAAU,CAAC;AAC9E,OAAO,KAAK,EACV,gBAAgB,EAChB,OAAO,EAGR,MAAM,eAAe,CAAC;AACvB,OAAO,KAAK,EAAE,IAAI,EAA8B,MAAM,iBAAiB,CAAC;AACxE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAEhD,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,GAAG,EAAE,SAAS,CAAC;IACxB,QAAQ,CAAC,KAAK,EAAE,SAAS,IAAI,EAAE,CAAC;IAChC,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC;IAC9B,gEAAgE;IAChE,QAAQ,CAAC,OAAO,CAAC,EAAE,kBAAkB,CAAC;IACtC,6EAA6E;IAC7E,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC;CAC9B;AAED,MAAM,WAAW,eAAe;IAC9B,gFAAgF;IAChF,QAAQ,CAAC,MAAM,CAAC,EAAE,WAAW,CAAC;IAC9B;;;OAGG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,SAAS,OAAO,EAAE,CAAC;CACvC;AAED,MAAM,MAAM,cAAc,GACtB;IACE,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;IAC7B,QAAQ,CAAC,YAAY,EAAE,gBAAgB,CAAC;IACxC,QAAQ,CAAC,QAAQ,EAAE,SAAS,OAAO,EAAE,CAAC;IACtC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC5B,GACD;IACE,QAAQ,CAAC,MAAM,EAAE,WAAW,GAAG,SAAS,CAAC;IACzC,QAAQ,CAAC,QAAQ,EAAE,SAAS,OAAO,EAAE,CAAC;IACtC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC5B,CAAC;AASN,qBAAa,kBAAmB,SAAQ,KAAK;IAC3C,YAAY,OAAO,EAAE,MAAM,EAG1B;CACF;AAED,qBAAa,KAAK;IAChB,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAS;IACtC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;IAClC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAY;IAChC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAA4B;IACrD,OAAO,CAAC,QAAQ,CAAC,eAAe,CAA4B;IAC5D,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAY;IACtC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAqB;IAC9C,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAU;IAEpC,YAAY,OAAO,EAAE,YAAY,EAmBhC;IAED,IAAI,SAAS,IAAI,SAAS,MAAM,EAAE,CAEjC;IAEK,GAAG,CACP,SAAS,EAAE,MAAM,EACjB,OAAO,GAAE,eAAoB,GAC5B,OAAO,CAAC,cAAc,CAAC,CAqCzB;YAEa,IAAI;YAuDJ,uBAAuB;IA2BrC,OAAO,CAAC,uBAAuB;YAcjB,eAAe;IA0D7B,OAAO,CAAC,IAAI;IAIZ,OAAO,CAAC,OAAO;CAahB"}
1
+ {"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../src/agent.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,kBAAkB,EAExB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAgB,KAAK,SAAS,EAAwB,MAAM,UAAU,CAAC;AAC9E,OAAO,KAAK,EACV,gBAAgB,EAChB,OAAO,EAGR,MAAM,eAAe,CAAC;AACvB,OAAO,KAAK,EAAE,IAAI,EAA8B,MAAM,iBAAiB,CAAC;AACxE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,KAAK,EAEV,cAAc,EACf,MAAM,8BAA8B,CAAC;AAEtC,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,GAAG,EAAE,SAAS,CAAC;IACxB,QAAQ,CAAC,KAAK,EAAE,SAAS,IAAI,EAAE,CAAC;IAChC,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC;IAC9B,gEAAgE;IAChE,QAAQ,CAAC,OAAO,CAAC,EAAE,kBAAkB,CAAC;IACtC,6EAA6E;IAC7E,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC;IAC7B;;OAEG;IACH,QAAQ,CAAC,cAAc,CAAC,EAAE,cAAc,CAAC;CAC1C;AAED,MAAM,WAAW,eAAe;IAC9B,gFAAgF;IAChF,QAAQ,CAAC,MAAM,CAAC,EAAE,WAAW,CAAC;IAC9B;;;OAGG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,SAAS,OAAO,EAAE,CAAC;CACvC;AAED,MAAM,MAAM,cAAc,GACtB;IACE,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;IAC7B,QAAQ,CAAC,YAAY,EAAE,gBAAgB,CAAC;IACxC,QAAQ,CAAC,QAAQ,EAAE,SAAS,OAAO,EAAE,CAAC;IACtC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC5B,GACD;IACE,QAAQ,CAAC,MAAM,EAAE,WAAW,GAAG,SAAS,CAAC;IACzC,QAAQ,CAAC,QAAQ,EAAE,SAAS,OAAO,EAAE,CAAC;IACtC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC5B,CAAC;AAUN,qBAAa,kBAAmB,SAAQ,KAAK;IAC3C,YAAY,OAAO,EAAE,MAAM,EAG1B;CACF;AAED,qBAAa,KAAK;IAChB,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAS;IACtC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;IAClC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAY;IAChC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAA4B;IACrD,OAAO,CAAC,QAAQ,CAAC,eAAe,CAA4B;IAC5D,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAY;IACtC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAqB;IAC9C,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAU;IACpC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAiB;IAEjD,YAAY,OAAO,EAAE,YAAY,EAsBhC;IAED,IAAI,SAAS,IAAI,SAAS,MAAM,EAAE,CAEjC;IAEK,GAAG,CACP,SAAS,EAAE,MAAM,EACjB,OAAO,GAAE,eAAoB,GAC5B,OAAO,CAAC,cAAc,CAAC,CAqCzB;YAEa,IAAI;IAuDlB;;;;;;OAMG;YACW,YAAY;YAwBZ,uBAAuB;IA4BrC,OAAO,CAAC,uBAAuB;YAcjB,eAAe;IA0D7B,OAAO,CAAC,IAAI;IAIZ,OAAO,CAAC,OAAO;CAahB"}
package/dist/agent.js CHANGED
@@ -15,6 +15,7 @@ export class Agent {
15
15
  workspace;
16
16
  onEvent;
17
17
  streaming;
18
+ contextManager;
18
19
  constructor(options) {
19
20
  if (!Number.isSafeInteger(options.maxTurns) || options.maxTurns <= 0) {
20
21
  throw new TypeError("maxTurns must be a positive safe integer.");
@@ -33,6 +34,9 @@ export class Agent {
33
34
  this.onEvent = options.onEvent;
34
35
  }
35
36
  this.streaming = options.streaming ?? true;
37
+ if (options.contextManager !== undefined) {
38
+ this.contextManager = options.contextManager;
39
+ }
36
40
  }
37
41
  get toolNames() {
38
42
  return [...this.registry.keys()];
@@ -115,10 +119,38 @@ export class Agent {
115
119
  turnCount: state.turnCount,
116
120
  };
117
121
  }
122
+ /**
123
+ * Produces the messages for one request and records any compaction.
124
+ *
125
+ * A Provider holding a continuation replays its own history and ignores the
126
+ * messages sent with it, so a fresh compaction has to drop the continuation
127
+ * to take effect at all.
128
+ */
129
+ async buildContext(state, signal) {
130
+ const snapshot = snapshotMessages(state.messages);
131
+ if (this.contextManager === undefined) {
132
+ return snapshot;
133
+ }
134
+ const context = await this.contextManager.build(snapshot, {
135
+ ...(state.compaction === undefined ? {} : { previous: state.compaction }),
136
+ ...(signal === undefined ? {} : { signal }),
137
+ });
138
+ if (context.compaction === undefined) {
139
+ delete state.compaction;
140
+ }
141
+ else {
142
+ state.compaction = context.compaction;
143
+ }
144
+ if (context.compacted) {
145
+ delete state.continuation;
146
+ }
147
+ return context.messages;
148
+ }
118
149
  async requestAssistantMessage(state, turn, signal) {
150
+ const messages = await this.buildContext(state, signal);
119
151
  const request = {
120
152
  systemPrompt: this.systemPrompt,
121
- messages: snapshotMessages(state.messages),
153
+ messages,
122
154
  tools: this.toolDefinitions,
123
155
  ...(state.continuation === undefined
124
156
  ? {}
package/dist/agent.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"agent.js","sourceRoot":"","sources":["../src/agent.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"agent.js","sourceRoot":"","sources":["../src/agent.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,SAAS,GAGV,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,YAAY,EAAwC,MAAM,UAAU,CAAC;AA6D9E,MAAM,OAAO,kBAAmB,SAAQ,KAAK;IAC3C,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,oBAAoB,CAAC;IACnC,CAAC;CACF;AAED,MAAM,OAAO,KAAK;IACC,YAAY,CAAS;IACrB,QAAQ,CAAS;IACjB,GAAG,CAAY;IACf,QAAQ,CAA4B;IACpC,eAAe,CAA4B;IAC3C,SAAS,CAAY;IACrB,OAAO,CAAsB;IAC7B,SAAS,CAAU;IACnB,cAAc,CAAkB;IAEjD,YAAY,OAAqB;QAC/B,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,OAAO,CAAC,QAAQ,IAAI,CAAC,EAAE,CAAC;YACrE,MAAM,IAAI,SAAS,CAAC,2CAA2C,CAAC,CAAC;QACnE,CAAC;QAED,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC;QACzC,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;QACjC,IAAI,CAAC,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC;QACvB,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC;QACnC,IAAI,CAAC,QAAQ,GAAG,kBAAkB,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAClD,IAAI,CAAC,eAAe,GAAG,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;YAChE,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,WAAW,EAAE,eAAe,CAAC,IAAI,CAAC,WAAW,CAAC;SAC/C,CAAC,CAAC,CAAC;QACJ,IAAI,OAAO,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;YAClC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;QACjC,CAAC;QACD,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,IAAI,CAAC;QAC3C,IAAI,OAAO,CAAC,cAAc,KAAK,SAAS,EAAE,CAAC;YACzC,IAAI,CAAC,cAAc,GAAG,OAAO,CAAC,cAAc,CAAC;QAC/C,CAAC;IACH,CAAC;IAED,IAAI,SAAS;QACX,OAAO,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;IACnC,CAAC;IAED,KAAK,CAAC,GAAG,CACP,SAAiB,EACjB,OAAO,GAAoB,EAAE;QAE7B,IAAI,SAAS,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAClC,MAAM,IAAI,SAAS,CAAC,+BAA+B,CAAC,CAAC;QACvD,CAAC;QAED,MAAM,KAAK,GAAa;YACtB,QAAQ,EAAE;gBACR,GAAG,eAAe,CAAC,OAAO,CAAC,OAAO,IAAI,EAAE,CAAC;gBACzC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE;aACrC;YACD,eAAe,EAAE,IAAI,GAAG,EAAU;YAClC,SAAS,EAAE,CAAC;SACb,CAAC;QACF,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;QAE9B,IAAI,CAAC,IAAI,CAAC;YACR,IAAI,EAAE,aAAa;YACnB,MAAM,EAAE,SAAS;YACjB,QAAQ,EAAE,IAAI,CAAC,QAAQ;SACxB,CAAC,CAAC;QAEH,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;YAC9C,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;YACnC,OAAO,MAAM,CAAC;QAChB,CAAC;QAAC,OAAO,KAAc,EAAE,CAAC;YACxB,IAAI,YAAY,CAAC,KAAK,CAAC,IAAI,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC;gBAC7C,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;gBAC/B,OAAO,aAAa,CAAC,KAAK,CAAC,CAAC;YAC9B,CAAC;YACD,IAAI,CAAC,OAAO,CACV,OAAO,EACP,KAAK,EACL,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CACzD,CAAC;YACF,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,IAAI,CAChB,KAAe,EACf,MAA+B;QAE/B,OAAO,KAAK,CAAC,SAAS,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;YACvC,IAAI,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC;gBACtB,OAAO,aAAa,CAAC,KAAK,CAAC,CAAC;YAC9B,CAAC;YAED,KAAK,CAAC,SAAS,IAAI,CAAC,CAAC;YACrB,MAAM,IAAI,GAAG,KAAK,CAAC,SAAS,CAAC;YAC7B,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC;YACxC,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,eAAe,EAAE,IAAI,EAAE,CAAC,CAAC;YAE3C,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,uBAAuB,CAAC,KAAK,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;YACzE,MAAM,SAAS,GAAG,gCAAgC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;YACrE,IAAI,CAAC,uBAAuB,CAAC,SAAS,CAAC,SAAS,EAAE,KAAK,CAAC,eAAe,CAAC,CAAC;YACzE,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAC/B,KAAK,CAAC,YAAY,GAAG,QAAQ,CAAC,YAAY,CAAC;YAC3C,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC,CAAC;YAE7D,IAAI,SAAS,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACrC,IAAI,CAAC,IAAI,CAAC;oBACR,IAAI,EAAE,UAAU;oBAChB,IAAI;oBACJ,OAAO,EAAE,SAAS;oBAClB,WAAW,EAAE,EAAE;iBAChB,CAAC,CAAC;gBACH,OAAO;oBACL,MAAM,EAAE,WAAW;oBACnB,YAAY,EAAE,SAAS;oBACvB,QAAQ,EAAE,gBAAgB,CAAC,KAAK,CAAC,QAAQ,CAAC;oBAC1C,SAAS,EAAE,KAAK,CAAC,SAAS;iBAC3B,CAAC;YACJ,CAAC;YAED,MAAM,WAAW,GAAwB,EAAE,CAAC;YAC5C,KAAK,MAAM,QAAQ,IAAI,SAAS,CAAC,SAAS,EAAE,CAAC;gBAC3C,IAAI,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC;oBACtB,OAAO,aAAa,CAAC,KAAK,CAAC,CAAC;gBAC9B,CAAC;gBACD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,QAAQ,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;gBAClE,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBACzB,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAC9B,CAAC;YACD,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,CAAC,CAAC;QACzE,CAAC;QAED,OAAO;YACL,MAAM,EAAE,WAAW;YACnB,QAAQ,EAAE,gBAAgB,CAAC,KAAK,CAAC,QAAQ,CAAC;YAC1C,SAAS,EAAE,KAAK,CAAC,SAAS;SAC3B,CAAC;IACJ,CAAC;IAED;;;;;;OAMG;IACK,KAAK,CAAC,YAAY,CACxB,KAAe,EACf,MAA+B;QAE/B,MAAM,QAAQ,GAAG,gBAAgB,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QAClD,IAAI,IAAI,CAAC,cAAc,KAAK,SAAS,EAAE,CAAC;YACtC,OAAO,QAAQ,CAAC;QAClB,CAAC;QAED,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,QAAQ,EAAE;YACxD,GAAG,CAAC,KAAK,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,KAAK,CAAC,UAAU,EAAE,CAAC;YACzE,GAAG,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC;SAC5C,CAAC,CAAC;QACH,IAAI,OAAO,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;YACrC,OAAO,KAAK,CAAC,UAAU,CAAC;QAC1B,CAAC;aAAM,CAAC;YACN,KAAK,CAAC,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC;QACxC,CAAC;QACD,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;YACtB,OAAO,KAAK,CAAC,YAAY,CAAC;QAC5B,CAAC;QACD,OAAO,OAAO,CAAC,QAAQ,CAAC;IAC1B,CAAC;IAEO,KAAK,CAAC,uBAAuB,CACnC,KAAe,EACf,IAAY,EACZ,MAA+B;QAE/B,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QACxD,MAAM,OAAO,GAAG;YACd,YAAY,EAAE,IAAI,CAAC,YAAY;YAC/B,QAAQ;YACR,KAAK,EAAE,IAAI,CAAC,eAAe;YAC3B,GAAG,CAAC,KAAK,CAAC,YAAY,KAAK,SAAS;gBAClC,CAAC,CAAC,EAAE;gBACJ,CAAC,CAAC,EAAE,YAAY,EAAE,KAAK,CAAC,YAAY,EAAE,CAAC;YACzC,GAAG,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC;SAC5C,CAAC;QAEF,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,GAAG,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;YACpD,OAAO,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,EAAE;gBAC9B,WAAW,EAAE,CAAC,KAAK,EAAE,EAAE;oBACrB,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;wBACrB,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,gBAAgB,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;oBACrD,CAAC;gBACH,CAAC;aACF,CAAC,CAAC;QACL,CAAC;QACD,OAAO,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;IACpC,CAAC;IAEO,uBAAuB,CAC7B,SAA8B,EAC9B,OAAoB;QAEpB,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;YACjC,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC;gBAC7B,MAAM,IAAI,kBAAkB,CAC1B,+CAA+C,QAAQ,CAAC,EAAE,EAAE,CAC7D,CAAC;YACJ,CAAC;YACD,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;QAC3B,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,eAAe,CAC3B,QAAkB,EAClB,IAAY,EACZ,MAA+B;QAE/B,IAAI,CAAC,IAAI,CAAC;YACR,IAAI,EAAE,sBAAsB;YAC5B,IAAI;YACJ,UAAU,EAAE,QAAQ,CAAC,EAAE;YACvB,QAAQ,EAAE,QAAQ,CAAC,IAAI;YACvB,SAAS,EAAE,QAAQ,CAAC,SAAS;SAC9B,CAAC,CAAC;QAEH,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QAC9C,IAAI,MAAkB,CAAC;QAEvB,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;YACvB,MAAM,GAAG;gBACP,OAAO,EAAE,iBAAiB,QAAQ,CAAC,IAAI,EAAE;gBACzC,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,IAAI,CAAC;gBACH,MAAM,GAAG,kBAAkB,CACzB,MAAM,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,SAAS,EAAE;oBACrC,SAAS,EAAE,IAAI,CAAC,SAAS;oBACzB,GAAG,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC;iBAC5C,CAAC,CACH,CAAC;YACJ,CAAC;YAAC,OAAO,KAAc,EAAE,CAAC;gBACxB,IAAI,YAAY,CAAC,KAAK,CAAC,EAAE,CAAC;oBACxB,MAAM,KAAK,CAAC;gBACd,CAAC;gBACD,MAAM,GAAG;oBACP,OAAO,EAAE,0BAA0B,QAAQ,CAAC,IAAI,EAAE;oBAClD,OAAO,EAAE,IAAI;iBACd,CAAC;YACJ,CAAC;QACH,CAAC;QAED,IAAI,CAAC,IAAI,CAAC;YACR,IAAI,EAAE,oBAAoB;YAC1B,IAAI;YACJ,UAAU,EAAE,QAAQ,CAAC,EAAE;YACvB,QAAQ,EAAE,QAAQ,CAAC,IAAI;YACvB,OAAO,EAAE,MAAM,CAAC,OAAO;YACvB,OAAO,EAAE,MAAM,CAAC,OAAO;SACxB,CAAC,CAAC;QAEH,OAAO;YACL,IAAI,EAAE,MAAM;YACZ,UAAU,EAAE,QAAQ,CAAC,EAAE;YACvB,QAAQ,EAAE,QAAQ,CAAC,IAAI;YACvB,OAAO,EAAE,MAAM,CAAC,OAAO;YACvB,OAAO,EAAE,MAAM,CAAC,OAAO;SACxB,CAAC;IACJ,CAAC;IAEO,IAAI,CAAC,KAAsC;QACjD,SAAS,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IACjC,CAAC;IAEO,OAAO,CACb,MAAsB,EACtB,KAAe,EACf,KAAc;QAEd,IAAI,CAAC,IAAI,CAAC;YACR,IAAI,EAAE,WAAW;YACjB,MAAM;YACN,SAAS,EAAE,KAAK,CAAC,SAAS;YAC1B,QAAQ,EAAE,gBAAgB,CAAC,KAAK,CAAC,QAAQ,CAAC;YAC1C,GAAG,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC;SAC1C,CAAC,CAAC;IACL,CAAC;CACF;AAED,4EAA4E;AAC5E,SAAS,SAAS,CAAC,MAA+B;IAChD,OAAO,MAAM,KAAK,SAAS,IAAI,MAAM,CAAC,OAAO,CAAC;AAChD,CAAC;AAED,SAAS,aAAa,CAAC,KAAe;IACpC,OAAO;QACL,MAAM,EAAE,SAAS;QACjB,QAAQ,EAAE,gBAAgB,CAAC,KAAK,CAAC,QAAQ,CAAC;QAC1C,SAAS,EAAE,KAAK,CAAC,SAAS;KAC3B,CAAC;AACJ,CAAC;AAED,SAAS,kBAAkB,CAAC,KAAsB;IAChD,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAgB,CAAC;IACzC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC3B,MAAM,IAAI,SAAS,CAAC,+BAA+B,CAAC,CAAC;QACvD,CAAC;QACD,IAAI,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YAC5B,MAAM,IAAI,SAAS,CAAC,wBAAwB,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;QAC3D,CAAC;QACD,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IAChC,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,SAAS,gCAAgC,CAAC,KAAc;IACtD,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;QAChD,MAAM,IAAI,kBAAkB,CAAC,iDAAiD,CAAC,CAAC;IAClF,CAAC;IAED,MAAM,SAAS,GAAG,KAAkC,CAAC;IACrD,IACE,SAAS,CAAC,IAAI,KAAK,WAAW;QAC9B,OAAO,SAAS,CAAC,OAAO,KAAK,QAAQ;QACrC,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,SAAS,CAAC,EACnC,CAAC;QACD,MAAM,IAAI,kBAAkB,CAAC,iDAAiD,CAAC,CAAC;IAClF,CAAC;IAED,MAAM,SAAS,GAAG,SAAS,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE;QACrD,IACE,OAAO,QAAQ,KAAK,QAAQ;YAC5B,QAAQ,KAAK,IAAI;YACjB,OAAO,QAAQ,CAAC,EAAE,KAAK,QAAQ;YAC/B,QAAQ,CAAC,EAAE,CAAC,MAAM,KAAK,CAAC;YACxB,OAAO,QAAQ,CAAC,IAAI,KAAK,QAAQ;YACjC,QAAQ,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,EAC1B,CAAC;YACD,MAAM,IAAI,kBAAkB,CAAC,yCAAyC,CAAC,CAAC;QAC1E,CAAC;QAED,OAAO;YACL,EAAE,EAAE,QAAQ,CAAC,EAAE;YACf,IAAI,EAAE,QAAQ,CAAC,IAAI;YACnB,SAAS,EAAE,eAAe,CAAC,QAAQ,CAAC,SAAS,CAAC;SAC/C,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,IAAI,SAAS,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC7D,MAAM,IAAI,kBAAkB,CAC1B,oEAAoE,CACrE,CAAC;IACJ,CAAC;IAED,OAAO;QACL,IAAI,EAAE,WAAW;QACjB,OAAO,EAAE,SAAS,CAAC,OAAO;QAC1B,SAAS;KACV,CAAC;AACJ,CAAC;AAED,SAAS,kBAAkB,CAAC,KAAc;IACxC,IACE,OAAO,KAAK,KAAK,QAAQ;QACzB,KAAK,KAAK,IAAI;QACd,CAAC,CAAC,SAAS,IAAI,KAAK,CAAC;QACrB,CAAC,CAAC,SAAS,IAAI,KAAK,CAAC;QACrB,OAAO,KAAK,CAAC,OAAO,KAAK,QAAQ;QACjC,OAAO,KAAK,CAAC,OAAO,KAAK,SAAS,EAClC,CAAC;QACD,MAAM,IAAI,SAAS,CAAC,kCAAkC,CAAC,CAAC;IAC1D,CAAC;IACD,OAAO,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC;AAC5D,CAAC;AAED,SAAS,gBAAgB,CAAC,QAA4B;IACpD,OAAO,eAAe,CAAC,QAAQ,CAAC,CAAC;AACnC,CAAC"}
@@ -0,0 +1,26 @@
1
+ import type { ProviderDefinition } from "../providers/definitions.js";
2
+ export interface Credential {
3
+ readonly apiKey: string;
4
+ /** Where the key came from, used in diagnostics. Never contains the key. */
5
+ readonly origin: string;
6
+ }
7
+ export interface CredentialSource {
8
+ readonly name: string;
9
+ read(provider: ProviderDefinition): Promise<Credential | undefined>;
10
+ }
11
+ /**
12
+ * Walks credential sources in order and returns the first hit.
13
+ *
14
+ * The order is deliberate: an explicit `--api-key` beats the environment,
15
+ * and the environment beats the stored file. That matches the convention
16
+ * users already know from other CLIs, and means a stored credential can be
17
+ * overridden for a single run without editing the file.
18
+ */
19
+ export declare class CredentialResolver {
20
+ private readonly sources;
21
+ constructor(sources: readonly CredentialSource[]);
22
+ resolve(provider: ProviderDefinition): Promise<Credential | undefined>;
23
+ /** Explains what the user could set, for the "no credential" error. */
24
+ describeExpectations(provider: ProviderDefinition): string;
25
+ }
26
+ //# sourceMappingURL=credentials.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"credentials.d.ts","sourceRoot":"","sources":["../../src/auth/credentials.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AAEtE,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,4EAA4E;IAC5E,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,IAAI,CAAC,QAAQ,EAAE,kBAAkB,GAAG,OAAO,CAAC,UAAU,GAAG,SAAS,CAAC,CAAC;CACrE;AAED;;;;;;;GAOG;AACH,qBAAa,kBAAkB;IACjB,OAAO,CAAC,QAAQ,CAAC,OAAO;IAApC,YAA6B,OAAO,EAAE,SAAS,gBAAgB,EAAE,EAAI;IAE/D,OAAO,CACX,QAAQ,EAAE,kBAAkB,GAC3B,OAAO,CAAC,UAAU,GAAG,SAAS,CAAC,CAQjC;IAED,uEAAuE;IACvE,oBAAoB,CAAC,QAAQ,EAAE,kBAAkB,GAAG,MAAM,CAGzD;CACF"}
@@ -0,0 +1,29 @@
1
+ /**
2
+ * Walks credential sources in order and returns the first hit.
3
+ *
4
+ * The order is deliberate: an explicit `--api-key` beats the environment,
5
+ * and the environment beats the stored file. That matches the convention
6
+ * users already know from other CLIs, and means a stored credential can be
7
+ * overridden for a single run without editing the file.
8
+ */
9
+ export class CredentialResolver {
10
+ sources;
11
+ constructor(sources) {
12
+ this.sources = sources;
13
+ }
14
+ async resolve(provider) {
15
+ for (const source of this.sources) {
16
+ const credential = await source.read(provider);
17
+ if (credential !== undefined && credential.apiKey.length > 0) {
18
+ return credential;
19
+ }
20
+ }
21
+ return undefined;
22
+ }
23
+ /** Explains what the user could set, for the "no credential" error. */
24
+ describeExpectations(provider) {
25
+ const variables = provider.envKeys.join(" or ");
26
+ return `No API key for ${provider.id}. Set ${variables}, pass --api-key, or add "${provider.id}" to the auth file.`;
27
+ }
28
+ }
29
+ //# sourceMappingURL=credentials.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"credentials.js","sourceRoot":"","sources":["../../src/auth/credentials.ts"],"names":[],"mappings":"AAaA;;;;;;;GAOG;AACH,MAAM,OAAO,kBAAkB;IACA,OAAO;IAApC,YAA6B,OAAoC;uBAApC,OAAO;IAAgC,CAAC;IAErE,KAAK,CAAC,OAAO,CACX,QAA4B;QAE5B,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YAClC,MAAM,UAAU,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAC/C,IAAI,UAAU,KAAK,SAAS,IAAI,UAAU,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC7D,OAAO,UAAU,CAAC;YACpB,CAAC;QACH,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,uEAAuE;IACvE,oBAAoB,CAAC,QAA4B;QAC/C,MAAM,SAAS,GAAG,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAChD,OAAO,kBAAkB,QAAQ,CAAC,EAAE,SAAS,SAAS,6BAA6B,QAAQ,CAAC,EAAE,qBAAqB,CAAC;IACtH,CAAC;CACF"}
@@ -0,0 +1,10 @@
1
+ import type { ProviderDefinition } from "../providers/definitions.js";
2
+ import type { Credential, CredentialSource } from "./credentials.js";
3
+ /** Reads the Provider's declared environment variables, in declared order. */
4
+ export declare class EnvCredentialSource implements CredentialSource {
5
+ private readonly environment;
6
+ readonly name = "environment";
7
+ constructor(environment?: NodeJS.ProcessEnv);
8
+ read(provider: ProviderDefinition): Promise<Credential | undefined>;
9
+ }
10
+ //# sourceMappingURL=env-credentials.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"env-credentials.d.ts","sourceRoot":"","sources":["../../src/auth/env-credentials.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AACtE,OAAO,KAAK,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAErE,8EAA8E;AAC9E,qBAAa,mBAAoB,YAAW,gBAAgB;IAG9C,OAAO,CAAC,QAAQ,CAAC,WAAW;IAFxC,QAAQ,CAAC,IAAI,iBAAiB;IAE9B,YAA6B,WAAW,GAAE,MAAM,CAAC,UAAwB,EAAI;IAEvE,IAAI,CAAC,QAAQ,EAAE,kBAAkB,GAAG,OAAO,CAAC,UAAU,GAAG,SAAS,CAAC,CAQxE;CACF"}
@@ -0,0 +1,18 @@
1
+ /** Reads the Provider's declared environment variables, in declared order. */
2
+ export class EnvCredentialSource {
3
+ environment;
4
+ name = "environment";
5
+ constructor(environment = process.env) {
6
+ this.environment = environment;
7
+ }
8
+ async read(provider) {
9
+ for (const key of provider.envKeys) {
10
+ const value = this.environment[key];
11
+ if (value !== undefined && value.length > 0) {
12
+ return { apiKey: value, origin: key };
13
+ }
14
+ }
15
+ return undefined;
16
+ }
17
+ }
18
+ //# sourceMappingURL=env-credentials.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"env-credentials.js","sourceRoot":"","sources":["../../src/auth/env-credentials.ts"],"names":[],"mappings":"AAGA,8EAA8E;AAC9E,MAAM,OAAO,mBAAmB;IAGD,WAAW;IAF/B,IAAI,GAAG,aAAa,CAAC;IAE9B,YAA6B,WAAW,GAAsB,OAAO,CAAC,GAAG;2BAA5C,WAAW;IAAoC,CAAC;IAE7E,KAAK,CAAC,IAAI,CAAC,QAA4B;QACrC,KAAK,MAAM,GAAG,IAAI,QAAQ,CAAC,OAAO,EAAE,CAAC;YACnC,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;YACpC,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC5C,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;YACxC,CAAC;QACH,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;CACF"}
@@ -0,0 +1,25 @@
1
+ import type { ProviderDefinition } from "../providers/definitions.js";
2
+ import type { Credential, CredentialSource } from "./credentials.js";
3
+ export declare class AuthFileError extends Error {
4
+ constructor(message: string, options?: {
5
+ cause?: unknown;
6
+ });
7
+ }
8
+ export declare function defaultAuthFile(environment?: NodeJS.ProcessEnv): string;
9
+ /**
10
+ * Reads API keys from `<chivgent home>/auth.json`.
11
+ *
12
+ * The file deliberately supports only literal keys. Neither `$VAR` expansion
13
+ * nor `!command` substitution is accepted: letting a config file spawn a
14
+ * process is a large attack surface for a small convenience.
15
+ */
16
+ export declare class FileCredentialSource implements CredentialSource {
17
+ private readonly filePath;
18
+ private readonly onWarning;
19
+ readonly name = "auth file";
20
+ constructor(filePath?: string, onWarning?: (message: string) => void);
21
+ read(provider: ProviderDefinition): Promise<Credential | undefined>;
22
+ private parse;
23
+ private warnOnLoosePermissions;
24
+ }
25
+ //# sourceMappingURL=file-credentials.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"file-credentials.d.ts","sourceRoot":"","sources":["../../src/auth/file-credentials.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AACtE,OAAO,KAAK,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAErE,qBAAa,aAAc,SAAQ,KAAK;IACtC,YAAY,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,OAAO,CAAA;KAAE,EAGzD;CACF;AAED,wBAAgB,eAAe,CAC7B,WAAW,GAAE,MAAM,CAAC,UAAwB,GAC3C,MAAM,CAOR;AAED;;;;;;GAMG;AACH,qBAAa,oBAAqB,YAAW,gBAAgB;IAIzD,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,SAAS;IAJ5B,QAAQ,CAAC,IAAI,eAAe;IAE5B,YACmB,QAAQ,GAAE,MAA0B,EACpC,SAAS,GAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAsB,EACrE;IAEE,IAAI,CAAC,QAAQ,EAAE,kBAAkB,GAAG,OAAO,CAAC,UAAU,GAAG,SAAS,CAAC,CAoBxE;IAED,OAAO,CAAC,KAAK;YA6BC,sBAAsB;CAWrC"}