@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.
Files changed (179) hide show
  1. package/README.md +3 -0
  2. package/dist/agent/constants.mjs +6 -0
  3. package/dist/agent/constants.mjs.map +1 -0
  4. package/dist/agent/define-agent.d.mts +29 -0
  5. package/dist/agent/define-agent.d.mts.map +1 -0
  6. package/dist/agent/define-agent.mjs +27 -0
  7. package/dist/agent/define-agent.mjs.map +1 -0
  8. package/dist/agent/index.d.mts +2 -0
  9. package/dist/agent/types.d.mts +216 -0
  10. package/dist/agent/types.d.mts.map +1 -0
  11. package/dist/agent/validation.mjs +64 -0
  12. package/dist/agent/validation.mjs.map +1 -0
  13. package/dist/api.d.mts +8 -0
  14. package/dist/api.d.mts.map +1 -0
  15. package/dist/api.mjs +63 -0
  16. package/dist/api.mjs.map +1 -0
  17. package/dist/app/config.mjs +43 -0
  18. package/dist/app/config.mjs.map +1 -0
  19. package/dist/app/create-app.d.mts +36 -0
  20. package/dist/app/create-app.d.mts.map +1 -0
  21. package/dist/app/create-app.mjs +132 -0
  22. package/dist/app/create-app.mjs.map +1 -0
  23. package/dist/app/registry.mjs +43 -0
  24. package/dist/app/registry.mjs.map +1 -0
  25. package/dist/app/types.d.mts +142 -0
  26. package/dist/app/types.d.mts.map +1 -0
  27. package/dist/events/constants.d.mts +49 -0
  28. package/dist/events/constants.d.mts.map +1 -0
  29. package/dist/events/constants.mjs +46 -0
  30. package/dist/events/constants.mjs.map +1 -0
  31. package/dist/events/index.d.mts +4 -0
  32. package/dist/events/index.mjs +3 -0
  33. package/dist/events/types.d.mts +289 -0
  34. package/dist/events/types.d.mts.map +1 -0
  35. package/dist/index.d.mts +23 -0
  36. package/dist/index.mjs +14 -0
  37. package/dist/internal/id.mjs +21 -0
  38. package/dist/internal/id.mjs.map +1 -0
  39. package/dist/internal/types.d.mts +11 -0
  40. package/dist/internal/types.d.mts.map +1 -0
  41. package/dist/mcp/error/mcp-client-error.d.mts +36 -0
  42. package/dist/mcp/error/mcp-client-error.d.mts.map +1 -0
  43. package/dist/mcp/error/mcp-client-error.mjs +33 -0
  44. package/dist/mcp/error/mcp-client-error.mjs.map +1 -0
  45. package/dist/mcp/index.d.mts +8 -0
  46. package/dist/mcp/index.mjs +9 -0
  47. package/dist/mcp/tool/json-rpc-message.d.mts +50 -0
  48. package/dist/mcp/tool/json-rpc-message.d.mts.map +1 -0
  49. package/dist/mcp/tool/json-rpc-message.mjs +84 -0
  50. package/dist/mcp/tool/json-rpc-message.mjs.map +1 -0
  51. package/dist/mcp/tool/mcp-client.d.mts +71 -0
  52. package/dist/mcp/tool/mcp-client.d.mts.map +1 -0
  53. package/dist/mcp/tool/mcp-client.mjs +304 -0
  54. package/dist/mcp/tool/mcp-client.mjs.map +1 -0
  55. package/dist/mcp/tool/mcp-http-transport.d.mts +62 -0
  56. package/dist/mcp/tool/mcp-http-transport.d.mts.map +1 -0
  57. package/dist/mcp/tool/mcp-http-transport.mjs +307 -0
  58. package/dist/mcp/tool/mcp-http-transport.mjs.map +1 -0
  59. package/dist/mcp/tool/mcp-tools.d.mts +20 -0
  60. package/dist/mcp/tool/mcp-tools.d.mts.map +1 -0
  61. package/dist/mcp/tool/mcp-tools.mjs +73 -0
  62. package/dist/mcp/tool/mcp-tools.mjs.map +1 -0
  63. package/dist/mcp/tool/mcp-transport.d.mts +81 -0
  64. package/dist/mcp/tool/mcp-transport.d.mts.map +1 -0
  65. package/dist/mcp/tool/mcp-transport.mjs +11 -0
  66. package/dist/mcp/tool/mcp-transport.mjs.map +1 -0
  67. package/dist/mcp/tool/types.d.mts +230 -0
  68. package/dist/mcp/tool/types.d.mts.map +1 -0
  69. package/dist/mcp/tool/types.mjs +19 -0
  70. package/dist/mcp/tool/types.mjs.map +1 -0
  71. package/dist/persistence/index.d.mts +3 -0
  72. package/dist/persistence/index.mjs +3 -0
  73. package/dist/persistence/memory.d.mts +21 -0
  74. package/dist/persistence/memory.d.mts.map +1 -0
  75. package/dist/persistence/memory.mjs +107 -0
  76. package/dist/persistence/memory.mjs.map +1 -0
  77. package/dist/persistence/types.d.mts +124 -0
  78. package/dist/persistence/types.d.mts.map +1 -0
  79. package/dist/plugins/index.d.mts +2 -0
  80. package/dist/plugins/runtime.d.mts +17 -0
  81. package/dist/plugins/runtime.d.mts.map +1 -0
  82. package/dist/plugins/runtime.mjs +456 -0
  83. package/dist/plugins/runtime.mjs.map +1 -0
  84. package/dist/plugins/types.d.mts +344 -0
  85. package/dist/plugins/types.d.mts.map +1 -0
  86. package/dist/providers/index.d.mts +9 -0
  87. package/dist/providers/index.mjs +0 -0
  88. package/dist/providers/types/capabilities.d.mts +153 -0
  89. package/dist/providers/types/capabilities.d.mts.map +1 -0
  90. package/dist/providers/types/content.d.mts +125 -0
  91. package/dist/providers/types/content.d.mts.map +1 -0
  92. package/dist/providers/types/conversation.d.mts +32 -0
  93. package/dist/providers/types/conversation.d.mts.map +1 -0
  94. package/dist/providers/types/index.d.mts +8 -0
  95. package/dist/providers/types/input.d.mts +74 -0
  96. package/dist/providers/types/input.d.mts.map +1 -0
  97. package/dist/providers/types/model.d.mts +68 -0
  98. package/dist/providers/types/model.d.mts.map +1 -0
  99. package/dist/providers/types/output.d.mts +29 -0
  100. package/dist/providers/types/output.d.mts.map +1 -0
  101. package/dist/providers/types/response.d.mts +35 -0
  102. package/dist/providers/types/response.d.mts.map +1 -0
  103. package/dist/providers/types/tool-calls.d.mts +51 -0
  104. package/dist/providers/types/tool-calls.d.mts.map +1 -0
  105. package/dist/run/agent-loop.mjs +231 -0
  106. package/dist/run/agent-loop.mjs.map +1 -0
  107. package/dist/run/event-queue.mjs +67 -0
  108. package/dist/run/event-queue.mjs.map +1 -0
  109. package/dist/run/execute-tool-calls.mjs +550 -0
  110. package/dist/run/execute-tool-calls.mjs.map +1 -0
  111. package/dist/run/execution.mjs +93 -0
  112. package/dist/run/execution.mjs.map +1 -0
  113. package/dist/run/helpers.mjs +466 -0
  114. package/dist/run/helpers.mjs.map +1 -0
  115. package/dist/run/hooks.mjs +124 -0
  116. package/dist/run/hooks.mjs.map +1 -0
  117. package/dist/run/index.d.mts +4 -0
  118. package/dist/run/messages.d.mts +8 -0
  119. package/dist/run/messages.d.mts.map +1 -0
  120. package/dist/run/messages.mjs +83 -0
  121. package/dist/run/messages.mjs.map +1 -0
  122. package/dist/run/model-strategy.mjs +105 -0
  123. package/dist/run/model-strategy.mjs.map +1 -0
  124. package/dist/run/output-errors.d.mts +75 -0
  125. package/dist/run/output-errors.d.mts.map +1 -0
  126. package/dist/run/pending-tools.d.mts +1 -0
  127. package/dist/run/pending-tools.mjs +185 -0
  128. package/dist/run/pending-tools.mjs.map +1 -0
  129. package/dist/run/registry.mjs +22 -0
  130. package/dist/run/registry.mjs.map +1 -0
  131. package/dist/run/runtime.d.mts +19 -0
  132. package/dist/run/runtime.d.mts.map +1 -0
  133. package/dist/run/runtime.mjs +491 -0
  134. package/dist/run/runtime.mjs.map +1 -0
  135. package/dist/run/stop-conditions.mjs +41 -0
  136. package/dist/run/stop-conditions.mjs.map +1 -0
  137. package/dist/run/types.d.mts +348 -0
  138. package/dist/run/types.d.mts.map +1 -0
  139. package/dist/schema/index.d.mts +2 -0
  140. package/dist/schema/resolve-json-schema.d.mts +12 -0
  141. package/dist/schema/resolve-json-schema.d.mts.map +1 -0
  142. package/dist/schema/resolve-json-schema.mjs +167 -0
  143. package/dist/schema/resolve-json-schema.mjs.map +1 -0
  144. package/dist/schema/types.d.mts +27 -0
  145. package/dist/schema/types.d.mts.map +1 -0
  146. package/dist/server/create-server.d.mts +21 -0
  147. package/dist/server/create-server.d.mts.map +1 -0
  148. package/dist/server/create-server.mjs +107 -0
  149. package/dist/server/create-server.mjs.map +1 -0
  150. package/dist/server/http.mjs +182 -0
  151. package/dist/server/http.mjs.map +1 -0
  152. package/dist/server/index.d.mts +3 -0
  153. package/dist/server/index.mjs +3 -0
  154. package/dist/server/routes.mjs +399 -0
  155. package/dist/server/routes.mjs.map +1 -0
  156. package/dist/server/types.d.mts +31 -0
  157. package/dist/server/types.d.mts.map +1 -0
  158. package/dist/tools/constants.d.mts +12 -0
  159. package/dist/tools/constants.d.mts.map +1 -0
  160. package/dist/tools/constants.mjs +13 -0
  161. package/dist/tools/constants.mjs.map +1 -0
  162. package/dist/tools/define-tool.d.mts +25 -0
  163. package/dist/tools/define-tool.d.mts.map +1 -0
  164. package/dist/tools/define-tool.mjs +76 -0
  165. package/dist/tools/define-tool.mjs.map +1 -0
  166. package/dist/tools/index.d.mts +5 -0
  167. package/dist/tools/lazy-tools.d.mts +49 -0
  168. package/dist/tools/lazy-tools.d.mts.map +1 -0
  169. package/dist/tools/lazy-tools.mjs +87 -0
  170. package/dist/tools/lazy-tools.mjs.map +1 -0
  171. package/dist/tools/resolve-tools.d.mts +12 -0
  172. package/dist/tools/resolve-tools.d.mts.map +1 -0
  173. package/dist/tools/resolve-tools.mjs +86 -0
  174. package/dist/tools/resolve-tools.mjs.map +1 -0
  175. package/dist/tools/types.d.mts +318 -0
  176. package/dist/tools/types.d.mts.map +1 -0
  177. package/dist/tools/validation.mjs +23 -0
  178. package/dist/tools/validation.mjs.map +1 -0
  179. package/package.json +72 -0
@@ -0,0 +1,230 @@
1
+ //#region src/mcp/tool/types.d.ts
2
+ /**
3
+ * Model Context Protocol (MCP) type definitions.
4
+ *
5
+ * Based on the MCP specification dated `2025-11-25`.
6
+ */
7
+ /** Latest MCP protocol version. */
8
+ declare const LATEST_PROTOCOL_VERSION = "2025-11-25";
9
+ /** Supported protocol versions. */
10
+ declare const SUPPORTED_PROTOCOL_VERSIONS: readonly ["2025-11-25", "2025-06-18", "2025-03-26", "2024-11-05"];
11
+ /** MCP server capabilities. */
12
+ interface ServerCapabilities {
13
+ /** Server supports logging notifications. */
14
+ logging?: Record<string, never>;
15
+ /** Server supports prompts. */
16
+ prompts?: {
17
+ /** Server supports `listChanged` notifications. */listChanged?: boolean;
18
+ };
19
+ /** Server supports resources. */
20
+ resources?: {
21
+ /** Server supports resource subscription. */subscribe?: boolean; /** Server supports `listChanged` notifications. */
22
+ listChanged?: boolean;
23
+ };
24
+ /** Server supports tools. */
25
+ tools?: {
26
+ /** Server supports `listChanged` notifications. */listChanged?: boolean;
27
+ };
28
+ /** Experimental capabilities. */
29
+ experimental?: Record<string, unknown>;
30
+ }
31
+ /** MCP client capabilities. */
32
+ interface ClientCapabilities {
33
+ /** Client supports receiving roots. */
34
+ roots?: {
35
+ /** Client supports `listChanged` notifications. */listChanged?: boolean;
36
+ };
37
+ /** Client supports sampling. */
38
+ sampling?: Record<string, never>;
39
+ /** Client supports elicitation. */
40
+ elicitation?: {
41
+ /** Whether to apply default values from schema. */applyDefaults?: boolean;
42
+ };
43
+ /** Experimental capabilities. */
44
+ experimental?: Record<string, unknown>;
45
+ }
46
+ /** Client or server implementation info. */
47
+ interface MCPImplementationInfo {
48
+ name: string;
49
+ version: string;
50
+ }
51
+ /** Initialize request params. */
52
+ interface InitializeParams {
53
+ protocolVersion: string;
54
+ capabilities: ClientCapabilities;
55
+ clientInfo: MCPImplementationInfo;
56
+ }
57
+ /** Initialize result. */
58
+ interface InitializeResult {
59
+ protocolVersion: string;
60
+ capabilities: ServerCapabilities;
61
+ serverInfo: MCPImplementationInfo;
62
+ /** Instructions for the client. */
63
+ instructions?: string;
64
+ }
65
+ /** Paginated request params. */
66
+ interface PaginatedRequest {
67
+ cursor?: string;
68
+ }
69
+ /** Paginated result base. */
70
+ interface PaginatedResult {
71
+ nextCursor?: string;
72
+ }
73
+ /** MCP tool definition. */
74
+ interface MCPTool {
75
+ /** Tool name. */
76
+ name: string;
77
+ /** Tool description. */
78
+ description?: string;
79
+ /** JSON Schema for tool input. */
80
+ inputSchema: {
81
+ type: "object";
82
+ properties?: Record<string, unknown>;
83
+ required?: string[];
84
+ $schema?: string;
85
+ };
86
+ /** Tool annotations. */
87
+ annotations?: {
88
+ /** Human-readable title. */title?: string; /** Whether the tool may perform destructive updates. */
89
+ destructive?: boolean; /** Whether the tool may return different results for the same input. */
90
+ idempotent?: boolean; /** Whether the tool may open UI. */
91
+ openWorld?: boolean; /** Whether the tool may read data. */
92
+ readOnly?: boolean;
93
+ };
94
+ /** Arbitrary metadata. */
95
+ _meta?: Record<string, unknown>;
96
+ }
97
+ /** List tools result. */
98
+ interface ListToolsResult extends PaginatedResult {
99
+ tools: MCPTool[];
100
+ }
101
+ /** Tool call request params. */
102
+ interface MCPCallToolParams {
103
+ /** Tool name. */
104
+ name: string;
105
+ /** Tool arguments. */
106
+ arguments?: Record<string, unknown>;
107
+ /** Additional metadata. */
108
+ _meta?: Record<string, unknown>;
109
+ }
110
+ /** Tool result content item. */
111
+ type ToolResultContent = {
112
+ type: "text";
113
+ text: string;
114
+ } | {
115
+ type: "image";
116
+ data: string;
117
+ mimeType: string;
118
+ } | {
119
+ type: "resource";
120
+ resource: MCPResource;
121
+ };
122
+ /** Tool call result. */
123
+ interface MCPCallToolResult {
124
+ /** Tool result content. */
125
+ content: ToolResultContent[];
126
+ /** Whether the result is an error. */
127
+ isError?: boolean;
128
+ /** Structured content, when available. */
129
+ structuredContent?: unknown;
130
+ }
131
+ /** MCP resource. */
132
+ interface MCPResource {
133
+ /** Resource URI. */
134
+ uri: string;
135
+ /** Resource name. */
136
+ name: string;
137
+ /** Resource description. */
138
+ description?: string;
139
+ /** MIME type. */
140
+ mimeType?: string;
141
+ /** Resource size in bytes, if known. */
142
+ size?: number;
143
+ /** Resource content. */
144
+ text?: string;
145
+ /** Binary content in base64 form. */
146
+ blob?: string;
147
+ }
148
+ /** List resources result. */
149
+ interface ListResourcesResult extends PaginatedResult {
150
+ resources: MCPResource[];
151
+ }
152
+ /** Resource template. */
153
+ interface MCPResourceTemplate {
154
+ /** URI template. */
155
+ uriTemplate: string;
156
+ /** Template name. */
157
+ name: string;
158
+ /** Template description. */
159
+ description?: string;
160
+ /** MIME type. */
161
+ mimeType?: string;
162
+ }
163
+ /** List resource templates result. */
164
+ interface ListResourceTemplatesResult extends PaginatedResult {
165
+ resourceTemplates: MCPResourceTemplate[];
166
+ }
167
+ /** Read resource request. */
168
+ interface MCPReadResourceParams {
169
+ /** Resource URI. */
170
+ uri: string;
171
+ }
172
+ /** Read resource result. */
173
+ interface MCPReadResourceResult {
174
+ contents: MCPResource[];
175
+ }
176
+ /** MCP prompt. */
177
+ interface MCPPrompt {
178
+ /** Prompt name. */
179
+ name: string;
180
+ /** Prompt description. */
181
+ description?: string;
182
+ /** Prompt arguments schema. */
183
+ arguments?: Array<{
184
+ /** Argument name. */name: string; /** Argument description. */
185
+ description?: string; /** Whether the argument is required. */
186
+ required?: boolean;
187
+ }>;
188
+ }
189
+ /** List prompts result. */
190
+ interface ListPromptsResult extends PaginatedResult {
191
+ prompts: MCPPrompt[];
192
+ }
193
+ /** Get prompt request. */
194
+ interface MCPGetPromptParams {
195
+ /** Prompt name. */
196
+ name: string;
197
+ /** Prompt arguments. */
198
+ arguments?: Record<string, string>;
199
+ }
200
+ /** Prompt message */
201
+ type PromptMessage = {
202
+ role: "user";
203
+ content: {
204
+ type: "text";
205
+ text: string;
206
+ };
207
+ } | {
208
+ role: "assistant";
209
+ content: {
210
+ type: "text";
211
+ text: string;
212
+ };
213
+ };
214
+ /** Get prompt result */
215
+ interface MCPGetPromptResult {
216
+ /** Prompt description */
217
+ description?: string;
218
+ /** Prompt messages */
219
+ messages: PromptMessage[];
220
+ }
221
+ /** Request options for MCP operations */
222
+ interface RequestOptions {
223
+ /** Abort signal for cancellation */
224
+ signal?: AbortSignal;
225
+ /** Timeout in milliseconds */
226
+ timeout?: number;
227
+ }
228
+ //#endregion
229
+ export { 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 };
230
+ //# sourceMappingURL=types.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.mts","names":[],"sources":["../../../src/mcp/tool/types.ts"],"mappings":";;AAOA;;;;;cAAa,uBAAA;;cAGA,2BAAA;;UAQI,kBAAA;EAAA;EAEb,OAAA,GAAU,MAAA;;EAGV,OAAA;IAHA,mDAKI,WAAA;EAAA;EAAA;EAIJ,SAAA;IAEI,6CAAA,SAAA,YAMJ;IAJI,WAAA;EAAA;EAUW;EANf,KAAA;IAMqB,mDAJjB,WAAA;EAAA;;EAIJ,YAAA,GAAe,MAAA;AAAA;;UAIF,kBAAA;EAQF;EANX,KAAA;IAWI,mDATA,WAAA;EAAA;EAaiB;EATrB,QAAA,GAAW,MAAA;EAaE;EAVb,WAAA;IAUkC,mDAR9B,aAAA;EAAA;EAcS;EAVb,YAAA,GAAe,MAAA;AAAA;;UAIF,qBAAA;EACb,IAAA;EACA,OAAA;AAAA;;UAIa,gBAAA;EACb,eAAA;EACA,YAAA,EAAc,kBAAA;EACd,UAAA,EAAY,qBAAA;AAAA;;UAIC,gBAAA;EACb,eAAA;EACA,YAAA,EAAc,kBAAA;EACd,UAAA,EAAY,qBAAA;EAAA;EAEZ,YAAA;AAAA;;UAIa,gBAAA;EACb,MAAA;AAAA;;UAIa,eAAA;EACb,UAAA;AAAA;;UAIa,OAAA;EAJH;EAMV,IAAA;EAFoB;EAKpB,WAAA;EAyBc;EAtBd,WAAA;IACI,IAAA;IACA,UAAA,GAAa,MAAA;IACb,QAAA;IACA,OAAA;EAAA;EADA;EAKJ,WAAA;IAAA,4BAEI,KAAA,WAEA;IAAA,WAAA,YAIA;IAFA,UAAA,YAQJ;IANI,SAAA,YAMU;IAJV,QAAA;EAAA;EAQyB;EAJ7B,KAAA,GAAQ,MAAA;AAAA;;UAIK,eAAA,SAAwB,eAAA;EACrC,KAAA,EAAO,OAAA;AAAA;;UAIM,iBAAA;EAAiB;EAE9B,IAAA;EAMc;EAHd,SAAA,GAAY,MAAA;EAAZ;EAGA,KAAA,GAAQ,MAAA;AAAA;;KAIA,iBAAA;EACJ,IAAA;EAAc,IAAA;AAAA;EACd,IAAA;EAAe,IAAA;EAAc,QAAA;AAAA;EAC7B,IAAA;EAAkB,QAAA,EAAU,WAAA;AAAA;;UAGnB,iBAAA;EAHmB;EAKhC,OAAA,EAAS,iBAAA;EALkC;EAQ3C,OAAA;EAL8B;EAQ9B,iBAAA;AAAA;;UAIa,WAAA;EAPb;EASA,GAAA;EANiB;EASjB,IAAA;EALa;EAQb,WAAA;;EAGA,QAAA;EATA;EAYA,IAAA;EANA;EASA,IAAA;EAHA;EAMA,IAAA;AAAA;;UAIa,mBAAA,SAA4B,eAAA;EACzC,SAAA,EAAW,WAAA;AAAA;;UAIE,mBAAA;EAL4B;EAOzC,WAAA;EANW;EASX,IAAA;EATsB;EAYtB,WAAA;EARgC;EAWhC,QAAA;AAAA;;UAIa,2BAAA,SAAoC,eAAA;EACjD,iBAAA,EAAmB,mBAAA;AAAA;;UAIN,qBAAA;EALA;EAOb,GAAA;AAAA;;UAIa,qBAAA;EACb,QAAA,EAAU,WAAA;AAAA;;UAIG,SAAA;EAXA;EAab,IAAA;;EAGA,WAAA;EAdG;EAiBH,SAAA,GAAY,KAAA;IAbsB,qBAe9B,IAAA,UAdM;IAgBN,WAAA,WAZS;IAcT,QAAA;EAAA;AAAA;;UAKS,iBAAA,SAA0B,eAAA;EACvC,OAAA,EAAS,SAAA;AAAA;;UAII,kBAAA;EAVT;EAYJ,IAAA;EAZY;EAeZ,SAAA,GAAY,MAAA;AAAA;;KAIJ,aAAA;EACJ,IAAA;EAAc,OAAA;IAAW,IAAA;IAAc,IAAA;EAAA;AAAA;EACvC,IAAA;EAAmB,OAAA;IAAW,IAAA;IAAc,IAAA;EAAA;AAAA;;UAGnC,kBAAA;EALL;EAOR,WAAA;;EAGA,QAAA,EAAU,aAAA;AAAA;;UAIG,cAAA;EAb8B;EAe3C,MAAA,GAAS,WAAA;EAdc;EAiBvB,OAAA;AAAA"}
@@ -0,0 +1,19 @@
1
+ //#region src/mcp/tool/types.ts
2
+ /**
3
+ * Model Context Protocol (MCP) type definitions.
4
+ *
5
+ * Based on the MCP specification dated `2025-11-25`.
6
+ */
7
+ /** Latest MCP protocol version. */
8
+ const LATEST_PROTOCOL_VERSION = "2025-11-25";
9
+ /** Supported protocol versions. */
10
+ const SUPPORTED_PROTOCOL_VERSIONS = [
11
+ LATEST_PROTOCOL_VERSION,
12
+ "2025-06-18",
13
+ "2025-03-26",
14
+ "2024-11-05"
15
+ ];
16
+
17
+ //#endregion
18
+ export { LATEST_PROTOCOL_VERSION, SUPPORTED_PROTOCOL_VERSIONS };
19
+ //# sourceMappingURL=types.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.mjs","names":[],"sources":["../../../src/mcp/tool/types.ts"],"sourcesContent":["/**\n * Model Context Protocol (MCP) type definitions.\n *\n * Based on the MCP specification dated `2025-11-25`.\n */\n\n/** Latest MCP protocol version. */\nexport const LATEST_PROTOCOL_VERSION = \"2025-11-25\";\n\n/** Supported protocol versions. */\nexport const SUPPORTED_PROTOCOL_VERSIONS = [\n LATEST_PROTOCOL_VERSION,\n \"2025-06-18\",\n \"2025-03-26\",\n \"2024-11-05\",\n] as const;\n\n/** MCP server capabilities. */\nexport interface ServerCapabilities {\n /** Server supports logging notifications. */\n logging?: Record<string, never>;\n\n /** Server supports prompts. */\n prompts?: {\n /** Server supports `listChanged` notifications. */\n listChanged?: boolean;\n };\n\n /** Server supports resources. */\n resources?: {\n /** Server supports resource subscription. */\n subscribe?: boolean;\n /** Server supports `listChanged` notifications. */\n listChanged?: boolean;\n };\n\n /** Server supports tools. */\n tools?: {\n /** Server supports `listChanged` notifications. */\n listChanged?: boolean;\n };\n\n /** Experimental capabilities. */\n experimental?: Record<string, unknown>;\n}\n\n/** MCP client capabilities. */\nexport interface ClientCapabilities {\n /** Client supports receiving roots. */\n roots?: {\n /** Client supports `listChanged` notifications. */\n listChanged?: boolean;\n };\n\n /** Client supports sampling. */\n sampling?: Record<string, never>;\n\n /** Client supports elicitation. */\n elicitation?: {\n /** Whether to apply default values from schema. */\n applyDefaults?: boolean;\n };\n\n /** Experimental capabilities. */\n experimental?: Record<string, unknown>;\n}\n\n/** Client or server implementation info. */\nexport interface MCPImplementationInfo {\n name: string;\n version: string;\n}\n\n/** Initialize request params. */\nexport interface InitializeParams {\n protocolVersion: string;\n capabilities: ClientCapabilities;\n clientInfo: MCPImplementationInfo;\n}\n\n/** Initialize result. */\nexport interface InitializeResult {\n protocolVersion: string;\n capabilities: ServerCapabilities;\n serverInfo: MCPImplementationInfo;\n /** Instructions for the client. */\n instructions?: string;\n}\n\n/** Paginated request params. */\nexport interface PaginatedRequest {\n cursor?: string;\n}\n\n/** Paginated result base. */\nexport interface PaginatedResult {\n nextCursor?: string;\n}\n\n/** MCP tool definition. */\nexport interface MCPTool {\n /** Tool name. */\n name: string;\n\n /** Tool description. */\n description?: string;\n\n /** JSON Schema for tool input. */\n inputSchema: {\n type: \"object\";\n properties?: Record<string, unknown>;\n required?: string[];\n $schema?: string;\n };\n\n /** Tool annotations. */\n annotations?: {\n /** Human-readable title. */\n title?: string;\n /** Whether the tool may perform destructive updates. */\n destructive?: boolean;\n /** Whether the tool may return different results for the same input. */\n idempotent?: boolean;\n /** Whether the tool may open UI. */\n openWorld?: boolean;\n /** Whether the tool may read data. */\n readOnly?: boolean;\n };\n\n /** Arbitrary metadata. */\n _meta?: Record<string, unknown>;\n}\n\n/** List tools result. */\nexport interface ListToolsResult extends PaginatedResult {\n tools: MCPTool[];\n}\n\n/** Tool call request params. */\nexport interface MCPCallToolParams {\n /** Tool name. */\n name: string;\n\n /** Tool arguments. */\n arguments?: Record<string, unknown>;\n\n /** Additional metadata. */\n _meta?: Record<string, unknown>;\n}\n\n/** Tool result content item. */\nexport type ToolResultContent =\n | { type: \"text\"; text: string }\n | { type: \"image\"; data: string; mimeType: string }\n | { type: \"resource\"; resource: MCPResource };\n\n/** Tool call result. */\nexport interface MCPCallToolResult {\n /** Tool result content. */\n content: ToolResultContent[];\n\n /** Whether the result is an error. */\n isError?: boolean;\n\n /** Structured content, when available. */\n structuredContent?: unknown;\n}\n\n/** MCP resource. */\nexport interface MCPResource {\n /** Resource URI. */\n uri: string;\n\n /** Resource name. */\n name: string;\n\n /** Resource description. */\n description?: string;\n\n /** MIME type. */\n mimeType?: string;\n\n /** Resource size in bytes, if known. */\n size?: number;\n\n /** Resource content. */\n text?: string;\n\n /** Binary content in base64 form. */\n blob?: string;\n}\n\n/** List resources result. */\nexport interface ListResourcesResult extends PaginatedResult {\n resources: MCPResource[];\n}\n\n/** Resource template. */\nexport interface MCPResourceTemplate {\n /** URI template. */\n uriTemplate: string;\n\n /** Template name. */\n name: string;\n\n /** Template description. */\n description?: string;\n\n /** MIME type. */\n mimeType?: string;\n}\n\n/** List resource templates result. */\nexport interface ListResourceTemplatesResult extends PaginatedResult {\n resourceTemplates: MCPResourceTemplate[];\n}\n\n/** Read resource request. */\nexport interface MCPReadResourceParams {\n /** Resource URI. */\n uri: string;\n}\n\n/** Read resource result. */\nexport interface MCPReadResourceResult {\n contents: MCPResource[];\n}\n\n/** MCP prompt. */\nexport interface MCPPrompt {\n /** Prompt name. */\n name: string;\n\n /** Prompt description. */\n description?: string;\n\n /** Prompt arguments schema. */\n arguments?: Array<{\n /** Argument name. */\n name: string;\n /** Argument description. */\n description?: string;\n /** Whether the argument is required. */\n required?: boolean;\n }>;\n}\n\n/** List prompts result. */\nexport interface ListPromptsResult extends PaginatedResult {\n prompts: MCPPrompt[];\n}\n\n/** Get prompt request. */\nexport interface MCPGetPromptParams {\n /** Prompt name. */\n name: string;\n\n /** Prompt arguments. */\n arguments?: Record<string, string>;\n}\n\n/** Prompt message */\nexport type PromptMessage =\n | { role: \"user\"; content: { type: \"text\"; text: string } }\n | { role: \"assistant\"; content: { type: \"text\"; text: string } };\n\n/** Get prompt result */\nexport interface MCPGetPromptResult {\n /** Prompt description */\n description?: string;\n\n /** Prompt messages */\n messages: PromptMessage[];\n}\n\n/** Request options for MCP operations */\nexport interface RequestOptions {\n /** Abort signal for cancellation */\n signal?: AbortSignal;\n\n /** Timeout in milliseconds */\n timeout?: number;\n}\n"],"mappings":";;;;;;;AAOA,MAAa,0BAA0B;;AAGvC,MAAa,8BAA8B;CACvC;CACA;CACA;CACA;CACH"}
@@ -0,0 +1,3 @@
1
+ import { ConversationCursor, ConversationRunStatus, ConversationRuntimeState, ConversationRuntimeStateStore, ConversationStore, InMemoryStreamStoreOptions, LoadConversationParams, LoadedConversation, SaveConversationParams, SaveConversationResult, StreamEvent, StreamStore } from "./types.mjs";
2
+ import { createMemoryConversationRuntimeStateStore, createMemoryConversationStore, createMemoryStreamStore } from "./memory.mjs";
3
+ export { ConversationCursor, ConversationRunStatus, ConversationRuntimeState, ConversationRuntimeStateStore, ConversationStore, InMemoryStreamStoreOptions, LoadConversationParams, LoadedConversation, SaveConversationParams, SaveConversationResult, StreamEvent, StreamStore, createMemoryConversationRuntimeStateStore, createMemoryConversationStore, createMemoryStreamStore };
@@ -0,0 +1,3 @@
1
+ import { createMemoryConversationRuntimeStateStore, createMemoryConversationStore, createMemoryStreamStore } from "./memory.mjs";
2
+
3
+ export { createMemoryConversationRuntimeStateStore, createMemoryConversationStore, createMemoryStreamStore };
@@ -0,0 +1,21 @@
1
+ import { ConversationRuntimeStateStore, ConversationStore, InMemoryStreamStoreOptions, StreamStore } from "./types.mjs";
2
+
3
+ //#region src/persistence/memory.d.ts
4
+ /**
5
+ * Creates an in-memory stream store.
6
+ */
7
+ declare function createMemoryStreamStore(options?: InMemoryStreamStoreOptions): StreamStore;
8
+ /**
9
+ * Creates an in-memory conversation runtime-state store.
10
+ */
11
+ declare function createMemoryConversationRuntimeStateStore(): ConversationRuntimeStateStore;
12
+ /**
13
+ * Creates an in-memory conversation store with optimistic concurrency cursors.
14
+ *
15
+ * Useful for local development, tests, and simple single-process deployments.
16
+ * Data is not persisted across process restarts.
17
+ */
18
+ declare function createMemoryConversationStore(): ConversationStore<number>;
19
+ //#endregion
20
+ export { createMemoryConversationRuntimeStateStore, createMemoryConversationStore, createMemoryStreamStore };
21
+ //# sourceMappingURL=memory.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"memory.d.mts","names":[],"sources":["../../src/persistence/memory.ts"],"mappings":";;;;;AAqBA;iBAAgB,uBAAA,CAAwB,OAAA,GAAU,0BAAA,GAA6B,WAAA;;;;iBAqE/D,yCAAA,CAAA,GAA6C,6BAAA;;;;AAA7D;;;iBAuBgB,6BAAA,CAAA,GAAiC,iBAAA"}
@@ -0,0 +1,107 @@
1
+ import { BetterAgentError } from "@better-agent/shared/errors";
2
+
3
+ //#region src/persistence/memory.ts
4
+ /**
5
+ * Creates an in-memory stream store.
6
+ */
7
+ function createMemoryStreamStore(options) {
8
+ const streams = /* @__PURE__ */ new Map();
9
+ const wait = (ms) => new Promise((resolve) => setTimeout(resolve, ms));
10
+ const resumePollMs = options?.advanced?.resumePollMs ?? 25;
11
+ if (!Number.isFinite(resumePollMs) || resumePollMs <= 0) throw BetterAgentError.fromCode("VALIDATION_FAILED", "advanced.resumePollMs must be a positive number.", {
12
+ context: { resumePollMs },
13
+ trace: [{ at: "core.persistence.createMemoryStreamStore" }]
14
+ });
15
+ return {
16
+ async open(streamId, meta) {
17
+ streams.set(streamId, {
18
+ meta,
19
+ events: [],
20
+ active: true
21
+ });
22
+ },
23
+ async append(streamId, event) {
24
+ const stream = streams.get(streamId);
25
+ if (!stream) throw new Error(`Stream ${streamId} not found`);
26
+ stream.events.push(event);
27
+ },
28
+ async close(streamId) {
29
+ const stream = streams.get(streamId);
30
+ if (stream) stream.active = false;
31
+ },
32
+ async *resume(streamId, afterSeq = -1) {
33
+ let nextSeq = afterSeq;
34
+ while (true) {
35
+ const stream = streams.get(streamId);
36
+ if (!stream) return;
37
+ let yielded = false;
38
+ for (const event of stream.events) {
39
+ if (event.seq <= nextSeq) continue;
40
+ yielded = true;
41
+ nextSeq = event.seq;
42
+ yield event;
43
+ }
44
+ if (!stream.active) return;
45
+ if (!yielded) await wait(resumePollMs);
46
+ }
47
+ }
48
+ };
49
+ }
50
+ /**
51
+ * Creates an in-memory conversation runtime-state store.
52
+ */
53
+ function createMemoryConversationRuntimeStateStore() {
54
+ const states = /* @__PURE__ */ new Map();
55
+ const getKey = (conversationId, agentName) => `${agentName}:${conversationId}`;
56
+ return {
57
+ async get({ conversationId, agentName }) {
58
+ return states.get(getKey(conversationId, agentName)) ?? null;
59
+ },
60
+ async set(state) {
61
+ states.set(getKey(state.conversationId, state.agentName), { ...state });
62
+ },
63
+ async clear({ conversationId, agentName }) {
64
+ states.delete(getKey(conversationId, agentName));
65
+ }
66
+ };
67
+ }
68
+ /**
69
+ * Creates an in-memory conversation store with optimistic concurrency cursors.
70
+ *
71
+ * Useful for local development, tests, and simple single-process deployments.
72
+ * Data is not persisted across process restarts.
73
+ */
74
+ function createMemoryConversationStore() {
75
+ const conversations = /* @__PURE__ */ new Map();
76
+ const getConversationKey = (conversationId, agentName) => `${agentName}:${conversationId}`;
77
+ return {
78
+ async load({ conversationId, agentName }) {
79
+ const entry = conversations.get(getConversationKey(conversationId, agentName));
80
+ return entry ? {
81
+ items: [...entry.items],
82
+ cursor: entry.version
83
+ } : null;
84
+ },
85
+ async save({ conversationId, agentName, items, expectedCursor }) {
86
+ const key = getConversationKey(conversationId, agentName);
87
+ const entry = conversations.get(key);
88
+ if (entry && expectedCursor !== void 0 && entry.version !== expectedCursor) throw BetterAgentError.fromCode("CONFLICT", "Conversation was updated in another session.", {
89
+ context: {
90
+ conversationId,
91
+ agentName
92
+ },
93
+ trace: [{ at: "core.persistence.createMemoryConversationStore.save" }]
94
+ });
95
+ const version = (entry?.version ?? 0) + 1;
96
+ conversations.set(key, {
97
+ items: [...items],
98
+ version
99
+ });
100
+ return { cursor: version };
101
+ }
102
+ };
103
+ }
104
+
105
+ //#endregion
106
+ export { createMemoryConversationRuntimeStateStore, createMemoryConversationStore, createMemoryStreamStore };
107
+ //# sourceMappingURL=memory.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"memory.mjs","names":[],"sources":["../../src/persistence/memory.ts"],"sourcesContent":["import { BetterAgentError } from \"@better-agent/shared/errors\";\nimport type { ConversationItem } from \"../providers\";\nimport type {\n ConversationRuntimeState,\n ConversationRuntimeStateStore,\n ConversationStore,\n InMemoryStreamStoreOptions,\n StreamEvent,\n StreamStore,\n} from \"./types\";\n\n// Internal state for one in-memory stream.\ninterface MemoryStreamState {\n meta: { runId: string };\n events: StreamEvent[];\n active: boolean;\n}\n\n/**\n * Creates an in-memory stream store.\n */\nexport function createMemoryStreamStore(options?: InMemoryStreamStoreOptions): StreamStore {\n const streams = new Map<string, MemoryStreamState>();\n\n const wait = (ms: number) => new Promise<void>((resolve) => setTimeout(resolve, ms));\n\n const resumePollMs = options?.advanced?.resumePollMs ?? 25;\n if (!Number.isFinite(resumePollMs) || resumePollMs <= 0) {\n throw BetterAgentError.fromCode(\n \"VALIDATION_FAILED\",\n \"advanced.resumePollMs must be a positive number.\",\n {\n context: { resumePollMs },\n trace: [{ at: \"core.persistence.createMemoryStreamStore\" }],\n },\n );\n }\n\n return {\n async open(streamId: string, meta: { runId: string }): Promise<void> {\n streams.set(streamId, {\n meta,\n events: [],\n active: true,\n });\n },\n\n async append(streamId: string, event: StreamEvent): Promise<void> {\n const stream = streams.get(streamId);\n if (!stream) throw new Error(`Stream ${streamId} not found`);\n stream.events.push(event);\n },\n\n async close(streamId: string): Promise<void> {\n const stream = streams.get(streamId);\n if (stream) stream.active = false;\n },\n\n async *resume(streamId: string, afterSeq = -1): AsyncIterable<StreamEvent> {\n let nextSeq = afterSeq;\n\n while (true) {\n const stream = streams.get(streamId);\n if (!stream) {\n return;\n }\n\n let yielded = false;\n for (const event of stream.events) {\n if (event.seq <= nextSeq) continue;\n yielded = true;\n nextSeq = event.seq;\n yield event;\n }\n\n if (!stream.active) {\n return;\n }\n\n if (!yielded) {\n await wait(resumePollMs);\n }\n }\n },\n };\n}\n\n/**\n * Creates an in-memory conversation runtime-state store.\n */\nexport function createMemoryConversationRuntimeStateStore(): ConversationRuntimeStateStore {\n const states = new Map<string, ConversationRuntimeState>();\n const getKey = (conversationId: string, agentName: string) => `${agentName}:${conversationId}`;\n\n return {\n async get({ conversationId, agentName }) {\n return states.get(getKey(conversationId, agentName)) ?? null;\n },\n async set(state) {\n states.set(getKey(state.conversationId, state.agentName), { ...state });\n },\n async clear({ conversationId, agentName }) {\n states.delete(getKey(conversationId, agentName));\n },\n };\n}\n\n/**\n * Creates an in-memory conversation store with optimistic concurrency cursors.\n *\n * Useful for local development, tests, and simple single-process deployments.\n * Data is not persisted across process restarts.\n */\nexport function createMemoryConversationStore(): ConversationStore<number> {\n const conversations = new Map<string, { items: ConversationItem[]; version: number }>();\n const getConversationKey = (conversationId: string, agentName: string) =>\n `${agentName}:${conversationId}`;\n\n return {\n async load({ conversationId, agentName }) {\n const entry = conversations.get(getConversationKey(conversationId, agentName));\n return entry ? { items: [...entry.items], cursor: entry.version } : null;\n },\n async save({ conversationId, agentName, items, expectedCursor }) {\n const key = getConversationKey(conversationId, agentName);\n const entry = conversations.get(key);\n if (entry && expectedCursor !== undefined && entry.version !== expectedCursor) {\n throw BetterAgentError.fromCode(\n \"CONFLICT\",\n \"Conversation was updated in another session.\",\n {\n context: { conversationId, agentName },\n trace: [{ at: \"core.persistence.createMemoryConversationStore.save\" }],\n },\n );\n }\n\n const version = (entry?.version ?? 0) + 1;\n conversations.set(key, {\n items: [...items],\n version,\n });\n return { cursor: version };\n },\n };\n}\n"],"mappings":";;;;;;AAqBA,SAAgB,wBAAwB,SAAmD;CACvF,MAAM,0BAAU,IAAI,KAAgC;CAEpD,MAAM,QAAQ,OAAe,IAAI,SAAe,YAAY,WAAW,SAAS,GAAG,CAAC;CAEpF,MAAM,eAAe,SAAS,UAAU,gBAAgB;AACxD,KAAI,CAAC,OAAO,SAAS,aAAa,IAAI,gBAAgB,EAClD,OAAM,iBAAiB,SACnB,qBACA,oDACA;EACI,SAAS,EAAE,cAAc;EACzB,OAAO,CAAC,EAAE,IAAI,4CAA4C,CAAC;EAC9D,CACJ;AAGL,QAAO;EACH,MAAM,KAAK,UAAkB,MAAwC;AACjE,WAAQ,IAAI,UAAU;IAClB;IACA,QAAQ,EAAE;IACV,QAAQ;IACX,CAAC;;EAGN,MAAM,OAAO,UAAkB,OAAmC;GAC9D,MAAM,SAAS,QAAQ,IAAI,SAAS;AACpC,OAAI,CAAC,OAAQ,OAAM,IAAI,MAAM,UAAU,SAAS,YAAY;AAC5D,UAAO,OAAO,KAAK,MAAM;;EAG7B,MAAM,MAAM,UAAiC;GACzC,MAAM,SAAS,QAAQ,IAAI,SAAS;AACpC,OAAI,OAAQ,QAAO,SAAS;;EAGhC,OAAO,OAAO,UAAkB,WAAW,IAAgC;GACvE,IAAI,UAAU;AAEd,UAAO,MAAM;IACT,MAAM,SAAS,QAAQ,IAAI,SAAS;AACpC,QAAI,CAAC,OACD;IAGJ,IAAI,UAAU;AACd,SAAK,MAAM,SAAS,OAAO,QAAQ;AAC/B,SAAI,MAAM,OAAO,QAAS;AAC1B,eAAU;AACV,eAAU,MAAM;AAChB,WAAM;;AAGV,QAAI,CAAC,OAAO,OACR;AAGJ,QAAI,CAAC,QACD,OAAM,KAAK,aAAa;;;EAIvC;;;;;AAML,SAAgB,4CAA2E;CACvF,MAAM,yBAAS,IAAI,KAAuC;CAC1D,MAAM,UAAU,gBAAwB,cAAsB,GAAG,UAAU,GAAG;AAE9E,QAAO;EACH,MAAM,IAAI,EAAE,gBAAgB,aAAa;AACrC,UAAO,OAAO,IAAI,OAAO,gBAAgB,UAAU,CAAC,IAAI;;EAE5D,MAAM,IAAI,OAAO;AACb,UAAO,IAAI,OAAO,MAAM,gBAAgB,MAAM,UAAU,EAAE,EAAE,GAAG,OAAO,CAAC;;EAE3E,MAAM,MAAM,EAAE,gBAAgB,aAAa;AACvC,UAAO,OAAO,OAAO,gBAAgB,UAAU,CAAC;;EAEvD;;;;;;;;AASL,SAAgB,gCAA2D;CACvE,MAAM,gCAAgB,IAAI,KAA6D;CACvF,MAAM,sBAAsB,gBAAwB,cAChD,GAAG,UAAU,GAAG;AAEpB,QAAO;EACH,MAAM,KAAK,EAAE,gBAAgB,aAAa;GACtC,MAAM,QAAQ,cAAc,IAAI,mBAAmB,gBAAgB,UAAU,CAAC;AAC9E,UAAO,QAAQ;IAAE,OAAO,CAAC,GAAG,MAAM,MAAM;IAAE,QAAQ,MAAM;IAAS,GAAG;;EAExE,MAAM,KAAK,EAAE,gBAAgB,WAAW,OAAO,kBAAkB;GAC7D,MAAM,MAAM,mBAAmB,gBAAgB,UAAU;GACzD,MAAM,QAAQ,cAAc,IAAI,IAAI;AACpC,OAAI,SAAS,mBAAmB,UAAa,MAAM,YAAY,eAC3D,OAAM,iBAAiB,SACnB,YACA,gDACA;IACI,SAAS;KAAE;KAAgB;KAAW;IACtC,OAAO,CAAC,EAAE,IAAI,uDAAuD,CAAC;IACzE,CACJ;GAGL,MAAM,WAAW,OAAO,WAAW,KAAK;AACxC,iBAAc,IAAI,KAAK;IACnB,OAAO,CAAC,GAAG,MAAM;IACjB;IACH,CAAC;AACF,UAAO,EAAE,QAAQ,SAAS;;EAEjC"}
@@ -0,0 +1,124 @@
1
+ import { ConversationItem } from "../providers/types/conversation.mjs";
2
+ import { Event } from "../events/types.mjs";
3
+ //#region src/persistence/types.d.ts
4
+ /**
5
+ * Stores stream events so they can be resumed later.
6
+ */
7
+ interface StreamStore {
8
+ /** Start a new stream. */
9
+ open(streamId: string, meta: {
10
+ runId: string;
11
+ }): Promise<void>;
12
+ /** Save one event into the stream. */
13
+ append(streamId: string, event: StreamEvent): Promise<void>;
14
+ /** Mark the stream as finished. */
15
+ close(streamId: string): Promise<void>;
16
+ /**
17
+ * Resume a stream after a given event number.
18
+ *
19
+ * Yields historical events after `afterSeq`, then continues live if the
20
+ * stream is still active. If the stream is already closed, iteration ends
21
+ * once the stored events are exhausted.
22
+ */
23
+ resume(streamId: string, afterSeq?: number): AsyncIterable<StreamEvent>;
24
+ }
25
+ /**
26
+ * Options for the built-in in-memory stream store.
27
+ */
28
+ interface InMemoryStreamStoreOptions {
29
+ advanced?: {
30
+ /** Poll interval used while waiting for new events during resume. */resumePollMs?: number;
31
+ };
32
+ }
33
+ /**
34
+ * One saved event with a stream sequence number.
35
+ */
36
+ type StreamEvent = Event & {
37
+ /** Event number inside this stream. */seq: number;
38
+ };
39
+ /**
40
+ * Loads and saves durable conversation history.
41
+ */
42
+ interface ConversationStore<TCursor = ConversationCursor> {
43
+ /** Load saved items for one conversation. */
44
+ load(params: LoadConversationParams): Promise<LoadedConversation<TCursor> | null>;
45
+ /** Save updated items back to the conversation store. */
46
+ save(params: SaveConversationParams<TCursor>): Promise<SaveConversationResult<TCursor>>;
47
+ }
48
+ /**
49
+ * Opaque cursor used for optimistic concurrency in conversation stores.
50
+ */
51
+ type ConversationCursor = string | number;
52
+ /**
53
+ * Saved conversation items plus an optional cursor.
54
+ */
55
+ interface LoadedConversation<TCursor = ConversationCursor> {
56
+ /** Saved conversation items. */
57
+ items: ConversationItem[];
58
+ /** Cursor used for optimistic concurrency. */
59
+ cursor?: TCursor;
60
+ }
61
+ /**
62
+ * Data needed to load a saved conversation.
63
+ */
64
+ interface LoadConversationParams {
65
+ /** Conversation to load. */
66
+ conversationId: string;
67
+ /** Agent that owns this conversation history. */
68
+ agentName: string;
69
+ }
70
+ /**
71
+ * Data needed to save a conversation safely.
72
+ */
73
+ interface SaveConversationParams<TCursor = ConversationCursor> {
74
+ /** Conversation to update. */
75
+ conversationId: string;
76
+ /** Agent that owns this conversation history. */
77
+ agentName: string;
78
+ /** Full durable item list to save. */
79
+ items: ConversationItem[];
80
+ /** Expected current cursor. Save should fail if it changed. */
81
+ expectedCursor?: TCursor;
82
+ }
83
+ /**
84
+ * Result returned after a successful save.
85
+ */
86
+ interface SaveConversationResult<TCursor = ConversationCursor> {
87
+ /** New cursor after the save. */
88
+ cursor: TCursor;
89
+ }
90
+ /**
91
+ * Runtime status for a conversation-scoped run.
92
+ */
93
+ type ConversationRunStatus = "running" | "finished" | "failed" | "aborted";
94
+ /**
95
+ * App-owned runtime state used to look up the active stream for a conversation.
96
+ */
97
+ interface ConversationRuntimeState {
98
+ /** Conversation this state belongs to. */
99
+ conversationId: string;
100
+ /** Agent that owns this conversation. */
101
+ agentName: string;
102
+ /** Currently active run id, when one exists. */
103
+ activeRunId?: string;
104
+ /** Currently active stream id, when one exists. */
105
+ activeStreamId?: string;
106
+ /** Last known runtime status for the conversation. */
107
+ status: ConversationRunStatus;
108
+ /** Millisecond timestamp of the latest state update. */
109
+ updatedAt: number;
110
+ }
111
+ /**
112
+ * Optional store for active run or active stream lookup by conversation.
113
+ */
114
+ interface ConversationRuntimeStateStore {
115
+ /** Load the latest runtime state for a conversation. */
116
+ get(params: LoadConversationParams): Promise<ConversationRuntimeState | null>;
117
+ /** Save the latest runtime state for a conversation. */
118
+ set(state: ConversationRuntimeState): Promise<void>;
119
+ /** Clear any active runtime state for a conversation. */
120
+ clear(params: LoadConversationParams): Promise<void>;
121
+ }
122
+ //#endregion
123
+ export { ConversationCursor, ConversationRunStatus, ConversationRuntimeState, ConversationRuntimeStateStore, ConversationStore, InMemoryStreamStoreOptions, LoadConversationParams, LoadedConversation, SaveConversationParams, SaveConversationResult, StreamEvent, StreamStore };
124
+ //# sourceMappingURL=types.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.mts","names":[],"sources":["../../src/persistence/types.ts"],"mappings":";;;;;;UAMiB,WAAA;EAAA;EAEb,IAAA,CAAK,QAAA,UAAkB,IAAA;IAAQ,KAAA;EAAA,IAAkB,OAAA;EAEjB;EAAhC,MAAA,CAAO,QAAA,UAAkB,KAAA,EAAO,WAAA,GAAc,OAAA;EAErB;EAAzB,KAAA,CAAM,QAAA,WAAmB,OAAA;EAQoB;;;;;;;EAA7C,MAAA,CAAO,QAAA,UAAkB,QAAA,YAAoB,aAAA,CAAc,WAAA;AAAA;;;;UAM9C,0BAAA;EACb,QAAA;IAfM,qEAiBF,YAAA;EAAA;AAAA;;;;KAOI,WAAA,GAAc,KAAA;EAhBgD,uCAkBtE,GAAA;AAAA;;;;UAMa,iBAAA,WAA4B,kBAAA;EARtB;EAUnB,IAAA,CAAK,MAAA,EAAQ,sBAAA,GAAyB,OAAA,CAAQ,kBAAA,CAAmB,OAAA;EAV3C;EAYtB,IAAA,CAAK,MAAA,EAAQ,sBAAA,CAAuB,OAAA,IAAW,OAAA,CAAQ,sBAAA,CAAuB,OAAA;AAAA;;;;KAMtE,kBAAA;;;;UAKK,kBAAA,WAA6B,kBAAA;EAX7B;EAab,KAAA,EAAO,gBAAA;EAbgD;EAevD,MAAA,GAAS,OAAA;AAAA;;;;UAMI,sBAAA;EAvBA;EAyBb,cAAA;EAzBsC;EA2BtC,SAAA;AAAA;;;;UAMa,sBAAA,WAAiC,kBAAA;EA/BC;EAiC/C,cAAA;EAjC8E;EAmC9E,SAAA;EAnCqF;EAqCrF,KAAA,EAAO,gBAAA;EA/BmB;EAiC1B,cAAA,GAAiB,OAAA;AAAA;;AA5BrB;;UAkCiB,sBAAA,WAAiC,kBAAA;EAlCJ;EAoC1C,MAAA,EAAQ,OAAA;AAAA;;;;KAMA,qBAAA;;;;UAKK,wBAAA;EA3CG;EA6ChB,cAAA;EAvCa;EAyCb,SAAA;;EAEA,WAAA;EAvCS;EAyCT,cAAA;EAnCmC;EAqCnC,MAAA,EAAQ,qBAAA;EArCsC;EAuC9C,SAAA;AAAA;;;;UAMa,6BAAA;EA3Cb;EA6CA,GAAA,CAAI,MAAA,EAAQ,sBAAA,GAAyB,OAAA,CAAQ,wBAAA;EAzC7C;EA2CA,GAAA,CAAI,KAAA,EAAO,wBAAA,GAA2B,OAAA;EAzCtC;EA2CA,KAAA,CAAM,MAAA,EAAQ,sBAAA,GAAyB,OAAA;AAAA"}
@@ -0,0 +1,2 @@
1
+ import { Plugin, PluginBaseContext, PluginEndpoint, PluginEndpointHandler, PluginEventContext, PluginEventMiddleware, PluginGuard, PluginGuardMode, PluginModelCallContext, PluginModelResponseContext, PluginOnStepContext, PluginRunContext, PluginRuntime, PluginRuntimeEndpoint, PluginSaveContext, PluginToolCallContext, PluginToolCallDecision, PluginToolResultContext } from "./types.mjs";
2
+ import { definePlugin } from "./runtime.mjs";
@@ -0,0 +1,17 @@
1
+ import { Plugin } from "./types.mjs";
2
+
3
+ //#region src/plugins/runtime.d.ts
4
+ /**
5
+ * Defines a plugin.
6
+ *
7
+ * Plugin hook contexts are intentionally broad at authoring time. Some
8
+ * capability-sensitive controls may be omitted at runtime for models that do
9
+ * not support them.
10
+ *
11
+ * @param config Plugin configuration.
12
+ * @returns The plugin definition with preserved literal types.
13
+ */
14
+ declare function definePlugin<const T extends Plugin>(config: T): T;
15
+ //#endregion
16
+ export { definePlugin };
17
+ //# sourceMappingURL=runtime.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime.d.mts","names":[],"sources":["../../src/plugins/runtime.ts"],"mappings":";;;;;AAsCA;;;;;;;;iBAAgB,YAAA,iBAA6B,MAAA,CAAA,CAAQ,MAAA,EAAQ,CAAA,GAAI,CAAA"}