@better-agent/core 0.1.0-beta.1
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 +3 -0
- package/dist/agent/constants.mjs +6 -0
- package/dist/agent/constants.mjs.map +1 -0
- package/dist/agent/define-agent.d.mts +29 -0
- package/dist/agent/define-agent.d.mts.map +1 -0
- package/dist/agent/define-agent.mjs +27 -0
- package/dist/agent/define-agent.mjs.map +1 -0
- package/dist/agent/index.d.mts +2 -0
- package/dist/agent/types.d.mts +216 -0
- package/dist/agent/types.d.mts.map +1 -0
- package/dist/agent/validation.mjs +64 -0
- package/dist/agent/validation.mjs.map +1 -0
- package/dist/api.d.mts +8 -0
- package/dist/api.d.mts.map +1 -0
- package/dist/api.mjs +63 -0
- package/dist/api.mjs.map +1 -0
- package/dist/app/config.mjs +43 -0
- package/dist/app/config.mjs.map +1 -0
- package/dist/app/create-app.d.mts +36 -0
- package/dist/app/create-app.d.mts.map +1 -0
- package/dist/app/create-app.mjs +132 -0
- package/dist/app/create-app.mjs.map +1 -0
- package/dist/app/registry.mjs +43 -0
- package/dist/app/registry.mjs.map +1 -0
- package/dist/app/types.d.mts +142 -0
- package/dist/app/types.d.mts.map +1 -0
- package/dist/events/constants.d.mts +49 -0
- package/dist/events/constants.d.mts.map +1 -0
- package/dist/events/constants.mjs +46 -0
- package/dist/events/constants.mjs.map +1 -0
- package/dist/events/index.d.mts +4 -0
- package/dist/events/index.mjs +3 -0
- package/dist/events/types.d.mts +289 -0
- package/dist/events/types.d.mts.map +1 -0
- package/dist/index.d.mts +23 -0
- package/dist/index.mjs +14 -0
- package/dist/internal/id.mjs +21 -0
- package/dist/internal/id.mjs.map +1 -0
- package/dist/internal/types.d.mts +11 -0
- package/dist/internal/types.d.mts.map +1 -0
- package/dist/mcp/error/mcp-client-error.d.mts +36 -0
- package/dist/mcp/error/mcp-client-error.d.mts.map +1 -0
- package/dist/mcp/error/mcp-client-error.mjs +33 -0
- package/dist/mcp/error/mcp-client-error.mjs.map +1 -0
- package/dist/mcp/index.d.mts +8 -0
- package/dist/mcp/index.mjs +9 -0
- package/dist/mcp/tool/json-rpc-message.d.mts +50 -0
- package/dist/mcp/tool/json-rpc-message.d.mts.map +1 -0
- package/dist/mcp/tool/json-rpc-message.mjs +84 -0
- package/dist/mcp/tool/json-rpc-message.mjs.map +1 -0
- package/dist/mcp/tool/mcp-client.d.mts +71 -0
- package/dist/mcp/tool/mcp-client.d.mts.map +1 -0
- package/dist/mcp/tool/mcp-client.mjs +304 -0
- package/dist/mcp/tool/mcp-client.mjs.map +1 -0
- package/dist/mcp/tool/mcp-http-transport.d.mts +62 -0
- package/dist/mcp/tool/mcp-http-transport.d.mts.map +1 -0
- package/dist/mcp/tool/mcp-http-transport.mjs +307 -0
- package/dist/mcp/tool/mcp-http-transport.mjs.map +1 -0
- package/dist/mcp/tool/mcp-tools.d.mts +20 -0
- package/dist/mcp/tool/mcp-tools.d.mts.map +1 -0
- package/dist/mcp/tool/mcp-tools.mjs +73 -0
- package/dist/mcp/tool/mcp-tools.mjs.map +1 -0
- package/dist/mcp/tool/mcp-transport.d.mts +81 -0
- package/dist/mcp/tool/mcp-transport.d.mts.map +1 -0
- package/dist/mcp/tool/mcp-transport.mjs +11 -0
- package/dist/mcp/tool/mcp-transport.mjs.map +1 -0
- package/dist/mcp/tool/types.d.mts +230 -0
- package/dist/mcp/tool/types.d.mts.map +1 -0
- package/dist/mcp/tool/types.mjs +19 -0
- package/dist/mcp/tool/types.mjs.map +1 -0
- package/dist/persistence/index.d.mts +3 -0
- package/dist/persistence/index.mjs +3 -0
- package/dist/persistence/memory.d.mts +21 -0
- package/dist/persistence/memory.d.mts.map +1 -0
- package/dist/persistence/memory.mjs +107 -0
- package/dist/persistence/memory.mjs.map +1 -0
- package/dist/persistence/types.d.mts +124 -0
- package/dist/persistence/types.d.mts.map +1 -0
- package/dist/plugins/index.d.mts +2 -0
- package/dist/plugins/runtime.d.mts +17 -0
- package/dist/plugins/runtime.d.mts.map +1 -0
- package/dist/plugins/runtime.mjs +456 -0
- package/dist/plugins/runtime.mjs.map +1 -0
- package/dist/plugins/types.d.mts +344 -0
- package/dist/plugins/types.d.mts.map +1 -0
- package/dist/providers/index.d.mts +9 -0
- package/dist/providers/index.mjs +0 -0
- package/dist/providers/types/capabilities.d.mts +153 -0
- package/dist/providers/types/capabilities.d.mts.map +1 -0
- package/dist/providers/types/content.d.mts +125 -0
- package/dist/providers/types/content.d.mts.map +1 -0
- package/dist/providers/types/conversation.d.mts +32 -0
- package/dist/providers/types/conversation.d.mts.map +1 -0
- package/dist/providers/types/index.d.mts +8 -0
- package/dist/providers/types/input.d.mts +74 -0
- package/dist/providers/types/input.d.mts.map +1 -0
- package/dist/providers/types/model.d.mts +68 -0
- package/dist/providers/types/model.d.mts.map +1 -0
- package/dist/providers/types/output.d.mts +29 -0
- package/dist/providers/types/output.d.mts.map +1 -0
- package/dist/providers/types/response.d.mts +35 -0
- package/dist/providers/types/response.d.mts.map +1 -0
- package/dist/providers/types/tool-calls.d.mts +51 -0
- package/dist/providers/types/tool-calls.d.mts.map +1 -0
- package/dist/run/agent-loop.mjs +231 -0
- package/dist/run/agent-loop.mjs.map +1 -0
- package/dist/run/event-queue.mjs +67 -0
- package/dist/run/event-queue.mjs.map +1 -0
- package/dist/run/execute-tool-calls.mjs +550 -0
- package/dist/run/execute-tool-calls.mjs.map +1 -0
- package/dist/run/execution.mjs +93 -0
- package/dist/run/execution.mjs.map +1 -0
- package/dist/run/helpers.mjs +466 -0
- package/dist/run/helpers.mjs.map +1 -0
- package/dist/run/hooks.mjs +124 -0
- package/dist/run/hooks.mjs.map +1 -0
- package/dist/run/index.d.mts +4 -0
- package/dist/run/messages.d.mts +8 -0
- package/dist/run/messages.d.mts.map +1 -0
- package/dist/run/messages.mjs +83 -0
- package/dist/run/messages.mjs.map +1 -0
- package/dist/run/model-strategy.mjs +105 -0
- package/dist/run/model-strategy.mjs.map +1 -0
- package/dist/run/output-errors.d.mts +75 -0
- package/dist/run/output-errors.d.mts.map +1 -0
- package/dist/run/pending-tools.d.mts +1 -0
- package/dist/run/pending-tools.mjs +185 -0
- package/dist/run/pending-tools.mjs.map +1 -0
- package/dist/run/registry.mjs +22 -0
- package/dist/run/registry.mjs.map +1 -0
- package/dist/run/runtime.d.mts +19 -0
- package/dist/run/runtime.d.mts.map +1 -0
- package/dist/run/runtime.mjs +491 -0
- package/dist/run/runtime.mjs.map +1 -0
- package/dist/run/stop-conditions.mjs +41 -0
- package/dist/run/stop-conditions.mjs.map +1 -0
- package/dist/run/types.d.mts +348 -0
- package/dist/run/types.d.mts.map +1 -0
- package/dist/schema/index.d.mts +2 -0
- package/dist/schema/resolve-json-schema.d.mts +12 -0
- package/dist/schema/resolve-json-schema.d.mts.map +1 -0
- package/dist/schema/resolve-json-schema.mjs +167 -0
- package/dist/schema/resolve-json-schema.mjs.map +1 -0
- package/dist/schema/types.d.mts +27 -0
- package/dist/schema/types.d.mts.map +1 -0
- package/dist/server/create-server.d.mts +21 -0
- package/dist/server/create-server.d.mts.map +1 -0
- package/dist/server/create-server.mjs +107 -0
- package/dist/server/create-server.mjs.map +1 -0
- package/dist/server/http.mjs +182 -0
- package/dist/server/http.mjs.map +1 -0
- package/dist/server/index.d.mts +3 -0
- package/dist/server/index.mjs +3 -0
- package/dist/server/routes.mjs +399 -0
- package/dist/server/routes.mjs.map +1 -0
- package/dist/server/types.d.mts +31 -0
- package/dist/server/types.d.mts.map +1 -0
- package/dist/tools/constants.d.mts +12 -0
- package/dist/tools/constants.d.mts.map +1 -0
- package/dist/tools/constants.mjs +13 -0
- package/dist/tools/constants.mjs.map +1 -0
- package/dist/tools/define-tool.d.mts +25 -0
- package/dist/tools/define-tool.d.mts.map +1 -0
- package/dist/tools/define-tool.mjs +76 -0
- package/dist/tools/define-tool.mjs.map +1 -0
- package/dist/tools/index.d.mts +5 -0
- package/dist/tools/lazy-tools.d.mts +49 -0
- package/dist/tools/lazy-tools.d.mts.map +1 -0
- package/dist/tools/lazy-tools.mjs +87 -0
- package/dist/tools/lazy-tools.mjs.map +1 -0
- package/dist/tools/resolve-tools.d.mts +12 -0
- package/dist/tools/resolve-tools.d.mts.map +1 -0
- package/dist/tools/resolve-tools.mjs +86 -0
- package/dist/tools/resolve-tools.mjs.map +1 -0
- package/dist/tools/types.d.mts +318 -0
- package/dist/tools/types.d.mts.map +1 -0
- package/dist/tools/validation.mjs +23 -0
- package/dist/tools/validation.mjs.map +1 -0
- package/package.json +72 -0
|
@@ -0,0 +1,289 @@
|
|
|
1
|
+
import { EventName, Events } from "./constants.mjs";
|
|
2
|
+
import { ToolApprovalState, ToolErrorPayload, ToolTarget } from "../tools/types.mjs";
|
|
3
|
+
import { RunResult } from "../run/types.mjs";
|
|
4
|
+
//#region src/events/types.d.ts
|
|
5
|
+
/**
|
|
6
|
+
* Minimal serializable error shape used in runtime events.
|
|
7
|
+
*/
|
|
8
|
+
interface BetterAgentErrorLike {
|
|
9
|
+
name: string;
|
|
10
|
+
message: string;
|
|
11
|
+
code?: string;
|
|
12
|
+
cause?: unknown;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Message role used in streamed events.
|
|
16
|
+
*/
|
|
17
|
+
type Role = "system" | "assistant" | "user" | (string & {});
|
|
18
|
+
/** Visibility level for reasoning output. */
|
|
19
|
+
type ReasoningVisibility = "summary" | "full";
|
|
20
|
+
/** Reason a loop step stopped the run. */
|
|
21
|
+
type StepTerminationReason = "no_tool_calls" | "stop_when" | "max_steps";
|
|
22
|
+
/**
|
|
23
|
+
* Base shape shared by all runtime events.
|
|
24
|
+
*/
|
|
25
|
+
interface BaseEvent {
|
|
26
|
+
type: EventName;
|
|
27
|
+
timestamp: number;
|
|
28
|
+
}
|
|
29
|
+
interface RunStartedEvent extends BaseEvent {
|
|
30
|
+
type: typeof Events.RUN_STARTED;
|
|
31
|
+
runId: string;
|
|
32
|
+
agentName: string;
|
|
33
|
+
conversationId?: string;
|
|
34
|
+
runInput: Record<string, unknown>;
|
|
35
|
+
}
|
|
36
|
+
interface RunFinishedEvent extends BaseEvent {
|
|
37
|
+
type: typeof Events.RUN_FINISHED;
|
|
38
|
+
runId: string;
|
|
39
|
+
agentName: string;
|
|
40
|
+
conversationId?: string;
|
|
41
|
+
result: RunResult;
|
|
42
|
+
}
|
|
43
|
+
interface RunErrorEvent extends BaseEvent {
|
|
44
|
+
type: typeof Events.RUN_ERROR;
|
|
45
|
+
runId: string;
|
|
46
|
+
agentName: string;
|
|
47
|
+
conversationId?: string;
|
|
48
|
+
error: BetterAgentErrorLike;
|
|
49
|
+
}
|
|
50
|
+
interface RunAbortedEvent extends BaseEvent {
|
|
51
|
+
type: typeof Events.RUN_ABORTED;
|
|
52
|
+
runId: string;
|
|
53
|
+
agentName: string;
|
|
54
|
+
conversationId?: string;
|
|
55
|
+
}
|
|
56
|
+
interface DataPartEvent extends BaseEvent {
|
|
57
|
+
type: typeof Events.DATA_PART;
|
|
58
|
+
id?: string;
|
|
59
|
+
data: unknown;
|
|
60
|
+
}
|
|
61
|
+
interface StepStartEvent extends BaseEvent {
|
|
62
|
+
type: typeof Events.STEP_START;
|
|
63
|
+
runId: string;
|
|
64
|
+
agentName: string;
|
|
65
|
+
conversationId?: string;
|
|
66
|
+
stepIndex: number;
|
|
67
|
+
maxSteps: number | undefined;
|
|
68
|
+
}
|
|
69
|
+
interface StepFinishEvent extends BaseEvent {
|
|
70
|
+
type: typeof Events.STEP_FINISH;
|
|
71
|
+
runId: string;
|
|
72
|
+
agentName: string;
|
|
73
|
+
conversationId?: string;
|
|
74
|
+
stepIndex: number;
|
|
75
|
+
maxSteps: number | undefined;
|
|
76
|
+
toolCallCount: number;
|
|
77
|
+
/** Present only when this finished step also ended the loop. */
|
|
78
|
+
terminationReason?: StepTerminationReason;
|
|
79
|
+
}
|
|
80
|
+
interface StepErrorEvent extends BaseEvent {
|
|
81
|
+
type: typeof Events.STEP_ERROR;
|
|
82
|
+
runId: string;
|
|
83
|
+
agentName: string;
|
|
84
|
+
conversationId?: string;
|
|
85
|
+
stepIndex: number;
|
|
86
|
+
maxSteps: number | undefined;
|
|
87
|
+
error: BetterAgentErrorLike;
|
|
88
|
+
}
|
|
89
|
+
interface ToolCallStartEvent extends BaseEvent {
|
|
90
|
+
type: typeof Events.TOOL_CALL_START;
|
|
91
|
+
runId: string;
|
|
92
|
+
agentName: string;
|
|
93
|
+
parentMessageId: string;
|
|
94
|
+
toolCallId: string;
|
|
95
|
+
toolCallName: string;
|
|
96
|
+
toolTarget: ToolTarget;
|
|
97
|
+
}
|
|
98
|
+
interface ToolCallArgsEvent extends BaseEvent {
|
|
99
|
+
type: typeof Events.TOOL_CALL_ARGS;
|
|
100
|
+
runId: string;
|
|
101
|
+
agentName: string;
|
|
102
|
+
parentMessageId: string;
|
|
103
|
+
toolCallId: string;
|
|
104
|
+
toolCallName: string;
|
|
105
|
+
delta: string;
|
|
106
|
+
toolTarget: ToolTarget;
|
|
107
|
+
}
|
|
108
|
+
interface ToolCallEndEvent extends BaseEvent {
|
|
109
|
+
type: typeof Events.TOOL_CALL_END;
|
|
110
|
+
runId: string;
|
|
111
|
+
agentName: string;
|
|
112
|
+
parentMessageId: string;
|
|
113
|
+
toolCallId: string;
|
|
114
|
+
toolCallName: string;
|
|
115
|
+
toolTarget: ToolTarget;
|
|
116
|
+
}
|
|
117
|
+
interface ToolCallResultEvent extends BaseEvent {
|
|
118
|
+
type: typeof Events.TOOL_CALL_RESULT;
|
|
119
|
+
runId: string;
|
|
120
|
+
agentName: string;
|
|
121
|
+
parentMessageId: string;
|
|
122
|
+
toolCallId: string;
|
|
123
|
+
toolCallName: string;
|
|
124
|
+
result: unknown;
|
|
125
|
+
isError?: boolean;
|
|
126
|
+
errorKind?: ToolErrorPayload["errorKind"];
|
|
127
|
+
toolTarget: ToolTarget;
|
|
128
|
+
}
|
|
129
|
+
interface ToolApprovalRequiredEvent extends BaseEvent {
|
|
130
|
+
type: typeof Events.TOOL_APPROVAL_REQUIRED;
|
|
131
|
+
runId: string;
|
|
132
|
+
agentName: string;
|
|
133
|
+
parentMessageId: string;
|
|
134
|
+
toolCallId: string;
|
|
135
|
+
toolCallName: string;
|
|
136
|
+
toolTarget: ToolTarget;
|
|
137
|
+
toolInput: unknown;
|
|
138
|
+
state: "requested";
|
|
139
|
+
meta?: Record<string, unknown>;
|
|
140
|
+
}
|
|
141
|
+
interface ToolApprovalUpdatedEvent extends BaseEvent {
|
|
142
|
+
type: typeof Events.TOOL_APPROVAL_UPDATED;
|
|
143
|
+
runId: string;
|
|
144
|
+
agentName: string;
|
|
145
|
+
parentMessageId: string;
|
|
146
|
+
toolCallId: string;
|
|
147
|
+
toolCallName: string;
|
|
148
|
+
toolTarget: ToolTarget;
|
|
149
|
+
state: ToolApprovalState;
|
|
150
|
+
toolInput: unknown;
|
|
151
|
+
meta?: Record<string, unknown>;
|
|
152
|
+
note?: string;
|
|
153
|
+
actorId?: string;
|
|
154
|
+
}
|
|
155
|
+
interface TextMessageStartEvent extends BaseEvent {
|
|
156
|
+
type: typeof Events.TEXT_MESSAGE_START;
|
|
157
|
+
messageId: string;
|
|
158
|
+
role: Role;
|
|
159
|
+
}
|
|
160
|
+
interface TextMessageContentEvent extends BaseEvent {
|
|
161
|
+
type: typeof Events.TEXT_MESSAGE_CONTENT;
|
|
162
|
+
messageId: string;
|
|
163
|
+
delta: string;
|
|
164
|
+
}
|
|
165
|
+
interface TextMessageEndEvent extends BaseEvent {
|
|
166
|
+
type: typeof Events.TEXT_MESSAGE_END;
|
|
167
|
+
messageId: string;
|
|
168
|
+
}
|
|
169
|
+
interface ImageMessageStartEvent extends BaseEvent {
|
|
170
|
+
type: typeof Events.IMAGE_MESSAGE_START;
|
|
171
|
+
messageId: string;
|
|
172
|
+
role: Role;
|
|
173
|
+
}
|
|
174
|
+
interface ImageMessageContentEvent extends BaseEvent {
|
|
175
|
+
type: typeof Events.IMAGE_MESSAGE_CONTENT;
|
|
176
|
+
messageId: string;
|
|
177
|
+
delta: {
|
|
178
|
+
kind: "url";
|
|
179
|
+
url: string;
|
|
180
|
+
} | {
|
|
181
|
+
kind: "base64";
|
|
182
|
+
data: string;
|
|
183
|
+
mimeType: string;
|
|
184
|
+
};
|
|
185
|
+
}
|
|
186
|
+
interface ImageMessageEndEvent extends BaseEvent {
|
|
187
|
+
type: typeof Events.IMAGE_MESSAGE_END;
|
|
188
|
+
messageId: string;
|
|
189
|
+
}
|
|
190
|
+
interface VideoMessageStartEvent extends BaseEvent {
|
|
191
|
+
type: typeof Events.VIDEO_MESSAGE_START;
|
|
192
|
+
messageId: string;
|
|
193
|
+
role: Role;
|
|
194
|
+
}
|
|
195
|
+
interface VideoMessageContentEvent extends BaseEvent {
|
|
196
|
+
type: typeof Events.VIDEO_MESSAGE_CONTENT;
|
|
197
|
+
messageId: string;
|
|
198
|
+
delta: {
|
|
199
|
+
kind: "url";
|
|
200
|
+
url: string;
|
|
201
|
+
} | {
|
|
202
|
+
kind: "base64";
|
|
203
|
+
data: string;
|
|
204
|
+
mimeType: string;
|
|
205
|
+
};
|
|
206
|
+
}
|
|
207
|
+
interface VideoMessageEndEvent extends BaseEvent {
|
|
208
|
+
type: typeof Events.VIDEO_MESSAGE_END;
|
|
209
|
+
messageId: string;
|
|
210
|
+
}
|
|
211
|
+
interface AudioMessageStartEvent extends BaseEvent {
|
|
212
|
+
type: typeof Events.AUDIO_MESSAGE_START;
|
|
213
|
+
messageId: string;
|
|
214
|
+
role: Role;
|
|
215
|
+
}
|
|
216
|
+
interface AudioMessageContentEvent extends BaseEvent {
|
|
217
|
+
type: typeof Events.AUDIO_MESSAGE_CONTENT;
|
|
218
|
+
messageId: string;
|
|
219
|
+
delta: {
|
|
220
|
+
kind: "base64";
|
|
221
|
+
data: string;
|
|
222
|
+
mimeType: string;
|
|
223
|
+
};
|
|
224
|
+
}
|
|
225
|
+
interface AudioMessageEndEvent extends BaseEvent {
|
|
226
|
+
type: typeof Events.AUDIO_MESSAGE_END;
|
|
227
|
+
messageId: string;
|
|
228
|
+
}
|
|
229
|
+
interface TranscriptMessageStartEvent extends BaseEvent {
|
|
230
|
+
type: typeof Events.TRANSCRIPT_MESSAGE_START;
|
|
231
|
+
messageId: string;
|
|
232
|
+
role: Role;
|
|
233
|
+
}
|
|
234
|
+
interface TranscriptMessageContentEvent extends BaseEvent {
|
|
235
|
+
type: typeof Events.TRANSCRIPT_MESSAGE_CONTENT;
|
|
236
|
+
messageId: string;
|
|
237
|
+
delta: string;
|
|
238
|
+
}
|
|
239
|
+
interface TranscriptMessageSegmentEvent extends BaseEvent {
|
|
240
|
+
type: typeof Events.TRANSCRIPT_MESSAGE_SEGMENT;
|
|
241
|
+
messageId: string;
|
|
242
|
+
segment: {
|
|
243
|
+
id: string;
|
|
244
|
+
start: number;
|
|
245
|
+
end: number;
|
|
246
|
+
text: string;
|
|
247
|
+
speaker?: string;
|
|
248
|
+
};
|
|
249
|
+
}
|
|
250
|
+
interface TranscriptMessageEndEvent extends BaseEvent {
|
|
251
|
+
type: typeof Events.TRANSCRIPT_MESSAGE_END;
|
|
252
|
+
messageId: string;
|
|
253
|
+
}
|
|
254
|
+
interface ReasoningMessageStartEvent extends BaseEvent {
|
|
255
|
+
type: typeof Events.REASONING_MESSAGE_START;
|
|
256
|
+
messageId: string;
|
|
257
|
+
role: Role;
|
|
258
|
+
visibility: ReasoningVisibility;
|
|
259
|
+
}
|
|
260
|
+
interface ReasoningMessageContentEvent extends BaseEvent {
|
|
261
|
+
type: typeof Events.REASONING_MESSAGE_CONTENT;
|
|
262
|
+
messageId: string;
|
|
263
|
+
visibility: ReasoningVisibility;
|
|
264
|
+
delta: string;
|
|
265
|
+
}
|
|
266
|
+
interface ReasoningMessageEndEvent extends BaseEvent {
|
|
267
|
+
type: typeof Events.REASONING_MESSAGE_END;
|
|
268
|
+
messageId: string;
|
|
269
|
+
visibility: ReasoningVisibility;
|
|
270
|
+
}
|
|
271
|
+
interface EmbeddingMessageStartEvent extends BaseEvent {
|
|
272
|
+
type: typeof Events.EMBEDDING_MESSAGE_START;
|
|
273
|
+
messageId: string;
|
|
274
|
+
role: Role;
|
|
275
|
+
}
|
|
276
|
+
interface EmbeddingMessageContentEvent extends BaseEvent {
|
|
277
|
+
type: typeof Events.EMBEDDING_MESSAGE_CONTENT;
|
|
278
|
+
messageId: string;
|
|
279
|
+
delta: number[];
|
|
280
|
+
}
|
|
281
|
+
interface EmbeddingMessageEndEvent extends BaseEvent {
|
|
282
|
+
type: typeof Events.EMBEDDING_MESSAGE_END;
|
|
283
|
+
messageId: string;
|
|
284
|
+
}
|
|
285
|
+
type ModelEvent = TextMessageStartEvent | TextMessageContentEvent | TextMessageEndEvent | ImageMessageStartEvent | ImageMessageContentEvent | ImageMessageEndEvent | VideoMessageStartEvent | VideoMessageContentEvent | VideoMessageEndEvent | AudioMessageStartEvent | AudioMessageContentEvent | AudioMessageEndEvent | TranscriptMessageStartEvent | TranscriptMessageContentEvent | TranscriptMessageSegmentEvent | TranscriptMessageEndEvent | ReasoningMessageStartEvent | ReasoningMessageContentEvent | ReasoningMessageEndEvent | EmbeddingMessageStartEvent | EmbeddingMessageContentEvent | EmbeddingMessageEndEvent | ToolCallStartEvent | ToolCallArgsEvent | ToolCallEndEvent | ToolCallResultEvent;
|
|
286
|
+
type Event = RunStartedEvent | RunFinishedEvent | RunErrorEvent | RunAbortedEvent | DataPartEvent | StepStartEvent | StepFinishEvent | StepErrorEvent | ToolApprovalRequiredEvent | ToolApprovalUpdatedEvent | ModelEvent;
|
|
287
|
+
//#endregion
|
|
288
|
+
export { AudioMessageContentEvent, AudioMessageEndEvent, AudioMessageStartEvent, BaseEvent, BetterAgentErrorLike, DataPartEvent, EmbeddingMessageContentEvent, EmbeddingMessageEndEvent, EmbeddingMessageStartEvent, Event, ImageMessageContentEvent, ImageMessageEndEvent, ImageMessageStartEvent, ModelEvent, ReasoningMessageContentEvent, ReasoningMessageEndEvent, ReasoningMessageStartEvent, ReasoningVisibility, Role, RunAbortedEvent, RunErrorEvent, RunFinishedEvent, RunStartedEvent, StepErrorEvent, StepFinishEvent, StepStartEvent, StepTerminationReason, TextMessageContentEvent, TextMessageEndEvent, TextMessageStartEvent, ToolApprovalRequiredEvent, ToolApprovalUpdatedEvent, ToolCallArgsEvent, ToolCallEndEvent, ToolCallResultEvent, ToolCallStartEvent, TranscriptMessageContentEvent, TranscriptMessageEndEvent, TranscriptMessageSegmentEvent, TranscriptMessageStartEvent, VideoMessageContentEvent, VideoMessageEndEvent, VideoMessageStartEvent };
|
|
289
|
+
//# sourceMappingURL=types.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.mts","names":[],"sources":["../../src/events/types.ts"],"mappings":"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"}
|
package/dist/index.d.mts
ADDED
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { AnyStandardSchemaV1, InferSchemaInput, InferStandardInput, ResolvableSchema, StandardSchema, ValidatableSchema } from "./schema/types.mjs";
|
|
2
|
+
import { resolveToJsonSchema, validateInput } from "./schema/resolve-json-schema.mjs";
|
|
3
|
+
import { TOOL_CLEANUP, TOOL_JSON_SCHEMA } from "./tools/constants.mjs";
|
|
4
|
+
import { AgentToolDefinition, ClientToolDefinition, ExecutionToolError, ExecutionToolErrorResult, HostedToolDefinition, LazyToolLoader, LazyToolSource, LazyToolSourceResult, OnToolError, OpenString, ParseToolError, ParseToolErrorResult, RepairAction, ResultAction, RetryAction, SendToModelAction, ServerToolDefinition, SkipAction, ThrowAction, ToolApprovalConfig, ToolApprovalDecision, ToolApprovalState, ToolContract, ToolContractConfig, ToolDefinitionTarget, ToolErrorBase, ToolErrorContext, ToolErrorMode, ToolErrorPayload, ToolHandler, ToolListFactory, ToolNameOf, ToolNamesOf, ToolRunContext, ToolSource, ToolSourceResult, ToolTarget, ValidationToolError, ValidationToolErrorResult } from "./tools/types.mjs";
|
|
5
|
+
import { defineTool } from "./tools/define-tool.mjs";
|
|
6
|
+
import { lazyTools } from "./tools/lazy-tools.mjs";
|
|
7
|
+
import { isCallableToolDefinition } from "./tools/resolve-tools.mjs";
|
|
8
|
+
import { GenerativeModel } from "./providers/types/model.mjs";
|
|
9
|
+
import { AgentContext, AgentContextFromSchema, AgentDefinition, AgentInstruction, AgentKnownToolName, AgentModelCaps, AgentModelOptions, AgentOnStep, AgentOnStepFinish, AgentOutputSchema, AgentStructuredOutput, AgentTools, AnyAgentDefinition } from "./agent/types.mjs";
|
|
10
|
+
import { defineAgent } from "./agent/define-agent.mjs";
|
|
11
|
+
import { ConversationCursor, ConversationRunStatus, ConversationRuntimeState, ConversationRuntimeStateStore, ConversationStore, InMemoryStreamStoreOptions, LoadConversationParams, LoadedConversation, SaveConversationParams, SaveConversationResult, StreamEvent, StreamStore } from "./persistence/types.mjs";
|
|
12
|
+
import { createMemoryConversationRuntimeStateStore, createMemoryConversationStore, createMemoryStreamStore } from "./persistence/memory.mjs";
|
|
13
|
+
import { Plugin, PluginBaseContext, PluginEndpoint, PluginEndpointHandler, PluginEventContext, PluginEventMiddleware, PluginGuard, PluginGuardMode, PluginModelCallContext, PluginModelResponseContext, PluginOnStepContext, PluginRunContext, PluginRuntime, PluginRuntimeEndpoint, PluginSaveContext, PluginToolCallContext, PluginToolCallDecision, PluginToolResultContext } from "./plugins/types.mjs";
|
|
14
|
+
import { definePlugin } from "./plugins/runtime.mjs";
|
|
15
|
+
import { BetterAgentRuntime, ConversationReplayOptions, OnStepContext, OnStepFinishContext, PreviousStepResult, ResumeConversationOptions, ResumeStreamOptions, RunAdvancedOptions, RunContext, RunOptions, RunOptionsForAgent, RunOutputOverrideForAgent, RunPersistenceOptions, RunResult, RunResultForAgent, StopWhen, StopWhenContext, StreamResult, StreamResultForAgent, SubmitToolApprovalParams, SubmitToolResultParams } from "./run/types.mjs";
|
|
16
|
+
import { createRuntime } from "./run/runtime.mjs";
|
|
17
|
+
import { pruneInputByCapabilities } from "./run/messages.mjs";
|
|
18
|
+
import { MissingTextOutputError, OnOutputError, OutputErrorBase, OutputErrorContext, OutputErrorMode, OutputErrorResult, ParseOutputError, RepairTextOutputAction, RepairValueOutputAction, SkipOutputAction, ThrowOutputAction, ValidationOutputError } from "./run/output-errors.mjs";
|
|
19
|
+
import { AppRunInput, AppRunOptions, AppStreamOptions, BetterAgentAdvancedConfig, BetterAgentApp, BetterAgentConfig, BetterAgentHandler } from "./app/types.mjs";
|
|
20
|
+
import { betterAgent } from "./app/create-app.mjs";
|
|
21
|
+
import { BetterAgentServer, CreateServerConfig } from "./server/types.mjs";
|
|
22
|
+
import { createServer } from "./server/create-server.mjs";
|
|
23
|
+
export { type AgentContext, type AgentContextFromSchema, type AgentDefinition, type AgentInstruction, type AgentKnownToolName, type AgentModelCaps, type AgentModelOptions, type AgentOnStep, type AgentOnStepFinish, type AgentOutputSchema, type AgentStructuredOutput, type AgentToolDefinition, type AgentTools, type AnyAgentDefinition, type AnyStandardSchemaV1, type AppRunInput, type AppRunOptions, type AppStreamOptions, type BetterAgentAdvancedConfig, type BetterAgentApp, type BetterAgentConfig, type BetterAgentHandler, type BetterAgentRuntime, type BetterAgentServer, type ClientToolDefinition, type ConversationCursor, type ConversationReplayOptions, type ConversationRunStatus, type ConversationRuntimeState, type ConversationRuntimeStateStore, type ConversationStore, type CreateServerConfig, type ExecutionToolError, type ExecutionToolErrorResult, type GenerativeModel, type HostedToolDefinition, InMemoryStreamStoreOptions, type InferSchemaInput, type InferStandardInput, type LazyToolLoader, type LazyToolSource, type LazyToolSourceResult, LoadConversationParams, type LoadedConversation, type MissingTextOutputError, type OnOutputError, type OnStepContext, type OnStepFinishContext, type OnToolError, type OpenString, type OutputErrorBase, type OutputErrorContext, type OutputErrorMode, type OutputErrorResult, type ParseOutputError, type ParseToolError, type ParseToolErrorResult, type Plugin, type PluginBaseContext, type PluginEndpoint, type PluginEndpointHandler, type PluginEventContext, type PluginEventMiddleware, type PluginGuard, type PluginGuardMode, type PluginModelCallContext, type PluginModelResponseContext, type PluginOnStepContext, type PluginRunContext, type PluginRuntime, type PluginRuntimeEndpoint, type PluginSaveContext, type PluginToolCallContext, type PluginToolCallDecision, type PluginToolResultContext, type PreviousStepResult, type RepairAction, type RepairTextOutputAction, type RepairValueOutputAction, type ResolvableSchema, type ResultAction, type ResumeConversationOptions, type ResumeStreamOptions, type RetryAction, type RunAdvancedOptions, type RunContext, type RunOptions, type RunOptionsForAgent, type RunOutputOverrideForAgent, type RunPersistenceOptions, type RunResult, type RunResultForAgent, type SaveConversationParams, type SaveConversationResult, type SendToModelAction, type ServerToolDefinition, type SkipAction, type SkipOutputAction, type StandardSchema, type StopWhen, type StopWhenContext, type StreamEvent, type StreamResult, type StreamResultForAgent, type StreamStore, type SubmitToolApprovalParams, type SubmitToolResultParams, TOOL_CLEANUP, TOOL_JSON_SCHEMA, type ThrowAction, type ThrowOutputAction, type ToolApprovalConfig, type ToolApprovalDecision, type ToolApprovalState, type ToolContract, type ToolContractConfig, type ToolDefinitionTarget, type ToolErrorBase, type ToolErrorContext, type ToolErrorMode, type ToolErrorPayload, type ToolHandler, type ToolListFactory, type ToolNameOf, type ToolNamesOf, type ToolRunContext, type ToolSource, type ToolSourceResult, type ToolTarget, type ValidatableSchema, type ValidationOutputError, type ValidationToolError, type ValidationToolErrorResult, betterAgent, createMemoryConversationRuntimeStateStore, createMemoryConversationStore, createMemoryStreamStore, createRuntime, createServer, defineAgent, definePlugin, defineTool, isCallableToolDefinition, lazyTools, pruneInputByCapabilities, resolveToJsonSchema, validateInput };
|
package/dist/index.mjs
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { resolveToJsonSchema, validateInput } from "./schema/resolve-json-schema.mjs";
|
|
2
|
+
import { defineAgent } from "./agent/define-agent.mjs";
|
|
3
|
+
import { TOOL_CLEANUP, TOOL_JSON_SCHEMA } from "./tools/constants.mjs";
|
|
4
|
+
import { defineTool } from "./tools/define-tool.mjs";
|
|
5
|
+
import { lazyTools } from "./tools/lazy-tools.mjs";
|
|
6
|
+
import { isCallableToolDefinition } from "./tools/resolve-tools.mjs";
|
|
7
|
+
import { definePlugin } from "./plugins/runtime.mjs";
|
|
8
|
+
import { pruneInputByCapabilities } from "./run/messages.mjs";
|
|
9
|
+
import { createRuntime } from "./run/runtime.mjs";
|
|
10
|
+
import { createServer } from "./server/create-server.mjs";
|
|
11
|
+
import { betterAgent } from "./app/create-app.mjs";
|
|
12
|
+
import { createMemoryConversationRuntimeStateStore, createMemoryConversationStore, createMemoryStreamStore } from "./persistence/memory.mjs";
|
|
13
|
+
|
|
14
|
+
export { TOOL_CLEANUP, TOOL_JSON_SCHEMA, betterAgent, createMemoryConversationRuntimeStateStore, createMemoryConversationStore, createMemoryStreamStore, createRuntime, createServer, defineAgent, definePlugin, defineTool, isCallableToolDefinition, lazyTools, pruneInputByCapabilities, resolveToJsonSchema, validateInput };
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
//#region src/internal/id.ts
|
|
2
|
+
/**
|
|
3
|
+
* Creates an ID generator.
|
|
4
|
+
*
|
|
5
|
+
* IDs look like `<prefix>_<ts>_<counter>_<random>`, for example:
|
|
6
|
+
* `agent_m8x2k1f9_0001_a1b2c3d4`.
|
|
7
|
+
*/
|
|
8
|
+
const createIdGenerator = (config) => {
|
|
9
|
+
let counter = 0;
|
|
10
|
+
const counterMax = config.counterMax ?? 1e6;
|
|
11
|
+
const prefixes = config.prefixes ?? {};
|
|
12
|
+
return (kind) => {
|
|
13
|
+
const prefix = prefixes[kind] ?? kind;
|
|
14
|
+
counter = (counter + 1) % counterMax;
|
|
15
|
+
return `${prefix}_${Date.now().toString(36)}_${counter.toString(36).padStart(4, "0")}_${Math.random().toString(36).slice(2, 10)}`;
|
|
16
|
+
};
|
|
17
|
+
};
|
|
18
|
+
|
|
19
|
+
//#endregion
|
|
20
|
+
export { createIdGenerator };
|
|
21
|
+
//# sourceMappingURL=id.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"id.mjs","names":[],"sources":["../../src/internal/id.ts"],"sourcesContent":["/**\n * Creates an ID generator.\n *\n * IDs look like `<prefix>_<ts>_<counter>_<random>`, for example:\n * `agent_m8x2k1f9_0001_a1b2c3d4`.\n */\nexport const createIdGenerator = (config: {\n prefixes?: Record<string, string>;\n counterMax?: number;\n}): ((kind: string) => string) => {\n let counter = 0;\n const counterMax = config.counterMax ?? 1_000_000;\n const prefixes = config.prefixes ?? {};\n\n return (kind: string) => {\n const prefix = prefixes[kind] ?? kind;\n counter = (counter + 1) % counterMax;\n\n const ts = Date.now().toString(36);\n const cnt = counter.toString(36).padStart(4, \"0\");\n const rand = Math.random().toString(36).slice(2, 10);\n\n return `${prefix}_${ts}_${cnt}_${rand}`;\n };\n};\n"],"mappings":";;;;;;;AAMA,MAAa,qBAAqB,WAGA;CAC9B,IAAI,UAAU;CACd,MAAM,aAAa,OAAO,cAAc;CACxC,MAAM,WAAW,OAAO,YAAY,EAAE;AAEtC,SAAQ,SAAiB;EACrB,MAAM,SAAS,SAAS,SAAS;AACjC,aAAW,UAAU,KAAK;AAM1B,SAAO,GAAG,OAAO,GAJN,KAAK,KAAK,CAAC,SAAS,GAAG,CAIX,GAHX,QAAQ,SAAS,GAAG,CAAC,SAAS,GAAG,IAAI,CAGnB,GAFjB,KAAK,QAAQ,CAAC,SAAS,GAAG,CAAC,MAAM,GAAG,GAAG"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
//#region src/internal/types.d.ts
|
|
2
|
+
type Awaitable<T> = T | Promise<T>;
|
|
3
|
+
type BivariantFn<TArgs extends readonly unknown[], TReturn> = {
|
|
4
|
+
bivarianceHack(...args: TArgs): TReturn;
|
|
5
|
+
}["bivarianceHack"];
|
|
6
|
+
type UnionToIntersection<U> = (U extends unknown ? (k: U) => void : never) extends ((k: infer I) => void) ? I : never;
|
|
7
|
+
type IsAny<T> = 0 extends 1 & T ? true : false;
|
|
8
|
+
type StripIndex<T> = { [K in keyof T as string extends K ? never : number extends K ? never : symbol extends K ? never : K]: T[K] };
|
|
9
|
+
//#endregion
|
|
10
|
+
export { Awaitable, BivariantFn, IsAny, StripIndex, UnionToIntersection };
|
|
11
|
+
//# sourceMappingURL=types.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.mts","names":[],"sources":["../../src/internal/types.ts"],"mappings":";KAAY,SAAA,MAAe,CAAA,GAAI,OAAA,CAAQ,CAAA;AAAA,KAE3B,WAAA;EACR,cAAA,IAAkB,IAAA,EAAM,KAAA,GAAQ,OAAA;AAAA;AAAA,KAGxB,mBAAA,OAA0B,CAAA,oBAAqB,CAAA,EAAG,CAAA,6BAC1D,CAAA,sBAEE,CAAA;AAAA,KAGM,KAAA,oBAAyB,CAAA;AAAA,KAEzB,UAAA,oBACI,CAAA,mBAAoB,CAAA,0BAEX,CAAA,0BAEE,CAAA,WAEb,CAAA,GAAI,CAAA,CAAE,CAAA"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { BetterAgentError, BetterAgentErrorContext } from "@better-agent/shared/errors";
|
|
2
|
+
|
|
3
|
+
//#region src/mcp/error/mcp-client-error.d.ts
|
|
4
|
+
/**
|
|
5
|
+
* MCP client error.
|
|
6
|
+
*/
|
|
7
|
+
declare class MCPClientError extends BetterAgentError {
|
|
8
|
+
/** Additional error data from the MCP server. */
|
|
9
|
+
readonly data?: unknown;
|
|
10
|
+
/** JSON-RPC error code, when present. */
|
|
11
|
+
readonly jsonRpcCode: number | undefined;
|
|
12
|
+
constructor({
|
|
13
|
+
message,
|
|
14
|
+
cause,
|
|
15
|
+
data,
|
|
16
|
+
jsonRpcCode,
|
|
17
|
+
context,
|
|
18
|
+
trace
|
|
19
|
+
}: {
|
|
20
|
+
message: string;
|
|
21
|
+
cause?: unknown;
|
|
22
|
+
data?: unknown;
|
|
23
|
+
jsonRpcCode?: number;
|
|
24
|
+
context?: BetterAgentErrorContext;
|
|
25
|
+
trace?: Array<{
|
|
26
|
+
at: string;
|
|
27
|
+
}>;
|
|
28
|
+
});
|
|
29
|
+
/**
|
|
30
|
+
* Type guard for `MCPClientError`.
|
|
31
|
+
*/
|
|
32
|
+
static isInstance(error: unknown): error is MCPClientError;
|
|
33
|
+
}
|
|
34
|
+
//#endregion
|
|
35
|
+
export { MCPClientError };
|
|
36
|
+
//# sourceMappingURL=mcp-client-error.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcp-client-error.d.mts","names":[],"sources":["../../../src/mcp/error/mcp-client-error.ts"],"mappings":";;;;;AAKA;cAAa,cAAA,SAAuB,gBAAA;;WAEvB,IAAA;EAOL;EAAA,SAJK,WAAA;;IAGL,OAAA;IACA,KAAA;IACA,IAAA;IACA,WAAA;IACA,OAAA;IACA;EAAA;IAEA,OAAA;IACA,KAAA;IACA,IAAA;IACA,WAAA;IACA,OAAA,GAAU,uBAAA;IACV,KAAA,GAAQ,KAAA;MAAQ,EAAA;IAAA;EAAA;EAlBX;;;EAAA,OAmCF,UAAA,CAAW,KAAA,YAAiB,KAAA,IAAS,cAAA;AAAA"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { BetterAgentError } from "@better-agent/shared/errors";
|
|
2
|
+
|
|
3
|
+
//#region src/mcp/error/mcp-client-error.ts
|
|
4
|
+
/**
|
|
5
|
+
* MCP client error.
|
|
6
|
+
*/
|
|
7
|
+
var MCPClientError = class MCPClientError extends BetterAgentError {
|
|
8
|
+
/** Additional error data from the MCP server. */
|
|
9
|
+
data;
|
|
10
|
+
/** JSON-RPC error code, when present. */
|
|
11
|
+
jsonRpcCode;
|
|
12
|
+
constructor({ message, cause, data, jsonRpcCode, context, trace }) {
|
|
13
|
+
super(message, {
|
|
14
|
+
code: "INTERNAL",
|
|
15
|
+
context,
|
|
16
|
+
trace,
|
|
17
|
+
cause: cause instanceof Error ? cause : void 0
|
|
18
|
+
});
|
|
19
|
+
this.data = data;
|
|
20
|
+
this.jsonRpcCode = jsonRpcCode;
|
|
21
|
+
this.name = "MCPClientError";
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Type guard for `MCPClientError`.
|
|
25
|
+
*/
|
|
26
|
+
static isInstance(error) {
|
|
27
|
+
return error instanceof MCPClientError;
|
|
28
|
+
}
|
|
29
|
+
};
|
|
30
|
+
|
|
31
|
+
//#endregion
|
|
32
|
+
export { MCPClientError };
|
|
33
|
+
//# sourceMappingURL=mcp-client-error.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcp-client-error.mjs","names":[],"sources":["../../../src/mcp/error/mcp-client-error.ts"],"sourcesContent":["import { BetterAgentError, type BetterAgentErrorContext } from \"@better-agent/shared/errors\";\n\n/**\n * MCP client error.\n */\nexport class MCPClientError extends BetterAgentError {\n /** Additional error data from the MCP server. */\n readonly data?: unknown;\n\n /** JSON-RPC error code, when present. */\n readonly jsonRpcCode: number | undefined;\n\n constructor({\n message,\n cause,\n data,\n jsonRpcCode,\n context,\n trace,\n }: {\n message: string;\n cause?: unknown;\n data?: unknown;\n jsonRpcCode?: number;\n context?: BetterAgentErrorContext;\n trace?: Array<{ at: string }>;\n }) {\n super(message, {\n code: \"INTERNAL\",\n context,\n trace,\n cause: cause instanceof Error ? cause : undefined,\n });\n\n this.data = data;\n this.jsonRpcCode = jsonRpcCode;\n this.name = \"MCPClientError\";\n }\n\n /**\n * Type guard for `MCPClientError`.\n */\n static isInstance(error: unknown): error is MCPClientError {\n return error instanceof MCPClientError;\n }\n}\n"],"mappings":";;;;;;AAKA,IAAa,iBAAb,MAAa,uBAAuB,iBAAiB;;CAEjD,AAAS;;CAGT,AAAS;CAET,YAAY,EACR,SACA,OACA,MACA,aACA,SACA,SAQD;AACC,QAAM,SAAS;GACX,MAAM;GACN;GACA;GACA,OAAO,iBAAiB,QAAQ,QAAQ;GAC3C,CAAC;AAEF,OAAK,OAAO;AACZ,OAAK,cAAc;AACnB,OAAK,OAAO;;;;;CAMhB,OAAO,WAAW,OAAyC;AACvD,SAAO,iBAAiB"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { MCPClientError } from "./error/mcp-client-error.mjs";
|
|
2
|
+
import { JSONRPCError, JSONRPCMessage, JSONRPCNotification, JSONRPCRequest, JSONRPCResponse, JSONRPC_VERSION, isJSONRPCError, isJSONRPCNotification, isJSONRPCRequest, isJSONRPCResponse } from "./tool/json-rpc-message.mjs";
|
|
3
|
+
import { MCPHttpTransportConfig, MCPSseTransportConfig, MCPTransport, MCPTransportAdvancedConfig, MCPTransportConfig, isCustomMCPTransport } from "./tool/mcp-transport.mjs";
|
|
4
|
+
import { ClientCapabilities, InitializeParams, InitializeResult, LATEST_PROTOCOL_VERSION, ListPromptsResult, ListResourceTemplatesResult, ListResourcesResult, ListToolsResult, MCPCallToolParams, MCPCallToolResult, MCPGetPromptParams, MCPGetPromptResult, MCPImplementationInfo, MCPPrompt, MCPReadResourceParams, MCPReadResourceResult, MCPResource, MCPResourceTemplate, MCPTool, PaginatedRequest, PaginatedResult, PromptMessage, RequestOptions, SUPPORTED_PROTOCOL_VERSIONS, ServerCapabilities, ToolResultContent } from "./tool/types.mjs";
|
|
5
|
+
import { MCPClient, MCPClientConfig, createMCPClient } from "./tool/mcp-client.mjs";
|
|
6
|
+
import { HttpMCPTransport } from "./tool/mcp-http-transport.mjs";
|
|
7
|
+
import { convertMCPTools } from "./tool/mcp-tools.mjs";
|
|
8
|
+
export { type ClientCapabilities, HttpMCPTransport, type InitializeParams, type InitializeResult, type JSONRPCError, type JSONRPCMessage, type JSONRPCNotification, type JSONRPCRequest, type JSONRPCResponse, JSONRPC_VERSION, LATEST_PROTOCOL_VERSION, type ListPromptsResult, type ListResourceTemplatesResult, type ListResourcesResult, type ListToolsResult, type MCPCallToolParams, type MCPCallToolResult, type MCPClient, type MCPClientConfig, MCPClientError, type MCPGetPromptParams, type MCPGetPromptResult, type MCPHttpTransportConfig, type MCPImplementationInfo, type MCPPrompt, type MCPReadResourceParams, type MCPReadResourceResult, type MCPResource, type MCPResourceTemplate, type MCPSseTransportConfig, type MCPTool, type MCPTransport, type MCPTransportAdvancedConfig, type MCPTransportConfig, type PaginatedRequest, type PaginatedResult, type PromptMessage, type RequestOptions, SUPPORTED_PROTOCOL_VERSIONS, type ServerCapabilities, type ToolResultContent, convertMCPTools, createMCPClient, isCustomMCPTransport, isJSONRPCError, isJSONRPCNotification, isJSONRPCRequest, isJSONRPCResponse };
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { MCPClientError } from "./error/mcp-client-error.mjs";
|
|
2
|
+
import { JSONRPC_VERSION, isJSONRPCError, isJSONRPCNotification, isJSONRPCRequest, isJSONRPCResponse } from "./tool/json-rpc-message.mjs";
|
|
3
|
+
import { LATEST_PROTOCOL_VERSION, SUPPORTED_PROTOCOL_VERSIONS } from "./tool/types.mjs";
|
|
4
|
+
import { HttpMCPTransport } from "./tool/mcp-http-transport.mjs";
|
|
5
|
+
import { isCustomMCPTransport } from "./tool/mcp-transport.mjs";
|
|
6
|
+
import { createMCPClient } from "./tool/mcp-client.mjs";
|
|
7
|
+
import { convertMCPTools } from "./tool/mcp-tools.mjs";
|
|
8
|
+
|
|
9
|
+
export { HttpMCPTransport, JSONRPC_VERSION, LATEST_PROTOCOL_VERSION, MCPClientError, SUPPORTED_PROTOCOL_VERSIONS, convertMCPTools, createMCPClient, isCustomMCPTransport, isJSONRPCError, isJSONRPCNotification, isJSONRPCRequest, isJSONRPCResponse };
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
//#region src/mcp/tool/json-rpc-message.d.ts
|
|
2
|
+
/**
|
|
3
|
+
* JSON-RPC 2.0 message types for MCP communication.
|
|
4
|
+
*
|
|
5
|
+
* Follows the Model Context Protocol's JSON-RPC usage.
|
|
6
|
+
*/
|
|
7
|
+
/** JSON-RPC version. */
|
|
8
|
+
declare const JSONRPC_VERSION = "2.0";
|
|
9
|
+
/** JSON-RPC request. */
|
|
10
|
+
interface JSONRPCRequest {
|
|
11
|
+
jsonrpc: "2.0";
|
|
12
|
+
id: string | number;
|
|
13
|
+
method: string;
|
|
14
|
+
params: Record<string, unknown> | undefined;
|
|
15
|
+
}
|
|
16
|
+
/** JSON-RPC response with a result. */
|
|
17
|
+
interface JSONRPCResponse {
|
|
18
|
+
jsonrpc: "2.0";
|
|
19
|
+
id: string | number;
|
|
20
|
+
result: unknown;
|
|
21
|
+
}
|
|
22
|
+
/** JSON-RPC error response. */
|
|
23
|
+
interface JSONRPCError {
|
|
24
|
+
jsonrpc: "2.0";
|
|
25
|
+
id: string | number;
|
|
26
|
+
error: {
|
|
27
|
+
code: number;
|
|
28
|
+
message: string;
|
|
29
|
+
data: unknown | undefined;
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
/** JSON-RPC notification with no `id`. */
|
|
33
|
+
interface JSONRPCNotification {
|
|
34
|
+
jsonrpc: "2.0";
|
|
35
|
+
method: string;
|
|
36
|
+
params: Record<string, unknown> | undefined;
|
|
37
|
+
}
|
|
38
|
+
/** Any JSON-RPC message. */
|
|
39
|
+
type JSONRPCMessage = JSONRPCRequest | JSONRPCResponse | JSONRPCError | JSONRPCNotification;
|
|
40
|
+
/** Checks whether a message is a JSON-RPC request. */
|
|
41
|
+
declare function isJSONRPCRequest(message: JSONRPCMessage): message is JSONRPCRequest;
|
|
42
|
+
/** Checks whether a message is a JSON-RPC response. */
|
|
43
|
+
declare function isJSONRPCResponse(message: JSONRPCMessage): message is JSONRPCResponse;
|
|
44
|
+
/** Checks whether a message is a JSON-RPC error. */
|
|
45
|
+
declare function isJSONRPCError(message: JSONRPCMessage): message is JSONRPCError;
|
|
46
|
+
/** Checks whether a message is a JSON-RPC notification. */
|
|
47
|
+
declare function isJSONRPCNotification(message: JSONRPCMessage): message is JSONRPCNotification;
|
|
48
|
+
//#endregion
|
|
49
|
+
export { JSONRPCError, JSONRPCMessage, JSONRPCNotification, JSONRPCRequest, JSONRPCResponse, JSONRPC_VERSION, isJSONRPCError, isJSONRPCNotification, isJSONRPCRequest, isJSONRPCResponse };
|
|
50
|
+
//# sourceMappingURL=json-rpc-message.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"json-rpc-message.d.mts","names":[],"sources":["../../../src/mcp/tool/json-rpc-message.ts"],"mappings":";;AAUA;;;;;cAAa,eAAA;;UAGI,cAAA;EACb,OAAA;EACA,EAAA;EACA,MAAA;EACA,MAAA,EAAQ,MAAA;AAAA;;UAIK,eAAA;EACb,OAAA;EACA,EAAA;EACA,MAAA;AAAA;;UAIa,YAAA;EACb,OAAA;EACA,EAAA;EACA,KAAA;IACI,IAAA;IACA,OAAA;IACA,IAAA;EAAA;AAAA;;UAKS,mBAAA;EACb,OAAA;EACA,MAAA;EACA,MAAA,EAAQ,MAAA;AAAA;;KAIA,cAAA,GAAiB,cAAA,GAAiB,eAAA,GAAkB,YAAA,GAAe,mBAAA;AAP/E;AAAA,iBAUgB,gBAAA,CAAiB,OAAA,EAAS,cAAA,GAAiB,OAAA,IAAW,cAAA;;iBAKtD,iBAAA,CAAkB,OAAA,EAAS,cAAA,GAAiB,OAAA,IAAW,eAAA;;iBAKvD,cAAA,CAAe,OAAA,EAAS,cAAA,GAAiB,OAAA,IAAW,YAAA;;iBAKpD,qBAAA,CAAsB,OAAA,EAAS,cAAA,GAAiB,OAAA,IAAW,mBAAA"}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
import { MCPClientError } from "../error/mcp-client-error.mjs";
|
|
2
|
+
import { isPlainRecord } from "@better-agent/shared/utils";
|
|
3
|
+
|
|
4
|
+
//#region src/mcp/tool/json-rpc-message.ts
|
|
5
|
+
/**
|
|
6
|
+
* JSON-RPC 2.0 message types for MCP communication.
|
|
7
|
+
*
|
|
8
|
+
* Follows the Model Context Protocol's JSON-RPC usage.
|
|
9
|
+
*/
|
|
10
|
+
/** JSON-RPC version. */
|
|
11
|
+
const JSONRPC_VERSION = "2.0";
|
|
12
|
+
/** Checks whether a message is a JSON-RPC request. */
|
|
13
|
+
function isJSONRPCRequest(message) {
|
|
14
|
+
return "id" in message && "method" in message && !("error" in message);
|
|
15
|
+
}
|
|
16
|
+
/** Checks whether a message is a JSON-RPC response. */
|
|
17
|
+
function isJSONRPCResponse(message) {
|
|
18
|
+
return "id" in message && "result" in message && !("error" in message);
|
|
19
|
+
}
|
|
20
|
+
/** Checks whether a message is a JSON-RPC error. */
|
|
21
|
+
function isJSONRPCError(message) {
|
|
22
|
+
return "id" in message && "error" in message;
|
|
23
|
+
}
|
|
24
|
+
/** Checks whether a message is a JSON-RPC notification. */
|
|
25
|
+
function isJSONRPCNotification(message) {
|
|
26
|
+
return !("id" in message) && "method" in message;
|
|
27
|
+
}
|
|
28
|
+
const isJsonRpcId = (value) => typeof value === "string" || typeof value === "number";
|
|
29
|
+
const isJsonRpcParams = (value) => value === void 0 || isPlainRecord(value);
|
|
30
|
+
/**
|
|
31
|
+
* Parses one JSON-RPC message.
|
|
32
|
+
*/
|
|
33
|
+
const parseJSONRPCMessage = (value) => {
|
|
34
|
+
if (!isPlainRecord(value)) throw new MCPClientError({ message: "Invalid JSON-RPC message: expected an object." });
|
|
35
|
+
if (value.jsonrpc !== JSONRPC_VERSION) throw new MCPClientError({ message: `Invalid JSON-RPC message: expected jsonrpc="${JSONRPC_VERSION}".` });
|
|
36
|
+
if ("method" in value) {
|
|
37
|
+
if (typeof value.method !== "string") throw new MCPClientError({ message: "Invalid JSON-RPC message: method must be a string." });
|
|
38
|
+
if (!isJsonRpcParams(value.params)) throw new MCPClientError({ message: "Invalid JSON-RPC message: params must be an object when present." });
|
|
39
|
+
if ("id" in value) {
|
|
40
|
+
if (!isJsonRpcId(value.id)) throw new MCPClientError({ message: "Invalid JSON-RPC request: id must be a string or number." });
|
|
41
|
+
return {
|
|
42
|
+
jsonrpc: JSONRPC_VERSION,
|
|
43
|
+
id: value.id,
|
|
44
|
+
method: value.method,
|
|
45
|
+
params: value.params
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
return {
|
|
49
|
+
jsonrpc: JSONRPC_VERSION,
|
|
50
|
+
method: value.method,
|
|
51
|
+
params: value.params
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
if ("result" in value) {
|
|
55
|
+
if (!("id" in value) || !isJsonRpcId(value.id)) throw new MCPClientError({ message: "Invalid JSON-RPC response: id must be a string or number." });
|
|
56
|
+
return {
|
|
57
|
+
jsonrpc: JSONRPC_VERSION,
|
|
58
|
+
id: value.id,
|
|
59
|
+
result: value.result
|
|
60
|
+
};
|
|
61
|
+
}
|
|
62
|
+
if ("error" in value) {
|
|
63
|
+
if (!("id" in value) || !isJsonRpcId(value.id)) throw new MCPClientError({ message: "Invalid JSON-RPC error: id must be a string or number." });
|
|
64
|
+
if (!isPlainRecord(value.error) || typeof value.error.code !== "number" || typeof value.error.message !== "string") throw new MCPClientError({ message: "Invalid JSON-RPC error: error must include numeric code and string message." });
|
|
65
|
+
return {
|
|
66
|
+
jsonrpc: JSONRPC_VERSION,
|
|
67
|
+
id: value.id,
|
|
68
|
+
error: {
|
|
69
|
+
code: value.error.code,
|
|
70
|
+
message: value.error.message,
|
|
71
|
+
data: value.error.data
|
|
72
|
+
}
|
|
73
|
+
};
|
|
74
|
+
}
|
|
75
|
+
throw new MCPClientError({ message: "Invalid JSON-RPC message: unrecognized shape." });
|
|
76
|
+
};
|
|
77
|
+
/**
|
|
78
|
+
* Parses either one JSON-RPC message or an array of messages.
|
|
79
|
+
*/
|
|
80
|
+
const parseJSONRPCMessageArray = (value) => Array.isArray(value) ? value.map(parseJSONRPCMessage) : [parseJSONRPCMessage(value)];
|
|
81
|
+
|
|
82
|
+
//#endregion
|
|
83
|
+
export { JSONRPC_VERSION, isJSONRPCError, isJSONRPCNotification, isJSONRPCRequest, isJSONRPCResponse, parseJSONRPCMessage, parseJSONRPCMessageArray };
|
|
84
|
+
//# sourceMappingURL=json-rpc-message.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"json-rpc-message.mjs","names":[],"sources":["../../../src/mcp/tool/json-rpc-message.ts"],"sourcesContent":["import { isPlainRecord } from \"@better-agent/shared/utils\";\nimport { MCPClientError } from \"../error/mcp-client-error\";\n\n/**\n * JSON-RPC 2.0 message types for MCP communication.\n *\n * Follows the Model Context Protocol's JSON-RPC usage.\n */\n\n/** JSON-RPC version. */\nexport const JSONRPC_VERSION = \"2.0\";\n\n/** JSON-RPC request. */\nexport interface JSONRPCRequest {\n jsonrpc: \"2.0\";\n id: string | number;\n method: string;\n params: Record<string, unknown> | undefined;\n}\n\n/** JSON-RPC response with a result. */\nexport interface JSONRPCResponse {\n jsonrpc: \"2.0\";\n id: string | number;\n result: unknown;\n}\n\n/** JSON-RPC error response. */\nexport interface JSONRPCError {\n jsonrpc: \"2.0\";\n id: string | number;\n error: {\n code: number;\n message: string;\n data: unknown | undefined;\n };\n}\n\n/** JSON-RPC notification with no `id`. */\nexport interface JSONRPCNotification {\n jsonrpc: \"2.0\";\n method: string;\n params: Record<string, unknown> | undefined;\n}\n\n/** Any JSON-RPC message. */\nexport type JSONRPCMessage = JSONRPCRequest | JSONRPCResponse | JSONRPCError | JSONRPCNotification;\n\n/** Checks whether a message is a JSON-RPC request. */\nexport function isJSONRPCRequest(message: JSONRPCMessage): message is JSONRPCRequest {\n return \"id\" in message && \"method\" in message && !(\"error\" in message);\n}\n\n/** Checks whether a message is a JSON-RPC response. */\nexport function isJSONRPCResponse(message: JSONRPCMessage): message is JSONRPCResponse {\n return \"id\" in message && \"result\" in message && !(\"error\" in message);\n}\n\n/** Checks whether a message is a JSON-RPC error. */\nexport function isJSONRPCError(message: JSONRPCMessage): message is JSONRPCError {\n return \"id\" in message && \"error\" in message;\n}\n\n/** Checks whether a message is a JSON-RPC notification. */\nexport function isJSONRPCNotification(message: JSONRPCMessage): message is JSONRPCNotification {\n return !(\"id\" in message) && \"method\" in message;\n}\n\nconst isJsonRpcId = (value: unknown): value is string | number =>\n typeof value === \"string\" || typeof value === \"number\";\n\nconst isJsonRpcParams = (value: unknown): value is Record<string, unknown> | undefined =>\n value === undefined || isPlainRecord(value);\n\n/**\n * Parses one JSON-RPC message.\n */\nexport const parseJSONRPCMessage = (value: unknown): JSONRPCMessage => {\n if (!isPlainRecord(value)) {\n throw new MCPClientError({\n message: \"Invalid JSON-RPC message: expected an object.\",\n });\n }\n\n if (value.jsonrpc !== JSONRPC_VERSION) {\n throw new MCPClientError({\n message: `Invalid JSON-RPC message: expected jsonrpc=\"${JSONRPC_VERSION}\".`,\n });\n }\n\n if (\"method\" in value) {\n if (typeof value.method !== \"string\") {\n throw new MCPClientError({\n message: \"Invalid JSON-RPC message: method must be a string.\",\n });\n }\n\n if (!isJsonRpcParams(value.params)) {\n throw new MCPClientError({\n message: \"Invalid JSON-RPC message: params must be an object when present.\",\n });\n }\n\n if (\"id\" in value) {\n if (!isJsonRpcId(value.id)) {\n throw new MCPClientError({\n message: \"Invalid JSON-RPC request: id must be a string or number.\",\n });\n }\n\n return {\n jsonrpc: JSONRPC_VERSION,\n id: value.id,\n method: value.method,\n params: value.params,\n };\n }\n\n return {\n jsonrpc: JSONRPC_VERSION,\n method: value.method,\n params: value.params,\n };\n }\n\n if (\"result\" in value) {\n if (!(\"id\" in value) || !isJsonRpcId(value.id)) {\n throw new MCPClientError({\n message: \"Invalid JSON-RPC response: id must be a string or number.\",\n });\n }\n\n return {\n jsonrpc: JSONRPC_VERSION,\n id: value.id,\n result: value.result,\n };\n }\n\n if (\"error\" in value) {\n if (!(\"id\" in value) || !isJsonRpcId(value.id)) {\n throw new MCPClientError({\n message: \"Invalid JSON-RPC error: id must be a string or number.\",\n });\n }\n\n if (\n !isPlainRecord(value.error) ||\n typeof value.error.code !== \"number\" ||\n typeof value.error.message !== \"string\"\n ) {\n throw new MCPClientError({\n message:\n \"Invalid JSON-RPC error: error must include numeric code and string message.\",\n });\n }\n\n return {\n jsonrpc: JSONRPC_VERSION,\n id: value.id,\n error: {\n code: value.error.code,\n message: value.error.message,\n data: value.error.data,\n },\n };\n }\n\n throw new MCPClientError({\n message: \"Invalid JSON-RPC message: unrecognized shape.\",\n });\n};\n\n/**\n * Parses either one JSON-RPC message or an array of messages.\n */\nexport const parseJSONRPCMessageArray = (value: unknown): JSONRPCMessage[] =>\n Array.isArray(value) ? value.map(parseJSONRPCMessage) : [parseJSONRPCMessage(value)];\n"],"mappings":";;;;;;;;;;AAUA,MAAa,kBAAkB;;AAuC/B,SAAgB,iBAAiB,SAAoD;AACjF,QAAO,QAAQ,WAAW,YAAY,WAAW,EAAE,WAAW;;;AAIlE,SAAgB,kBAAkB,SAAqD;AACnF,QAAO,QAAQ,WAAW,YAAY,WAAW,EAAE,WAAW;;;AAIlE,SAAgB,eAAe,SAAkD;AAC7E,QAAO,QAAQ,WAAW,WAAW;;;AAIzC,SAAgB,sBAAsB,SAAyD;AAC3F,QAAO,EAAE,QAAQ,YAAY,YAAY;;AAG7C,MAAM,eAAe,UACjB,OAAO,UAAU,YAAY,OAAO,UAAU;AAElD,MAAM,mBAAmB,UACrB,UAAU,UAAa,cAAc,MAAM;;;;AAK/C,MAAa,uBAAuB,UAAmC;AACnE,KAAI,CAAC,cAAc,MAAM,CACrB,OAAM,IAAI,eAAe,EACrB,SAAS,iDACZ,CAAC;AAGN,KAAI,MAAM,YAAY,gBAClB,OAAM,IAAI,eAAe,EACrB,SAAS,+CAA+C,gBAAgB,KAC3E,CAAC;AAGN,KAAI,YAAY,OAAO;AACnB,MAAI,OAAO,MAAM,WAAW,SACxB,OAAM,IAAI,eAAe,EACrB,SAAS,sDACZ,CAAC;AAGN,MAAI,CAAC,gBAAgB,MAAM,OAAO,CAC9B,OAAM,IAAI,eAAe,EACrB,SAAS,oEACZ,CAAC;AAGN,MAAI,QAAQ,OAAO;AACf,OAAI,CAAC,YAAY,MAAM,GAAG,CACtB,OAAM,IAAI,eAAe,EACrB,SAAS,4DACZ,CAAC;AAGN,UAAO;IACH,SAAS;IACT,IAAI,MAAM;IACV,QAAQ,MAAM;IACd,QAAQ,MAAM;IACjB;;AAGL,SAAO;GACH,SAAS;GACT,QAAQ,MAAM;GACd,QAAQ,MAAM;GACjB;;AAGL,KAAI,YAAY,OAAO;AACnB,MAAI,EAAE,QAAQ,UAAU,CAAC,YAAY,MAAM,GAAG,CAC1C,OAAM,IAAI,eAAe,EACrB,SAAS,6DACZ,CAAC;AAGN,SAAO;GACH,SAAS;GACT,IAAI,MAAM;GACV,QAAQ,MAAM;GACjB;;AAGL,KAAI,WAAW,OAAO;AAClB,MAAI,EAAE,QAAQ,UAAU,CAAC,YAAY,MAAM,GAAG,CAC1C,OAAM,IAAI,eAAe,EACrB,SAAS,0DACZ,CAAC;AAGN,MACI,CAAC,cAAc,MAAM,MAAM,IAC3B,OAAO,MAAM,MAAM,SAAS,YAC5B,OAAO,MAAM,MAAM,YAAY,SAE/B,OAAM,IAAI,eAAe,EACrB,SACI,+EACP,CAAC;AAGN,SAAO;GACH,SAAS;GACT,IAAI,MAAM;GACV,OAAO;IACH,MAAM,MAAM,MAAM;IAClB,SAAS,MAAM,MAAM;IACrB,MAAM,MAAM,MAAM;IACrB;GACJ;;AAGL,OAAM,IAAI,eAAe,EACrB,SAAS,iDACZ,CAAC;;;;;AAMN,MAAa,4BAA4B,UACrC,MAAM,QAAQ,MAAM,GAAG,MAAM,IAAI,oBAAoB,GAAG,CAAC,oBAAoB,MAAM,CAAC"}
|