@zhivex-ai/core 1.18.0 → 1.19.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 (255) hide show
  1. package/README.md +4 -0
  2. package/dist/agent/approvals.d.ts +7 -0
  3. package/dist/agent/approvals.d.ts.map +1 -0
  4. package/dist/agent/approvals.js +97 -0
  5. package/dist/agent/approvals.js.map +1 -0
  6. package/dist/agent/cancellation.d.ts +4 -0
  7. package/dist/agent/cancellation.d.ts.map +1 -0
  8. package/dist/agent/cancellation.js +69 -0
  9. package/dist/agent/cancellation.js.map +1 -0
  10. package/dist/agent/common.d.ts +20 -0
  11. package/dist/agent/common.d.ts.map +1 -0
  12. package/dist/agent/common.js +150 -0
  13. package/dist/agent/common.js.map +1 -0
  14. package/dist/agent/compaction.d.ts +6 -0
  15. package/dist/agent/compaction.d.ts.map +1 -0
  16. package/dist/agent/compaction.js +156 -0
  17. package/dist/agent/compaction.js.map +1 -0
  18. package/dist/agent/context.d.ts +58 -0
  19. package/dist/agent/context.d.ts.map +1 -0
  20. package/dist/agent/context.js +267 -0
  21. package/dist/agent/context.js.map +1 -0
  22. package/dist/agent/definition.d.ts +4 -0
  23. package/dist/agent/definition.d.ts.map +1 -0
  24. package/dist/agent/definition.js +35 -0
  25. package/dist/agent/definition.js.map +1 -0
  26. package/dist/agent/execution.d.ts +14 -0
  27. package/dist/agent/execution.d.ts.map +1 -0
  28. package/dist/agent/execution.js +1062 -0
  29. package/dist/agent/execution.js.map +1 -0
  30. package/dist/agent/groups.d.ts +3 -0
  31. package/dist/agent/groups.d.ts.map +1 -0
  32. package/dist/agent/groups.js +130 -0
  33. package/dist/agent/groups.js.map +1 -0
  34. package/dist/agent/guardrails.d.ts +4 -0
  35. package/dist/agent/guardrails.d.ts.map +1 -0
  36. package/dist/agent/guardrails.js +29 -0
  37. package/dist/agent/guardrails.js.map +1 -0
  38. package/dist/agent/instance.d.ts +42 -0
  39. package/dist/agent/instance.d.ts.map +1 -0
  40. package/dist/agent/instance.js +82 -0
  41. package/dist/agent/instance.js.map +1 -0
  42. package/dist/agent/lifecycle.d.ts +31 -0
  43. package/dist/agent/lifecycle.d.ts.map +1 -0
  44. package/dist/agent/lifecycle.js +184 -0
  45. package/dist/agent/lifecycle.js.map +1 -0
  46. package/dist/agent/state.d.ts +6 -0
  47. package/dist/agent/state.d.ts.map +1 -0
  48. package/dist/agent/state.js +119 -0
  49. package/dist/agent/state.js.map +1 -0
  50. package/dist/agent/telemetry.d.ts +12 -0
  51. package/dist/agent/telemetry.d.ts.map +1 -0
  52. package/dist/agent/telemetry.js +176 -0
  53. package/dist/agent/telemetry.js.map +1 -0
  54. package/dist/agent/tool-execution.d.ts +6 -0
  55. package/dist/agent/tool-execution.d.ts.map +1 -0
  56. package/dist/agent/tool-execution.js +176 -0
  57. package/dist/agent/tool-execution.js.map +1 -0
  58. package/dist/agent-run-view.d.ts +9 -0
  59. package/dist/agent-run-view.d.ts.map +1 -0
  60. package/dist/agent-run-view.js +42 -0
  61. package/dist/agent-run-view.js.map +1 -0
  62. package/dist/agent-store/file.d.ts +11 -0
  63. package/dist/agent-store/file.d.ts.map +1 -0
  64. package/dist/agent-store/file.js +534 -0
  65. package/dist/agent-store/file.js.map +1 -0
  66. package/dist/agent-store/memory.d.ts +9 -0
  67. package/dist/agent-store/memory.d.ts.map +1 -0
  68. package/dist/agent-store/memory.js +198 -0
  69. package/dist/agent-store/memory.js.map +1 -0
  70. package/dist/agent-store/postgres.d.ts +4 -0
  71. package/dist/agent-store/postgres.d.ts.map +1 -0
  72. package/dist/agent-store/postgres.js +374 -0
  73. package/dist/agent-store/postgres.js.map +1 -0
  74. package/dist/agent-store/shared.d.ts +19 -0
  75. package/dist/agent-store/shared.d.ts.map +1 -0
  76. package/dist/agent-store/shared.js +137 -0
  77. package/dist/agent-store/shared.js.map +1 -0
  78. package/dist/agent-store/sqlite.d.ts +4 -0
  79. package/dist/agent-store/sqlite.d.ts.map +1 -0
  80. package/dist/agent-store/sqlite.js +362 -0
  81. package/dist/agent-store/sqlite.js.map +1 -0
  82. package/dist/agent-store.d.ts +5 -21
  83. package/dist/agent-store.d.ts.map +1 -1
  84. package/dist/agent-store.js +5 -1588
  85. package/dist/agent-store.js.map +1 -1
  86. package/dist/agent.d.ts +6 -57
  87. package/dist/agent.d.ts.map +1 -1
  88. package/dist/agent.js +6 -2631
  89. package/dist/agent.js.map +1 -1
  90. package/dist/agents-entry.d.ts +19 -0
  91. package/dist/agents-entry.d.ts.map +1 -0
  92. package/dist/agents-entry.js +14 -0
  93. package/dist/agents-entry.js.map +1 -0
  94. package/dist/artifact/file.d.ts +6 -0
  95. package/dist/artifact/file.d.ts.map +1 -0
  96. package/dist/artifact/file.js +380 -0
  97. package/dist/artifact/file.js.map +1 -0
  98. package/dist/artifact/memory.d.ts +3 -0
  99. package/dist/artifact/memory.d.ts.map +1 -0
  100. package/dist/artifact/memory.js +80 -0
  101. package/dist/artifact/memory.js.map +1 -0
  102. package/dist/artifact/postgres.d.ts +3 -0
  103. package/dist/artifact/postgres.d.ts.map +1 -0
  104. package/dist/artifact/postgres.js +283 -0
  105. package/dist/artifact/postgres.js.map +1 -0
  106. package/dist/artifact/shared.d.ts +208 -0
  107. package/dist/artifact/shared.d.ts.map +1 -0
  108. package/dist/artifact/shared.js +523 -0
  109. package/dist/artifact/shared.js.map +1 -0
  110. package/dist/artifact/sqlite.d.ts +3 -0
  111. package/dist/artifact/sqlite.d.ts.map +1 -0
  112. package/dist/artifact/sqlite.js +283 -0
  113. package/dist/artifact/sqlite.js.map +1 -0
  114. package/dist/artifact.d.ts +6 -186
  115. package/dist/artifact.d.ts.map +1 -1
  116. package/dist/artifact.js +6 -1536
  117. package/dist/artifact.js.map +1 -1
  118. package/dist/catalog-contracts.d.ts +52 -0
  119. package/dist/catalog-contracts.d.ts.map +1 -0
  120. package/dist/catalog-contracts.js +250 -0
  121. package/dist/catalog-contracts.js.map +1 -0
  122. package/dist/catalog.d.ts +3 -52
  123. package/dist/catalog.d.ts.map +1 -1
  124. package/dist/catalog.js +3 -249
  125. package/dist/catalog.js.map +1 -1
  126. package/dist/generate-cache-file.d.ts +11 -0
  127. package/dist/generate-cache-file.d.ts.map +1 -0
  128. package/dist/generate-cache-file.js +124 -0
  129. package/dist/generate-cache-file.js.map +1 -0
  130. package/dist/generate-text.d.ts +2 -5
  131. package/dist/generate-text.d.ts.map +1 -1
  132. package/dist/generate-text.js +3 -18
  133. package/dist/generate-text.js.map +1 -1
  134. package/dist/generation-entry.d.ts +6 -0
  135. package/dist/generation-entry.d.ts.map +1 -0
  136. package/dist/generation-entry.js +6 -0
  137. package/dist/generation-entry.js.map +1 -0
  138. package/dist/middleware-runtime.d.ts +35 -0
  139. package/dist/middleware-runtime.d.ts.map +1 -0
  140. package/dist/middleware-runtime.js +532 -0
  141. package/dist/middleware-runtime.js.map +1 -0
  142. package/dist/middleware.d.ts +3 -43
  143. package/dist/middleware.d.ts.map +1 -1
  144. package/dist/middleware.js +3 -653
  145. package/dist/middleware.js.map +1 -1
  146. package/dist/normalize-messages.d.ts +3 -0
  147. package/dist/normalize-messages.d.ts.map +1 -0
  148. package/dist/normalize-messages.js +16 -0
  149. package/dist/normalize-messages.js.map +1 -0
  150. package/dist/provider-entry.d.ts +17 -0
  151. package/dist/provider-entry.d.ts.map +1 -0
  152. package/dist/provider-entry.js +13 -0
  153. package/dist/provider-entry.js.map +1 -0
  154. package/dist/realtime.d.ts +2 -0
  155. package/dist/realtime.d.ts.map +1 -1
  156. package/dist/realtime.js +6 -0
  157. package/dist/realtime.js.map +1 -1
  158. package/dist/store-key.d.ts +3 -0
  159. package/dist/store-key.d.ts.map +1 -0
  160. package/dist/store-key.js +5 -0
  161. package/dist/store-key.js.map +1 -0
  162. package/dist/store-security.d.ts +1 -2
  163. package/dist/store-security.d.ts.map +1 -1
  164. package/dist/store-security.js +2 -4
  165. package/dist/store-security.js.map +1 -1
  166. package/dist/types/agent-state.d.ts +236 -0
  167. package/dist/types/agent-state.d.ts.map +1 -0
  168. package/dist/types/agent-state.js +2 -0
  169. package/dist/types/agent-state.js.map +1 -0
  170. package/dist/types/agents.d.ts +429 -0
  171. package/dist/types/agents.d.ts.map +1 -0
  172. package/dist/types/agents.js +2 -0
  173. package/dist/types/agents.js.map +1 -0
  174. package/dist/types/common.d.ts +179 -0
  175. package/dist/types/common.d.ts.map +1 -0
  176. package/dist/types/common.js +2 -0
  177. package/dist/types/common.js.map +1 -0
  178. package/dist/types/generation.d.ts +109 -0
  179. package/dist/types/generation.d.ts.map +1 -0
  180. package/dist/types/generation.js +2 -0
  181. package/dist/types/generation.js.map +1 -0
  182. package/dist/types/media-data.d.ts +65 -0
  183. package/dist/types/media-data.d.ts.map +1 -0
  184. package/dist/types/media-data.js +2 -0
  185. package/dist/types/media-data.js.map +1 -0
  186. package/dist/types/media.d.ts +141 -0
  187. package/dist/types/media.d.ts.map +1 -0
  188. package/dist/types/media.js +2 -0
  189. package/dist/types/media.js.map +1 -0
  190. package/dist/types/messages.d.ts +82 -0
  191. package/dist/types/messages.d.ts.map +1 -0
  192. package/dist/types/messages.js +2 -0
  193. package/dist/types/messages.js.map +1 -0
  194. package/dist/types/middleware.d.ts +130 -0
  195. package/dist/types/middleware.d.ts.map +1 -0
  196. package/dist/types/middleware.js +2 -0
  197. package/dist/types/middleware.js.map +1 -0
  198. package/dist/types/model-tools.d.ts +409 -0
  199. package/dist/types/model-tools.d.ts.map +1 -0
  200. package/dist/types/model-tools.js +2 -0
  201. package/dist/types/model-tools.js.map +1 -0
  202. package/dist/types/persistence.d.ts +168 -0
  203. package/dist/types/persistence.d.ts.map +1 -0
  204. package/dist/types/persistence.js +2 -0
  205. package/dist/types/persistence.js.map +1 -0
  206. package/dist/types/provider-resources.d.ts +336 -0
  207. package/dist/types/provider-resources.d.ts.map +1 -0
  208. package/dist/types/provider-resources.js +2 -0
  209. package/dist/types/provider-resources.js.map +1 -0
  210. package/dist/types/provider.d.ts +23 -0
  211. package/dist/types/provider.d.ts.map +1 -0
  212. package/dist/types/provider.js +2 -0
  213. package/dist/types/provider.js.map +1 -0
  214. package/dist/types/resource-options.d.ts +88 -0
  215. package/dist/types/resource-options.d.ts.map +1 -0
  216. package/dist/types/resource-options.js +2 -0
  217. package/dist/types/resource-options.js.map +1 -0
  218. package/dist/types/stream.d.ts +70 -0
  219. package/dist/types/stream.d.ts.map +1 -0
  220. package/dist/types/stream.js +2 -0
  221. package/dist/types/stream.js.map +1 -0
  222. package/dist/types/ui.d.ts +110 -0
  223. package/dist/types/ui.d.ts.map +1 -0
  224. package/dist/types/ui.js +2 -0
  225. package/dist/types/ui.js.map +1 -0
  226. package/dist/types.d.ts +16 -2480
  227. package/dist/types.d.ts.map +1 -1
  228. package/dist/ui.d.ts.map +1 -1
  229. package/dist/ui.js +2 -0
  230. package/dist/ui.js.map +1 -1
  231. package/dist/workflow-state-service/file.d.ts +5 -0
  232. package/dist/workflow-state-service/file.d.ts.map +1 -0
  233. package/dist/workflow-state-service/file.js +142 -0
  234. package/dist/workflow-state-service/file.js.map +1 -0
  235. package/dist/workflow-state-service/memory.d.ts +3 -0
  236. package/dist/workflow-state-service/memory.d.ts.map +1 -0
  237. package/dist/workflow-state-service/memory.js +27 -0
  238. package/dist/workflow-state-service/memory.js.map +1 -0
  239. package/dist/workflow-state-service/postgres.d.ts +4 -0
  240. package/dist/workflow-state-service/postgres.d.ts.map +1 -0
  241. package/dist/workflow-state-service/postgres.js +179 -0
  242. package/dist/workflow-state-service/postgres.js.map +1 -0
  243. package/dist/workflow-state-service/shared.d.ts +43 -0
  244. package/dist/workflow-state-service/shared.d.ts.map +1 -0
  245. package/dist/workflow-state-service/shared.js +107 -0
  246. package/dist/workflow-state-service/shared.js.map +1 -0
  247. package/dist/workflow-state-service/sqlite.d.ts +4 -0
  248. package/dist/workflow-state-service/sqlite.d.ts.map +1 -0
  249. package/dist/workflow-state-service/sqlite.js +183 -0
  250. package/dist/workflow-state-service/sqlite.js.map +1 -0
  251. package/dist/workflow-state-service.d.ts +6 -33
  252. package/dist/workflow-state-service.d.ts.map +1 -1
  253. package/dist/workflow-state-service.js +6 -626
  254. package/dist/workflow-state-service.js.map +1 -1
  255. package/package.json +17 -1
@@ -0,0 +1,283 @@
1
+ import { ConflictError, ValidationError } from "../errors.js";
2
+ import { resolveArtifactServiceLimits, validateIdentifier, validateArtifactLookup, artifactKey, legacyArtifactKey, parseArtifactJson, getRecordField, matchesArtifactLookup, lookupFromArtifact, cloneArtifact, randomId, assertExpectedRevision, createArtifact, bytesFromBinaryInput, resolveBinarySha256, base64Bytes, validateArtifactListInput } from "./shared.js";
3
+ const sqliteMutationCount = (result) => {
4
+ if (!result || typeof result !== "object") {
5
+ return undefined;
6
+ }
7
+ const record = result;
8
+ const value = record.changes ?? record.changeset ?? record.rowCount;
9
+ return typeof value === "number" ? value : undefined;
10
+ };
11
+ const prepareSqliteStatement = (db, sql) => {
12
+ if (typeof db.prepare === "function") {
13
+ return db.prepare(sql);
14
+ }
15
+ if (typeof db.query === "function") {
16
+ return db.query(sql);
17
+ }
18
+ throw new ValidationError('The "db" option must expose either a "prepare()" or "query()" method.');
19
+ };
20
+ export const createSqliteArtifactService = (options) => {
21
+ const limits = resolveArtifactServiceLimits(options.limits);
22
+ const tableName = validateIdentifier(options.tableName ?? "zhivex_artifacts", "tableName");
23
+ options.db.exec(`
24
+ CREATE TABLE IF NOT EXISTS ${tableName} (
25
+ artifact_key TEXT PRIMARY KEY,
26
+ app_name TEXT NOT NULL,
27
+ user_id TEXT NOT NULL,
28
+ session_id TEXT NOT NULL,
29
+ artifact_id TEXT NOT NULL,
30
+ workflow_run_id TEXT,
31
+ workflow_step_id TEXT,
32
+ agent_run_id TEXT,
33
+ artifact_json TEXT NOT NULL,
34
+ created_at_ms INTEGER NOT NULL,
35
+ updated_at_ms INTEGER NOT NULL
36
+ )
37
+ `);
38
+ const loadStatement = prepareSqliteStatement(options.db, `SELECT artifact_json FROM ${tableName} WHERE artifact_key = ?`);
39
+ const listStatement = prepareSqliteStatement(options.db, `SELECT artifact_json FROM ${tableName}
40
+ WHERE app_name = ?
41
+ AND user_id = ?
42
+ AND session_id = ?
43
+ AND (? IS NULL OR workflow_run_id = ?)
44
+ AND (? IS NULL OR workflow_step_id = ?)
45
+ AND (? IS NULL OR agent_run_id = ?)
46
+ ORDER BY created_at_ms ASC, artifact_id ASC`);
47
+ const saveStatement = prepareSqliteStatement(options.db, `
48
+ INSERT INTO ${tableName} (
49
+ artifact_key,
50
+ app_name,
51
+ user_id,
52
+ session_id,
53
+ artifact_id,
54
+ workflow_run_id,
55
+ workflow_step_id,
56
+ agent_run_id,
57
+ artifact_json,
58
+ created_at_ms,
59
+ updated_at_ms
60
+ )
61
+ VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
62
+ ON CONFLICT(artifact_key) DO UPDATE SET
63
+ app_name = excluded.app_name,
64
+ user_id = excluded.user_id,
65
+ session_id = excluded.session_id,
66
+ artifact_id = excluded.artifact_id,
67
+ workflow_run_id = excluded.workflow_run_id,
68
+ workflow_step_id = excluded.workflow_step_id,
69
+ agent_run_id = excluded.agent_run_id,
70
+ artifact_json = excluded.artifact_json,
71
+ updated_at_ms = excluded.updated_at_ms
72
+ `);
73
+ const insertCasStatement = prepareSqliteStatement(options.db, `
74
+ INSERT INTO ${tableName} (
75
+ artifact_key,
76
+ app_name,
77
+ user_id,
78
+ session_id,
79
+ artifact_id,
80
+ workflow_run_id,
81
+ workflow_step_id,
82
+ agent_run_id,
83
+ artifact_json,
84
+ created_at_ms,
85
+ updated_at_ms
86
+ )
87
+ VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
88
+ ON CONFLICT(artifact_key) DO NOTHING
89
+ `);
90
+ const updateCasStatement = prepareSqliteStatement(options.db, `
91
+ UPDATE ${tableName}
92
+ SET app_name = ?,
93
+ user_id = ?,
94
+ session_id = ?,
95
+ artifact_id = ?,
96
+ workflow_run_id = ?,
97
+ workflow_step_id = ?,
98
+ agent_run_id = ?,
99
+ artifact_json = ?,
100
+ updated_at_ms = ?
101
+ WHERE artifact_key = ?
102
+ AND updated_at_ms = ?
103
+ `);
104
+ const deleteStatement = prepareSqliteStatement(options.db, `DELETE FROM ${tableName} WHERE artifact_key = ?`);
105
+ const load = (input) => {
106
+ validateArtifactLookup(input);
107
+ for (const key of [artifactKey(input), legacyArtifactKey(input)]) {
108
+ const row = loadStatement.get([key]);
109
+ const artifact = parseArtifactJson(getRecordField(row, ["artifact_json", "artifactJson"]), limits);
110
+ if (artifact && matchesArtifactLookup(artifact, input)) {
111
+ return artifact;
112
+ }
113
+ }
114
+ return undefined;
115
+ };
116
+ const save = (artifact, options) => {
117
+ if (options?.expectedRevision === 0 && !options.existing) {
118
+ const result = insertCasStatement.run([
119
+ artifactKey(lookupFromArtifact(artifact)),
120
+ artifact.appName,
121
+ artifact.userId,
122
+ artifact.sessionId,
123
+ artifact.id,
124
+ artifact.workflowRunId ?? null,
125
+ artifact.workflowStepId ?? null,
126
+ artifact.agentRunId ?? null,
127
+ JSON.stringify(artifact),
128
+ artifact.createdAt,
129
+ artifact.updatedAt
130
+ ]);
131
+ if (sqliteMutationCount(result) !== 1) {
132
+ throw new ConflictError("ArtifactRecord revision conflict.");
133
+ }
134
+ }
135
+ else if (options?.expectedRevision !== undefined && options.existing) {
136
+ const canonicalExisting = parseArtifactJson(getRecordField(loadStatement.get([artifactKey(artifact)]), ["artifact_json", "artifactJson"]), limits);
137
+ if (canonicalExisting && matchesArtifactLookup(canonicalExisting, artifact)) {
138
+ const result = updateCasStatement.run([
139
+ artifact.appName,
140
+ artifact.userId,
141
+ artifact.sessionId,
142
+ artifact.id,
143
+ artifact.workflowRunId ?? null,
144
+ artifact.workflowStepId ?? null,
145
+ artifact.agentRunId ?? null,
146
+ JSON.stringify(artifact),
147
+ artifact.updatedAt,
148
+ artifactKey(lookupFromArtifact(artifact)),
149
+ options.existing.updatedAt
150
+ ]);
151
+ if (sqliteMutationCount(result) !== 1) {
152
+ throw new ConflictError("ArtifactRecord revision conflict.");
153
+ }
154
+ }
155
+ else {
156
+ const legacy = parseArtifactJson(getRecordField(loadStatement.get([legacyArtifactKey(artifact)]), ["artifact_json", "artifactJson"]), limits);
157
+ if (!legacy || !matchesArtifactLookup(legacy, artifact) || legacy.updatedAt !== options.existing.updatedAt) {
158
+ throw new ConflictError("ArtifactRecord revision conflict.");
159
+ }
160
+ saveStatement.run([
161
+ artifactKey(artifact),
162
+ artifact.appName,
163
+ artifact.userId,
164
+ artifact.sessionId,
165
+ artifact.id,
166
+ artifact.workflowRunId ?? null,
167
+ artifact.workflowStepId ?? null,
168
+ artifact.agentRunId ?? null,
169
+ JSON.stringify(artifact),
170
+ artifact.createdAt,
171
+ artifact.updatedAt
172
+ ]);
173
+ }
174
+ }
175
+ else {
176
+ saveStatement.run([
177
+ artifactKey(lookupFromArtifact(artifact)),
178
+ artifact.appName,
179
+ artifact.userId,
180
+ artifact.sessionId,
181
+ artifact.id,
182
+ artifact.workflowRunId ?? null,
183
+ artifact.workflowStepId ?? null,
184
+ artifact.agentRunId ?? null,
185
+ JSON.stringify(artifact),
186
+ artifact.createdAt,
187
+ artifact.updatedAt
188
+ ]);
189
+ }
190
+ const legacy = parseArtifactJson(getRecordField(loadStatement.get([legacyArtifactKey(artifact)]), ["artifact_json", "artifactJson"]), limits);
191
+ if (legacy && matchesArtifactLookup(legacy, artifact)) {
192
+ deleteStatement.run([legacyArtifactKey(artifact)]);
193
+ }
194
+ return cloneArtifact(artifact);
195
+ };
196
+ return {
197
+ saveArtifact(input) {
198
+ const id = input.id ?? randomId("art");
199
+ validateArtifactLookup({ appName: input.appName, userId: input.userId, sessionId: input.sessionId, id });
200
+ const existing = load({
201
+ appName: input.appName,
202
+ userId: input.userId,
203
+ sessionId: input.sessionId,
204
+ id
205
+ });
206
+ assertExpectedRevision(existing, input.expectedRevision, "ArtifactRecord");
207
+ return save(createArtifact({ ...input, id }, limits, existing), {
208
+ existing,
209
+ expectedRevision: input.expectedRevision
210
+ });
211
+ },
212
+ saveBinaryArtifact(input) {
213
+ const id = input.id ?? randomId("art");
214
+ validateArtifactLookup({ appName: input.appName, userId: input.userId, sessionId: input.sessionId, id });
215
+ const bytes = bytesFromBinaryInput(input.data, limits.maxBinaryBytes);
216
+ const sha256 = resolveBinarySha256(bytes, input.sha256);
217
+ const existing = load({
218
+ appName: input.appName,
219
+ userId: input.userId,
220
+ sessionId: input.sessionId,
221
+ id
222
+ });
223
+ assertExpectedRevision(existing, input.expectedRevision, "ArtifactRecord");
224
+ return save(createArtifact({
225
+ ...input,
226
+ id,
227
+ data: Buffer.from(bytes).toString("base64"),
228
+ encoding: "base64",
229
+ size: bytes.byteLength,
230
+ sha256,
231
+ storageMode: "json"
232
+ }, limits, existing), {
233
+ existing,
234
+ expectedRevision: input.expectedRevision
235
+ });
236
+ },
237
+ loadArtifact(input) {
238
+ return load(input);
239
+ },
240
+ loadBinaryArtifact(input) {
241
+ const artifact = load(input);
242
+ if (!artifact || artifact.encoding !== "base64" || typeof artifact.data !== "string") {
243
+ return undefined;
244
+ }
245
+ return {
246
+ artifact,
247
+ data: base64Bytes(artifact.data, limits.maxBase64Bytes)
248
+ };
249
+ },
250
+ listArtifacts(input) {
251
+ validateArtifactListInput(input);
252
+ const params = [
253
+ input.appName,
254
+ input.userId,
255
+ input.sessionId,
256
+ input.workflowRunId ?? null,
257
+ input.workflowRunId ?? null,
258
+ input.workflowStepId ?? null,
259
+ input.workflowStepId ?? null,
260
+ input.agentRunId ?? null,
261
+ input.agentRunId ?? null
262
+ ];
263
+ const rows = listStatement.all?.(params) ?? [];
264
+ const artifacts = new Map();
265
+ for (const row of rows) {
266
+ const artifact = parseArtifactJson(getRecordField(row, ["artifact_json", "artifactJson"]), limits);
267
+ if (artifact) {
268
+ artifacts.set(artifactKey(artifact), artifact);
269
+ }
270
+ }
271
+ return [...artifacts.values()];
272
+ },
273
+ deleteArtifact(input) {
274
+ validateArtifactLookup(input);
275
+ deleteStatement.run([artifactKey(input)]);
276
+ const legacy = parseArtifactJson(getRecordField(loadStatement.get([legacyArtifactKey(input)]), ["artifact_json", "artifactJson"]), limits);
277
+ if (legacy && matchesArtifactLookup(legacy, input)) {
278
+ deleteStatement.run([legacyArtifactKey(input)]);
279
+ }
280
+ }
281
+ };
282
+ };
283
+ //# sourceMappingURL=sqlite.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sqlite.js","sourceRoot":"","sources":["../../src/artifact/sqlite.ts"],"names":[],"mappings":"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"}
@@ -1,187 +1,7 @@
1
- import type { JsonValue, PostgresClientLike, SqliteDatabaseLike } from "./types.js";
2
- export declare const ARTIFACT_SCHEMA_VERSION: 1;
3
- export interface ArtifactServiceLimits {
4
- maxJsonBytes?: number;
5
- maxTextBytes?: number;
6
- maxBase64Bytes?: number;
7
- maxBinaryBytes?: number;
8
- maxMetadataBytes?: number;
9
- maxRecordBytes?: number;
10
- }
11
- export interface ResolvedArtifactServiceLimits {
12
- maxJsonBytes: number;
13
- maxTextBytes: number;
14
- maxBase64Bytes: number;
15
- maxBinaryBytes: number;
16
- maxMetadataBytes: number;
17
- maxRecordBytes: number;
18
- }
19
- export declare const DEFAULT_ARTIFACT_SERVICE_LIMITS: Readonly<ResolvedArtifactServiceLimits>;
20
- export interface ArtifactServiceOptions {
21
- limits?: ArtifactServiceLimits;
22
- }
23
- export interface ArtifactLookup {
24
- appName: string;
25
- userId: string;
26
- sessionId: string;
27
- id: string;
28
- }
29
- export interface ArtifactListInput {
30
- appName: string;
31
- userId: string;
32
- sessionId: string;
33
- workflowRunId?: string;
34
- workflowStepId?: string;
35
- agentRunId?: string;
36
- }
37
- export interface ArtifactSaveInput {
38
- appName: string;
39
- userId: string;
40
- sessionId: string;
41
- id?: string;
42
- workflowRunId?: string;
43
- workflowStepId?: string;
44
- agentRunId?: string;
45
- name: string;
46
- contentType: string;
47
- data: JsonValue | string;
48
- encoding?: ArtifactEncoding;
49
- size?: number;
50
- sha256?: string;
51
- storageMode?: ArtifactStorageMode;
52
- expectedRevision?: number;
53
- metadata?: Record<string, JsonValue>;
54
- }
55
- export type ArtifactEncoding = "json" | "text" | "base64";
56
- export type ArtifactStorageMode = "json" | "binary";
57
- export interface ArtifactRecord {
58
- schemaVersion: typeof ARTIFACT_SCHEMA_VERSION;
59
- revision: number;
60
- id: string;
61
- appName: string;
62
- userId: string;
63
- sessionId: string;
64
- workflowRunId?: string;
65
- workflowStepId?: string;
66
- agentRunId?: string;
67
- name: string;
68
- contentType: string;
69
- data: JsonValue | string;
70
- encoding?: ArtifactEncoding;
71
- size?: number;
72
- sha256?: string;
73
- storageMode?: ArtifactStorageMode;
74
- blobPath?: string;
75
- metadata?: Record<string, JsonValue>;
76
- createdAt: number;
77
- updatedAt: number;
78
- }
79
- export interface ArtifactBinarySaveInput extends Omit<ArtifactSaveInput, "data" | "encoding" | "size" | "sha256"> {
80
- data: string | ArrayBuffer | Uint8Array;
81
- sha256?: string;
82
- metadata?: Record<string, JsonValue>;
83
- }
84
- export interface ArtifactBinaryLoadOutput {
85
- artifact: ArtifactRecord;
86
- data: Uint8Array;
87
- }
88
- export interface Base64ArtifactDataInput {
89
- data: string | ArrayBuffer | Uint8Array;
90
- }
91
- export interface Base64ArtifactData {
92
- data: string;
93
- encoding: "base64";
94
- size: number;
95
- }
96
- export interface ArtifactService {
97
- saveArtifact(input: ArtifactSaveInput): Promise<ArtifactRecord> | ArtifactRecord;
98
- saveBinaryArtifact(input: ArtifactBinarySaveInput): Promise<ArtifactRecord> | ArtifactRecord;
99
- loadArtifact(input: ArtifactLookup): Promise<ArtifactRecord | undefined> | ArtifactRecord | undefined;
100
- loadBinaryArtifact(input: ArtifactLookup): Promise<ArtifactBinaryLoadOutput | undefined> | ArtifactBinaryLoadOutput | undefined;
101
- listArtifacts(input: ArtifactListInput): Promise<ArtifactRecord[]> | ArtifactRecord[];
102
- deleteArtifact(input: ArtifactLookup): Promise<void> | void;
103
- }
104
- export interface InMemoryArtifactServiceOptions extends ArtifactServiceOptions {
105
- }
106
- export interface FileArtifactServiceOptions extends ArtifactServiceOptions {
107
- directory: string;
108
- }
109
- export interface SqliteArtifactServiceOptions extends ArtifactServiceOptions {
110
- db: SqliteDatabaseLike;
111
- tableName?: string;
112
- }
113
- export interface PostgresArtifactServiceOptions extends ArtifactServiceOptions {
114
- client: PostgresClientLike;
115
- tableName?: string;
116
- }
117
- export interface ArtifactIntegrityIssue {
118
- type: "missing-artifact" | "missing-blob" | "external-data-unavailable" | "size-mismatch" | "sha256-mismatch" | "invalid-base64" | "metadata-invalid";
119
- message: string;
120
- expected?: JsonValue;
121
- actual?: JsonValue;
122
- }
123
- export interface ArtifactIntegrityResult {
124
- ok: boolean;
125
- artifact?: ArtifactRecord;
126
- issues: ArtifactIntegrityIssue[];
127
- }
128
- export interface FileArtifactStoreInspectionIssue {
129
- type: "orphan-blob" | "missing-blob" | "invalid-metadata";
130
- path: string;
131
- artifact?: ArtifactRecord;
132
- message: string;
133
- }
134
- export interface FileArtifactStoreInspection {
135
- directory: string;
136
- artifacts: ArtifactRecord[];
137
- issues: FileArtifactStoreInspectionIssue[];
138
- }
139
- export interface FileArtifactStoreCleanupOptions extends FileArtifactServiceOptions {
140
- dryRun?: boolean;
141
- }
142
- export interface FileArtifactStoreCleanupResult extends FileArtifactStoreInspection {
143
- dryRun: boolean;
144
- deletedBlobPaths: string[];
145
- }
146
- export interface FileArtifactStorePruneOptions extends FileArtifactServiceOptions {
147
- olderThanMs?: number;
148
- keepLast?: number;
149
- now?: number;
150
- dryRun?: boolean;
151
- }
152
- export interface FileArtifactStorePruneResult {
153
- directory: string;
154
- dryRun: boolean;
155
- deletedArtifactKeys: string[];
156
- keptArtifactKeys: string[];
157
- deletedBlobPaths: string[];
158
- }
159
- export interface ExternalArtifactReferenceInput {
160
- uri: string;
161
- size?: number;
162
- sha256?: string;
163
- metadata?: Record<string, JsonValue>;
164
- }
165
- export interface ExternalArtifactReference {
166
- data: null;
167
- storageMode: "binary";
168
- metadata: Record<string, JsonValue>;
169
- size?: number;
170
- sha256?: string;
171
- }
172
- export type ArtifactRecordMigrationTarget = typeof ARTIFACT_SCHEMA_VERSION;
173
- export declare const resolveArtifactServiceLimits: (limits?: ArtifactServiceLimits) => ResolvedArtifactServiceLimits;
174
- export declare const normalizeArtifactRecord: (value: unknown) => ArtifactRecord;
175
- export declare const migrateArtifactRecord: (value: unknown, targetVersion?: ArtifactRecordMigrationTarget) => ArtifactRecord;
176
- export declare const createBase64ArtifactData: (input: Base64ArtifactDataInput | string | ArrayBuffer | Uint8Array, limits?: ArtifactServiceLimits) => Base64ArtifactData;
177
- export declare const createExternalArtifactReference: (input: ExternalArtifactReferenceInput, limits?: ArtifactServiceLimits) => ExternalArtifactReference;
178
- export declare const verifyArtifactRecordIntegrity: (record: ArtifactRecord, data?: Uint8Array, limits?: ArtifactServiceLimits) => ArtifactIntegrityResult;
179
- export declare const verifyArtifactIntegrity: (service: ArtifactService, lookup: ArtifactLookup, limits?: ArtifactServiceLimits) => Promise<ArtifactIntegrityResult>;
180
- export declare const inspectFileArtifactStore: (options: FileArtifactServiceOptions) => Promise<FileArtifactStoreInspection>;
181
- export declare const cleanupFileArtifactStore: (options: FileArtifactStoreCleanupOptions) => Promise<FileArtifactStoreCleanupResult>;
182
- export declare const pruneFileArtifactStore: (options: FileArtifactStorePruneOptions) => Promise<FileArtifactStorePruneResult>;
183
- export declare const createInMemoryArtifactService: (options?: InMemoryArtifactServiceOptions) => ArtifactService;
184
- export declare const createFileArtifactService: (options: FileArtifactServiceOptions) => ArtifactService;
185
- export declare const createSqliteArtifactService: (options: SqliteArtifactServiceOptions) => ArtifactService;
186
- export declare const createPostgresArtifactService: (options: PostgresArtifactServiceOptions) => ArtifactService;
1
+ /** Compatibility facade. Backend implementations live in dedicated internal modules. */
2
+ export { ARTIFACT_SCHEMA_VERSION, type ArtifactServiceLimits, type ResolvedArtifactServiceLimits, DEFAULT_ARTIFACT_SERVICE_LIMITS, type ArtifactServiceOptions, type ArtifactLookup, type ArtifactListInput, type ArtifactSaveInput, type ArtifactEncoding, type ArtifactStorageMode, type ArtifactRecord, type ArtifactBinarySaveInput, type ArtifactBinaryLoadOutput, type Base64ArtifactDataInput, type Base64ArtifactData, type ArtifactService, type InMemoryArtifactServiceOptions, type FileArtifactServiceOptions, type SqliteArtifactServiceOptions, type PostgresArtifactServiceOptions, type ArtifactIntegrityIssue, type ArtifactIntegrityResult, type FileArtifactStoreInspectionIssue, type FileArtifactStoreInspection, type FileArtifactStoreCleanupOptions, type FileArtifactStoreCleanupResult, type FileArtifactStorePruneOptions, type FileArtifactStorePruneResult, type ExternalArtifactReferenceInput, type ExternalArtifactReference, type ArtifactRecordMigrationTarget, resolveArtifactServiceLimits, normalizeArtifactRecord, migrateArtifactRecord, createBase64ArtifactData, createExternalArtifactReference, verifyArtifactRecordIntegrity, verifyArtifactIntegrity } from "./artifact/shared.js";
3
+ export { createInMemoryArtifactService } from "./artifact/memory.js";
4
+ export { inspectFileArtifactStore, cleanupFileArtifactStore, pruneFileArtifactStore, createFileArtifactService } from "./artifact/file.js";
5
+ export { createSqliteArtifactService } from "./artifact/sqlite.js";
6
+ export { createPostgresArtifactService } from "./artifact/postgres.js";
187
7
  //# sourceMappingURL=artifact.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"artifact.d.ts","sourceRoot":"","sources":["../src/artifact.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"artifact.d.ts","sourceRoot":"","sources":["../src/artifact.ts"],"names":[],"mappings":"AAAA,wFAAwF;AACxF,OAAO,EACL,uBAAuB,EACvB,KAAK,qBAAqB,EAC1B,KAAK,6BAA6B,EAClC,+BAA+B,EAC/B,KAAK,sBAAsB,EAC3B,KAAK,cAAc,EACnB,KAAK,iBAAiB,EACtB,KAAK,iBAAiB,EACtB,KAAK,gBAAgB,EACrB,KAAK,mBAAmB,EACxB,KAAK,cAAc,EACnB,KAAK,uBAAuB,EAC5B,KAAK,wBAAwB,EAC7B,KAAK,uBAAuB,EAC5B,KAAK,kBAAkB,EACvB,KAAK,eAAe,EACpB,KAAK,8BAA8B,EACnC,KAAK,0BAA0B,EAC/B,KAAK,4BAA4B,EACjC,KAAK,8BAA8B,EACnC,KAAK,sBAAsB,EAC3B,KAAK,uBAAuB,EAC5B,KAAK,gCAAgC,EACrC,KAAK,2BAA2B,EAChC,KAAK,+BAA+B,EACpC,KAAK,8BAA8B,EACnC,KAAK,6BAA6B,EAClC,KAAK,4BAA4B,EACjC,KAAK,8BAA8B,EACnC,KAAK,yBAAyB,EAC9B,KAAK,6BAA6B,EAClC,4BAA4B,EAC5B,uBAAuB,EACvB,qBAAqB,EACrB,wBAAwB,EACxB,+BAA+B,EAC/B,6BAA6B,EAC7B,uBAAuB,EACxB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,6BAA6B,EAC9B,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,wBAAwB,EACxB,wBAAwB,EACxB,sBAAsB,EACtB,yBAAyB,EAC1B,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,2BAA2B,EAC5B,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,6BAA6B,EAC9B,MAAM,wBAAwB,CAAC"}