fourmis-agents-sdk 0.3.1 → 0.4.1

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 (84) hide show
  1. package/README.md +126 -198
  2. package/dist/agent-loop.d.ts +21 -3
  3. package/dist/agent-loop.d.ts.map +1 -1
  4. package/dist/agent-loop.js +279 -90
  5. package/dist/agents/index.js +1079 -124
  6. package/dist/agents/tools.d.ts.map +1 -1
  7. package/dist/agents/tools.js +1079 -124
  8. package/dist/agents/types.d.ts +4 -0
  9. package/dist/agents/types.d.ts.map +1 -1
  10. package/dist/api.d.ts +8 -5
  11. package/dist/api.d.ts.map +1 -1
  12. package/dist/api.js +1663 -430
  13. package/dist/hooks.d.ts +19 -1
  14. package/dist/hooks.d.ts.map +1 -1
  15. package/dist/hooks.js +27 -2
  16. package/dist/index.d.ts +8 -1
  17. package/dist/index.d.ts.map +1 -1
  18. package/dist/index.js +1671 -431
  19. package/dist/mcp/client.d.ts +8 -1
  20. package/dist/mcp/client.d.ts.map +1 -1
  21. package/dist/mcp/client.js +134 -13
  22. package/dist/mcp/index.js +134 -13
  23. package/dist/mcp/types.d.ts +21 -1
  24. package/dist/mcp/types.d.ts.map +1 -1
  25. package/dist/permissions.d.ts.map +1 -1
  26. package/dist/permissions.js +7 -3
  27. package/dist/providers/anthropic.d.ts.map +1 -1
  28. package/dist/providers/anthropic.js +41 -2
  29. package/dist/providers/openai.d.ts +6 -0
  30. package/dist/providers/openai.d.ts.map +1 -1
  31. package/dist/providers/openai.js +36 -6
  32. package/dist/providers/registry.js +76 -8
  33. package/dist/providers/types.d.ts +4 -1
  34. package/dist/providers/types.d.ts.map +1 -1
  35. package/dist/query.d.ts +21 -2
  36. package/dist/query.d.ts.map +1 -1
  37. package/dist/query.js +69 -1
  38. package/dist/skills/index.js +23 -1
  39. package/dist/skills/skills.d.ts +16 -0
  40. package/dist/skills/skills.d.ts.map +1 -1
  41. package/dist/skills/skills.js +23 -1
  42. package/dist/tools/ask-user-question.d.ts +7 -0
  43. package/dist/tools/ask-user-question.d.ts.map +1 -0
  44. package/dist/tools/ask-user-question.js +48 -0
  45. package/dist/tools/bash.d.ts.map +1 -1
  46. package/dist/tools/bash.js +47 -2
  47. package/dist/tools/config.d.ts +7 -0
  48. package/dist/tools/config.d.ts.map +1 -0
  49. package/dist/tools/config.js +114 -0
  50. package/dist/tools/exit-plan-mode.d.ts +7 -0
  51. package/dist/tools/exit-plan-mode.d.ts.map +1 -0
  52. package/dist/tools/exit-plan-mode.js +34 -0
  53. package/dist/tools/index.d.ts +7 -0
  54. package/dist/tools/index.d.ts.map +1 -1
  55. package/dist/tools/index.js +506 -9
  56. package/dist/tools/notebook-edit.d.ts +7 -0
  57. package/dist/tools/notebook-edit.d.ts.map +1 -0
  58. package/dist/tools/notebook-edit.js +83 -0
  59. package/dist/tools/presets.d.ts +2 -1
  60. package/dist/tools/presets.d.ts.map +1 -1
  61. package/dist/tools/presets.js +22 -4
  62. package/dist/tools/read.d.ts.map +1 -1
  63. package/dist/tools/read.js +12 -1
  64. package/dist/tools/registry.d.ts +2 -0
  65. package/dist/tools/registry.d.ts.map +1 -1
  66. package/dist/tools/registry.js +10 -0
  67. package/dist/tools/todo-write.d.ts +7 -0
  68. package/dist/tools/todo-write.d.ts.map +1 -0
  69. package/dist/tools/todo-write.js +69 -0
  70. package/dist/tools/web-fetch.d.ts +6 -0
  71. package/dist/tools/web-fetch.d.ts.map +1 -0
  72. package/dist/tools/web-fetch.js +85 -0
  73. package/dist/tools/web-search.d.ts +7 -0
  74. package/dist/tools/web-search.d.ts.map +1 -0
  75. package/dist/tools/web-search.js +78 -0
  76. package/dist/types.d.ts +344 -42
  77. package/dist/types.d.ts.map +1 -1
  78. package/dist/utils/session-store.d.ts +1 -1
  79. package/dist/utils/session-store.d.ts.map +1 -1
  80. package/dist/utils/session-store.js +49 -2
  81. package/dist/utils/system-prompt.d.ts +2 -0
  82. package/dist/utils/system-prompt.d.ts.map +1 -1
  83. package/dist/utils/system-prompt.js +33 -4
  84. package/package.json +3 -2
package/README.md CHANGED
@@ -2,22 +2,16 @@
2
2
 
3
3
  Multi-provider AI agent SDK with direct API access and in-process tool execution.
4
4
 
5
- > **Requires [Bun](https://bun.sh) v1.0+** this SDK uses Bun-native APIs (`Bun.spawn`, `Bun.Glob`, `Bun.build`) and is not compatible with Node.js.
5
+ > Requires [Bun](https://bun.sh) v1.0+. This SDK uses Bun-native APIs (`Bun.spawn`, `Bun.Glob`, `Bun.build`) and is not Node runtime-compatible for host execution.
6
6
 
7
- A TypeScript library that gives you coding agents on **any LLM provider** — same `query()` API, same streaming events, same tool capabilities — without being locked to a single vendor.
7
+ ## What It Is
8
8
 
9
- ## Why?
9
+ `fourmis-agents-sdk` provides a single `query()` API that works across providers while keeping the agent loop transparent and controllable.
10
10
 
11
- The [Anthropic Agent SDK](https://github.com/anthropics/claude-agent-sdk-typescript) is excellent but:
12
- - **Claude-only** spawns a Claude Code subprocess, no other providers
13
- - **Opaque** the agent loop runs inside the subprocess
14
- - **~12s startup overhead** per query (subprocess spawn)
15
-
16
- `fourmis-agents-sdk` provides:
17
- - **Multi-provider** — Anthropic, OpenAI, and Gemini out of the box, extensible via `registerProvider()`
18
- - **Transparent agent loop** — you control the execution cycle
19
- - **No subprocess overhead** — direct API calls, <100ms startup
20
- - **In-process tool execution** — 6 built-in coding tools
11
+ - Multi-provider: Anthropic, OpenAI, Gemini (plus custom providers via registry)
12
+ - Claude-style message envelopes (`system`, `assistant`, `user`, `stream_event`, `result`)
13
+ - In-process tool execution (file/system/web/notebook/config/todo)
14
+ - Hooks, permissions, MCP servers, subagents, skills, and memory
21
15
 
22
16
  ## Quick Start
23
17
 
@@ -25,289 +19,223 @@ The [Anthropic Agent SDK](https://github.com/anthropics/claude-agent-sdk-typescr
25
19
  import { query } from "fourmis-agents-sdk";
26
20
 
27
21
  const conversation = query({
28
- prompt: "Read package.json and tell me the project name",
22
+ prompt: "Read package.json and tell me the project name.",
29
23
  options: {
30
24
  provider: "anthropic",
31
25
  model: "claude-sonnet-4-5-20250929",
32
- cwd: "./my-project",
33
- tools: "coding", // preset: Bash, Read, Write, Edit, Glob, Grep
26
+ cwd: process.cwd(),
27
+ tools: { type: "preset", preset: "claude_code" },
34
28
  maxTurns: 5,
35
29
  },
36
30
  });
37
31
 
38
32
  for await (const msg of conversation) {
39
- if (msg.type === "text") process.stdout.write(msg.text);
40
- if (msg.type === "tool_use") console.log(`\n[tool] ${msg.name}`);
41
- if (msg.type === "result") console.log(`\nDone: $${msg.costUsd}`);
33
+ if (msg.type === "assistant") {
34
+ for (const block of msg.message.content) {
35
+ if (block.type === "text") process.stdout.write(block.text);
36
+ }
37
+ }
38
+
39
+ if (msg.type === "result") {
40
+ console.log(`\nstop=${msg.subtype} cost=$${msg.total_cost_usd.toFixed(4)}`);
41
+ }
42
42
  }
43
43
  ```
44
44
 
45
- ## Features
46
-
47
- ### Providers
45
+ ## Providers
48
46
 
49
- Three built-in providers, with an extensible registry:
47
+ Built-in providers:
50
48
 
51
- | Provider | Auth | Models |
52
- |----------|------|--------|
53
- | `anthropic` | `ANTHROPIC_API_KEY` | Claude Sonnet, Opus, Haiku |
54
- | `openai` | `OPENAI_API_KEY` or Codex OAuth | GPT-4o, o3, etc. |
55
- | `gemini` | `GEMINI_API_KEY` or Gemini CLI OAuth | Gemini 2.5 Pro, Flash, etc. |
49
+ | Provider | Auth |
50
+ | --- | --- |
51
+ | `anthropic` | `ANTHROPIC_API_KEY` or Claude OAuth token |
52
+ | `openai` | `OPENAI_API_KEY` or OpenAI/Codex OAuth |
53
+ | `gemini` | `GEMINI_API_KEY` or Gemini CLI OAuth |
56
54
 
57
55
  ```ts
58
- // Use OpenAI
59
- query({ prompt: "...", options: { provider: "openai", model: "gpt-4o" } });
56
+ import { query, registerProvider } from "fourmis-agents-sdk";
60
57
 
61
- // Use Gemini
58
+ query({ prompt: "...", options: { provider: "openai", model: "gpt-4.1-mini" } });
62
59
  query({ prompt: "...", options: { provider: "gemini", model: "gemini-2.5-flash" } });
63
60
 
64
- // Register a custom provider
65
- import { registerProvider } from "fourmis-agents-sdk";
66
61
  registerProvider("my-provider", myAdapter);
67
62
  ```
68
63
 
69
- ### Tools
64
+ ## Tools
70
65
 
71
- 6 built-in tools with 3 presets:
66
+ Current built-in tools:
72
67
 
73
- | Tool | Description |
74
- |------|-------------|
75
- | `Bash` | Shell command execution via `Bun.spawn()` |
76
- | `Read` | File reading with line numbers |
77
- | `Write` | File creation/overwriting |
78
- | `Edit` | String replacement with uniqueness check |
68
+ | Tool | Purpose |
69
+ | --- | --- |
70
+ | `Bash` | Shell command execution |
71
+ | `Read` | Read files with line numbers |
72
+ | `Write` | Write/overwrite files |
73
+ | `Edit` | Exact string replacement |
79
74
  | `Glob` | File pattern matching |
80
75
  | `Grep` | Regex content search |
76
+ | `NotebookEdit` | Edit Jupyter notebook cells |
77
+ | `WebFetch` | Fetch URL content |
78
+ | `WebSearch` | Lightweight web search |
79
+ | `TodoWrite` | Persist todo state |
80
+ | `Config` | Read/write `.claude/settings*.json` |
81
+ | `AskUserQuestion` | Ask user (returns runtime-unavailable error in this host mode) |
82
+ | `ExitPlanMode` | Request exit from plan mode |
83
+
84
+ Tool configuration:
81
85
 
82
86
  ```ts
83
- // Presets
84
- tools: "coding" // All 6: Bash, Read, Write, Edit, Glob, Grep
85
- tools: "readonly" // Read, Glob, Grep
86
- tools: "minimal" // Read, Write, Edit, Glob, Grep
87
+ query({
88
+ prompt: "...",
89
+ options: {
90
+ // Exposed preset
91
+ tools: { type: "preset", preset: "claude_code" },
87
92
 
88
- // Custom list
89
- tools: ["Read", "Glob", "Grep"]
93
+ // Or explicit list
94
+ // tools: ["Read", "Glob", "Grep"],
90
95
 
91
- // Filter tools
92
- allowedTools: ["Read", "Bash"]
93
- disallowedTools: ["Bash"]
96
+ allowedTools: ["Read", "Glob", "Grep"],
97
+ disallowedTools: ["Bash"],
98
+ },
99
+ });
94
100
  ```
95
101
 
96
- ### Hooks
102
+ ## Hooks
97
103
 
98
- Lifecycle callbacks for observing and intervening at key points in the agent loop:
104
+ Lifecycle hooks can observe and influence execution:
99
105
 
100
- | Event | When |
101
- |-------|------|
102
- | `PreToolUse` | Before a tool executes — can deny or modify input |
103
- | `PostToolUse` | After a tool succeeds — can append context |
104
- | `PostToolUseFailure` | After a tool fails or is denied |
105
- | `SessionStart` / `SessionEnd` | Session lifecycle |
106
- | `Stop` | Before the agent returns its final result |
107
- | `Notification` | Informational events |
108
- | `SubagentStart` / `SubagentStop` | Subagent lifecycle |
109
- | `PreCompact` | Before context compaction |
110
- | `PermissionRequest` | When a permission decision is needed |
111
- | `UserPromptSubmit` | When a user prompt is submitted |
106
+ - `PreToolUse`, `PostToolUse`, `PostToolUseFailure`
107
+ - `SessionStart`, `SessionEnd`, `Stop`, `Notification`
108
+ - `SubagentStart`, `SubagentStop`, `PreCompact`, `PermissionRequest`
109
+ - `UserPromptSubmit`, `Setup`, `TeammateIdle`, `TaskCompleted`
112
110
 
113
111
  ```ts
114
112
  query({
115
113
  prompt: "...",
116
114
  options: {
117
115
  hooks: {
118
- PreToolUse: [{
119
- matcher: "Bash", // regex matched against tool name
120
- hooks: [async (input) => {
121
- console.log("Running:", input.tool_input);
122
- return {}; // or { permissionDecision: "deny" }
123
- }],
124
- }],
116
+ PreToolUse: [
117
+ {
118
+ matcher: "^Bash$",
119
+ hooks: [
120
+ async () => ({
121
+ decision: { behavior: "deny", message: "Blocked by policy." },
122
+ }),
123
+ ],
124
+ },
125
+ ],
125
126
  },
126
127
  },
127
128
  });
128
129
  ```
129
130
 
130
- ### MCP (Model Context Protocol)
131
+ ## MCP (Model Context Protocol)
131
132
 
132
- Connect to external MCP servers to extend the agent with additional tools. Supports 4 transport types:
133
+ Supports `stdio`, `sse`, `http`, and in-process `sdk` MCP servers.
133
134
 
134
135
  ```ts
135
136
  query({
136
137
  prompt: "...",
137
138
  options: {
138
139
  mcpServers: {
139
- // stdio
140
- myServer: { command: "node", args: ["server.js"] },
141
- // SSE
142
- remote: { type: "sse", url: "http://localhost:3000/sse" },
143
- // HTTP
144
- httpServer: { type: "http", url: "http://localhost:3000" },
145
- // In-process SDK server
146
- inProc: { type: "sdk", name: "myTools", instance: myMcpServer },
140
+ stdioServer: { command: "node", args: ["server.js"] },
141
+ remoteSse: { type: "sse", url: "http://localhost:3000/sse" },
142
+ remoteHttp: { type: "http", url: "http://localhost:3000" },
143
+ inProc: { type: "sdk", name: "my-tools", instance: myMcpServer },
147
144
  },
148
145
  },
149
146
  });
150
147
  ```
151
148
 
152
- Create in-process MCP servers with Zod-typed tools:
149
+ Create in-process MCP server configs:
153
150
 
154
151
  ```ts
155
152
  import { createMcpServer, mcpTool } from "fourmis-agents-sdk";
156
153
  import { z } from "zod";
157
154
 
158
- const server = createMcpServer({
155
+ const mcpConfig = createMcpServer({
159
156
  name: "my-tools",
160
157
  tools: [
161
- mcpTool("greet", "Say hello", z.object({ name: z.string() }), async ({ name }) => ({
162
- content: [{ type: "text", text: `Hello, ${name}!` }],
163
- })),
158
+ mcpTool("greet", "Say hello", { name: z.string() }, async ({ name }) => {
159
+ return `Hello, ${name}!`;
160
+ }),
164
161
  ],
165
162
  });
166
163
  ```
167
164
 
168
- ### Subagents
165
+ ## Subagents
169
166
 
170
- Define specialized agents that the main agent can spawn via the `Task` tool:
167
+ Define agent roles and let the parent invoke them with `Task`:
171
168
 
172
169
  ```ts
173
170
  query({
174
- prompt: "Refactor the auth module",
171
+ prompt: "Delegate to researcher and report package name.",
175
172
  options: {
176
173
  agents: {
177
174
  researcher: {
178
- description: "Reads code and answers questions",
179
- prompt: "You are a code researcher. Read files and answer questions.",
175
+ description: "Reads code and reports facts.",
176
+ prompt: "Be concise and factual.",
180
177
  tools: ["Read", "Glob", "Grep"],
181
- model: "claude-haiku-4-5-20251001",
182
- },
183
- coder: {
184
- description: "Writes and edits code",
185
- prompt: "You are a code editor.",
186
- tools: ["Read", "Write", "Edit", "Glob", "Grep"],
187
- provider: "openai", // can use a different provider per agent
178
+ maxTurns: 3,
188
179
  },
189
180
  },
190
181
  },
191
182
  });
192
183
  ```
193
184
 
194
- Subagents run as background tasks managed by a `TaskManager` and expose `Task`, `TaskOutput`, and `TaskStop` tools to the parent agent.
185
+ ## Permissions and Settings
195
186
 
196
- ### Permissions
187
+ Permission modes:
188
+ - `default`
189
+ - `acceptEdits`
190
+ - `bypassPermissions` (requires `allowDangerouslySkipPermissions: true`)
191
+ - `plan`
192
+ - `delegate`
193
+ - `dontAsk`
197
194
 
198
- 6 permission modes control what the agent can do:
195
+ You can combine:
196
+ - explicit `permissions` allow/deny rules
197
+ - dynamic `canUseTool` callback
198
+ - settings-file loading via `settingSources: ["user", "project", "local"]`
199
199
 
200
- | Mode | Behavior |
201
- |------|----------|
202
- | `default` | Allow all (host app handles permissions) |
203
- | `bypassPermissions` | Allow everything unconditionally |
204
- | `acceptEdits` | Auto-approve read + file edit tools |
205
- | `plan` | Read-only tools only |
206
- | `delegate` | Team coordination tools only |
207
- | `dontAsk` | Deny anything not in the allow list |
200
+ ## Compatibility Harness
208
201
 
209
- ```ts
210
- query({
211
- prompt: "...",
212
- options: {
213
- permissionMode: "acceptEdits",
214
- permissions: {
215
- allow: ["Read", "Glob", "Grep", { toolName: "Bash", ruleContent: "npm test" }],
216
- deny: ["Bash"],
217
- },
218
- // Or provide a custom callback
219
- canUseTool: async (toolName, input, options) => {
220
- return { behavior: "allow" };
221
- },
222
- },
223
- });
224
- ```
225
-
226
- ### Settings Files
202
+ A strict side-by-side harness compares Fourmis vs `@anthropic-ai/claude-agent-sdk`.
227
203
 
228
- Load permissions from `.claude/settings*.json` files (compatible with Claude Code's format):
204
+ Run:
229
205
 
230
- ```ts
231
- query({
232
- prompt: "...",
233
- options: {
234
- settingSources: ["user", "project", "local"],
235
- // Loads from:
236
- // ~/.claude/settings.json (user-wide)
237
- // <cwd>/.claude/settings.json (project, shared)
238
- // <cwd>/.claude/settings.local.json (personal, gitignored)
239
- },
240
- });
206
+ ```bash
207
+ bun run test:compat
241
208
  ```
242
209
 
243
- ## Configuration Reference
210
+ Useful env vars:
244
211
 
245
- All options passed via `QueryOptions`:
212
+ - `COMPAT_REPEATS=3`
213
+ - `COMPAT_SCENARIOS=01-simple-text,02-read-package`
214
+ - `COMPAT_OUTPUT_DIR=/absolute/path`
246
215
 
247
- ```ts
248
- query({
249
- prompt: "...",
250
- options: {
251
- // Provider
252
- provider: "anthropic", // "anthropic" | "openai" | "gemini" | custom
253
- apiKey: "sk-...", // Override env var
254
- baseUrl: "https://...", // Custom endpoint
216
+ Artifacts per run:
255
217
 
256
- // Core
257
- model: "claude-sonnet-4-5-20250929",
258
- cwd: "/path/to/project",
259
- systemPrompt: "You are...",
260
- maxTurns: 10, // Default: 10
261
- maxBudgetUsd: 5, // Default: $5
262
- maxThinkingTokens: 10000,
263
-
264
- // Tools
265
- tools: "coding", // Preset name or string[]
266
- allowedTools: ["Read"], // Whitelist
267
- disallowedTools: ["Bash"], // Blacklist
268
-
269
- // Permissions
270
- permissionMode: "default",
271
- canUseTool: async () => ({ behavior: "allow" }),
272
- permissions: { allow: [...], deny: [...] },
273
- settingSources: ["user", "project", "local"],
274
-
275
- // Streaming
276
- includeStreamEvents: false, // Emit text_delta/thinking_delta events
277
-
278
- // Hooks, MCP, Subagents (see sections above)
279
- hooks: { ... },
280
- mcpServers: { ... },
281
- agents: { ... },
282
-
283
- // Debug
284
- debug: false,
285
- signal: abortController.signal,
286
- env: { PATH: "..." },
287
- },
288
- });
289
- ```
218
+ - `tests/compat/output/<timestamp>/summary.json`
219
+ - `tests/compat/output/<timestamp>/report.md`
220
+ - `tests/compat/output/<timestamp>/traces/*.json`
290
221
 
291
- ## Message Types
222
+ Current baseline (2026-02-17): 11/12 scenarios passing, with a known hook-deny mismatch in `08-hooks-deny-bash` on the Anthropic side.
292
223
 
293
- The query yields `AgentMessage` events:
224
+ ## Message Model
294
225
 
295
- | Type | Description |
296
- |------|-------------|
297
- | `init` | Session started — includes model, provider, tools, cwd |
298
- | `text` | Assistant text output |
299
- | `tool_use` | Tool invocation (name, input) |
300
- | `tool_result` | Tool result (content, isError) |
301
- | `stream` | Streaming delta (text or thinking) — only with `includeStreamEvents: true` |
302
- | `result` (success) | Final result with cost, duration, usage stats |
303
- | `result` (error) | Error result (execution error, max turns, max budget) |
304
- | `status` | Status update |
226
+ `query()` yields `AgentMessage` envelopes, primarily:
305
227
 
306
- ## Runtime
228
+ - `system` (`init`, `status`, hook/task events)
229
+ - `assistant` (text and `tool_use` blocks)
230
+ - `user` (tool results)
231
+ - `stream_event` (partial deltas)
232
+ - `tool_progress`, `tool_use_summary`
233
+ - `result` (`success` or error subtype)
307
234
 
308
- Built for [Bun](https://bun.sh). Uses `Bun.spawn()` for the Bash tool and `Bun.Glob` for pattern matching.
235
+ ## Install and Test
309
236
 
310
- ```sh
237
+ ```bash
311
238
  bun add fourmis-agents-sdk
312
239
  bun test
240
+ bun run test:compat
313
241
  ```
@@ -3,13 +3,13 @@
3
3
  *
4
4
  * AsyncGenerator that orchestrates:
5
5
  * 1. Call LLM via provider adapter
6
- * 2. Stream text deltas as AgentMessage events
6
+ * 2. Stream partial assistant deltas (optional)
7
7
  * 3. Collect tool calls
8
8
  * 4. Execute tools with permission checks
9
9
  * 5. Feed results back to LLM
10
10
  * 6. Repeat until done or limits reached
11
11
  */
12
- import type { AgentMessage } from "./types.js";
12
+ import type { AgentMessage, OutputFormat, ThinkingConfig, Effort, SdkBeta, SdkPluginConfig } from "./types.js";
13
13
  import type { ProviderAdapter, NormalizedMessage, NormalizedContent } from "./providers/types.js";
14
14
  import type { ToolRegistry } from "./tools/registry.js";
15
15
  import type { PermissionManager } from "./permissions.js";
@@ -20,6 +20,16 @@ export type SessionLogger = (role: "user" | "assistant", content: NormalizedCont
20
20
  export type AgentLoopOptions = {
21
21
  provider: ProviderAdapter;
22
22
  model: string;
23
+ fallbackModel?: string;
24
+ modelState?: {
25
+ current: string;
26
+ };
27
+ maxThinkingTokensState?: {
28
+ current: number | undefined;
29
+ };
30
+ thinking?: ThinkingConfig;
31
+ effort?: Effort;
32
+ outputFormat?: OutputFormat;
23
33
  systemPrompt: string;
24
34
  tools: ToolRegistry;
25
35
  permissions: PermissionManager;
@@ -27,7 +37,7 @@ export type AgentLoopOptions = {
27
37
  sessionId: string;
28
38
  maxTurns: number;
29
39
  maxBudgetUsd: number;
30
- includeStreamEvents: boolean;
40
+ includePartialMessages: boolean;
31
41
  signal: AbortSignal;
32
42
  env?: Record<string, string>;
33
43
  debug?: boolean;
@@ -37,6 +47,14 @@ export type AgentLoopOptions = {
37
47
  sessionLogger?: SessionLogger;
38
48
  /** Native memory tool for Anthropic provider (handled specially) */
39
49
  nativeMemoryTool?: NativeMemoryTool;
50
+ initMeta?: {
51
+ agents?: string[];
52
+ betas?: SdkBeta[];
53
+ slashCommands?: string[];
54
+ outputStyle?: string;
55
+ skills?: string[];
56
+ plugins?: SdkPluginConfig[];
57
+ };
40
58
  };
41
59
  export declare function agentLoop(prompt: string, options: AgentLoopOptions): AsyncGenerator<AgentMessage>;
42
60
  //# sourceMappingURL=agent-loop.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"agent-loop.d.ts","sourceRoot":"","sources":["../src/agent-loop.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EACV,YAAY,EAGb,MAAM,YAAY,CAAC;AAEpB,OAAO,KAAK,EAAE,eAAe,EAAE,iBAAiB,EAAE,iBAAiB,EAAa,MAAM,sBAAsB,CAAC;AAC7G,OAAO,KAAK,EAAE,YAAY,EAAe,MAAM,qBAAqB,CAAC;AACrE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAC1D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAC9C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACxD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAG1D,MAAM,MAAM,aAAa,GAAG,CAC1B,IAAI,EAAE,MAAM,GAAG,WAAW,EAC1B,OAAO,EAAE,iBAAiB,EAAE,GAAG,MAAM,EACrC,UAAU,EAAE,MAAM,GAAG,IAAI,KACtB,MAAM,CAAC;AAEZ,MAAM,MAAM,gBAAgB,GAAG;IAC7B,QAAQ,EAAE,eAAe,CAAC;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,YAAY,CAAC;IACpB,WAAW,EAAE,iBAAiB,CAAC;IAC/B,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,mBAAmB,EAAE,OAAO,CAAC;IAC7B,MAAM,EAAE,WAAW,CAAC;IACpB,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7B,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB,SAAS,CAAC,EAAE,gBAAgB,CAAC;IAC7B,gBAAgB,CAAC,EAAE,iBAAiB,EAAE,CAAC;IACvC,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,oEAAoE;IACpE,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;CACrC,CAAC;AAEF,wBAAuB,SAAS,CAC9B,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,gBAAgB,GACxB,cAAc,CAAC,YAAY,CAAC,CAkZ9B"}
1
+ {"version":3,"file":"agent-loop.d.ts","sourceRoot":"","sources":["../src/agent-loop.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EACV,YAAY,EAMZ,YAAY,EACZ,cAAc,EACd,MAAM,EAEN,OAAO,EACP,eAAe,EAChB,MAAM,YAAY,CAAC;AAEpB,OAAO,KAAK,EAAE,eAAe,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAClG,OAAO,KAAK,EAAE,YAAY,EAAe,MAAM,qBAAqB,CAAC;AACrE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAC1D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAC9C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACxD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAG1D,MAAM,MAAM,aAAa,GAAG,CAC1B,IAAI,EAAE,MAAM,GAAG,WAAW,EAC1B,OAAO,EAAE,iBAAiB,EAAE,GAAG,MAAM,EACrC,UAAU,EAAE,MAAM,GAAG,IAAI,KACtB,MAAM,CAAC;AAEZ,MAAM,MAAM,gBAAgB,GAAG;IAC7B,QAAQ,EAAE,eAAe,CAAC;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,UAAU,CAAC,EAAE;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;IACjC,sBAAsB,CAAC,EAAE;QAAE,OAAO,EAAE,MAAM,GAAG,SAAS,CAAA;KAAE,CAAC;IACzD,QAAQ,CAAC,EAAE,cAAc,CAAC;IAC1B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,YAAY,CAAC;IACpB,WAAW,EAAE,iBAAiB,CAAC;IAC/B,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,sBAAsB,EAAE,OAAO,CAAC;IAChC,MAAM,EAAE,WAAW,CAAC;IACpB,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7B,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB,SAAS,CAAC,EAAE,gBAAgB,CAAC;IAC7B,gBAAgB,CAAC,EAAE,iBAAiB,EAAE,CAAC;IACvC,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,oEAAoE;IACpE,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;IACpC,QAAQ,CAAC,EAAE;QACT,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;QAClB,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC;QAClB,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;QACzB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;QAClB,OAAO,CAAC,EAAE,eAAe,EAAE,CAAC;KAC7B,CAAC;CACH,CAAC;AA+DF,wBAAuB,SAAS,CAC9B,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,gBAAgB,GACxB,cAAc,CAAC,YAAY,CAAC,CAwjB9B"}