zidane 3.3.3 → 3.3.4

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.
@@ -176,12 +176,50 @@ interface McpServerConfig {
176
176
  bootstrapTimeout?: number;
177
177
  /** Timeout in milliseconds for MCP tool calls (default: 30000) */
178
178
  toolTimeout?: number;
179
+ /**
180
+ * Allow-list of tool names to expose. Names match the upstream tool name
181
+ * (NOT the namespaced `mcp_{server}_{tool}` form). Tools not in the list are
182
+ * dropped before registration — the model never sees them in its catalog and
183
+ * the wire cost of advertising them is avoided.
184
+ *
185
+ * Mutually exclusive with {@link McpServerConfig.disabledTools} — passing both
186
+ * throws at bootstrap time.
187
+ *
188
+ * Composes with {@link McpServerConfig.toolFilter}: allow-list applies first,
189
+ * then the predicate. Composes with the `mcp:tools:filter` hook: config-side
190
+ * filters apply first, then the hook can further narrow the list.
191
+ */
192
+ enabledTools?: string[];
193
+ /**
194
+ * Deny-list of tool names. Tools matching are dropped before registration.
195
+ * Same matching semantics as {@link McpServerConfig.enabledTools}.
196
+ */
197
+ disabledTools?: string[];
198
+ /**
199
+ * Custom predicate run on each upstream tool. Return `true` to keep, `false`
200
+ * to drop. Receives the raw `listTools()` payload — useful for filtering by
201
+ * description, schema shape, or other metadata that an allow/deny list can't
202
+ * express.
203
+ *
204
+ * Runs after the allow/deny filter but before the `mcp:tools:filter` hook.
205
+ */
206
+ toolFilter?: (tool: {
207
+ name: string;
208
+ description?: string | null;
209
+ inputSchema?: unknown;
210
+ }) => boolean;
179
211
  }
180
212
  type ToolExecutionMode = 'sequential' | 'parallel';
181
213
  interface AgentBehavior {
182
214
  /** Tool execution mode (default: 'sequential') */
183
215
  toolExecution?: ToolExecutionMode;
184
- /** Max agent loop iterations (default: 50) */
216
+ /**
217
+ * Max agent loop iterations.
218
+ *
219
+ * Default: unlimited (Infinity). The loop runs until the model signals
220
+ * completion (no tool calls / `end_turn`), the abort signal fires, or this
221
+ * cap is hit. Set a finite value as a safety net for runaway loops.
222
+ */
185
223
  maxTurns?: number;
186
224
  /** Max tokens per LLM response (default: 16384) */
187
225
  maxTokens?: number;
@@ -2028,6 +2066,27 @@ interface AgentHooks {
2028
2066
  ok: false;
2029
2067
  error: Error;
2030
2068
  })) => void;
2069
+ /**
2070
+ * Fires once per server after `listTools()` and after the config-side filters
2071
+ * (`enabledTools` / `disabledTools` / `toolFilter`) have applied, but BEFORE
2072
+ * tools are registered. Handlers may mutate `ctx.tools` in place — splicing,
2073
+ * reordering, or replacing entries — to further narrow what the model sees.
2074
+ *
2075
+ * Composes with config-side filters: config drops tools the host's static
2076
+ * policy excludes; this hook is the runtime escape hatch for per-user, per-
2077
+ * environment, or capability-driven decisions that the config can't express.
2078
+ *
2079
+ * Items are upstream tool descriptors (NOT yet namespaced as `mcp_<server>_<tool>`).
2080
+ */
2081
+ 'mcp:tools:filter': (ctx: {
2082
+ server: string;
2083
+ transport: 'stdio' | 'sse' | 'streamable-http';
2084
+ tools: Array<{
2085
+ name: string;
2086
+ description?: string | null;
2087
+ inputSchema?: unknown;
2088
+ }>;
2089
+ }) => void;
2031
2090
  /**
2032
2091
  * MCP-side counterpart of `tool:gate`. Same shape: set `block` to refuse,
2033
2092
  * set `result` to substitute a successful payload and skip the upstream
@@ -44,6 +44,12 @@ function normalizeOne(name, raw) {
44
44
  config.bootstrapTimeout = raw.bootstrapTimeout;
45
45
  if (typeof raw.toolTimeout === "number")
46
46
  config.toolTimeout = raw.toolTimeout;
47
+ if (Array.isArray(raw.enabledTools))
48
+ config.enabledTools = raw.enabledTools;
49
+ if (Array.isArray(raw.disabledTools))
50
+ config.disabledTools = raw.disabledTools;
51
+ if (typeof raw.toolFilter === "function")
52
+ config.toolFilter = raw.toolFilter;
47
53
  return config;
48
54
  }
49
55
  function looksLikeSingleConfig(obj) {
@@ -197,6 +203,20 @@ async function connectMcpServers(configs, _clientFactory, hooks) {
197
203
  }
198
204
  async function bootstrapServer(config, _clientFactory, hooks) {
199
205
  const start = Date.now();
206
+ if (config.enabledTools && config.disabledTools) {
207
+ const error = new Error(
208
+ `MCP server "${config.name}": enabledTools and disabledTools are mutually exclusive \u2014 set one or the other, not both.`
209
+ );
210
+ await hooks?.callHook("mcp:bootstrap:start", { name: config.name, transport: config.transport });
211
+ await hooks?.callHook("mcp:bootstrap:end", {
212
+ name: config.name,
213
+ transport: config.transport,
214
+ durationMs: 0,
215
+ ok: false,
216
+ error
217
+ });
218
+ return { ok: false, name: config.name, error };
219
+ }
200
220
  await hooks?.callHook("mcp:bootstrap:start", { name: config.name, transport: config.transport });
201
221
  let client = null;
202
222
  try {
@@ -212,15 +232,16 @@ async function bootstrapServer(config, _clientFactory, hooks) {
212
232
  bootstrapTimeout,
213
233
  `MCP server "${config.name}" bootstrap timed out after ${bootstrapTimeout}ms`
214
234
  );
235
+ const filteredTools = await applyMcpToolFilters(config, mcpTools, hooks);
215
236
  const durationMs = Date.now() - start;
216
237
  await hooks?.callHook("mcp:bootstrap:end", {
217
238
  name: config.name,
218
239
  transport: config.transport,
219
240
  durationMs,
220
241
  ok: true,
221
- toolCount: mcpTools.length
242
+ toolCount: filteredTools.length
222
243
  });
223
- return { ok: true, name: config.name, config, client: currentClient, tools: mcpTools };
244
+ return { ok: true, name: config.name, config, client: currentClient, tools: filteredTools };
224
245
  } catch (err) {
225
246
  const error = err instanceof Error ? err : new Error(String(err));
226
247
  await closeClientQuietly(client);
@@ -235,6 +256,27 @@ async function bootstrapServer(config, _clientFactory, hooks) {
235
256
  return { ok: false, name: config.name, error };
236
257
  }
237
258
  }
259
+ async function applyMcpToolFilters(config, tools, hooks) {
260
+ let filtered = tools;
261
+ if (config.enabledTools && config.enabledTools.length > 0) {
262
+ const allow = new Set(config.enabledTools);
263
+ filtered = filtered.filter((t) => allow.has(t.name));
264
+ }
265
+ if (config.disabledTools && config.disabledTools.length > 0) {
266
+ const deny = new Set(config.disabledTools);
267
+ filtered = filtered.filter((t) => !deny.has(t.name));
268
+ }
269
+ if (config.toolFilter) {
270
+ const predicate = config.toolFilter;
271
+ filtered = filtered.filter((t) => predicate(t));
272
+ }
273
+ if (hooks) {
274
+ const ctx = { server: config.name, transport: config.transport, tools: [...filtered] };
275
+ await hooks.callHook("mcp:tools:filter", ctx);
276
+ filtered = ctx.tools;
277
+ }
278
+ return filtered;
279
+ }
238
280
  function buildMcpToolDef(config, client, tool, namespacedName, hooks) {
239
281
  return {
240
282
  spec: {
@@ -11,7 +11,7 @@ import {
11
11
  } from "./chunk-UD25QF3H.js";
12
12
  import {
13
13
  connectMcpServers
14
- } from "./chunk-7H34OFDA.js";
14
+ } from "./chunk-6Z4UMOV4.js";
15
15
  import {
16
16
  toolOutputByteLength
17
17
  } from "./chunk-JH6IAAFA.js";
@@ -1712,7 +1712,8 @@ async function runLoop(ctx) {
1712
1712
  let totalOut = 0;
1713
1713
  const turnUsages = [];
1714
1714
  const startTime = Date.now();
1715
- const maxTurns = ctx.maxTurns ?? 50;
1715
+ const maxTurns = ctx.maxTurns ?? Number.POSITIVE_INFINITY;
1716
+ let turnsCompleted = 0;
1716
1717
  const ttft = { mark: void 0 };
1717
1718
  const markTtft = () => {
1718
1719
  if (ttft.mark === void 0)
@@ -1728,6 +1729,7 @@ async function runLoop(ctx) {
1728
1729
  break;
1729
1730
  }
1730
1731
  const result = await executeTurn(ctx, turn);
1732
+ turnsCompleted = turn + 1;
1731
1733
  totalIn += result.usage.input;
1732
1734
  totalOut += result.usage.output;
1733
1735
  turnUsages.push(result.usage);
@@ -1777,7 +1779,7 @@ async function runLoop(ctx) {
1777
1779
  return {
1778
1780
  totalIn,
1779
1781
  totalOut,
1780
- turns: maxTurns,
1782
+ turns: turnsCompleted,
1781
1783
  elapsed: Date.now() - startTime,
1782
1784
  turnUsage: turnUsages,
1783
1785
  ...ttft.mark !== void 0 ? { timeTillFirstTokenMs: ttft.mark } : {}
@@ -2383,6 +2385,7 @@ var HOOK_EVENT_NAMES = [
2383
2385
  "mcp:close",
2384
2386
  "mcp:bootstrap:start",
2385
2387
  "mcp:bootstrap:end",
2388
+ "mcp:tools:filter",
2386
2389
  "mcp:tool:gate",
2387
2390
  "mcp:tool:before",
2388
2391
  "mcp:tool:after",
@@ -6,7 +6,7 @@ import {
6
6
  readFile,
7
7
  shell,
8
8
  writeFile
9
- } from "./chunk-5GRZ5XVU.js";
9
+ } from "./chunk-LHCIHOCE.js";
10
10
 
11
11
  // src/presets/basic.ts
12
12
  var basicTools = { shell, readFile, writeFile, listFiles, edit, multiEdit };
package/dist/index.d.ts CHANGED
@@ -1,12 +1,12 @@
1
- import { d as AgentHooks } from './agent-DqEkutk4.js';
2
- export { ab as ActivationVia, ac as ActiveSkill, A as Agent, a as AgentAbortedError, b as AgentBehavior, c as AgentContextExceededError, e as AgentOptions, f as AgentProviderError, g as AgentRunOptions, h as AgentStats, i as AgentToolNotAllowedError, j as AnthropicParams, C as CONTEXT_EXCEEDED_MESSAGE_PATTERNS, k as CerebrasParams, m as ClassifiedError, n as ClassifiedErrorKind, o as CreateSessionOptions, ad as DeactivationReason, ae as FileMapAdapter, af as FileMapStoreOptions, M as McpConnection, p as McpServerConfig, q as McpToolHookContext, O as OAuthRefreshHookContext, ag as OpenAICompatAuthHeader, ah as OpenAICompatHttpError, ai as OpenAICompatParams, r as OpenAIParams, s as OpenRouterParams, P as PromptDocumentPart, t as PromptImagePart, u as PromptPart, v as PromptTextPart, w as Provider, x as ProviderCapabilities, R as RemoteStoreOptions, y as RunHookMap, S as Session, z as SessionContentBlock, B as SessionData, D as SessionEndStatus, E as SessionHookContext, F as SessionMessage, G as SessionRun, H as SessionStore, I as SessionTurn, aj as SkillActivationState, ak as SkillActivationStateOptions, J as SkillConfig, al as SkillDiagnostic, K as SkillResource, am as SkillSource, L as SkillsConfig, N as SpawnHookContext, Q as StreamCallbacks, T as StreamHookContext, U as StreamOptions, V as ThinkingLevel, W as ToolCall, X as ToolContext, Y as ToolDef, Z as ToolExecutionMode, _ as ToolHookContext, $ as ToolMap, a0 as ToolResult, a1 as ToolResultContent, a2 as ToolResultImageContent, a3 as ToolResultTextContent, a4 as ToolSpec, a5 as TurnFinishReason, a6 as TurnResult, a7 as TurnUsage, an as anthropic, ao as autoDetectAndConvert, ap as cerebras, aq as classifyOpenAICompatError, ar as connectMcpServers, as as createAgent, at as createFileMapStore, au as createMemoryStore, av as createRemoteStore, aw as createSession, ax as createSkillActivationState, ay as fromAnthropic, az as fromOpenAI, aA as loadSession, aB as mapOAIFinishReason, a8 as matchesContextExceeded, aC as normalizeMcpBlocks, aD as normalizeMcpServers, aE as openai, aF as openaiCompat, aG as openrouter, aH as resultToString, aI as toAnthropic, aJ as toOpenAI, aK as toTypedError, a9 as toolOutputByteLength, aa as toolResultToText } from './agent-DqEkutk4.js';
1
+ import { d as AgentHooks } from './agent-LEf7zjw6.js';
2
+ export { ab as ActivationVia, ac as ActiveSkill, A as Agent, a as AgentAbortedError, b as AgentBehavior, c as AgentContextExceededError, e as AgentOptions, f as AgentProviderError, g as AgentRunOptions, h as AgentStats, i as AgentToolNotAllowedError, j as AnthropicParams, C as CONTEXT_EXCEEDED_MESSAGE_PATTERNS, k as CerebrasParams, m as ClassifiedError, n as ClassifiedErrorKind, o as CreateSessionOptions, ad as DeactivationReason, ae as FileMapAdapter, af as FileMapStoreOptions, M as McpConnection, p as McpServerConfig, q as McpToolHookContext, O as OAuthRefreshHookContext, ag as OpenAICompatAuthHeader, ah as OpenAICompatHttpError, ai as OpenAICompatParams, r as OpenAIParams, s as OpenRouterParams, P as PromptDocumentPart, t as PromptImagePart, u as PromptPart, v as PromptTextPart, w as Provider, x as ProviderCapabilities, R as RemoteStoreOptions, y as RunHookMap, S as Session, z as SessionContentBlock, B as SessionData, D as SessionEndStatus, E as SessionHookContext, F as SessionMessage, G as SessionRun, H as SessionStore, I as SessionTurn, aj as SkillActivationState, ak as SkillActivationStateOptions, J as SkillConfig, al as SkillDiagnostic, K as SkillResource, am as SkillSource, L as SkillsConfig, N as SpawnHookContext, Q as StreamCallbacks, T as StreamHookContext, U as StreamOptions, V as ThinkingLevel, W as ToolCall, X as ToolContext, Y as ToolDef, Z as ToolExecutionMode, _ as ToolHookContext, $ as ToolMap, a0 as ToolResult, a1 as ToolResultContent, a2 as ToolResultImageContent, a3 as ToolResultTextContent, a4 as ToolSpec, a5 as TurnFinishReason, a6 as TurnResult, a7 as TurnUsage, an as anthropic, ao as autoDetectAndConvert, ap as cerebras, aq as classifyOpenAICompatError, ar as connectMcpServers, as as createAgent, at as createFileMapStore, au as createMemoryStore, av as createRemoteStore, aw as createSession, ax as createSkillActivationState, ay as fromAnthropic, az as fromOpenAI, aA as loadSession, aB as mapOAIFinishReason, a8 as matchesContextExceeded, aC as normalizeMcpBlocks, aD as normalizeMcpServers, aE as openai, aF as openaiCompat, aG as openrouter, aH as resultToString, aI as toAnthropic, aJ as toOpenAI, aK as toTypedError, a9 as toolOutputByteLength, aa as toolResultToText } from './agent-LEf7zjw6.js';
3
3
  export { createDockerContext, createProcessContext } from './contexts.js';
4
4
  export { S as SandboxProvider, c as createSandboxContext } from './sandbox-CLghrTLi.js';
5
5
  export { C as ContextCapabilities, a as ContextType, E as ExecResult, b as ExecutionContext, c as ExecutionHandle, S as SpawnConfig } from './types-vA1a_ZX7.js';
6
6
  export { Preset, basic, basicTools, definePreset } from './presets.js';
7
7
  export { IMPLICITLY_ALLOWED_SKILL_TOOLS, SkillValidationIssue, SkillValidationResult, SourcedScanPath, buildCatalog, defineSkill, discoverSkills, installAllowedToolsGate, interpolateShellCommands, isToolAllowedByUnion, matchesAllowedTool, parseAllowedToolPattern, parseSkillFile, resolveSkills, validateResourcePath, validateSkillForWrite, validateSkillName, writeSkillToDisk, writeSkillsToDisk } from './skills.js';
8
- export { S as SkillsReadToolOptions, a as SkillsRunScriptToolOptions, b as SkillsUseToolOptions, c as createSkillsReadTool, d as createSkillsRunScriptTool, e as createSkillsUseTool, f as edit, g as glob, h as grep, m as multiEdit } from './skills-use-WbOh6TuS.js';
9
- export { C as ChildAgent, I as InteractionToolOptions, S as SpawnToolOptions, a as SpawnToolState, V as ValidationResult, c as createInteractionTool, b as createSpawnTool, v as validateToolArgs } from './validation-DTbkLXbd.js';
8
+ export { S as SkillsReadToolOptions, a as SkillsRunScriptToolOptions, b as SkillsUseToolOptions, c as createSkillsReadTool, d as createSkillsRunScriptTool, e as createSkillsUseTool, f as edit, g as glob, h as grep, m as multiEdit } from './skills-use-CVxdV6Tq.js';
9
+ export { C as ChildAgent, I as InteractionToolOptions, S as SpawnToolOptions, a as SpawnToolState, V as ValidationResult, c as createInteractionTool, b as createSpawnTool, v as validateToolArgs } from './validation-C4Ucr2wT.js';
10
10
  import { Hookable } from 'hookable';
11
11
  import '@modelcontextprotocol/sdk/client/index.js';
12
12
 
package/dist/index.js CHANGED
@@ -11,7 +11,7 @@ import {
11
11
  basicTools,
12
12
  basic_default,
13
13
  definePreset
14
- } from "./chunk-KITHPMLV.js";
14
+ } from "./chunk-NYGFP4AV.js";
15
15
  import {
16
16
  createAgent,
17
17
  createInteractionTool,
@@ -24,7 +24,7 @@ import {
24
24
  grep,
25
25
  multiEdit,
26
26
  validateToolArgs
27
- } from "./chunk-5GRZ5XVU.js";
27
+ } from "./chunk-LHCIHOCE.js";
28
28
  import {
29
29
  IMPLICITLY_ALLOWED_SKILL_TOOLS,
30
30
  buildCatalog,
@@ -53,7 +53,7 @@ import {
53
53
  normalizeMcpBlocks,
54
54
  normalizeMcpServers,
55
55
  resultToString
56
- } from "./chunk-7H34OFDA.js";
56
+ } from "./chunk-6Z4UMOV4.js";
57
57
  import {
58
58
  toolOutputByteLength,
59
59
  toolResultToText
package/dist/mcp.d.ts CHANGED
@@ -1,4 +1,4 @@
1
1
  import 'hookable';
2
- export { M as McpConnection, p as McpServerConfig, ar as connectMcpServers, aC as normalizeMcpBlocks, aD as normalizeMcpServers, aH as resultToString } from './agent-DqEkutk4.js';
2
+ export { M as McpConnection, p as McpServerConfig, ar as connectMcpServers, aC as normalizeMcpBlocks, aD as normalizeMcpServers, aH as resultToString } from './agent-LEf7zjw6.js';
3
3
  import '@modelcontextprotocol/sdk/client/index.js';
4
4
  import './types-vA1a_ZX7.js';
package/dist/mcp.js CHANGED
@@ -3,7 +3,7 @@ import {
3
3
  normalizeMcpBlocks,
4
4
  normalizeMcpServers,
5
5
  resultToString
6
- } from "./chunk-7H34OFDA.js";
6
+ } from "./chunk-6Z4UMOV4.js";
7
7
  import "./chunk-JH6IAAFA.js";
8
8
  export {
9
9
  connectMcpServers,
package/dist/presets.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { Y as ToolDef, e as AgentOptions } from './agent-DqEkutk4.js';
1
+ import { Y as ToolDef, e as AgentOptions } from './agent-LEf7zjw6.js';
2
2
  import 'hookable';
3
3
  import './types-vA1a_ZX7.js';
4
4
  import '@modelcontextprotocol/sdk/client/index.js';
package/dist/presets.js CHANGED
@@ -2,11 +2,11 @@ import {
2
2
  basicTools,
3
3
  basic_default,
4
4
  definePreset
5
- } from "./chunk-KITHPMLV.js";
6
- import "./chunk-5GRZ5XVU.js";
5
+ } from "./chunk-NYGFP4AV.js";
6
+ import "./chunk-LHCIHOCE.js";
7
7
  import "./chunk-X3VOTPVM.js";
8
8
  import "./chunk-UD25QF3H.js";
9
- import "./chunk-7H34OFDA.js";
9
+ import "./chunk-6Z4UMOV4.js";
10
10
  import "./chunk-JH6IAAFA.js";
11
11
  import "./chunk-LNN5UTS2.js";
12
12
  export {
@@ -1,4 +1,4 @@
1
- export { j as AnthropicParams, k as CerebrasParams, ag as OpenAICompatAuthHeader, ah as OpenAICompatHttpError, ai as OpenAICompatParams, r as OpenAIParams, s as OpenRouterParams, w as Provider, x as ProviderCapabilities, Q as StreamCallbacks, U as StreamOptions, W as ToolCall, a0 as ToolResult, a4 as ToolSpec, a6 as TurnResult, an as anthropic, ap as cerebras, aq as classifyOpenAICompatError, aB as mapOAIFinishReason, aE as openai, aF as openaiCompat, aG as openrouter } from './agent-DqEkutk4.js';
1
+ export { j as AnthropicParams, k as CerebrasParams, ag as OpenAICompatAuthHeader, ah as OpenAICompatHttpError, ai as OpenAICompatParams, r as OpenAIParams, s as OpenRouterParams, w as Provider, x as ProviderCapabilities, Q as StreamCallbacks, U as StreamOptions, W as ToolCall, a0 as ToolResult, a4 as ToolSpec, a6 as TurnResult, an as anthropic, ap as cerebras, aq as classifyOpenAICompatError, aB as mapOAIFinishReason, aE as openai, aF as openaiCompat, aG as openrouter } from './agent-LEf7zjw6.js';
2
2
  import 'hookable';
3
3
  import './types-vA1a_ZX7.js';
4
4
  import '@modelcontextprotocol/sdk/client/index.js';
@@ -1,4 +1,4 @@
1
- import { H as SessionStore } from '../agent-DqEkutk4.js';
1
+ import { H as SessionStore } from '../agent-LEf7zjw6.js';
2
2
  import 'hookable';
3
3
  import '../types-vA1a_ZX7.js';
4
4
  import '@modelcontextprotocol/sdk/client/index.js';
package/dist/session.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- export { o as CreateSessionOptions, ae as FileMapAdapter, af as FileMapStoreOptions, R as RemoteStoreOptions, S as Session, z as SessionContentBlock, B as SessionData, F as SessionMessage, G as SessionRun, H as SessionStore, I as SessionTurn, ao as autoDetectAndConvert, at as createFileMapStore, au as createMemoryStore, av as createRemoteStore, aw as createSession, ay as fromAnthropic, az as fromOpenAI, aA as loadSession, aI as toAnthropic, aJ as toOpenAI } from './agent-DqEkutk4.js';
1
+ export { o as CreateSessionOptions, ae as FileMapAdapter, af as FileMapStoreOptions, R as RemoteStoreOptions, S as Session, z as SessionContentBlock, B as SessionData, F as SessionMessage, G as SessionRun, H as SessionStore, I as SessionTurn, ao as autoDetectAndConvert, at as createFileMapStore, au as createMemoryStore, av as createRemoteStore, aw as createSession, ay as fromAnthropic, az as fromOpenAI, aA as loadSession, aI as toAnthropic, aJ as toOpenAI } from './agent-LEf7zjw6.js';
2
2
  import 'hookable';
3
3
  import './types-vA1a_ZX7.js';
4
4
  import '@modelcontextprotocol/sdk/client/index.js';
@@ -1,4 +1,4 @@
1
- import { Y as ToolDef, J as SkillConfig, aj as SkillActivationState, d as AgentHooks } from './agent-DqEkutk4.js';
1
+ import { Y as ToolDef, J as SkillConfig, aj as SkillActivationState, d as AgentHooks } from './agent-LEf7zjw6.js';
2
2
  import { Hookable } from 'hookable';
3
3
 
4
4
  /**
package/dist/skills.d.ts CHANGED
@@ -1,5 +1,5 @@
1
- import { d as AgentHooks, aj as SkillActivationState, J as SkillConfig, am as SkillSource, al as SkillDiagnostic, L as SkillsConfig } from './agent-DqEkutk4.js';
2
- export { ab as ActivationVia, ac as ActiveSkill, ad as DeactivationReason, ak as SkillActivationStateOptions, K as SkillResource, ax as createSkillActivationState } from './agent-DqEkutk4.js';
1
+ import { d as AgentHooks, aj as SkillActivationState, J as SkillConfig, am as SkillSource, al as SkillDiagnostic, L as SkillsConfig } from './agent-LEf7zjw6.js';
2
+ export { ab as ActivationVia, ac as ActiveSkill, ad as DeactivationReason, ak as SkillActivationStateOptions, K as SkillResource, ax as createSkillActivationState } from './agent-LEf7zjw6.js';
3
3
  import { Hookable } from 'hookable';
4
4
  import { b as ExecutionContext, c as ExecutionHandle } from './types-vA1a_ZX7.js';
5
5
  import '@modelcontextprotocol/sdk/client/index.js';
package/dist/tools.d.ts CHANGED
@@ -1,7 +1,7 @@
1
- export { S as SkillsReadToolOptions, a as SkillsRunScriptToolOptions, b as SkillsUseToolOptions, c as createSkillsReadTool, d as createSkillsRunScriptTool, e as createSkillsUseTool, f as edit, g as glob, h as grep, m as multiEdit } from './skills-use-WbOh6TuS.js';
2
- export { C as ChildAgent, I as InteractionToolOptions, S as SpawnToolOptions, a as SpawnToolState, V as ValidationResult, c as createInteractionTool, b as createSpawnTool, v as validateToolArgs } from './validation-DTbkLXbd.js';
3
- import { Y as ToolDef } from './agent-DqEkutk4.js';
4
- export { X as ToolContext, $ as ToolMap } from './agent-DqEkutk4.js';
1
+ export { S as SkillsReadToolOptions, a as SkillsRunScriptToolOptions, b as SkillsUseToolOptions, c as createSkillsReadTool, d as createSkillsRunScriptTool, e as createSkillsUseTool, f as edit, g as glob, h as grep, m as multiEdit } from './skills-use-CVxdV6Tq.js';
2
+ export { C as ChildAgent, I as InteractionToolOptions, S as SpawnToolOptions, a as SpawnToolState, V as ValidationResult, c as createInteractionTool, b as createSpawnTool, v as validateToolArgs } from './validation-C4Ucr2wT.js';
3
+ import { Y as ToolDef } from './agent-LEf7zjw6.js';
4
+ export { X as ToolContext, $ as ToolMap } from './agent-LEf7zjw6.js';
5
5
  import 'hookable';
6
6
  import './presets.js';
7
7
  import './types-vA1a_ZX7.js';
package/dist/tools.js CHANGED
@@ -13,10 +13,10 @@ import {
13
13
  shell,
14
14
  validateToolArgs,
15
15
  writeFile
16
- } from "./chunk-5GRZ5XVU.js";
16
+ } from "./chunk-LHCIHOCE.js";
17
17
  import "./chunk-X3VOTPVM.js";
18
18
  import "./chunk-UD25QF3H.js";
19
- import "./chunk-7H34OFDA.js";
19
+ import "./chunk-6Z4UMOV4.js";
20
20
  import "./chunk-JH6IAAFA.js";
21
21
  import "./chunk-LNN5UTS2.js";
22
22
  export {
package/dist/types.d.ts CHANGED
@@ -1,7 +1,7 @@
1
- export { A as Agent, a as AgentAbortedError, b as AgentBehavior, c as AgentContextExceededError, d as AgentHooks, e as AgentOptions, f as AgentProviderError, g as AgentRunOptions, h as AgentStats, i as AgentToolNotAllowedError, j as AnthropicParams, C as CONTEXT_EXCEEDED_MESSAGE_PATTERNS, k as CerebrasParams, l as ChildRunStats, m as ClassifiedError, n as ClassifiedErrorKind, o as CreateSessionOptions, M as McpConnection, p as McpServerConfig, q as McpToolHookContext, O as OAuthRefreshHookContext, r as OpenAIParams, s as OpenRouterParams, P as PromptDocumentPart, t as PromptImagePart, u as PromptPart, v as PromptTextPart, w as Provider, x as ProviderCapabilities, R as RemoteStoreOptions, y as RunHookMap, S as Session, z as SessionContentBlock, B as SessionData, D as SessionEndStatus, E as SessionHookContext, F as SessionMessage, G as SessionRun, H as SessionStore, I as SessionTurn, J as SkillConfig, K as SkillResource, L as SkillsConfig, N as SpawnHookContext, Q as StreamCallbacks, T as StreamHookContext, U as StreamOptions, V as ThinkingLevel, W as ToolCall, X as ToolContext, Y as ToolDef, Z as ToolExecutionMode, _ as ToolHookContext, $ as ToolMap, a0 as ToolResult, a1 as ToolResultContent, a2 as ToolResultImageContent, a3 as ToolResultTextContent, a4 as ToolSpec, a5 as TurnFinishReason, a6 as TurnResult, a7 as TurnUsage, a8 as matchesContextExceeded, a9 as toolOutputByteLength, aa as toolResultToText } from './agent-DqEkutk4.js';
1
+ export { A as Agent, a as AgentAbortedError, b as AgentBehavior, c as AgentContextExceededError, d as AgentHooks, e as AgentOptions, f as AgentProviderError, g as AgentRunOptions, h as AgentStats, i as AgentToolNotAllowedError, j as AnthropicParams, C as CONTEXT_EXCEEDED_MESSAGE_PATTERNS, k as CerebrasParams, l as ChildRunStats, m as ClassifiedError, n as ClassifiedErrorKind, o as CreateSessionOptions, M as McpConnection, p as McpServerConfig, q as McpToolHookContext, O as OAuthRefreshHookContext, r as OpenAIParams, s as OpenRouterParams, P as PromptDocumentPart, t as PromptImagePart, u as PromptPart, v as PromptTextPart, w as Provider, x as ProviderCapabilities, R as RemoteStoreOptions, y as RunHookMap, S as Session, z as SessionContentBlock, B as SessionData, D as SessionEndStatus, E as SessionHookContext, F as SessionMessage, G as SessionRun, H as SessionStore, I as SessionTurn, J as SkillConfig, K as SkillResource, L as SkillsConfig, N as SpawnHookContext, Q as StreamCallbacks, T as StreamHookContext, U as StreamOptions, V as ThinkingLevel, W as ToolCall, X as ToolContext, Y as ToolDef, Z as ToolExecutionMode, _ as ToolHookContext, $ as ToolMap, a0 as ToolResult, a1 as ToolResultContent, a2 as ToolResultImageContent, a3 as ToolResultTextContent, a4 as ToolSpec, a5 as TurnFinishReason, a6 as TurnResult, a7 as TurnUsage, a8 as matchesContextExceeded, a9 as toolOutputByteLength, aa as toolResultToText } from './agent-LEf7zjw6.js';
2
2
  export { C as ContextCapabilities, a as ContextType, E as ExecResult, b as ExecutionContext, c as ExecutionHandle, S as SpawnConfig } from './types-vA1a_ZX7.js';
3
3
  export { S as SandboxProvider } from './sandbox-CLghrTLi.js';
4
4
  export { Preset } from './presets.js';
5
- export { C as ChildAgent, I as InteractionToolOptions, S as SpawnToolOptions, a as SpawnToolState, V as ValidationResult } from './validation-DTbkLXbd.js';
5
+ export { C as ChildAgent, I as InteractionToolOptions, S as SpawnToolOptions, a as SpawnToolState, V as ValidationResult } from './validation-C4Ucr2wT.js';
6
6
  import 'hookable';
7
7
  import '@modelcontextprotocol/sdk/client/index.js';
@@ -1,4 +1,4 @@
1
- import { X as ToolContext, Y as ToolDef, h as AgentStats, l as ChildRunStats } from './agent-DqEkutk4.js';
1
+ import { X as ToolContext, Y as ToolDef, h as AgentStats, l as ChildRunStats } from './agent-LEf7zjw6.js';
2
2
  import { Preset } from './presets.js';
3
3
 
4
4
  /**
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "zidane",
3
- "version": "3.3.3",
3
+ "version": "3.3.4",
4
4
  "description": "an agent that goes straight to the goal",
5
5
  "type": "module",
6
6
  "private": false,