@vinhnt-sdk/core 0.6.0 → 0.7.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.
@@ -0,0 +1,144 @@
1
+ /**
2
+ * Handoff — signal that transfers control to another agent.
3
+ *
4
+ * When a tool returns a `Handoff`, the run loop detects it and swaps the
5
+ * active agent. The new agent takes over the conversation from the next step.
6
+ *
7
+ * Follows the OpenAI Agents SDK pattern: handoff is a special tool return
8
+ * value that the runner intercepts, not a regular tool output.
9
+ *
10
+ * @example
11
+ * ```ts
12
+ * import { handoff, type Handoff } from '@vinhnt-sdk/core';
13
+ *
14
+ * // Define a handoff tool
15
+ * const transferToBilling = handoff({
16
+ * agentId: 'billing-agent',
17
+ * toolName: 'transfer_to_billing',
18
+ * toolDescription: 'Transfer to billing specialist for payment issues',
19
+ * });
20
+ *
21
+ * // Register on agent
22
+ * const triageAgent = createAgent({
23
+ * id: 'triage',
24
+ * tools: [transferToBilling, ...otherTools],
25
+ * });
26
+ *
27
+ * // When LLM calls transfer_to_billing, run loop detects Handoff
28
+ * // and swaps active agent to billing-agent.
29
+ * ```
30
+ */
31
+ import { z } from "zod";
32
+ import { defineTool } from "@vinhnt-sdk/tools";
33
+ /**
34
+ * Symbol used to identify handoff results in tool output.
35
+ * The run loop checks for this symbol to detect agent transfers.
36
+ */
37
+ export const HANDOFF_SYMBOL = Symbol.for("@vinhnt-sdk/core/handoff");
38
+ /**
39
+ * Check if a value is a Handoff.
40
+ */
41
+ export function isHandoff(value) {
42
+ return (typeof value === "object" &&
43
+ value !== null &&
44
+ value.__handoff === true);
45
+ }
46
+ /**
47
+ * Create a Handoff result.
48
+ */
49
+ export function createHandoff(options) {
50
+ return {
51
+ [HANDOFF_SYMBOL]: true,
52
+ __handoff: true,
53
+ targetAgentId: options.targetAgentId,
54
+ reason: options.reason,
55
+ summary: options.summary,
56
+ context: options.context,
57
+ };
58
+ }
59
+ /**
60
+ * Create a handoff tool — when LLM calls it, control transfers to target agent.
61
+ *
62
+ * Unlike `agentAsTool` (parent keeps control), handoff gives full control
63
+ * to the target agent. The original agent pauses until the target completes
64
+ * or transfers back.
65
+ *
66
+ * @example
67
+ * ```ts
68
+ * const handoffTool = createHandoffTool({
69
+ * agentId: 'billing' as AgentId,
70
+ * toolDescription: 'Transfer to billing specialist for payment issues',
71
+ * onHandoff: (reason) => console.log('Transferring:', reason),
72
+ * });
73
+ *
74
+ * // Register on triage agent
75
+ * triageAgent.tools.push(handoffTool);
76
+ *
77
+ * // When LLM calls transfer_to_billing:
78
+ * // 1. Run loop executes the tool
79
+ * // 2. Tool returns Handoff object
80
+ * // 3. Run loop detects Handoff
81
+ * // 4. Active agent swaps to billing-agent
82
+ * // 5. Billing agent continues the conversation
83
+ * ```
84
+ */
85
+ export function createHandoffTool(options) {
86
+ const { agentId, toolName = `transfer_to_${agentId}`, toolDescription, onHandoff, } = options;
87
+ return defineTool({
88
+ name: toolName,
89
+ description: toolDescription,
90
+ risk: "write",
91
+ input: z.object({
92
+ reason: z.string().describe("Reason for the handoff — why this agent is better suited"),
93
+ summary: z.string().optional().describe("Summary of conversation so far for context transfer"),
94
+ }),
95
+ execute: async (input, ctx) => {
96
+ if (onHandoff) {
97
+ await onHandoff(input.reason);
98
+ }
99
+ // Return a Handoff object — run loop will intercept this
100
+ return createHandoff({
101
+ targetAgentId: agentId,
102
+ reason: input.reason,
103
+ summary: input.summary,
104
+ });
105
+ },
106
+ }).toDefinition();
107
+ }
108
+ /**
109
+ * Track handoff history for a run (cycle detection, debugging).
110
+ */
111
+ export class HandoffTracker {
112
+ history = [];
113
+ maxDepth;
114
+ constructor(maxDepth = 10) {
115
+ this.maxDepth = maxDepth;
116
+ }
117
+ /** Record a handoff. Returns false if cycle detected or max depth exceeded. */
118
+ record(record) {
119
+ // Cycle detection: check if target agent is already in the chain
120
+ const recentAgents = this.history.slice(-this.maxDepth).map((r) => r.toAgentId);
121
+ if (recentAgents.includes(record.toAgentId)) {
122
+ return false; // Cycle detected
123
+ }
124
+ // Depth check
125
+ if (this.history.length >= this.maxDepth) {
126
+ return false; // Max depth exceeded
127
+ }
128
+ this.history.push(record);
129
+ return true;
130
+ }
131
+ /** Get the full handoff history. */
132
+ getHistory() {
133
+ return this.history;
134
+ }
135
+ /** Get the chain of agent IDs in this handoff chain. */
136
+ getAgentChain() {
137
+ return this.history.map((r) => r.toAgentId);
138
+ }
139
+ /** Check if an agent has already been visited (cycle detection). */
140
+ hasVisited(agentId) {
141
+ return this.history.some((r) => r.toAgentId === agentId);
142
+ }
143
+ }
144
+ //# sourceMappingURL=handoff.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"handoff.js","sourceRoot":"","sources":["../../src/kernel/handoff.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AAGH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,UAAU,EAAuB,MAAM,mBAAmB,CAAC;AAEpE;;;GAGG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,MAAM,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAC;AAoBrE;;GAEG;AACH,MAAM,UAAU,SAAS,CAAC,KAAc;IACtC,OAAO,CACL,OAAO,KAAK,KAAK,QAAQ;QACzB,KAAK,KAAK,IAAI;QACb,KAAiB,CAAC,SAAS,KAAK,IAAI,CACtC,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,aAAa,CAAC,OAK7B;IACC,OAAO;QACL,CAAC,cAAc,CAAC,EAAE,IAAI;QACtB,SAAS,EAAE,IAAI;QACf,aAAa,EAAE,OAAO,CAAC,aAAa;QACpC,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,OAAO,EAAE,OAAO,CAAC,OAAO;QACxB,OAAO,EAAE,OAAO,CAAC,OAAO;KACzB,CAAC;AACJ,CAAC;AAiBD;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,MAAM,UAAU,iBAAiB,CAAC,OAA2B;IAC3D,MAAM,EACJ,OAAO,EACP,QAAQ,GAAG,eAAe,OAAO,EAAE,EACnC,eAAe,EACf,SAAS,GACV,GAAG,OAAO,CAAC;IAEZ,OAAO,UAAU,CAAC;QAChB,IAAI,EAAE,QAAQ;QACd,WAAW,EAAE,eAAe;QAC5B,IAAI,EAAE,OAAgB;QACtB,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC;YACd,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,0DAA0D,CAAC;YACvF,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,qDAAqD,CAAC;SAC/F,CAAC;QACF,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE;YAC5B,IAAI,SAAS,EAAE,CAAC;gBACd,MAAM,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;YAChC,CAAC;YAED,yDAAyD;YACzD,OAAO,aAAa,CAAC;gBACnB,aAAa,EAAE,OAAO;gBACtB,MAAM,EAAE,KAAK,CAAC,MAAM;gBACpB,OAAO,EAAE,KAAK,CAAC,OAAO;aACvB,CAAC,CAAC;QACL,CAAC;KACF,CAAC,CAAC,YAAY,EAAE,CAAC;AACpB,CAAC;AAsBD;;GAEG;AACH,MAAM,OAAO,cAAc;IACR,OAAO,GAAoB,EAAE,CAAC;IAC9B,QAAQ,CAAS;IAElC,YAAY,WAAmB,EAAE;QAC/B,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC3B,CAAC;IAED,+EAA+E;IAC/E,MAAM,CAAC,MAAqB;QAC1B,iEAAiE;QACjE,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;QAChF,IAAI,YAAY,CAAC,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC;YAC5C,OAAO,KAAK,CAAC,CAAC,iBAAiB;QACjC,CAAC;QAED,cAAc;QACd,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YACzC,OAAO,KAAK,CAAC,CAAC,qBAAqB;QACrC,CAAC;QAED,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC1B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,oCAAoC;IACpC,UAAU;QACR,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAED,wDAAwD;IACxD,aAAa;QACX,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;IAC9C,CAAC;IAED,oEAAoE;IACpE,UAAU,CAAC,OAAgB;QACzB,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,KAAK,OAAO,CAAC,CAAC;IAC3D,CAAC;CACF"}
@@ -1,4 +1,4 @@
1
- import type { RunId, AgentEvent } from "@vinhnt-sdk/schema";
1
+ import type { RunId, AgentEvent, ToolChoice, ResponseFormat } from "@vinhnt-sdk/schema";
2
2
  import type { ModelProvider, ModelRegistry } from "../model.js";
3
3
  import type { SessionRuntimeState } from "@vinhnt-sdk/session";
4
4
  import type { RunEventStore, SessionStore } from "@vinhnt-sdk/session";
@@ -10,6 +10,7 @@ import type { ContextRegistry } from "../system-context/types.js";
10
10
  import type { ApprovalStore } from "@vinhnt-sdk/permission";
11
11
  import type { EventBus } from "@vinhnt-sdk/event";
12
12
  import type { CircuitBreaker, CircuitBreakerOptions, TerminationPolicy } from "@vinhnt-sdk/step-executor";
13
+ import type { z } from "zod";
13
14
  /** Sandbox configuration for shell command execution. */
14
15
  export interface KernelSandboxConfig {
15
16
  /** Sandbox mode: "host" (default), "process", or "container". */
@@ -50,6 +51,42 @@ export interface HookConfig {
50
51
  /** Custom hook handlers keyed by hook name. */
51
52
  readonly hooks?: Record<string, unknown>;
52
53
  }
54
+ /**
55
+ * Model settings — controls sampling, tool behavior, and output format.
56
+ *
57
+ * Grouped into a single object to avoid namespace pollution at the kernel config level.
58
+ * Follows the industry-standard nested pattern (OpenAI Agents SDK, Mastra, Google ADK).
59
+ *
60
+ * @example
61
+ * ```ts
62
+ * const kernel = new AgentKernel({
63
+ * model: openaiProvider,
64
+ * store: eventStore,
65
+ * modelSettings: {
66
+ * temperature: 0.7,
67
+ * topP: 0.9,
68
+ * toolChoice: 'auto',
69
+ * parallelToolCalls: true,
70
+ * },
71
+ * });
72
+ * ```
73
+ */
74
+ export interface ModelSettings {
75
+ /** Sampling temperature (0-2). Higher = more random, lower = more deterministic. */
76
+ readonly temperature?: number;
77
+ /** Nucleus sampling threshold (0-1). Alternative to temperature. */
78
+ readonly topP?: number;
79
+ /** Penalizes tokens based on frequency in output (-2 to 2). */
80
+ readonly frequencyPenalty?: number;
81
+ /** Penalizes tokens based on presence in output (-2 to 2). */
82
+ readonly presencePenalty?: number;
83
+ /** Controls tool calling behavior. 'auto' = model decides, 'required' = must call, 'none' = no tools. */
84
+ readonly toolChoice?: ToolChoice;
85
+ /** Allow the model to call multiple tools in parallel. Default: true. */
86
+ readonly parallelToolCalls?: boolean;
87
+ /** Response format constraint (e.g., JSON mode). */
88
+ readonly responseFormat?: ResponseFormat;
89
+ }
53
90
  /**
54
91
  * Configuration for AgentKernel — the core agent orchestration engine.
55
92
  *
@@ -72,7 +109,7 @@ export interface AgentKernelConfig {
72
109
  readonly tools?: readonly ToolDefinition[];
73
110
  /** ToolProviderRegistry — single source of truth for all tools. */
74
111
  readonly toolProviderRegistry?: ToolProviderRegistry;
75
- /** Maximum number of steps (LLM calls) per run. Default: 30. */
112
+ /** Maximum number of steps (LLM calls) per run. Default: 25. */
76
113
  readonly maxSteps?: number;
77
114
  /** Maximum tool calls per step. Default: 10. */
78
115
  readonly maxToolCallsPerStep?: number;
@@ -134,6 +171,36 @@ export interface AgentKernelConfig {
134
171
  readonly noStore?: boolean;
135
172
  /** Termination policy for advanced stop conditions. */
136
173
  readonly termination?: TerminationPolicy;
174
+ /** Model settings — temperature, topP, toolChoice, etc. */
175
+ readonly modelSettings?: ModelSettings;
176
+ /**
177
+ * Structured output type — controls what the agent returns.
178
+ *
179
+ * - `'text'` (default): Returns plain text string.
180
+ * - A Zod object schema: Returns validated, typed output.
181
+ *
182
+ * When a Zod schema is provided, the kernel:
183
+ * 1. Converts it to JSON Schema and sends via `response_format`
184
+ * 2. Validates the model's JSON response against the schema
185
+ * 3. Returns the typed output (or throws on validation failure)
186
+ *
187
+ * @example
188
+ * ```ts
189
+ * const kernel = new AgentKernel({
190
+ * model: provider,
191
+ * store: eventStore,
192
+ * outputType: z.object({
193
+ * name: z.string(),
194
+ * date: z.string(),
195
+ * participants: z.array(z.string()),
196
+ * }),
197
+ * });
198
+ *
199
+ * const result = await kernel.run('Extract event from "Meeting with Alice on March 5"');
200
+ * // result.output is typed as { name: string; date: string; participants: string[] }
201
+ * ```
202
+ */
203
+ readonly outputType?: 'text' | z.ZodTypeAny;
137
204
  /** Sandbox configuration for shell execution. */
138
205
  readonly sandbox?: KernelSandboxConfig;
139
206
  /** Permission configuration for tool execution. */
@@ -142,6 +209,10 @@ export interface AgentKernelConfig {
142
209
  readonly modelRouting?: ModelRoutingConfig;
143
210
  /** Hook configuration for plugin system. */
144
211
  readonly hooks?: HookConfig;
212
+ /** Input guardrails — run before model calls. */
213
+ readonly inputGuardrails?: readonly import("@vinhnt-sdk/guardrails").Guardrail[];
214
+ /** Output guardrails — run after model responses. */
215
+ readonly outputGuardrails?: readonly import("@vinhnt-sdk/guardrails").Guardrail[];
145
216
  /** Enterprise managed configuration. */
146
217
  readonly managedConfig?: Record<string, unknown>;
147
218
  /** Logger for kernel events. */
@@ -203,18 +274,13 @@ export interface AgentRunHandle {
203
274
  onEvent(handler: (event: AgentEvent) => void): () => void;
204
275
  }
205
276
  /**
206
- * Result of a completed agent run.
277
+ * Usage metrics for a completed agent run.
278
+ *
279
+ * Follows the industry-standard nested usage pattern (OpenAI, Vercel AI SDK, Mastra, LangChain).
280
+ * All token/cost metrics are grouped here instead of being flat on AgentRunResult.
207
281
  */
208
- export interface AgentRunResult {
209
- /** Run identifier. */
210
- readonly runId: RunId;
211
- /** Final status. */
212
- readonly status: "succeeded" | "failed" | "cancelled";
213
- /** Output text if successful. */
214
- readonly output?: string;
215
- /** Error message if failed. */
216
- readonly error?: string;
217
- /** Total number of steps executed. */
282
+ export interface RunUsage {
283
+ /** Total number of steps (LLM calls) executed. */
218
284
  readonly totalSteps: number;
219
285
  /** Total duration in milliseconds. */
220
286
  readonly durationMs?: number;
@@ -222,10 +288,43 @@ export interface AgentRunResult {
222
288
  readonly inputTokens?: number;
223
289
  /** Output tokens used. */
224
290
  readonly outputTokens?: number;
291
+ /** Reasoning/thinking tokens used. */
292
+ readonly reasoningTokens?: number;
293
+ /** Cache read tokens (prompt caching). */
294
+ readonly cacheReadTokens?: number;
295
+ /** Cache write tokens (prompt caching). */
296
+ readonly cacheWriteTokens?: number;
297
+ /** Total tokens (input + output + reasoning). */
298
+ readonly totalTokens?: number;
225
299
  /** Total cost in USD. */
226
300
  readonly cost?: number;
227
301
  /** Number of tool calls executed. */
228
302
  readonly toolCallsCount?: number;
303
+ /** Model used for this run. */
304
+ readonly model?: string;
305
+ /** Provider used for this run. */
306
+ readonly provider?: string;
307
+ /** Stop reason from the LLM. */
308
+ readonly stopReason?: string;
309
+ /** Provider-specific raw usage data. */
310
+ readonly raw?: Record<string, unknown>;
311
+ }
312
+ /**
313
+ * Result of a completed agent run.
314
+ */
315
+ export interface AgentRunResult {
316
+ /** Run identifier. */
317
+ readonly runId: RunId;
318
+ /** Final status. */
319
+ readonly status: "succeeded" | "failed" | "cancelled";
320
+ /** Output text if successful. */
321
+ readonly output?: string;
322
+ /** Validated structured output (when outputType is Zod schema). */
323
+ readonly structuredOutput?: unknown;
324
+ /** Error message if failed. */
325
+ readonly error?: string;
326
+ /** Usage metrics (tokens, cost, duration). */
327
+ readonly usage?: RunUsage;
229
328
  }
230
329
  /**
231
330
  * Normalize a legacy flat config object into the new nested structure.
@@ -1 +1 @@
1
- {"version":3,"file":"kernel-types.d.ts","sourceRoot":"","sources":["../../src/kernel/kernel-types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"kernel-types.d.ts","sourceRoot":"","sources":["../../src/kernel/kernel-types.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"kernel-types.js","sourceRoot":"","sources":["../../src/kernel/kernel-types.ts"],"names":[],"mappings":"AA+OA;;;;;;;;;;;;;;;GAeG;AACH,MAAM,UAAU,eAAe,CAAC,MAA+B;IAC7D,MAAM,UAAU,GAA4B,EAAE,GAAG,MAAM,EAAE,CAAC;IAE1D,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;QACxB,UAAU,CAAC,OAAO,GAAG;YACnB,IAAI,EAAE,UAAU,CAAC,WAAW;YAC5B,KAAK,EAAE,UAAU,CAAC,YAAY;YAC9B,SAAS,EAAE,UAAU,CAAC,gBAAgB;SACvC,CAAC;QACF,OAAO,UAAU,CAAC,WAAW,CAAC;QAC9B,OAAO,UAAU,CAAC,YAAY,CAAC;QAC/B,OAAO,UAAU,CAAC,gBAAgB,CAAC;IACrC,CAAC;IAED,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC;QAC5B,UAAU,CAAC,WAAW,GAAG;YACvB,aAAa,EAAE,UAAU,CAAC,aAAa;YACvC,mBAAmB,EAAE,UAAU,CAAC,mBAAmB;YACnD,uBAAuB,EAAE,UAAU,CAAC,uBAAuB;YAC3D,qBAAqB,EAAE,UAAU,CAAC,qBAAqB;YACvD,sBAAsB,EAAE,UAAU,CAAC,sBAAsB;YACzD,uBAAuB,EAAE,UAAU,CAAC,uBAAuB;SAC5D,CAAC;QACF,OAAO,UAAU,CAAC,aAAa,CAAC;QAChC,OAAO,UAAU,CAAC,mBAAmB,CAAC;QACtC,OAAO,UAAU,CAAC,uBAAuB,CAAC;QAC1C,OAAO,UAAU,CAAC,qBAAqB,CAAC;QACxC,OAAO,UAAU,CAAC,sBAAsB,CAAC;QACzC,OAAO,UAAU,CAAC,uBAAuB,CAAC;IAC5C,CAAC;IAED,IAAI,CAAC,UAAU,CAAC,YAAY,EAAE,CAAC;QAC7B,UAAU,CAAC,YAAY,GAAG;YACxB,cAAc,EAAE,UAAU,CAAC,cAAc;YACzC,YAAY,EAAE,UAAU,CAAC,YAAY;YACrC,gBAAgB,EAAE,UAAU,CAAC,gBAAgB;YAC7C,aAAa,EAAE,UAAU,CAAC,aAAa;SACxC,CAAC;QACF,OAAO,UAAU,CAAC,cAAc,CAAC;QACjC,OAAO,UAAU,CAAC,YAAY,CAAC;QAC/B,OAAO,UAAU,CAAC,gBAAgB,CAAC;QACnC,OAAO,UAAU,CAAC,aAAa,CAAC;IAClC,CAAC;IAED,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;QACtB,UAAU,CAAC,KAAK,GAAG;YACjB,KAAK,EAAE,UAAU,CAAC,WAAW;SAC9B,CAAC;QACF,OAAO,UAAU,CAAC,WAAW,CAAC;IAChC,CAAC;IAED,OAAO,UAA0C,CAAC;AACpD,CAAC"}
1
+ {"version":3,"file":"kernel-types.js","sourceRoot":"","sources":["../../src/kernel/kernel-types.ts"],"names":[],"mappings":"AAuVA;;;;;;;;;;;;;;;GAeG;AACH,MAAM,UAAU,eAAe,CAAC,MAA+B;IAC7D,MAAM,UAAU,GAA4B,EAAE,GAAG,MAAM,EAAE,CAAC;IAE1D,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;QACxB,UAAU,CAAC,OAAO,GAAG;YACnB,IAAI,EAAE,UAAU,CAAC,WAAW;YAC5B,KAAK,EAAE,UAAU,CAAC,YAAY;YAC9B,SAAS,EAAE,UAAU,CAAC,gBAAgB;SACvC,CAAC;QACF,OAAO,UAAU,CAAC,WAAW,CAAC;QAC9B,OAAO,UAAU,CAAC,YAAY,CAAC;QAC/B,OAAO,UAAU,CAAC,gBAAgB,CAAC;IACrC,CAAC;IAED,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC;QAC5B,UAAU,CAAC,WAAW,GAAG;YACvB,aAAa,EAAE,UAAU,CAAC,aAAa;YACvC,mBAAmB,EAAE,UAAU,CAAC,mBAAmB;YACnD,uBAAuB,EAAE,UAAU,CAAC,uBAAuB;YAC3D,qBAAqB,EAAE,UAAU,CAAC,qBAAqB;YACvD,sBAAsB,EAAE,UAAU,CAAC,sBAAsB;YACzD,uBAAuB,EAAE,UAAU,CAAC,uBAAuB;SAC5D,CAAC;QACF,OAAO,UAAU,CAAC,aAAa,CAAC;QAChC,OAAO,UAAU,CAAC,mBAAmB,CAAC;QACtC,OAAO,UAAU,CAAC,uBAAuB,CAAC;QAC1C,OAAO,UAAU,CAAC,qBAAqB,CAAC;QACxC,OAAO,UAAU,CAAC,sBAAsB,CAAC;QACzC,OAAO,UAAU,CAAC,uBAAuB,CAAC;IAC5C,CAAC;IAED,IAAI,CAAC,UAAU,CAAC,YAAY,EAAE,CAAC;QAC7B,UAAU,CAAC,YAAY,GAAG;YACxB,cAAc,EAAE,UAAU,CAAC,cAAc;YACzC,YAAY,EAAE,UAAU,CAAC,YAAY;YACrC,gBAAgB,EAAE,UAAU,CAAC,gBAAgB;YAC7C,aAAa,EAAE,UAAU,CAAC,aAAa;SACxC,CAAC;QACF,OAAO,UAAU,CAAC,cAAc,CAAC;QACjC,OAAO,UAAU,CAAC,YAAY,CAAC;QAC/B,OAAO,UAAU,CAAC,gBAAgB,CAAC;QACnC,OAAO,UAAU,CAAC,aAAa,CAAC;IAClC,CAAC;IAED,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;QACtB,UAAU,CAAC,KAAK,GAAG;YACjB,KAAK,EAAE,UAAU,CAAC,WAAW;SAC9B,CAAC;QACF,OAAO,UAAU,CAAC,WAAW,CAAC;IAChC,CAAC;IAED,OAAO,UAA0C,CAAC;AACpD,CAAC"}
@@ -7,6 +7,16 @@ import type { SubAgentParams } from "../agent/agent-factory.js";
7
7
  import type { DomainManifest } from "@vinhnt-sdk/tools";
8
8
  /** Default thinking prompt for reasoning steps. Exported for user override. */
9
9
  export declare const DEFAULT_THINKING_PROMPT = "Analyze the user's request and the conversation context. Think step by step about what needs to be done. Output your reasoning.";
10
+ /** Default maximum tokens per LLM response. */
11
+ export declare const DEFAULT_MAX_TOKENS = 4096;
12
+ /** Default per-step timeout in ms. */
13
+ export declare const DEFAULT_STEP_TIMEOUT = 120000;
14
+ /** Default maximum self-correction attempts per step. */
15
+ export declare const DEFAULT_MAX_SELF_CORRECT_ATTEMPTS = 3;
16
+ /** Default maximum sub-agent nesting depth. */
17
+ export declare const DEFAULT_MAX_SUB_AGENT_DEPTH = 3;
18
+ /** Default compaction threshold ratio (0-1). */
19
+ export declare const DEFAULT_COMPACTION_THRESHOLD = 0.75;
10
20
  import type { RunState } from "@vinhnt-sdk/step-executor";
11
21
  import { PermissionGate } from "@vinhnt-sdk/step-executor";
12
22
  import { ModelCaller } from "@vinhnt-sdk/llm";
@@ -61,6 +71,9 @@ export declare class AgentKernel {
61
71
  private compactionThreshold;
62
72
  private readonly termination;
63
73
  private circuitBreaker;
74
+ private readonly inputGuardrails;
75
+ private readonly outputGuardrails;
76
+ private readonly outputType;
64
77
  private readonly sessionDeps;
65
78
  private readonly subAgentDeps;
66
79
  private readonly runSessionStates;
@@ -1 +1 @@
1
- {"version":3,"file":"kernel.d.ts","sourceRoot":"","sources":["../../src/kernel/kernel.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,kBAAkB,EAAE,aAAa,EAAc,MAAM,oBAAoB,CAAC;AAErI,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAItD,OAAO,KAAK,EAAE,aAAa,EAAgB,MAAM,qBAAqB,CAAC;AACvE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAChE,OAAO,KAAK,EAAE,cAAc,EAAsC,MAAM,mBAAmB,CAAC;AAM5F,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAChE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAOxD,+EAA+E;AAC/E,eAAO,MAAM,uBAAuB,oIAAoI,CAAC;AAGzK,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,EAAE,cAAc,EAAyB,MAAM,2BAA2B,CAAC;AAClF,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAE9C,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAE7C,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAC3D,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AACxD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAGjE,OAAO,EAAoB,KAAK,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAelF,OAAO,KAAK,EAAE,iBAAiB,EAAE,SAAS,EAAE,cAAc,EAAkB,MAAM,mBAAmB,CAAC;AAEtG,YAAY,EAAE,iBAAiB,EAAE,QAAQ,EAAE,eAAe,EAAE,CAAC;AAC7D,OAAO,EAAE,cAAc,EAAE,uBAAuB,EAAE,KAAK,YAAY,EAAE,KAAK,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AACnI,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAQxD;;;;GAIG;AACH,qBAAa,WAAW;IACtB,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAc;IAC1C,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAiB;IAChD,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAkB;IAC/C,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAgB;IACtC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAwB;IAC9C,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAqC;IACrE,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAS;IAC7C,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAoC;IAC9D,OAAO,CAAC,QAAQ,CAAC,aAAa,CAA8B;IAC5D,OAAO,CAAC,cAAc,CAAS;IAC/B,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAAU;IAC/C,OAAO,CAAC,QAAQ,CAAC,sBAAsB,CAAS;IAChD,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAS;IAC1C,OAAO,CAAC,QAAQ,CAAC,YAAY,CAA2B;IACxD,OAAO,CAAC,QAAQ,CAAC,aAAa,CAA4B;IAC1D,OAAO,CAAC,QAAQ,CAAC,aAAa,CAA4B;IAC1D,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAuB;IAChD,OAAO,CAAC,YAAY,CAAkC;IACtD,OAAO,CAAC,QAAQ,CAAC,YAAY,CAA2B;IACxD,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAAmC;IACxE,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAAoD;IAC1F,OAAO,CAAC,IAAI,CAAW;IACvB,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAA8B;IACvD,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAe;IAC5C,OAAO,CAAC,YAAY,CAA0B;IAC9C,OAAO,CAAC,YAAY,CAAK;IACzB,OAAO,CAAC,UAAU,CAAsB;IACxC,OAAO,CAAC,WAAW,CAA0C;IAC7D,OAAO,CAAC,kBAAkB,CAAqB;IAC/C,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAS;IAC3C,OAAO,CAAC,mBAAmB,CAAqB;IAChD,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAgC;IAC5D,OAAO,CAAC,cAAc,CAAiB;IACvC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAoB;IAChD,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAqB;IAClD,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAqD;IACtF,+DAA+D;IAC/D,OAAO,CAAC,QAAQ,CAAC,aAAa,CAA4B;IAC1D,oFAAoF;IACpF,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAyC;IAC3E,0FAA0F;IAC1F,OAAO,CAAC,QAAQ,CAAC,eAAe,CAA6B;IAC7D,wFAAwF;IACxF,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAuC;IACxE,yFAAyF;IACzF,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAgC;IAC5D,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAmB;gBAExC,MAAM,EAAE,iBAAiB;IAoMrC,gFAAgF;IAChF,YAAY,CAAC,IAAI,EAAE,cAAc,GAAG,IAAI;IASxC,wFAAwF;IACxF,cAAc,CAAC,QAAQ,EAAE,cAAc,GAAG,IAAI;IAM9C,+EAA+E;IAC/E,OAAO,CAAC,SAAS;IASjB,0DAA0D;IAC1D,OAAO,CAAC,WAAW;IAOnB,OAAO,CAAC,SAAS;IAIjB,OAAO,CAAC,iBAAiB;IAIzB,OAAO,CAAC,iBAAiB;IAwEzB,OAAO,CAAC,QAAQ;IAIhB,+FAA+F;IAC/F,OAAO,CAAC,OAAO;IAQf,oEAAoE;IAC9D,QAAQ,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAO/C,uEAAuE;IACvE,eAAe,CAAC,KAAK,EAAE,WAAW,GAAG,IAAI;IAKzC,8DAA8D;IACxD,UAAU,CAAC,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,WAAW,CAAC;IAS9D,4CAA4C;IAC5C,eAAe,IAAI,WAAW,GAAG,SAAS;IAI1C,wFAAwF;IACxF,gBAAgB,CAAC,IAAI,EAAE,kBAAkB,GAAG,IAAI;IAchD,8EAA8E;IAC9E,eAAe,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI;IAIvC,oEAAoE;IACpE,gBAAgB,IAAI,kBAAkB;IAItC,gEAAgE;IAChE,gBAAgB,IAAI,aAAa,GAAG,SAAS;IAI7C,6DAA6D;IAC7D,aAAa,IAAI,aAAa;IAI9B,iFAAiF;IAC3E,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,cAAc,EAAE,SAAS,CAAC,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC;IAKrJ,mFAAmF;IACnF,OAAO,CAAC,iBAAiB;IAOzB;;;;OAIG;IACH,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,cAAc,EAAE,SAAS,CAAC,EAAE,MAAM,EAAE,gBAAgB,CAAC,EAAE,SAAS,kBAAkB,EAAE,EAAE,aAAa,CAAC,EAAE,WAAW,GAAG,SAAS;IAgDtJ;;;;;;;;;;;OAWG;IACG,SAAS,CACb,KAAK,EAAE,KAAK,EACZ,MAAM,EAAE,MAAM,EACd,GAAG,EAAE,cAAc,EACnB,SAAS,CAAC,EAAE,MAAM,EAClB,aAAa,CAAC,EAAE,WAAW,GAC1B,OAAO,CAAC,SAAS,CAAC;IAuDrB,kGAAkG;IAC5F,mBAAmB,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAI9C;;;;;;;;;;;;;;;;;;;;OAoBG;IACH,eAAe,CACb,MAAM,EAAE,MAAM,EACd,GAAG,EAAE,cAAc,EACnB,SAAS,CAAC,EAAE,MAAM,EAClB,gBAAgB,CAAC,EAAE,SAAS,kBAAkB,EAAE,EAChD,aAAa,CAAC,EAAE,WAAW,GAC1B,cAAc;IAmJjB;;;OAGG;IACH,SAAS,CACP,MAAM,EAAE,MAAM,EACd,GAAG,EAAE,cAAc,EACnB,SAAS,CAAC,EAAE,MAAM,EAClB,gBAAgB,CAAC,EAAE,SAAS,kBAAkB,EAAE,EAChD,aAAa,CAAC,EAAE,WAAW,GAC1B;QAAE,KAAK,EAAE,KAAK,CAAC;QAAC,MAAM,EAAE,aAAa,CAAC,aAAa,CAAC,CAAA;KAAE;IAWzD,OAAO,CAAC,aAAa;IAIrB,8EAA8E;IAC9E,OAAO,CAAC,gBAAgB;IAKxB,qEAAqE;IAC/D,iBAAiB,CACrB,KAAK,EAAE,KAAK,CAAC;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,EAClD,GAAG,EAAE,cAAc,EACnB,SAAS,CAAC,EAAE,MAAM,EAClB,WAAW,CAAC,EAAE,KAAK,EACnB,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,MAAM,CAAC;IAKlB,+FAA+F;IAC/F,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,cAAc,EAAE,SAAS,CAAC,EAAE,MAAM,EAAE,gBAAgB,CAAC,EAAE,SAAS,kBAAkB,EAAE;;;;;;;;;;;;;IAgBjH,sFAAsF;IACtF,OAAO,CAAC,KAAK,CAAC,EAAE,KAAK,GAAG,QAAQ;IAQhC,uEAAuE;IACvE,iBAAiB,IAAI,cAAc;IAInC,kEAAkE;IAClE,cAAc,IAAI,WAAW;IAI7B;;;;;;;OAOG;IACH,WAAW,CAAC,OAAO,EAAE,OAAO,CAAC,IAAI,CAAC,iBAAiB,EACjD,OAAO,GAAG,WAAW,GAAG,UAAU,GAAG,aAAa,GAAG,gBAAgB,GAAG,gBAAgB,GACxF,qBAAqB,GAAG,aAAa,GAAG,YAAY,GAAG,gBAAgB,GAAG,mBAAmB,CAC9F,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IA4CnC,+DAA+D;IAC/D,iBAAiB,IAAI,cAAc;IAInC,2EAA2E;IAC3E,WAAW,CAAC,KAAK,EAAE,KAAK,GAAG,QAAQ,GAAG,SAAS;IAI/C,wEAAwE;IACxE,gBAAgB,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,KAAK,IAAI,GAAG,MAAM,IAAI;IAI/E,2EAA2E;IAC3E,SAAS,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI;IAK3C,kGAAkG;IAClG,OAAO,CAAC,iBAAiB;IAWzB,yFAAyF;IACzF,OAAO,CAAC,mBAAmB;YAgBb,cAAc;IAU5B;;;OAGG;YACW,oBAAoB;IAyBlC,uFAAuF;YACzE,kBAAkB;IAiBhC,4CAA4C;IAC5C,gBAAgB,IAAI,IAAI;IAIxB,2DAA2D;IAC3D,yBAAyB,CAAC,QAAQ,EAAE,iBAAiB,GAAG,IAAI;IAI5D,uCAAuC;IACvC,2BAA2B,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;IAI7C,+DAA+D;IACzD,QAAQ,IAAI,OAAO,CAAC;QAAE,OAAO,EAAE,MAAM,EAAE,CAAC;QAAC,MAAM,EAAE;YAAE,EAAE,EAAE,MAAM,CAAC;YAAC,KAAK,EAAE,OAAO,CAAA;SAAE,EAAE,CAAA;KAAE,CAAC;YAK5E,OAAO;IA0FrB,OAAO,CAAC,aAAa;IAIrB,OAAO,CAAC,QAAQ;CAIjB"}
1
+ {"version":3,"file":"kernel.d.ts","sourceRoot":"","sources":["../../src/kernel/kernel.ts"],"names":[],"mappings":"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"}
@@ -1,11 +1,22 @@
1
1
  import { ValidationError, AgentNotFoundError, ConfigurationError } from "@vinhnt-sdk/schema";
2
2
  import { restoreRunFromStore, findActiveSessionIds } from "@vinhnt-sdk/session";
3
+ import { zodSchemaToNestedJsonSchema } from "@vinhnt-sdk/tools";
3
4
  import { createRedactingLogger } from "@vinhnt-sdk/guard";
4
5
  import { wildcardMatch } from "@vinhnt-sdk/schema";
5
6
  import { getBehaviourProfile } from "../agent/behaviour-profiles.js";
6
7
  import { DEFAULT_MAX_STEPS, DEFAULT_MAX_TOOL_CALLS_PER_STEP, DOOM_LOOP_THRESHOLD } from "@vinhnt-sdk/step-executor";
7
8
  /** Default thinking prompt for reasoning steps. Exported for user override. */
8
9
  export const DEFAULT_THINKING_PROMPT = "Analyze the user's request and the conversation context. Think step by step about what needs to be done. Output your reasoning.";
10
+ /** Default maximum tokens per LLM response. */
11
+ export const DEFAULT_MAX_TOKENS = 4096;
12
+ /** Default per-step timeout in ms. */
13
+ export const DEFAULT_STEP_TIMEOUT = 120_000;
14
+ /** Default maximum self-correction attempts per step. */
15
+ export const DEFAULT_MAX_SELF_CORRECT_ATTEMPTS = 3;
16
+ /** Default maximum sub-agent nesting depth. */
17
+ export const DEFAULT_MAX_SUB_AGENT_DEPTH = 3;
18
+ /** Default compaction threshold ratio (0-1). */
19
+ export const DEFAULT_COMPACTION_THRESHOLD = 0.75;
9
20
  import { RunStateMachine } from "@vinhnt-sdk/step-executor";
10
21
  import { PermissionGate } from "@vinhnt-sdk/step-executor";
11
22
  import { ModelCaller } from "@vinhnt-sdk/llm";
@@ -63,6 +74,9 @@ export class AgentKernel {
63
74
  compactionThreshold;
64
75
  termination;
65
76
  circuitBreaker;
77
+ inputGuardrails;
78
+ outputGuardrails;
79
+ outputType;
66
80
  sessionDeps;
67
81
  subAgentDeps;
68
82
  runSessionStates = new Map();
@@ -105,8 +119,8 @@ export class AgentKernel {
105
119
  this.systemContext = normalized.systemContext;
106
120
  this.thinkingBudget = normalized.thinkingBudget ?? 0;
107
121
  this.selfCorrectOnFailure = normalized.selfCorrectOnFailure ?? false;
108
- this.maxSelfCorrectAttempts = normalized.maxSelfCorrectAttempts ?? 3;
109
- this.maxSubAgentDepth = normalized.maxSubAgentDepth ?? 3;
122
+ this.maxSelfCorrectAttempts = normalized.maxSelfCorrectAttempts ?? DEFAULT_MAX_SELF_CORRECT_ATTEMPTS;
123
+ this.maxSubAgentDepth = normalized.maxSubAgentDepth ?? DEFAULT_MAX_SUB_AGENT_DEPTH;
110
124
  this.sessionStore = normalized.sessionStore;
111
125
  this.agentRegistry = normalized.agentRegistry;
112
126
  this.pluginManager = normalized.pluginManager;
@@ -115,7 +129,7 @@ export class AgentKernel {
115
129
  this.toolRegistry = normalized.toolRegistry;
116
130
  this.toolProviderRegistry = normalized.toolProviderRegistry;
117
131
  this.sessionTitleGenerator = normalized.sessionTitleGenerator;
118
- this.stepTimeout = normalized.stepTimeout ?? 120_000;
132
+ this.stepTimeout = normalized.stepTimeout ?? DEFAULT_STEP_TIMEOUT;
119
133
  this.doomLoopThreshold = normalized.doomLoopThreshold ?? DOOM_LOOP_THRESHOLD;
120
134
  this.compactionThreshold = normalized.compactionThreshold;
121
135
  this.termination = normalized.termination;
@@ -135,8 +149,25 @@ export class AgentKernel {
135
149
  : normalized.circuitBreakerOptions?.maxBackoffMs !== undefined
136
150
  ? { maxBackoffMs: normalized.circuitBreakerOptions.maxBackoffMs }
137
151
  : {}),
138
- ...normalized.circuitBreakerOptions,
139
152
  });
153
+ this.inputGuardrails = normalized.inputGuardrails ?? [];
154
+ this.outputGuardrails = normalized.outputGuardrails ?? [];
155
+ this.outputType = normalized.outputType ?? 'text';
156
+ // Derive responseFormat from outputType if it's a Zod schema
157
+ let effectiveResponseFormat = normalized.modelSettings?.responseFormat;
158
+ if (this.outputType !== 'text' && !effectiveResponseFormat) {
159
+ const jsonSchema = zodSchemaToNestedJsonSchema(this.outputType);
160
+ if (jsonSchema) {
161
+ effectiveResponseFormat = {
162
+ type: "json_schema",
163
+ jsonSchema: { name: "structured_output", schema: jsonSchema, strict: true },
164
+ };
165
+ }
166
+ else {
167
+ // Fallback: basic json_object format
168
+ effectiveResponseFormat = { type: "json_object" };
169
+ }
170
+ }
140
171
  this.saga = new ToolSaga();
141
172
  this.stateMachine = new RunStateMachine();
142
173
  this.permissionGate = new PermissionGate({
@@ -159,7 +190,7 @@ export class AgentKernel {
159
190
  if (normalized.permissions?.topLevelPermissionRules) {
160
191
  this.permissionGate.setTopLevelRules(normalized.permissions.topLevelPermissionRules);
161
192
  }
162
- this.maxTokens = normalized.maxTokens ?? 4096;
193
+ this.maxTokens = normalized.maxTokens ?? DEFAULT_MAX_TOKENS;
163
194
  const maxTokens = this.maxTokens;
164
195
  const thinkingPrompt = normalized.thinkingPrompt ?? DEFAULT_THINKING_PROMPT;
165
196
  // P1-N: wire the redacting logger into the kernel so every log line that
@@ -179,6 +210,9 @@ export class AgentKernel {
179
210
  maxTokens,
180
211
  thinkingBudget: this.thinkingBudget,
181
212
  thinkingPrompt,
213
+ // LLM generation settings (from nested modelSettings)
214
+ ...(normalized.modelSettings?.temperature !== undefined ? { temperature: normalized.modelSettings.temperature } : {}),
215
+ ...(normalized.modelSettings?.topP !== undefined ? { topP: normalized.modelSettings.topP } : {}),
182
216
  // Core's PluginManager structurally satisfies the model-caller hook
183
217
  // contract (named generic fireHook — castable, matches by design).
184
218
  pluginManager: normalized.pluginManager,
@@ -187,6 +221,11 @@ export class AgentKernel {
187
221
  modelForRun: (runId) => this.stateMachine.getModelForRun(runId),
188
222
  setModelForRun: (runId, model) => this.stateMachine.setModelForRun(runId, model),
189
223
  getAvailableTools: (runId) => this.getAvailableTools(runId),
224
+ ...(normalized.modelSettings?.toolChoice !== undefined ? { toolChoice: normalized.modelSettings.toolChoice } : {}),
225
+ ...(normalized.modelSettings?.parallelToolCalls !== undefined ? { parallelToolCalls: normalized.modelSettings.parallelToolCalls } : {}),
226
+ ...(normalized.modelSettings?.presencePenalty !== undefined ? { presencePenalty: normalized.modelSettings.presencePenalty } : {}),
227
+ ...(normalized.modelSettings?.frequencyPenalty !== undefined ? { frequencyPenalty: normalized.modelSettings.frequencyPenalty } : {}),
228
+ ...(effectiveResponseFormat !== undefined ? { responseFormat: effectiveResponseFormat } : {}),
190
229
  });
191
230
  // Validate default model has non-empty model string (fail-closed)
192
231
  const defaultModel = this.modelCaller.getDefaultModel();
@@ -640,7 +679,7 @@ export class AgentKernel {
640
679
  };
641
680
  eventHandlers.forEach(h => h(startEvent));
642
681
  // Run the loop — it reports its terminal status through the return value.
643
- const { totalSteps, status: runStatus, totalInputTokens, totalOutputTokens, durationMs: loopDurationMs } = await this.runLoop(prompt, runId, ctx, abort, sessionId, userContentParts, agentOverride, runSaga, undefined, systemPrompt);
682
+ const { totalSteps, status: runStatus, totalInputTokens, totalOutputTokens, durationMs: loopDurationMs, structuredOutput } = await this.runLoop(prompt, runId, ctx, abort, sessionId, userContentParts, agentOverride, runSaga, undefined, systemPrompt);
644
683
  completed = true;
645
684
  result = {
646
685
  runId,
@@ -650,10 +689,13 @@ export class AgentKernel {
650
689
  status: cancelled || runStatus === "cancelled"
651
690
  ? "cancelled"
652
691
  : runStatus === "failed" ? "failed" : "succeeded",
653
- totalSteps,
654
- ...(totalInputTokens !== undefined ? { inputTokens: totalInputTokens } : {}),
655
- ...(totalOutputTokens !== undefined ? { outputTokens: totalOutputTokens } : {}),
656
- ...(loopDurationMs !== undefined ? { durationMs: loopDurationMs } : {}),
692
+ ...(structuredOutput !== undefined ? { structuredOutput } : {}),
693
+ usage: {
694
+ totalSteps,
695
+ ...(totalInputTokens !== undefined ? { inputTokens: totalInputTokens } : {}),
696
+ ...(totalOutputTokens !== undefined ? { outputTokens: totalOutputTokens } : {}),
697
+ ...(loopDurationMs !== undefined ? { durationMs: loopDurationMs } : {}),
698
+ },
657
699
  };
658
700
  // Emit agent.completed event
659
701
  const completeEvent = {
@@ -671,7 +713,7 @@ export class AgentKernel {
671
713
  runId,
672
714
  status: "failed",
673
715
  error: err instanceof Error ? err.message : String(err),
674
- totalSteps: 0,
716
+ usage: { totalSteps: 0 },
675
717
  };
676
718
  // Emit agent.error event
677
719
  const errorEvent = {
@@ -1006,6 +1048,9 @@ export class AgentKernel {
1006
1048
  ...(this.termination ? { termination: this.termination } : {}),
1007
1049
  ...(judgeModel ? { judgeModel } : {}),
1008
1050
  ...(currentAgent ? { currentAgent } : {}),
1051
+ ...(this.inputGuardrails.length > 0 ? { inputGuardrails: this.inputGuardrails } : {}),
1052
+ ...(this.outputGuardrails.length > 0 ? { outputGuardrails: this.outputGuardrails } : {}),
1053
+ ...(this.outputType !== 'text' ? { outputType: this.outputType } : {}),
1009
1054
  addSessionMessage: (sid, role, content, extra) => this.addSessionMessage(sid, role, content, extra),
1010
1055
  beforeRun: async () => {
1011
1056
  const parentRunId = this.stateMachine.runIdStack.at(-2);
@@ -1030,6 +1075,32 @@ export class AgentKernel {
1030
1075
  emitCompleted: (event, sid, rid, totalIn, totalOut, status) => this.emitCompleted(event, sid, rid, totalIn, totalOut, status),
1031
1076
  emitFail: (rid, c, reason, steps, sid, totalIn, totalOut, dur, cancelled) => this.emitFail(rid, c, reason, steps, sid, totalIn, totalOut, dur, cancelled),
1032
1077
  });
1078
+ // Handle handoff — swap agent and continue the run
1079
+ if (result.handoff && this.agentRegistry) {
1080
+ const targetAgentId = result.handoff.targetAgentId;
1081
+ const targetAgent = await this.agentRegistry.get(targetAgentId);
1082
+ if (targetAgent) {
1083
+ // Swap the active agent for this run
1084
+ const rc = this.runContexts.get(runId);
1085
+ if (rc) {
1086
+ rc.agent = targetAgent;
1087
+ rc.depth++;
1088
+ }
1089
+ // Update the step executor's current agent
1090
+ this.stepExecutor.setCurrentAgent(targetAgent);
1091
+ // Rebuild system prompt for new agent
1092
+ const newSystemPrompt = this.buildSystemPrompt(targetAgent);
1093
+ // Resolve model for new agent
1094
+ this.modelCaller.resolveAgentModel(targetAgent, runId);
1095
+ const newRunModel = this.modelCaller.getActiveModel(runId);
1096
+ // Continue the run with the new agent
1097
+ return this.runLoop(result.handoff.summary ?? prompt, runId, ctx, runAbort, sessionId, userContentParts, targetAgent, runSaga, resume, newSystemPrompt);
1098
+ }
1099
+ else {
1100
+ // Target agent not found — log warning and continue with current agent
1101
+ console.warn(`[kernel] Handoff target agent "${targetAgentId}" not found — continuing with current agent`);
1102
+ }
1103
+ }
1033
1104
  return result;
1034
1105
  }
1035
1106
  finally {