zidane 1.6.15 → 1.6.17

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.
@@ -23,6 +23,8 @@ interface McpServerConfig {
23
23
  url?: string;
24
24
  /** Optional headers for HTTP transports */
25
25
  headers?: Record<string, string>;
26
+ /** Timeout in milliseconds for MCP tool calls (default: 30000) */
27
+ toolTimeout?: number;
26
28
  }
27
29
  type ToolExecutionMode = 'sequential' | 'parallel';
28
30
  interface AgentBehavior {
@@ -4,7 +4,7 @@ import {
4
4
  shell,
5
5
  spawn,
6
6
  writeFile
7
- } from "./chunk-4GCOSJ7J.js";
7
+ } from "./chunk-OJATGJ5F.js";
8
8
 
9
9
  // src/harnesses/basic.ts
10
10
  var basicTools = { shell, readFile, writeFile, listFiles };
@@ -9,7 +9,7 @@ import {
9
9
  } from "./chunk-SZA4FKW5.js";
10
10
  import {
11
11
  connectMcpServers
12
- } from "./chunk-5LOHDFK3.js";
12
+ } from "./chunk-WDBO3JCO.js";
13
13
 
14
14
  // src/tools/interaction.ts
15
15
  function createInteractionTool(options) {
@@ -21,8 +21,8 @@ function createInteractionTool(options) {
21
21
  description,
22
22
  inputSchema: options.schema
23
23
  },
24
- async execute(input) {
25
- const result = await options.onRequest(input);
24
+ async execute(input, ctx) {
25
+ const result = await options.onRequest(input, ctx);
26
26
  return typeof result === "string" ? result : JSON.stringify(result);
27
27
  }
28
28
  };
@@ -362,8 +362,15 @@ async function executeToolsSequential(ctx, toolCalls, turnId) {
362
362
  }
363
363
  async function executeToolsParallel(ctx, toolCalls, turnId) {
364
364
  const executions = toolCalls.map((call) => executeSingleTool(ctx, call, turnId));
365
- const settled = await Promise.all(executions);
366
- return settled.map((s) => s.result);
365
+ const settled = await Promise.allSettled(executions);
366
+ return settled.map((s, i) => {
367
+ if (s.status === "fulfilled")
368
+ return s.value.result;
369
+ return {
370
+ id: toolCalls[i].id,
371
+ content: `Error: ${s.reason instanceof Error ? s.reason.message : String(s.reason)}`
372
+ };
373
+ });
367
374
  }
368
375
 
369
376
  // src/agent.ts
@@ -60,8 +60,15 @@ async function connectMcpServers(configs, _clientFactory, hooks) {
60
60
  if (gateCtx.block)
61
61
  return `Blocked: ${gateCtx.reason}`;
62
62
  await hooks?.callHook("mcp:tool:before", { turnId, callId, server: config.name, tool: tool.name, input });
63
+ const timeout = config.toolTimeout ?? 3e4;
63
64
  try {
64
- const result = await client.callTool({ name: tool.name, arguments: input });
65
+ let timer;
66
+ const result = await Promise.race([
67
+ client.callTool({ name: tool.name, arguments: input }),
68
+ new Promise((_, reject) => {
69
+ timer = setTimeout(() => reject(new Error(`MCP tool "${tool.name}" on server "${config.name}" timed out after ${timeout}ms`)), timeout);
70
+ })
71
+ ]).finally(() => clearTimeout(timer));
65
72
  let output = resultToString(result.content);
66
73
  const transformCtx = { turnId, callId, server: config.name, tool: tool.name, input, result: output };
67
74
  await hooks?.callHook("mcp:tool:transform", transformCtx);
@@ -70,6 +77,7 @@ async function connectMcpServers(configs, _clientFactory, hooks) {
70
77
  return output;
71
78
  } catch (err) {
72
79
  await hooks?.callHook("mcp:tool:error", { turnId, callId, server: config.name, tool: tool.name, input, error: err });
80
+ await hooks?.callHook("mcp:tool:after", { turnId, callId, server: config.name, tool: tool.name, input, result: err.message ?? String(err) });
73
81
  throw err;
74
82
  }
75
83
  }
@@ -1,5 +1,5 @@
1
1
  import 'hookable';
2
- export { H as Harness, i as HarnessConfig, z as ToolContext, B as ToolDef, F as ToolMap, a7 as basic, a8 as basicTools, Z as defineHarness, a1 as noTools } from './agent-CUKZMA-_.js';
2
+ export { H as Harness, i as HarnessConfig, z as ToolContext, B as ToolDef, F as ToolMap, a7 as basic, a8 as basicTools, Z as defineHarness, a1 as noTools } from './agent-CtGvwTdo.js';
3
3
  import './types-BpvTmawk.js';
4
4
  import './types-CDI8Kmve.js';
5
5
  import '@modelcontextprotocol/sdk/client/index.js';
package/dist/harnesses.js CHANGED
@@ -3,11 +3,11 @@ import {
3
3
  basic_default,
4
4
  defineHarness,
5
5
  noTools
6
- } from "./chunk-33HRG7NC.js";
7
- import "./chunk-4GCOSJ7J.js";
6
+ } from "./chunk-KLFSGJE4.js";
7
+ import "./chunk-OJATGJ5F.js";
8
8
  import "./chunk-4C6Y56CC.js";
9
9
  import "./chunk-SZA4FKW5.js";
10
- import "./chunk-5LOHDFK3.js";
10
+ import "./chunk-WDBO3JCO.js";
11
11
  export {
12
12
  basic_default as basic,
13
13
  basicTools,
package/dist/index.d.ts CHANGED
@@ -1,10 +1,10 @@
1
- export { A as Agent, a as AgentBehavior, b as AgentHooks, c as AgentOptions, d as AgentRunOptions, e as AgentStats, h as CreateSessionOptions, H as Harness, i as HarnessConfig, I as ImageContent, M as McpConnection, j as McpServerConfig, k as McpToolHookContext, R as RemoteStoreOptions, S as Session, l as SessionContentBlock, m as SessionData, n as SessionEndStatus, o as SessionHookContext, p as SessionMessage, q as SessionRun, r as SessionStore, s as SessionTurn, t as SpawnHookContext, u as SqliteStoreOptions, w as StreamHookContext, T as ThinkingLevel, z as ToolContext, B as ToolDef, D as ToolExecutionMode, E as ToolHookContext, F as ToolMap, L as TurnUsage, N as autoDetectAndConvert, Q as connectMcpServers, U as createAgent, V as createMemoryStore, W as createRemoteStore, X as createSession, Y as createSqliteStore, Z as defineHarness, _ as fromAnthropic, $ as fromOpenAI, a0 as loadSession, a1 as noTools, a2 as toAnthropic, a3 as toOpenAI } from './agent-CUKZMA-_.js';
1
+ export { A as Agent, a as AgentBehavior, b as AgentHooks, c as AgentOptions, d as AgentRunOptions, e as AgentStats, h as CreateSessionOptions, H as Harness, i as HarnessConfig, I as ImageContent, M as McpConnection, j as McpServerConfig, k as McpToolHookContext, R as RemoteStoreOptions, S as Session, l as SessionContentBlock, m as SessionData, n as SessionEndStatus, o as SessionHookContext, p as SessionMessage, q as SessionRun, r as SessionStore, s as SessionTurn, t as SpawnHookContext, u as SqliteStoreOptions, w as StreamHookContext, T as ThinkingLevel, z as ToolContext, B as ToolDef, D as ToolExecutionMode, E as ToolHookContext, F as ToolMap, L as TurnUsage, N as autoDetectAndConvert, Q as connectMcpServers, U as createAgent, V as createMemoryStore, W as createRemoteStore, X as createSession, Y as createSqliteStore, Z as defineHarness, _ as fromAnthropic, $ as fromOpenAI, a0 as loadSession, a1 as noTools, a2 as toAnthropic, a3 as toOpenAI } from './agent-CtGvwTdo.js';
2
2
  export { createDockerContext, createProcessContext } from './contexts.js';
3
3
  export { S as SandboxProvider, c as createSandboxContext } from './sandbox-CW72eLDP.js';
4
4
  export { C as ContextCapabilities, a as ContextType, E as ExecResult, b as ExecutionContext, c as ExecutionHandle, S as SpawnConfig } from './types-BpvTmawk.js';
5
5
  export { buildCatalog, defineSkill, discoverSkills, interpolateShellCommands, mergeSkillsConfig, parseSkillFile, resolveSkills, validateSkillName, writeSkillToDisk, writeSkillsToDisk } from './skills.js';
6
6
  export { S as SkillConfig, a as SkillResource, b as SkillsConfig } from './types-CDI8Kmve.js';
7
- export { C as ChildAgent, I as InteractionToolOptions, S as SpawnToolOptions, a as SpawnToolState, c as createInteractionTool, b as createSpawnTool, s as spawn } from './spawn-B7AtyfuG.js';
7
+ export { C as ChildAgent, I as InteractionToolOptions, S as SpawnToolOptions, a as SpawnToolState, c as createInteractionTool, b as createSpawnTool, s as spawn } from './spawn-hNTJA3Iw.js';
8
8
  import 'hookable';
9
9
  import '@modelcontextprotocol/sdk/client/index.js';
10
10
 
package/dist/index.js CHANGED
@@ -4,13 +4,13 @@ import {
4
4
  import {
5
5
  defineHarness,
6
6
  noTools
7
- } from "./chunk-33HRG7NC.js";
7
+ } from "./chunk-KLFSGJE4.js";
8
8
  import {
9
9
  createAgent,
10
10
  createInteractionTool,
11
11
  createSpawnTool,
12
12
  spawn
13
- } from "./chunk-4GCOSJ7J.js";
13
+ } from "./chunk-OJATGJ5F.js";
14
14
  import {
15
15
  buildCatalog,
16
16
  discoverSkills,
@@ -29,7 +29,7 @@ import {
29
29
  } from "./chunk-SZA4FKW5.js";
30
30
  import {
31
31
  connectMcpServers
32
- } from "./chunk-5LOHDFK3.js";
32
+ } from "./chunk-WDBO3JCO.js";
33
33
  import {
34
34
  createMemoryStore,
35
35
  createRemoteStore,
package/dist/mcp.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import 'hookable';
2
- export { M as McpConnection, j as McpServerConfig, Q as connectMcpServers, a9 as resultToString } from './agent-CUKZMA-_.js';
2
+ export { M as McpConnection, j as McpServerConfig, Q as connectMcpServers, a9 as resultToString } from './agent-CtGvwTdo.js';
3
3
  import '@modelcontextprotocol/sdk/client/index.js';
4
4
  import './types-BpvTmawk.js';
5
5
  import './types-CDI8Kmve.js';
package/dist/mcp.js CHANGED
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  connectMcpServers,
3
3
  resultToString
4
- } from "./chunk-5LOHDFK3.js";
4
+ } from "./chunk-WDBO3JCO.js";
5
5
  export {
6
6
  connectMcpServers,
7
7
  resultToString
@@ -1,4 +1,4 @@
1
- export { f as AnthropicParams, C as CerebrasParams, O as OpenRouterParams, P as Provider, v as StreamCallbacks, x as StreamOptions, y as ToolCall, G as ToolResult, J as ToolSpec, K as TurnResult, a4 as anthropic, a5 as cerebras, a6 as openrouter } from './agent-CUKZMA-_.js';
1
+ export { f as AnthropicParams, C as CerebrasParams, O as OpenRouterParams, P as Provider, v as StreamCallbacks, x as StreamOptions, y as ToolCall, G as ToolResult, J as ToolSpec, K as TurnResult, a4 as anthropic, a5 as cerebras, a6 as openrouter } from './agent-CtGvwTdo.js';
2
2
  import 'hookable';
3
3
  import './types-BpvTmawk.js';
4
4
  import '@modelcontextprotocol/sdk/client/index.js';
package/dist/session.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- export { h as CreateSessionOptions, R as RemoteStoreOptions, S as Session, l as SessionContentBlock, m as SessionData, p as SessionMessage, q as SessionRun, r as SessionStore, s as SessionTurn, u as SqliteStoreOptions, N as autoDetectAndConvert, V as createMemoryStore, W as createRemoteStore, X as createSession, Y as createSqliteStore, _ as fromAnthropic, $ as fromOpenAI, a0 as loadSession, a2 as toAnthropic, a3 as toOpenAI } from './agent-CUKZMA-_.js';
1
+ export { h as CreateSessionOptions, R as RemoteStoreOptions, S as Session, l as SessionContentBlock, m as SessionData, p as SessionMessage, q as SessionRun, r as SessionStore, s as SessionTurn, u as SqliteStoreOptions, N as autoDetectAndConvert, V as createMemoryStore, W as createRemoteStore, X as createSession, Y as createSqliteStore, _ as fromAnthropic, $ as fromOpenAI, a0 as loadSession, a2 as toAnthropic, a3 as toOpenAI } from './agent-CtGvwTdo.js';
2
2
  import 'hookable';
3
3
  import './types-BpvTmawk.js';
4
4
  import '@modelcontextprotocol/sdk/client/index.js';
@@ -1,4 +1,4 @@
1
- import { B as ToolDef, i as HarnessConfig, e as AgentStats } from './agent-CUKZMA-_.js';
1
+ import { z as ToolContext, B as ToolDef, i as HarnessConfig, e as AgentStats } from './agent-CtGvwTdo.js';
2
2
 
3
3
  /**
4
4
  * Interaction tool — lets the agent request structured input from the outside world.
@@ -25,8 +25,8 @@ interface InteractionToolOptions {
25
25
  name?: string;
26
26
  /** Tool description shown to the model */
27
27
  description?: string;
28
- /** Called when the model invokes this tool. Receives the validated payload, returns data for the model. */
29
- onRequest: (payload: Record<string, unknown>) => Promise<Record<string, unknown> | string>;
28
+ /** Called when the model invokes this tool. Receives the validated payload and tool context, returns data for the model. */
29
+ onRequest: (payload: Record<string, unknown>, ctx: ToolContext) => Promise<Record<string, unknown> | string>;
30
30
  }
31
31
  /**
32
32
  * Create an interaction tool that lets the agent request structured input.
package/dist/tools.d.ts CHANGED
@@ -1,5 +1,5 @@
1
- export { C as ChildAgent, I as InteractionToolOptions, S as SpawnToolOptions, a as SpawnToolState, c as createInteractionTool, b as createSpawnTool, s as spawn } from './spawn-B7AtyfuG.js';
2
- import { B as ToolDef } from './agent-CUKZMA-_.js';
1
+ export { C as ChildAgent, I as InteractionToolOptions, S as SpawnToolOptions, a as SpawnToolState, c as createInteractionTool, b as createSpawnTool, s as spawn } from './spawn-hNTJA3Iw.js';
2
+ import { B as ToolDef } from './agent-CtGvwTdo.js';
3
3
  export { V as ValidationResult, v as validateToolArgs } from './validation-DOY_k7lW.js';
4
4
  import 'hookable';
5
5
  import './types-BpvTmawk.js';
package/dist/tools.js CHANGED
@@ -7,10 +7,10 @@ import {
7
7
  spawn,
8
8
  validateToolArgs,
9
9
  writeFile
10
- } from "./chunk-4GCOSJ7J.js";
10
+ } from "./chunk-OJATGJ5F.js";
11
11
  import "./chunk-4C6Y56CC.js";
12
12
  import "./chunk-SZA4FKW5.js";
13
- import "./chunk-5LOHDFK3.js";
13
+ import "./chunk-WDBO3JCO.js";
14
14
  export {
15
15
  createInteractionTool,
16
16
  createSpawnTool,
package/dist/types.d.ts CHANGED
@@ -1,8 +1,8 @@
1
- export { A as Agent, a as AgentBehavior, b as AgentHooks, c as AgentOptions, d as AgentRunOptions, e as AgentStats, f as AnthropicParams, C as CerebrasParams, g as ChildRunStats, h as CreateSessionOptions, H as Harness, i as HarnessConfig, I as ImageContent, M as McpConnection, j as McpServerConfig, k as McpToolHookContext, O as OpenRouterParams, P as Provider, R as RemoteStoreOptions, S as Session, l as SessionContentBlock, m as SessionData, n as SessionEndStatus, o as SessionHookContext, p as SessionMessage, q as SessionRun, r as SessionStore, s as SessionTurn, t as SpawnHookContext, u as SqliteStoreOptions, v as StreamCallbacks, w as StreamHookContext, x as StreamOptions, T as ThinkingLevel, y as ToolCall, z as ToolContext, B as ToolDef, D as ToolExecutionMode, E as ToolHookContext, F as ToolMap, G as ToolResult, J as ToolSpec, K as TurnResult, L as TurnUsage } from './agent-CUKZMA-_.js';
1
+ export { A as Agent, a as AgentBehavior, b as AgentHooks, c as AgentOptions, d as AgentRunOptions, e as AgentStats, f as AnthropicParams, C as CerebrasParams, g as ChildRunStats, h as CreateSessionOptions, H as Harness, i as HarnessConfig, I as ImageContent, M as McpConnection, j as McpServerConfig, k as McpToolHookContext, O as OpenRouterParams, P as Provider, R as RemoteStoreOptions, S as Session, l as SessionContentBlock, m as SessionData, n as SessionEndStatus, o as SessionHookContext, p as SessionMessage, q as SessionRun, r as SessionStore, s as SessionTurn, t as SpawnHookContext, u as SqliteStoreOptions, v as StreamCallbacks, w as StreamHookContext, x as StreamOptions, T as ThinkingLevel, y as ToolCall, z as ToolContext, B as ToolDef, D as ToolExecutionMode, E as ToolHookContext, F as ToolMap, G as ToolResult, J as ToolSpec, K as TurnResult, L as TurnUsage } from './agent-CtGvwTdo.js';
2
2
  export { C as ContextCapabilities, a as ContextType, E as ExecResult, b as ExecutionContext, c as ExecutionHandle, S as SpawnConfig } from './types-BpvTmawk.js';
3
3
  export { S as SandboxProvider } from './sandbox-CW72eLDP.js';
4
4
  export { S as SkillConfig, a as SkillResource, b as SkillsConfig } from './types-CDI8Kmve.js';
5
- export { C as ChildAgent, I as InteractionToolOptions, S as SpawnToolOptions, a as SpawnToolState } from './spawn-B7AtyfuG.js';
5
+ export { C as ChildAgent, I as InteractionToolOptions, S as SpawnToolOptions, a as SpawnToolState } from './spawn-hNTJA3Iw.js';
6
6
  export { V as ValidationResult } from './validation-DOY_k7lW.js';
7
7
  import 'hookable';
8
8
  import '@modelcontextprotocol/sdk/client/index.js';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "zidane",
3
- "version": "1.6.15",
3
+ "version": "1.6.17",
4
4
  "description": "an agent that goes straight to the goal",
5
5
  "type": "module",
6
6
  "private": false,