@rowan-agent/agent 0.6.0 → 0.6.2
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.
- package/README.md +137 -60
- package/dist/index.d.ts +212 -145
- package/dist/index.js +678 -295
- package/package.json +2 -2
package/dist/index.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import * as _rowan_agent_models from '@rowan-agent/models';
|
|
2
|
-
import { LlmRequest, LlmResponse,
|
|
3
|
-
export { AgentEvent, AgentEventListener, AgentMessage,
|
|
2
|
+
import { LlmRequest, LlmResponse, ModelRef, LlmModelUsage, Outcome, AgentMessage, ToolResult, StreamFn, AgentEventListener, ToolCall, Skill as Skill$1, ContentBlock, ModelConfig } from '@rowan-agent/models';
|
|
3
|
+
export { AgentEvent, AgentEventListener, AgentMessage, ModelConfig, ModelRef, Outcome, Skill, StreamFn, ToolResult } from '@rowan-agent/models';
|
|
4
4
|
import Type from 'typebox';
|
|
5
5
|
|
|
6
6
|
type ExecutionTurn = {
|
|
@@ -10,7 +10,7 @@ type ExecutionTurn = {
|
|
|
10
10
|
phase: string;
|
|
11
11
|
requestedAtMs: number;
|
|
12
12
|
completedAtMs: number;
|
|
13
|
-
model:
|
|
13
|
+
model: ModelRef;
|
|
14
14
|
usage?: LlmModelUsage;
|
|
15
15
|
};
|
|
16
16
|
/** Raw model input/output for session persistence. */
|
|
@@ -19,6 +19,106 @@ type ModelTranscript = {
|
|
|
19
19
|
response: LlmResponse;
|
|
20
20
|
};
|
|
21
21
|
|
|
22
|
+
declare const opaqueIdBrand: unique symbol;
|
|
23
|
+
type OpaqueId<Kind extends string> = string & {
|
|
24
|
+
readonly [opaqueIdBrand]: Kind;
|
|
25
|
+
};
|
|
26
|
+
type AgentId = OpaqueId<"AgentId">;
|
|
27
|
+
type AgentRunId = OpaqueId<"AgentRunId">;
|
|
28
|
+
type RuntimeMessageId = OpaqueId<"RuntimeMessageId">;
|
|
29
|
+
type RuntimeEventId = OpaqueId<"RuntimeEventId">;
|
|
30
|
+
type LeaseId = OpaqueId<"LeaseId">;
|
|
31
|
+
type RuntimeToolCallId = OpaqueId<"RuntimeToolCallId">;
|
|
32
|
+
type AgentLifecycleState = "active" | "paused";
|
|
33
|
+
type RuntimeMessageState = "queued" | "leased" | "acknowledged" | "dead_lettered";
|
|
34
|
+
type AgentRunState = "queued" | "running" | "suspended" | "completed" | "failed" | "cancelled";
|
|
35
|
+
/** Opaque execution checkpoint owned by the Agent loop and persisted by Runtime. */
|
|
36
|
+
type AgentRunExecutionState = Readonly<Record<string, unknown>>;
|
|
37
|
+
/** Host-owned correlation data persisted with a Run and echoed by Runtime Events. */
|
|
38
|
+
type AgentRunMetadata = Readonly<Record<string, unknown>>;
|
|
39
|
+
type AgentInputRequest = {
|
|
40
|
+
phase: string;
|
|
41
|
+
prompt: string;
|
|
42
|
+
requestedAt: string;
|
|
43
|
+
};
|
|
44
|
+
type RuntimeToolCallState = "queued" | "running" | "completed" | "failed" | "indeterminate";
|
|
45
|
+
type AgentRecord = {
|
|
46
|
+
id: AgentId;
|
|
47
|
+
sessionId: string;
|
|
48
|
+
state: AgentLifecycleState;
|
|
49
|
+
createdAt: string;
|
|
50
|
+
updatedAt: string;
|
|
51
|
+
};
|
|
52
|
+
type RuntimeLease = {
|
|
53
|
+
id: LeaseId;
|
|
54
|
+
runId: AgentRunId;
|
|
55
|
+
workerId: string;
|
|
56
|
+
leasedAt: string;
|
|
57
|
+
expiresAt: string;
|
|
58
|
+
};
|
|
59
|
+
type RuntimeMessage = {
|
|
60
|
+
id: RuntimeMessageId;
|
|
61
|
+
agentId: AgentId;
|
|
62
|
+
kind: "agent_input";
|
|
63
|
+
input: AgentMessage;
|
|
64
|
+
state: RuntimeMessageState;
|
|
65
|
+
attempts: number;
|
|
66
|
+
runId?: AgentRunId;
|
|
67
|
+
lease?: RuntimeLease;
|
|
68
|
+
deadLetterReason?: string;
|
|
69
|
+
createdAt: string;
|
|
70
|
+
updatedAt: string;
|
|
71
|
+
};
|
|
72
|
+
type AgentRunRecord = {
|
|
73
|
+
id: AgentRunId;
|
|
74
|
+
agentId: AgentId;
|
|
75
|
+
messageId: RuntimeMessageId;
|
|
76
|
+
state: AgentRunState;
|
|
77
|
+
attempt: number;
|
|
78
|
+
leaseId?: LeaseId;
|
|
79
|
+
outcome?: Outcome;
|
|
80
|
+
suspensionReason?: string;
|
|
81
|
+
inputRequest?: AgentInputRequest;
|
|
82
|
+
executionState?: AgentRunExecutionState;
|
|
83
|
+
metadata?: AgentRunMetadata;
|
|
84
|
+
createdAt: string;
|
|
85
|
+
updatedAt: string;
|
|
86
|
+
};
|
|
87
|
+
type RuntimeEventKind = "agent_created" | "agent_paused" | "agent_resumed" | "message_enqueued" | "run_enqueued" | "run_leased" | "lease_expired" | "lease_recovered" | "run_suspended" | "run_retry_scheduled" | "run_completed" | "run_aborted" | "message_acknowledged" | "message_dead_lettered" | "tool_call_created" | "tool_call_started" | "tool_call_failed" | "tool_call_completed" | "tool_call_indeterminate";
|
|
88
|
+
type RuntimeEvent = {
|
|
89
|
+
id: RuntimeEventId;
|
|
90
|
+
sequence: number;
|
|
91
|
+
kind: RuntimeEventKind;
|
|
92
|
+
agentId?: AgentId;
|
|
93
|
+
messageId?: RuntimeMessageId;
|
|
94
|
+
runId?: AgentRunId;
|
|
95
|
+
toolCallId?: RuntimeToolCallId;
|
|
96
|
+
payload?: unknown;
|
|
97
|
+
createdAt: string;
|
|
98
|
+
};
|
|
99
|
+
type RuntimeEventCursor = {
|
|
100
|
+
after?: RuntimeEventId;
|
|
101
|
+
limit?: number;
|
|
102
|
+
};
|
|
103
|
+
type RuntimeEventCheckpoint = {
|
|
104
|
+
consumerId: string;
|
|
105
|
+
sequence: number;
|
|
106
|
+
eventId?: RuntimeEventId;
|
|
107
|
+
updatedAt: string;
|
|
108
|
+
};
|
|
109
|
+
type RuntimeToolCall = {
|
|
110
|
+
id: RuntimeToolCallId;
|
|
111
|
+
agentId: AgentId;
|
|
112
|
+
runId: AgentRunId;
|
|
113
|
+
name: string;
|
|
114
|
+
args: unknown;
|
|
115
|
+
state: RuntimeToolCallState;
|
|
116
|
+
result?: ToolResult;
|
|
117
|
+
indeterminateReason?: string;
|
|
118
|
+
createdAt: string;
|
|
119
|
+
updatedAt: string;
|
|
120
|
+
};
|
|
121
|
+
|
|
22
122
|
type BeforePhaseHook = (phaseId: string, input: PhaseContext) => Promise<BeforePhaseHookResult>;
|
|
23
123
|
type AfterPhaseHook = (phaseId: string, output: PhaseOutput) => Promise<AfterPhaseHookResult>;
|
|
24
124
|
type BeforePromptHook = (phaseId: string, input: PhaseContext) => Promise<PhaseContext>;
|
|
@@ -48,10 +148,21 @@ type SessionState = {
|
|
|
48
148
|
currentPhase: string;
|
|
49
149
|
attempt: number;
|
|
50
150
|
metrics: LoopMetrics;
|
|
51
|
-
status: "idle" | "running" | "completed" | "aborted" | "failed";
|
|
151
|
+
status: "idle" | "running" | "suspended" | "completed" | "aborted" | "failed";
|
|
152
|
+
continuation?: SessionContinuationState;
|
|
153
|
+
};
|
|
154
|
+
type SessionContinuationState = {
|
|
155
|
+
isContinuing: boolean;
|
|
156
|
+
previousPayload?: unknown;
|
|
157
|
+
previousResults: Array<{
|
|
158
|
+
name: string;
|
|
159
|
+
output?: unknown;
|
|
160
|
+
}>;
|
|
161
|
+
pendingInstruction?: string;
|
|
162
|
+
previousPhaseMessageId?: string;
|
|
52
163
|
};
|
|
53
164
|
type AgentConfig = {
|
|
54
|
-
model:
|
|
165
|
+
model: ModelRef;
|
|
55
166
|
stream: StreamFn;
|
|
56
167
|
context: AgentContext;
|
|
57
168
|
sessionId?: string;
|
|
@@ -67,12 +178,12 @@ type AgentConfig = {
|
|
|
67
178
|
beforePrompt?: BeforePromptHook;
|
|
68
179
|
onModelTranscript?: (transcript: ModelTranscript, meta: {
|
|
69
180
|
phase: string;
|
|
70
|
-
model:
|
|
181
|
+
model: ModelRef;
|
|
71
182
|
}) => Promise<void>;
|
|
72
183
|
onMessage?: (message: AgentMessage) => Promise<void>;
|
|
73
184
|
onOutcome?: (outcome: Outcome) => Promise<void>;
|
|
74
185
|
/** Internal: await next user messages before retrying the same phase. */
|
|
75
|
-
waitForInput?: () => Promise<AgentMessage[]>;
|
|
186
|
+
waitForInput?: (state?: SessionState, inputRequest?: AgentInputRequest) => Promise<AgentMessage[]>;
|
|
76
187
|
};
|
|
77
188
|
type ToolRunnerInput = {
|
|
78
189
|
config: AgentConfig;
|
|
@@ -182,6 +293,17 @@ interface PhaseState {
|
|
|
182
293
|
iterations: number;
|
|
183
294
|
payload?: unknown;
|
|
184
295
|
}
|
|
296
|
+
type PhaseInvocation = {
|
|
297
|
+
mode: "serial";
|
|
298
|
+
instanceId: string;
|
|
299
|
+
} | {
|
|
300
|
+
mode: "parallel";
|
|
301
|
+
instanceId: string;
|
|
302
|
+
groupId: string;
|
|
303
|
+
index: number;
|
|
304
|
+
count: number;
|
|
305
|
+
sourcePhaseId: string;
|
|
306
|
+
};
|
|
185
307
|
/** Everything a phase needs to execute */
|
|
186
308
|
interface PhaseContext {
|
|
187
309
|
systemPrompt: string;
|
|
@@ -192,6 +314,8 @@ interface PhaseContext {
|
|
|
192
314
|
skills: Skill$1[];
|
|
193
315
|
/** Phase machine state */
|
|
194
316
|
state: PhaseState;
|
|
317
|
+
/** Identity and dispatch metadata for this phase execution */
|
|
318
|
+
readonly invocation: PhaseInvocation;
|
|
195
319
|
/** Additional guideline bullets appended to the system prompt */
|
|
196
320
|
promptGuidelines?: string[];
|
|
197
321
|
/** Text to append after the system prompt */
|
|
@@ -224,10 +348,10 @@ interface Phase {
|
|
|
224
348
|
/** PHASE.md body content */
|
|
225
349
|
content: string;
|
|
226
350
|
/** Model override for this phase (resolved from frontmatter) */
|
|
227
|
-
model?:
|
|
351
|
+
model?: ModelRef;
|
|
228
352
|
/** ExtensionAPI factory function (default export pattern) */
|
|
229
353
|
factory?: (api: ExtensionAPI) => Promise<void>;
|
|
230
|
-
/**
|
|
354
|
+
/** Direct run function */
|
|
231
355
|
run?: (context: PhaseContext, execution: PhaseExecution) => Promise<PhaseOutput | void>;
|
|
232
356
|
}
|
|
233
357
|
/**
|
|
@@ -925,95 +1049,6 @@ interface ExtensionAPI {
|
|
|
925
1049
|
*/
|
|
926
1050
|
type ExtensionFactory = (api: ExtensionAPI) => void | Promise<void>;
|
|
927
1051
|
|
|
928
|
-
declare const opaqueIdBrand: unique symbol;
|
|
929
|
-
type OpaqueId<Kind extends string> = string & {
|
|
930
|
-
readonly [opaqueIdBrand]: Kind;
|
|
931
|
-
};
|
|
932
|
-
type AgentId = OpaqueId<"AgentId">;
|
|
933
|
-
type AgentRunId = OpaqueId<"AgentRunId">;
|
|
934
|
-
type RuntimeMessageId = OpaqueId<"RuntimeMessageId">;
|
|
935
|
-
type RuntimeEventId = OpaqueId<"RuntimeEventId">;
|
|
936
|
-
type LeaseId = OpaqueId<"LeaseId">;
|
|
937
|
-
type RuntimeToolCallId = OpaqueId<"RuntimeToolCallId">;
|
|
938
|
-
type AgentLifecycleState = "active" | "paused";
|
|
939
|
-
type RuntimeMessageState = "queued" | "leased" | "acknowledged" | "dead_lettered";
|
|
940
|
-
type AgentRunState = "queued" | "running" | "suspended" | "completed" | "failed" | "cancelled";
|
|
941
|
-
type RuntimeToolCallState = "queued" | "running" | "completed" | "failed" | "indeterminate";
|
|
942
|
-
type AgentRecord = {
|
|
943
|
-
id: AgentId;
|
|
944
|
-
sessionId: string;
|
|
945
|
-
factoryId?: string;
|
|
946
|
-
state: AgentLifecycleState;
|
|
947
|
-
createdAt: string;
|
|
948
|
-
updatedAt: string;
|
|
949
|
-
};
|
|
950
|
-
type RuntimeLease = {
|
|
951
|
-
id: LeaseId;
|
|
952
|
-
runId: AgentRunId;
|
|
953
|
-
workerId: string;
|
|
954
|
-
leasedAt: string;
|
|
955
|
-
expiresAt: string;
|
|
956
|
-
};
|
|
957
|
-
type RuntimeMessage = {
|
|
958
|
-
id: RuntimeMessageId;
|
|
959
|
-
agentId: AgentId;
|
|
960
|
-
kind: "agent_input";
|
|
961
|
-
input: AgentMessage;
|
|
962
|
-
state: RuntimeMessageState;
|
|
963
|
-
attempts: number;
|
|
964
|
-
runId?: AgentRunId;
|
|
965
|
-
lease?: RuntimeLease;
|
|
966
|
-
deadLetterReason?: string;
|
|
967
|
-
createdAt: string;
|
|
968
|
-
updatedAt: string;
|
|
969
|
-
};
|
|
970
|
-
type AgentRunRecord = {
|
|
971
|
-
id: AgentRunId;
|
|
972
|
-
agentId: AgentId;
|
|
973
|
-
messageId: RuntimeMessageId;
|
|
974
|
-
state: AgentRunState;
|
|
975
|
-
attempt: number;
|
|
976
|
-
leaseId?: LeaseId;
|
|
977
|
-
outcome?: Outcome;
|
|
978
|
-
suspensionReason?: string;
|
|
979
|
-
createdAt: string;
|
|
980
|
-
updatedAt: string;
|
|
981
|
-
};
|
|
982
|
-
type RuntimeEventKind = "agent_created" | "agent_paused" | "agent_resumed" | "agent_recovered" | "agent_recovery_failed" | "factory_missing" | "message_enqueued" | "run_enqueued" | "run_leased" | "lease_expired" | "lease_recovered" | "run_suspended" | "run_retry_scheduled" | "run_completed" | "run_aborted" | "message_acknowledged" | "message_dead_lettered" | "tool_call_created" | "tool_call_started" | "tool_call_failed" | "tool_call_completed" | "tool_call_indeterminate";
|
|
983
|
-
type RuntimeEvent = {
|
|
984
|
-
id: RuntimeEventId;
|
|
985
|
-
sequence: number;
|
|
986
|
-
kind: RuntimeEventKind;
|
|
987
|
-
agentId?: AgentId;
|
|
988
|
-
messageId?: RuntimeMessageId;
|
|
989
|
-
runId?: AgentRunId;
|
|
990
|
-
toolCallId?: RuntimeToolCallId;
|
|
991
|
-
payload?: unknown;
|
|
992
|
-
createdAt: string;
|
|
993
|
-
};
|
|
994
|
-
type RuntimeEventCursor = {
|
|
995
|
-
after?: RuntimeEventId;
|
|
996
|
-
limit?: number;
|
|
997
|
-
};
|
|
998
|
-
type RuntimeEventCheckpoint = {
|
|
999
|
-
consumerId: string;
|
|
1000
|
-
sequence: number;
|
|
1001
|
-
eventId?: RuntimeEventId;
|
|
1002
|
-
updatedAt: string;
|
|
1003
|
-
};
|
|
1004
|
-
type RuntimeToolCall = {
|
|
1005
|
-
id: RuntimeToolCallId;
|
|
1006
|
-
agentId: AgentId;
|
|
1007
|
-
runId: AgentRunId;
|
|
1008
|
-
name: string;
|
|
1009
|
-
args: unknown;
|
|
1010
|
-
state: RuntimeToolCallState;
|
|
1011
|
-
result?: ToolResult;
|
|
1012
|
-
indeterminateReason?: string;
|
|
1013
|
-
createdAt: string;
|
|
1014
|
-
updatedAt: string;
|
|
1015
|
-
};
|
|
1016
|
-
|
|
1017
1052
|
/**
|
|
1018
1053
|
* Load all phases from the target directory.
|
|
1019
1054
|
*
|
|
@@ -1026,21 +1061,22 @@ type RuntimeToolCall = {
|
|
|
1026
1061
|
*/
|
|
1027
1062
|
declare function loadPhases(targetPath: string): Promise<PhaseRegistry>;
|
|
1028
1063
|
|
|
1029
|
-
type AgentExecutionOptions =
|
|
1064
|
+
type AgentExecutionOptions = StreamAgentOptions & {
|
|
1030
1065
|
sessionId?: string;
|
|
1031
1066
|
agentId?: AgentId;
|
|
1067
|
+
sessionState?: SessionState;
|
|
1032
1068
|
onInput?: (message: AgentMessage) => Promise<void>;
|
|
1033
1069
|
runtime?: AgentRuntimePort;
|
|
1034
1070
|
};
|
|
1035
1071
|
type RunOptions = Partial<AgentExecutionOptions>;
|
|
1036
1072
|
type RuntimeRunHooks = {
|
|
1037
|
-
onSuspend?: (reason?: string) => Promise<void> | void;
|
|
1073
|
+
onSuspend?: (reason?: string, state?: SessionState, inputRequest?: AgentInputRequest) => Promise<void> | void;
|
|
1038
1074
|
};
|
|
1039
1075
|
type AgentStatus = {
|
|
1040
1076
|
agentId?: AgentId;
|
|
1041
1077
|
sessionId?: string;
|
|
1042
1078
|
context: AgentContext;
|
|
1043
|
-
model:
|
|
1079
|
+
model: ModelRef;
|
|
1044
1080
|
tools: Tool[];
|
|
1045
1081
|
initialized: boolean;
|
|
1046
1082
|
running: boolean;
|
|
@@ -1071,7 +1107,7 @@ declare class AgentExecution {
|
|
|
1071
1107
|
runWithUserInput(input: string, options?: RunOptions): Promise<RunResult>;
|
|
1072
1108
|
runWithMessage(message: AgentMessage, options?: RunOptions, internalHooks?: RuntimeRunHooks): Promise<RunResult>;
|
|
1073
1109
|
/** Internal Runtime seam: executes one leased Agent Input. */
|
|
1074
|
-
executeAgentInput(input: AgentMessage, runId: AgentRunId, control: AgentRunControl): Promise<Outcome>;
|
|
1110
|
+
executeAgentInput(input: AgentMessage, runId: AgentRunId, control: AgentRunControl, executionState?: AgentRunExecutionState): Promise<Outcome>;
|
|
1075
1111
|
resetInitialization(): void;
|
|
1076
1112
|
getContext(): AgentContext;
|
|
1077
1113
|
setContext(context: AgentContext): void;
|
|
@@ -1090,13 +1126,13 @@ declare class AgentExecution {
|
|
|
1090
1126
|
getAgentId(): AgentId | undefined;
|
|
1091
1127
|
/** Internal Runtime hook for associating Tool Calls with the leased Run. */
|
|
1092
1128
|
getRuntimeRunId(): AgentRunId | undefined;
|
|
1093
|
-
setModel(model:
|
|
1129
|
+
setModel(model: ModelRef): void;
|
|
1094
1130
|
setTools(tools: Tool[]): void;
|
|
1095
1131
|
setSkills(skills: Skill$1[]): void;
|
|
1096
1132
|
setPhases(phases: PhaseRegistry): void;
|
|
1097
1133
|
setCwd(cwd: string): void;
|
|
1098
1134
|
setStream(stream: StreamFn): void;
|
|
1099
|
-
getModel():
|
|
1135
|
+
getModel(): ModelRef;
|
|
1100
1136
|
getTools(): Tool[];
|
|
1101
1137
|
getSkills(): Skill$1[];
|
|
1102
1138
|
getPhases(): PhaseRegistry | undefined;
|
|
@@ -1135,6 +1171,7 @@ declare class AgentExecution {
|
|
|
1135
1171
|
private loadExtensions;
|
|
1136
1172
|
run(config?: RunOptions, internalHooks?: RuntimeRunHooks): Promise<RunResult>;
|
|
1137
1173
|
abort(reason?: string): void;
|
|
1174
|
+
isSuspended(): boolean;
|
|
1138
1175
|
private abortLocal;
|
|
1139
1176
|
/** Internal Runtime hook; public callers abort a precise AgentRun. */
|
|
1140
1177
|
abortFromRuntime(reason?: string): void;
|
|
@@ -1208,7 +1245,7 @@ type SessionManager = {
|
|
|
1208
1245
|
appendOutcome(outcome: Outcome): Promise<string>;
|
|
1209
1246
|
appendModelTranscript(transcript: ModelTranscript, meta?: {
|
|
1210
1247
|
phase?: string;
|
|
1211
|
-
model?:
|
|
1248
|
+
model?: ModelRef;
|
|
1212
1249
|
}): Promise<string>;
|
|
1213
1250
|
buildAgentContext<TTool = unknown>(input?: BuildAgentContextInput<TTool>): Promise<SessionAgentContext<TTool>>;
|
|
1214
1251
|
};
|
|
@@ -1219,12 +1256,24 @@ type SessionManagerProvider = {
|
|
|
1219
1256
|
|
|
1220
1257
|
type CreateAgentInput = {
|
|
1221
1258
|
sessionId: string;
|
|
1222
|
-
factoryId?: string;
|
|
1223
1259
|
};
|
|
1224
1260
|
type EnqueueAgentInput = {
|
|
1225
1261
|
agentId: AgentId;
|
|
1226
1262
|
input: AgentMessage;
|
|
1227
1263
|
};
|
|
1264
|
+
type AcknowledgeEventAndEnqueueAgentInput = EnqueueAgentInput & {
|
|
1265
|
+
consumerId: string;
|
|
1266
|
+
eventId: RuntimeEventId;
|
|
1267
|
+
};
|
|
1268
|
+
type EnqueuedAgentInput = {
|
|
1269
|
+
message: RuntimeMessage;
|
|
1270
|
+
run: AgentRunRecord;
|
|
1271
|
+
resumed: boolean;
|
|
1272
|
+
};
|
|
1273
|
+
type AcknowledgeEventAndEnqueueAgentInputResult = {
|
|
1274
|
+
checkpoint: RuntimeEventCheckpoint;
|
|
1275
|
+
enqueued?: EnqueuedAgentInput;
|
|
1276
|
+
};
|
|
1228
1277
|
type ListRunsInput = {
|
|
1229
1278
|
agentId?: AgentId;
|
|
1230
1279
|
states?: AgentRunRecord["state"][];
|
|
@@ -1254,6 +1303,8 @@ type RenewLeaseInput = {
|
|
|
1254
1303
|
type SuspendRunInput = {
|
|
1255
1304
|
runId: AgentRunId;
|
|
1256
1305
|
reason?: string;
|
|
1306
|
+
inputRequest?: AgentInputRequest;
|
|
1307
|
+
executionState?: AgentRunExecutionState;
|
|
1257
1308
|
};
|
|
1258
1309
|
type CompleteRunInput = {
|
|
1259
1310
|
runId: AgentRunId;
|
|
@@ -1293,14 +1344,11 @@ interface RuntimeStateStore {
|
|
|
1293
1344
|
getAgent(agentId: AgentId): Promise<AgentRecord | undefined>;
|
|
1294
1345
|
listAgents(): Promise<AgentRecord[]>;
|
|
1295
1346
|
setAgentState(agentId: AgentId, state: AgentLifecycleState): Promise<AgentRecord>;
|
|
1296
|
-
enqueueAgentInput(input: EnqueueAgentInput): Promise<
|
|
1297
|
-
message: RuntimeMessage;
|
|
1298
|
-
run: AgentRunRecord;
|
|
1299
|
-
resumed: boolean;
|
|
1300
|
-
}>;
|
|
1347
|
+
enqueueAgentInput(input: EnqueueAgentInput): Promise<EnqueuedAgentInput>;
|
|
1301
1348
|
getMessage(messageId: RuntimeMessageId): Promise<RuntimeMessage | undefined>;
|
|
1302
1349
|
getRun(runId: AgentRunId): Promise<AgentRunRecord | undefined>;
|
|
1303
1350
|
listRuns(input?: ListRunsInput): Promise<AgentRunRecord[]>;
|
|
1351
|
+
listActiveRuns(): Promise<AgentRunRecord[]>;
|
|
1304
1352
|
leaseRun(input: LeaseRunInput): Promise<LeasedRun>;
|
|
1305
1353
|
renewLease(input: RenewLeaseInput): Promise<RuntimeLease>;
|
|
1306
1354
|
suspendRun(input: SuspendRunInput): Promise<AgentRunRecord>;
|
|
@@ -1319,6 +1367,7 @@ interface RuntimeStateStore {
|
|
|
1319
1367
|
recordEvent(input: RecordRuntimeEventInput): Promise<RuntimeEvent>;
|
|
1320
1368
|
getEventCheckpoint(consumerId: string): Promise<RuntimeEventCheckpoint>;
|
|
1321
1369
|
acknowledgeEvent(consumerId: string, eventId: RuntimeEventId): Promise<RuntimeEventCheckpoint>;
|
|
1370
|
+
acknowledgeEventAndEnqueueAgentInput(input: AcknowledgeEventAndEnqueueAgentInput): Promise<AcknowledgeEventAndEnqueueAgentInputResult>;
|
|
1322
1371
|
}
|
|
1323
1372
|
|
|
1324
1373
|
type ToolRuntimePolicy = {
|
|
@@ -1328,16 +1377,9 @@ type ToolRuntimePolicy = {
|
|
|
1328
1377
|
perToolMaxConcurrent?: Readonly<Record<string, number>>;
|
|
1329
1378
|
};
|
|
1330
1379
|
|
|
1331
|
-
type AgentFactoryIdentity = {
|
|
1332
|
-
agentId: AgentId;
|
|
1333
|
-
sessionId: string;
|
|
1334
|
-
factoryId: string;
|
|
1335
|
-
};
|
|
1336
|
-
type AgentFactory = (identity: AgentFactoryIdentity) => Promise<AgentOptions | undefined> | AgentOptions | undefined;
|
|
1337
1380
|
type AgentRuntimeOptions = {
|
|
1338
1381
|
stateStore: RuntimeStateStore;
|
|
1339
1382
|
sessionProvider?: SessionManagerProvider;
|
|
1340
|
-
factories?: ReadonlyMap<string, AgentFactory> | Readonly<Record<string, AgentFactory>>;
|
|
1341
1383
|
toolPolicy?: ToolRuntimePolicy;
|
|
1342
1384
|
maxConcurrentRuns?: number;
|
|
1343
1385
|
maxInfrastructureAttempts?: number;
|
|
@@ -1347,7 +1389,16 @@ type AgentRuntimeOptions = {
|
|
|
1347
1389
|
type RuntimeRunHandle = {
|
|
1348
1390
|
notify(run: AgentRunRecord): void;
|
|
1349
1391
|
};
|
|
1350
|
-
type
|
|
1392
|
+
type RuntimeEventDisposition = {
|
|
1393
|
+
type: "enqueue";
|
|
1394
|
+
agentId: AgentId;
|
|
1395
|
+
input: AgentMessage;
|
|
1396
|
+
};
|
|
1397
|
+
type RuntimeEventListener = (event: RuntimeEvent) => RuntimeEventDisposition | void | Promise<RuntimeEventDisposition | void>;
|
|
1398
|
+
type RuntimeEventConsumer = {
|
|
1399
|
+
caughtUp: Promise<void>;
|
|
1400
|
+
stop(): void;
|
|
1401
|
+
};
|
|
1351
1402
|
declare class AgentRuntime {
|
|
1352
1403
|
private readonly stateStore;
|
|
1353
1404
|
private readonly sessionProvider?;
|
|
@@ -1356,8 +1407,8 @@ declare class AgentRuntime {
|
|
|
1356
1407
|
private readonly leaseDurationMs;
|
|
1357
1408
|
private readonly leaseRenewalIntervalMs;
|
|
1358
1409
|
private readonly toolRuntime;
|
|
1359
|
-
private readonly factories;
|
|
1360
1410
|
private readonly bindings;
|
|
1411
|
+
private readonly agents;
|
|
1361
1412
|
private readonly runHandles;
|
|
1362
1413
|
private readonly runWaiters;
|
|
1363
1414
|
private readonly pendingRuns;
|
|
@@ -1369,10 +1420,11 @@ declare class AgentRuntime {
|
|
|
1369
1420
|
private runningRuns;
|
|
1370
1421
|
private pumping;
|
|
1371
1422
|
private nextWorkerId;
|
|
1423
|
+
private leaseRecoveryTimer;
|
|
1372
1424
|
private stopped;
|
|
1373
1425
|
private constructor();
|
|
1374
1426
|
static start(options: AgentRuntimeOptions): Promise<AgentRuntime>;
|
|
1375
|
-
createAgent(options:
|
|
1427
|
+
createAgent(options: AgentOptions): Promise<Agent>;
|
|
1376
1428
|
reconstructAgent(agentId: AgentId, options: AgentOptions): Promise<Agent>;
|
|
1377
1429
|
stop(): Promise<void>;
|
|
1378
1430
|
private bindAgent;
|
|
@@ -1381,10 +1433,19 @@ declare class AgentRuntime {
|
|
|
1381
1433
|
private scheduleRun;
|
|
1382
1434
|
pauseAgent(agentId: AgentId): Promise<void>;
|
|
1383
1435
|
resumeAgent(agentId: AgentId): Promise<void>;
|
|
1436
|
+
getRun(runId: AgentRunId): Promise<AgentRunRecord | undefined>;
|
|
1437
|
+
listActiveRuns(): Promise<AgentRunRecord[]>;
|
|
1438
|
+
listRuns(input?: ListRunsInput): Promise<AgentRunRecord[]>;
|
|
1439
|
+
getAgent(agentId: AgentId): Agent | undefined;
|
|
1440
|
+
getMessage(messageId: RuntimeMessageId): Promise<RuntimeMessage | undefined>;
|
|
1441
|
+
getToolCall(toolCallId: RuntimeToolCallId): Promise<RuntimeToolCall | undefined>;
|
|
1384
1442
|
abortRun(runId: AgentRunId, reason?: string): Promise<void>;
|
|
1385
|
-
consumeEvents(consumerId: string, listener: RuntimeEventListener):
|
|
1443
|
+
consumeEvents(consumerId: string, listener: RuntimeEventListener): RuntimeEventConsumer;
|
|
1444
|
+
private registerEventConsumer;
|
|
1386
1445
|
listEvents(cursor?: RuntimeEventCursor): Promise<RuntimeEvent[]>;
|
|
1387
1446
|
private recover;
|
|
1447
|
+
private startLeaseRecovery;
|
|
1448
|
+
private recoverExpiredLeases;
|
|
1388
1449
|
private scheduleQueuedRuns;
|
|
1389
1450
|
private attachAgent;
|
|
1390
1451
|
private submitAgentInput;
|
|
@@ -1404,7 +1465,7 @@ type AgentRunHost = {
|
|
|
1404
1465
|
getRun(runId: AgentRunId): Promise<AgentRunRecord | undefined>;
|
|
1405
1466
|
waitForRunChange(runId: AgentRunId, state: AgentRunState, updatedAt: string): Promise<void>;
|
|
1406
1467
|
abortRun(runId: AgentRunId, reason: string): Promise<void>;
|
|
1407
|
-
consumeEvents(consumerId: string, listener: RuntimeEventListener):
|
|
1468
|
+
consumeEvents(consumerId: string, listener: RuntimeEventListener): RuntimeEventConsumer;
|
|
1408
1469
|
};
|
|
1409
1470
|
declare const CREATE_AGENT_RUN: unique symbol;
|
|
1410
1471
|
declare class AgentRun implements RuntimeRunHandle {
|
|
@@ -1418,18 +1479,17 @@ declare class AgentRun implements RuntimeRunHandle {
|
|
|
1418
1479
|
get messageId(): string;
|
|
1419
1480
|
get status(): AgentRunState;
|
|
1420
1481
|
get state(): AgentRunState;
|
|
1482
|
+
get inputRequest(): AgentInputRequest | undefined;
|
|
1421
1483
|
getStatus(): Promise<AgentRunState>;
|
|
1422
1484
|
subscribe(listener: AgentRunListener): () => void;
|
|
1423
|
-
consumeRuntimeEvents(consumerId: string, listener: RuntimeEventListener):
|
|
1485
|
+
consumeRuntimeEvents(consumerId: string, listener: RuntimeEventListener): RuntimeEventConsumer;
|
|
1424
1486
|
result(): Promise<Outcome>;
|
|
1425
1487
|
abort(reason?: string): Promise<void>;
|
|
1426
1488
|
notify(run: AgentRunRecord): void;
|
|
1427
1489
|
}
|
|
1428
1490
|
|
|
1429
|
-
type
|
|
1491
|
+
type AgentCommonOptions = {
|
|
1430
1492
|
context: AgentContext;
|
|
1431
|
-
model: LlmModelRef;
|
|
1432
|
-
stream: StreamFn;
|
|
1433
1493
|
cwd?: string;
|
|
1434
1494
|
extensions?: LoadedExtension[];
|
|
1435
1495
|
maxAttempts?: number;
|
|
@@ -1439,15 +1499,23 @@ type AgentOptions = {
|
|
|
1439
1499
|
onOutcome?: (outcome: Outcome) => Promise<void>;
|
|
1440
1500
|
onModelTranscript?: (transcript: ModelTranscript, meta: {
|
|
1441
1501
|
phase: string;
|
|
1442
|
-
model:
|
|
1502
|
+
model: ModelRef;
|
|
1443
1503
|
}) => Promise<void>;
|
|
1444
1504
|
};
|
|
1445
|
-
type
|
|
1446
|
-
|
|
1447
|
-
|
|
1505
|
+
type AgentModelOptions = {
|
|
1506
|
+
model: ModelConfig;
|
|
1507
|
+
stream?: never;
|
|
1508
|
+
} | {
|
|
1509
|
+
model: ModelRef;
|
|
1510
|
+
stream: StreamFn;
|
|
1511
|
+
};
|
|
1512
|
+
type AgentOptions = AgentCommonOptions & AgentModelOptions;
|
|
1513
|
+
type StreamAgentOptions = AgentCommonOptions & {
|
|
1514
|
+
model: ModelRef;
|
|
1515
|
+
stream: StreamFn;
|
|
1448
1516
|
};
|
|
1449
1517
|
type AgentRunControl = {
|
|
1450
|
-
suspend(reason?: string): Promise<void>;
|
|
1518
|
+
suspend(reason?: string, state?: AgentRunExecutionState, inputRequest?: AgentInputRequest): Promise<void>;
|
|
1451
1519
|
};
|
|
1452
1520
|
declare const ATTACH_AGENT: unique symbol;
|
|
1453
1521
|
declare class Agent {
|
|
@@ -1465,12 +1533,12 @@ declare class Agent {
|
|
|
1465
1533
|
send(input: string | AgentMessage): Promise<AgentRun>;
|
|
1466
1534
|
}
|
|
1467
1535
|
|
|
1468
|
-
declare class
|
|
1536
|
+
declare class InMemorySessionStore implements SessionManagerProvider {
|
|
1469
1537
|
private readonly sessions;
|
|
1470
1538
|
create(input: CreateSessionManagerInput): Promise<SessionManager>;
|
|
1471
1539
|
open(sessionId: string): Promise<SessionManager | undefined>;
|
|
1472
1540
|
}
|
|
1473
|
-
declare class
|
|
1541
|
+
declare class JsonlSessionStore implements SessionManagerProvider {
|
|
1474
1542
|
private readonly sessionsDir;
|
|
1475
1543
|
constructor(sessionsDir: string);
|
|
1476
1544
|
create(input: CreateSessionManagerInput): Promise<SessionManager>;
|
|
@@ -1497,14 +1565,12 @@ declare class InMemoryRuntimeStateStore implements RuntimeStateStore {
|
|
|
1497
1565
|
getAgent(agentId: AgentId): Promise<AgentRecord | undefined>;
|
|
1498
1566
|
listAgents(): Promise<AgentRecord[]>;
|
|
1499
1567
|
setAgentState(agentId: AgentId, state: AgentRecord["state"]): Promise<AgentRecord>;
|
|
1500
|
-
enqueueAgentInput(input: EnqueueAgentInput): Promise<
|
|
1501
|
-
|
|
1502
|
-
run: AgentRunRecord;
|
|
1503
|
-
resumed: boolean;
|
|
1504
|
-
}>;
|
|
1568
|
+
enqueueAgentInput(input: EnqueueAgentInput): Promise<EnqueuedAgentInput>;
|
|
1569
|
+
private enqueueAgentInputState;
|
|
1505
1570
|
getMessage(messageId: RuntimeMessageId): Promise<RuntimeMessage | undefined>;
|
|
1506
1571
|
getRun(runId: AgentRunId): Promise<AgentRunRecord | undefined>;
|
|
1507
1572
|
listRuns(input?: ListRunsInput): Promise<AgentRunRecord[]>;
|
|
1573
|
+
listActiveRuns(): Promise<AgentRunRecord[]>;
|
|
1508
1574
|
leaseRun(input: LeaseRunInput): Promise<LeasedRun>;
|
|
1509
1575
|
renewLease(input: RenewLeaseInput): Promise<RuntimeLease>;
|
|
1510
1576
|
suspendRun(input: SuspendRunInput): Promise<AgentRunRecord>;
|
|
@@ -1523,6 +1589,7 @@ declare class InMemoryRuntimeStateStore implements RuntimeStateStore {
|
|
|
1523
1589
|
recordEvent(input: RecordRuntimeEventInput | RuntimeEventKind, related?: Pick<RuntimeEvent, "agentId" | "messageId" | "runId" | "toolCallId">, payload?: unknown): Promise<RuntimeEvent>;
|
|
1524
1590
|
getEventCheckpoint(consumerId: string): Promise<RuntimeEventCheckpoint>;
|
|
1525
1591
|
acknowledgeEvent(consumerId: string, eventId: RuntimeEventId): Promise<RuntimeEventCheckpoint>;
|
|
1592
|
+
acknowledgeEventAndEnqueueAgentInput(input: AcknowledgeEventAndEnqueueAgentInput): Promise<AcknowledgeEventAndEnqueueAgentInputResult>;
|
|
1526
1593
|
private requireAgent;
|
|
1527
1594
|
private requireMessage;
|
|
1528
1595
|
private requireRun;
|
|
@@ -1538,14 +1605,12 @@ declare class SqliteRuntimeStateStore implements RuntimeStateStore {
|
|
|
1538
1605
|
getAgent(agentId: AgentId): Promise<AgentRecord | undefined>;
|
|
1539
1606
|
listAgents(): Promise<AgentRecord[]>;
|
|
1540
1607
|
setAgentState(agentId: AgentId, state: AgentRecord["state"]): Promise<AgentRecord>;
|
|
1541
|
-
enqueueAgentInput(input: EnqueueAgentInput): Promise<
|
|
1542
|
-
|
|
1543
|
-
run: AgentRunRecord;
|
|
1544
|
-
resumed: boolean;
|
|
1545
|
-
}>;
|
|
1608
|
+
enqueueAgentInput(input: EnqueueAgentInput): Promise<EnqueuedAgentInput>;
|
|
1609
|
+
private enqueueAgentInputState;
|
|
1546
1610
|
getMessage(messageId: RuntimeMessageId): Promise<RuntimeMessage | undefined>;
|
|
1547
1611
|
getRun(runId: AgentRunId): Promise<AgentRunRecord | undefined>;
|
|
1548
1612
|
listRuns(input?: ListRunsInput): Promise<AgentRunRecord[]>;
|
|
1613
|
+
listActiveRuns(): Promise<AgentRunRecord[]>;
|
|
1549
1614
|
leaseRun(input: LeaseRunInput): Promise<LeasedRun>;
|
|
1550
1615
|
renewLease(input: RenewLeaseInput): Promise<RuntimeLease>;
|
|
1551
1616
|
suspendRun(input: SuspendRunInput): Promise<AgentRunRecord>;
|
|
@@ -1564,6 +1629,8 @@ declare class SqliteRuntimeStateStore implements RuntimeStateStore {
|
|
|
1564
1629
|
recordEvent(input: RecordRuntimeEventInput | RuntimeEventKind, related?: Pick<RuntimeEvent, "agentId" | "messageId" | "runId" | "toolCallId">, payload?: unknown): Promise<RuntimeEvent>;
|
|
1565
1630
|
getEventCheckpoint(consumerId: string): Promise<RuntimeEventCheckpoint>;
|
|
1566
1631
|
acknowledgeEvent(consumerId: string, eventId: RuntimeEventId): Promise<RuntimeEventCheckpoint>;
|
|
1632
|
+
acknowledgeEventAndEnqueueAgentInput(input: AcknowledgeEventAndEnqueueAgentInput): Promise<AcknowledgeEventAndEnqueueAgentInputResult>;
|
|
1633
|
+
private acknowledgeEventState;
|
|
1567
1634
|
private insertMessage;
|
|
1568
1635
|
private agentFromRow;
|
|
1569
1636
|
private messageFromRow;
|
|
@@ -1581,4 +1648,4 @@ declare class SqliteRuntimeStateStore implements RuntimeStateStore {
|
|
|
1581
1648
|
private recordEventInternal;
|
|
1582
1649
|
}
|
|
1583
1650
|
|
|
1584
|
-
export { type AfterToolCall, Agent, type AgentContext, type
|
|
1651
|
+
export { type AfterToolCall, Agent, type AgentContext, type AgentId, type AgentInputRequest, type AgentOptions, AgentRun, type AgentRunExecutionState, type AgentRunId, type AgentRunListener, type AgentRunMetadata, type AgentRunRecord, type AgentRunState, AgentRuntime, type AgentRuntimeOptions, type BeforeToolCall, type CoreToolContext, type ExecutionTurn, type ExtensionAPI, type ExtensionFactory, type HookEvent, type HookEventType, type HookHandler, InMemoryRuntimeStateStore, InMemorySessionStore, JsonlSessionStore, type LoadExtensionsResult, type LoadedExtension, type LoopMetrics, type ModelTranscript, type Phase, type PhaseContext, type PhaseExecution, type PhaseInvocation, type PhaseOutput, type PhaseRegistration, type PhaseRegistry, type PhaseState, type RuntimeEvent, type RuntimeEventConsumer, type RuntimeEventCursor, type RuntimeEventDisposition, type RuntimeEventKind, type RuntimeEventListener, type RuntimeMessage, type RuntimeMessageId, type RuntimeToolCall, type RuntimeToolCallId, type SessionManagerProvider, SqliteRuntimeStateStore, type Tool, type ToolContext, type ToolDefinition, type ToolExecutionMode, type ToolExecutionResult, type ToolRuntimePolicy, type Unsubscribe, createCoreTools, createMessage };
|