klaus-agent 0.2.1 → 0.3.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 (60) hide show
  1. package/README.md +69 -15
  2. package/README.zh-CN.md +69 -15
  3. package/dist/core/agent-loop.d.ts +4 -1
  4. package/dist/core/agent-loop.js +20 -3
  5. package/dist/core/agent-loop.js.map +1 -1
  6. package/dist/core/agent.d.ts +5 -0
  7. package/dist/core/agent.js +25 -0
  8. package/dist/core/agent.js.map +1 -1
  9. package/dist/index.d.ts +10 -4
  10. package/dist/index.js +7 -3
  11. package/dist/index.js.map +1 -1
  12. package/dist/llm/provider.js +3 -11
  13. package/dist/llm/provider.js.map +1 -1
  14. package/dist/llm/types.d.ts +17 -0
  15. package/dist/planning/nag-injection.d.ts +8 -0
  16. package/dist/planning/nag-injection.js +21 -0
  17. package/dist/planning/nag-injection.js.map +1 -0
  18. package/dist/planning/planning-manager.d.ts +27 -0
  19. package/dist/planning/planning-manager.js +109 -0
  20. package/dist/planning/planning-manager.js.map +1 -0
  21. package/dist/planning/tools.d.ts +3 -0
  22. package/dist/planning/tools.js +50 -0
  23. package/dist/planning/tools.js.map +1 -0
  24. package/dist/planning/types.d.ts +30 -0
  25. package/dist/planning/types.js +6 -0
  26. package/dist/planning/types.js.map +1 -0
  27. package/dist/providers/openai-codex.js +1 -71
  28. package/dist/providers/openai-codex.js.map +1 -1
  29. package/dist/providers/openai-responses-shared.d.ts +36 -0
  30. package/dist/providers/openai-responses-shared.js +74 -0
  31. package/dist/providers/openai-responses-shared.js.map +1 -0
  32. package/dist/providers/openai-responses.d.ts +7 -0
  33. package/dist/providers/openai-responses.js +128 -0
  34. package/dist/providers/openai-responses.js.map +1 -0
  35. package/dist/providers/openai.js +1 -10
  36. package/dist/providers/openai.js.map +1 -1
  37. package/dist/providers/shared.d.ts +5 -1
  38. package/dist/providers/shared.js +20 -0
  39. package/dist/providers/shared.js.map +1 -1
  40. package/dist/types.d.ts +2 -2
  41. package/package.json +1 -1
  42. package/src/core/agent-loop.ts +25 -3
  43. package/src/core/agent.ts +30 -0
  44. package/src/index.ts +20 -3
  45. package/src/llm/provider.ts +3 -12
  46. package/src/llm/types.ts +19 -0
  47. package/src/planning/nag-injection.ts +24 -0
  48. package/src/planning/planning-manager.ts +133 -0
  49. package/src/planning/tools.ts +71 -0
  50. package/src/planning/types.ts +40 -0
  51. package/src/providers/openai-codex.ts +2 -89
  52. package/src/providers/openai-responses-shared.ts +97 -0
  53. package/src/providers/openai-responses.ts +152 -0
  54. package/src/providers/openai.ts +1 -8
  55. package/src/providers/shared.ts +19 -1
  56. package/src/types.ts +4 -0
  57. package/src/providers/index.ts +0 -7
  58. package/src/providers/kimi.ts +0 -12
  59. package/src/providers/minimax.ts +0 -12
  60. package/src/providers/volcengine.ts +0 -12
package/README.md CHANGED
@@ -1,4 +1,4 @@
1
- # @klaus-ai/agent
1
+ # klaus-agent
2
2
 
3
3
  Universal agent framework SDK. Inject tools, skills, and systemPrompt to build your agent — no wrapper needed.
4
4
 
@@ -7,13 +7,13 @@ Universal agent framework SDK. Inject tools, skills, and systemPrompt to build y
7
7
  ## Install
8
8
 
9
9
  ```bash
10
- npm install @klaus-ai/agent
10
+ npm install klaus-agent
11
11
  ```
12
12
 
13
13
  ## Quick Start
14
14
 
15
15
  ```typescript
16
- import { createAgent } from "@klaus-ai/agent";
16
+ import { createAgent } from "klaus-agent";
17
17
  import { Type } from "@sinclair/typebox";
18
18
 
19
19
  const agent = createAgent({
@@ -45,13 +45,13 @@ const messages = await agent.prompt("Say hello");
45
45
 
46
46
  ## Architecture
47
47
 
48
- Single package, 14 modules, zero wrappers. All capabilities are built-in and opt-in via config.
48
+ Single package, 15 modules, zero wrappers. All capabilities are built-in and opt-in via config.
49
49
 
50
50
  ```
51
51
  src/
52
52
  ├── core/ Agent + AgentLoop (nested dual-loop runtime)
53
53
  ├── llm/ Provider registry + abstraction
54
- ├── providers/ 7 built-in providers (Anthropic, OpenAI, OpenAI Codex, Gemini, MiniMax, Kimi, Volcengine)
54
+ ├── providers/ 5 built-in protocol providers (Anthropic, OpenAI, OpenAI Responses, OpenAI Codex, Gemini)
55
55
  ├── tools/ Tool executor (sequential/parallel) + MCP adapter
56
56
  ├── approval/ Queue-based approval system
57
57
  ├── session/ JSONL tree persistence with branching
@@ -63,6 +63,7 @@ src/
63
63
  ├── skills/ Markdown skill discovery + template rendering
64
64
  ├── wire/ Typed async event channel with replay buffer
65
65
  ├── background/ In-process async task manager
66
+ ├── planning/ Two-phase planning + structured todo + nag injection
66
67
  └── utils/ ID generation + JSONL helpers
67
68
  ```
68
69
 
@@ -105,11 +106,9 @@ await agent.dispose();
105
106
 
106
107
  ### LLM Provider
107
108
 
108
- Provider-agnostic abstraction with 7 built-in providers and 3 protocol-compatible proxy modes. All providers support streaming, retry (3 attempts, exponential backoff), and extended thinking.
109
+ Provider-agnostic abstraction with 5 built-in protocol providers. All providers support streaming, retry (3 attempts, exponential backoff), and extended thinking. Connect any compatible service by providing a custom `baseUrl`.
109
110
 
110
- Built-in providers: `anthropic`, `openai`, `openai-codex`, `google`, `minimax`, `kimi`, `volcengine`
111
-
112
- Protocol-compatible proxies: `openai-compatible`, `anthropic-compatible`, `gemini-compatible` — connect any compatible service by providing a `baseUrl`.
111
+ Built-in providers: `anthropic`, `openai`, `openai-responses`, `openai-codex`, `google`
113
112
 
114
113
  ```typescript
115
114
  // Use any built-in provider
@@ -118,14 +117,14 @@ const agent = createAgent({
118
117
  ...
119
118
  });
120
119
 
121
- // Or connect a compatible service via proxy mode
120
+ // Connect a compatible service via custom baseUrl
122
121
  const agent2 = createAgent({
123
- model: { provider: "openai-compatible", model: "my-model", maxContextTokens: 128000, baseUrl: "https://my-service/v1" },
122
+ model: { provider: "openai", model: "my-model", maxContextTokens: 128000, baseUrl: "https://my-service/v1" },
124
123
  ...
125
124
  });
126
125
 
127
126
  // Register a fully custom provider
128
- import { registerProvider } from "@klaus-ai/agent";
127
+ import { registerProvider } from "klaus-agent";
129
128
  registerProvider("my-provider", (config) => new MyProvider(config.apiKey, config.baseUrl));
130
129
  ```
131
130
 
@@ -139,6 +138,26 @@ interface LLMProvider {
139
138
  // Stream events: text | tool_call_start | tool_call_delta | thinking | done | error
140
139
  ```
141
140
 
141
+ Cost tracking — provide per-million-token pricing via `ModelConfig.cost`, and the agent automatically calculates actual dollar costs on each `message_end` event:
142
+
143
+ ```typescript
144
+ const agent = createAgent({
145
+ model: {
146
+ provider: "anthropic",
147
+ model: "claude-sonnet-4-20250514",
148
+ maxContextTokens: 200000,
149
+ cost: { input: 3, output: 15, cacheRead: 0.3, cacheWrite: 3.75 },
150
+ },
151
+ ...
152
+ });
153
+
154
+ agent.subscribe((event) => {
155
+ if (event.type === "message_end" && event.usage?.cost) {
156
+ console.log(`Request cost: $${event.usage.cost.total.toFixed(6)}`);
157
+ }
158
+ });
159
+ ```
160
+
142
161
  ### Canonical Message Format
143
162
 
144
163
  Provider-agnostic message types used throughout the framework:
@@ -172,7 +191,7 @@ Tools use TypeBox schemas for parameter validation. The executor supports sequen
172
191
 
173
192
  ```typescript
174
193
  import { Type } from "@sinclair/typebox";
175
- import type { AgentTool } from "@klaus-ai/agent";
194
+ import type { AgentTool } from "klaus-agent";
176
195
 
177
196
  const readFile: AgentTool = {
178
197
  name: "read_file",
@@ -366,7 +385,7 @@ Subagents share the parent's approval state (yolo, autoApproveActions) but have
366
385
  Event-driven plugin system with 18 event types across agent lifecycle, tool execution, LLM requests, context, compaction, session, and background tasks.
367
386
 
368
387
  ```typescript
369
- import type { ExtensionFactory } from "@klaus-ai/agent";
388
+ import type { ExtensionFactory } from "klaus-agent";
370
389
 
371
390
  const myExtension: ExtensionFactory = (api) => {
372
391
  // Register event handlers
@@ -518,6 +537,38 @@ handle.abort();
518
537
 
519
538
  Built-in tools: `start_background_task`, `check_task_status`, `get_task_result`.
520
539
 
540
+ ### Planning (Two-Phase Todo)
541
+
542
+ Optional two-phase planning system inspired by [learn-claude-code](https://github.com/anthropics/learn-claude-code) s03 (TodoWrite) and pi-mono's plan-mode extension. Combines structured todo tracking with phase-gated tool access and nag reminders.
543
+
544
+ ```typescript
545
+ const agent = createAgent({
546
+ planning: {
547
+ readOnlyTools: ["read_file", "search"], // Tools available during planning phase
548
+ nagAfterRounds: 3, // Remind model to update todos after N rounds
549
+ nagMessage: "<reminder>Update todos.</reminder>", // Custom nag text
550
+ maxTodos: 50, // Upper bound on todo items (default: 50)
551
+ },
552
+ ...
553
+ });
554
+
555
+ // Access planning state
556
+ console.log(agent.planning?.phase); // "planning" | "executing"
557
+ console.log(agent.planning?.todos); // readonly TodoItem[]
558
+ ```
559
+
560
+ **Workflow:**
561
+
562
+ 1. Agent starts in **planning phase** — only `readOnlyTools` + `todo` + `plan_mode` tools are available
563
+ 2. The LLM uses the `todo` tool to create a structured plan (only one `in_progress` item allowed at a time)
564
+ 3. The LLM calls `plan_mode({ action: "start_execution" })` to switch to **execution phase**
565
+ 4. In execution phase, all tools are available; if the LLM goes 3+ rounds without updating todos, a `<reminder>` is automatically injected
566
+ 5. The LLM can switch back to planning at any time via `plan_mode({ action: "switch_to_planning" })`
567
+
568
+ Built-in tools: `todo`, `plan_mode`.
569
+
570
+ If `readOnlyTools` is omitted or empty, all tools remain available during planning (phase separation is advisory only via the tool descriptions).
571
+
521
572
  ### Hooks
522
573
 
523
574
  User-level hooks for transforming context and intercepting tool calls:
@@ -579,7 +630,7 @@ agent.subscribe((event) => {
579
630
  ## Full Example
580
631
 
581
632
  ```typescript
582
- import { createAgent } from "@klaus-ai/agent";
633
+ import { createAgent } from "klaus-agent";
583
634
  import { Type } from "@sinclair/typebox";
584
635
 
585
636
  const agent = createAgent({
@@ -622,6 +673,7 @@ const agent = createAgent({
622
673
 
623
674
  wire: { bufferSize: 100 },
624
675
  backgroundTasks: { factories: { build: buildTaskFactory } },
676
+ planning: { readOnlyTools: ["read_file", "search"], nagAfterRounds: 3 },
625
677
 
626
678
  hooks: {
627
679
  transformContext: async (msgs) => msgs,
@@ -664,6 +716,7 @@ await agent.dispose();
664
716
  | `mcp` | `{ servers, clientFactory }` | no | — | MCP server configs |
665
717
  | `wire` | `{ bufferSize }` | no | `{ bufferSize: 0 }` | Event channel config |
666
718
  | `backgroundTasks` | `{ factories }` | no | — | Background task factories |
719
+ | `planning` | `PlanningConfig` | no | — | Two-phase planning with todo tracking and nag reminders |
667
720
  | `provider` | `LLMProvider` | no | — | Custom LLM provider (bypasses registry) |
668
721
 
669
722
  ### `Agent` Instance
@@ -687,6 +740,7 @@ await agent.dispose();
687
740
  | `mcpAdapter` | `MCPAdapter` (if MCP configured). |
688
741
  | `wire` | `Wire` event channel (always available). |
689
742
  | `backgroundTasks` | `BackgroundTaskManager` (if configured). |
743
+ | `planning` | `PlanningManager` (if configured). |
690
744
  | `setSystemPrompt(prompt)` | Update system prompt. |
691
745
  | `setModel(model)` | Update model config. |
692
746
  | `setTools(tools)` | Replace tools (not while running). |
package/README.zh-CN.md CHANGED
@@ -1,17 +1,17 @@
1
- # @klaus-ai/agent
1
+ # klaus-agent
2
2
 
3
3
  通用 Agent 框架 SDK。注入 tools、skills、systemPrompt 即可构建 agent,无需再包一层。
4
4
 
5
5
  ## 安装
6
6
 
7
7
  ```bash
8
- npm install @klaus-ai/agent
8
+ npm install klaus-agent
9
9
  ```
10
10
 
11
11
  ## 快速开始
12
12
 
13
13
  ```typescript
14
- import { createAgent } from "@klaus-ai/agent";
14
+ import { createAgent } from "klaus-agent";
15
15
  import { Type } from "@sinclair/typebox";
16
16
 
17
17
  const agent = createAgent({
@@ -43,13 +43,13 @@ const messages = await agent.prompt("Say hello");
43
43
 
44
44
  ## 架构
45
45
 
46
- 单包架构,14 个模块,零包装层。所有能力内置,通过 config 按需启用。
46
+ 单包架构,15 个模块,零包装层。所有能力内置,通过 config 按需启用。
47
47
 
48
48
  ```
49
49
  src/
50
50
  ├── core/ Agent + AgentLoop(嵌套双循环运行时)
51
51
  ├── llm/ Provider 注册中心 + 抽象层
52
- ├── providers/ 7 个内置 Provider(Anthropic、OpenAI、OpenAI Codex、Gemini、MiniMax、Kimi、Volcengine
52
+ ├── providers/ 5 个内置协议 Provider(Anthropic、OpenAI、OpenAI Responses、OpenAI Codex、Gemini)
53
53
  ├── tools/ 工具执行器(顺序/并行)+ MCP 适配器
54
54
  ├── approval/ 基于队列的审批系统
55
55
  ├── session/ JSONL 树形持久化,支持分支
@@ -61,6 +61,7 @@ src/
61
61
  ├── skills/ Markdown 技能发现 + 模板渲染
62
62
  ├── wire/ 类型化异步事件通道,支持回放缓冲
63
63
  ├── background/ 进程内异步任务管理器
64
+ ├── planning/ 两阶段规划 + 结构化 todo + nag 注入
64
65
  └── utils/ ID 生成 + JSONL 工具
65
66
  ```
66
67
 
@@ -103,11 +104,9 @@ await agent.dispose();
103
104
 
104
105
  ### LLM Provider
105
106
 
106
- Provider 无关的抽象层,内置 7 Provider 3 种协议兼容代理模式。所有 Provider 支持流式输出、重试(3 次,指数退避)和扩展思考。
107
+ Provider 无关的抽象层,内置 5 个协议 Provider。所有 Provider 支持流式输出、重试(3 次,指数退避)和扩展思考。通过自定义 `baseUrl` 即可接入任何兼容服务。
107
108
 
108
- 内置 Provider:`anthropic`、`openai`、`openai-codex`、`google`、`minimax`、`kimi`、`volcengine`
109
-
110
- 协议兼容代理:`openai-compatible`、`anthropic-compatible`、`gemini-compatible` — 提供 `baseUrl` 即可接入任何兼容服务。
109
+ 内置 Provider:`anthropic`、`openai`、`openai-responses`、`openai-codex`、`google`
111
110
 
112
111
  ```typescript
113
112
  // 使用内置 Provider
@@ -116,14 +115,14 @@ const agent = createAgent({
116
115
  ...
117
116
  });
118
117
 
119
- // 通过代理模式接入兼容服务
118
+ // 通过自定义 baseUrl 接入兼容服务
120
119
  const agent2 = createAgent({
121
- model: { provider: "openai-compatible", model: "my-model", maxContextTokens: 128000, baseUrl: "https://my-service/v1" },
120
+ model: { provider: "openai", model: "my-model", maxContextTokens: 128000, baseUrl: "https://my-service/v1" },
122
121
  ...
123
122
  });
124
123
 
125
124
  // 注册完全自定义的 Provider
126
- import { registerProvider } from "@klaus-ai/agent";
125
+ import { registerProvider } from "klaus-agent";
127
126
  registerProvider("my-provider", (config) => new MyProvider(config.apiKey, config.baseUrl));
128
127
  ```
129
128
 
@@ -137,6 +136,26 @@ interface LLMProvider {
137
136
  // 流式事件类型:text | tool_call_start | tool_call_delta | thinking | done | error
138
137
  ```
139
138
 
139
+ 成本追踪 — 通过 `ModelConfig.cost` 提供每百万 token 的单价,agent 会在每次 `message_end` 事件中自动计算实际成本:
140
+
141
+ ```typescript
142
+ const agent = createAgent({
143
+ model: {
144
+ provider: "anthropic",
145
+ model: "claude-sonnet-4-20250514",
146
+ maxContextTokens: 200000,
147
+ cost: { input: 3, output: 15, cacheRead: 0.3, cacheWrite: 3.75 },
148
+ },
149
+ ...
150
+ });
151
+
152
+ agent.subscribe((event) => {
153
+ if (event.type === "message_end" && event.usage?.cost) {
154
+ console.log(`请求成本: $${event.usage.cost.total.toFixed(6)}`);
155
+ }
156
+ });
157
+ ```
158
+
140
159
  ### 标准消息格式
141
160
 
142
161
  框架内部使用的 Provider 无关消息类型:
@@ -170,7 +189,7 @@ interface ToolResultMessage {
170
189
 
171
190
  ```typescript
172
191
  import { Type } from "@sinclair/typebox";
173
- import type { AgentTool } from "@klaus-ai/agent";
192
+ import type { AgentTool } from "klaus-agent";
174
193
 
175
194
  const readFile: AgentTool = {
176
195
  name: "read_file",
@@ -364,7 +383,7 @@ agent.laborMarket.removeDynamic("analyst");
364
383
  事件驱动的插件系统,覆盖 Agent 生命周期、工具执行、LLM 请求、上下文、压缩、会话和后台任务共 18 种事件类型。
365
384
 
366
385
  ```typescript
367
- import type { ExtensionFactory } from "@klaus-ai/agent";
386
+ import type { ExtensionFactory } from "klaus-agent";
368
387
 
369
388
  const myExtension: ExtensionFactory = (api) => {
370
389
  // 注册事件处理器
@@ -516,6 +535,38 @@ handle.abort();
516
535
 
517
536
  内置工具:`start_background_task`、`check_task_status`、`get_task_result`。
518
537
 
538
+ ### Planning(两阶段 Todo)
539
+
540
+ 可选的两阶段规划系统。结合结构化 todo 管理、阶段性工具访问控制和 nag 提醒。
541
+
542
+ ```typescript
543
+ const agent = createAgent({
544
+ planning: {
545
+ readOnlyTools: ["read_file", "search"], // 规划阶段可用的工具
546
+ nagAfterRounds: 3, // 连续 N 轮不更新 todo 后注入提醒
547
+ nagMessage: "<reminder>更新你的 todo。</reminder>", // 自定义提醒文本
548
+ maxTodos: 50, // todo 数量上限(默认 50)
549
+ },
550
+ ...
551
+ });
552
+
553
+ // 访问规划状态
554
+ console.log(agent.planning?.phase); // "planning" | "executing"
555
+ console.log(agent.planning?.todos); // readonly TodoItem[]
556
+ ```
557
+
558
+ **工作流:**
559
+
560
+ 1. Agent 启动后进入 **planning 阶段** — 只有 `readOnlyTools` + `todo` + `plan_mode` 工具可用
561
+ 2. LLM 使用 `todo` 工具创建结构化计划(同一时间只允许一个 `in_progress` 项)
562
+ 3. LLM 调用 `plan_mode({ action: "start_execution" })` 切换到 **execution 阶段**
563
+ 4. 执行阶段所有工具可用;如果 LLM 连续 3+ 轮不更新 todo,自动注入 `<reminder>`
564
+ 5. 随时可通过 `plan_mode({ action: "switch_to_planning" })` 切回规划阶段
565
+
566
+ 内置工具:`todo`、`plan_mode`。
567
+
568
+ 如果 `readOnlyTools` 未配置或为空,规划阶段所有工具仍可用(阶段分离仅通过工具描述建议模型遵守)。
569
+
519
570
  ### Hooks
520
571
 
521
572
  用户级 hook,用于转换上下文和拦截工具调用:
@@ -577,7 +628,7 @@ agent.subscribe((event) => {
577
628
  ## 完整示例
578
629
 
579
630
  ```typescript
580
- import { createAgent } from "@klaus-ai/agent";
631
+ import { createAgent } from "klaus-agent";
581
632
  import { Type } from "@sinclair/typebox";
582
633
 
583
634
  const agent = createAgent({
@@ -620,6 +671,7 @@ const agent = createAgent({
620
671
 
621
672
  wire: { bufferSize: 100 },
622
673
  backgroundTasks: { factories: { build: buildTaskFactory } },
674
+ planning: { readOnlyTools: ["read_file", "search"], nagAfterRounds: 3 },
623
675
 
624
676
  hooks: {
625
677
  transformContext: async (msgs) => msgs,
@@ -662,6 +714,7 @@ await agent.dispose();
662
714
  | `mcp` | `{ servers, clientFactory }` | 否 | — | MCP 服务器配置 |
663
715
  | `wire` | `{ bufferSize }` | 否 | `{ bufferSize: 0 }` | 事件通道配置 |
664
716
  | `backgroundTasks` | `{ factories }` | 否 | — | 后台任务工厂 |
717
+ | `planning` | `PlanningConfig` | 否 | — | 两阶段规划,含 todo 管理和 nag 提醒 |
665
718
  | `provider` | `LLMProvider` | 否 | — | 自定义 LLM Provider(绕过注册中心) |
666
719
 
667
720
  ### `Agent` 实例
@@ -685,6 +738,7 @@ await agent.dispose();
685
738
  | `mcpAdapter` | `MCPAdapter`(需配置 MCP)。 |
686
739
  | `wire` | `Wire` 事件通道(始终可用)。 |
687
740
  | `backgroundTasks` | `BackgroundTaskManager`(需配置)。 |
741
+ | `planning` | `PlanningManager`(需配置)。 |
688
742
  | `setSystemPrompt(prompt)` | 更新系统提示词。 |
689
743
  | `setModel(model)` | 更新模型配置。 |
690
744
  | `setTools(tools)` | 替换工具(运行中不可调用)。 |
@@ -1,4 +1,4 @@
1
- import type { AgentMessage, AgentEvent, AgentHooks, ThinkingLevel } from "../types.js";
1
+ import type { AgentMessage, AgentEvent, AgentHooks, ThinkingLevel, ModelCost } from "../types.js";
2
2
  import type { AgentTool } from "../tools/types.js";
3
3
  import type { LLMProvider } from "../llm/types.js";
4
4
  import type { Approval } from "../approval/types.js";
@@ -7,6 +7,7 @@ import type { CheckpointManager } from "../checkpoint/checkpoint-manager.js";
7
7
  import type { InjectionManager } from "../injection/injection-manager.js";
8
8
  import type { ExtensionRunner } from "../extensions/runner.js";
9
9
  import type { CompactionConfig } from "../compaction/types.js";
10
+ import type { PlanningManager } from "../planning/planning-manager.js";
10
11
  export interface AgentLoopConfig {
11
12
  provider: LLMProvider;
12
13
  modelId: string;
@@ -33,5 +34,7 @@ export interface AgentLoopConfig {
33
34
  compaction?: CompactionConfig & {
34
35
  summarize?: (messages: AgentMessage[]) => Promise<string>;
35
36
  };
37
+ planningManager?: PlanningManager;
38
+ modelCost?: ModelCost;
36
39
  }
37
40
  export declare function runAgentLoop(initialMessages: AgentMessage[], config: AgentLoopConfig): Promise<AgentMessage[]>;
@@ -1,8 +1,10 @@
1
1
  // Agent loop — nested while loop with full integration
2
2
  // session, compaction, checkpoint, injection, extension all wired in
3
+ import { PLANNING_TOOL_NAMES } from "../planning/types.js";
3
4
  import { executeToolCalls } from "../tools/executor.js";
4
5
  import { estimateTokens, shouldCompact, findCutPoint } from "../compaction/compaction.js";
5
6
  import { normalizeHistory } from "../injection/history-normalizer.js";
7
+ import { calculateCost } from "../providers/shared.js";
6
8
  function defaultConvertToLlm(messages) {
7
9
  return messages.filter((m) => typeof m === "object" && m !== null && "role" in m &&
8
10
  (m.role === "user" || m.role === "assistant" || m.role === "tool_result"));
@@ -168,8 +170,13 @@ export async function runAgentLoop(initialMessages, config) {
168
170
  if (config.capabilities?.vision === false) {
169
171
  llmMessages = stripImages(llmMessages);
170
172
  }
173
+ // --- Phase-aware tool filtering ---
174
+ let visibleTools = allTools;
175
+ if (config.planningManager?.phase === "planning" && config.planningManager.allowedInPlanning.size > 2) {
176
+ visibleTools = allTools.filter((t) => config.planningManager.allowedInPlanning.has(t.name));
177
+ }
171
178
  // --- Stream LLM response ---
172
- const toolDefs = toolsToDefinitions(allTools);
179
+ const toolDefs = toolsToDefinitions(visibleTools);
173
180
  let requestOptions = {
174
181
  model: modelId,
175
182
  systemPrompt,
@@ -204,7 +211,10 @@ export async function runAgentLoop(initialMessages, config) {
204
211
  if (event.type === "done") {
205
212
  assistantMessage = event.message;
206
213
  usage = event.usage;
207
- onEvent({ type: "message_end", message: event.message, usage: event.usage });
214
+ const cost = calculateCost(config.modelCost, event.usage);
215
+ if (cost)
216
+ usage.cost = cost;
217
+ onEvent({ type: "message_end", message: event.message, usage });
208
218
  await extensionRunner?.emitSimple("message_end", { message: event.message });
209
219
  }
210
220
  else if (event.type === "error") {
@@ -232,7 +242,7 @@ export async function runAgentLoop(initialMessages, config) {
232
242
  const toolResults = [];
233
243
  if (toolCalls.length > 0) {
234
244
  const results = await executeToolCalls(toolCalls, {
235
- tools: allTools,
245
+ tools: visibleTools,
236
246
  mode: config.toolExecution,
237
247
  approval: config.approval,
238
248
  agentName: config.agentName,
@@ -271,6 +281,13 @@ export async function runAgentLoop(initialMessages, config) {
271
281
  for (const rm of resultMessages) {
272
282
  await sessionManager?.appendMessage(rm);
273
283
  }
284
+ // --- Planning: tick round counter (reset happens inside updateTodos when todo tool is called) ---
285
+ if (config.planningManager) {
286
+ const calledTodo = toolCalls.some((tc) => tc.name === PLANNING_TOOL_NAMES.todo);
287
+ if (!calledTodo) {
288
+ config.planningManager.tickRound();
289
+ }
290
+ }
274
291
  hasMoreWork = true;
275
292
  }
276
293
  onEvent({ type: "turn_end", message: assistantMessage, toolResults });
@@ -1 +1 @@
1
- {"version":3,"file":"agent-loop.js","sourceRoot":"","sources":["../../src/core/agent-loop.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"agent-loop.js","sourceRoot":"","sources":["../../src/core/agent-loop.ts"],"names":[],"mappings":"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"}
@@ -11,6 +11,7 @@ import type { SubagentConfig } from "../multi-agent/types.js";
11
11
  import type { SkillSource } from "../skills/types.js";
12
12
  import type { MCPServerConfig, MCPClient } from "../tools/mcp-adapter.js";
13
13
  import type { TaskFactory } from "../background/types.js";
14
+ import type { PlanningConfig } from "../planning/types.js";
14
15
  import { SessionManager } from "../session/session-manager.js";
15
16
  import { CheckpointManager } from "../checkpoint/checkpoint-manager.js";
16
17
  import { InjectionManager } from "../injection/injection-manager.js";
@@ -19,6 +20,7 @@ import { LaborMarket } from "../multi-agent/labor-market.js";
19
20
  import { MCPAdapter } from "../tools/mcp-adapter.js";
20
21
  import { Wire } from "../wire/wire.js";
21
22
  import { BackgroundTaskManager } from "../background/task-manager.js";
23
+ import { PlanningManager } from "../planning/planning-manager.js";
22
24
  export interface AgentConfig {
23
25
  model: ModelConfig;
24
26
  systemPrompt: string | (() => string | Promise<string>);
@@ -47,6 +49,7 @@ export interface AgentConfig {
47
49
  backgroundTasks?: {
48
50
  factories?: Record<string, TaskFactory>;
49
51
  };
52
+ planning?: PlanningConfig;
50
53
  }
51
54
  export declare class Agent {
52
55
  private _state;
@@ -67,6 +70,7 @@ export declare class Agent {
67
70
  private _mcpAdapter;
68
71
  private _wire;
69
72
  private _backgroundTaskManager;
73
+ private _planningManager;
70
74
  private _initialized;
71
75
  constructor(config: AgentConfig);
72
76
  prompt(input: string | AgentMessage | AgentMessage[]): Promise<AgentMessage[]>;
@@ -85,6 +89,7 @@ export declare class Agent {
85
89
  get mcpAdapter(): MCPAdapter | undefined;
86
90
  get wire(): Wire;
87
91
  get backgroundTasks(): BackgroundTaskManager | undefined;
92
+ get planning(): PlanningManager | undefined;
88
93
  setSystemPrompt(prompt: string): void;
89
94
  setModel(model: ModelConfig): void;
90
95
  setTools(tools: AgentTool[]): void;
@@ -13,6 +13,9 @@ import { LLMSummarizer, agentMessagesToCompactionInput } from "../compaction/sum
13
13
  import { Wire } from "../wire/wire.js";
14
14
  import { BackgroundTaskManager } from "../background/task-manager.js";
15
15
  import { createBackgroundTaskTools } from "../background/tools.js";
16
+ import { PlanningManager } from "../planning/planning-manager.js";
17
+ import { createPlanningTools } from "../planning/tools.js";
18
+ import { PlanningNagProvider } from "../planning/nag-injection.js";
16
19
  import { runAgentLoop } from "./agent-loop.js";
17
20
  export class Agent {
18
21
  _state;
@@ -34,6 +37,7 @@ export class Agent {
34
37
  _mcpAdapter;
35
38
  _wire;
36
39
  _backgroundTaskManager;
40
+ _planningManager;
37
41
  _initialized = false;
38
42
  constructor(config) {
39
43
  this._config = config;
@@ -90,6 +94,10 @@ export class Agent {
90
94
  }
91
95
  });
92
96
  }
97
+ // Planning
98
+ if (config.planning) {
99
+ this._planningManager = new PlanningManager(config.planning);
100
+ }
93
101
  }
94
102
  // --- Public API ---
95
103
  async prompt(input) {
@@ -160,6 +168,9 @@ export class Agent {
160
168
  get backgroundTasks() {
161
169
  return this._backgroundTaskManager;
162
170
  }
171
+ get planning() {
172
+ return this._planningManager;
173
+ }
163
174
  setSystemPrompt(prompt) {
164
175
  this._state.systemPrompt = prompt;
165
176
  }
@@ -262,6 +273,18 @@ export class Agent {
262
273
  const bgTools = createBackgroundTaskTools(this._backgroundTaskManager, this._config.backgroundTasks?.factories);
263
274
  this._state.tools = [...this._state.tools, ...bgTools];
264
275
  }
276
+ // Planning tools + nag injection
277
+ if (this._planningManager) {
278
+ this._state.tools = [...this._state.tools, ...createPlanningTools(this._planningManager)];
279
+ // Register nag provider into injection manager (create one if needed)
280
+ const nagProvider = new PlanningNagProvider(this._planningManager);
281
+ if (this._injectionManager) {
282
+ this._injectionManager.addProvider(nagProvider);
283
+ }
284
+ else {
285
+ this._injectionManager = new InjectionManager([nagProvider]);
286
+ }
287
+ }
265
288
  }
266
289
  _normalizeInput(input) {
267
290
  if (typeof input === "string") {
@@ -314,6 +337,7 @@ export class Agent {
314
337
  hooks: this._config.hooks,
315
338
  thinkingLevel: this._state.thinkingLevel,
316
339
  capabilities: this._state.model.capabilities,
340
+ modelCost: this._state.model.cost,
317
341
  signal: this._abortController.signal,
318
342
  getSteeringMessages: () => {
319
343
  const msgs = [...this._steeringQueue];
@@ -332,6 +356,7 @@ export class Agent {
332
356
  injectionManager: this._injectionManager,
333
357
  extensionRunner: this._extensionRunner,
334
358
  compaction: compactionWithSummarizer,
359
+ planningManager: this._planningManager,
335
360
  });
336
361
  this._state.messages = result;
337
362
  return result;