blob: 15f4869e1560df58f7bb84ef0c8fe480eabd1d1f (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
|
/**
* Runtime contracts — the input/output types for `runTurn`.
*
* The kernel's turn loop is a pure function of these inputs. It takes
* messages as a plain input, returns result messages, and touches no DB.
* The implementation lives in the kernel runtime module; these types are
* the contract the session-orchestrator (core) programs against.
*/
import type { ChatMessage } from "./conversation.js";
import type { ToolDispatchPolicy } from "./dispatch.js";
import type { AgentEvent } from "./events.js";
import type { ProviderContract, Usage } from "./provider.js";
import type { ToolContract } from "./tool.js";
/**
* The emitter function the kernel calls to push events outward.
* The session-orchestrator provides this, wiring it to transport + persistence.
*/
export type EventEmitter = (event: AgentEvent) => void;
/**
* Input to `runTurn` — everything the kernel needs to execute one turn.
* All fields are resolved by the session-orchestrator before calling;
* the kernel never reads config or resolves providers/tools itself.
*/
export interface RunTurnInput {
/** The resolved provider to stream from. */
readonly provider: ProviderContract;
/** The conversation history (including system prompt as first message). */
readonly messages: readonly ChatMessage[];
/** The tool set available for this turn (may be empty). */
readonly tools: readonly ToolContract[];
/** How to dispatch tool calls within each step. */
readonly dispatch: ToolDispatchPolicy;
/** The emitter the kernel calls for each outward event. */
readonly emit: EventEmitter;
/** Cancellation signal for the entire turn. */
readonly signal?: AbortSignal;
}
/**
* The result of a completed turn. The session-orchestrator uses this to
* persist the new messages and report usage.
*/
export interface RunTurnResult {
/** The assistant messages produced by this turn (appended to history). */
readonly messages: readonly ChatMessage[];
/** Aggregated token usage across all steps in the turn. */
readonly usage: Usage;
/** Why the turn ended (e.g. "stop", "max-steps", "error", "aborted"). */
readonly finishReason: string;
}
|