@artinet/sdk 0.6.0-preview.2 → 0.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (160) hide show
  1. package/README.md +100 -59
  2. package/dist/browser/browser.d.ts +2 -7
  3. package/dist/browser/browser.js +2 -7
  4. package/dist/browser/config/observability.d.ts +1 -1
  5. package/dist/browser/create/message-builder.d.ts +1 -1
  6. package/dist/browser/create/message-builder.js +19 -7
  7. package/dist/browser/create/task-builder.js +1 -1
  8. package/dist/browser/messenger/index.d.ts +1 -0
  9. package/dist/browser/messenger/index.js +1 -0
  10. package/dist/browser/messenger/messenger.d.ts +119 -0
  11. package/dist/browser/messenger/messenger.js +245 -0
  12. package/dist/browser/types/a2a/a2a.d.ts +38 -20
  13. package/dist/browser/types/a2a/a2a.js +0 -1
  14. package/dist/browser/types/core/core.d.ts +4 -2
  15. package/dist/browser/types/index.d.ts +0 -1
  16. package/dist/browser/types/index.js +0 -1
  17. package/dist/browser/types/storage.d.ts +2 -14
  18. package/dist/browser/types/storage.js +0 -4
  19. package/dist/browser/utils/{common/constants.d.ts → constants.d.ts} +1 -1
  20. package/dist/{utils/common → browser/utils}/constants.js +1 -1
  21. package/dist/browser/utils/{common/errors.d.ts → errors.d.ts} +17 -36
  22. package/dist/browser/utils/errors.js +76 -0
  23. package/dist/browser/utils/index.d.ts +6 -0
  24. package/dist/browser/utils/index.js +6 -0
  25. package/dist/{utils/common → browser/utils}/parse.js +1 -1
  26. package/dist/{utils/common → browser/utils}/schema-validation.js +2 -2
  27. package/dist/config/index.d.ts +1 -1
  28. package/dist/config/observability.d.ts +1 -1
  29. package/dist/create/agent-builder.d.ts +1 -1
  30. package/dist/create/create.d.ts +19 -20
  31. package/dist/create/create.js +33 -101
  32. package/dist/create/message-builder.d.ts +1 -1
  33. package/dist/create/message-builder.js +19 -7
  34. package/dist/create/status-builder.d.ts +4 -0
  35. package/dist/create/task-builder.js +1 -1
  36. package/dist/extensions/otel.d.ts +3 -0
  37. package/dist/extensions/otel.js +3 -0
  38. package/dist/extensions/pino.d.ts +3 -0
  39. package/dist/extensions/pino.js +3 -0
  40. package/dist/extensions/winston.d.ts +3 -0
  41. package/dist/extensions/winston.js +3 -0
  42. package/dist/index.d.ts +3 -3
  43. package/dist/index.js +3 -3
  44. package/dist/messenger/index.d.ts +1 -0
  45. package/dist/messenger/index.js +1 -0
  46. package/dist/messenger/messenger.d.ts +119 -0
  47. package/dist/messenger/messenger.js +251 -0
  48. package/dist/server/adapters/a2a_request_handler.d.ts +889 -0
  49. package/dist/server/adapters/a2a_request_handler.js +241 -0
  50. package/dist/server/adapters/loadable.d.ts +7 -0
  51. package/dist/server/adapters/loadable.js +73 -0
  52. package/dist/server/adapters/notifications.d.ts +26 -0
  53. package/dist/server/adapters/notifications.js +77 -0
  54. package/dist/server/express/server.d.ts +24 -18
  55. package/dist/server/express/server.js +41 -62
  56. package/dist/server/express/utils.d.ts +14 -0
  57. package/dist/server/express/{errors.js → utils.js} +22 -0
  58. package/dist/server/index.d.ts +4 -1
  59. package/dist/server/index.js +4 -1
  60. package/dist/server/params.d.ts +115 -0
  61. package/dist/server/params.js +21 -0
  62. package/dist/services/a2a/factory/context.d.ts +2 -1
  63. package/dist/services/a2a/factory/context.js +4 -3
  64. package/dist/services/a2a/factory/handler.d.ts +1 -1
  65. package/dist/services/a2a/factory/handler.js +7 -6
  66. package/dist/services/a2a/factory/service.d.ts +1 -1
  67. package/dist/services/a2a/factory/service.js +2 -2
  68. package/dist/services/a2a/factory/state-machine.js +9 -6
  69. package/dist/services/a2a/handlers/cancel-task.d.ts +1 -1
  70. package/dist/services/a2a/handlers/get-task.d.ts +1 -1
  71. package/dist/services/a2a/handlers/resubscribe-task.d.ts +2 -2
  72. package/dist/services/a2a/handlers/send-message.d.ts +1 -1
  73. package/dist/services/a2a/handlers/stream-message.d.ts +2 -2
  74. package/dist/services/a2a/handlers/update.js +7 -9
  75. package/dist/services/a2a/index.d.ts +0 -1
  76. package/dist/services/a2a/index.js +0 -1
  77. package/dist/services/a2a/managers.js +2 -1
  78. package/dist/services/a2a/messenger.d.ts +1 -1
  79. package/dist/services/a2a/messenger.js +1 -1
  80. package/dist/services/a2a/service.d.ts +26 -21
  81. package/dist/services/a2a/service.js +161 -93
  82. package/dist/services/a2a/state-machine.d.ts +1 -1
  83. package/dist/services/a2a/state-machine.js +2 -1
  84. package/dist/services/a2a/streams.js +1 -1
  85. package/dist/services/core/manager.d.ts +5 -0
  86. package/dist/services/core/manager.js +6 -0
  87. package/dist/services/mcp/service.js +1 -1
  88. package/dist/{utils/storage → storage}/file.d.ts +4 -2
  89. package/dist/{utils/storage → storage}/file.js +5 -4
  90. package/dist/storage/index.d.ts +1 -0
  91. package/dist/storage/index.js +2 -0
  92. package/dist/storage/sqlite.d.ts +353 -0
  93. package/dist/storage/sqlite.js +85 -0
  94. package/dist/transport/trpc/a2a/factory/router.d.ts +16 -16
  95. package/dist/transport/trpc/a2a/routes/info.d.ts +2 -2
  96. package/dist/transport/trpc/a2a/routes/message/route.d.ts +3 -3
  97. package/dist/transport/trpc/a2a/routes/message/route.js +2 -1
  98. package/dist/transport/trpc/a2a/routes/tasks/route.d.ts +4 -4
  99. package/dist/transport/trpc/a2a/routes/tasks/route.js +3 -2
  100. package/dist/types/a2a/a2a.d.ts +38 -20
  101. package/dist/types/a2a/a2a.js +0 -1
  102. package/dist/types/core/core.d.ts +4 -2
  103. package/dist/types/index.d.ts +0 -1
  104. package/dist/types/index.js +0 -1
  105. package/dist/types/storage.d.ts +2 -14
  106. package/dist/types/storage.js +0 -4
  107. package/dist/utils/{common/constants.d.ts → constants.d.ts} +1 -1
  108. package/dist/{browser/utils/common → utils}/constants.js +1 -1
  109. package/dist/utils/{common/errors.d.ts → errors.d.ts} +17 -36
  110. package/dist/utils/errors.js +80 -0
  111. package/dist/utils/index.d.ts +6 -11
  112. package/dist/utils/index.js +6 -11
  113. package/dist/utils/parse.d.ts +7 -0
  114. package/dist/utils/parse.js +14 -0
  115. package/dist/utils/schema-validation.d.ts +2 -0
  116. package/dist/utils/schema-validation.js +12 -0
  117. package/package.json +35 -22
  118. package/dist/browser/client/a2a-client.d.ts +0 -127
  119. package/dist/browser/client/a2a-client.js +0 -233
  120. package/dist/browser/client/index.d.ts +0 -1
  121. package/dist/browser/client/index.js +0 -1
  122. package/dist/browser/transport/rpc/parser.d.ts +0 -15
  123. package/dist/browser/transport/rpc/parser.js +0 -49
  124. package/dist/browser/transport/rpc/rpc-client.d.ts +0 -80
  125. package/dist/browser/transport/rpc/rpc-client.js +0 -189
  126. package/dist/browser/transport/streaming/event-stream.d.ts +0 -25
  127. package/dist/browser/transport/streaming/event-stream.js +0 -100
  128. package/dist/browser/types/client.d.ts +0 -133
  129. package/dist/browser/types/client.js +0 -5
  130. package/dist/browser/utils/common/errors.js +0 -95
  131. package/dist/client/a2a-client.d.ts +0 -127
  132. package/dist/client/a2a-client.js +0 -237
  133. package/dist/client/index.d.ts +0 -1
  134. package/dist/client/index.js +0 -1
  135. package/dist/server/express/errors.d.ts +0 -9
  136. package/dist/server/express/index.d.ts +0 -3
  137. package/dist/server/express/index.js +0 -3
  138. package/dist/server/express/middeware.d.ts +0 -7
  139. package/dist/server/express/middeware.js +0 -121
  140. package/dist/transport/index.d.ts +0 -3
  141. package/dist/transport/index.js +0 -4
  142. package/dist/transport/rpc/parser.d.ts +0 -15
  143. package/dist/transport/rpc/parser.js +0 -49
  144. package/dist/transport/rpc/rpc-client.d.ts +0 -80
  145. package/dist/transport/rpc/rpc-client.js +0 -189
  146. package/dist/transport/streaming/event-stream.d.ts +0 -25
  147. package/dist/transport/streaming/event-stream.js +0 -100
  148. package/dist/types/client.d.ts +0 -133
  149. package/dist/types/client.js +0 -5
  150. package/dist/utils/common/errors.js +0 -98
  151. /package/dist/{utils/common → browser/utils}/parse.d.ts +0 -0
  152. /package/dist/{utils/common → browser/utils}/schema-validation.d.ts +0 -0
  153. /package/dist/browser/utils/{common/utils.d.ts → utils.d.ts} +0 -0
  154. /package/dist/browser/utils/{common/utils.js → utils.js} +0 -0
  155. /package/dist/utils/{common/utils.d.ts → utils.d.ts} +0 -0
  156. /package/dist/utils/{common/utils.js → utils.js} +0 -0
  157. /package/dist/utils/{common/zAsyncIterable-v3.d.ts → zAsyncIterable-v3.d.ts} +0 -0
  158. /package/dist/utils/{common/zAsyncIterable-v3.js → zAsyncIterable-v3.js} +0 -0
  159. /package/dist/utils/{common/zAsyncIterable.d.ts → zAsyncIterable.d.ts} +0 -0
  160. /package/dist/utils/{common/zAsyncIterable.js → zAsyncIterable.js} +0 -0
@@ -0,0 +1,353 @@
1
+ /**
2
+ * Copyright 2025 The Artinet Project
3
+ * SPDX-License-Identifier: Apache-2.0
4
+ */
5
+ import { A2A } from "../types/index.js";
6
+ import { Tasks } from "../services/a2a/managers.js";
7
+ import { BaseSQLiteDatabase } from "drizzle-orm/sqlite-core";
8
+ export declare const TABLE_NAME = "artinet_tasks";
9
+ export declare const createTaskTable: (db: BaseSQLiteDatabase<`sync` | `async`, any, TaskTable>) => Promise<void>;
10
+ export declare const TaskTable: import("drizzle-orm/sqlite-core").SQLiteTableWithColumns<{
11
+ name: "artinet_tasks";
12
+ schema: undefined;
13
+ columns: {
14
+ id: import("drizzle-orm/sqlite-core").SQLiteColumn<{
15
+ name: "id";
16
+ tableName: "artinet_tasks";
17
+ dataType: "string";
18
+ columnType: "SQLiteText";
19
+ data: string;
20
+ driverParam: string;
21
+ notNull: true;
22
+ hasDefault: false;
23
+ isPrimaryKey: true;
24
+ isAutoincrement: false;
25
+ hasRuntimeDefault: false;
26
+ enumValues: [string, ...string[]];
27
+ baseColumn: never;
28
+ identity: undefined;
29
+ generated: undefined;
30
+ }, {}, {
31
+ length: undefined;
32
+ }>;
33
+ contextId: import("drizzle-orm/sqlite-core").SQLiteColumn<{
34
+ name: "contextId";
35
+ tableName: "artinet_tasks";
36
+ dataType: "string";
37
+ columnType: "SQLiteText";
38
+ data: string;
39
+ driverParam: string;
40
+ notNull: true;
41
+ hasDefault: false;
42
+ isPrimaryKey: false;
43
+ isAutoincrement: false;
44
+ hasRuntimeDefault: false;
45
+ enumValues: [string, ...string[]];
46
+ baseColumn: never;
47
+ identity: undefined;
48
+ generated: undefined;
49
+ }, {}, {
50
+ length: undefined;
51
+ }>;
52
+ kind: import("drizzle-orm/sqlite-core").SQLiteColumn<{
53
+ name: "kind";
54
+ tableName: "artinet_tasks";
55
+ dataType: "string";
56
+ columnType: "SQLiteText";
57
+ data: "task";
58
+ driverParam: string;
59
+ notNull: true;
60
+ hasDefault: false;
61
+ isPrimaryKey: false;
62
+ isAutoincrement: false;
63
+ hasRuntimeDefault: false;
64
+ enumValues: [string, ...string[]];
65
+ baseColumn: never;
66
+ identity: undefined;
67
+ generated: undefined;
68
+ }, {}, {
69
+ length: number | undefined;
70
+ $type: "task";
71
+ }>;
72
+ status: import("drizzle-orm/sqlite-core").SQLiteColumn<{
73
+ name: "status";
74
+ tableName: "artinet_tasks";
75
+ dataType: "json";
76
+ columnType: "SQLiteTextJson";
77
+ data: {
78
+ state: "unknown" | "submitted" | "working" | "input-required" | "completed" | "canceled" | "failed" | "rejected" | "auth-required";
79
+ message?: {
80
+ role: "user" | "agent";
81
+ parts: ({
82
+ kind: "text";
83
+ text: string;
84
+ metadata?: Record<string, unknown> | undefined;
85
+ } | {
86
+ kind: "file";
87
+ file: {
88
+ bytes: string;
89
+ name?: string | undefined;
90
+ mimeType?: string | undefined;
91
+ uri?: undefined;
92
+ } | {
93
+ uri: string;
94
+ name?: string | undefined;
95
+ mimeType?: string | undefined;
96
+ bytes?: undefined;
97
+ };
98
+ metadata?: Record<string, unknown> | undefined;
99
+ } | {
100
+ kind: "data";
101
+ data: Record<string, unknown>;
102
+ metadata?: Record<string, unknown> | undefined;
103
+ })[];
104
+ messageId: string;
105
+ kind: "message";
106
+ metadata?: Record<string, unknown> | undefined;
107
+ extensions?: string[] | undefined;
108
+ referenceTaskIds?: string[] | undefined;
109
+ taskId?: string | undefined;
110
+ contextId?: string | undefined;
111
+ } | undefined;
112
+ timestamp?: string | undefined;
113
+ };
114
+ driverParam: string;
115
+ notNull: true;
116
+ hasDefault: false;
117
+ isPrimaryKey: false;
118
+ isAutoincrement: false;
119
+ hasRuntimeDefault: false;
120
+ enumValues: undefined;
121
+ baseColumn: never;
122
+ identity: undefined;
123
+ generated: undefined;
124
+ }, {}, {
125
+ $type: {
126
+ state: "unknown" | "submitted" | "working" | "input-required" | "completed" | "canceled" | "failed" | "rejected" | "auth-required";
127
+ message?: {
128
+ role: "user" | "agent";
129
+ parts: ({
130
+ kind: "text";
131
+ text: string;
132
+ metadata?: Record<string, unknown> | undefined;
133
+ } | {
134
+ kind: "file";
135
+ file: {
136
+ bytes: string;
137
+ name?: string | undefined;
138
+ mimeType?: string | undefined;
139
+ uri?: undefined;
140
+ } | {
141
+ uri: string;
142
+ name?: string | undefined;
143
+ mimeType?: string | undefined;
144
+ bytes?: undefined;
145
+ };
146
+ metadata?: Record<string, unknown> | undefined;
147
+ } | {
148
+ kind: "data";
149
+ data: Record<string, unknown>;
150
+ metadata?: Record<string, unknown> | undefined;
151
+ })[];
152
+ messageId: string;
153
+ kind: "message";
154
+ metadata?: Record<string, unknown> | undefined;
155
+ extensions?: string[] | undefined;
156
+ referenceTaskIds?: string[] | undefined;
157
+ taskId?: string | undefined;
158
+ contextId?: string | undefined;
159
+ } | undefined;
160
+ timestamp?: string | undefined;
161
+ };
162
+ }>;
163
+ history: import("drizzle-orm/sqlite-core").SQLiteColumn<{
164
+ name: "history";
165
+ tableName: "artinet_tasks";
166
+ dataType: "json";
167
+ columnType: "SQLiteTextJson";
168
+ data: {
169
+ role: "user" | "agent";
170
+ parts: ({
171
+ kind: "text";
172
+ text: string;
173
+ metadata?: Record<string, unknown> | undefined;
174
+ } | {
175
+ kind: "file";
176
+ file: {
177
+ bytes: string;
178
+ name?: string | undefined;
179
+ mimeType?: string | undefined;
180
+ uri?: undefined;
181
+ } | {
182
+ uri: string;
183
+ name?: string | undefined;
184
+ mimeType?: string | undefined;
185
+ bytes?: undefined;
186
+ };
187
+ metadata?: Record<string, unknown> | undefined;
188
+ } | {
189
+ kind: "data";
190
+ data: Record<string, unknown>;
191
+ metadata?: Record<string, unknown> | undefined;
192
+ })[];
193
+ messageId: string;
194
+ kind: "message";
195
+ metadata?: Record<string, unknown> | undefined;
196
+ extensions?: string[] | undefined;
197
+ referenceTaskIds?: string[] | undefined;
198
+ taskId?: string | undefined;
199
+ contextId?: string | undefined;
200
+ }[];
201
+ driverParam: string;
202
+ notNull: true;
203
+ hasDefault: true;
204
+ isPrimaryKey: false;
205
+ isAutoincrement: false;
206
+ hasRuntimeDefault: false;
207
+ enumValues: undefined;
208
+ baseColumn: never;
209
+ identity: undefined;
210
+ generated: undefined;
211
+ }, {}, {
212
+ $type: {
213
+ role: "user" | "agent";
214
+ parts: ({
215
+ kind: "text";
216
+ text: string;
217
+ metadata?: Record<string, unknown> | undefined;
218
+ } | {
219
+ kind: "file";
220
+ file: {
221
+ bytes: string;
222
+ name?: string | undefined;
223
+ mimeType?: string | undefined;
224
+ uri?: undefined;
225
+ } | {
226
+ uri: string;
227
+ name?: string | undefined;
228
+ mimeType?: string | undefined;
229
+ bytes?: undefined;
230
+ };
231
+ metadata?: Record<string, unknown> | undefined;
232
+ } | {
233
+ kind: "data";
234
+ data: Record<string, unknown>;
235
+ metadata?: Record<string, unknown> | undefined;
236
+ })[];
237
+ messageId: string;
238
+ kind: "message";
239
+ metadata?: Record<string, unknown> | undefined;
240
+ extensions?: string[] | undefined;
241
+ referenceTaskIds?: string[] | undefined;
242
+ taskId?: string | undefined;
243
+ contextId?: string | undefined;
244
+ }[];
245
+ }>;
246
+ artifacts: import("drizzle-orm/sqlite-core").SQLiteColumn<{
247
+ name: "artifacts";
248
+ tableName: "artinet_tasks";
249
+ dataType: "json";
250
+ columnType: "SQLiteTextJson";
251
+ data: {
252
+ artifactId: string;
253
+ parts: ({
254
+ kind: "text";
255
+ text: string;
256
+ metadata?: Record<string, unknown> | undefined;
257
+ } | {
258
+ kind: "file";
259
+ file: {
260
+ bytes: string;
261
+ name?: string | undefined;
262
+ mimeType?: string | undefined;
263
+ uri?: undefined;
264
+ } | {
265
+ uri: string;
266
+ name?: string | undefined;
267
+ mimeType?: string | undefined;
268
+ bytes?: undefined;
269
+ };
270
+ metadata?: Record<string, unknown> | undefined;
271
+ } | {
272
+ kind: "data";
273
+ data: Record<string, unknown>;
274
+ metadata?: Record<string, unknown> | undefined;
275
+ })[];
276
+ name?: string | undefined;
277
+ description?: string | undefined;
278
+ metadata?: Record<string, unknown> | undefined;
279
+ extension?: string[] | undefined;
280
+ }[];
281
+ driverParam: string;
282
+ notNull: true;
283
+ hasDefault: true;
284
+ isPrimaryKey: false;
285
+ isAutoincrement: false;
286
+ hasRuntimeDefault: false;
287
+ enumValues: undefined;
288
+ baseColumn: never;
289
+ identity: undefined;
290
+ generated: undefined;
291
+ }, {}, {
292
+ $type: {
293
+ artifactId: string;
294
+ parts: ({
295
+ kind: "text";
296
+ text: string;
297
+ metadata?: Record<string, unknown> | undefined;
298
+ } | {
299
+ kind: "file";
300
+ file: {
301
+ bytes: string;
302
+ name?: string | undefined;
303
+ mimeType?: string | undefined;
304
+ uri?: undefined;
305
+ } | {
306
+ uri: string;
307
+ name?: string | undefined;
308
+ mimeType?: string | undefined;
309
+ bytes?: undefined;
310
+ };
311
+ metadata?: Record<string, unknown> | undefined;
312
+ } | {
313
+ kind: "data";
314
+ data: Record<string, unknown>;
315
+ metadata?: Record<string, unknown> | undefined;
316
+ })[];
317
+ name?: string | undefined;
318
+ description?: string | undefined;
319
+ metadata?: Record<string, unknown> | undefined;
320
+ extension?: string[] | undefined;
321
+ }[];
322
+ }>;
323
+ metadata: import("drizzle-orm/sqlite-core").SQLiteColumn<{
324
+ name: "metadata";
325
+ tableName: "artinet_tasks";
326
+ dataType: "json";
327
+ columnType: "SQLiteTextJson";
328
+ data: Record<string, unknown>;
329
+ driverParam: string;
330
+ notNull: true;
331
+ hasDefault: true;
332
+ isPrimaryKey: false;
333
+ isAutoincrement: false;
334
+ hasRuntimeDefault: false;
335
+ enumValues: undefined;
336
+ baseColumn: never;
337
+ identity: undefined;
338
+ generated: undefined;
339
+ }, {}, {
340
+ $type: Record<string, unknown>;
341
+ }>;
342
+ };
343
+ dialect: "sqlite";
344
+ }>;
345
+ export type TaskTable = typeof TaskTable.$inferSelect;
346
+ export declare class SQLiteStore extends Tasks {
347
+ private db;
348
+ constructor(db: BaseSQLiteDatabase<`sync` | `async`, any, TaskTable>, tasks?: Map<string, A2A.Task>);
349
+ get(id: string): Promise<A2A.Task | undefined>;
350
+ set(id: string, data?: A2A.Task): Promise<void>;
351
+ delete(id: string): Promise<void>;
352
+ search(query: string): Promise<A2A.Task[]>;
353
+ }
@@ -0,0 +1,85 @@
1
+ /**
2
+ * Copyright 2025 The Artinet Project
3
+ * SPDX-License-Identifier: Apache-2.0
4
+ */
5
+ import { Tasks } from "../services/a2a/managers.js";
6
+ import { eq, like, or } from "drizzle-orm";
7
+ import { sqliteTable, text } from "drizzle-orm/sqlite-core";
8
+ import { logger } from "../config/index.js";
9
+ export const TABLE_NAME = "artinet_tasks";
10
+ const CREATE_TASKS_TABLE_SQL = `CREATE TABLE IF NOT EXISTS ${TABLE_NAME}\
11
+ (id TEXT PRIMARY KEY, contextId TEXT NOT NULL,\
12
+ kind TEXT NOT NULL, status TEXT NOT NULL,\
13
+ history TEXT NOT NULL,\
14
+ artifacts TEXT NOT NULL,\
15
+ metadata TEXT NOT NULL)`;
16
+ export const createTaskTable = async (db) => {
17
+ await db.run(CREATE_TASKS_TABLE_SQL);
18
+ };
19
+ export const TaskTable = sqliteTable(TABLE_NAME, {
20
+ id: text().primaryKey(),
21
+ contextId: text().notNull(),
22
+ kind: text("kind").$type().notNull(),
23
+ status: text("status", { mode: "json" }).$type().notNull(),
24
+ history: text("history", { mode: "json" })
25
+ .$type()
26
+ .notNull()
27
+ .default([]),
28
+ artifacts: text("artifacts", { mode: "json" })
29
+ .$type()
30
+ .notNull()
31
+ .default([]),
32
+ metadata: text("metadata", { mode: "json" })
33
+ .$type()
34
+ .notNull()
35
+ .default({}),
36
+ });
37
+ export class SQLiteStore extends Tasks {
38
+ db;
39
+ constructor(db, tasks = new Map()) {
40
+ super(tasks);
41
+ this.db = db;
42
+ createTaskTable(db);
43
+ }
44
+ async get(id) {
45
+ let task = await super.get(id);
46
+ if (task) {
47
+ return task;
48
+ }
49
+ task = await this.db
50
+ .select()
51
+ .from(TaskTable)
52
+ .where(eq(TaskTable.id, id))
53
+ .get();
54
+ if (task) {
55
+ await super.set(id, task);
56
+ }
57
+ return task;
58
+ }
59
+ async set(id, data) {
60
+ if (!data) {
61
+ return;
62
+ }
63
+ if (id !== data.id) {
64
+ logger.warn("SQLiteStore", `Task ID mismatch: ${id} !== ${data.id}`);
65
+ throw new Error("Task ID mismatch");
66
+ }
67
+ await this.db
68
+ .insert(TaskTable)
69
+ .values({ ...data, id })
70
+ .execute();
71
+ await super.set(id, data);
72
+ }
73
+ async delete(id) {
74
+ await this.db.delete(TaskTable).where(eq(TaskTable.id, id)).execute();
75
+ await super.delete(id);
76
+ }
77
+ async search(query) {
78
+ const trimmedQuery = query.trim();
79
+ return await this.db
80
+ .select()
81
+ .from(TaskTable)
82
+ .where(or(eq(TaskTable.id, trimmedQuery), eq(TaskTable.contextId, trimmedQuery), like(TaskTable.status, `%${trimmedQuery}%`)))
83
+ .execute();
84
+ }
85
+ }
@@ -52,7 +52,7 @@ export declare const createA2ARouter: () => import("@trpc/server").TRPCBuiltRout
52
52
  documentationUrl?: string | undefined;
53
53
  securitySchemes?: Record<string, {
54
54
  type: "apiKey";
55
- in: "header" | "query" | "cookie";
55
+ in: "query" | "header" | "cookie";
56
56
  name: string;
57
57
  description?: string | undefined;
58
58
  } | {
@@ -198,7 +198,7 @@ export declare const createA2ARouter: () => import("@trpc/server").TRPCBuiltRout
198
198
  id: string;
199
199
  contextId: string;
200
200
  status: {
201
- state: "failed" | "unknown" | "completed" | "canceled" | "rejected" | "working" | "submitted" | "input-required" | "auth-required";
201
+ state: "unknown" | "submitted" | "working" | "input-required" | "completed" | "canceled" | "failed" | "rejected" | "auth-required";
202
202
  message?: {
203
203
  role: "user" | "agent";
204
204
  parts: ({
@@ -389,7 +389,7 @@ export declare const createA2ARouter: () => import("@trpc/server").TRPCBuiltRout
389
389
  id: string;
390
390
  contextId: string;
391
391
  status: {
392
- state: "failed" | "unknown" | "completed" | "canceled" | "rejected" | "working" | "submitted" | "input-required" | "auth-required";
392
+ state: "unknown" | "submitted" | "working" | "input-required" | "completed" | "canceled" | "failed" | "rejected" | "auth-required";
393
393
  message?: {
394
394
  role: "user" | "agent";
395
395
  parts: ({
@@ -495,7 +495,7 @@ export declare const createA2ARouter: () => import("@trpc/server").TRPCBuiltRout
495
495
  contextId: string;
496
496
  kind: "status-update";
497
497
  status: {
498
- state: "failed" | "unknown" | "completed" | "canceled" | "rejected" | "working" | "submitted" | "input-required" | "auth-required";
498
+ state: "unknown" | "submitted" | "working" | "input-required" | "completed" | "canceled" | "failed" | "rejected" | "auth-required";
499
499
  message?: {
500
500
  role: "user" | "agent";
501
501
  parts: ({
@@ -621,7 +621,7 @@ export declare const createA2ARouter: () => import("@trpc/server").TRPCBuiltRout
621
621
  id: string;
622
622
  contextId: string;
623
623
  status: {
624
- state: "failed" | "unknown" | "completed" | "canceled" | "rejected" | "working" | "submitted" | "input-required" | "auth-required";
624
+ state: "unknown" | "submitted" | "working" | "input-required" | "completed" | "canceled" | "failed" | "rejected" | "auth-required";
625
625
  message?: {
626
626
  role: "user" | "agent";
627
627
  parts: ({
@@ -727,7 +727,7 @@ export declare const createA2ARouter: () => import("@trpc/server").TRPCBuiltRout
727
727
  contextId: string;
728
728
  kind: "status-update";
729
729
  status: {
730
- state: "failed" | "unknown" | "completed" | "canceled" | "rejected" | "working" | "submitted" | "input-required" | "auth-required";
730
+ state: "unknown" | "submitted" | "working" | "input-required" | "completed" | "canceled" | "failed" | "rejected" | "auth-required";
731
731
  message?: {
732
732
  role: "user" | "agent";
733
733
  parts: ({
@@ -814,7 +814,7 @@ export declare const createA2ARouter: () => import("@trpc/server").TRPCBuiltRout
814
814
  id: string;
815
815
  contextId: string;
816
816
  status: {
817
- state: "failed" | "unknown" | "completed" | "canceled" | "rejected" | "working" | "submitted" | "input-required" | "auth-required";
817
+ state: "unknown" | "submitted" | "working" | "input-required" | "completed" | "canceled" | "failed" | "rejected" | "auth-required";
818
818
  message?: {
819
819
  role: "user" | "agent";
820
820
  parts: ({
@@ -927,7 +927,7 @@ export declare const createA2ARouter: () => import("@trpc/server").TRPCBuiltRout
927
927
  id: string;
928
928
  contextId: string;
929
929
  status: {
930
- state: "failed" | "unknown" | "completed" | "canceled" | "rejected" | "working" | "submitted" | "input-required" | "auth-required";
930
+ state: "unknown" | "submitted" | "working" | "input-required" | "completed" | "canceled" | "failed" | "rejected" | "auth-required";
931
931
  message?: {
932
932
  role: "user" | "agent";
933
933
  parts: ({
@@ -1169,7 +1169,7 @@ export declare const createAgentRouter: () => import("@trpc/server").TRPCBuiltRo
1169
1169
  documentationUrl?: string | undefined;
1170
1170
  securitySchemes?: Record<string, {
1171
1171
  type: "apiKey";
1172
- in: "header" | "query" | "cookie";
1172
+ in: "query" | "header" | "cookie";
1173
1173
  name: string;
1174
1174
  description?: string | undefined;
1175
1175
  } | {
@@ -1315,7 +1315,7 @@ export declare const createAgentRouter: () => import("@trpc/server").TRPCBuiltRo
1315
1315
  id: string;
1316
1316
  contextId: string;
1317
1317
  status: {
1318
- state: "failed" | "unknown" | "completed" | "canceled" | "rejected" | "working" | "submitted" | "input-required" | "auth-required";
1318
+ state: "unknown" | "submitted" | "working" | "input-required" | "completed" | "canceled" | "failed" | "rejected" | "auth-required";
1319
1319
  message?: {
1320
1320
  role: "user" | "agent";
1321
1321
  parts: ({
@@ -1506,7 +1506,7 @@ export declare const createAgentRouter: () => import("@trpc/server").TRPCBuiltRo
1506
1506
  id: string;
1507
1507
  contextId: string;
1508
1508
  status: {
1509
- state: "failed" | "unknown" | "completed" | "canceled" | "rejected" | "working" | "submitted" | "input-required" | "auth-required";
1509
+ state: "unknown" | "submitted" | "working" | "input-required" | "completed" | "canceled" | "failed" | "rejected" | "auth-required";
1510
1510
  message?: {
1511
1511
  role: "user" | "agent";
1512
1512
  parts: ({
@@ -1612,7 +1612,7 @@ export declare const createAgentRouter: () => import("@trpc/server").TRPCBuiltRo
1612
1612
  contextId: string;
1613
1613
  kind: "status-update";
1614
1614
  status: {
1615
- state: "failed" | "unknown" | "completed" | "canceled" | "rejected" | "working" | "submitted" | "input-required" | "auth-required";
1615
+ state: "unknown" | "submitted" | "working" | "input-required" | "completed" | "canceled" | "failed" | "rejected" | "auth-required";
1616
1616
  message?: {
1617
1617
  role: "user" | "agent";
1618
1618
  parts: ({
@@ -1738,7 +1738,7 @@ export declare const createAgentRouter: () => import("@trpc/server").TRPCBuiltRo
1738
1738
  id: string;
1739
1739
  contextId: string;
1740
1740
  status: {
1741
- state: "failed" | "unknown" | "completed" | "canceled" | "rejected" | "working" | "submitted" | "input-required" | "auth-required";
1741
+ state: "unknown" | "submitted" | "working" | "input-required" | "completed" | "canceled" | "failed" | "rejected" | "auth-required";
1742
1742
  message?: {
1743
1743
  role: "user" | "agent";
1744
1744
  parts: ({
@@ -1844,7 +1844,7 @@ export declare const createAgentRouter: () => import("@trpc/server").TRPCBuiltRo
1844
1844
  contextId: string;
1845
1845
  kind: "status-update";
1846
1846
  status: {
1847
- state: "failed" | "unknown" | "completed" | "canceled" | "rejected" | "working" | "submitted" | "input-required" | "auth-required";
1847
+ state: "unknown" | "submitted" | "working" | "input-required" | "completed" | "canceled" | "failed" | "rejected" | "auth-required";
1848
1848
  message?: {
1849
1849
  role: "user" | "agent";
1850
1850
  parts: ({
@@ -1931,7 +1931,7 @@ export declare const createAgentRouter: () => import("@trpc/server").TRPCBuiltRo
1931
1931
  id: string;
1932
1932
  contextId: string;
1933
1933
  status: {
1934
- state: "failed" | "unknown" | "completed" | "canceled" | "rejected" | "working" | "submitted" | "input-required" | "auth-required";
1934
+ state: "unknown" | "submitted" | "working" | "input-required" | "completed" | "canceled" | "failed" | "rejected" | "auth-required";
1935
1935
  message?: {
1936
1936
  role: "user" | "agent";
1937
1937
  parts: ({
@@ -2044,7 +2044,7 @@ export declare const createAgentRouter: () => import("@trpc/server").TRPCBuiltRo
2044
2044
  id: string;
2045
2045
  contextId: string;
2046
2046
  status: {
2047
- state: "failed" | "unknown" | "completed" | "canceled" | "rejected" | "working" | "submitted" | "input-required" | "auth-required";
2047
+ state: "unknown" | "submitted" | "working" | "input-required" | "completed" | "canceled" | "failed" | "rejected" | "auth-required";
2048
2048
  message?: {
2049
2049
  role: "user" | "agent";
2050
2050
  parts: ({
@@ -46,7 +46,7 @@ export declare const agentCardRoute: import("@trpc/server").TRPCQueryProcedure<{
46
46
  documentationUrl?: string | undefined;
47
47
  securitySchemes?: Record<string, {
48
48
  type: "apiKey";
49
- in: "header" | "query" | "cookie";
49
+ in: "query" | "header" | "cookie";
50
50
  name: string;
51
51
  description?: string | undefined;
52
52
  } | {
@@ -146,7 +146,7 @@ export declare const agentInfoRoute: import("@trpc/server").TRPCQueryProcedure<{
146
146
  documentationUrl?: string | undefined;
147
147
  securitySchemes?: Record<string, {
148
148
  type: "apiKey";
149
- in: "header" | "query" | "cookie";
149
+ in: "query" | "header" | "cookie";
150
150
  name: string;
151
151
  description?: string | undefined;
152
152
  } | {
@@ -95,7 +95,7 @@ export declare const messageRouter: import("@trpc/server").TRPCBuiltRouter<{
95
95
  id: string;
96
96
  contextId: string;
97
97
  status: {
98
- state: "failed" | "unknown" | "completed" | "canceled" | "rejected" | "working" | "submitted" | "input-required" | "auth-required";
98
+ state: "unknown" | "submitted" | "working" | "input-required" | "completed" | "canceled" | "failed" | "rejected" | "auth-required";
99
99
  message?: {
100
100
  role: "user" | "agent";
101
101
  parts: ({
@@ -286,7 +286,7 @@ export declare const messageRouter: import("@trpc/server").TRPCBuiltRouter<{
286
286
  id: string;
287
287
  contextId: string;
288
288
  status: {
289
- state: "failed" | "unknown" | "completed" | "canceled" | "rejected" | "working" | "submitted" | "input-required" | "auth-required";
289
+ state: "unknown" | "submitted" | "working" | "input-required" | "completed" | "canceled" | "failed" | "rejected" | "auth-required";
290
290
  message?: {
291
291
  role: "user" | "agent";
292
292
  parts: ({
@@ -392,7 +392,7 @@ export declare const messageRouter: import("@trpc/server").TRPCBuiltRouter<{
392
392
  contextId: string;
393
393
  kind: "status-update";
394
394
  status: {
395
- state: "failed" | "unknown" | "completed" | "canceled" | "rejected" | "working" | "submitted" | "input-required" | "auth-required";
395
+ state: "unknown" | "submitted" | "working" | "input-required" | "completed" | "canceled" | "failed" | "rejected" | "auth-required";
396
396
  message?: {
397
397
  role: "user" | "agent";
398
398
  parts: ({
@@ -3,7 +3,8 @@
3
3
  * SPDX-License-Identifier: Apache-2.0
4
4
  */
5
5
  import { router, A2AProcedure } from "../../trpc.js";
6
- import { INVALID_PARAMS, zAsyncIterable } from "../../../../../utils/index.js";
6
+ import { INVALID_PARAMS } from "../../../../../utils/errors.js";
7
+ import { zAsyncIterable } from "../../../../../utils/zAsyncIterable.js";
7
8
  import { A2A } from "../../../../../types/index.js";
8
9
  const sendMessageRoute = A2AProcedure.input(A2A.MessageSendParamsSchema)
9
10
  .output(A2A.SendMessageSuccessResultSchema)